From 2a4d8b6d56ba5d5d687e191ad1afcdd9b861d759 Mon Sep 17 00:00:00 2001 From: Russel Yasol <73575327+dr-dolomite@users.noreply.github.com> Date: Thu, 13 Mar 2025 08:10:19 +0800 Subject: [PATCH] Hot Patch for AT Terminal - Fixed the cgi-bin call causing the issue by appending .sh to the at_queue_client --- .../root/www/404.html | 2 +- .../root/www/404/index.html | 2 +- .../6pIr6VWQMh91espZ7GkRd/_buildManifest.js | 1 - .../ECtAeRdoEqstSdffrWqHu/_ssgManifest.js | 1 - .../static/chunks/1074-17a63cc1d4605bcb.js | 1 - .../static/chunks/1457-e5968d4919dfc217.js | 1 - .../static/chunks/1617-2875c5bbab102cf8.js | 1 - .../static/chunks/1827-82545ba38805ede6.js | 1 - .../static/chunks/3210-0ee79328b7c2a459.js | 1 - .../static/chunks/3320-7d48962f2ebfa876.js | 1 - .../static/chunks/3742-8a2e24c9cc905cd9.js | 1 - .../static/chunks/4568-33274c67a634d54a.js | 1 - .../static/chunks/4623-3adb8e9629e6d4f2.js | 1 - .../static/chunks/4673-858d1306ab77aa0c.js | 1 - .../static/chunks/5011-c111b606b30e72ad.js | 1 - .../static/chunks/5315-58d2fa3cadcc19a0.js | 1 - .../static/chunks/6035-ec51cb9f09eb54c7.js | 2 - .../static/chunks/6152-326f6ec4a26e144e.js | 1 - .../static/chunks/7780-304b82dcfd6e5323.js | 1 - .../static/chunks/9107-369a762e6832fbc4.js | 1 - .../static/chunks/9700-86092c9639feaee7.js | 1 - .../dashboard/about/page-114fb5f8ed454b46.js | 1 - .../dashboard/about/page-1f3a1d3da213686b.js | 1 - .../dashboard/about/page-5431674c006b4771.js | 1 + .../at-terminal/page-1bb7b7081b0d04a2.js | 1 - .../at-terminal/page-32774eecfd12c3bb.js | 1 + .../at-terminal/page-e1c6ee3cda4d5576.js | 1 - .../connectivity/page-ca74cc3bfed7745d.js | 1 - .../mtu/page-3f0163e50a9b265c.js | 1 - .../ttl-settings/page-ed723dcbbed96c52.js | 1 - .../band-locking/page-19705544b7dce06b.js | 1 - .../basic-settings/page-cf5741b8d8576a31.js | 1 - .../cell-locking/page-4ab1165c81cbdb13.js | 1 - .../imei-mangling/page-98b9e4aee77d66d9.js | 1 - .../sms/page-e4bddb9c9369701f.js | 1 - .../cell-scanner/page-ea13797318f89296.js | 1 - .../keep-alive/page-fda1ccb2b4b74c1a.js | 1 - .../experimental/layout-3c6ab898e54410a1.js | 1 - .../experimental/page-a7ca4f47824ebde8.js | 1 - .../quecwatch/page-d94c5ce83b8ffc64.js | 1 - .../dashboard/home/page-276663d2fd50ba09.js | 1 - .../dashboard/home/page-e229d37c1ce4bed4.js | 1 - .../app/dashboard/layout-c44a86d95f813876.js | 1 - .../chunks/app/layout-c2a293729c29972e.js | 1 - .../chunks/app/login/page-7c06c9d8b0f6cc23.js | 1 - .../chunks/app/page-7dcf49318718ab9d.js | 1 - .../chunks/b26ba64e-35819c41e676a9c4.js | 1 - .../static/chunks/webpack-12675bdfb380c045.js | 1 - .../www/_next/static/css/1f29e3e90e8ebc37.css | 3 - .../_buildManifest.js | 0 .../_ssgManifest.js | 0 .../xSo-kZzzdrUmA11NkmU0c/_buildManifest.js | 1 - .../xSo-kZzzdrUmA11NkmU0c/_ssgManifest.js | 1 - .../root/www/cgi-bin/make_all_sh_unix.sh | 10 - .../www/cgi-bin/make_everythingINhere_exe.sh | 10 - .../quecmanager/advance/fetch_commands.sh | 26 - .../cgi-bin/quecmanager/advance/fetch_macs.sh | 49 - .../www/cgi-bin/quecmanager/advance/mtu.sh | 90 - .../www/cgi-bin/quecmanager/advance/ttl.sh | 94 - .../quecmanager/at_cmd/at_queue_client.sh | 266 - .../cgi-bin/quecmanager/at_cmd/fetch_data.sh | 195 - .../root/www/cgi-bin/quecmanager/auth.sh | 62 - .../quecmanager/cell-locking/get_cell_lock.sh | 113 - .../cell-locking/scheduled_cell_locking.sh | 205 - .../apn-profiles/delete-apn-profile.sh | 127 - .../apn-profiles/fetch-apn-profile.sh | 144 - .../apn-profiles/save-apn-profile.sh | 345 - .../imei-profiles/delete-imei-profile.sh | 127 - .../imei-profiles/fetch-imei-profile.sh | 138 - .../imei-profiles/save-imei-profile.sh | 291 - .../cell-settings/scheduled_cell_locking.sh | 262 - .../cell-settings/sms/sms_delete.sh | 50 - .../cell-settings/sms/sms_inbox.sh | 10 - .../quecmanager/cell-settings/sms/sms_send.sh | 57 - .../experimental/cell_scanner/cell_scan.sh | 168 - .../cell_scanner/cell_scan_worker.sh | 323 - .../experimental/cell_scanner/check_scan.sh | 124 - .../experimental/cell_scanner/fetch_mccmnc.sh | 40 - .../experimental/cell_scanner/network_info.sh | 311 - .../quecmanager/experimental/keep_alive.sh | 195 - .../quecwatch/disable-quecwatch.sh | 63 - .../quecwatch/enable-quecwatch.sh | 137 - .../experimental/quecwatch/fetch-quecwatch.sh | 139 - .../experimental/quecwatch/reset-quecwatch.sh | 57 - .../root/www/cgi-bin/quecmanager/heartbeat.sh | 10 - .../www/cgi-bin/quecmanager/home/check_net.sh | 14 - .../quecmanager/home/fetch_data_usage.sh | 8 - .../quecmanager/home/fetch_hw_details.sh | 119 - .../quecmanager/home/fetch_signal_metrics.sh | 30 - .../cgi-bin/quecmanager/home/ping_latency.sh | 24 - .../www/cgi-bin/quecmanager/mcc-mnc-list.json | 37130 ---------------- .../quecmanager/profiles/check_status.sh | 95 - .../quecmanager/profiles/list_profiles.sh | 154 - .../profiles/quec_profile_create.sh | 355 - .../profiles/quec_profile_delete.sh | 138 - .../quecmanager/profiles/quec_profile_edit.sh | 392 - .../quecmanager/settings/device-uptime.sh | 38 - .../quecmanager/settings/force-rerun.sh | 64 - .../www/cgi-bin/services/at_queue_manager.sh | 672 - .../cgi-bin/services/log_signal_metrics.sh | 198 - .../cgi-bin/services/quec_profile_daemon.sh | 1045 - .../root/www/cgi-bin/services/quecprofile.sh | 1045 - .../root/www/cgi-bin/services/quecwatch.sh | 544 - .../services/scheduled_cell_locking.sh | 429 - .../root/www/dashboard/about/index.html | 2 +- .../root/www/dashboard/about/index.txt | 4 +- .../advanced-settings/at-terminal/index.html | 2 +- .../advanced-settings/at-terminal/index.txt | 4 +- .../advanced-settings/connectivity/index.html | 2 +- .../advanced-settings/connectivity/index.txt | 2 +- .../advanced-settings/mtu/index.html | 2 +- .../dashboard/advanced-settings/mtu/index.txt | 2 +- .../advanced-settings/ttl-settings/index.html | 2 +- .../advanced-settings/ttl-settings/index.txt | 2 +- .../cell-settings/band-locking/index.html | 2 +- .../cell-settings/band-locking/index.txt | 2 +- .../cell-settings/basic-settings/index.html | 2 +- .../cell-settings/basic-settings/index.txt | 2 +- .../cell-settings/cell-locking/index.html | 2 +- .../cell-settings/cell-locking/index.txt | 2 +- .../cell-settings/imei-mangling/index.html | 2 +- .../cell-settings/imei-mangling/index.txt | 2 +- .../dashboard/cell-settings/sms/index.html | 2 +- .../www/dashboard/cell-settings/sms/index.txt | 2 +- .../experimental/cell-scanner/index.html | 2 +- .../experimental/cell-scanner/index.txt | 2 +- .../www/dashboard/experimental/index.html | 1 - .../root/www/dashboard/experimental/index.txt | 20 - .../experimental/keep-alive/index.html | 2 +- .../experimental/keep-alive/index.txt | 2 +- .../experimental/quecprofiles/index.html | 2 +- .../experimental/quecprofiles/index.txt | 2 +- .../experimental/quecwatch/index.html | 2 +- .../experimental/quecwatch/index.txt | 2 +- .../root/www/dashboard/home/index.html | 2 +- .../root/www/dashboard/home/index.txt | 2 +- .../settings/games/tetris/index.html | 2 +- .../dashboard/settings/games/tetris/index.txt | 2 +- .../dashboard/settings/security/index.html | 2 +- .../www/dashboard/settings/security/index.txt | 2 +- .../root/www/fonts/EuclidCircularB-Bold.woff2 | Bin 34048 -> 0 bytes .../www/fonts/EuclidCircularB-Italic.woff2 | Bin 36360 -> 0 bytes .../www/fonts/EuclidCircularB-Light.woff2 | Bin 31196 -> 0 bytes .../www/fonts/EuclidCircularB-Medium.woff2 | Bin 34724 -> 0 bytes .../www/fonts/EuclidCircularB-Regular.woff2 | Bin 34672 -> 0 bytes .../www/fonts/EuclidCircularB-SemiBold.woff2 | Bin 34812 -> 0 bytes .../root/www/index.txt | 2 +- .../root/www/login.html | 2 +- .../root/www/login/index.html | 2 +- .../root/www/login/index.txt | 2 +- 150 files changed, 44 insertions(+), 46845 deletions(-) delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/6pIr6VWQMh91espZ7GkRd/_buildManifest.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/ECtAeRdoEqstSdffrWqHu/_ssgManifest.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1074-17a63cc1d4605bcb.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1457-e5968d4919dfc217.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1617-2875c5bbab102cf8.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1827-82545ba38805ede6.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3210-0ee79328b7c2a459.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3320-7d48962f2ebfa876.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3742-8a2e24c9cc905cd9.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4568-33274c67a634d54a.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4623-3adb8e9629e6d4f2.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4673-858d1306ab77aa0c.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5011-c111b606b30e72ad.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5315-58d2fa3cadcc19a0.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6035-ec51cb9f09eb54c7.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6152-326f6ec4a26e144e.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/7780-304b82dcfd6e5323.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9107-369a762e6832fbc4.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9700-86092c9639feaee7.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-114fb5f8ed454b46.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-1f3a1d3da213686b.js create mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-5431674c006b4771.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-1bb7b7081b0d04a2.js create mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-32774eecfd12c3bb.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-e1c6ee3cda4d5576.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/connectivity/page-ca74cc3bfed7745d.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/mtu/page-3f0163e50a9b265c.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/ttl-settings/page-ed723dcbbed96c52.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/band-locking/page-19705544b7dce06b.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/basic-settings/page-cf5741b8d8576a31.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/cell-locking/page-4ab1165c81cbdb13.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/imei-mangling/page-98b9e4aee77d66d9.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/sms/page-e4bddb9c9369701f.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/cell-scanner/page-ea13797318f89296.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/keep-alive/page-fda1ccb2b4b74c1a.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/layout-3c6ab898e54410a1.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/page-a7ca4f47824ebde8.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/quecwatch/page-d94c5ce83b8ffc64.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-276663d2fd50ba09.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-e229d37c1ce4bed4.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/layout-c44a86d95f813876.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/layout-c2a293729c29972e.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/login/page-7c06c9d8b0f6cc23.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/page-7dcf49318718ab9d.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/b26ba64e-35819c41e676a9c4.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/webpack-12675bdfb380c045.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/css/1f29e3e90e8ebc37.css rename ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/{ECtAeRdoEqstSdffrWqHu => qotm3CpR_o7IBYNxhDC8F}/_buildManifest.js (100%) rename ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/{6pIr6VWQMh91espZ7GkRd => qotm3CpR_o7IBYNxhDC8F}/_ssgManifest.js (100%) delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_buildManifest.js delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_ssgManifest.js delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_all_sh_unix.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_everythingINhere_exe.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_commands.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_macs.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/mtu.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/ttl.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/at_queue_client.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/fetch_data.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/auth.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-locking/get_cell_lock.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-locking/scheduled_cell_locking.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/delete-apn-profile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/fetch-apn-profile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/save-apn-profile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/delete-imei-profile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/fetch-imei-profile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/save-imei-profile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/scheduled_cell_locking.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_delete.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_inbox.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_send.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan_worker.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/check_scan.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/fetch_mccmnc.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/network_info.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/keep_alive.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/disable-quecwatch.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/enable-quecwatch.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/fetch-quecwatch.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/reset-quecwatch.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/heartbeat.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/check_net.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_data_usage.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_hw_details.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_signal_metrics.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/ping_latency.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/mcc-mnc-list.json delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/check_status.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/list_profiles.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_create.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_delete.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_edit.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/device-uptime.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/force-rerun.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/at_queue_manager.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/log_signal_metrics.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quec_profile_daemon.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecprofile.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecwatch.sh delete mode 100755 ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/scheduled_cell_locking.sh delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.html delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.txt delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Bold.woff2 delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Italic.woff2 delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Light.woff2 delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Medium.woff2 delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Regular.woff2 delete mode 100644 ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-SemiBold.woff2 diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/404.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/404.html index 7ab5b1c..49ce16c 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/404.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/404.html @@ -1 +1 @@ -404: This page could not be found.QuecManager

404

This page could not be found.

    \ No newline at end of file +404: This page could not be found.QuecManager

    404

    This page could not be found.

      \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/404/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/404/index.html index 7ab5b1c..49ce16c 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/404/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/404/index.html @@ -1 +1 @@ -404: This page could not be found.QuecManager

      404

      This page could not be found.

        \ No newline at end of file +404: This page could not be found.QuecManager

        404

        This page could not be found.

          \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/6pIr6VWQMh91espZ7GkRd/_buildManifest.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/6pIr6VWQMh91espZ7GkRd/_buildManifest.js deleted file mode 100644 index f0881a1..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/6pIr6VWQMh91espZ7GkRd/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST=function(r,e,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:21,errorRate:1e-4,numBits:403,numHashes:14,bitArray:[0,1,1,0,1,e,0,r,r,e,e,e,e,e,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,r,r,e,r,r,e,e,r,r,r,r,r,e,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,r,r,e,e,e,e,r,r,r,e,r,r,r,e,e,e,e,r,e,r,e,r,e,r,e,e,e,e,r,r,r,e,r,e,e,r,r,e,r,e,e,e,r,r,r,r,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,r,r,e,r,e,e,e,e,e,e,r,r,e,r,r,e,r,r,r,e,r,e,r,e,e,r,e,e,r,r,r,r,e,r,r,r,e,e,e,e,r,e,e,e,r,e,e,r,e,r,r,e,e,e,e,r,e,e,r,e,r,r,e,r,e,r,r,e,e,r,e,e,e,r,r,e,r,r,e,e,e,e,r,r,e,r,e,e,e,r,e,r,r,e,r,e,r,r,r,e,e,r,r,r,e,e,e,r,e,e,r,r,r,e,r,e,r,r,e,e,r,r,e,e,r,r,r,e,r,e,e,r,r,e,e,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,e,r,r,r,r,r,e,e,r,e,e,e,r,r,r,r,r,e,e,e,r,r,e,r,r,r,e,r,e,e,e,e,r,r,r,e,r,e,e,r,e,r,r,r,e,r,r,e,r,e,r,r,e,r,r,r,r,e,r,r,e,e,r,e,e,r,r,r,r,e,r,r,e,r,r,e,r,r,e,r,r,e,r,e,r,r,e,e,r,e,r,e,e,r,e,e,e,e,r,r,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,e,e,r,e,e,e,r,e,r,r,r,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-f347b70a71a8047b.js"],sortedPages:["/_app","/_error"]}}(0,1,0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/ECtAeRdoEqstSdffrWqHu/_ssgManifest.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/ECtAeRdoEqstSdffrWqHu/_ssgManifest.js deleted file mode 100644 index 5b3ff59..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/ECtAeRdoEqstSdffrWqHu/_ssgManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1074-17a63cc1d4605bcb.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1074-17a63cc1d4605bcb.js deleted file mode 100644 index d9c7a08..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1074-17a63cc1d4605bcb.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1074],{4e3:function(t,e,r){var n;!function(o){"use strict";var i,a={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:"2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286"},u=!0,c="[DecimalError] ",l=c+"Invalid argument: ",s=c+"Exponent out of range: ",f=Math.floor,p=Math.pow,h=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d=f(1286742750677284.5),y={};function v(t,e){var r,n,o,i,a,c,l,s,f=t.constructor,p=f.precision;if(!t.s||!e.s)return e.s||(e=new f(t)),u?E(e,p):e;if(l=t.d,s=e.d,a=t.e,o=e.e,l=l.slice(),i=a-o){for(i<0?(n=l,i=-i,c=s.length):(n=s,o=a,c=l.length),i>(c=(a=Math.ceil(p/7))>c?a+1:c+1)&&(i=c,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for((c=l.length)-(i=s.length)<0&&(i=c,n=s,s=l,l=n),r=0;i;)r=(l[--i]=l[i]+s[i]+r)/1e7|0,l[i]%=1e7;for(r&&(l.unshift(r),++o),c=l.length;0==l[--c];)l.pop();return e.d=l,e.e=o,u?E(e,p):e}function b(t,e,r){if(t!==~~t||tr)throw Error(l+t)}function m(t){var e,r,n,o=t.length-1,i="",a=t[0];if(o>0){for(i+=a,e=1;et.e^this.s<0?1:-1;for(e=0,r=(n=this.d.length)<(o=t.d.length)?n:o;et.d[e]^this.s<0?1:-1;return n===o?0:n>o^this.s<0?1:-1},y.decimalPlaces=y.dp=function(){var t=this.d.length-1,e=(t-this.e)*7;if(t=this.d[t])for(;t%10==0;t/=10)e--;return e<0?0:e},y.dividedBy=y.div=function(t){return g(this,new this.constructor(t))},y.dividedToIntegerBy=y.idiv=function(t){var e=this.constructor;return E(g(this,new e(t),0,1),e.precision)},y.equals=y.eq=function(t){return!this.cmp(t)},y.exponent=function(){return O(this)},y.greaterThan=y.gt=function(t){return this.cmp(t)>0},y.greaterThanOrEqualTo=y.gte=function(t){return this.cmp(t)>=0},y.isInteger=y.isint=function(){return this.e>this.d.length-2},y.isNegative=y.isneg=function(){return this.s<0},y.isPositive=y.ispos=function(){return this.s>0},y.isZero=function(){return 0===this.s},y.lessThan=y.lt=function(t){return 0>this.cmp(t)},y.lessThanOrEqualTo=y.lte=function(t){return 1>this.cmp(t)},y.logarithm=y.log=function(t){var e,r=this.constructor,n=r.precision,o=n+5;if(void 0===t)t=new r(10);else if((t=new r(t)).s<1||t.eq(i))throw Error(c+"NaN");if(this.s<1)throw Error(c+(this.s?"NaN":"-Infinity"));return this.eq(i)?new r(0):(u=!1,e=g(S(this,o),S(t,o),o),u=!0,E(e,n))},y.minus=y.sub=function(t){return t=new this.constructor(t),this.s==t.s?A(this,t):v(this,(t.s=-t.s,t))},y.modulo=y.mod=function(t){var e,r=this.constructor,n=r.precision;if(!(t=new r(t)).s)throw Error(c+"NaN");return this.s?(u=!1,e=g(this,t,0,1).times(t),u=!0,this.minus(e)):E(new r(this),n)},y.naturalExponential=y.exp=function(){return x(this)},y.naturalLogarithm=y.ln=function(){return S(this)},y.negated=y.neg=function(){var t=new this.constructor(this);return t.s=-t.s||0,t},y.plus=y.add=function(t){return t=new this.constructor(t),this.s==t.s?v(this,t):A(this,(t.s=-t.s,t))},y.precision=y.sd=function(t){var e,r,n;if(void 0!==t&&!!t!==t&&1!==t&&0!==t)throw Error(l+t);if(e=O(this)+1,r=7*(n=this.d.length-1)+1,n=this.d[n]){for(;n%10==0;n/=10)r--;for(n=this.d[0];n>=10;n/=10)r++}return t&&e>r?e:r},y.squareRoot=y.sqrt=function(){var t,e,r,n,o,i,a,l=this.constructor;if(this.s<1){if(!this.s)return new l(0);throw Error(c+"NaN")}for(t=O(this),u=!1,0==(o=Math.sqrt(+this))||o==1/0?(((e=m(this.d)).length+t)%2==0&&(e+="0"),o=Math.sqrt(e),t=f((t+1)/2)-(t<0||t%2),n=new l(e=o==1/0?"5e"+t:(e=o.toExponential()).slice(0,e.indexOf("e")+1)+t)):n=new l(o.toString()),o=a=(r=l.precision)+3;;)if(n=(i=n).plus(g(this,i,a+2)).times(.5),m(i.d).slice(0,a)===(e=m(n.d)).slice(0,a)){if(e=e.slice(a-3,a+1),o==a&&"4999"==e){if(E(i,r+1,0),i.times(i).eq(this)){n=i;break}}else if("9999"!=e)break;a+=4}return u=!0,E(n,r)},y.times=y.mul=function(t){var e,r,n,o,i,a,c,l,s,f=this.constructor,p=this.d,h=(t=new f(t)).d;if(!this.s||!t.s)return new f(0);for(t.s*=this.s,r=this.e+t.e,(l=p.length)<(s=h.length)&&(i=p,p=h,h=i,a=l,l=s,s=a),i=[],n=a=l+s;n--;)i.push(0);for(n=s;--n>=0;){for(e=0,o=l+n;o>n;)c=i[o]+h[n]*p[o-n-1]+e,i[o--]=c%1e7|0,e=c/1e7|0;i[o]=(i[o]+e)%1e7|0}for(;!i[--a];)i.pop();return e?++r:i.shift(),t.d=i,t.e=r,u?E(t,f.precision):t},y.toDecimalPlaces=y.todp=function(t,e){var r=this,n=r.constructor;return(r=new n(r),void 0===t)?r:(b(t,0,1e9),void 0===e?e=n.rounding:b(e,0,8),E(r,t+O(r)+1,e))},y.toExponential=function(t,e){var r,n=this,o=n.constructor;return void 0===t?r=k(n,!0):(b(t,0,1e9),void 0===e?e=o.rounding:b(e,0,8),r=k(n=E(new o(n),t+1,e),!0,t+1)),r},y.toFixed=function(t,e){var r,n,o=this.constructor;return void 0===t?k(this):(b(t,0,1e9),void 0===e?e=o.rounding:b(e,0,8),r=k((n=E(new o(this),t+O(this)+1,e)).abs(),!1,t+O(n)+1),this.isneg()&&!this.isZero()?"-"+r:r)},y.toInteger=y.toint=function(){var t=this.constructor;return E(new t(this),O(this)+1,t.rounding)},y.toNumber=function(){return+this},y.toPower=y.pow=function(t){var e,r,n,o,a,l,s=this,p=s.constructor,h=+(t=new p(t));if(!t.s)return new p(i);if(!(s=new p(s)).s){if(t.s<1)throw Error(c+"Infinity");return s}if(s.eq(i))return s;if(n=p.precision,t.eq(i))return E(s,n);if(l=(e=t.e)>=(r=t.d.length-1),a=s.s,l){if((r=h<0?-h:h)<=0x1fffffffffffff){for(o=new p(i),e=Math.ceil(n/7+4),u=!1;r%2&&M((o=o.times(s)).d,e),0!==(r=f(r/2));)M((s=s.times(s)).d,e);return u=!0,t.s<0?new p(i).div(o):E(o,n)}}else if(a<0)throw Error(c+"NaN");return a=a<0&&1&t.d[Math.max(e,r)]?-1:1,s.s=1,u=!1,o=t.times(S(s,n+12)),u=!0,(o=x(o)).s=a,o},y.toPrecision=function(t,e){var r,n,o=this,i=o.constructor;return void 0===t?(r=O(o),n=k(o,r<=i.toExpNeg||r>=i.toExpPos)):(b(t,1,1e9),void 0===e?e=i.rounding:b(e,0,8),r=O(o=E(new i(o),t,e)),n=k(o,t<=r||r<=i.toExpNeg,t)),n},y.toSignificantDigits=y.tosd=function(t,e){var r=this.constructor;return void 0===t?(t=r.precision,e=r.rounding):(b(t,1,1e9),void 0===e?e=r.rounding:b(e,0,8)),E(new r(this),t,e)},y.toString=y.valueOf=y.val=y.toJSON=function(){var t=O(this),e=this.constructor;return k(this,t<=e.toExpNeg||t>=e.toExpPos)};var g=function(){function t(t,e){var r,n=0,o=t.length;for(t=t.slice();o--;)r=t[o]*e+n,t[o]=r%1e7|0,n=r/1e7|0;return n&&t.unshift(n),t}function e(t,e,r,n){var o,i;if(r!=n)i=r>n?1:-1;else for(o=i=0;oe[o]?1:-1;break}return i}function r(t,e,r){for(var n=0;r--;)t[r]-=n,n=t[r]1;)t.shift()}return function(n,o,i,a){var u,l,s,f,p,h,d,y,v,b,m,g,x,w,j,S,P,A,k=n.constructor,M=n.s==o.s?1:-1,_=n.d,T=o.d;if(!n.s)return new k(n);if(!o.s)throw Error(c+"Division by zero");for(s=0,l=n.e-o.e,P=T.length,j=_.length,y=(d=new k(M)).d=[];T[s]==(_[s]||0);)++s;if(T[s]>(_[s]||0)&&--l,(g=null==i?i=k.precision:a?i+(O(n)-O(o))+1:i)<0)return new k(0);if(g=g/7+2|0,s=0,1==P)for(f=0,T=T[0],g++;(s1&&(T=t(T,f),_=t(_,f),P=T.length,j=_.length),w=P,b=(v=_.slice(0,P)).length;b=1e7/2&&++S;do f=0,(u=e(T,v,P,b))<0?(m=v[0],P!=b&&(m=1e7*m+(v[1]||0)),(f=m/S|0)>1?(f>=1e7&&(f=1e7-1),h=(p=t(T,f)).length,b=v.length,1==(u=e(p,v,h,b))&&(f--,r(p,P16)throw Error(s+O(t));if(!t.s)return new h(i);for(null==e?(u=!1,c=d):c=e,a=new h(.03125);t.abs().gte(.1);)t=t.times(a),f+=5;for(c+=Math.log(p(2,f))/Math.LN10*2+5|0,r=n=o=new h(i),h.precision=c;;){if(n=E(n.times(t),c),r=r.times(++l),m((a=o.plus(g(n,r,c))).d).slice(0,c)===m(o.d).slice(0,c)){for(;f--;)o=E(o.times(o),c);return h.precision=d,null==e?(u=!0,E(o,d)):o}o=a}}function O(t){for(var e=7*t.e,r=t.d[0];r>=10;r/=10)e++;return e}function w(t,e,r){if(e>t.LN10.sd())throw u=!0,r&&(t.precision=r),Error(c+"LN10 precision limit exceeded");return E(new t(t.LN10),e)}function j(t){for(var e="";t--;)e+="0";return e}function S(t,e){var r,n,o,a,l,s,f,p,h,d=1,y=t,v=y.d,b=y.constructor,x=b.precision;if(y.s<1)throw Error(c+(y.s?"NaN":"-Infinity"));if(y.eq(i))return new b(0);if(null==e?(u=!1,p=x):p=e,y.eq(10))return null==e&&(u=!0),w(b,p);if(p+=10,b.precision=p,n=(r=m(v)).charAt(0),!(15e14>Math.abs(a=O(y))))return f=w(b,p+2,x).times(a+""),y=S(new b(n+"."+r.slice(1)),p-10).plus(f),b.precision=x,null==e?(u=!0,E(y,x)):y;for(;n<7&&1!=n||1==n&&r.charAt(1)>3;)n=(r=m((y=y.times(t)).d)).charAt(0),d++;for(a=O(y),n>1?(y=new b("0."+r),a++):y=new b(n+"."+r.slice(1)),s=l=y=g(y.minus(i),y.plus(i),p),h=E(y.times(y),p),o=3;;){if(l=E(l.times(h),p),m((f=s.plus(g(l,new b(o),p))).d).slice(0,p)===m(s.d).slice(0,p))return s=s.times(2),0!==a&&(s=s.plus(w(b,p+2,x).times(a+""))),s=g(s,new b(d),p),b.precision=x,null==e?(u=!0,E(s,x)):s;s=f,o+=2}}function P(t,e){var r,n,o;for((r=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(r<0&&(r=n),r+=+e.slice(n+1),e=e.substring(0,n)):r<0&&(r=e.length),n=0;48===e.charCodeAt(n);)++n;for(o=e.length;48===e.charCodeAt(o-1);)--o;if(e=e.slice(n,o)){if(o-=n,r=r-n-1,t.e=f(r/7),t.d=[],n=(r+1)%7,r<0&&(n+=7),nd||t.e<-d))throw Error(s+r)}else t.s=0,t.e=0,t.d=[0];return t}function E(t,e,r){var n,o,i,a,c,l,h,y,v=t.d;for(a=1,i=v[0];i>=10;i/=10)a++;if((n=e-a)<0)n+=7,o=e,h=v[y=0];else{if((y=Math.ceil((n+1)/7))>=(i=v.length))return t;for(a=1,h=i=v[y];i>=10;i/=10)a++;n%=7,o=n-7+a}if(void 0!==r&&(c=h/(i=p(10,a-o-1))%10|0,l=e<0||void 0!==v[y+1]||h%i,l=r<4?(c||l)&&(0==r||r==(t.s<0?3:2)):c>5||5==c&&(4==r||l||6==r&&(n>0?o>0?h/p(10,a-o):0:v[y-1])%10&1||r==(t.s<0?8:7))),e<1||!v[0])return l?(i=O(t),v.length=1,e=e-i-1,v[0]=p(10,(7-e%7)%7),t.e=f(-e/7)||0):(v.length=1,v[0]=t.e=t.s=0),t;if(0==n?(v.length=y,i=1,y--):(v.length=y+1,i=p(10,7-n),v[y]=o>0?(h/p(10,a-o)%p(10,o)|0)*i:0),l)for(;;){if(0==y){1e7==(v[0]+=i)&&(v[0]=1,++t.e);break}if(v[y]+=i,1e7!=v[y])break;v[y--]=0,i=1}for(n=v.length;0===v[--n];)v.pop();if(u&&(t.e>d||t.e<-d))throw Error(s+O(t));return t}function A(t,e){var r,n,o,i,a,c,l,s,f,p,h=t.constructor,d=h.precision;if(!t.s||!e.s)return e.s?e.s=-e.s:e=new h(t),u?E(e,d):e;if(l=t.d,p=e.d,n=e.e,s=t.e,l=l.slice(),a=s-n){for((f=a<0)?(r=l,a=-a,c=p.length):(r=p,n=s,c=l.length),a>(o=Math.max(Math.ceil(d/7),c)+2)&&(a=o,r.length=1),r.reverse(),o=a;o--;)r.push(0);r.reverse()}else{for((f=(o=l.length)<(c=p.length))&&(c=o),o=0;o0;--o)l[c++]=0;for(o=p.length;o>a;){if(l[--o]0?i=i.charAt(0)+"."+i.slice(1)+j(n):a>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(o<0?"e":"e+")+o):o<0?(i="0."+j(-o-1)+i,r&&(n=r-a)>0&&(i+=j(n))):o>=a?(i+=j(o+1-a),r&&(n=r-o-1)>0&&(i=i+"."+j(n))):((n=o+1)0&&(o+1===a&&(i+="."),i+=j(n))),t.s<0?"-"+i:i}function M(t,e){if(t.length>e)return t.length=e,!0}function _(t){if(!t||"object"!=typeof t)throw Error(c+"Object expected");var e,r,n,o=["precision",1,1e9,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(e=0;e=o[e+1]&&n<=o[e+2])this[r]=n;else throw Error(l+r+": "+n)}if(void 0!==(n=t[r="LN10"])){if(n==Math.LN10)this[r]=new this(n);else throw Error(l+r+": "+n)}return this}(a=function t(e){var r,n,o;function i(t){if(!(this instanceof i))return new i(t);if(this.constructor=i,t instanceof i){this.s=t.s,this.e=t.e,this.d=(t=t.d)?t.slice():t;return}if("number"==typeof t){if(0*t!=0)throw Error(l+t);if(t>0)this.s=1;else if(t<0)t=-t,this.s=-1;else{this.s=0,this.e=0,this.d=[0];return}if(t===~~t&&t<1e7){this.e=0,this.d=[t];return}return P(this,t.toString())}if("string"!=typeof t)throw Error(l+t);if(45===t.charCodeAt(0)?(t=t.slice(1),this.s=-1):this.s=1,h.test(t))P(this,t);else throw Error(l+t)}if(i.prototype=y,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=t,i.config=i.set=_,void 0===e&&(e={}),e)for(r=0,o=["precision","rounding","toExpNeg","toExpPos","LN10"];r{"use strict";var e=Object.prototype.hasOwnProperty,r="~";function n(){}function o(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function i(t,e,n,i,a){if("function"!=typeof n)throw TypeError("The listener must be a function");var u=new o(n,i||t,a),c=r?r+e:e;return t._events[c]?t._events[c].fn?t._events[c]=[t._events[c],u]:t._events[c].push(u):(t._events[c]=u,t._eventsCount++),t}function a(t,e){0==--t._eventsCount?t._events=new n:delete t._events[e]}function u(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(r=!1)),u.prototype.eventNames=function(){var t,n,o=[];if(0===this._eventsCount)return o;for(n in t=this._events)e.call(t,n)&&o.push(r?n.slice(1):n);return Object.getOwnPropertySymbols?o.concat(Object.getOwnPropertySymbols(t)):o},u.prototype.listeners=function(t){var e=r?r+t:t,n=this._events[e];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,i=n.length,a=Array(i);o{var n=r(2748)(r(74421),"DataView");t.exports=n},10801:(t,e,r)=>{var n=r(15066),o=r(15638),i=r(8183),a=r(59659),u=r(71619);function c(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(64598),o=r(44602),i=r(54299),a=r(49911),u=r(17039);function c(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(2748)(r(74421),"Map");t.exports=n},15933:(t,e,r)=>{var n=r(21470),o=r(9330),i=r(58963),a=r(735),u=r(20135);function c(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(2748)(r(74421),"Promise");t.exports=n},46083:(t,e,r)=>{var n=r(2748)(r(74421),"Set");t.exports=n},93395:(t,e,r)=>{var n=r(15933),o=r(50350),i=r(81773);function a(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new n;++e{var n=r(6965),o=r(85868),i=r(40036),a=r(88365),u=r(18913),c=r(40305);function l(t){var e=this.__data__=new n(t);this.size=e.size}l.prototype.clear=o,l.prototype.delete=i,l.prototype.get=a,l.prototype.has=u,l.prototype.set=c,t.exports=l},35329:(t,e,r)=>{var n=r(74421).Symbol;t.exports=n},252:(t,e,r)=>{var n=r(74421).Uint8Array;t.exports=n},32901:(t,e,r)=>{var n=r(2748)(r(74421),"WeakMap");t.exports=n},46879:t=>{t.exports=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}},41129:t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length;++r{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=0,i=[];++r{var n=r(26513);t.exports=function(t,e){return!!(null==t?0:t.length)&&n(t,e,0)>-1}},58515:t=>{t.exports=function(t,e,r){for(var n=-1,o=null==t?0:t.length;++n{var n=r(76346),o=r(3108),i=r(55649),a=r(91050),u=r(86887),c=r(20897),l=Object.prototype.hasOwnProperty;t.exports=function(t,e){var r=i(t),s=!r&&o(t),f=!r&&!s&&a(t),p=!r&&!s&&!f&&c(t),h=r||s||f||p,d=h?n(t.length,String):[],y=d.length;for(var v in t)(e||l.call(t,v))&&!(h&&("length"==v||f&&("offset"==v||"parent"==v)||p&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||u(v,y)))&&d.push(v);return d}},3184:t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r{t.exports=function(t,e){for(var r=-1,n=e.length,o=t.length;++r{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length;++r{t.exports=function(t){return t.split("")}},42489:(t,e,r)=>{var n=r(93126);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return -1}},79514:(t,e,r)=>{var n=r(3779);t.exports=function(t,e,r){"__proto__"==e&&n?n(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},30865:(t,e,r)=>{var n=r(16101),o=r(30433)(n);t.exports=o},41111:(t,e,r)=>{var n=r(30865);t.exports=function(t,e){var r=!0;return n(t,function(t,n,o){return r=!!e(t,n,o)}),r}},89691:(t,e,r)=>{var n=r(8700);t.exports=function(t,e,r){for(var o=-1,i=t.length;++o{t.exports=function(t,e,r,n){for(var o=t.length,i=r+(n?1:-1);n?i--:++i{var n=r(82794),o=r(70713);t.exports=function t(e,r,i,a,u){var c=-1,l=e.length;for(i||(i=o),u||(u=[]);++c0&&i(s)?r>1?t(s,r-1,i,a,u):n(u,s):a||(u[u.length]=s)}return u}},82783:(t,e,r)=>{var n=r(72463)();t.exports=n},16101:(t,e,r)=>{var n=r(82783),o=r(74092);t.exports=function(t,e){return t&&n(t,e,o)}},58180:(t,e,r)=>{var n=r(81881),o=r(26767);t.exports=function(t,e){e=n(e,t);for(var r=0,i=e.length;null!=t&&r{var n=r(82794),o=r(55649);t.exports=function(t,e,r){var i=e(t);return o(t)?i:n(i,r(t))}},89212:(t,e,r)=>{var n=r(35329),o=r(71957),i=r(19914),a=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":a&&a in Object(t)?o(t):i(t)}},57991:t=>{t.exports=function(t,e){return t>e}},11971:t=>{t.exports=function(t,e){return null!=t&&e in Object(t)}},26513:(t,e,r)=>{var n=r(73461),o=r(57201),i=r(38225);t.exports=function(t,e,r){return e==e?i(t,e,r):n(t,o,r)}},71940:(t,e,r)=>{var n=r(89212),o=r(22964);t.exports=function(t){return o(t)&&"[object Arguments]"==n(t)}},86696:(t,e,r)=>{var n=r(59578),o=r(22964);t.exports=function t(e,r,i,a,u){return e===r||(null!=e&&null!=r&&(o(e)||o(r))?n(e,r,i,a,t,u):e!=e&&r!=r)}},59578:(t,e,r)=>{var n=r(62863),o=r(9617),i=r(24366),a=r(89589),u=r(30393),c=r(55649),l=r(91050),s=r(20897),f="[object Arguments]",p="[object Array]",h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,r,y,v,b){var m=c(t),g=c(e),x=m?p:u(t),O=g?p:u(e);x=x==f?h:x,O=O==f?h:O;var w=x==h,j=O==h,S=x==O;if(S&&l(t)){if(!l(e))return!1;m=!0,w=!1}if(S&&!w)return b||(b=new n),m||s(t)?o(t,e,r,y,v,b):i(t,e,x,r,y,v,b);if(!(1&r)){var P=w&&d.call(t,"__wrapped__"),E=j&&d.call(e,"__wrapped__");if(P||E){var A=P?t.value():t,k=E?e.value():e;return b||(b=new n),v(A,k,r,y,b)}}return!!S&&(b||(b=new n),a(t,e,r,y,v,b))}},12657:(t,e,r)=>{var n=r(62863),o=r(86696);t.exports=function(t,e,r,i){var a=r.length,u=a,c=!i;if(null==t)return!u;for(t=Object(t);a--;){var l=r[a];if(c&&l[2]?l[1]!==t[l[0]]:!(l[0]in t))return!1}for(;++a{t.exports=function(t){return t!=t}},75895:(t,e,r)=>{var n=r(14632),o=r(51164),i=r(50683),a=r(81745),u=/^\[object .+?Constructor\]$/,c=Object.prototype,l=Function.prototype.toString,s=c.hasOwnProperty,f=RegExp("^"+l.call(s).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(n(t)?f:u).test(a(t))}},80193:(t,e,r)=>{var n=r(89212),o=r(40312),i=r(22964),a={};a["[object Float32Array]"]=a["[object Float64Array]"]=a["[object Int8Array]"]=a["[object Int16Array]"]=a["[object Int32Array]"]=a["[object Uint8Array]"]=a["[object Uint8ClampedArray]"]=a["[object Uint16Array]"]=a["[object Uint32Array]"]=!0,a["[object Arguments]"]=a["[object Array]"]=a["[object ArrayBuffer]"]=a["[object Boolean]"]=a["[object DataView]"]=a["[object Date]"]=a["[object Error]"]=a["[object Function]"]=a["[object Map]"]=a["[object Number]"]=a["[object Object]"]=a["[object RegExp]"]=a["[object Set]"]=a["[object String]"]=a["[object WeakMap]"]=!1,t.exports=function(t){return i(t)&&o(t.length)&&!!a[n(t)]}},15717:(t,e,r)=>{var n=r(30197),o=r(23536),i=r(2586),a=r(55649),u=r(84169);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):n(t):u(t)}},70636:(t,e,r)=>{var n=r(44329),o=r(55410),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!n(t))return o(t);var e=[];for(var r in Object(t))i.call(t,r)&&"constructor"!=r&&e.push(r);return e}},49064:t=>{t.exports=function(t,e){return t{var n=r(30865),o=r(74934);t.exports=function(t,e){var r=-1,i=o(t)?Array(t.length):[];return n(t,function(t,n,o){i[++r]=e(t,n,o)}),i}},30197:(t,e,r)=>{var n=r(12657),o=r(24304),i=r(48939);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(r){return r===t||n(r,t,e)}}},23536:(t,e,r)=>{var n=r(86696),o=r(32292),i=r(60419),a=r(26192),u=r(29604),c=r(48939),l=r(26767);t.exports=function(t,e){return a(t)&&u(e)?c(l(t),e):function(r){var a=o(r,t);return void 0===a&&a===e?i(r,t):n(e,a,3)}}},20789:(t,e,r)=>{var n=r(3184),o=r(58180),i=r(15717),a=r(13134),u=r(69197),c=r(82451),l=r(38688),s=r(2586),f=r(55649);t.exports=function(t,e,r){e=e.length?n(e,function(t){return f(t)?function(e){return o(e,1===t.length?t[0]:t)}:t}):[s];var p=-1;return e=n(e,c(i)),u(a(t,function(t,r,o){return{criteria:n(e,function(e){return e(t)}),index:++p,value:t}}),function(t,e){return l(t,e,r)})}},61097:t=>{t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},37487:(t,e,r)=>{var n=r(58180);t.exports=function(t){return function(e){return n(e,t)}}},87817:t=>{var e=Math.ceil,r=Math.max;t.exports=function(t,n,o,i){for(var a=-1,u=r(e((n-t)/(o||1)),0),c=Array(u);u--;)c[i?u:++a]=t,t+=o;return c}},4090:(t,e,r)=>{var n=r(2586),o=r(58353),i=r(69595);t.exports=function(t,e){return i(o(t,e,n),t+"")}},15344:(t,e,r)=>{var n=r(73928),o=r(3779),i=r(2586),a=o?function(t,e){return o(t,"toString",{configurable:!0,enumerable:!1,value:n(e),writable:!0})}:i;t.exports=a},13850:t=>{t.exports=function(t,e,r){var n=-1,o=t.length;e<0&&(e=-e>o?0:o+e),(r=r>o?o:r)<0&&(r+=o),o=e>r?0:r-e>>>0,e>>>=0;for(var i=Array(o);++n{var n=r(30865);t.exports=function(t,e){var r;return n(t,function(t,n,o){return!(r=e(t,n,o))}),!!r}},69197:t=>{t.exports=function(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}},76346:t=>{t.exports=function(t,e){for(var r=-1,n=Array(t);++r{var n=r(35329),o=r(3184),i=r(55649),a=r(8700),u=1/0,c=n?n.prototype:void 0,l=c?c.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(i(e))return o(e,t)+"";if(a(e))return l?l.call(e):"";var r=e+"";return"0"==r&&1/e==-u?"-0":r}},95680:(t,e,r)=>{var n=r(53434),o=/^\s+/;t.exports=function(t){return t?t.slice(0,n(t)+1).replace(o,""):t}},82451:t=>{t.exports=function(t){return function(e){return t(e)}}},26349:(t,e,r)=>{var n=r(93395),o=r(24919),i=r(58515),a=r(25327),u=r(82483),c=r(11671);t.exports=function(t,e,r){var l=-1,s=o,f=t.length,p=!0,h=[],d=h;if(r)p=!1,s=i;else if(f>=200){var y=e?null:u(t);if(y)return c(y);p=!1,s=a,d=new n}else d=e?[]:h;t:for(;++l{t.exports=function(t,e){return t.has(e)}},81881:(t,e,r)=>{var n=r(55649),o=r(26192),i=r(80314),a=r(55656);t.exports=function(t,e){return n(t)?t:o(t,e)?[t]:i(a(t))}},35e3:(t,e,r)=>{var n=r(13850);t.exports=function(t,e,r){var o=t.length;return r=void 0===r?o:r,!e&&r>=o?t:n(t,e,r)}},13410:(t,e,r)=>{var n=r(8700);t.exports=function(t,e){if(t!==e){var r=void 0!==t,o=null===t,i=t==t,a=n(t),u=void 0!==e,c=null===e,l=e==e,s=n(e);if(!c&&!s&&!a&&t>e||a&&u&&l&&!c&&!s||o&&u&&l||!r&&l||!i)return 1;if(!o&&!a&&!s&&t{var n=r(13410);t.exports=function(t,e,r){for(var o=-1,i=t.criteria,a=e.criteria,u=i.length,c=r.length;++o=c)return l;return l*("desc"==r[o]?-1:1)}}return t.index-e.index}},13325:(t,e,r)=>{var n=r(74421)["__core-js_shared__"];t.exports=n},30433:(t,e,r)=>{var n=r(74934);t.exports=function(t,e){return function(r,o){if(null==r)return r;if(!n(r))return t(r,o);for(var i=r.length,a=e?i:-1,u=Object(r);(e?a--:++a{t.exports=function(t){return function(e,r,n){for(var o=-1,i=Object(e),a=n(e),u=a.length;u--;){var c=a[t?u:++o];if(!1===r(i[c],c,i))break}return e}}},78265:(t,e,r)=>{var n=r(35e3),o=r(68018),i=r(74662),a=r(55656);t.exports=function(t){return function(e){var r=o(e=a(e))?i(e):void 0,u=r?r[0]:e.charAt(0),c=r?n(r,1).join(""):e.slice(1);return u[t]()+c}}},4598:(t,e,r)=>{var n=r(15717),o=r(74934),i=r(74092);t.exports=function(t){return function(e,r,a){var u=Object(e);if(!o(e)){var c=n(r,3);e=i(e),r=function(t){return c(u[t],t,u)}}var l=t(e,r,a);return l>-1?u[c?e[l]:l]:void 0}}},61102:(t,e,r)=>{var n=r(87817),o=r(91276),i=r(54962);t.exports=function(t){return function(e,r,a){return a&&"number"!=typeof a&&o(e,r,a)&&(r=a=void 0),e=i(e),void 0===r?(r=e,e=0):r=i(r),a=void 0===a?e{var n=r(46083),o=r(27964),i=r(11671),a=n&&1/i(new n([,-0]))[1]==1/0?function(t){return new n(t)}:o;t.exports=a},3779:(t,e,r)=>{var n=r(2748),o=function(){try{var t=n(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=o},9617:(t,e,r)=>{var n=r(93395),o=r(89686),i=r(25327);t.exports=function(t,e,r,a,u,c){var l=1&r,s=t.length,f=e.length;if(s!=f&&!(l&&f>s))return!1;var p=c.get(t),h=c.get(e);if(p&&h)return p==e&&h==t;var d=-1,y=!0,v=2&r?new n:void 0;for(c.set(t,e),c.set(e,t);++d{var n=r(35329),o=r(252),i=r(93126),a=r(9617),u=r(49773),c=r(11671),l=n?n.prototype:void 0,s=l?l.valueOf:void 0;t.exports=function(t,e,r,n,l,f,p){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)break;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":if(t.byteLength!=e.byteLength||!f(new o(t),new o(e)))break;return!0;case"[object Boolean]":case"[object Date]":case"[object Number]":return i(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=u;case"[object Set]":var d=1&n;if(h||(h=c),t.size!=e.size&&!d)break;var y=p.get(t);if(y)return y==e;n|=2,p.set(t,e);var v=a(h(t),h(e),n,l,f,p);return p.delete(t),v;case"[object Symbol]":if(s)return s.call(t)==s.call(e)}return!1}},89589:(t,e,r)=>{var n=r(97038),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,r,i,a,u){var c=1&r,l=n(t),s=l.length;if(s!=n(e).length&&!c)return!1;for(var f=s;f--;){var p=l[f];if(!(c?p in e:o.call(e,p)))return!1}var h=u.get(t),d=u.get(e);if(h&&d)return h==e&&d==t;var y=!0;u.set(t,e),u.set(e,t);for(var v=c;++f{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;t.exports=n},97038:(t,e,r)=>{var n=r(50963),o=r(20768),i=r(74092);t.exports=function(t){return n(t,i,o)}},7819:(t,e,r)=>{var n=r(11884);t.exports=function(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},24304:(t,e,r)=>{var n=r(29604),o=r(74092);t.exports=function(t){for(var e=o(t),r=e.length;r--;){var i=e[r],a=t[i];e[r]=[i,a,n(a)]}return e}},2748:(t,e,r)=>{var n=r(75895),o=r(13372);t.exports=function(t,e){var r=o(t,e);return n(r)?r:void 0}},95459:(t,e,r)=>{var n=r(76945)(Object.getPrototypeOf,Object);t.exports=n},71957:(t,e,r)=>{var n=r(35329),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,u=n?n.toStringTag:void 0;t.exports=function(t){var e=i.call(t,u),r=t[u];try{t[u]=void 0;var n=!0}catch(t){}var o=a.call(t);return n&&(e?t[u]=r:delete t[u]),o}},20768:(t,e,r)=>{var n=r(11588),o=r(25297),i=Object.prototype.propertyIsEnumerable,a=Object.getOwnPropertySymbols,u=a?function(t){return null==t?[]:n(a(t=Object(t)),function(e){return i.call(t,e)})}:o;t.exports=u},30393:(t,e,r)=>{var n=r(19120),o=r(46817),i=r(14006),a=r(46083),u=r(32901),c=r(89212),l=r(81745),s="[object Map]",f="[object Promise]",p="[object Set]",h="[object WeakMap]",d="[object DataView]",y=l(n),v=l(o),b=l(i),m=l(a),g=l(u),x=c;(n&&x(new n(new ArrayBuffer(1)))!=d||o&&x(new o)!=s||i&&x(i.resolve())!=f||a&&x(new a)!=p||u&&x(new u)!=h)&&(x=function(t){var e=c(t),r="[object Object]"==e?t.constructor:void 0,n=r?l(r):"";if(n)switch(n){case y:return d;case v:return s;case b:return f;case m:return p;case g:return h}return e}),t.exports=x},13372:t=>{t.exports=function(t,e){return null==t?void 0:t[e]}},4012:(t,e,r)=>{var n=r(81881),o=r(3108),i=r(55649),a=r(86887),u=r(40312),c=r(26767);t.exports=function(t,e,r){e=n(e,t);for(var l=-1,s=e.length,f=!1;++l{var e=RegExp("[\\u200d\ud800-\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");t.exports=function(t){return e.test(t)}},15066:(t,e,r)=>{var n=r(3474);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},15638:t=>{t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},8183:(t,e,r)=>{var n=r(3474),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0}},59659:(t,e,r)=>{var n=r(3474),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:o.call(e,t)}},71619:(t,e,r)=>{var n=r(3474);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},70713:(t,e,r)=>{var n=r(35329),o=r(3108),i=r(55649),a=n?n.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},86887:t=>{var e=/^(?:0|[1-9]\d*)$/;t.exports=function(t,r){var n=typeof t;return!!(r=null==r?0x1fffffffffffff:r)&&("number"==n||"symbol"!=n&&e.test(t))&&t>-1&&t%1==0&&t{var n=r(93126),o=r(74934),i=r(86887),a=r(50683);t.exports=function(t,e,r){if(!a(r))return!1;var u=typeof e;return("number"==u?!!(o(r)&&i(e,r.length)):"string"==u&&e in r)&&n(r[e],t)}},26192:(t,e,r)=>{var n=r(55649),o=r(8700),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(n(t))return!1;var r=typeof t;return!!("number"==r||"symbol"==r||"boolean"==r||null==t||o(t))||a.test(t)||!i.test(t)||null!=e&&t in Object(e)}},11884:t=>{t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},51164:(t,e,r)=>{var n=r(13325),o=function(){var t=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();t.exports=function(t){return!!o&&o in t}},44329:t=>{var e=Object.prototype;t.exports=function(t){var r=t&&t.constructor;return t===("function"==typeof r&&r.prototype||e)}},29604:(t,e,r)=>{var n=r(50683);t.exports=function(t){return t==t&&!n(t)}},64598:t=>{t.exports=function(){this.__data__=[],this.size=0}},44602:(t,e,r)=>{var n=r(42489),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)}},54299:(t,e,r)=>{var n=r(42489);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},49911:(t,e,r)=>{var n=r(42489);t.exports=function(t){return n(this.__data__,t)>-1}},17039:(t,e,r)=>{var n=r(42489);t.exports=function(t,e){var r=this.__data__,o=n(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}},21470:(t,e,r)=>{var n=r(10801),o=r(6965),i=r(46817);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(i||o),string:new n}}},9330:(t,e,r)=>{var n=r(7819);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},58963:(t,e,r)=>{var n=r(7819);t.exports=function(t){return n(this,t).get(t)}},735:(t,e,r)=>{var n=r(7819);t.exports=function(t){return n(this,t).has(t)}},20135:(t,e,r)=>{var n=r(7819);t.exports=function(t,e){var r=n(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}},49773:t=>{t.exports=function(t){var e=-1,r=Array(t.size);return t.forEach(function(t,n){r[++e]=[n,t]}),r}},48939:t=>{t.exports=function(t,e){return function(r){return null!=r&&r[t]===e&&(void 0!==e||t in Object(r))}}},73646:(t,e,r)=>{var n=r(80480);t.exports=function(t){var e=n(t,function(t){return 500===r.size&&r.clear(),t}),r=e.cache;return e}},3474:(t,e,r)=>{var n=r(2748)(Object,"create");t.exports=n},55410:(t,e,r)=>{var n=r(76945)(Object.keys,Object);t.exports=n},3469:(t,e,r)=>{t=r.nmd(t);var n=r(54956),o=e&&!e.nodeType&&e,i=o&&t&&!t.nodeType&&t,a=i&&i.exports===o&&n.process,u=function(){try{var t=i&&i.require&&i.require("util").types;if(t)return t;return a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=u},19914:t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},76945:t=>{t.exports=function(t,e){return function(r){return t(e(r))}}},58353:(t,e,r)=>{var n=r(46879),o=Math.max;t.exports=function(t,e,r){return e=o(void 0===e?t.length-1:e,0),function(){for(var i=arguments,a=-1,u=o(i.length-e,0),c=Array(u);++a{var n=r(54956),o="object"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function("return this")();t.exports=i},50350:t=>{t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},81773:t=>{t.exports=function(t){return this.__data__.has(t)}},11671:t=>{t.exports=function(t){var e=-1,r=Array(t.size);return t.forEach(function(t){r[++e]=t}),r}},69595:(t,e,r)=>{var n=r(15344),o=r(64559)(n);t.exports=o},64559:t=>{var e=Date.now;t.exports=function(t){var r=0,n=0;return function(){var o=e(),i=16-(o-n);if(n=o,i>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}},85868:(t,e,r)=>{var n=r(6965);t.exports=function(){this.__data__=new n,this.size=0}},40036:t=>{t.exports=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}},88365:t=>{t.exports=function(t){return this.__data__.get(t)}},18913:t=>{t.exports=function(t){return this.__data__.has(t)}},40305:(t,e,r)=>{var n=r(6965),o=r(46817),i=r(15933);t.exports=function(t,e){var r=this.__data__;if(r instanceof n){var a=r.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++r.size,this;r=this.__data__=new i(a)}return r.set(t,e),this.size=r.size,this}},38225:t=>{t.exports=function(t,e,r){for(var n=r-1,o=t.length;++n{var n=r(13706),o=r(68018),i=r(60342);t.exports=function(t){return o(t)?i(t):n(t)}},80314:(t,e,r)=>{var n=r(73646),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,i=/\\(\\)?/g,a=n(function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(o,function(t,r,n,o){e.push(n?o.replace(i,"$1"):r||t)}),e});t.exports=a},26767:(t,e,r)=>{var n=r(8700),o=1/0;t.exports=function(t){if("string"==typeof t||n(t))return t;var e=t+"";return"0"==e&&1/t==-o?"-0":e}},81745:t=>{var e=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},53434:t=>{var e=/\s/;t.exports=function(t){for(var r=t.length;r--&&e.test(t.charAt(r)););return r}},60342:t=>{var e="\ud800-\udfff",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",n="\ud83c[\udffb-\udfff]",o="[^"+e+"]",i="(?:\ud83c[\udde6-\uddff]){2}",a="[\ud800-\udbff][\udc00-\udfff]",u="(?:"+r+"|"+n+")?",c="[\\ufe0e\\ufe0f]?",l="(?:\\u200d(?:"+[o,i,a].join("|")+")"+c+u+")*",s=RegExp(n+"(?="+n+")|(?:"+[o+r+"?",r,i,a,"["+e+"]"].join("|")+")"+(c+u+l),"g");t.exports=function(t){return t.match(s)||[]}},73928:t=>{t.exports=function(t){return function(){return t}}},59243:(t,e,r)=>{var n=r(50683),o=r(92816),i=r(82524),a=Math.max,u=Math.min;t.exports=function(t,e,r){var c,l,s,f,p,h,d=0,y=!1,v=!1,b=!0;if("function"!=typeof t)throw TypeError("Expected a function");function m(e){var r=c,n=l;return c=l=void 0,d=e,f=t.apply(n,r)}function g(t){var r=t-h,n=t-d;return void 0===h||r>=e||r<0||v&&n>=s}function x(){var t,r,n,i=o();if(g(i))return O(i);p=setTimeout(x,(t=i-h,r=i-d,n=e-t,v?u(n,s-r):n))}function O(t){return(p=void 0,b&&c)?m(t):(c=l=void 0,f)}function w(){var t,r=o(),n=g(r);if(c=arguments,l=this,h=r,n){if(void 0===p)return d=t=h,p=setTimeout(x,e),y?m(t):f;if(v)return clearTimeout(p),p=setTimeout(x,e),m(h)}return void 0===p&&(p=setTimeout(x,e)),f}return e=i(e)||0,n(r)&&(y=!!r.leading,s=(v="maxWait"in r)?a(i(r.maxWait)||0,e):s,b="trailing"in r?!!r.trailing:b),w.cancel=function(){void 0!==p&&clearTimeout(p),d=0,c=h=l=p=void 0},w.flush=function(){return void 0===p?f:O(o())},w}},93126:t=>{t.exports=function(t,e){return t===e||t!=t&&e!=e}},83191:(t,e,r)=>{var n=r(41129),o=r(41111),i=r(15717),a=r(55649),u=r(91276);t.exports=function(t,e,r){var c=a(t)?n:o;return r&&u(t,e,r)&&(e=void 0),c(t,i(e,3))}},1339:(t,e,r)=>{var n=r(4598)(r(17621));t.exports=n},17621:(t,e,r)=>{var n=r(73461),o=r(15717),i=r(41265),a=Math.max;t.exports=function(t,e,r){var u=null==t?0:t.length;if(!u)return -1;var c=null==r?0:i(r);return c<0&&(c=a(u+c,0)),n(t,o(e,3),c)}},14607:(t,e,r)=>{var n=r(85646),o=r(18190);t.exports=function(t,e){return n(o(t,e),1)}},32292:(t,e,r)=>{var n=r(58180);t.exports=function(t,e,r){var o=null==t?void 0:n(t,e);return void 0===o?r:o}},60419:(t,e,r)=>{var n=r(11971),o=r(4012);t.exports=function(t,e){return null!=t&&o(t,e,n)}},2586:t=>{t.exports=function(t){return t}},3108:(t,e,r)=>{var n=r(71940),o=r(22964),i=Object.prototype,a=i.hasOwnProperty,u=i.propertyIsEnumerable,c=n(function(){return arguments}())?n:function(t){return o(t)&&a.call(t,"callee")&&!u.call(t,"callee")};t.exports=c},55649:t=>{var e=Array.isArray;t.exports=e},74934:(t,e,r)=>{var n=r(14632),o=r(40312);t.exports=function(t){return null!=t&&o(t.length)&&!n(t)}},46420:(t,e,r)=>{var n=r(89212),o=r(22964);t.exports=function(t){return!0===t||!1===t||o(t)&&"[object Boolean]"==n(t)}},91050:(t,e,r)=>{t=r.nmd(t);var n=r(74421),o=r(44731),i=e&&!e.nodeType&&e,a=i&&t&&!t.nodeType&&t,u=a&&a.exports===i?n.Buffer:void 0,c=u?u.isBuffer:void 0;t.exports=c||o},6440:(t,e,r)=>{var n=r(86696);t.exports=function(t,e){return n(t,e)}},14632:(t,e,r)=>{var n=r(89212),o=r(50683);t.exports=function(t){if(!o(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},40312:t=>{t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=0x1fffffffffffff}},50801:(t,e,r)=>{var n=r(45493);t.exports=function(t){return n(t)&&t!=+t}},87107:t=>{t.exports=function(t){return null==t}},45493:(t,e,r)=>{var n=r(89212),o=r(22964);t.exports=function(t){return"number"==typeof t||o(t)&&"[object Number]"==n(t)}},50683:t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},22964:t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},55519:(t,e,r)=>{var n=r(89212),o=r(95459),i=r(22964),a=Object.prototype,u=Function.prototype.toString,c=a.hasOwnProperty,l=u.call(Object);t.exports=function(t){if(!i(t)||"[object Object]"!=n(t))return!1;var e=o(t);if(null===e)return!0;var r=c.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&u.call(r)==l}},24665:(t,e,r)=>{var n=r(89212),o=r(55649),i=r(22964);t.exports=function(t){return"string"==typeof t||!o(t)&&i(t)&&"[object String]"==n(t)}},8700:(t,e,r)=>{var n=r(89212),o=r(22964);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==n(t)}},20897:(t,e,r)=>{var n=r(80193),o=r(82451),i=r(3469),a=i&&i.isTypedArray,u=a?o(a):n;t.exports=u},74092:(t,e,r)=>{var n=r(4241),o=r(70636),i=r(74934);t.exports=function(t){return i(t)?n(t):o(t)}},21836:t=>{t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},18190:(t,e,r)=>{var n=r(3184),o=r(15717),i=r(13134),a=r(55649);t.exports=function(t,e){return(a(t)?n:i)(t,o(e,3))}},86992:(t,e,r)=>{var n=r(79514),o=r(16101),i=r(15717);t.exports=function(t,e){var r={};return e=i(e,3),o(t,function(t,o,i){n(r,o,e(t,o,i))}),r}},12838:(t,e,r)=>{var n=r(89691),o=r(57991),i=r(2586);t.exports=function(t){return t&&t.length?n(t,i,o):void 0}},80480:(t,e,r)=>{var n=r(15933);function o(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw TypeError("Expected a function");var r=function(){var n=arguments,o=e?e.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var a=t.apply(this,n);return r.cache=i.set(o,a)||i,a};return r.cache=new(o.Cache||n),r}o.Cache=n,t.exports=o},45652:(t,e,r)=>{var n=r(89691),o=r(49064),i=r(2586);t.exports=function(t){return t&&t.length?n(t,i,o):void 0}},27964:t=>{t.exports=function(){}},92816:(t,e,r)=>{var n=r(74421);t.exports=function(){return n.Date.now()}},84169:(t,e,r)=>{var n=r(61097),o=r(37487),i=r(26192),a=r(26767);t.exports=function(t){return i(t)?n(a(t)):o(t)}},4009:(t,e,r)=>{var n=r(61102)();t.exports=n},88448:(t,e,r)=>{var n=r(89686),o=r(15717),i=r(63872),a=r(55649),u=r(91276);t.exports=function(t,e,r){var c=a(t)?n:i;return r&&u(t,e,r)&&(e=void 0),c(t,o(e,3))}},67501:(t,e,r)=>{var n=r(85646),o=r(20789),i=r(4090),a=r(91276),u=i(function(t,e){if(null==t)return[];var r=e.length;return r>1&&a(t,e[0],e[1])?e=[]:r>2&&a(e[0],e[1],e[2])&&(e=[e[0]]),o(t,n(e,1),[])});t.exports=u},25297:t=>{t.exports=function(){return[]}},44731:t=>{t.exports=function(){return!1}},54636:(t,e,r)=>{var n=r(59243),o=r(50683);t.exports=function(t,e,r){var i=!0,a=!0;if("function"!=typeof t)throw TypeError("Expected a function");return o(r)&&(i="leading"in r?!!r.leading:i,a="trailing"in r?!!r.trailing:a),n(t,e,{leading:i,maxWait:e,trailing:a})}},54962:(t,e,r)=>{var n=r(82524),o=1/0;t.exports=function(t){return t?(t=n(t))===o||t===-o?(t<0?-1:1)*17976931348623157e292:t==t?t:0:0===t?t:0}},41265:(t,e,r)=>{var n=r(54962);t.exports=function(t){var e=n(t),r=e%1;return e==e?r?e-r:e:0}},82524:(t,e,r)=>{var n=r(95680),o=r(50683),i=r(8700),a=0/0,u=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,l=/^0o[0-7]+$/i,s=parseInt;t.exports=function(t){if("number"==typeof t)return t;if(i(t))return a;if(o(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=o(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=n(t);var r=c.test(t);return r||l.test(t)?s(t.slice(2),r?2:8):u.test(t)?a:+t}},55656:(t,e,r)=>{var n=r(51688);t.exports=function(t){return null==t?"":n(t)}},79948:(t,e,r)=>{var n=r(15717),o=r(26349);t.exports=function(t,e){return t&&t.length?o(t,n(e,2)):[]}},76158:(t,e,r)=>{var n=r(78265)("toUpperCase");t.exports=n},546:(t,e,r)=>{"use strict";var n=r(57213);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,e,r,o,i,a){if(a!==n){var u=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function e(){return t}t.isRequired=t;var r={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},83318:(t,e,r)=>{t.exports=r(546)()},57213:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},55473:(t,e)=>{"use strict";var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler");Symbol.for("react.provider");var u=Symbol.for("react.consumer"),c=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),s=Symbol.for("react.suspense"),f=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy");Symbol.for("react.offscreen"),Symbol.for("react.client.reference"),e.vq=function(t){return"object"==typeof t&&null!==t&&t.$$typeof===r},e.zv=function(t){return function(t){if("object"==typeof t&&null!==t){var e=t.$$typeof;switch(e){case r:switch(t=t.type){case o:case a:case i:case s:case f:return t;default:switch(t=t&&t.$$typeof){case c:case l:case h:case p:case u:return t;default:return e}}case n:return e}}}(t)===o}},54584:(t,e,r)=>{"use strict";r.d(e,{Ay:()=>tZ});var n=r(20107),o=r(83318),i=r.n(o),a=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty;function l(t,e){return function(r,n,o){return t(r,n,o)&&e(r,n,o)}}function s(t){return function(e,r,n){if(!e||!r||"object"!=typeof e||"object"!=typeof r)return t(e,r,n);var o=n.cache,i=o.get(e),a=o.get(r);if(i&&a)return i===r&&a===e;o.set(e,r),o.set(r,e);var u=t(e,r,n);return o.delete(e),o.delete(r),u}}function f(t){return a(t).concat(u(t))}var p=Object.hasOwn||function(t,e){return c.call(t,e)};function h(t,e){return t||e?t===e:t===e||t!=t&&e!=e}var d="_owner",y=Object.getOwnPropertyDescriptor,v=Object.keys;function b(t,e,r){var n=t.length;if(e.length!==n)return!1;for(;n-- >0;)if(!r.equals(t[n],e[n],n,n,t,e,r))return!1;return!0}function m(t,e){return h(t.getTime(),e.getTime())}function g(t,e,r){if(t.size!==e.size)return!1;for(var n,o,i={},a=t.entries(),u=0;(n=a.next())&&!n.done;){for(var c=e.entries(),l=!1,s=0;(o=c.next())&&!o.done;){var f=n.value,p=f[0],h=f[1],d=o.value,y=d[0],v=d[1];!l&&!i[s]&&(l=r.equals(p,y,u,s,t,e,r)&&r.equals(h,v,p,y,t,e,r))&&(i[s]=!0),s++}if(!l)return!1;u++}return!0}function x(t,e,r){var n,o=v(t),i=o.length;if(v(e).length!==i)return!1;for(;i-- >0;)if((n=o[i])===d&&(t.$$typeof||e.$$typeof)&&t.$$typeof!==e.$$typeof||!p(e,n)||!r.equals(t[n],e[n],n,n,t,e,r))return!1;return!0}function O(t,e,r){var n,o,i,a=f(t),u=a.length;if(f(e).length!==u)return!1;for(;u-- >0;)if((n=a[u])===d&&(t.$$typeof||e.$$typeof)&&t.$$typeof!==e.$$typeof||!p(e,n)||!r.equals(t[n],e[n],n,n,t,e,r)||(o=y(t,n),i=y(e,n),(o||i)&&(!o||!i||o.configurable!==i.configurable||o.enumerable!==i.enumerable||o.writable!==i.writable)))return!1;return!0}function w(t,e){return h(t.valueOf(),e.valueOf())}function j(t,e){return t.source===e.source&&t.flags===e.flags}function S(t,e,r){if(t.size!==e.size)return!1;for(var n,o,i={},a=t.values();(n=a.next())&&!n.done;){for(var u=e.values(),c=!1,l=0;(o=u.next())&&!o.done;)!c&&!i[l]&&(c=r.equals(n.value,o.value,n.value,o.value,t,e,r))&&(i[l]=!0),l++;if(!c)return!1}return!0}function P(t,e){var r=t.length;if(e.length!==r)return!1;for(;r-- >0;)if(t[r]!==e[r])return!1;return!0}var E=Array.isArray,A="function"==typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView:null,k=Object.assign,M=Object.prototype.toString.call.bind(Object.prototype.toString),_=T();function T(t){void 0===t&&(t={});var e,r,n,o,i,a,u,c,f,p=t.circular,h=t.createInternalComparator,d=t.createState,y=t.strict,v=(r=(e=function(t){var e=t.circular,r=t.createCustomConfig,n=t.strict,o={areArraysEqual:n?O:b,areDatesEqual:m,areMapsEqual:n?l(g,O):g,areObjectsEqual:n?O:x,arePrimitiveWrappersEqual:w,areRegExpsEqual:j,areSetsEqual:n?l(S,O):S,areTypedArraysEqual:n?O:P};if(r&&(o=k({},o,r(o))),e){var i=s(o.areArraysEqual),a=s(o.areMapsEqual),u=s(o.areObjectsEqual),c=s(o.areSetsEqual);o=k({},o,{areArraysEqual:i,areMapsEqual:a,areObjectsEqual:u,areSetsEqual:c})}return o}(t)).areArraysEqual,n=e.areDatesEqual,o=e.areMapsEqual,i=e.areObjectsEqual,a=e.arePrimitiveWrappersEqual,u=e.areRegExpsEqual,c=e.areSetsEqual,f=e.areTypedArraysEqual,function(t,e,l){if(t===e)return!0;if(null==t||null==e||"object"!=typeof t||"object"!=typeof e)return t!=t&&e!=e;var s=t.constructor;if(s!==e.constructor)return!1;if(s===Object)return i(t,e,l);if(E(t))return r(t,e,l);if(null!=A&&A(t))return f(t,e,l);if(s===Date)return n(t,e,l);if(s===RegExp)return u(t,e,l);if(s===Map)return o(t,e,l);if(s===Set)return c(t,e,l);var p=M(t);return"[object Date]"===p?n(t,e,l):"[object RegExp]"===p?u(t,e,l):"[object Map]"===p?o(t,e,l):"[object Set]"===p?c(t,e,l):"[object Object]"===p?"function"!=typeof t.then&&"function"!=typeof e.then&&i(t,e,l):"[object Arguments]"===p?i(t,e,l):("[object Boolean]"===p||"[object Number]"===p||"[object String]"===p)&&a(t,e,l)}),_=h?h(v):function(t,e,r,n,o,i,a){return v(t,e,a)};return function(t){var e=t.circular,r=t.comparator,n=t.createState,o=t.equals,i=t.strict;if(n)return function(t,a){var u=n(),c=u.cache;return r(t,a,{cache:void 0===c?e?new WeakMap:void 0:c,equals:o,meta:u.meta,strict:i})};if(e)return function(t,e){return r(t,e,{cache:new WeakMap,equals:o,meta:void 0,strict:i})};var a={cache:void 0,equals:o,meta:void 0,strict:i};return function(t,e){return r(t,e,a)}}({circular:void 0!==p&&p,comparator:v,createState:d,equals:_,strict:void 0!==y&&y})}function C(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=-1;requestAnimationFrame(function n(o){if(r<0&&(r=o),o-r>e)t(o),r=-1;else{var i;i=n,"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame(i)}})}function I(t){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function D(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=0&&t<=1}),"[configBezier]: arguments should be x1, y1, x2, y2 of [0, 1] instead received %s",n);var p=V(i,u),h=V(a,c),d=(t=i,e=u,function(r){var n;return H([].concat(function(t){if(Array.isArray(t))return q(t)}(n=X(t,e).map(function(t,e){return t*e}).slice(1))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||W(n)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[0]),r)}),y=function(t){for(var e=t>1?1:t,r=e,n=0;n<8;++n){var o,i=p(r)-e,a=d(r);if(1e-4>Math.abs(i-e)||a<1e-4)break;r=(o=r-i/a)>1?1:o<0?0:o}return h(r)};return y.isStepper=!1,y},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.stiff,r=void 0===e?100:e,n=t.damping,o=void 0===n?8:n,i=t.dt,a=void 0===i?17:i,u=function(t,e,n){var i=n+(-(t-e)*r-n*o)*a/1e3,u=n*a/1e3+t;return 1e-4>Math.abs(u-e)&&1e-4>Math.abs(i)?[e,0]:[u,i]};return u.isStepper=!0,u.dt=a,u},K=function(){for(var t=arguments.length,e=Array(t),r=0;rt.length)&&(e=t.length);for(var r=0,n=Array(e);rt.length)&&(e=t.length);for(var r=0,n=Array(e);r0?r[o-1]:n,p=l||Object.keys(c);if("function"==typeof u||"spring"===u)return[].concat(ts(t),[e.runJSAnimation.bind(e,{from:f.style,to:c,duration:i,easing:u}),i]);var h=$(p,i,u),d=th(th(th({},f.style),c),{},{transition:h});return[].concat(ts(t),[d,i,s]).filter(z)},[a,Math.max(void 0===u?0:u,n)])),[t.onAnimationEnd]))}},{key:"runAnimation",value:function(t){if(!this.manager){var e,r,n;this.manager=(e=function(){return null},r=!1,n=function t(n){if(!r){if(Array.isArray(n)){if(!n.length)return;var o=function(t){if(Array.isArray(t))return t}(n)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(n)||function(t,e){if(t){if("string"==typeof t)return D(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return D(t,void 0)}}(n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),i=o[0],a=o.slice(1);if("number"==typeof i){C(t.bind(null,a),i);return}t(i),C(t.bind(null,a));return}"object"===I(n)&&e(n),"function"==typeof n&&n()}},{stop:function(){r=!0},start:function(t){r=!1,n(t)},subscribe:function(t){return e=t,function(){e=function(){return null}}}})}var o=t.begin,i=t.duration,a=t.attributeName,u=t.to,c=t.easing,l=t.onAnimationStart,s=t.onAnimationEnd,f=t.steps,p=t.children,h=this.manager;if(this.unSubscribe=h.subscribe(this.handleStyleChange),"function"==typeof c||"function"==typeof p||"spring"===c){this.runJSAnimation(t);return}if(f.length>1){this.runStepAnimation(t);return}var d=a?td({},a,u):u,y=$(Object.keys(d),i,c);h.start([l,o,th(th({},d),{},{transition:y}),i,s])}},{key:"render",value:function(){var t=this.props,e=t.children,r=(t.begin,t.duration),o=(t.attributeName,t.easing,t.isActive),i=(t.steps,t.from,t.to,t.canBegin,t.onAnimationEnd,t.shouldReAnimate,t.onAnimationReStart,function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,tl)),a=n.Children.count(e),u=this.state.style;if("function"==typeof e)return e(u);if(!o||0===a||r<=0)return e;var c=function(t){var e=t.props,r=e.style,o=e.className;return(0,n.cloneElement)(t,th(th({},i),{},{style:th(th({},void 0===r?{}:r),u),className:o}))};return 1===a?c(n.Children.only(e)):n.createElement("div",null,n.Children.map(e,function(t){return c(t)}))}}],function(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=t.steps,r=t.duration;return e&&e.length?e.reduce(function(t,e){return t+(Number.isFinite(e.duration)&&e.duration>0?e.duration:0)},0):Number.isFinite(r)?r:0},tK=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&tq(t,e)}(i,t);var e,r,o=(e=function(){if("undefined"==typeof Reflect||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}(),function(){var t,r=tH(i);return t=e?Reflect.construct(r,arguments,tH(this).constructor):r.apply(this,arguments),function(t,e){if(e&&("object"===tU(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return tX(t)}(this,t)});function i(){var t;return!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,i),tV(tX(t=o.call(this)),"handleEnter",function(e,r){var n=t.props,o=n.appearOptions,i=n.enterOptions;t.handleStyleActive(r?o:i)}),tV(tX(t),"handleExit",function(){var e=t.props.leaveOptions;t.handleStyleActive(e)}),t.state={isActive:!1},t}return r=[{key:"handleStyleActive",value:function(t){if(t){var e=t.onAnimationEnd?function(){t.onAnimationEnd()}:null;this.setState(tW(tW({},t),{},{onAnimationEnd:e,isActive:!0}))}}},{key:"parseTimeout",value:function(){var t=this.props,e=t.appearOptions,r=t.enterOptions,n=t.leaveOptions;return tY(e)+tY(r)+tY(n)}},{key:"render",value:function(){var t=this,e=this.props,r=e.children,o=(e.appearOptions,e.enterOptions,e.leaveOptions,function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,tz));return n.createElement(tR,t$({},o,{onEnter:this.handleEnter,onExit:this.handleExit,timeout:this.parseTimeout()}),function(){return n.createElement(tx,t.state,n.Children.only(r))})}}],function(t,e){for(var r=0;r{"use strict";r.d(e,{y:()=>U});var n=r(20107),o=r(64901),i=r(54584),a=r(6440),u=r.n(a),c=r(87107),l=r.n(c),s=r(37819),f=r(73678),p=function(t){return null};p.displayName="Cell";var h=r(58864),d=r(89952),y=r(61211),v=r(95392),b=r(95492),m=r(35956),g=r(45082),x=r(82372),O=["x","y"];function w(t){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function j(){return(j=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,O),i=parseInt("".concat(r),10),a=parseInt("".concat(n),10),u=parseInt("".concat(e.height||o.height),10),c=parseInt("".concat(e.width||o.width),10);return P(P(P(P(P({},e),o),i?{x:i}:{}),a?{y:a}:{}),{},{height:u,width:c,name:e.name,radius:e.radius})}function A(t){return n.createElement(x.yp,j({shapeType:"rectangle",propTransformer:E,activeClassName:"recharts-active-bar"},t))}var k=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return function(r,n){if("number"==typeof t)return t;var o="number"==typeof r;return o?t(r,n):(o||(0,g.A)(!1),e)}},M=["value","background"];function _(t){return(_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function T(){return(T=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,M);if(!u)return null;var l=I(I(I(I(I({},c),{},{fill:"#eee"},u),a),(0,m.XC)(t.props,e,r)),{},{onAnimationStart:t.handleAnimationStart,onAnimationEnd:t.handleAnimationEnd,dataKey:o,index:r,className:"recharts-bar-background-rectangle"});return n.createElement(A,T({key:"background-bar-".concat(r),option:t.props.background,isActive:r===i},l))})}},{key:"renderErrorBar",value:function(t,e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var r=this.props,o=r.data,i=r.xAxis,a=r.yAxis,u=r.layout,c=r.children,l=(0,y.aS)(c,f.u);if(!l)return null;var p="vertical"===u?o[0].height/2:o[0].width/2,h=function(t,e){var r=Array.isArray(t.value)?t.value[1]:t.value;return{x:t.x,y:t.y,value:r,errorVal:(0,b.kr)(t,e)}};return n.createElement(s.W,{clipPath:t?"url(#clipPath-".concat(e,")"):null},l.map(function(t){return n.cloneElement(t,{key:"error-bar-".concat(e,"-").concat(t.props.dataKey),data:o,xAxis:i,yAxis:a,layout:u,offset:p,dataPointFormatter:h})}))}},{key:"render",value:function(){var t=this.props,e=t.hide,r=t.data,i=t.className,a=t.xAxis,u=t.yAxis,c=t.left,f=t.top,p=t.width,d=t.height,y=t.isAnimationActive,v=t.background,b=t.id;if(e||!r||!r.length)return null;var m=this.state.isAnimationFinished,g=(0,o.A)("recharts-bar",i),x=a&&a.allowDataOverflow,O=u&&u.allowDataOverflow,w=x||O,j=l()(b)?this.id:b;return n.createElement(s.W,{className:g},x||O?n.createElement("defs",null,n.createElement("clipPath",{id:"clipPath-".concat(j)},n.createElement("rect",{x:x?c:c-p/2,y:O?f:f-d/2,width:x?p:2*p,height:O?d:2*d}))):null,n.createElement(s.W,{className:"recharts-bar-rectangles",clipPath:w?"url(#clipPath-".concat(j,")"):null},v?this.renderBackground():null,this.renderRectangles()),this.renderErrorBar(w,j),(!y||m)&&h.Z.renderCallByParent(this.props,r))}}],r=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curData:t.data,prevData:e.curData}:t.data!==e.curData?{curData:t.data}:null}}],e&&D(a.prototype,e),r&&D(a,r),Object.defineProperty(a,"prototype",{writable:!1}),a}(n.PureComponent);L(U,"displayName","Bar"),L(U,"defaultProps",{xAxisId:0,yAxisId:0,legendType:"rect",minPointSize:0,hide:!1,data:[],layout:"vertical",activeBar:!1,isAnimationActive:!v.m.isSsr,animationBegin:0,animationDuration:400,animationEasing:"ease"}),L(U,"getComposedData",function(t){var e=t.props,r=t.item,n=t.barPosition,o=t.bandSize,i=t.xAxis,a=t.yAxis,u=t.xAxisTicks,c=t.yAxisTicks,l=t.stackedData,s=t.dataStartIndex,f=t.displayedData,h=t.offset,v=(0,b.xi)(n,r);if(!v)return null;var m=e.layout,g=r.type.defaultProps,x=void 0!==g?I(I({},g),r.props):r.props,O=x.dataKey,w=x.children,j=x.minPointSize,S="horizontal"===m?a:i,P=l?S.scale.domain():null,E=(0,b.DW)({numericAxis:S}),A=(0,y.aS)(w,p),M=f.map(function(t,e){l?f=(0,b._f)(l[s+e],P):Array.isArray(f=(0,b.kr)(t,O))||(f=[E,f]);var n=k(j,U.defaultProps.minPointSize)(f[1],e);if("horizontal"===m){var f,p,h,y,g,x,w,S=[a.scale(f[0]),a.scale(f[1])],M=S[0],_=S[1];p=(0,b.y2)({axis:i,ticks:u,bandSize:o,offset:v.offset,entry:t,index:e}),h=null!==(w=null!=_?_:M)&&void 0!==w?w:void 0,y=v.size;var T=M-_;if(g=Number.isNaN(T)?0:T,x={x:p,y:a.y,width:y,height:a.height},Math.abs(n)>0&&Math.abs(g)0&&Math.abs(y){"use strict";r.d(e,{u:()=>T});var n=r(20107),o=r(14632),i=r.n(o),a=r(32292),u=r.n(a),c=r(64901),l=r(45707),s=r(37819),f=r(77431),p=r(94348),h=r(89952),d=r(35956),y=r(61211),v=r(62882),b=["viewBox"],m=["viewBox"],g=["ticks"];function x(t){return(x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function O(){return(O=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function P(t,e){for(var r=0;r0?this.props:d)),o<=0||a<=0||!y||!y.length)?null:n.createElement(s.W,{className:(0,c.A)("recharts-cartesian-axis",l),ref:function(e){t.layerReference=e}},r&&this.renderAxisLine(),this.renderTicks(y,this.state.fontSize,this.state.letterSpacing),p.J.renderCallByParent(this.props))}}],r=[{key:"renderTickItem",value:function(t,e,r){return n.isValidElement(t)?n.cloneElement(t,e):i()(t)?t(e):n.createElement(f.E,O({},e,{className:"recharts-cartesian-axis-tick-value"}),r)}}],e&&P(o.prototype,e),r&&P(o,r),Object.defineProperty(o,"prototype",{writable:!1}),o}(n.Component);M(T,"displayName","CartesianAxis"),M(T,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"})},73678:(t,e,r)=>{"use strict";r.d(e,{u:()=>v});var n=r(20107),o=r(45082),i=r(37819),a=r(61211),u=["offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis"];function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){return(l=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,u),b=(0,a.J9)(v,!1);"x"===this.props.direction&&"number"!==d.type&&(0,o.A)(!1);var m=p.map(function(t){var o,a,u=h(t,f),p=u.x,v=u.y,m=u.value,g=u.errorVal;if(!g)return null;var x=[];if(Array.isArray(g)){var O=function(t){if(Array.isArray(t))return t}(g)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{for(i=(r=r.call(t)).next;!(c=(n=i.call(r)).done)&&(u.push(n.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(g,2)||function(t,e){if(t){if("string"==typeof t)return s(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(t,2)}}(g,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();o=O[0],a=O[1]}else o=a=g;if("vertical"===r){var w=d.scale,j=v+e,S=j+c,P=j-c,E=w(m-o),A=w(m+a);x.push({x1:A,y1:S,x2:A,y2:P}),x.push({x1:E,y1:j,x2:A,y2:j}),x.push({x1:E,y1:S,x2:E,y2:P})}else if("horizontal"===r){var k=y.scale,M=p+e,_=M-c,T=M+c,C=k(m-o),I=k(m+a);x.push({x1:_,y1:I,x2:T,y2:I}),x.push({x1:M,y1:C,x2:M,y2:I}),x.push({x1:_,y1:C,x2:T,y2:C})}return n.createElement(i.W,l({className:"recharts-errorBar",key:"bar-".concat(x.map(function(t){return"".concat(t.x1,"-").concat(t.x2,"-").concat(t.y1,"-").concat(t.y2)}))},b),x.map(function(t){return n.createElement("line",l({},t,{key:"line-".concat(t.x1,"-").concat(t.x2,"-").concat(t.y1,"-").concat(t.y2)}))}))});return n.createElement(i.W,{className:"recharts-errorBars"},m)}}],function(t,e){for(var r=0;r{"use strict";r.d(e,{W:()=>v});var n=r(20107),o=r(64901),i=r(25161),a=r(67064),u=r(95492);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(l=function(){return!!t})()}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function p(t,e,r){return(e=h(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function h(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=c(n))return n;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==c(e)?e:e+""}function d(){return(d=Object.assign?Object.assign.bind():function(t){for(var e=1;e{"use strict";r.d(e,{h:()=>v});var n=r(20107),o=r(64901),i=r(25161),a=r(67064),u=r(95492);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(l=function(){return!!t})()}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function p(t,e,r){return(e=h(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function h(t){var e=function(t,e){if("object"!=c(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=c(n))return n;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==c(e)?e:e+""}function d(){return(d=Object.assign?Object.assign.bind():function(t){for(var e=1;e{"use strict";r.d(e,{f:()=>d});var n=r(14632),o=r.n(n),i=r(89952),a=r(56594),u=r(95392),c=r(98456);function l(t,e,r){if(e<1)return[];if(1===e&&void 0===r)return t;for(var n=[],o=0;ot*o)return!1;var i=r();return t*(e-t*i/2-n)>=0&&t*(e+t*i/2-o)<=0}function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function h(t){for(var e=1;e=2?(0,i.sA)(b[1].coordinate-b[0].coordinate):1,M=(n="width"===P,f=m.x,p=m.y,d=m.width,y=m.height,1===k?{start:n?f:p,end:n?f+d:p+y}:{start:n?f+d:p+y,end:n?f:p});return"equidistantPreserveStart"===O?function(t,e,r,n,o){for(var i,a=(n||[]).slice(),u=e.start,c=e.end,f=0,p=1,h=u;p<=a.length;)if(i=function(){var e,i=null==n?void 0:n[f];if(void 0===i)return{v:l(n,p)};var a=f,d=function(){return void 0===e&&(e=r(i,a)),e},y=i.coordinate,v=0===f||s(t,y,d,h,c);v||(f=0,h=u,p+=1),v&&(h=y+t*(d()/2+o),f+=p)}())return i.v;return[]}(k,M,A,b,g):("preserveStart"===O||"preserveStartEnd"===O?function(t,e,r,n,o,i){var a=(n||[]).slice(),u=a.length,c=e.start,l=e.end;if(i){var f=n[u-1],p=r(f,u-1),d=t*(f.coordinate+t*p/2-l);a[u-1]=f=h(h({},f),{},{tickCoord:d>0?f.coordinate-d*t:f.coordinate}),s(t,f.tickCoord,function(){return p},c,l)&&(l=f.tickCoord-t*(p/2+o),a[u-1]=h(h({},f),{},{isShow:!0}))}for(var y=i?u-1:u,v=function(e){var n,i=a[e],u=function(){return void 0===n&&(n=r(i,e)),n};if(0===e){var f=t*(i.coordinate-t*u()/2-c);a[e]=i=h(h({},i),{},{tickCoord:f<0?i.coordinate-f*t:i.coordinate})}else a[e]=i=h(h({},i),{},{tickCoord:i.coordinate});s(t,i.tickCoord,u,c,l)&&(c=i.tickCoord+t*(u()/2+o),a[e]=h(h({},i),{},{isShow:!0}))},b=0;b0?l.coordinate-p*t:l.coordinate})}else i[e]=l=h(h({},l),{},{tickCoord:l.coordinate});s(t,l.tickCoord,f,u,c)&&(c=l.tickCoord-t*(f()/2+o),i[e]=h(h({},l),{},{isShow:!0}))},f=a-1;f>=0;f--)l(f);return i}(k,M,A,b,g)).filter(function(t){return t.isShow})}},90805:(t,e,r)=>{"use strict";r.d(e,{gu:()=>eC});var n=r(20107),o=r(87107),i=r.n(o),a=r(14632),u=r.n(a),c=r(4009),l=r.n(c),s=r(32292),f=r.n(s),p=r(67501),h=r.n(p),d=r(54636),y=r.n(d),v=r(64901),b=r(45082),m=r(6701),g=r(37819),x=r(80982),O=r(58736),w=r(42555),j=r(2721),S=r(61211),P=r(63949),E=r(77431),A=r(95492),k=r(89952);function M(t){return(M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function T(t){for(var e=1;e0&&e.handleDrag(t.changedTouches[0])}),W(e,"handleDragEnd",function(){e.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var t=e.props,r=t.endIndex,n=t.onDragEnd,o=t.startIndex;null==n||n({endIndex:r,startIndex:o})}),e.detachDragEndListener()}),W(e,"handleLeaveWrapper",function(){(e.state.isTravellerMoving||e.state.isSlideMoving)&&(e.leaveTimer=window.setTimeout(e.handleDragEnd,e.props.leaveTimeOut))}),W(e,"handleEnterSlideOrTraveller",function(){e.setState({isTextActive:!0})}),W(e,"handleLeaveSlideOrTraveller",function(){e.setState({isTextActive:!1})}),W(e,"handleSlideDragStart",function(t){var r=H(t)?t.changedTouches[0]:t;e.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:r.pageX}),e.attachDragEndListener()}),e.travellerDragStartHandlers={startX:e.handleTravellerDragStart.bind(e,"startX"),endX:e.handleTravellerDragStart.bind(e,"endX")},e.state={},e}return!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&F(t,e)}(o,t),e=[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(t){var e=t.startX,r=t.endX,n=this.state.scaleValues,i=this.props,a=i.gap,u=i.data.length-1,c=Math.min(e,r),l=Math.max(e,r),s=o.getIndexInRange(n,c),f=o.getIndexInRange(n,l);return{startIndex:s-s%a,endIndex:f===u?u:f-f%a}}},{key:"getTextOfTick",value:function(t){var e=this.props,r=e.data,n=e.tickFormatter,o=e.dataKey,i=(0,A.kr)(r[t],o,t);return u()(n)?n(i,t):i}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(t){var e=this.state,r=e.slideMoveStartX,n=e.startX,o=e.endX,i=this.props,a=i.x,u=i.width,c=i.travellerWidth,l=i.startIndex,s=i.endIndex,f=i.onChange,p=t.pageX-r;p>0?p=Math.min(p,a+u-c-o,a+u-c-n):p<0&&(p=Math.max(p,a-n,a-o));var h=this.getIndex({startX:n+p,endX:o+p});(h.startIndex!==l||h.endIndex!==s)&&f&&f(h),this.setState({startX:n+p,endX:o+p,slideMoveStartX:t.pageX})}},{key:"handleTravellerDragStart",value:function(t,e){var r=H(e)?e.changedTouches[0]:e;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:t,brushMoveStartX:r.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(t){var e=this.state,r=e.brushMoveStartX,n=e.movingTravellerId,o=e.endX,i=e.startX,a=this.state[n],u=this.props,c=u.x,l=u.width,s=u.travellerWidth,f=u.onChange,p=u.gap,h=u.data,d={startX:this.state.startX,endX:this.state.endX},y=t.pageX-r;y>0?y=Math.min(y,c+l-s-a):y<0&&(y=Math.max(y,c-a)),d[n]=a+y;var v=this.getIndex(d),b=v.startIndex,m=v.endIndex,g=function(){var t=h.length-1;return"startX"===n&&(o>i?b%p==0:m%p==0)||oi?m%p==0:b%p==0)||o>i&&m===t};this.setState(W(W({},n,a+y),"brushMoveStartX",t.pageX),function(){f&&g()&&f(v)})}},{key:"handleTravellerMoveKeyboard",value:function(t,e){var r=this,n=this.state,o=n.scaleValues,i=n.startX,a=n.endX,u=this.state[e],c=o.indexOf(u);if(-1!==c){var l=c+t;if(-1!==l&&!(l>=o.length)){var s=o[l];"startX"===e&&s>=a||"endX"===e&&s<=i||this.setState(W({},e,s),function(){r.props.onChange(r.getIndex({startX:r.state.startX,endX:r.state.endX}))})}}}},{key:"renderBackground",value:function(){var t=this.props,e=t.x,r=t.y,o=t.width,i=t.height,a=t.fill,u=t.stroke;return n.createElement("rect",{stroke:u,fill:a,x:e,y:r,width:o,height:i})}},{key:"renderPanorama",value:function(){var t=this.props,e=t.x,r=t.y,o=t.width,i=t.height,a=t.data,u=t.children,c=t.padding,l=n.Children.only(u);return l?n.cloneElement(l,{x:e,y:r,width:o,height:i,margin:c,compact:!0,data:a}):null}},{key:"renderTravellerLayer",value:function(t,e){var r,i,a=this,u=this.props,c=u.y,l=u.travellerWidth,s=u.height,f=u.traveller,p=u.ariaLabel,h=u.data,d=u.startIndex,y=u.endIndex,v=Math.max(t,this.props.x),b=L(L({},(0,S.J9)(this.props,!1)),{},{x:v,y:c,width:l,height:s}),m=p||"Min value: ".concat(null===(r=h[d])||void 0===r?void 0:r.name,", Max value: ").concat(null===(i=h[y])||void 0===i?void 0:i.name);return n.createElement(g.W,{tabIndex:0,role:"slider","aria-label":m,"aria-valuenow":t,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[e],onTouchStart:this.travellerDragStartHandlers[e],onKeyDown:function(t){["ArrowLeft","ArrowRight"].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),a.handleTravellerMoveKeyboard("ArrowRight"===t.key?1:-1,e))},onFocus:function(){a.setState({isTravellerFocused:!0})},onBlur:function(){a.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},o.renderTraveller(f,b))}},{key:"renderSlide",value:function(t,e){var r=this.props,o=r.y,i=r.height,a=r.stroke,u=r.travellerWidth,c=Math.min(t,e)+u,l=Math.max(Math.abs(e-t)-u,0);return n.createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:a,fillOpacity:.2,x:c,y:o,width:l,height:i})}},{key:"renderText",value:function(){var t=this.props,e=t.startIndex,r=t.endIndex,o=t.y,i=t.height,a=t.travellerWidth,u=t.stroke,c=this.state,l=c.startX,s=c.endX,f={pointerEvents:"none",fill:u};return n.createElement(g.W,{className:"recharts-brush-texts"},n.createElement(E.E,B({textAnchor:"end",verticalAnchor:"middle",x:Math.min(l,s)-5,y:o+i/2},f),this.getTextOfTick(e)),n.createElement(E.E,B({textAnchor:"start",verticalAnchor:"middle",x:Math.max(l,s)+a+5,y:o+i/2},f),this.getTextOfTick(r)))}},{key:"render",value:function(){var t=this.props,e=t.data,r=t.className,o=t.children,i=t.x,a=t.y,u=t.width,c=t.height,l=t.alwaysShowText,s=this.state,f=s.startX,p=s.endX,h=s.isTextActive,d=s.isSlideMoving,y=s.isTravellerMoving,b=s.isTravellerFocused;if(!e||!e.length||!(0,k.Et)(i)||!(0,k.Et)(a)||!(0,k.Et)(u)||!(0,k.Et)(c)||u<=0||c<=0)return null;var m=(0,v.A)("recharts-brush",r),x=1===n.Children.count(o),O=D("userSelect","none");return n.createElement(g.W,{className:m,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:O},this.renderBackground(),x&&this.renderPanorama(),this.renderSlide(f,p),this.renderTravellerLayer(f,"startX"),this.renderTravellerLayer(p,"endX"),(h||d||y||b||l)&&this.renderText())}}],r=[{key:"renderDefaultTraveller",value:function(t){var e=t.x,r=t.y,o=t.width,i=t.height,a=t.stroke,u=Math.floor(r+i/2)-1;return n.createElement(n.Fragment,null,n.createElement("rect",{x:e,y:r,width:o,height:i,fill:a,stroke:"none"}),n.createElement("line",{x1:e+1,y1:u,x2:e+o-1,y2:u,fill:"none",stroke:"#fff"}),n.createElement("line",{x1:e+1,y1:u+2,x2:e+o-1,y2:u+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(t,e){return n.isValidElement(t)?n.cloneElement(t,e):u()(t)?t(e):o.renderDefaultTraveller(e)}},{key:"getDerivedStateFromProps",value:function(t,e){var r=t.data,n=t.width,o=t.x,i=t.travellerWidth,a=t.updateId,u=t.startIndex,c=t.endIndex;if(r!==e.prevData||a!==e.prevUpdateId)return L({prevData:r,prevTravellerWidth:i,prevUpdateId:a,prevX:o,prevWidth:n},r&&r.length?X({data:r,width:n,x:o,travellerWidth:i,startIndex:u,endIndex:c}):{scale:null,scaleValues:null});if(e.scale&&(n!==e.prevWidth||o!==e.prevX||i!==e.prevTravellerWidth)){e.scale.range([o,o+n-i]);var l=e.scale.domain().map(function(t){return e.scale(t)});return{prevData:r,prevTravellerWidth:i,prevUpdateId:a,prevX:o,prevWidth:n,startX:e.scale(t.startIndex),endX:e.scale(t.endIndex),scaleValues:l}}return null}},{key:"getIndexInRange",value:function(t,e){for(var r=t.length,n=0,o=r-1;o-n>1;){var i=Math.floor((n+o)/2);t[i]>e?o=i:n=i}return e>=t[o]?o:n}}],e&&z(o.prototype,e),r&&z(o,r),Object.defineProperty(o,"prototype",{writable:!1}),o}(n.PureComponent);W(V,"displayName","Brush"),W(V,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var G=r(56594),Y=r(20618),K=r(94348),J=function(t,e){var r=t.alwaysShow,n=t.ifOverflow;return r&&(n="extendDomain"),n===e},Z=r(98456),Q=r(42228);function tt(){return(tt=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);rt.length)&&(e=t.length);for(var r=0,n=Array(e);r=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,t0));return(0,k.Et)(r)&&(0,k.Et)(i)&&(0,k.Et)(f)&&(0,k.Et)(h)&&(0,k.Et)(u)&&(0,k.Et)(l)?n.createElement("path",t1({},(0,S.J9)(y,!0),{className:(0,v.A)("recharts-cross",d),d:"M".concat(r,",").concat(u,"v").concat(h,"M").concat(l,",").concat(i,"h").concat(f)})):null};function t3(t){var e=t.cx,r=t.cy,n=t.radius,o=t.startAngle,i=t.endAngle;return{points:[(0,t$.IZ)(e,r,n,o),(0,t$.IZ)(e,r,n,i)],cx:e,cy:r,radius:n,startAngle:o,endAngle:i}}var t6=r(3730);function t4(t){return(t4="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function t8(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function t9(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function ea(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(ea=function(){return!!t})()}function eu(t){return(eu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function ec(t,e){return(ec=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function el(t){return function(t){if(Array.isArray(t))return ef(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||es(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function es(t,e){if(t){if("string"==typeof t)return ef(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ef(t,e)}}function ef(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0?i:t&&t.length&&(0,k.Et)(n)&&(0,k.Et)(o)?t.slice(n,o+1):[]};function ew(t){return"number"===t?[0,"auto"]:void 0}var ej=function(t,e,r,n){var o=t.graphicalItems,i=t.tooltipAxis,a=eO(e,t);return r<0||!o||!o.length||r>=a.length?null:o.reduce(function(o,u){var c,l,s=null!==(c=u.props.data)&&void 0!==c?c:e;if(s&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=r&&(s=s.slice(t.dataStartIndex,t.dataEndIndex+1)),i.dataKey&&!i.allowDuplicatedCategory){var f=void 0===s?a:s;l=(0,k.eP)(f,i.dataKey,n)}else l=s&&s[r]||a[r];return l?[].concat(el(o),[(0,A.zb)(u,l)]):o},[])},eS=function(t,e,r,n){var o=n||{x:t.chartX,y:t.chartY},i="horizontal"===r?o.x:"vertical"===r?o.y:"centric"===r?o.angle:o.radius,a=t.orderedTooltipTicks,u=t.tooltipAxis,c=t.tooltipTicks,l=(0,A.gH)(i,a,c,u);if(l>=0&&c){var s=c[l]&&c[l].value,f=ej(t,e,l,s),p=ex(r,a,l,o);return{activeTooltipIndex:l,activeLabel:s,activePayload:f,activeCoordinate:p}}return null},eP=function(t,e){var r=e.axes,n=e.graphicalItems,o=e.axisType,a=e.axisIdKey,u=e.stackGroups,c=e.dataStartIndex,s=e.dataEndIndex,f=t.layout,p=t.children,h=t.stackOffset,d=(0,A._L)(f,o);return r.reduce(function(e,r){var y=void 0!==r.type.defaultProps?eh(eh({},r.type.defaultProps),r.props):r.props,v=y.type,b=y.dataKey,m=y.allowDataOverflow,g=y.allowDuplicatedCategory,x=y.scale,O=y.ticks,w=y.includeHidden,j=y[a];if(e[j])return e;var S=eO(t.data,{graphicalItems:n.filter(function(t){var e;return(a in t.props?t.props[a]:null===(e=t.type.defaultProps)||void 0===e?void 0:e[a])===j}),dataStartIndex:c,dataEndIndex:s}),P=S.length;(function(t,e,r){if("number"===r&&!0===e&&Array.isArray(t)){var n=null==t?void 0:t[0],o=null==t?void 0:t[1];if(n&&o&&(0,k.Et)(n)&&(0,k.Et)(o))return!0}return!1})(y.domain,m,v)&&(_=(0,A.AQ)(y.domain,null,m),d&&("number"===v||"auto"!==x)&&(C=(0,A.Ay)(S,b,"category")));var E=ew(v);if(!_||0===_.length){var M,_,T,C,I,D=null!==(I=y.domain)&&void 0!==I?I:E;if(b){if(_=(0,A.Ay)(S,b,v),"category"===v&&d){var N=(0,k.CG)(_);g&&N?(T=_,_=l()(0,P)):g||(_=(0,A.KC)(D,_,r).reduce(function(t,e){return t.indexOf(e)>=0?t:[].concat(el(t),[e])},[]))}else if("category"===v)_=g?_.filter(function(t){return""!==t&&!i()(t)}):(0,A.KC)(D,_,r).reduce(function(t,e){return t.indexOf(e)>=0||""===e||i()(e)?t:[].concat(el(t),[e])},[]);else if("number"===v){var B=(0,A.A1)(S,n.filter(function(t){var e,r,n=a in t.props?t.props[a]:null===(e=t.type.defaultProps)||void 0===e?void 0:e[a],o="hide"in t.props?t.props.hide:null===(r=t.type.defaultProps)||void 0===r?void 0:r.hide;return n===j&&(w||!o)}),b,o,f);B&&(_=B)}d&&("number"===v||"auto"!==x)&&(C=(0,A.Ay)(S,b,"category"))}else _=d?l()(0,P):u&&u[j]&&u[j].hasStack&&"number"===v?"expand"===h?[0,1]:(0,A.Mk)(u[j].stackGroups,c,s):(0,A.vf)(S,n.filter(function(t){var e=a in t.props?t.props[a]:t.type.defaultProps[a],r="hide"in t.props?t.props.hide:t.type.defaultProps.hide;return e===j&&(w||!r)}),v,f,!0);"number"===v?(_=tU(p,_,j,o,O),D&&(_=(0,A.AQ)(D,_,m))):"category"===v&&D&&_.every(function(t){return D.indexOf(t)>=0})&&(_=D)}return eh(eh({},e),{},ed({},j,eh(eh({},y),{},{axisType:o,domain:_,categoricalDomain:C,duplicateDomain:T,originalDomain:null!==(M=y.domain)&&void 0!==M?M:E,isCategorical:d,layout:f})))},{})},eE=function(t,e){var r=e.graphicalItems,n=e.Axis,o=e.axisType,i=e.axisIdKey,a=e.stackGroups,u=e.dataStartIndex,c=e.dataEndIndex,s=t.layout,p=t.children,h=eO(t.data,{graphicalItems:r,dataStartIndex:u,dataEndIndex:c}),d=h.length,y=(0,A._L)(s,o),v=-1;return r.reduce(function(t,e){var b,m=(void 0!==e.type.defaultProps?eh(eh({},e.type.defaultProps),e.props):e.props)[i],g=ew("number");return t[m]?t:(v++,b=y?l()(0,d):a&&a[m]&&a[m].hasStack?tU(p,b=(0,A.Mk)(a[m].stackGroups,u,c),m,o):tU(p,b=(0,A.AQ)(g,(0,A.vf)(h,r.filter(function(t){var e,r,n=i in t.props?t.props[i]:null===(e=t.type.defaultProps)||void 0===e?void 0:e[i],o="hide"in t.props?t.props.hide:null===(r=t.type.defaultProps)||void 0===r?void 0:r.hide;return n===m&&!o}),"number",s),n.defaultProps.allowDataOverflow),m,o),eh(eh({},t),{},ed({},m,eh(eh({axisType:o},n.defaultProps),{},{hide:!0,orientation:f()(ev,"".concat(o,".").concat(v%2),null),domain:b,originalDomain:g,isCategorical:y,layout:s}))))},{})},eA=function(t,e){var r=e.axisType,n=void 0===r?"xAxis":r,o=e.AxisComp,i=e.graphicalItems,a=e.stackGroups,u=e.dataStartIndex,c=e.dataEndIndex,l=t.children,s="".concat(n,"Id"),f=(0,S.aS)(l,o),p={};return f&&f.length?p=eP(t,{axes:f,graphicalItems:i,axisType:n,axisIdKey:s,stackGroups:a,dataStartIndex:u,dataEndIndex:c}):i&&i.length&&(p=eE(t,{Axis:o,graphicalItems:i,axisType:n,axisIdKey:s,stackGroups:a,dataStartIndex:u,dataEndIndex:c})),p},ek=function(t){var e=(0,k.lX)(t),r=(0,A.Rh)(e,!1,!0);return{tooltipTicks:r,orderedTooltipTicks:h()(r,function(t){return t.coordinate}),tooltipAxis:e,tooltipAxisBandSize:(0,A.Hj)(e,r)}},eM=function(t){var e=t.children,r=t.defaultShowTooltip,n=(0,S.BU)(e,V),o=0,i=0;return t.data&&0!==t.data.length&&(i=t.data.length-1),n&&n.props&&(n.props.startIndex>=0&&(o=n.props.startIndex),n.props.endIndex>=0&&(i=n.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:o,dataEndIndex:i,activeTooltipIndex:-1,isTooltipActive:!!r}},e_=function(t){return"horizontal"===t?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:"vertical"===t?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:"centric"===t?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},eT=function(t,e){var r=t.props,n=t.graphicalItems,o=t.xAxisMap,i=void 0===o?{}:o,a=t.yAxisMap,u=void 0===a?{}:a,c=r.width,l=r.height,s=r.children,p=r.margin||{},h=(0,S.BU)(s,V),d=(0,S.BU)(s,O.s),y=Object.keys(u).reduce(function(t,e){var r=u[e],n=r.orientation;return r.mirror||r.hide?t:eh(eh({},t),{},ed({},n,t[n]+r.width))},{left:p.left||0,right:p.right||0}),v=Object.keys(i).reduce(function(t,e){var r=i[e],n=r.orientation;return r.mirror||r.hide?t:eh(eh({},t),{},ed({},n,f()(t,"".concat(n))+r.height))},{top:p.top||0,bottom:p.bottom||0}),b=eh(eh({},v),y),m=b.bottom;h&&(b.bottom+=h.props.height||V.defaultProps.height),d&&e&&(b=(0,A.s0)(b,n,r,e));var g=c-b.left-b.right,x=l-b.top-b.bottom;return eh(eh({brushBottom:m},b),{},{width:Math.max(g,0),height:Math.max(x,0)})},eC=function(t){var e=t.chartName,r=t.GraphicalChild,o=t.defaultTooltipEventType,a=void 0===o?"axis":o,c=t.validateTooltipEventTypes,l=void 0===c?["axis"]:c,s=t.axisComponents,p=t.legendContent,h=t.formatAxisMap,d=t.defaultProps,O=function(t,e){var r=e.graphicalItems,n=e.stackGroups,o=e.offset,a=e.updateId,u=e.dataStartIndex,c=e.dataEndIndex,l=t.barSize,f=t.layout,p=t.barGap,h=t.barCategoryGap,d=t.maxBarSize,y=e_(f),v=y.numericAxisName,m=y.cateAxisName,g=!!r&&!!r.length&&r.some(function(t){var e=(0,S.Mn)(t&&t.type);return e&&e.indexOf("Bar")>=0}),x=[];return r.forEach(function(r,y){var O=eO(t.data,{graphicalItems:[r],dataStartIndex:u,dataEndIndex:c}),w=void 0!==r.type.defaultProps?eh(eh({},r.type.defaultProps),r.props):r.props,j=w.dataKey,P=w.maxBarSize,E=w["".concat(v,"Id")],k=w["".concat(m,"Id")],M=s.reduce(function(t,r){var n=e["".concat(r.axisType,"Map")],o=w["".concat(r.axisType,"Id")];n&&n[o]||"zAxis"===r.axisType||(0,b.A)(!1);var i=n[o];return eh(eh({},t),{},ed(ed({},r.axisType,i),"".concat(r.axisType,"Ticks"),(0,A.Rh)(i)))},{}),_=M[m],T=M["".concat(m,"Ticks")],C=n&&n[E]&&n[E].hasStack&&(0,A.kA)(r,n[E].stackGroups),I=(0,S.Mn)(r.type).indexOf("Bar")>=0,D=(0,A.Hj)(_,T),N=[],B=g&&(0,A.tA)({barSize:l,stackGroups:n,totalSize:"xAxis"===m?M[m].width:"yAxis"===m?M[m].height:void 0});if(I){var R,L,z=i()(P)?d:P,U=null!==(R=null!==(L=(0,A.Hj)(_,T,!0))&&void 0!==L?L:z)&&void 0!==R?R:0;N=(0,A.BX)({barGap:p,barCategoryGap:h,bandSize:U!==D?U:D,sizeList:B[k],maxBarSize:z}),U!==D&&(N=N.map(function(t){return eh(eh({},t),{},{position:eh(eh({},t.position),{},{offset:t.position.offset-U/2})})}))}var $=r&&r.type&&r.type.getComposedData;$&&x.push({props:eh(eh({},$(eh(eh({},M),{},{displayedData:O,props:t,dataKey:j,item:r,bandSize:D,barPosition:N,offset:o,stackedData:C,layout:f,dataStartIndex:u,dataEndIndex:c}))),{},ed(ed(ed({key:r.key||"item-".concat(y)},v,M[v]),m,M[m]),"animationId",a)),childIndex:(0,S.AW)(r,t.children),item:r})}),x},P=function(t,n){var o=t.props,i=t.dataStartIndex,a=t.dataEndIndex,u=t.updateId;if(!(0,S.Me)({props:o}))return null;var c=o.children,l=o.layout,f=o.stackOffset,p=o.data,d=o.reverseStackOrder,y=e_(l),v=y.numericAxisName,b=y.cateAxisName,m=(0,S.aS)(c,r),g=(0,A.Mn)(p,m,"".concat(v,"Id"),"".concat(b,"Id"),f,d),x=s.reduce(function(t,e){var r="".concat(e.axisType,"Map");return eh(eh({},t),{},ed({},r,eA(o,eh(eh({},e),{},{graphicalItems:m,stackGroups:e.axisType===v&&g,dataStartIndex:i,dataEndIndex:a}))))},{}),w=eT(eh(eh({},x),{},{props:o,graphicalItems:m}),null==n?void 0:n.legendBBox);Object.keys(x).forEach(function(t){x[t]=h(o,x[t],w,t.replace("Map",""),e)});var j=ek(x["".concat(b,"Map")]),P=O(o,eh(eh({},x),{},{dataStartIndex:i,dataEndIndex:a,updateId:u,graphicalItems:m,stackGroups:g,offset:w}));return eh(eh({formattedGraphicalItems:P,graphicalItems:m,offset:w,stackGroups:g},j),x)},E=function(t){var r;function o(t){var r,a,c,l,s;return!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,o),l=o,s=[t],l=eu(l),ed(c=function(t,e){if(e&&("object"===er(e)||"function"==typeof e))return e;if(void 0!==e)throw TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,ea()?Reflect.construct(l,s||[],eu(this).constructor):l.apply(this,s)),"eventEmitterSymbol",Symbol("rechartsEventEmitter")),ed(c,"accessibilityManager",new tK),ed(c,"handleLegendBBoxUpdate",function(t){if(t){var e=c.state,r=e.dataStartIndex,n=e.dataEndIndex,o=e.updateId;c.setState(eh({legendBBox:t},P({props:c.props,dataStartIndex:r,dataEndIndex:n,updateId:o},eh(eh({},c.state),{},{legendBBox:t}))))}}),ed(c,"handleReceiveSyncEvent",function(t,e,r){c.props.syncId===t&&(r!==c.eventEmitterSymbol||"function"==typeof c.props.syncMethod)&&c.applySyncEvent(e)}),ed(c,"handleBrushChange",function(t){var e=t.startIndex,r=t.endIndex;if(e!==c.state.dataStartIndex||r!==c.state.dataEndIndex){var n=c.state.updateId;c.setState(function(){return eh({dataStartIndex:e,dataEndIndex:r},P({props:c.props,dataStartIndex:e,dataEndIndex:r,updateId:n},c.state))}),c.triggerSyncEvent({dataStartIndex:e,dataEndIndex:r})}}),ed(c,"handleMouseEnter",function(t){var e=c.getMouseInfo(t);if(e){var r=eh(eh({},e),{},{isTooltipActive:!0});c.setState(r),c.triggerSyncEvent(r);var n=c.props.onMouseEnter;u()(n)&&n(r,t)}}),ed(c,"triggeredAfterMouseMove",function(t){var e=c.getMouseInfo(t),r=e?eh(eh({},e),{},{isTooltipActive:!0}):{isTooltipActive:!1};c.setState(r),c.triggerSyncEvent(r);var n=c.props.onMouseMove;u()(n)&&n(r,t)}),ed(c,"handleItemMouseEnter",function(t){c.setState(function(){return{isTooltipActive:!0,activeItem:t,activePayload:t.tooltipPayload,activeCoordinate:t.tooltipPosition||{x:t.cx,y:t.cy}}})}),ed(c,"handleItemMouseLeave",function(){c.setState(function(){return{isTooltipActive:!1}})}),ed(c,"handleMouseMove",function(t){t.persist(),c.throttleTriggeredAfterMouseMove(t)}),ed(c,"handleMouseLeave",function(t){c.throttleTriggeredAfterMouseMove.cancel();var e={isTooltipActive:!1};c.setState(e),c.triggerSyncEvent(e);var r=c.props.onMouseLeave;u()(r)&&r(e,t)}),ed(c,"handleOuterEvent",function(t){var e,r=(0,S.X_)(t),n=f()(c.props,"".concat(r));r&&u()(n)&&n(null!==(e=/.*touch.*/i.test(r)?c.getMouseInfo(t.changedTouches[0]):c.getMouseInfo(t))&&void 0!==e?e:{},t)}),ed(c,"handleClick",function(t){var e=c.getMouseInfo(t);if(e){var r=eh(eh({},e),{},{isTooltipActive:!0});c.setState(r),c.triggerSyncEvent(r);var n=c.props.onClick;u()(n)&&n(r,t)}}),ed(c,"handleMouseDown",function(t){var e=c.props.onMouseDown;u()(e)&&e(c.getMouseInfo(t),t)}),ed(c,"handleMouseUp",function(t){var e=c.props.onMouseUp;u()(e)&&e(c.getMouseInfo(t),t)}),ed(c,"handleTouchMove",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&c.throttleTriggeredAfterMouseMove(t.changedTouches[0])}),ed(c,"handleTouchStart",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&c.handleMouseDown(t.changedTouches[0])}),ed(c,"handleTouchEnd",function(t){null!=t.changedTouches&&t.changedTouches.length>0&&c.handleMouseUp(t.changedTouches[0])}),ed(c,"triggerSyncEvent",function(t){void 0!==c.props.syncId&&tq.emit(tX,c.props.syncId,t,c.eventEmitterSymbol)}),ed(c,"applySyncEvent",function(t){var e=c.props,r=e.layout,n=e.syncMethod,o=c.state.updateId,i=t.dataStartIndex,a=t.dataEndIndex;if(void 0!==t.dataStartIndex||void 0!==t.dataEndIndex)c.setState(eh({dataStartIndex:i,dataEndIndex:a},P({props:c.props,dataStartIndex:i,dataEndIndex:a,updateId:o},c.state)));else if(void 0!==t.activeTooltipIndex){var u=t.chartX,l=t.chartY,s=t.activeTooltipIndex,f=c.state,p=f.offset,h=f.tooltipTicks;if(!p)return;if("function"==typeof n)s=n(h,t);else if("value"===n){s=-1;for(var d=0;d=0){if(s.dataKey&&!s.allowDuplicatedCategory){var T="function"==typeof s.dataKey?function(t){return"function"==typeof s.dataKey?s.dataKey(t.payload):null}:"payload.".concat(s.dataKey.toString());I=(0,k.eP)(v,T,p),D=b&&m&&(0,k.eP)(m,T,p)}else I=null==v?void 0:v[f],D=b&&m&&m[f];if(P||j){var C=void 0!==t.props.activeIndex?t.props.activeIndex:f;return[(0,n.cloneElement)(t,eh(eh(eh({},o.props),M),{},{activeIndex:C})),null,null]}if(!i()(I))return[_].concat(el(c.renderActivePoints({item:o,activePoint:I,basePoint:D,childIndex:f,isRange:b})))}else{var I,D,N,B=(null!==(N=c.getItemByXY(c.state.activeCoordinate))&&void 0!==N?N:{graphicalItem:_}).graphicalItem,R=B.item,L=void 0===R?t:R,z=B.childIndex,U=eh(eh(eh({},o.props),M),{},{activeIndex:z});return[(0,n.cloneElement)(L,U),null,null]}}return b?[_,null,null]:[_,null]}),ed(c,"renderCustomized",function(t,e,r){return(0,n.cloneElement)(t,eh(eh({key:"recharts-customized-".concat(r)},c.props),c.state))}),ed(c,"renderMap",{CartesianGrid:{handler:eg,once:!0},ReferenceArea:{handler:c.renderReferenceElement},ReferenceLine:{handler:eg},ReferenceDot:{handler:c.renderReferenceElement},XAxis:{handler:eg},YAxis:{handler:eg},Brush:{handler:c.renderBrush,once:!0},Bar:{handler:c.renderGraphicChild},Line:{handler:c.renderGraphicChild},Area:{handler:c.renderGraphicChild},Radar:{handler:c.renderGraphicChild},RadialBar:{handler:c.renderGraphicChild},Scatter:{handler:c.renderGraphicChild},Pie:{handler:c.renderGraphicChild},Funnel:{handler:c.renderGraphicChild},Tooltip:{handler:c.renderCursor,once:!0},PolarGrid:{handler:c.renderPolarGrid,once:!0},PolarAngleAxis:{handler:c.renderPolarAxis},PolarRadiusAxis:{handler:c.renderPolarAxis},Customized:{handler:c.renderCustomized}}),c.clipPathId="".concat(null!==(r=t.id)&&void 0!==r?r:(0,k.NF)("recharts"),"-clip"),c.throttleTriggeredAfterMouseMove=y()(c.triggeredAfterMouseMove,null!==(a=t.throttleDelay)&&void 0!==a?a:1e3/60),c.state={},c}return!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&ec(t,e)}(o,t),r=[{key:"componentDidMount",value:function(){var t,e;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:null!==(t=this.props.margin.left)&&void 0!==t?t:0,top:null!==(e=this.props.margin.top)&&void 0!==e?e:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var t=this.props,e=t.children,r=t.data,n=t.height,o=t.layout,i=(0,S.BU)(e,x.m);if(i){var a=i.props.defaultIndex;if("number"==typeof a&&!(a<0)&&!(a>this.state.tooltipTicks.length-1)){var u=this.state.tooltipTicks[a]&&this.state.tooltipTicks[a].value,c=ej(this.state,r,a,u),l=this.state.tooltipTicks[a].coordinate,s=(this.state.offset.top+n)/2,f="horizontal"===o?{x:l,y:s}:{y:l,x:s},p=this.state.formattedGraphicalItems.find(function(t){return"Scatter"===t.item.type.name});p&&(f=eh(eh({},f),p.props.points[a].tooltipPosition),c=p.props.points[a].tooltipPayload);var h={activeTooltipIndex:a,isTooltipActive:!0,activeLabel:u,activePayload:c,activeCoordinate:f};this.setState(h),this.renderCursor(i),this.accessibilityManager.setIndex(a)}}}},{key:"getSnapshotBeforeUpdate",value:function(t,e){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==e.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==t.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==t.margin){var r,n;this.accessibilityManager.setDetails({offset:{left:null!==(r=this.props.margin.left)&&void 0!==r?r:0,top:null!==(n=this.props.margin.top)&&void 0!==n?n:0}})}return null}},{key:"componentDidUpdate",value:function(t){(0,S.OV)([(0,S.BU)(t.children,x.m)],[(0,S.BU)(this.props.children,x.m)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var t=(0,S.BU)(this.props.children,x.m);if(t&&"boolean"==typeof t.props.shared){var e=t.props.shared?"axis":"item";return l.indexOf(e)>=0?e:a}return a}},{key:"getMouseInfo",value:function(t){if(!this.container)return null;var e=this.container,r=e.getBoundingClientRect(),n=(0,G.A3)(r),o={chartX:Math.round(t.pageX-n.left),chartY:Math.round(t.pageY-n.top)},i=r.width/e.offsetWidth||1,a=this.inRange(o.chartX,o.chartY,i);if(!a)return null;var u=this.state,c=u.xAxisMap,l=u.yAxisMap;if("axis"!==this.getTooltipEventType()&&c&&l){var s=(0,k.lX)(c).scale,f=(0,k.lX)(l).scale,p=s&&s.invert?s.invert(o.chartX):null,h=f&&f.invert?f.invert(o.chartY):null;return eh(eh({},o),{},{xValue:p,yValue:h})}var d=eS(this.state,this.props.data,this.props.layout,a);return d?eh(eh({},o),d):null}},{key:"inRange",value:function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=this.props.layout,o=t/r,i=e/r;if("horizontal"===n||"vertical"===n){var a=this.state.offset;return o>=a.left&&o<=a.left+a.width&&i>=a.top&&i<=a.top+a.height?{x:o,y:i}:null}var u=this.state,c=u.angleAxisMap,l=u.radiusAxisMap;if(c&&l){var s=(0,k.lX)(c);return(0,t$.yy)({x:o,y:i},s)}return null}},{key:"parseEventsOfWrapper",value:function(){var t=this.props.children,e=this.getTooltipEventType(),r=(0,S.BU)(t,x.m),n={};return r&&"axis"===e&&(n="click"===r.props.trigger?{onClick:this.handleClick}:{onMouseEnter:this.handleMouseEnter,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd}),eh(eh({},(0,tH._U)(this.props,this.handleOuterEvent)),n)}},{key:"addListener",value:function(){tq.on(tX,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){tq.removeListener(tX,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(t,e,r){for(var n=this.state.formattedGraphicalItems,o=0,i=n.length;o{"use strict";r.d(e,{J:()=>P});var n=r(20107),o=r(87107),i=r.n(o),a=r(14632),u=r.n(a),c=r(50683),l=r.n(c),s=r(64901),f=r(77431),p=r(61211),h=r(89952),d=r(92742);function y(t){return(y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var v=["offset"];function b(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0?1:-1;"insideStart"===u?(o=m+S*l,a=O):"insideEnd"===u?(o=g-S*l,a=!O):"end"===u&&(o=g+S*l,a=O),a=j<=0?a:!a;var P=(0,d.IZ)(p,y,w,o),E=(0,d.IZ)(p,y,w,o+(a?1:-1)*359),A="M".concat(P.x,",").concat(P.y,"\n A").concat(w,",").concat(w,",0,1,").concat(a?0:1,",\n ").concat(E.x,",").concat(E.y),k=i()(t.id)?(0,h.NF)("recharts-radial-line-"):t.id;return n.createElement("text",x({},r,{dominantBaseline:"central",className:(0,s.A)("recharts-radial-bar-label",f)}),n.createElement("defs",null,n.createElement("path",{id:k,d:A})),n.createElement("textPath",{xlinkHref:"#".concat(k)},e))},j=function(t){var e=t.viewBox,r=t.offset,n=t.position,o=e.cx,i=e.cy,a=e.innerRadius,u=e.outerRadius,c=(e.startAngle+e.endAngle)/2;if("outside"===n){var l=(0,d.IZ)(o,i,u+r,c),s=l.x;return{x:s,y:l.y,textAnchor:s>=o?"start":"end",verticalAnchor:"middle"}}if("center"===n)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"middle"};if("centerTop"===n)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"start"};if("centerBottom"===n)return{x:o,y:i,textAnchor:"middle",verticalAnchor:"end"};var f=(0,d.IZ)(o,i,(a+u)/2,c);return{x:f.x,y:f.y,textAnchor:"middle",verticalAnchor:"middle"}},S=function(t){var e=t.viewBox,r=t.parentViewBox,n=t.offset,o=t.position,i=e.x,a=e.y,u=e.width,c=e.height,s=c>=0?1:-1,f=s*n,p=s>0?"end":"start",d=s>0?"start":"end",y=u>=0?1:-1,v=y*n,b=y>0?"end":"start",m=y>0?"start":"end";if("top"===o)return g(g({},{x:i+u/2,y:a-s*n,textAnchor:"middle",verticalAnchor:p}),r?{height:Math.max(a-r.y,0),width:u}:{});if("bottom"===o)return g(g({},{x:i+u/2,y:a+c+f,textAnchor:"middle",verticalAnchor:d}),r?{height:Math.max(r.y+r.height-(a+c),0),width:u}:{});if("left"===o){var x={x:i-v,y:a+c/2,textAnchor:b,verticalAnchor:"middle"};return g(g({},x),r?{width:Math.max(x.x-r.x,0),height:c}:{})}if("right"===o){var O={x:i+u+v,y:a+c/2,textAnchor:m,verticalAnchor:"middle"};return g(g({},O),r?{width:Math.max(r.x+r.width-O.x,0),height:c}:{})}var w=r?{width:u,height:c}:{};return"insideLeft"===o?g({x:i+v,y:a+c/2,textAnchor:m,verticalAnchor:"middle"},w):"insideRight"===o?g({x:i+u-v,y:a+c/2,textAnchor:b,verticalAnchor:"middle"},w):"insideTop"===o?g({x:i+u/2,y:a+f,textAnchor:"middle",verticalAnchor:d},w):"insideBottom"===o?g({x:i+u/2,y:a+c-f,textAnchor:"middle",verticalAnchor:p},w):"insideTopLeft"===o?g({x:i+v,y:a+f,textAnchor:m,verticalAnchor:d},w):"insideTopRight"===o?g({x:i+u-v,y:a+f,textAnchor:b,verticalAnchor:d},w):"insideBottomLeft"===o?g({x:i+v,y:a+c-f,textAnchor:m,verticalAnchor:p},w):"insideBottomRight"===o?g({x:i+u-v,y:a+c-f,textAnchor:b,verticalAnchor:p},w):l()(o)&&((0,h.Et)(o.x)||(0,h._3)(o.x))&&((0,h.Et)(o.y)||(0,h._3)(o.y))?g({x:i+(0,h.F4)(o.x,u),y:a+(0,h.F4)(o.y,c),textAnchor:"end",verticalAnchor:"end"},w):g({x:i+u/2,y:a+c/2,textAnchor:"middle",verticalAnchor:"middle"},w)};function P(t){var e,r=t.offset,o=g({offset:void 0===r?5:r},function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){if(e.indexOf(n)>=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,v)),a=o.viewBox,c=o.position,l=o.value,d=o.children,y=o.content,b=o.className,m=o.textBreakAll;if(!a||i()(l)&&i()(d)&&!(0,n.isValidElement)(y)&&!u()(y))return null;if((0,n.isValidElement)(y))return(0,n.cloneElement)(y,o);if(u()(y)){if(e=(0,n.createElement)(y,o),(0,n.isValidElement)(e))return e}else e=O(o);var P="cx"in a&&(0,h.Et)(a.cx),E=(0,p.J9)(o,!0);if(P&&("insideStart"===c||"insideEnd"===c||"end"===c))return w(o,e,E);var A=P?j(o):S(o);return n.createElement(f.E,x({className:(0,s.A)("recharts-label",void 0===b?"":b)},E,A,{breakAll:m}),e)}P.displayName="Label";var E=function(t){var e=t.cx,r=t.cy,n=t.angle,o=t.startAngle,i=t.endAngle,a=t.r,u=t.radius,c=t.innerRadius,l=t.outerRadius,s=t.x,f=t.y,p=t.top,d=t.left,y=t.width,v=t.height,b=t.clockWise,m=t.labelViewBox;if(m)return m;if((0,h.Et)(y)&&(0,h.Et)(v)){if((0,h.Et)(s)&&(0,h.Et)(f))return{x:s,y:f,width:y,height:v};if((0,h.Et)(p)&&(0,h.Et)(d))return{x:p,y:d,width:y,height:v}}return(0,h.Et)(s)&&(0,h.Et)(f)?{x:s,y:f,width:0,height:0}:(0,h.Et)(e)&&(0,h.Et)(r)?{cx:e,cy:r,startAngle:o||n||0,endAngle:i||n||0,innerRadius:c||0,outerRadius:l||u||a||0,clockWise:b}:t.viewBox?t.viewBox:{}};P.parseViewBox=E,P.renderCallByParent=function(t,e){var r,o,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(!t||!t.children&&i&&!t.label)return null;var a=t.children,c=E(t),s=(0,p.aS)(a,P).map(function(t,r){return(0,n.cloneElement)(t,{viewBox:e||c,key:"label-".concat(r)})});return i?[(r=t.label,o=e||c,r?!0===r?n.createElement(P,{key:"label-implicit",viewBox:o}):(0,h.vh)(r)?n.createElement(P,{key:"label-implicit",viewBox:o,value:r}):(0,n.isValidElement)(r)?r.type===P?(0,n.cloneElement)(r,{key:"label-implicit",viewBox:o}):n.createElement(P,{key:"label-implicit",content:r,viewBox:o}):u()(r)?n.createElement(P,{key:"label-implicit",content:r,viewBox:o}):l()(r)?n.createElement(P,x({viewBox:o},r,{key:"label-implicit"})):null:null)].concat(function(t){if(Array.isArray(t))return b(t)}(s)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(s)||function(t,e){if(t){if("string"==typeof t)return b(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(t,void 0)}}(s)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):s}},58864:(t,e,r)=>{"use strict";r.d(e,{Z:()=>P});var n=r(20107),o=r(87107),i=r.n(o),a=r(50683),u=r.n(a),c=r(14632),l=r.n(c),s=r(21836),f=r.n(s),p=r(94348),h=r(37819),d=r(61211),y=r(95492);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var b=["valueAccessor"],m=["data","dataKey","clockWise","id","textBreakAll"];function g(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}var S=function(t){return Array.isArray(t.value)?f()(t.value):t.value};function P(t){var e=t.valueAccessor,r=void 0===e?S:e,o=j(t,b),a=o.data,u=o.dataKey,c=o.clockWise,l=o.id,s=o.textBreakAll,f=j(o,m);return a&&a.length?n.createElement(h.W,{className:"recharts-label-list"},a.map(function(t,e){var o=i()(u)?r(t,e):(0,y.kr)(t&&t.payload,u),a=i()(l)?{}:{id:"".concat(l,"-").concat(e)};return n.createElement(p.J,x({},(0,d.J9)(t,!0),f,a,{parentViewBox:t.parentViewBox,value:o,textBreakAll:s,viewBox:p.J.parseViewBox(i()(c)?t:w(w({},t),{},{clockWise:c})),key:"label-".concat(e),index:e}))})):null}P.displayName="LabelList",P.renderCallByParent=function(t,e){var r,o=!(arguments.length>2)||void 0===arguments[2]||arguments[2];if(!t||!t.children&&o&&!t.label)return null;var i=t.children,a=(0,d.aS)(i,P).map(function(t,r){return(0,n.cloneElement)(t,{data:e,key:"labelList-".concat(r)})});return o?[(r=t.label)?!0===r?n.createElement(P,{key:"labelList-implicit",data:e}):n.isValidElement(r)||l()(r)?n.createElement(P,{key:"labelList-implicit",data:e,content:r}):u()(r)?n.createElement(P,x({data:e},r,{key:"labelList-implicit"})):null:null].concat(function(t){if(Array.isArray(t))return g(t)}(a)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(a)||function(t,e){if(t){if("string"==typeof t)return g(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(t,void 0)}}(a)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):a}},58736:(t,e,r)=>{"use strict";r.d(e,{s:()=>I});var n=r(20107),o=r(14632),i=r.n(o),a=r(64901),u=r(42228),c=r(6701),l=r(92824),s=r(35956);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(){return(p=Object.assign?Object.assign.bind():function(t){for(var e=1;e');var x=e.inactive?h:e.color;return n.createElement("li",p({className:m,style:y,key:"legend-item-".concat(r)},(0,s.XC)(t.props,e,r)),n.createElement(c.u,{width:o,height:o,viewBox:d,style:v},t.renderIcon(e)),n.createElement("span",{className:"recharts-legend-item-text",style:{color:x}},l?l(g,e,r):g))})}},{key:"render",value:function(){var t=this.props,e=t.payload,r=t.layout,o=t.align;return e&&e.length?n.createElement("ul",{className:"recharts-default-legend",style:{padding:0,margin:0,textAlign:"horizontal"===r?o:"left"}},this.renderItems()):null}}],function(t,e){for(var r=0;r1||Math.abs(e.height-this.lastBoundingBox.height)>1)&&(this.lastBoundingBox.width=e.width,this.lastBoundingBox.height=e.height,t&&t(e)):(-1!==this.lastBoundingBox.width||-1!==this.lastBoundingBox.height)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,t&&t(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?P({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(t){var e,r,n=this.props,o=n.layout,i=n.align,a=n.verticalAlign,u=n.margin,c=n.chartWidth,l=n.chartHeight;return t&&(void 0!==t.left&&null!==t.left||void 0!==t.right&&null!==t.right)||(e="center"===i&&"vertical"===o?{left:((c||0)-this.getBBoxSnapshot().width)/2}:"right"===i?{right:u&&u.right||0}:{left:u&&u.left||0}),t&&(void 0!==t.top&&null!==t.top||void 0!==t.bottom&&null!==t.bottom)||(r="middle"===a?{top:((l||0)-this.getBBoxSnapshot().height)/2}:"bottom"===a?{bottom:u&&u.bottom||0}:{top:u&&u.top||0}),P(P({},e),r)}},{key:"render",value:function(){var t=this,e=this.props,r=e.content,o=e.width,i=e.height,a=e.wrapperStyle,u=e.payloadUniqBy,c=e.payload,l=P(P({position:"absolute",width:o||"auto",height:i||"auto"},this.getDefaultPosition(a)),a);return n.createElement("div",{className:"recharts-legend-wrapper",style:l,ref:function(e){t.wrapperNode=e}},function(t,e){if(n.isValidElement(t))return n.cloneElement(t,e);if("function"==typeof t)return n.createElement(t,e);e.ref;var r=function(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){if(e.indexOf(n)>=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(e,j);return n.createElement(g,r)}(r,P(P({},this.props),{},{payload:(0,O.s)(c,u,C)})))}}],r=[{key:"getWithHeight",value:function(t,e){var r=P(P({},this.defaultProps),t.props).layout;return"vertical"===r&&(0,x.Et)(t.props.height)?{height:t.props.height}:"horizontal"===r?{width:t.props.width||e}:null}}],e&&E(o.prototype,e),r&&E(o,r),Object.defineProperty(o,"prototype",{writable:!1}),o}(n.PureComponent);_(I,"displayName","Legend"),_(I,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"})},81155:(t,e,r)=>{"use strict";r.d(e,{u:()=>y});var n=r(64901),o=r(20107),i=r(54636),a=r.n(i),u=r(55473),c=r(89952),l=r(42228),s=r(61211);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function h(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(t=a()(t,P,{trailing:!0,leading:!1}));var e=new ResizeObserver(t),r=_.current.getBoundingClientRect();return N(r.width,r.height),e.observe(_.current),function(){e.disconnect()}},[N,P]);var B=(0,o.useMemo)(function(){var t=I.containerWidth,e=I.containerHeight;if(t<0||e<0)return null;(0,l.R)((0,c._3)(v)||(0,c._3)(m),"The width(%s) and height(%s) are both fixed numbers,\n maybe you don't need to use a ResponsiveContainer.",v,m),(0,l.R)(!i||i>0,"The aspect(%s) must be greater than zero.",i);var r=(0,c._3)(v)?t:v,n=(0,c._3)(m)?e:m;i&&i>0&&(r?n=r/i:n&&(r=n*i),w&&n>w&&(n=w)),(0,l.R)(r>0||n>0,"The width(%s) and height(%s) of chart should be greater than 0,\n please check the style of container, or the props width(%s) and height(%s),\n or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the\n height and width.",r,n,v,m,x,O,i);var a=!Array.isArray(j)&&(0,s.Mn)(j.type).endsWith("Chart");return o.Children.map(j,function(t){return(0,u.vq)(t)?(0,o.cloneElement)(t,h({width:r,height:n},a?{style:h({height:"100%",width:"100%",maxHeight:n,maxWidth:r},t.props.style)}:{})):t})},[i,j,m,w,O,x,I,v]);return o.createElement("div",{id:E?"".concat(E):void 0,className:(0,n.A)("recharts-responsive-container",A),style:h(h({},void 0===M?{}:M),{},{width:v,height:m,minWidth:x,minHeight:O,maxHeight:w}),ref:_},B)})},77431:(t,e,r)=>{"use strict";r.d(e,{E:()=>R});var n=r(20107),o=r(87107),i=r.n(o),a=r(64901),u=r(89952),c=r(95392),l=r(61211),s=r(56594);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return h(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return h(t,e)}}(t,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function M(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(u.push(n.value),u.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(t,e)||function(t,e){if(t){if("string"==typeof t)return _(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _(t,e)}}(t,e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&void 0!==arguments[0]?arguments[0]:[];return t.reduce(function(t,e){var i=e.word,a=e.width,u=t[t.length-1];return u&&(null==n||o||u.width+a+ra||e.reduce(function(t,e){return t.width>e.width?t:e}).width>Number(n),e]},y=0,v=c.length-1,b=0;y<=v&&b<=c.length-1;){var m=Math.floor((y+v)/2),g=M(d(m-1),2),x=g[0],O=g[1],w=M(d(m),1)[0];if(x||w||(y=m+1),x&&w&&(v=m-1),!x&&w){i=O;break}b++}return i||h},D=function(t){return[{words:i()(t)?[]:t.toString().split(T)}]},N=function(t){var e=t.width,r=t.scaleToFit,n=t.children,o=t.style,i=t.breakAll,a=t.maxLines;if((e||r)&&!c.m.isSsr){var u=C({breakAll:i,children:n,style:o});return u?I({breakAll:i,children:n,maxLines:a,style:o},u.wordsWithComputedWidth,u.spaceWidth,e,r):D(n)}return D(n)},B="#808080",R=function(t){var e,r=t.x,o=void 0===r?0:r,i=t.y,c=void 0===i?0:i,s=t.lineHeight,f=void 0===s?"1em":s,p=t.capHeight,h=void 0===p?"0.71em":p,d=t.scaleToFit,y=void 0!==d&&d,v=t.textAnchor,b=t.verticalAnchor,m=t.fill,g=void 0===m?B:m,x=k(t,P),O=(0,n.useMemo)(function(){return N({breakAll:x.breakAll,children:x.children,maxLines:x.maxLines,scaleToFit:y,style:x.style,width:x.width})},[x.breakAll,x.children,x.maxLines,y,x.style,x.width]),w=x.dx,j=x.dy,M=x.angle,_=x.className,T=x.breakAll,C=k(x,E);if(!(0,u.vh)(o)||!(0,u.vh)(c))return null;var I=o+((0,u.Et)(w)?w:0),D=c+((0,u.Et)(j)?j:0);switch(void 0===b?"end":b){case"start":e=S("calc(".concat(h,")"));break;case"middle":e=S("calc(".concat((O.length-1)/2," * -").concat(f," + (").concat(h," / 2))"));break;default:e=S("calc(".concat(O.length-1," * -").concat(f,")"))}var R=[];if(y){var L=O[0].width,z=x.width;R.push("scale(".concat(((0,u.Et)(z)?z/L:1)/L,")"))}return M&&R.push("rotate(".concat(M,", ").concat(I,", ").concat(D,")")),R.length&&(C.transform=R.join(" ")),n.createElement("text",A({},(0,l.J9)(C,!0),{x:I,y:D,className:(0,a.A)("recharts-text",_),textAnchor:void 0===v?"start":v,fill:g.includes("url")?B:g}),O.map(function(t,r){var o=t.words.join(T?"":" ");return n.createElement("tspan",{x:I,dy:0===r?e:f,key:"".concat(o,"-").concat(r)},o)}))}},80982:(t,e,r)=>{"use strict";r.d(e,{m:()=>F});var n=r(20107),o=r(67501),i=r.n(o),a=r(87107),u=r.n(a),c=r(64901),l=r(89952);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(){return(f=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);rc[n]+s?Math.max(f,c[n]):Math.max(p,c[n])}function w(t){return(w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function j(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function S(t){for(var e=1;e1||Math.abs(t.height-this.state.lastBoundingBox.height)>1)&&this.setState({lastBoundingBox:{width:t.width,height:t.height}})}else(-1!==this.state.lastBoundingBox.width||-1!==this.state.lastBoundingBox.height)&&this.setState({lastBoundingBox:{width:-1,height:-1}})}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var t,e;this.props.active&&this.updateBBox(),this.state.dismissed&&((null===(t=this.props.coordinate)||void 0===t?void 0:t.x)!==this.state.dismissedAtCoordinate.x||(null===(e=this.props.coordinate)||void 0===e?void 0:e.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var t,e,r,o,i,a,u,s,f,p,h,d,y,v,b,w,j,P,E,A=this,k=this.props,M=k.active,_=k.allowEscapeViewBox,T=k.animationDuration,C=k.animationEasing,I=k.children,D=k.coordinate,N=k.hasPayload,B=k.isAnimationActive,R=k.offset,L=k.position,z=k.reverseDirection,U=k.useTranslate3d,$=k.viewBox,F=k.wrapperStyle,W=(d=(t={allowEscapeViewBox:_,coordinate:D,offsetTopLeft:R,position:L,reverseDirection:z,tooltipBox:this.state.lastBoundingBox,useTranslate3d:U,viewBox:$}).allowEscapeViewBox,y=t.coordinate,v=t.offsetTopLeft,b=t.position,w=t.reverseDirection,j=t.tooltipBox,P=t.useTranslate3d,E=t.viewBox,j.height>0&&j.width>0&&y?(r=(e={translateX:p=O({allowEscapeViewBox:d,coordinate:y,key:"x",offsetTopLeft:v,position:b,reverseDirection:w,tooltipDimension:j.width,viewBox:E,viewBoxDimension:E.width}),translateY:h=O({allowEscapeViewBox:d,coordinate:y,key:"y",offsetTopLeft:v,position:b,reverseDirection:w,tooltipDimension:j.height,viewBox:E,viewBoxDimension:E.height}),useTranslate3d:P}).translateX,o=e.translateY,f={transform:e.useTranslate3d?"translate3d(".concat(r,"px, ").concat(o,"px, 0)"):"translate(".concat(r,"px, ").concat(o,"px)")}):f=x,{cssProperties:f,cssClasses:(a=(i={translateX:p,translateY:h,coordinate:y}).coordinate,u=i.translateX,s=i.translateY,(0,c.A)(g,m(m(m(m({},"".concat(g,"-right"),(0,l.Et)(u)&&a&&(0,l.Et)(a.x)&&u>=a.x),"".concat(g,"-left"),(0,l.Et)(u)&&a&&(0,l.Et)(a.x)&&u=a.y),"".concat(g,"-top"),(0,l.Et)(s)&&a&&(0,l.Et)(a.y)&&s0;return n.createElement(_,{allowEscapeViewBox:i,animationDuration:a,animationEasing:u,isAnimationActive:f,active:o,coordinate:l,hasPayload:w,offset:p,position:y,reverseDirection:b,useTranslate3d:m,viewBox:g,wrapperStyle:x},(t=N(N({},this.props),{},{payload:O}),n.isValidElement(c)?n.cloneElement(c,t):"function"==typeof c?n.createElement(c,t):n.createElement(v,t)))}}],function(t,e){for(var r=0;r{"use strict";r.d(e,{W:()=>c});var n=r(20107),o=r(64901),i=r(61211),a=["children","className"];function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,a),s=(0,o.A)("recharts-layer",c);return n.createElement("g",u({className:s},(0,i.J9)(l,!0),{ref:e}),r)})},6701:(t,e,r)=>{"use strict";r.d(e,{u:()=>c});var n=r(20107),o=r(64901),i=r(61211),a=["children","width","height","viewBox","className","style","title","desc"];function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,a),y=l||{width:r,height:c,x:0,y:0},v=(0,o.A)("recharts-surface",s);return n.createElement("svg",u({},(0,i.J9)(d,!0,"svg"),{className:v,width:r,height:c,style:f,viewBox:"".concat(y.x," ").concat(y.y," ").concat(y.width," ").concat(y.height)}),n.createElement("title",null,p),n.createElement("desc",null,h),e)}},25161:(t,e,r)=>{"use strict";r.d(e,{DR:()=>g,pj:()=>w,rY:()=>k,yi:()=>A,Yp:()=>x,hj:()=>E,sk:()=>P,AF:()=>O,Nk:()=>S,$G:()=>j});var n=r(20107),o=r(45082),i=r(1339),a=r.n(i),u=r(83191),c=r.n(u),l=r(80480),s=r.n(l)()(function(t){return{x:t.left,y:t.top,width:t.width,height:t.height}},function(t){return["l",t.left,"t",t.top,"w",t.width,"h",t.height].join("")}),f=r(89952),p=(0,n.createContext)(void 0),h=(0,n.createContext)(void 0),d=(0,n.createContext)(void 0),y=(0,n.createContext)({}),v=(0,n.createContext)(void 0),b=(0,n.createContext)(0),m=(0,n.createContext)(0),g=function(t){var e=t.state,r=e.xAxisMap,o=e.yAxisMap,i=e.offset,a=t.clipPathId,u=t.children,c=t.width,l=t.height,f=s(i);return n.createElement(p.Provider,{value:r},n.createElement(h.Provider,{value:o},n.createElement(y.Provider,{value:i},n.createElement(d.Provider,{value:f},n.createElement(v.Provider,{value:a},n.createElement(b.Provider,{value:l},n.createElement(m.Provider,{value:c},u)))))))},x=function(){return(0,n.useContext)(v)},O=function(t){var e=(0,n.useContext)(p);null!=e||(0,o.A)(!1);var r=e[t];return null!=r||(0,o.A)(!1),r},w=function(){var t=(0,n.useContext)(p);return(0,f.lX)(t)},j=function(){var t=(0,n.useContext)(h);return a()(t,function(t){return c()(t.domain,Number.isFinite)})||(0,f.lX)(t)},S=function(t){var e=(0,n.useContext)(h);null!=e||(0,o.A)(!1);var r=e[t];return null!=r||(0,o.A)(!1),r},P=function(){return(0,n.useContext)(d)},E=function(){return(0,n.useContext)(y)},A=function(){return(0,n.useContext)(m)},k=function(){return(0,n.useContext)(b)}},60992:(t,e,r)=>{"use strict";r.d(e,{I:()=>V});var n=r(20107);function o(){}function i(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function a(t){this._context=t}function u(t){this._context=t}function c(t){this._context=t}a.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:i(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:i(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},u.prototype={areaStart:o,areaEnd:o,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:i(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},c.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:i(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class l{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function s(t){this._context=t}function f(t){this._context=t}function p(t){return new f(t)}function h(t,e,r){var n=t._x1-t._x0,o=e-t._x1,i=(t._y1-t._y0)/(n||o<0&&-0),a=(r-t._y1)/(o||n<0&&-0);return((i<0?-1:1)+(a<0?-1:1))*Math.min(Math.abs(i),Math.abs(a),.5*Math.abs((i*o+a*n)/(n+o)))||0}function d(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function y(t,e,r){var n=t._x0,o=t._y0,i=t._x1,a=t._y1,u=(i-n)/3;t._context.bezierCurveTo(n+u,o+u*e,i-u,a-u*r,i,a)}function v(t){this._context=t}function b(t){this._context=new m(t)}function m(t){this._context=t}function g(t){this._context=t}function x(t){var e,r,n=t.length-1,o=Array(n),i=Array(n),a=Array(n);for(o[0]=0,i[0]=2,a[0]=t[0]+2*t[1],e=1;e=0;--e)o[e]=(a[e]-o[e+1])/i[e];for(e=0,i[n-1]=(t[n]+o[n-1])/2;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}};var w=r(58492),j=r(51139),S=r(95327);function P(t){return t[0]}function E(t){return t[1]}function A(t,e){var r=(0,j.A)(!0),n=null,o=p,i=null,a=(0,S.i)(u);function u(u){var c,l,s,f=(u=(0,w.A)(u)).length,p=!1;for(null==n&&(i=o(s=a())),c=0;c<=f;++c)!(c=f;--p)u.point(b[p],m[p]);u.lineEnd(),u.areaEnd()}}v&&(b[s]=+t(h,s,l),m[s]=+e(h,s,l),u.point(n?+n(h,s,l):b[s],r?+r(h,s,l):m[s]))}if(d)return u=null,d+""||null}function s(){return A().defined(o).curve(a).context(i)}return t="function"==typeof t?t:void 0===t?P:(0,j.A)(+t),e="function"==typeof e?e:void 0===e?(0,j.A)(0):(0,j.A)(+e),r="function"==typeof r?r:void 0===r?E:(0,j.A)(+r),l.x=function(e){return arguments.length?(t="function"==typeof e?e:(0,j.A)(+e),n=null,l):t},l.x0=function(e){return arguments.length?(t="function"==typeof e?e:(0,j.A)(+e),l):t},l.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:(0,j.A)(+t),l):n},l.y=function(t){return arguments.length?(e="function"==typeof t?t:(0,j.A)(+t),r=null,l):e},l.y0=function(t){return arguments.length?(e="function"==typeof t?t:(0,j.A)(+t),l):e},l.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:(0,j.A)(+t),l):r},l.lineX0=l.lineY0=function(){return s().x(t).y(e)},l.lineY1=function(){return s().x(t).y(r)},l.lineX1=function(){return s().x(n).y(e)},l.defined=function(t){return arguments.length?(o="function"==typeof t?t:(0,j.A)(!!t),l):o},l.curve=function(t){return arguments.length?(a=t,null!=i&&(u=a(i)),l):a},l.context=function(t){return arguments.length?(null==t?i=u=null:u=a(i=t),l):i},l}var M=r(76158),_=r.n(M),T=r(14632),C=r.n(T),I=r(64901),D=r(35956),N=r(61211),B=r(89952);function R(t){return(R="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function L(){return(L=Object.assign?Object.assign.bind():function(t){for(var e=1;e{"use strict";r.d(e,{c:()=>c});var n=r(20107),o=r(64901),i=r(35956),a=r(61211);function u(){return(u=Object.assign?Object.assign.bind():function(t){for(var e=1;e{"use strict";r.d(e,{J:()=>h,M:()=>y});var n=r(20107),o=r(64901),i=r(54584),a=r(61211);function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(){return(c=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r=0?1:-1,c=r>=0?1:-1,l=n>=0&&r>=0||n<0&&r<0?1:0;if(a>0&&o instanceof Array){for(var s=[0,0,0,0],f=0;f<4;f++)s[f]=o[f]>a?a:o[f];i="M".concat(t,",").concat(e+u*s[0]),s[0]>0&&(i+="A ".concat(s[0],",").concat(s[0],",0,0,").concat(l,",").concat(t+c*s[0],",").concat(e)),i+="L ".concat(t+r-c*s[1],",").concat(e),s[1]>0&&(i+="A ".concat(s[1],",").concat(s[1],",0,0,").concat(l,",\n ").concat(t+r,",").concat(e+u*s[1])),i+="L ".concat(t+r,",").concat(e+n-u*s[2]),s[2]>0&&(i+="A ".concat(s[2],",").concat(s[2],",0,0,").concat(l,",\n ").concat(t+r-c*s[2],",").concat(e+n)),i+="L ".concat(t+c*s[3],",").concat(e+n),s[3]>0&&(i+="A ".concat(s[3],",").concat(s[3],",0,0,").concat(l,",\n ").concat(t,",").concat(e+n-u*s[3])),i+="Z"}else if(a>0&&o===+o&&o>0){var p=Math.min(a,o);i="M ".concat(t,",").concat(e+u*p,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+c*p,",").concat(e,"\n L ").concat(t+r-c*p,",").concat(e,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+r,",").concat(e+u*p,"\n L ").concat(t+r,",").concat(e+n-u*p,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t+r-c*p,",").concat(e+n,"\n L ").concat(t+c*p,",").concat(e+n,"\n A ").concat(p,",").concat(p,",0,0,").concat(l,",").concat(t,",").concat(e+n-u*p," Z")}else i="M ".concat(t,",").concat(e," h ").concat(r," v ").concat(n," h ").concat(-r," Z");return i},h=function(t,e){if(!t||!e)return!1;var r=t.x,n=t.y,o=e.x,i=e.y,a=e.width,u=e.height;if(Math.abs(a)>0&&Math.abs(u)>0){var c=Math.min(o,o+a),l=Math.max(o,o+a),s=Math.min(i,i+u),f=Math.max(i,i+u);return r>=c&&r<=l&&n>=s&&n<=f}return!1},d={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},y=function(t){var e,r=f(f({},d),t),u=(0,n.useRef)(),s=function(t){if(Array.isArray(t))return t}(e=(0,n.useState)(-1))||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,u=[],c=!0,l=!1;try{for(i=(r=r.call(t)).next;!(c=(n=i.call(r)).done)&&(u.push(n.value),2!==u.length);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return u}}(e,2)||function(t,e){if(t){if("string"==typeof t)return l(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return l(t,2)}}(e,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=s[0],y=s[1];(0,n.useEffect)(function(){if(u.current&&u.current.getTotalLength)try{var t=u.current.getTotalLength();t&&y(t)}catch(t){}},[]);var v=r.x,b=r.y,m=r.width,g=r.height,x=r.radius,O=r.className,w=r.animationEasing,j=r.animationDuration,S=r.animationBegin,P=r.isAnimationActive,E=r.isUpdateAnimationActive;if(v!==+v||b!==+b||m!==+m||g!==+g||0===m||0===g)return null;var A=(0,o.A)("recharts-rectangle",O);return E?n.createElement(i.Ay,{canBegin:h>0,from:{width:m,height:g,x:v,y:b},to:{width:m,height:g,x:v,y:b},duration:j,animationEasing:w,isActive:E},function(t){var e=t.width,o=t.height,l=t.x,s=t.y;return n.createElement(i.Ay,{canBegin:h>0,from:"0px ".concat(-1===h?1:h,"px"),to:"".concat(h,"px 0px"),attributeName:"strokeDasharray",begin:S,duration:j,isActive:P,easing:w},n.createElement("path",c({},(0,a.J9)(r,!0),{className:A,d:p(l,s,e,o,x),ref:u})))}):n.createElement("path",c({},(0,a.J9)(r,!0),{className:A,d:p(v,b,m,g,x)}))}},3730:(t,e,r)=>{"use strict";r.d(e,{h:()=>v});var n=r(20107),o=r(64901),i=r(61211),a=r(92742),u=r(89952);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){return(l=Object.assign?Object.assign.bind():function(t){for(var e=1;e180),",").concat(+(i>s),",\n ").concat(p.x,",").concat(p.y,"\n ");if(n>0){var d=(0,a.IZ)(e,r,n,i),y=(0,a.IZ)(e,r,n,s);h+="L ".concat(y.x,",").concat(y.y,"\n A ").concat(n,",").concat(n,",0,\n ").concat(+(Math.abs(l)>180),",").concat(+(i<=s),",\n ").concat(d.x,",").concat(d.y," Z")}else h+="L ".concat(e,",").concat(r," Z");return h},d=function(t){var e=t.cx,r=t.cy,n=t.innerRadius,o=t.outerRadius,i=t.cornerRadius,a=t.forceCornerRadius,c=t.cornerIsExternal,l=t.startAngle,s=t.endAngle,f=(0,u.sA)(s-l),d=p({cx:e,cy:r,radius:o,angle:l,sign:f,cornerRadius:i,cornerIsExternal:c}),y=d.circleTangency,v=d.lineTangency,b=d.theta,m=p({cx:e,cy:r,radius:o,angle:s,sign:-f,cornerRadius:i,cornerIsExternal:c}),g=m.circleTangency,x=m.lineTangency,O=m.theta,w=c?Math.abs(l-s):Math.abs(l-s)-b-O;if(w<0)return a?"M ".concat(v.x,",").concat(v.y,"\n a").concat(i,",").concat(i,",0,0,1,").concat(2*i,",0\n a").concat(i,",").concat(i,",0,0,1,").concat(-(2*i),",0\n "):h({cx:e,cy:r,innerRadius:n,outerRadius:o,startAngle:l,endAngle:s});var j="M ".concat(v.x,",").concat(v.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(y.x,",").concat(y.y,"\n A").concat(o,",").concat(o,",0,").concat(+(w>180),",").concat(+(f<0),",").concat(g.x,",").concat(g.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(x.x,",").concat(x.y,"\n ");if(n>0){var S=p({cx:e,cy:r,radius:n,angle:l,sign:f,isExternal:!0,cornerRadius:i,cornerIsExternal:c}),P=S.circleTangency,E=S.lineTangency,A=S.theta,k=p({cx:e,cy:r,radius:n,angle:s,sign:-f,isExternal:!0,cornerRadius:i,cornerIsExternal:c}),M=k.circleTangency,_=k.lineTangency,T=k.theta,C=c?Math.abs(l-s):Math.abs(l-s)-A-T;if(C<0&&0===i)return"".concat(j,"L").concat(e,",").concat(r,"Z");j+="L".concat(_.x,",").concat(_.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(M.x,",").concat(M.y,"\n A").concat(n,",").concat(n,",0,").concat(+(C>180),",").concat(+(f>0),",").concat(P.x,",").concat(P.y,"\n A").concat(i,",").concat(i,",0,0,").concat(+(f<0),",").concat(E.x,",").concat(E.y,"Z")}else j+="L".concat(e,",").concat(r,"Z");return j},y={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},v=function(t){var e,r=f(f({},y),t),a=r.cx,c=r.cy,s=r.innerRadius,p=r.outerRadius,v=r.cornerRadius,b=r.forceCornerRadius,m=r.cornerIsExternal,g=r.startAngle,x=r.endAngle,O=r.className;if(p0&&360>Math.abs(g-x)?d({cx:a,cy:c,innerRadius:s,outerRadius:p,cornerRadius:Math.min(S,j/2),forceCornerRadius:b,cornerIsExternal:m,startAngle:g,endAngle:x}):h({cx:a,cy:c,innerRadius:s,outerRadius:p,startAngle:g,endAngle:x}),n.createElement("path",l({},(0,i.J9)(r,!0),{className:w,d:e,role:"img"}))}},92824:(t,e,r)=>{"use strict";r.d(e,{i:()=>I});var n=r(20107),o=r(76158),i=r.n(o);let a=Math.cos,u=Math.sin,c=Math.sqrt,l=Math.PI,s=2*l,f={draw(t,e){let r=c(e/l);t.moveTo(r,0),t.arc(0,0,r,0,s)}},p=c(1/3),h=2*p,d=u(l/10)/u(7*l/10),y=u(s/10)*d,v=-a(s/10)*d,b=c(3),m=c(3)/2,g=1/c(12),x=(g/2+1)*3;var O=r(51139),w=r(95327);c(3),c(3);var j=r(64901),S=r(61211);function P(t){return(P="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var E=["type","size","sizeType"];function A(){return(A=Object.assign?Object.assign.bind():function(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,E)),{},{type:o,size:u,sizeType:l}),p=s.className,h=s.cx,d=s.cy,y=(0,S.J9)(s,!0);return h===+h&&d===+d&&u===+u?n.createElement("path",A({},y,{className:(0,j.A)("recharts-symbols",p),transform:"translate(".concat(h,", ").concat(d,")"),d:(e=_["symbol".concat(i()(o))]||f,(function(t,e){let r=null,n=(0,w.i)(o);function o(){let o;if(r||(r=o=n()),t.apply(this,arguments).draw(r,+e.apply(this,arguments)),o)return r=null,o+""||null}return t="function"==typeof t?t:(0,O.A)(t||f),e="function"==typeof e?e:(0,O.A)(void 0===e?64:+e),o.type=function(e){return arguments.length?(t="function"==typeof e?e:(0,O.A)(e),o):t},o.size=function(t){return arguments.length?(e="function"==typeof t?t:(0,O.A)(+t),o):e},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o})().type(e).size(C(u,l,o))())})):null};I.registerSymbol=function(t,e){_["symbol".concat(i()(t))]=e}},82372:(t,e,r)=>{"use strict";r.d(e,{yp:()=>C,GG:()=>z,NE:()=>I,nZ:()=>D,xQ:()=>N});var n=r(20107),o=r(14632),i=r.n(o),a=r(55519),u=r.n(a),c=r(46420),l=r.n(c),s=r(6440),f=r.n(s),p=r(2721),h=r(64901),d=r(54584),y=r(61211);function v(t){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function b(){return(b=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var r=0,n=Array(e);r0,from:{upperWidth:0,lowerWidth:0,height:p,x:c,y:l},to:{upperWidth:s,lowerWidth:f,height:p,x:c,y:l},duration:j,animationEasing:g,isActive:P},function(t){var e=t.upperWidth,i=t.lowerWidth,u=t.height,c=t.x,l=t.y;return n.createElement(d.Ay,{canBegin:a>0,from:"0px ".concat(-1===a?1:a,"px"),to:"".concat(a,"px 0px"),attributeName:"strokeDasharray",begin:S,duration:j,easing:g},n.createElement("path",b({},(0,y.J9)(r,!0),{className:E,d:O(c,l,e,i,u),ref:o})))}):n.createElement("g",null,n.createElement("path",b({},(0,y.J9)(r,!0),{className:E,d:O(c,l,s,f,p)})))},S=r(3730),P=r(37819),E=r(92824),A=["option","shapeType","propTransformer","activeClassName","isActive"];function k(t){return(k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function M(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function _(t){for(var e=1;e=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}(t,A);if((0,n.isValidElement)(r))e=(0,n.cloneElement)(r,_(_({},f),(0,n.isValidElement)(r)?r.props:r));else if(i()(r))e=r(f);else if(u()(r)&&!l()(r)){var p=(void 0===a?function(t,e){return _(_({},e),t)}:a)(r,f);e=n.createElement(T,{shapeType:o,elementProps:p})}else e=n.createElement(T,{shapeType:o,elementProps:f});return s?n.createElement(P.W,{className:void 0===c?"recharts-active-shape":c},e):e}function I(t,e){return null!=e&&"trapezoids"in t.props}function D(t,e){return null!=e&&"sectors"in t.props}function N(t,e){return null!=e&&"points"in t.props}function B(t,e){var r,n,o=t.x===(null==e||null===(r=e.labelViewBox)||void 0===r?void 0:r.x)||t.x===e.x,i=t.y===(null==e||null===(n=e.labelViewBox)||void 0===n?void 0:n.y)||t.y===e.y;return o&&i}function R(t,e){var r=t.endAngle===e.endAngle,n=t.startAngle===e.startAngle;return r&&n}function L(t,e){var r=t.x===e.x,n=t.y===e.y,o=t.z===e.z;return r&&n&&o}function z(t){var e,r,n,o=t.activeTooltipItem,i=t.graphicalItem,a=t.itemData,u=(I(i,o)?e="trapezoids":D(i,o)?e="sectors":N(i,o)&&(e="points"),e),c=I(i,o)?null===(r=o.tooltipPayload)||void 0===r||null===(r=r[0])||void 0===r||null===(r=r.payload)||void 0===r?void 0:r.payload:D(i,o)?null===(n=o.tooltipPayload)||void 0===n||null===(n=n[0])||void 0===n||null===(n=n.payload)||void 0===n?void 0:n.payload:N(i,o)?o.payload:{},l=a.filter(function(t,e){var r=f()(c,t),n=i.props[u].filter(function(t){var e;return(I(i,o)?e=B:D(i,o)?e=R:N(i,o)&&(e=L),e)(t,o)}),a=i.props[u].indexOf(n[n.length-1]);return r&&e===a});return a.indexOf(l[l.length-1])}},98456:(t,e,r)=>{"use strict";r.d(e,{P2:()=>O,bx:()=>w,pr:()=>b,sl:()=>m,vh:()=>g});var n=r(86992),o=r.n(n),i=r(83191),a=r.n(i),u=r(95492),c=r(61211),l=r(89952),s=r(17255);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){for(var r=0;r0&&(k=Math.min((t||0)-(M[e-1]||0),k))}),Number.isFinite(k)){var _=k/A,T="vertical"===g.layout?r.height:r.width;if("gap"===g.padding&&(c=_*T/2),"no-gap"===g.padding){var C=(0,l.F4)(t.barCategoryGap,_*T),I=_*T/2;c=I-C-(I-C)/T*C}}}s="xAxis"===n?[r.left+(j.left||0)+(c||0),r.left+r.width-(j.right||0)-(c||0)]:"yAxis"===n?"horizontal"===f?[r.top+r.height-(j.bottom||0),r.top+(j.top||0)]:[r.top+(j.top||0)+(c||0),r.top+r.height-(j.bottom||0)-(c||0)]:g.range,P&&(s=[s[1],s[0]]);var D=(0,u.W7)(g,o,b),N=D.scale,B=D.realScaleType;N.domain(O).range(s),(0,u.YB)(N);var R=(0,u.w7)(N,d(d({},g),{},{realScaleType:B}));"xAxis"===n?(m="top"===x&&!S||"bottom"===x&&S,p=r.left,h=v[E]-m*g.height):"yAxis"===n&&(m="left"===x&&!S||"right"===x&&S,p=v[E]-m*g.width,h=r.top);var L=d(d(d({},g),R),{},{realScaleType:B,x:p,y:h,scale:N,width:"xAxis"===n?r.width:g.width,height:"yAxis"===n?r.height:g.height});return L.bandSize=(0,u.Hj)(L,R),g.hide||"xAxis"!==n?g.hide||(v[E]+=(m?-1:1)*L.width):v[E]+=(m?-1:1)*L.height,d(d({},i),{},y({},a,L))},{})},m=function(t,e){var r=t.x,n=t.y,o=e.x,i=e.y;return{x:Math.min(r,o),y:Math.min(n,i),width:Math.abs(o-r),height:Math.abs(i-n)}},g=function(t){return m({x:t.x1,y:t.y1},{x:t.x2,y:t.y2})},x=function(){var t,e;function r(t){!function(t,e){if(!(t instanceof e))throw TypeError("Cannot call a class as a function")}(this,r),this.scale=t}return t=[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.bandAware,n=e.position;if(void 0!==t){if(n)switch(n){case"start":default:return this.scale(t);case"middle":var o=this.bandwidth?this.bandwidth()/2:0;return this.scale(t)+o;case"end":var i=this.bandwidth?this.bandwidth():0;return this.scale(t)+i}if(r){var a=this.bandwidth?this.bandwidth()/2:0;return this.scale(t)+a}return this.scale(t)}}},{key:"isInRange",value:function(t){var e=this.range(),r=e[0],n=e[e.length-1];return r<=n?t>=r&&t<=n:t>=n&&t<=r}}],e=[{key:"create",value:function(t){return new r(t)}}],t&&p(r.prototype,t),e&&p(r,e),Object.defineProperty(r,"prototype",{writable:!1}),r}();y(x,"EPS",1e-4);var O=function(t){var e=Object.keys(t).reduce(function(e,r){return d(d({},e),{},y({},r,x.create(t[r])))},{});return d(d({},e),{},{apply:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.bandAware,i=r.position;return o()(t,function(t,r){return e[r].apply(t,{bandAware:n,position:i})})},isInRange:function(t){return a()(t,function(t,r){return e[r].isInRange(t)})}})},w=function(t){var e=t.width,r=t.height,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(n%180+180)%180*Math.PI/180,i=Math.atan(r/e);return Math.abs(o>i&&o{"use strict";r.d(e,{s0:()=>n3,gH:()=>n0,YB:()=>oo,HQ:()=>or,xi:()=>oi,Hj:()=>og,BX:()=>n5,tA:()=>n2,DW:()=>oh,y2:()=>op,nb:()=>of,PW:()=>n7,Ay:()=>nQ,vf:()=>n8,Mk:()=>oy,Ps:()=>n1,Mn:()=>ol,kA:()=>od,Rh:()=>ot,w7:()=>os,zb:()=>oO,kr:()=>nZ,_L:()=>n9,KC:()=>ox,A1:()=>n4,W7:()=>on,AQ:()=>om,_f:()=>oa});var n,o,i,a,u,c,l,s={};r.r(s),r.d(s,{scaleBand:()=>f.A,scaleDiverging:()=>function t(){var e=tN(rZ()(tv));return e.copy=function(){return rY(e,t())},tj.K.apply(e,arguments)},scaleDivergingLog:()=>function t(){var e=tq(rZ()).domain([.1,1,10]);return e.copy=function(){return rY(e,t()).base(e.base())},tj.K.apply(e,arguments)},scaleDivergingPow:()=>rQ,scaleDivergingSqrt:()=>r0,scaleDivergingSymlog:()=>function t(){var e=tV(rZ());return e.copy=function(){return rY(e,t()).constant(e.constant())},tj.K.apply(e,arguments)},scaleIdentity:()=>function t(e){var r;function n(t){return null==t||isNaN(t=+t)?r:t}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,td),n):e.slice()},n.unknown=function(t){return arguments.length?(r=t,n):r},n.copy=function(){return t(e).unknown(r)},e=arguments.length?Array.from(e,td):[0,1],tN(n)},scaleImplicit:()=>tG.h,scaleLinear:()=>tB,scaleLog:()=>function t(){let e=tq(tO()).domain([1,10]);return e.copy=()=>tx(e,t()).base(e.base()),tj.C.apply(e,arguments),e},scaleOrdinal:()=>tG.A,scalePoint:()=>f.z,scalePow:()=>tQ,scaleQuantile:()=>function t(){var e,r=[],n=[],o=[];function i(){var t=0,e=Math.max(1,n.length);for(o=Array(e-1);++t=1)return+r(t[n-1],n-1,t);var n,o=(n-1)*e,i=Math.floor(o),a=+r(t[i],i,t);return a+(+r(t[i+1],i+1,t)-a)*(o-i)}}(r,t/e);return a}function a(t){return null==t||isNaN(t=+t)?e:n[P(o,t)]}return a.invertExtent=function(t){var e=n.indexOf(t);return e<0?[NaN,NaN]:[e>0?o[e-1]:r[0],efunction t(){var e,r=0,n=1,o=1,i=[.5],a=[0,1];function u(t){return null!=t&&t<=t?a[P(i,t,0,o)]:e}function c(){var t=-1;for(i=Array(o);++t=o?[i[o-1],n]:[i[e-1],i[e]]},u.unknown=function(t){return arguments.length&&(e=t),u},u.thresholds=function(){return i.slice()},u.copy=function(){return t().domain([r,n]).range(a).unknown(e)},tj.C.apply(tN(u),arguments)},scaleRadial:()=>function t(){var e,r=tw(),n=[0,1],o=!1;function i(t){var n,i=Math.sign(n=r(t))*Math.sqrt(Math.abs(n));return isNaN(i)?e:o?Math.round(i):i}return i.invert=function(t){return r.invert(t1(t))},i.domain=function(t){return arguments.length?(r.domain(t),i):r.domain()},i.range=function(t){return arguments.length?(r.range((n=Array.from(t,td)).map(t1)),i):n.slice()},i.rangeRound=function(t){return i.range(t).round(!0)},i.round=function(t){return arguments.length?(o=!!t,i):o},i.clamp=function(t){return arguments.length?(r.clamp(t),i):r.clamp()},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t(r.domain(),n).round(o).clamp(r.clamp()).unknown(e)},tj.C.apply(i,arguments),tN(i)},scaleSequential:()=>function t(){var e=tN(rG()(tv));return e.copy=function(){return rY(e,t())},tj.K.apply(e,arguments)},scaleSequentialLog:()=>function t(){var e=tq(rG()).domain([1,10]);return e.copy=function(){return rY(e,t()).base(e.base())},tj.K.apply(e,arguments)},scaleSequentialPow:()=>rK,scaleSequentialQuantile:()=>function t(){var e=[],r=tv;function n(t){if(null!=t&&!isNaN(t=+t))return r((P(e,t,1)-1)/(e.length-1))}return n.domain=function(t){if(!arguments.length)return e.slice();for(let r of(e=[],t))null==r||isNaN(r=+r)||e.push(r);return e.sort(g),n},n.interpolator=function(t){return arguments.length?(r=t,n):r},n.range=function(){return e.map((t,n)=>r(n/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(r,n)=>(function(t,e,r){if(!(!(n=(t=Float64Array.from(function*(t,e){if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(yield e);else{let r=-1;for(let n of t)null!=(n=e(n,++r,t))&&(n=+n)>=n&&(yield n)}}(t,void 0))).length)||isNaN(e=+e))){if(e<=0||n<2)return t5(t);if(e>=1)return t2(t);var n,o=(n-1)*e,i=Math.floor(o),a=t2((function t(e,r,n=0,o=1/0,i){if(r=Math.floor(r),n=Math.floor(Math.max(0,n)),o=Math.floor(Math.min(e.length-1,o)),!(n<=r&&r<=o))return e;for(i=void 0===i?t3:function(t=g){if(t===g)return t3;if("function"!=typeof t)throw TypeError("compare is not a function");return(e,r)=>{let n=t(e,r);return n||0===n?n:(0===t(r,r))-(0===t(e,e))}}(i);o>n;){if(o-n>600){let a=o-n+1,u=r-n+1,c=Math.log(a),l=.5*Math.exp(2*c/3),s=.5*Math.sqrt(c*l*(a-l)/a)*(u-a/2<0?-1:1),f=Math.max(n,Math.floor(r-u*l/a+s)),p=Math.min(o,Math.floor(r+(a-u)*l/a+s));t(e,r,f,p,i)}let a=e[r],u=n,c=o;for(t6(e,n,r),i(e[o],a)>0&&t6(e,n,o);ui(e[u],a);)++u;for(;i(e[c],a)>0;)--c}0===i(e[n],a)?t6(e,n,c):t6(e,++c,o),c<=r&&(n=c+1),r<=c&&(o=c-1)}return e})(t,i).subarray(0,i+1));return a+(t5(t.subarray(i+1))-a)*(o-i)}})(e,n/t))},n.copy=function(){return t(r).domain(e)},tj.K.apply(n,arguments)},scaleSequentialSqrt:()=>rJ,scaleSequentialSymlog:()=>function t(){var e=tV(rG());return e.copy=function(){return rY(e,t()).constant(e.constant())},tj.K.apply(e,arguments)},scaleSqrt:()=>t0,scaleSymlog:()=>function t(){var e=tV(tO());return e.copy=function(){return tx(e,t()).constant(e.constant())},tj.C.apply(e,arguments)},scaleThreshold:()=>function t(){var e,r=[.5],n=[0,1],o=1;function i(t){return null!=t&&t<=t?n[P(r,t,0,o)]:e}return i.domain=function(t){return arguments.length?(o=Math.min((r=Array.from(t)).length,n.length-1),i):r.slice()},i.range=function(t){return arguments.length?(n=Array.from(t),o=Math.min(r.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var e=n.indexOf(t);return[r[e-1],r[e]]},i.unknown=function(t){return arguments.length?(e=t,i):e},i.copy=function(){return t().domain(r).range(n).unknown(e)},tj.C.apply(i,arguments)},scaleTime:()=>rH,scaleUtc:()=>rV,tickFormat:()=>tD});var f=r(63949);let p=Math.sqrt(50),h=Math.sqrt(10),d=Math.sqrt(2);function y(t,e,r){let n,o,i;let a=(e-t)/Math.max(0,r),u=Math.floor(Math.log10(a)),c=a/Math.pow(10,u),l=c>=p?10:c>=h?5:c>=d?2:1;return(u<0?(n=Math.round(t*(i=Math.pow(10,-u)/l)),o=Math.round(e*i),n/ie&&--o,i=-i):(n=Math.round(t/(i=Math.pow(10,u)*l)),o=Math.round(e/i),n*ie&&--o),o0))return[];if(t===e)return[t];let n=e=o))return[];let u=i-o+1,c=Array(u);if(n){if(a<0)for(let t=0;te?1:t>=e?0:NaN}function x(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function O(t){let e,r,n;function o(t,n,i=0,a=t.length){if(i>>1;0>r(t[e],n)?i=e+1:a=e}while(ig(t(e),r),n=(e,r)=>t(e)-r):(e=t===g||t===x?t:w,r=t,n=t),{left:o,center:function(t,e,r=0,i=t.length){let a=o(t,e,r,i-1);return a>r&&n(t[a-1],e)>-n(t[a],e)?a-1:a},right:function(t,n,o=0,i=t.length){if(o>>1;0>=r(t[e],n)?o=e+1:i=e}while(o>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?q(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?q(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=I.exec(t))?new H(e[1],e[2],e[3],1):(e=D.exec(t))?new H(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=N.exec(t))?q(e[1],e[2],e[3],e[4]):(e=B.exec(t))?q(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=R.exec(t))?Z(e[1],e[2]/100,e[3]/100,1):(e=L.exec(t))?Z(e[1],e[2]/100,e[3]/100,e[4]):z.hasOwnProperty(t)?W(z[t]):"transparent"===t?new H(NaN,NaN,NaN,0):null}function W(t){return new H(t>>16&255,t>>8&255,255&t,1)}function q(t,e,r,n){return n<=0&&(t=e=r=NaN),new H(t,e,r,n)}function X(t,e,r,n){var o;return 1==arguments.length?((o=t)instanceof k||(o=F(o)),o)?new H((o=o.rgb()).r,o.g,o.b,o.opacity):new H:new H(t,e,r,null==n?1:n)}function H(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function V(){return`#${J(this.r)}${J(this.g)}${J(this.b)}`}function G(){let t=Y(this.opacity);return`${1===t?"rgb(":"rgba("}${K(this.r)}, ${K(this.g)}, ${K(this.b)}${1===t?")":`, ${t})`}`}function Y(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function K(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function J(t){return((t=K(t))<16?"0":"")+t.toString(16)}function Z(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new tt(t,e,r,n)}function Q(t){if(t instanceof tt)return new tt(t.h,t.s,t.l,t.opacity);if(t instanceof k||(t=F(t)),!t)return new tt;if(t instanceof tt)return t;var e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,o=Math.min(e,r,n),i=Math.max(e,r,n),a=NaN,u=i-o,c=(i+o)/2;return u?(a=e===i?(r-n)/u+(r0&&c<1?0:a,new tt(a,u,c,t.opacity)}function tt(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function te(t){return(t=(t||0)%360)<0?t+360:t}function tr(t){return Math.max(0,Math.min(1,t||0))}function tn(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}function to(t,e,r,n,o){var i=t*t,a=i*t;return((1-3*t+3*i-a)*e+(4-6*i+3*a)*r+(1+3*t+3*i-3*a)*n+a*o)/6}E(k,F,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:U,formatHex:U,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Q(this).formatHsl()},formatRgb:$,toString:$}),E(H,X,A(k,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new H(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new H(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new H(K(this.r),K(this.g),K(this.b),Y(this.opacity))},displayable(){return -.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:V,formatHex:V,formatHex8:function(){return`#${J(this.r)}${J(this.g)}${J(this.b)}${J((isNaN(this.opacity)?1:this.opacity)*255)}`},formatRgb:G,toString:G})),E(tt,function(t,e,r,n){return 1==arguments.length?Q(t):new tt(t,e,r,null==n?1:n)},A(k,{brighter(t){return t=null==t?1.4285714285714286:Math.pow(1.4285714285714286,t),new tt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?.7:Math.pow(.7,t),new tt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,o=2*r-n;return new H(tn(t>=240?t-240:t+120,o,n),tn(t,o,n),tn(t<120?t+240:t-120,o,n),this.opacity)},clamp(){return new tt(te(this.h),tr(this.s),tr(this.l),Y(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=Y(this.opacity);return`${1===t?"hsl(":"hsla("}${te(this.h)}, ${100*tr(this.s)}%, ${100*tr(this.l)}%${1===t?")":`, ${t})`}`}}));let ti=t=>()=>t;function ta(t,e){var r=e-t;return r?function(e){return t+e*r}:ti(isNaN(t)?e:t)}let tu=function t(e){var r,n=1==(r=+(r=e))?ta:function(t,e){var n,o,i;return e-t?(n=t,o=e,n=Math.pow(n,i=r),o=Math.pow(o,i)-n,i=1/i,function(t){return Math.pow(n+t*o,i)}):ti(isNaN(t)?e:t)};function o(t,e){var r=n((t=X(t)).r,(e=X(e)).r),o=n(t.g,e.g),i=n(t.b,e.b),a=ta(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=o(e),t.b=i(e),t.opacity=a(e),t+""}}return o.gamma=t,o}(1);function tc(t){return function(e){var r,n,o=e.length,i=Array(o),a=Array(o),u=Array(o);for(r=0;r=1?(r=1,e-1):Math.floor(r*e),o=t[n],i=t[n+1],a=n>0?t[n-1]:2*o-i,u=nu&&(a=e.slice(u,a),l[c]?l[c]+=a:l[++c]=a),(o=o[0])===(i=i[0])?l[c]?l[c]+=i:l[++c]=i:(l[++c]=null,s.push({i:c,x:tl(o,i)})),u=tf.lastIndex;return ue&&(r=t,t=e,e=r),l=function(r){return Math.max(t,Math.min(e,r))}),n=c>2?tg:tm,o=i=null,f}function f(e){return null==e||isNaN(e=+e)?r:(o||(o=n(a.map(t),u,c)))(t(l(e)))}return f.invert=function(r){return l(e((i||(i=n(u,a.map(t),tl)))(r)))},f.domain=function(t){return arguments.length?(a=Array.from(t,td),s()):a.slice()},f.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},f.rangeRound=function(t){return u=Array.from(t),c=th,s()},f.clamp=function(t){return arguments.length?(l=!!t||tv,s()):l!==tv},f.interpolate=function(t){return arguments.length?(c=t,s()):c},f.unknown=function(t){return arguments.length?(r=t,f):r},function(r,n){return t=r,e=n,s()}}function tw(){return tO()(tv,tv)}var tj=r(87982),tS=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function tP(t){var e;if(!(e=tS.exec(t)))throw Error("invalid format: "+t);return new tE({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function tE(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function tA(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function tk(t){return(t=tA(Math.abs(t)))?t[1]:NaN}function tM(t,e){var r=tA(t,e);if(!r)return t+"";var n=r[0],o=r[1];return o<0?"0."+Array(-o).join("0")+n:n.length>o+1?n.slice(0,o+1)+"."+n.slice(o+1):n+Array(o-n.length+2).join("0")}tP.prototype=tE.prototype,tE.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};let t_={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>tM(100*t,e),r:tM,s:function(t,e){var r=tA(t,e);if(!r)return t+"";var o=r[0],i=r[1],a=i-(n=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=o.length;return a===u?o:a>u?o+Array(a-u+1).join("0"):a>0?o.slice(0,a)+"."+o.slice(a):"0."+Array(1-a).join("0")+tA(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function tT(t){return t}var tC=Array.prototype.map,tI=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function tD(t,e,r,n){var o,u,c=m(t,e,r);switch((n=tP(null==n?",f":n)).type){case"s":var l=Math.max(Math.abs(t),Math.abs(e));return null!=n.precision||isNaN(u=Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(tk(l)/3)))-tk(Math.abs(c))))||(n.precision=u),a(n,l);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(u=Math.max(0,tk(Math.abs(Math.max(Math.abs(t),Math.abs(e)))-(o=Math.abs(o=c)))-tk(o))+1)||(n.precision=u-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(u=Math.max(0,-tk(Math.abs(c))))||(n.precision=u-("%"===n.type)*2)}return i(n)}function tN(t){var e=t.domain;return t.ticks=function(t){var r=e();return v(r[0],r[r.length-1],null==t?10:t)},t.tickFormat=function(t,r){var n=e();return tD(n[0],n[n.length-1],null==t?10:t,r)},t.nice=function(r){null==r&&(r=10);var n,o,i=e(),a=0,u=i.length-1,c=i[a],l=i[u],s=10;for(l0;){if((o=b(c,l,r))===n)return i[a]=c,i[u]=l,e(i);if(o>0)c=Math.floor(c/o)*o,l=Math.ceil(l/o)*o;else if(o<0)c=Math.ceil(c*o)/o,l=Math.floor(l*o)/o;else break;n=o}return t},t}function tB(){var t=tw();return t.copy=function(){return tx(t,tB())},tj.C.apply(t,arguments),tN(t)}function tR(t,e){t=t.slice();var r,n=0,o=t.length-1,i=t[n],a=t[o];return a-t(-e,r)}function tq(t){let e,r;let n=t(tL,tz),o=n.domain,a=10;function u(){var i,u;return e=(i=a)===Math.E?Math.log:10===i&&Math.log10||2===i&&Math.log2||(i=Math.log(i),t=>Math.log(t)/i),r=10===(u=a)?tF:u===Math.E?Math.exp:t=>Math.pow(u,t),o()[0]<0?(e=tW(e),r=tW(r),t(tU,t$)):t(tL,tz),n}return n.base=function(t){return arguments.length?(a=+t,u()):a},n.domain=function(t){return arguments.length?(o(t),u()):o()},n.ticks=t=>{let n,i;let u=o(),c=u[0],l=u[u.length-1],s=l0){for(;f<=p;++f)for(n=1;nl)break;d.push(i)}}else for(;f<=p;++f)for(n=a-1;n>=1;--n)if(!((i=f>0?n/r(-f):n*r(f))l)break;d.push(i)}2*d.length{if(null==t&&(t=10),null==o&&(o=10===a?"s":","),"function"!=typeof o&&(a%1||null!=(o=tP(o)).precision||(o.trim=!0),o=i(o)),t===1/0)return o;let u=Math.max(1,a*t/n.ticks().length);return t=>{let n=t/r(Math.round(e(t)));return n*ao(tR(o(),{floor:t=>r(Math.floor(e(t))),ceil:t=>r(Math.ceil(e(t)))})),n}function tX(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function tH(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function tV(t){var e=1,r=t(tX(1),tH(e));return r.constant=function(r){return arguments.length?t(tX(e=+r),tH(e)):e},tN(r)}i=(o=function(t){var e,r,o,i=void 0===t.grouping||void 0===t.thousands?tT:(e=tC.call(t.grouping,Number),r=t.thousands+"",function(t,n){for(var o=t.length,i=[],a=0,u=e[0],c=0;o>0&&u>0&&(c+u+1>n&&(u=Math.max(1,n-c)),i.push(t.substring(o-=u,o+u)),!((c+=u+1)>n));)u=e[a=(a+1)%e.length];return i.reverse().join(r)}),a=void 0===t.currency?"":t.currency[0]+"",u=void 0===t.currency?"":t.currency[1]+"",c=void 0===t.decimal?".":t.decimal+"",l=void 0===t.numerals?tT:(o=tC.call(t.numerals,String),function(t){return t.replace(/[0-9]/g,function(t){return o[+t]})}),s=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",p=void 0===t.nan?"NaN":t.nan+"";function h(t){var e=(t=tP(t)).fill,r=t.align,o=t.sign,h=t.symbol,d=t.zero,y=t.width,v=t.comma,b=t.precision,m=t.trim,g=t.type;"n"===g?(v=!0,g="g"):t_[g]||(void 0===b&&(b=12),m=!0,g="g"),(d||"0"===e&&"="===r)&&(d=!0,e="0",r="=");var x="$"===h?a:"#"===h&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",O="$"===h?u:/[%p]/.test(g)?s:"",w=t_[g],j=/[defgprs%]/.test(g);function S(t){var a,u,s,h=x,S=O;if("c"===g)S=w(t)+S,t="";else{var P=(t=+t)<0||1/t<0;if(t=isNaN(t)?p:w(Math.abs(t),b),m&&(t=function(t){e:for(var e,r=t.length,n=1,o=-1;n0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t}(t)),P&&0==+t&&"+"!==o&&(P=!1),h=(P?"("===o?o:f:"-"===o||"("===o?"":o)+h,S=("s"===g?tI[8+n/3]:"")+S+(P&&"("===o?")":""),j){for(a=-1,u=t.length;++a(s=t.charCodeAt(a))||s>57){S=(46===s?c+t.slice(a+1):t.slice(a))+S,t=t.slice(0,a);break}}}v&&!d&&(t=i(t,1/0));var E=h.length+t.length+S.length,A=E>1)+h+t+S+A.slice(E);break;default:t=A+h+t+S}return l(t)}return b=void 0===b?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b)),S.toString=function(){return t+""},S}return{format:h,formatPrefix:function(t,e){var r=h(((t=tP(t)).type="f",t)),n=3*Math.max(-8,Math.min(8,Math.floor(tk(e)/3))),o=Math.pow(10,-n),i=tI[8+n/3];return function(t){return r(o*t)+i}}}}({thousands:",",grouping:[3],currency:["$",""]})).format,a=o.formatPrefix;var tG=r(68399);function tY(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function tK(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function tJ(t){return t<0?-t*t:t*t}function tZ(t){var e=t(tv,tv),r=1;return e.exponent=function(e){return arguments.length?1==(r=+e)?t(tv,tv):.5===r?t(tK,tJ):t(tY(r),tY(1/r)):r},tN(e)}function tQ(){var t=tZ(tO());return t.copy=function(){return tx(t,tQ()).exponent(t.exponent())},tj.C.apply(t,arguments),t}function t0(){return tQ.apply(null,arguments).exponent(.5)}function t1(t){return Math.sign(t)*t*t}function t2(t,e){let r;if(void 0===e)for(let e of t)null!=e&&(r=e)&&(r=e);else{let n=-1;for(let o of t)null!=(o=e(o,++n,t))&&(r=o)&&(r=o)}return r}function t5(t,e){let r;if(void 0===e)for(let e of t)null!=e&&(r>e||void 0===r&&e>=e)&&(r=e);else{let n=-1;for(let o of t)null!=(o=e(o,++n,t))&&(r>o||void 0===r&&o>=o)&&(r=o)}return r}function t3(t,e){return(null==t||!(t>=t))-(null==e||!(e>=e))||(te?1:0)}function t6(t,e,r){let n=t[e];t[e]=t[r],t[r]=n}let t4=new Date,t8=new Date;function t9(t,e,r,n){function o(e){return t(e=0==arguments.length?new Date:new Date(+e)),e}return o.floor=e=>(t(e=new Date(+e)),e),o.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),o.round=t=>{let e=o(t),r=o.ceil(t);return t-e(e(t=new Date(+t),null==r?1:Math.floor(r)),t),o.range=(r,n,i)=>{let a;let u=[];if(r=o.ceil(r),i=null==i?1:Math.floor(i),!(r0))return u;do u.push(a=new Date(+r)),e(r,i),t(r);while(at9(e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)},(t,n)=>{if(t>=t){if(n<0)for(;++n<=0;)for(;e(t,-1),!r(t););else for(;--n>=0;)for(;e(t,1),!r(t););}}),r&&(o.count=(e,n)=>(t4.setTime(+e),t8.setTime(+n),t(t4),t(t8),Math.floor(r(t4,t8))),o.every=t=>isFinite(t=Math.floor(t))&&t>0?t>1?o.filter(n?e=>n(e)%t==0:e=>o.count(0,e)%t==0):o:null),o}let t7=t9(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);t7.every=t=>isFinite(t=Math.floor(t))&&t>0?t>1?t9(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):t7:null,t7.range;let et=t9(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+1e3*e)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds());et.range;let ee=t9(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getMinutes());ee.range;let er=t9(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+6e4*e)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes());er.range;let en=t9(t=>{t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getHours());en.range;let eo=t9(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+36e5*e)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours());eo.range;let ei=t9(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1);ei.range;let ea=t9(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1);ea.range;let eu=t9(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5));function ec(t){return t9(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+7*e)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}eu.range;let el=ec(0),es=ec(1),ef=ec(2),ep=ec(3),eh=ec(4),ed=ec(5),ey=ec(6);function ev(t){return t9(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)},(t,e)=>(e-t)/6048e5)}el.range,es.range,ef.range,ep.range,eh.range,ed.range,ey.range;let eb=ev(0),em=ev(1),eg=ev(2),ex=ev(3),eO=ev(4),ew=ev(5),ej=ev(6);eb.range,em.range,eg.range,ex.range,eO.range,ew.range,ej.range;let eS=t9(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());eS.range;let eP=t9(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());eP.range;let eE=t9(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());eE.every=t=>isFinite(t=Math.floor(t))&&t>0?t9(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)}):null,eE.range;let eA=t9(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());function ek(t,e,r,n,o,i){let a=[[et,1,1e3],[et,5,5e3],[et,15,15e3],[et,30,3e4],[i,1,6e4],[i,5,3e5],[i,15,9e5],[i,30,18e5],[o,1,36e5],[o,3,108e5],[o,6,216e5],[o,12,432e5],[n,1,864e5],[n,2,1728e5],[r,1,6048e5],[e,1,2592e6],[e,3,7776e6],[t,1,31536e6]];function u(e,r,n){let o=Math.abs(r-e)/n,i=O(([,,t])=>t).right(a,o);if(i===a.length)return t.every(m(e/31536e6,r/31536e6,n));if(0===i)return t7.every(Math.max(m(e,r,n),1));let[u,c]=a[o/a[i-1][2]isFinite(t=Math.floor(t))&&t>0?t9(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)}):null,eA.range;let[eM,e_]=ek(eA,eP,eb,eu,eo,er),[eT,eC]=ek(eE,eS,el,ei,en,ee);function eI(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function eD(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function eN(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}var eB={"-":"",_:" ",0:"0"},eR=/^\s*\d+/,eL=/^%/,ez=/[\\^$*+?|[\]().{}]/g;function eU(t,e,r){var n=t<0?"-":"",o=(n?-t:t)+"",i=o.length;return n+(i[t.toLowerCase(),e]))}function eq(t,e,r){var n=eR.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function eX(t,e,r){var n=eR.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function eH(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function eV(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function eG(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function eY(t,e,r){var n=eR.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function eK(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function eJ(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function eZ(t,e,r){var n=eR.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function eQ(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function e0(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function e1(t,e,r){var n=eR.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function e2(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function e5(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function e3(t,e,r){var n=eR.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function e6(t,e,r){var n=eR.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function e4(t,e,r){var n=eR.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function e8(t,e,r){var n=eL.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function e9(t,e,r){var n=eR.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function e7(t,e,r){var n=eR.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function rt(t,e){return eU(t.getDate(),e,2)}function re(t,e){return eU(t.getHours(),e,2)}function rr(t,e){return eU(t.getHours()%12||12,e,2)}function rn(t,e){return eU(1+ei.count(eE(t),t),e,3)}function ro(t,e){return eU(t.getMilliseconds(),e,3)}function ri(t,e){return ro(t,e)+"000"}function ra(t,e){return eU(t.getMonth()+1,e,2)}function ru(t,e){return eU(t.getMinutes(),e,2)}function rc(t,e){return eU(t.getSeconds(),e,2)}function rl(t){var e=t.getDay();return 0===e?7:e}function rs(t,e){return eU(el.count(eE(t)-1,t),e,2)}function rf(t){var e=t.getDay();return e>=4||0===e?eh(t):eh.ceil(t)}function rp(t,e){return t=rf(t),eU(eh.count(eE(t),t)+(4===eE(t).getDay()),e,2)}function rh(t){return t.getDay()}function rd(t,e){return eU(es.count(eE(t)-1,t),e,2)}function ry(t,e){return eU(t.getFullYear()%100,e,2)}function rv(t,e){return eU((t=rf(t)).getFullYear()%100,e,2)}function rb(t,e){return eU(t.getFullYear()%1e4,e,4)}function rm(t,e){var r=t.getDay();return eU((t=r>=4||0===r?eh(t):eh.ceil(t)).getFullYear()%1e4,e,4)}function rg(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+eU(e/60|0,"0",2)+eU(e%60,"0",2)}function rx(t,e){return eU(t.getUTCDate(),e,2)}function rO(t,e){return eU(t.getUTCHours(),e,2)}function rw(t,e){return eU(t.getUTCHours()%12||12,e,2)}function rj(t,e){return eU(1+ea.count(eA(t),t),e,3)}function rS(t,e){return eU(t.getUTCMilliseconds(),e,3)}function rP(t,e){return rS(t,e)+"000"}function rE(t,e){return eU(t.getUTCMonth()+1,e,2)}function rA(t,e){return eU(t.getUTCMinutes(),e,2)}function rk(t,e){return eU(t.getUTCSeconds(),e,2)}function rM(t){var e=t.getUTCDay();return 0===e?7:e}function r_(t,e){return eU(eb.count(eA(t)-1,t),e,2)}function rT(t){var e=t.getUTCDay();return e>=4||0===e?eO(t):eO.ceil(t)}function rC(t,e){return t=rT(t),eU(eO.count(eA(t),t)+(4===eA(t).getUTCDay()),e,2)}function rI(t){return t.getUTCDay()}function rD(t,e){return eU(em.count(eA(t)-1,t),e,2)}function rN(t,e){return eU(t.getUTCFullYear()%100,e,2)}function rB(t,e){return eU((t=rT(t)).getUTCFullYear()%100,e,2)}function rR(t,e){return eU(t.getUTCFullYear()%1e4,e,4)}function rL(t,e){var r=t.getUTCDay();return eU((t=r>=4||0===r?eO(t):eO.ceil(t)).getUTCFullYear()%1e4,e,4)}function rz(){return"+0000"}function rU(){return"%"}function r$(t){return+t}function rF(t){return Math.floor(+t/1e3)}function rW(t){return new Date(t)}function rq(t){return t instanceof Date?+t:+new Date(+t)}function rX(t,e,r,n,o,i,a,u,c,l){var s=tw(),f=s.invert,p=s.domain,h=l(".%L"),d=l(":%S"),y=l("%I:%M"),v=l("%I %p"),b=l("%a %d"),m=l("%b %d"),g=l("%B"),x=l("%Y");function O(t){return(c(t)1)for(var r,n,o,i=1,a=t[e[0]],u=a.length;i=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:r$,s:rF,S:rc,u:rl,U:rs,V:rp,w:rh,W:rd,x:null,X:null,y:ry,Y:rb,Z:rg,"%":rU},x={a:function(t){return a[t.getUTCDay()]},A:function(t){return i[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:rx,e:rx,f:rP,g:rB,G:rL,H:rO,I:rw,j:rj,L:rS,m:rE,M:rA,p:function(t){return o[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:r$,s:rF,S:rk,u:rM,U:r_,V:rC,w:rI,W:rD,x:null,X:null,y:rN,Y:rR,Z:rz,"%":rU},O={a:function(t,e,r){var n=h.exec(e.slice(r));return n?(t.w=d.get(n[0].toLowerCase()),r+n[0].length):-1},A:function(t,e,r){var n=f.exec(e.slice(r));return n?(t.w=p.get(n[0].toLowerCase()),r+n[0].length):-1},b:function(t,e,r){var n=b.exec(e.slice(r));return n?(t.m=m.get(n[0].toLowerCase()),r+n[0].length):-1},B:function(t,e,r){var n=y.exec(e.slice(r));return n?(t.m=v.get(n[0].toLowerCase()),r+n[0].length):-1},c:function(t,r,n){return S(t,e,r,n)},d:e0,e:e0,f:e4,g:eK,G:eY,H:e2,I:e2,j:e1,L:e6,m:eQ,M:e5,p:function(t,e,r){var n=l.exec(e.slice(r));return n?(t.p=s.get(n[0].toLowerCase()),r+n[0].length):-1},q:eZ,Q:e9,s:e7,S:e3,u:eX,U:eH,V:eV,w:eq,W:eG,x:function(t,e,n){return S(t,r,e,n)},X:function(t,e,r){return S(t,n,e,r)},y:eK,Y:eY,Z:eJ,"%":e8};function w(t,e){return function(r){var n,o,i,a=[],u=-1,c=0,l=t.length;for(r instanceof Date||(r=new Date(+r));++u53)return null;"w"in i||(i.w=1),"Z"in i?(n=(o=(n=eD(eN(i.y,0,1))).getUTCDay())>4||0===o?em.ceil(n):em(n),n=ea.offset(n,(i.V-1)*7),i.y=n.getUTCFullYear(),i.m=n.getUTCMonth(),i.d=n.getUTCDate()+(i.w+6)%7):(n=(o=(n=eI(eN(i.y,0,1))).getDay())>4||0===o?es.ceil(n):es(n),n=ei.offset(n,(i.V-1)*7),i.y=n.getFullYear(),i.m=n.getMonth(),i.d=n.getDate()+(i.w+6)%7)}else("W"in i||"U"in i)&&("w"in i||(i.w="u"in i?i.u%7:"W"in i?1:0),o="Z"in i?eD(eN(i.y,0,1)).getUTCDay():eI(eN(i.y,0,1)).getDay(),i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7);return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,eD(i)):eI(i)}}function S(t,e,r,n){for(var o,i,a=0,u=e.length,c=r.length;a=c)return -1;if(37===(o=e.charCodeAt(a++))){if(!(i=O[(o=e.charAt(a++))in eB?e.charAt(a++):o])||(n=i(t,r,n))<0)return -1}else if(o!=r.charCodeAt(n++))return -1}return n}return g.x=w(r,g),g.X=w(n,g),g.c=w(e,g),x.x=w(r,x),x.X=w(n,x),x.c=w(e,x),{format:function(t){var e=w(t+="",g);return e.toString=function(){return t},e},parse:function(t){var e=j(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",x);return e.toString=function(){return t},e},utcParse:function(t){var e=j(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})).format,u.parse,l=u.utcFormat,u.utcParse;var r2=r(58492),r5=r(51139);function r3(t){for(var e=t.length,r=Array(e);--e>=0;)r[e]=e;return r}function r6(t,e){return t[e]}function r4(t){let e=[];return e.key=t,e}var r8=r(12838),r9=r.n(r8),r7=r(45652),nt=r.n(r7),ne=r(87107),nr=r.n(ne),nn=r(14632),no=r.n(nn),ni=r(24665),na=r.n(ni),nu=r(32292),nc=r.n(nu),nl=r(14607),ns=r.n(nl),nf=r(50801),np=r.n(nf),nh=r(76158),nd=r.n(nh),ny=r(6440),nv=r.n(ny),nb=r(67501),nm=r.n(nb),ng=r(4e3),nx=r.n(ng);function nO(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=e?r.apply(void 0,o):t(e-a,nP(function(){for(var t=arguments.length,e=Array(t),n=0;nt.length)&&(e=t.length);for(var r=0,n=Array(e);rn&&(o=n,i=r),[o,i]}function nL(t,e,r){if(t.lte(0))return new(nx())(0);var n=nC.getDigitCount(t.toNumber()),o=new(nx())(10).pow(n),i=t.div(o),a=1!==n?.05:.1,u=new(nx())(Math.ceil(i.div(a).toNumber())).add(r).mul(a).mul(o);return e?u:new(nx())(Math.ceil(u))}function nz(t,e,r){var n=1,o=new(nx())(t);if(!o.isint()&&r){var i=Math.abs(t);i<1?(n=new(nx())(10).pow(nC.getDigitCount(t)-1),o=new(nx())(Math.floor(o.div(n).toNumber())).mul(n)):i>1&&(o=new(nx())(Math.floor(t)))}else 0===t?o=new(nx())(Math.floor((e-1)/2)):r||(o=new(nx())(Math.floor(t)));var a=Math.floor((e-1)/2);return nM(nk(function(t){return o.add(new(nx())(t-a).mul(n)).toNumber()}),nA)(0,e)}var nU=nT(function(t){var e=nD(t,2),r=e[0],n=e[1],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=Math.max(o,2),u=nD(nR([r,n]),2),c=u[0],l=u[1];if(c===-1/0||l===1/0){var s=l===1/0?[c].concat(nI(nA(0,o-1).map(function(){return 1/0}))):[].concat(nI(nA(0,o-1).map(function(){return-1/0})),[l]);return r>n?n_(s):s}if(c===l)return nz(c,o,i);var f=function t(e,r,n,o){var i,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;if(!Number.isFinite((r-e)/(n-1)))return{step:new(nx())(0),tickMin:new(nx())(0),tickMax:new(nx())(0)};var u=nL(new(nx())(r).sub(e).div(n-1),o,a),c=Math.ceil((i=e<=0&&r>=0?new(nx())(0):(i=new(nx())(e).add(r).div(2)).sub(new(nx())(i).mod(u))).sub(e).div(u).toNumber()),l=Math.ceil(new(nx())(r).sub(i).div(u).toNumber()),s=c+l+1;return s>n?t(e,r,n,o,a+1):(s0?l+(n-s):l,c=r>0?c:c+(n-s)),{step:u,tickMin:i.sub(new(nx())(c).mul(u)),tickMax:i.add(new(nx())(l).mul(u))})}(c,l,a,i),p=f.step,h=f.tickMin,d=f.tickMax,y=nC.rangeStep(h,d.add(new(nx())(.1).mul(p)),p);return r>n?n_(y):y});nT(function(t){var e=nD(t,2),r=e[0],n=e[1],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:6,i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=Math.max(o,2),u=nD(nR([r,n]),2),c=u[0],l=u[1];if(c===-1/0||l===1/0)return[r,n];if(c===l)return nz(c,o,i);var s=nL(new(nx())(l).sub(c).div(a-1),i,0),f=nM(nk(function(t){return new(nx())(c).add(new(nx())(t).mul(s)).toNumber()}),nA)(0,a).filter(function(t){return t>=c&&t<=l});return r>n?n_(f):f});var n$=nT(function(t,e){var r=nD(t,2),n=r[0],o=r[1],i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=nD(nR([n,o]),2),u=a[0],c=a[1];if(u===-1/0||c===1/0)return[n,o];if(u===c)return[u];var l=Math.max(e,2),s=nL(new(nx())(c).sub(u).div(l-1),i,0),f=[].concat(nI(nC.rangeStep(new(nx())(u),new(nx())(c).sub(new(nx())(.99).mul(s)),s)),[c]);return n>o?n_(f):f}),nF=r(73678),nW=r(89952),nq=r(61211),nX=r(20618);function nH(t){return(nH="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function nV(t){return function(t){if(Array.isArray(t))return nG(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return nG(t,void 0);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return nG(t,void 0)}}(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function nG(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=-1,a=null!==(e=null==r?void 0:r.length)&&void 0!==e?e:0;if(a<=1)return 0;if(o&&"angleAxis"===o.axisType&&1e-6>=Math.abs(Math.abs(o.range[1]-o.range[0])-360))for(var u=o.range,c=0;c0?n[c-1].coordinate:n[a-1].coordinate,s=n[c].coordinate,f=c>=a-1?n[0].coordinate:n[c+1].coordinate,p=void 0;if((0,nW.sA)(s-l)!==(0,nW.sA)(f-s)){var h=[];if((0,nW.sA)(f-s)===(0,nW.sA)(u[1]-u[0])){p=f;var d=s+u[1]-u[0];h[0]=Math.min(d,(d+l)/2),h[1]=Math.max(d,(d+l)/2)}else{p=l;var y=f+u[1]-u[0];h[0]=Math.min(s,(y+s)/2),h[1]=Math.max(s,(y+s)/2)}var v=[Math.min(s,(p+s)/2),Math.max(s,(p+s)/2)];if(t>v[0]&&t<=v[1]||t>=h[0]&&t<=h[1]){i=n[c].index;break}}else{var b=Math.min(l,f),m=Math.max(l,f);if(t>(b+s)/2&&t<=(m+s)/2){i=n[c].index;break}}}else for(var g=0;g0&&g(r[g].coordinate+r[g-1].coordinate)/2&&t<=(r[g].coordinate+r[g+1].coordinate)/2||g===a-1&&t>(r[g].coordinate+r[g-1].coordinate)/2){i=r[g].index;break}return i},n1=function(t){var e,r,n=t.type.displayName,o=null!==(e=t.type)&&void 0!==e&&e.defaultProps?nK(nK({},t.type.defaultProps),t.props):t.props,i=o.stroke,a=o.fill;switch(n){case"Line":r=i;break;case"Area":case"Radar":r=i&&"none"!==i?i:a;break;default:r=a}return r},n2=function(t){var e=t.barSize,r=t.totalSize,n=t.stackGroups,o=void 0===n?{}:n;if(!o)return{};for(var i={},a=Object.keys(o),u=0,c=a.length;u=0});if(v&&v.length){var b=v[0].type.defaultProps,m=void 0!==b?nK(nK({},b),v[0].props):v[0].props,g=m.barSize,x=m[y];i[x]||(i[x]=[]);var O=nr()(g)?e:g;i[x].push({item:v[0],stackList:v.slice(1),barSize:nr()(O)?void 0:(0,nW.F4)(O,r,0)})}}return i},n5=function(t){var e,r=t.barGap,n=t.barCategoryGap,o=t.bandSize,i=t.sizeList,a=void 0===i?[]:i,u=t.maxBarSize,c=a.length;if(c<1)return null;var l=(0,nW.F4)(r,o,0,!0),s=[];if(a[0].barSize===+a[0].barSize){var f=!1,p=o/c,h=a.reduce(function(t,e){return t+e.barSize||0},0);(h+=(c-1)*l)>=o&&(h-=(c-1)*l,l=0),h>=o&&p>0&&(f=!0,p*=.9,h=c*p);var d={offset:((o-h)/2>>0)-l,size:0};e=a.reduce(function(t,e){var r={item:e.item,position:{offset:d.offset+d.size+l,size:f?p:e.barSize}},n=[].concat(nV(t),[r]);return d=n[n.length-1].position,e.stackList&&e.stackList.length&&e.stackList.forEach(function(t){n.push({item:t,position:d})}),n},s)}else{var y=(0,nW.F4)(n,o,0,!0);o-2*y-(c-1)*l<=0&&(l=0);var v=(o-2*y-(c-1)*l)/c;v>1&&(v>>=0);var b=u===+u?Math.min(v,u):v;e=a.reduce(function(t,e,r){var n=[].concat(nV(t),[{item:e.item,position:{offset:y+(v+l)*r+(v-b)/2,size:b}}]);return e.stackList&&e.stackList.length&&e.stackList.forEach(function(t){n.push({item:t,position:n[n.length-1].position})}),n},s)}return e},n3=function(t,e,r,n){var o=r.children,i=r.width,a=r.margin,u=i-(a.left||0)-(a.right||0),c=(0,nX.g)({children:o,legendWidth:u});if(c){var l=n||{},s=l.width,f=l.height,p=c.align,h=c.verticalAlign,d=c.layout;if(("vertical"===d||"horizontal"===d&&"middle"===h)&&"center"!==p&&(0,nW.Et)(t[p]))return nK(nK({},t),{},nJ({},p,t[p]+(s||0)));if(("horizontal"===d||"vertical"===d&&"center"===p)&&"middle"!==h&&(0,nW.Et)(t[h]))return nK(nK({},t),{},nJ({},h,t[h]+(f||0)))}return t},n6=function(t,e,r,n,o){var i=e.props.children,a=(0,nq.aS)(i,nF.u).filter(function(t){var e;return e=t.props.direction,!!nr()(o)||("horizontal"===n?"yAxis"===o:"vertical"===n||"x"===e?"xAxis"===o:"y"!==e||"yAxis"===o)});if(a&&a.length){var u=a.map(function(t){return t.props.dataKey});return t.reduce(function(t,e){var n=nZ(e,r);if(nr()(n))return t;var o=Array.isArray(n)?[nt()(n),r9()(n)]:[n,n],i=u.reduce(function(t,r){var n=nZ(e,r,0),i=o[0]-Math.abs(Array.isArray(n)?n[0]:n),a=o[1]+Math.abs(Array.isArray(n)?n[1]:n);return[Math.min(i,t[0]),Math.max(a,t[1])]},[1/0,-1/0]);return[Math.min(i[0],t[0]),Math.max(i[1],t[1])]},[1/0,-1/0])}return null},n4=function(t,e,r,n,o){var i=e.map(function(e){return n6(t,e,r,o,n)}).filter(function(t){return!nr()(t)});return i&&i.length?i.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0]):null},n8=function(t,e,r,n,o){var i=e.map(function(e){var i=e.props.dataKey;return"number"===r&&i&&n6(t,e,i,n)||nQ(t,i,r,o)});if("number"===r)return i.reduce(function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]},[1/0,-1/0]);var a={};return i.reduce(function(t,e){for(var r=0,n=e.length;r=2?2*(0,nW.sA)(a[0]-a[1])*c:c,e&&(t.ticks||t.niceTicks))?(t.ticks||t.niceTicks).map(function(t){return{coordinate:n(o?o.indexOf(t):t)+c,value:t,offset:c}}).filter(function(t){return!np()(t.coordinate)}):t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(t,e){return{coordinate:n(t)+c,value:t,index:e,offset:c}}):n.ticks&&!r?n.ticks(t.tickCount).map(function(t){return{coordinate:n(t)+c,value:t,offset:c}}):n.domain().map(function(t,e){return{coordinate:n(t)+c,value:o?o[t]:t,index:e,offset:c}})},oe=new WeakMap,or=function(t,e){if("function"!=typeof e)return t;oe.has(t)||oe.set(t,new WeakMap);var r=oe.get(t);if(r.has(e))return r.get(e);var n=function(){t.apply(void 0,arguments),e.apply(void 0,arguments)};return r.set(e,n),n},on=function(t,e,r){var n=t.scale,o=t.type,i=t.layout,a=t.axisType;if("auto"===n)return"radial"===i&&"radiusAxis"===a?{scale:f.A(),realScaleType:"band"}:"radial"===i&&"angleAxis"===a?{scale:tB(),realScaleType:"linear"}:"category"===o&&e&&(e.indexOf("LineChart")>=0||e.indexOf("AreaChart")>=0||e.indexOf("ComposedChart")>=0&&!r)?{scale:f.z(),realScaleType:"point"}:"category"===o?{scale:f.A(),realScaleType:"band"}:{scale:tB(),realScaleType:"linear"};if(na()(n)){var u="scale".concat(nd()(n));return{scale:(s[u]||f.z)(),realScaleType:s[u]?u:"point"}}return no()(n)?{scale:n}:{scale:f.z(),realScaleType:"point"}},oo=function(t){var e=t.domain();if(e&&!(e.length<=2)){var r=e.length,n=t.range(),o=Math.min(n[0],n[1])-1e-4,i=Math.max(n[0],n[1])+1e-4,a=t(e[0]),u=t(e[r-1]);(ai||ui)&&t.domain([e[0],e[r-1]])}},oi=function(t,e){if(!t)return null;for(var r=0,n=t.length;rn)&&(o[1]=n),o[0]>n&&(o[0]=n),o[1]=0?(t[a][r][0]=o,t[a][r][1]=o+u,o=t[a][r][1]):(t[a][r][0]=i,t[a][r][1]=i+u,i=t[a][r][1])}},expand:function(t,e){if((n=t.length)>0){for(var r,n,o,i=0,a=t[0].length;i0){for(var r,n=0,o=t[e[0]],i=o.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,o,i=0,a=1;a=0?(t[i][r][0]=o,t[i][r][1]=o+a,o=t[i][r][1]):(t[i][r][0]=0,t[i][r][1]=0)}}},oc=function(t,e,r){var n=e.map(function(t){return t.props.dataKey}),o=ou[r];return(function(){var t=(0,r5.A)([]),e=r3,r=r1,n=r6;function o(o){var i,a,u=Array.from(t.apply(this,arguments),r4),c=u.length,l=-1;for(let t of o)for(i=0,++l;i=0?0:o<0?o:n}return r[0]},od=function(t,e){var r,n=(null!==(r=t.type)&&void 0!==r&&r.defaultProps?nK(nK({},t.type.defaultProps),t.props):t.props).stackId;if((0,nW.vh)(n)){var o=e[n];if(o){var i=o.items.indexOf(t);return i>=0?o.stackedData[i]:null}}return null},oy=function(t,e,r){return Object.keys(t).reduce(function(n,o){var i=t[o].stackedData.reduce(function(t,n){var o=n.slice(e,r+1).reduce(function(t,e){return[nt()(e.concat([t[0]]).filter(nW.Et)),r9()(e.concat([t[1]]).filter(nW.Et))]},[1/0,-1/0]);return[Math.min(t[0],o[0]),Math.max(t[1],o[1])]},[1/0,-1/0]);return[Math.min(i[0],n[0]),Math.max(i[1],n[1])]},[1/0,-1/0]).map(function(t){return t===1/0||t===-1/0?0:t})},ov=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,ob=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,om=function(t,e,r){if(no()(t))return t(e,r);if(!Array.isArray(t))return e;var n=[];if((0,nW.Et)(t[0]))n[0]=r?t[0]:Math.min(t[0],e[0]);else if(ov.test(t[0])){var o=+ov.exec(t[0])[1];n[0]=e[0]-o}else no()(t[0])?n[0]=t[0](e[0]):n[0]=e[0];if((0,nW.Et)(t[1]))n[1]=r?t[1]:Math.max(t[1],e[1]);else if(ob.test(t[1])){var i=+ob.exec(t[1])[1];n[1]=e[1]+i}else no()(t[1])?n[1]=t[1](e[1]):n[1]=e[1];return n},og=function(t,e,r){if(t&&t.scale&&t.scale.bandwidth){var n=t.scale.bandwidth();if(!r||n>0)return n}if(t&&e&&e.length>=2){for(var o=nm()(e,function(t){return t.coordinate}),i=1/0,a=1,u=o.length;a{"use strict";r.d(e,{A3:()=>f,Pu:()=>s});var n=r(95392);function o(t){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function a(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};if(null==t||n.m.isSsr)return{width:0,height:0};var o=(Object.keys(e=a({},r)).forEach(function(t){e[t]||delete e[t]}),e),i=JSON.stringify({text:t,copyStyle:o});if(u.widthCache[i])return u.widthCache[i];try{var s=document.getElementById(l);s||((s=document.createElement("span")).setAttribute("id",l),s.setAttribute("aria-hidden","true"),document.body.appendChild(s));var f=a(a({},c),o);Object.assign(s.style,f),s.textContent="".concat(t);var p=s.getBoundingClientRect(),h={width:p.width,height:p.height};return u.widthCache[i]=h,++u.cacheCount>2e3&&(u.cacheCount=0,u.widthCache={}),h}catch(t){return{width:0,height:0}}},f=function(t){return{top:t.top+window.scrollY-document.documentElement.clientTop,left:t.left+window.scrollX-document.documentElement.clientLeft}}},89952:(t,e,r)=>{"use strict";r.d(e,{CG:()=>g,Dj:()=>x,Et:()=>h,F4:()=>b,NF:()=>v,_3:()=>p,eP:()=>O,lX:()=>m,sA:()=>f,vh:()=>d});var n=r(24665),o=r.n(n),i=r(50801),a=r.n(i),u=r(32292),c=r.n(u),l=r(45493),s=r.n(l),f=function(t){return 0===t?0:t>0?1:-1},p=function(t){return o()(t)&&t.indexOf("%")===t.length-1},h=function(t){return s()(t)&&!a()(t)},d=function(t){return h(t)||o()(t)},y=0,v=function(t){var e=++y;return"".concat(t||"").concat(e)},b=function(t,e){var r,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!h(t)&&!o()(t))return n;if(p(t)){var u=t.indexOf("%");r=e*parseFloat(t.slice(0,u))/100}else r=+t;return a()(r)&&(r=n),i&&r>e&&(r=e),r},m=function(t){if(!t)return null;var e=Object.keys(t);return e&&e.length?t[e[0]]:null},g=function(t){if(!Array.isArray(t))return!1;for(var e=t.length,r={},n=0;n{"use strict";r.d(e,{m:()=>n});var n={isSsr:!("undefined"!=typeof window&&window.document&&window.document.createElement&&window.setTimeout),get:function(t){return n[t]},set:function(t,e){if("string"==typeof t)n[t]=e;else{var r=Object.keys(t);r&&r.length&&r.forEach(function(e){n[e]=t[e]})}}}},42228:(t,e,r)=>{"use strict";r.d(e,{R:()=>n});var n=function(t,e){for(var r=arguments.length,n=Array(r>2?r-2:0),o=2;o{"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function i(t){for(var e=1;eu,Kg:()=>a,yy:()=>f}),r(87107),r(20107),r(14632);var a=Math.PI/180,u=function(t,e,r,n){return{x:t+Math.cos(-a*n)*r,y:e+Math.sin(-a*n)*r}},c=function(t,e){var r=t.x,n=t.y;return Math.sqrt(Math.pow(r-e.x,2)+Math.pow(n-e.y,2))},l=function(t,e){var r=t.x,n=t.y,o=e.cx,i=e.cy,a=c({x:r,y:n},{x:o,y:i});if(a<=0)return{radius:a};var u=Math.acos((r-o)/a);return n>i&&(u=2*Math.PI-u),{radius:a,angle:180*u/Math.PI,angleInRadian:u}},s=function(t){var e=t.startAngle,r=t.endAngle,n=Math.min(Math.floor(e/360),Math.floor(r/360));return{startAngle:e-360*n,endAngle:r-360*n}},f=function(t,e){var r,n=l({x:t.x,y:t.y},e),o=n.radius,a=n.angle,u=e.innerRadius,c=e.outerRadius;if(oc)return!1;if(0===o)return!0;var f=s(e),p=f.startAngle,h=f.endAngle,d=a;if(p<=h){for(;d>h;)d-=360;for(;d=p&&d<=h}else{for(;d>p;)d-=360;for(;d=h&&d<=p}return r?i(i({},e),{},{radius:o,angle:d+360*Math.min(Math.floor(e.startAngle/360),Math.floor(e.endAngle/360))}):null}},61211:(t,e,r)=>{"use strict";r.d(e,{AW:()=>L,BU:()=>k,J9:()=>I,Me:()=>M,Mn:()=>j,OV:()=>D,X_:()=>R,aS:()=>A,ee:()=>B,sT:()=>T});var n=r(32292),o=r.n(n),i=r(87107),a=r.n(i),u=r(24665),c=r.n(u),l=r(14632),s=r.n(l),f=r(50683),p=r.n(f),h=r(20107),d=r(55473),y=r(89952),v=r(45707),b=r(35956),m=["children"],g=["children"];function x(t,e){if(null==t)return{};var r,n,o=function(t,e){if(null==t)return{};var r={};for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){if(e.indexOf(n)>=0)continue;r[n]=t[n]}return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(o[r]=t[r])}return o}function O(t){return(O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var w={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart"},j=function(t){return"string"==typeof t?t:t?t.displayName||t.name||"Component":""},S=null,P=null,E=function t(e){if(e===S&&Array.isArray(P))return P;var r=[];return h.Children.forEach(e,function(e){a()(e)||((0,d.zv)(e)?r=r.concat(t(e.props.children)):r.push(e))}),P=r,S=e,r};function A(t,e){var r=[],n=[];return n=Array.isArray(e)?e.map(function(t){return j(t)}):[j(e)],E(t).forEach(function(t){var e=o()(t,"type.displayName")||o()(t,"type.name");-1!==n.indexOf(e)&&r.push(t)}),r}function k(t,e){var r=A(t,e);return r&&r[0]}var M=function(t){if(!t||!t.props)return!1;var e=t.props,r=e.width,n=e.height;return!!(0,y.Et)(r)&&!(r<=0)&&!!(0,y.Et)(n)&&!(n<=0)},_=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],T=function(t){return t&&"object"===O(t)&&"clipDot"in t},C=function(t,e,r,n){var o,i=null!==(o=null===b.VU||void 0===b.VU?void 0:b.VU[n])&&void 0!==o?o:[];return!s()(t)&&(n&&i.includes(e)||b.QQ.includes(e))||r&&b.j2.includes(e)},I=function(t,e,r){if(!t||"function"==typeof t||"boolean"==typeof t)return null;var n=t;if((0,h.isValidElement)(t)&&(n=t.props),!p()(n))return null;var o={};return Object.keys(n).forEach(function(t){var i;C(null===(i=n)||void 0===i?void 0:i[t],t,e,r)&&(o[t]=n[t])}),o},D=function t(e,r){if(e===r)return!0;var n=h.Children.count(e);if(n!==h.Children.count(r))return!1;if(0===n)return!0;if(1===n)return N(Array.isArray(e)?e[0]:e,Array.isArray(r)?r[0]:r);for(var o=0;o=0)r.push(t);else if(t){var i=j(t.type),a=e[i]||{},u=a.handler,l=a.once;if(u&&(!l||!n[i])){var s=u(t,i,o);r.push(s),n[i]=!0}}}),r},R=function(t){var e=t&&t.type;return e&&w[e]?w[e]:null},L=function(t,e){return E(e).indexOf(t)}},45707:(t,e,r)=>{"use strict";function n(t,e){for(var r in t)if(({}).hasOwnProperty.call(t,r)&&(!({}).hasOwnProperty.call(e,r)||t[r]!==e[r]))return!1;for(var n in e)if(({}).hasOwnProperty.call(e,n)&&!({}).hasOwnProperty.call(t,n))return!1;return!0}r.d(e,{b:()=>n})},20618:(t,e,r)=>{"use strict";r.d(e,{g:()=>l});var n=r(58736),o=r(95492),i=r(61211);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function c(t){for(var e=1;e{"use strict";r.d(e,{s:()=>u});var n=r(79948),o=r.n(n),i=r(14632),a=r.n(i);function u(t,e,r){return!0===e?o()(t,r):a()(e)?o()(t,e):t}},35956:(t,e,r)=>{"use strict";r.d(e,{QQ:()=>u,VU:()=>l,XC:()=>p,_U:()=>f,j2:()=>s});var n=r(20107),o=r(50683),i=r.n(o);function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var u=["aria-activedescendant","aria-atomic","aria-autocomplete","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","className","color","height","id","lang","max","media","method","min","name","style","target","width","role","tabIndex","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","d","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","end","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filter","filterRes","filterUnits","floodColor","floodOpacity","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","format","from","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","href","ideographic","imageRendering","in2","in","intercept","k1","k2","k3","k4","k","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","offset","opacity","operator","order","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","r","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","result","rotate","rx","ry","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","string","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","to","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","values","vectorEffect","version","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewTarget","visibility","vMathematical","widths","wordSpacing","writingMode","x1","x2","x","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","y1","y2","y","yChannelSelector","z","zoomAndPan","ref","key","angle"],c=["points","pathLength"],l={svg:["viewBox","children"],polygon:c,polyline:c},s=["dangerouslySetInnerHTML","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],f=function(t,e){if(!t||"function"==typeof t||"boolean"==typeof t)return null;var r=t;if((0,n.isValidElement)(t)&&(r=t.props),!i()(r))return null;var o={};return Object.keys(r).forEach(function(t){s.includes(t)&&(o[t]=e||function(e){return r[t](r,e)})}),o},p=function(t,e,r){if(!i()(t)||"object"!==a(t))return null;var n=null;return Object.keys(t).forEach(function(o){var i=t[o];s.includes(o)&&"function"==typeof i&&(n||(n={}),n[o]=function(t){return i(e,r,t),null})}),n}},63949:(t,e,r)=>{"use strict";r.d(e,{A:()=>i,z:()=>a});var n=r(87982),o=r(68399);function i(){var t,e,r=(0,o.A)().unknown(void 0),a=r.domain,u=r.range,c=0,l=1,s=!1,f=0,p=0,h=.5;function d(){var r=a().length,n=l{"use strict";function n(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function o(t,e){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof e?this.interpolator(e):this.range(e)}return this}r.d(e,{C:()=>n,K:()=>o})},68399:(t,e,r)=>{"use strict";r.d(e,{A:()=>function t(){var e=new n,r=[],o=[],i=u;function c(t){let n=e.get(t);if(void 0===n){if(i!==u)return i;e.set(t,n=r.push(t)-1)}return o[n%o.length]}return c.domain=function(t){if(!arguments.length)return r.slice();for(let o of(r=[],e=new n,t))e.has(o)||e.set(o,r.push(o)-1);return c},c.range=function(t){return arguments.length?(o=Array.from(t),c):o.slice()},c.unknown=function(t){return arguments.length?(i=t,c):i},c.copy=function(){return t(r,o).unknown(i)},a.C.apply(c,arguments),c},h:()=>u});class n extends Map{constructor(t,e=i){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(let[e,r]of t)this.set(e,r)}get(t){return super.get(o(this,t))}has(t){return super.has(o(this,t))}set(t,e){return super.set(function({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}(this,t),e)}delete(t){return super.delete(function({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}(this,t))}}function o({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function i(t){return null!==t&&"object"==typeof t?t.valueOf():t}var a=r(87982);let u=Symbol("implicit")},58492:(t,e,r)=>{"use strict";function n(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}r.d(e,{A:()=>n}),Array.prototype.slice},51139:(t,e,r)=>{"use strict";function n(t){return function(){return t}}r.d(e,{A:()=>n})},95327:(t,e,r)=>{"use strict";r.d(e,{i:()=>c});let n=Math.PI,o=2*n,i=o-1e-6;function a(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw Error(`invalid digits: ${t}`);if(e>15)return a;let r=10**e;return function(t){this._+=t[0];for(let e=1,n=t.length;e1e-6){if(Math.abs(f*c-l*s)>1e-6&&i){let h=r-a,d=o-u,y=c*c+l*l,v=Math.sqrt(y),b=Math.sqrt(p),m=i*Math.tan((n-Math.acos((y+p-(h*h+d*d))/(2*v*b)))/2),g=m/b,x=m/v;Math.abs(g-1)>1e-6&&this._append`L${t+g*s},${e+g*f}`,this._append`A${i},${i},0,0,${+(f*h>s*d)},${this._x1=t+x*c},${this._y1=e+x*l}`}else this._append`L${this._x1=t},${this._y1=e}`}}arc(t,e,r,a,u,c){if(t=+t,e=+e,c=!!c,(r=+r)<0)throw Error(`negative radius: ${r}`);let l=r*Math.cos(a),s=r*Math.sin(a),f=t+l,p=e+s,h=1^c,d=c?a-u:u-a;null===this._x1?this._append`M${f},${p}`:(Math.abs(this._x1-f)>1e-6||Math.abs(this._y1-p)>1e-6)&&this._append`L${f},${p}`,r&&(d<0&&(d=d%o+o),d>i?this._append`A${r},${r},0,1,${h},${t-l},${e-s}A${r},${r},0,1,${h},${this._x1=f},${this._y1=p}`:d>1e-6&&this._append`A${r},${r},0,${+(d>=n)},${h},${this._x1=t+r*Math.cos(u)},${this._y1=e+r*Math.sin(u)}`)}rect(t,e,r,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+n}h${-r}Z`}toString(){return this._}}function c(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{let t=Math.floor(r);if(!(t>=0))throw RangeError(`invalid digits: ${r}`);e=t}return t},()=>new u(e)}u.prototype},45082:(t,e,r)=>{"use strict";function n(t,e){if(!t)throw Error("Invariant failed")}r.d(e,{A:()=>n})}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1457-e5968d4919dfc217.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1457-e5968d4919dfc217.js deleted file mode 100644 index 8301d2b..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1457-e5968d4919dfc217.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1457],{56703:(e,t,r)=>{r.d(t,{q:()=>n});function n(e,[t,r]){return Math.min(r,Math.max(t,e))}},67595:(e,t,r)=>{r.d(t,{N:()=>s});var n=r(20107),l=r(81045),o=r(74111),a=r(61837),i=r(20475);function s(e){let t=e+"CollectionProvider",[r,s]=(0,l.A)(t),[u,d]=r(t,{collectionRef:{current:null},itemMap:new Map}),c=e=>{let{scope:t,children:r}=e,l=n.useRef(null),o=n.useRef(new Map).current;return(0,i.jsx)(u,{scope:t,itemMap:o,collectionRef:l,children:r})};c.displayName=t;let p=e+"CollectionSlot",f=n.forwardRef((e,t)=>{let{scope:r,children:n}=e,l=d(p,r),s=(0,o.s)(t,l.collectionRef);return(0,i.jsx)(a.DX,{ref:s,children:n})});f.displayName=p;let v=e+"CollectionItemSlot",h="data-radix-collection-item",m=n.forwardRef((e,t)=>{let{scope:r,children:l,...s}=e,u=n.useRef(null),c=(0,o.s)(t,u),p=d(v,r);return n.useEffect(()=>(p.itemMap.set(u,{ref:u,...s}),()=>void p.itemMap.delete(u))),(0,i.jsx)(a.DX,{[h]:"",ref:c,children:l})});return m.displayName=v,[{Provider:c,Slot:f,ItemSlot:m},function(t){let r=d(e+"CollectionConsumer",t);return n.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(h,"]")));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},s]}},25289:(e,t,r)=>{r.d(t,{jH:()=>o});var n=r(20107);r(20475);var l=n.createContext(void 0);function o(e){let t=n.useContext(l);return e||t||"ltr"}},73725:(e,t,r)=>{r.d(t,{b:()=>i});var n=r(20107),l=r(4589),o=r(20475),a=n.forwardRef((e,t)=>(0,o.jsx)(l.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));a.displayName="Label";var i=a},32301:(e,t,r)=>{r.d(t,{In:()=>eE,JU:()=>e_,LM:()=>eA,PP:()=>eO,UC:()=>eL,VF:()=>eG,WT:()=>eI,YJ:()=>eH,ZL:()=>eD,bL:()=>eP,l9:()=>eM,p4:()=>eV,q7:()=>eB,wn:()=>eF,wv:()=>eK});var n=r(20107),l=r(25642),o=r(56703),a=r(94521),i=r(67595),s=r(74111),u=r(80938),d=r(25289),c=r(15975),p=r(62894),f=r(98246),v=r(72763),h=r(14673),m=r(82412),w=r(4589),g=r(61837),x=r(85547),y=r(81255),b=r(58013),S=r(48543),C=r(20232),j=r(58020),R=r(41364),N=r(20475),k=[" ","Enter","ArrowUp","ArrowDown"],T=[" ","Enter"],P="Select",[M,I,E]=(0,i.N)(P),[D,L]=(0,u.A)(P,[E,h.Bk]),A=(0,h.Bk)(),[H,_]=D(P),[B,V]=D(P),G=e=>{let{__scopeSelect:t,children:r,open:l,defaultOpen:o,onOpenChange:a,value:i,defaultValue:s,onValueChange:u,dir:c,name:p,autoComplete:f,disabled:m,required:w,form:g}=e,x=A(t),[b,S]=n.useState(null),[C,j]=n.useState(null),[R,k]=n.useState(!1),T=(0,d.jH)(c),[P=!1,I]=(0,y.i)({prop:l,defaultProp:o,onChange:a}),[E,D]=(0,y.i)({prop:i,defaultProp:s,onChange:u}),L=n.useRef(null),_=!b||g||!!b.closest("form"),[V,G]=n.useState(new Set),O=Array.from(V).map(e=>e.props.value).join(";");return(0,N.jsx)(h.bL,{...x,children:(0,N.jsxs)(H,{required:w,scope:t,trigger:b,onTriggerChange:S,valueNode:C,onValueNodeChange:j,valueNodeHasChildren:R,onValueNodeHasChildrenChange:k,contentId:(0,v.B)(),value:E,onValueChange:D,open:P,onOpenChange:I,dir:T,triggerPointerDownPosRef:L,disabled:m,children:[(0,N.jsx)(M.Provider,{scope:t,children:(0,N.jsx)(B,{scope:e.__scopeSelect,onNativeOptionAdd:n.useCallback(e=>{G(t=>new Set(t).add(e))},[]),onNativeOptionRemove:n.useCallback(e=>{G(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),_?(0,N.jsxs)(eN,{"aria-hidden":!0,required:w,tabIndex:-1,name:p,autoComplete:f,value:E,onChange:e=>D(e.target.value),disabled:m,form:g,children:[void 0===E?(0,N.jsx)("option",{value:""}):null,Array.from(V)]},O):null]})})};G.displayName=P;var O="SelectTrigger",F=n.forwardRef((e,t)=>{let{__scopeSelect:r,disabled:l=!1,...o}=e,i=A(r),u=_(O,r),d=u.disabled||l,c=(0,s.s)(t,u.onTriggerChange),p=I(r),f=n.useRef("touch"),[v,m,g]=ek(e=>{let t=p().filter(e=>!e.disabled),r=t.find(e=>e.value===u.value),n=eT(t,e,r);void 0!==n&&u.onValueChange(n.value)}),x=e=>{d||(u.onOpenChange(!0),g()),e&&(u.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,N.jsx)(h.Mz,{asChild:!0,...i,children:(0,N.jsx)(w.sG.button,{type:"button",role:"combobox","aria-controls":u.contentId,"aria-expanded":u.open,"aria-required":u.required,"aria-autocomplete":"none",dir:u.dir,"data-state":u.open?"open":"closed",disabled:d,"data-disabled":d?"":void 0,"data-placeholder":eR(u.value)?"":void 0,...o,ref:c,onClick:(0,a.m)(o.onClick,e=>{e.currentTarget.focus(),"mouse"!==f.current&&x(e)}),onPointerDown:(0,a.m)(o.onPointerDown,e=>{f.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(x(e),e.preventDefault())}),onKeyDown:(0,a.m)(o.onKeyDown,e=>{let t=""!==v.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||m(e.key),(!t||" "!==e.key)&&k.includes(e.key)&&(x(),e.preventDefault())})})})});F.displayName=O;var K="SelectValue",W=n.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:l,children:o,placeholder:a="",...i}=e,u=_(K,r),{onValueNodeHasChildrenChange:d}=u,c=void 0!==o,p=(0,s.s)(t,u.onValueNodeChange);return(0,b.N)(()=>{d(c)},[d,c]),(0,N.jsx)(w.sG.span,{...i,ref:p,style:{pointerEvents:"none"},children:eR(u.value)?(0,N.jsx)(N.Fragment,{children:a}):o})});W.displayName=K;var U=n.forwardRef((e,t)=>{let{__scopeSelect:r,children:n,...l}=e;return(0,N.jsx)(w.sG.span,{"aria-hidden":!0,...l,ref:t,children:n||"▼"})});U.displayName="SelectIcon";var q=e=>(0,N.jsx)(m.Z,{asChild:!0,...e});q.displayName="SelectPortal";var z="SelectContent",X=n.forwardRef((e,t)=>{let r=_(z,e.__scopeSelect),[o,a]=n.useState();return((0,b.N)(()=>{a(new DocumentFragment)},[]),r.open)?(0,N.jsx)(J,{...e,ref:t}):o?l.createPortal((0,N.jsx)(Z,{scope:e.__scopeSelect,children:(0,N.jsx)(M.Slot,{scope:e.__scopeSelect,children:(0,N.jsx)("div",{children:e.children})})}),o):null});X.displayName=z;var[Z,Y]=D(z),J=n.forwardRef((e,t)=>{let{__scopeSelect:r,position:l="item-aligned",onCloseAutoFocus:o,onEscapeKeyDown:i,onPointerDownOutside:u,side:d,sideOffset:v,align:h,alignOffset:m,arrowPadding:w,collisionBoundary:x,collisionPadding:y,sticky:b,hideWhenDetached:S,avoidCollisions:C,...k}=e,T=_(z,r),[P,M]=n.useState(null),[E,D]=n.useState(null),L=(0,s.s)(t,e=>M(e)),[A,H]=n.useState(null),[B,V]=n.useState(null),G=I(r),[O,F]=n.useState(!1),K=n.useRef(!1);n.useEffect(()=>{if(P)return(0,j.Eq)(P)},[P]),(0,p.Oh)();let W=n.useCallback(e=>{let[t,...r]=G().map(e=>e.ref.current),[n]=r.slice(-1),l=document.activeElement;for(let r of e)if(r===l||(null==r||r.scrollIntoView({block:"nearest"}),r===t&&E&&(E.scrollTop=0),r===n&&E&&(E.scrollTop=E.scrollHeight),null==r||r.focus(),document.activeElement!==l))return},[G,E]),U=n.useCallback(()=>W([A,P]),[W,A,P]);n.useEffect(()=>{O&&U()},[O,U]);let{onOpenChange:q,triggerPointerDownPosRef:X}=T;n.useEffect(()=>{if(P){let e={x:0,y:0},t=t=>{var r,n,l,o;e={x:Math.abs(Math.round(t.pageX)-(null!==(l=null===(r=X.current)||void 0===r?void 0:r.x)&&void 0!==l?l:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(n=X.current)||void 0===n?void 0:n.y)&&void 0!==o?o:0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():P.contains(r.target)||q(!1),document.removeEventListener("pointermove",t),X.current=null};return null!==X.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[P,q,X]),n.useEffect(()=>{let e=()=>q(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[q]);let[Y,J]=ek(e=>{let t=G().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=eT(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),ee=n.useCallback((e,t,r)=>{let n=!K.current&&!r;(void 0!==T.value&&T.value===t||n)&&(H(e),n&&(K.current=!0))},[T.value]),et=n.useCallback(()=>null==P?void 0:P.focus(),[P]),er=n.useCallback((e,t,r)=>{let n=!K.current&&!r;(void 0!==T.value&&T.value===t||n)&&V(e)},[T.value]),en="popper"===l?$:Q,el=en===$?{side:d,sideOffset:v,align:h,alignOffset:m,arrowPadding:w,collisionBoundary:x,collisionPadding:y,sticky:b,hideWhenDetached:S,avoidCollisions:C}:{};return(0,N.jsx)(Z,{scope:r,content:P,viewport:E,onViewportChange:D,itemRefCallback:ee,selectedItem:A,onItemLeave:et,itemTextRefCallback:er,focusSelectedItem:U,selectedItemText:B,position:l,isPositioned:O,searchRef:Y,children:(0,N.jsx)(R.A,{as:g.DX,allowPinchZoom:!0,children:(0,N.jsx)(f.n,{asChild:!0,trapped:T.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,a.m)(o,e=>{var t;null===(t=T.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}),children:(0,N.jsx)(c.qW,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:u,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>T.onOpenChange(!1),children:(0,N.jsx)(en,{role:"listbox",id:T.contentId,"data-state":T.open?"open":"closed",dir:T.dir,onContextMenu:e=>e.preventDefault(),...k,...el,onPlaced:()=>F(!0),ref:L,style:{display:"flex",flexDirection:"column",outline:"none",...k.style},onKeyDown:(0,a.m)(k.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||J(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=G().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>W(t)),e.preventDefault()}})})})})})})});J.displayName="SelectContentImpl";var Q=n.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:l,...a}=e,i=_(z,r),u=Y(z,r),[d,c]=n.useState(null),[p,f]=n.useState(null),v=(0,s.s)(t,e=>f(e)),h=I(r),m=n.useRef(!1),g=n.useRef(!0),{viewport:x,selectedItem:y,selectedItemText:S,focusSelectedItem:C}=u,j=n.useCallback(()=>{if(i.trigger&&i.valueNode&&d&&p&&x&&y&&S){let e=i.trigger.getBoundingClientRect(),t=p.getBoundingClientRect(),r=i.valueNode.getBoundingClientRect(),n=S.getBoundingClientRect();if("rtl"!==i.dir){let l=n.left-t.left,a=r.left-l,i=e.left-a,s=e.width+i,u=Math.max(s,t.width),c=window.innerWidth-10,p=(0,o.q)(a,[10,Math.max(10,c-u)]);d.style.minWidth=s+"px",d.style.left=p+"px"}else{let l=t.right-n.right,a=window.innerWidth-r.right-l,i=window.innerWidth-e.right-a,s=e.width+i,u=Math.max(s,t.width),c=window.innerWidth-10,p=(0,o.q)(a,[10,Math.max(10,c-u)]);d.style.minWidth=s+"px",d.style.right=p+"px"}let a=h(),s=window.innerHeight-20,u=x.scrollHeight,c=window.getComputedStyle(p),f=parseInt(c.borderTopWidth,10),v=parseInt(c.paddingTop,10),w=parseInt(c.borderBottomWidth,10),g=f+v+u+parseInt(c.paddingBottom,10)+w,b=Math.min(5*y.offsetHeight,g),C=window.getComputedStyle(x),j=parseInt(C.paddingTop,10),R=parseInt(C.paddingBottom,10),N=e.top+e.height/2-10,k=y.offsetHeight/2,T=f+v+(y.offsetTop+k);if(T<=N){let e=a.length>0&&y===a[a.length-1].ref.current;d.style.bottom="0px";let t=Math.max(s-N,k+(e?R:0)+(p.clientHeight-x.offsetTop-x.offsetHeight)+w);d.style.height=T+t+"px"}else{let e=a.length>0&&y===a[0].ref.current;d.style.top="0px";let t=Math.max(N,f+x.offsetTop+(e?j:0)+k);d.style.height=t+(g-T)+"px",x.scrollTop=T-N+x.offsetTop}d.style.margin="".concat(10,"px 0"),d.style.minHeight=b+"px",d.style.maxHeight=s+"px",null==l||l(),requestAnimationFrame(()=>m.current=!0)}},[h,i.trigger,i.valueNode,d,p,x,y,S,i.dir,l]);(0,b.N)(()=>j(),[j]);let[R,k]=n.useState();(0,b.N)(()=>{p&&k(window.getComputedStyle(p).zIndex)},[p]);let T=n.useCallback(e=>{e&&!0===g.current&&(j(),null==C||C(),g.current=!1)},[j,C]);return(0,N.jsx)(ee,{scope:r,contentWrapper:d,shouldExpandOnScrollRef:m,onScrollButtonChange:T,children:(0,N.jsx)("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:R},children:(0,N.jsx)(w.sG.div,{...a,ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});Q.displayName="SelectItemAlignedPosition";var $=n.forwardRef((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:l=10,...o}=e,a=A(r);return(0,N.jsx)(h.UC,{...a,...o,ref:t,align:n,collisionPadding:l,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});$.displayName="SelectPopperPosition";var[ee,et]=D(z,{}),er="SelectViewport",en=n.forwardRef((e,t)=>{let{__scopeSelect:r,nonce:l,...o}=e,i=Y(er,r),u=et(er,r),d=(0,s.s)(t,i.onViewportChange),c=n.useRef(0);return(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:l}),(0,N.jsx)(M.Slot,{scope:r,children:(0,N.jsx)(w.sG.div,{"data-radix-select-viewport":"",role:"presentation",...o,ref:d,style:{position:"relative",flex:1,overflow:"hidden auto",...o.style},onScroll:(0,a.m)(o.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=u;if((null==n?void 0:n.current)&&r){let e=Math.abs(c.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,l=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(l0?i:0,r.style.justifyContent="flex-end")}}}c.current=t.scrollTop})})})]})});en.displayName=er;var el="SelectGroup",[eo,ea]=D(el),ei=n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,l=(0,v.B)();return(0,N.jsx)(eo,{scope:r,id:l,children:(0,N.jsx)(w.sG.div,{role:"group","aria-labelledby":l,...n,ref:t})})});ei.displayName=el;var es="SelectLabel",eu=n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,l=ea(es,r);return(0,N.jsx)(w.sG.div,{id:l.id,...n,ref:t})});eu.displayName=es;var ed="SelectItem",[ec,ep]=D(ed),ef=n.forwardRef((e,t)=>{let{__scopeSelect:r,value:l,disabled:o=!1,textValue:i,...u}=e,d=_(ed,r),c=Y(ed,r),p=d.value===l,[f,h]=n.useState(null!=i?i:""),[m,g]=n.useState(!1),x=(0,s.s)(t,e=>{var t;return null===(t=c.itemRefCallback)||void 0===t?void 0:t.call(c,e,l,o)}),y=(0,v.B)(),b=n.useRef("touch"),S=()=>{o||(d.onValueChange(l),d.onOpenChange(!1))};if(""===l)throw Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,N.jsx)(ec,{scope:r,value:l,disabled:o,textId:y,isSelected:p,onItemTextChange:n.useCallback(e=>{h(t=>{var r;return t||(null!==(r=null==e?void 0:e.textContent)&&void 0!==r?r:"").trim()})},[]),children:(0,N.jsx)(M.ItemSlot,{scope:r,value:l,disabled:o,textValue:f,children:(0,N.jsx)(w.sG.div,{role:"option","aria-labelledby":y,"data-highlighted":m?"":void 0,"aria-selected":p&&m,"data-state":p?"checked":"unchecked","aria-disabled":o||void 0,"data-disabled":o?"":void 0,tabIndex:o?void 0:-1,...u,ref:x,onFocus:(0,a.m)(u.onFocus,()=>g(!0)),onBlur:(0,a.m)(u.onBlur,()=>g(!1)),onClick:(0,a.m)(u.onClick,()=>{"mouse"!==b.current&&S()}),onPointerUp:(0,a.m)(u.onPointerUp,()=>{"mouse"===b.current&&S()}),onPointerDown:(0,a.m)(u.onPointerDown,e=>{b.current=e.pointerType}),onPointerMove:(0,a.m)(u.onPointerMove,e=>{if(b.current=e.pointerType,o){var t;null===(t=c.onItemLeave)||void 0===t||t.call(c)}else"mouse"===b.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,a.m)(u.onPointerLeave,e=>{if(e.currentTarget===document.activeElement){var t;null===(t=c.onItemLeave)||void 0===t||t.call(c)}}),onKeyDown:(0,a.m)(u.onKeyDown,e=>{var t;(null===(t=c.searchRef)||void 0===t?void 0:t.current)!==""&&" "===e.key||(T.includes(e.key)&&S()," "===e.key&&e.preventDefault())})})})})});ef.displayName=ed;var ev="SelectItemText",eh=n.forwardRef((e,t)=>{let{__scopeSelect:r,className:o,style:a,...i}=e,u=_(ev,r),d=Y(ev,r),c=ep(ev,r),p=V(ev,r),[f,v]=n.useState(null),h=(0,s.s)(t,e=>v(e),c.onItemTextChange,e=>{var t;return null===(t=d.itemTextRefCallback)||void 0===t?void 0:t.call(d,e,c.value,c.disabled)}),m=null==f?void 0:f.textContent,g=n.useMemo(()=>(0,N.jsx)("option",{value:c.value,disabled:c.disabled,children:m},c.value),[c.disabled,c.value,m]),{onNativeOptionAdd:x,onNativeOptionRemove:y}=p;return(0,b.N)(()=>(x(g),()=>y(g)),[x,y,g]),(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)(w.sG.span,{id:c.textId,...i,ref:h}),c.isSelected&&u.valueNode&&!u.valueNodeHasChildren?l.createPortal(i.children,u.valueNode):null]})});eh.displayName=ev;var em="SelectItemIndicator",ew=n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return ep(em,r).isSelected?(0,N.jsx)(w.sG.span,{"aria-hidden":!0,...n,ref:t}):null});ew.displayName=em;var eg="SelectScrollUpButton",ex=n.forwardRef((e,t)=>{let r=Y(eg,e.__scopeSelect),l=et(eg,e.__scopeSelect),[o,a]=n.useState(!1),i=(0,s.s)(t,l.onScrollButtonChange);return(0,b.N)(()=>{if(r.viewport&&r.isPositioned){let e=function(){a(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),o?(0,N.jsx)(eS,{...e,ref:i,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});ex.displayName=eg;var ey="SelectScrollDownButton",eb=n.forwardRef((e,t)=>{let r=Y(ey,e.__scopeSelect),l=et(ey,e.__scopeSelect),[o,a]=n.useState(!1),i=(0,s.s)(t,l.onScrollButtonChange);return(0,b.N)(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),o?(0,N.jsx)(eS,{...e,ref:i,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});eb.displayName=ey;var eS=n.forwardRef((e,t)=>{let{__scopeSelect:r,onAutoScroll:l,...o}=e,i=Y("SelectScrollButton",r),s=n.useRef(null),u=I(r),d=n.useCallback(()=>{null!==s.current&&(window.clearInterval(s.current),s.current=null)},[]);return n.useEffect(()=>()=>d(),[d]),(0,b.N)(()=>{var e;let t=u().find(e=>e.ref.current===document.activeElement);null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})},[u]),(0,N.jsx)(w.sG.div,{"aria-hidden":!0,...o,ref:t,style:{flexShrink:0,...o.style},onPointerDown:(0,a.m)(o.onPointerDown,()=>{null===s.current&&(s.current=window.setInterval(l,50))}),onPointerMove:(0,a.m)(o.onPointerMove,()=>{var e;null===(e=i.onItemLeave)||void 0===e||e.call(i),null===s.current&&(s.current=window.setInterval(l,50))}),onPointerLeave:(0,a.m)(o.onPointerLeave,()=>{d()})})}),eC=n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,N.jsx)(w.sG.div,{"aria-hidden":!0,...n,ref:t})});eC.displayName="SelectSeparator";var ej="SelectArrow";function eR(e){return""===e||void 0===e}n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,l=A(r),o=_(ej,r),a=Y(ej,r);return o.open&&"popper"===a.position?(0,N.jsx)(h.i3,{...l,...n,ref:t}):null}).displayName=ej;var eN=n.forwardRef((e,t)=>{let{value:r,...l}=e,o=n.useRef(null),a=(0,s.s)(t,o),i=(0,S.Z)(r);return n.useEffect(()=>{let e=o.current,t=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(i!==r&&t){let n=new Event("change",{bubbles:!0});t.call(e,r),e.dispatchEvent(n)}},[i,r]),(0,N.jsx)(C.s,{asChild:!0,children:(0,N.jsx)("select",{...l,ref:a,defaultValue:r})})});function ek(e){let t=(0,x.c)(e),r=n.useRef(""),l=n.useRef(0),o=n.useCallback(e=>{let n=r.current+e;t(n),function e(t){r.current=t,window.clearTimeout(l.current),""!==t&&(l.current=window.setTimeout(()=>e(""),1e3))}(n)},[t]),a=n.useCallback(()=>{r.current="",window.clearTimeout(l.current)},[]);return n.useEffect(()=>()=>window.clearTimeout(l.current),[]),[r,o,a]}function eT(e,t,r){var n;let l=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,o=(n=Math.max(r?e.indexOf(r):-1,0),e.map((t,r)=>e[(n+r)%e.length]));1===l.length&&(o=o.filter(e=>e!==r));let a=o.find(e=>e.textValue.toLowerCase().startsWith(l.toLowerCase()));return a!==r?a:void 0}eN.displayName="BubbleSelect";var eP=G,eM=F,eI=W,eE=U,eD=q,eL=X,eA=en,eH=ei,e_=eu,eB=ef,eV=eh,eG=ew,eO=ex,eF=eb,eK=eC},48543:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(20107);function l(e){let t=n.useRef({value:e,previous:e});return n.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},20232:(e,t,r)=>{r.d(t,{b:()=>i,s:()=>a});var n=r(20107),l=r(4589),o=r(20475),a=n.forwardRef((e,t)=>(0,o.jsx)(l.sG.span,{...e,ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}));a.displayName="VisuallyHidden";var i=a}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1617-2875c5bbab102cf8.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1617-2875c5bbab102cf8.js deleted file mode 100644 index 0528fee..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1617-2875c5bbab102cf8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1617],{94521:(e,t,n)=>{n.d(t,{m:()=>r});function r(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),!1===n||!r.defaultPrevented)return t?.(r)}}},80938:(e,t,n)=>{n.d(t,{A:()=>l,q:()=>i});var r=n(20107),u=n(20475);function i(e,t){let n=r.createContext(t),i=e=>{let{children:t,...i}=e,l=r.useMemo(()=>i,Object.values(i));return(0,u.jsx)(n.Provider,{value:l,children:t})};return i.displayName=e+"Provider",[i,function(u){let i=r.useContext(n);if(i)return i;if(void 0!==t)return t;throw Error(`\`${u}\` must be used within \`${e}\``)}]}function l(e,t=[]){let n=[],i=()=>{let t=n.map(e=>r.createContext(e));return function(n){let u=n?.[e]||t;return r.useMemo(()=>({[`__scope${e}`]:{...n,[e]:u}}),[n,u])}};return i.scopeName=e,[function(t,i){let l=r.createContext(i),o=n.length;n=[...n,i];let s=t=>{let{scope:n,children:i,...s}=t,a=n?.[e]?.[o]||l,c=r.useMemo(()=>s,Object.values(s));return(0,u.jsx)(a.Provider,{value:c,children:i})};return s.displayName=t+"Provider",[s,function(n,u){let s=u?.[e]?.[o]||l,a=r.useContext(s);if(a)return a;if(void 0!==i)return i;throw Error(`\`${n}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let u=n.reduce((t,{useScope:n,scopeName:r})=>{let u=n(e)[`__scope${r}`];return{...t,...u}},{});return r.useMemo(()=>({[`__scope${t.scopeName}`]:u}),[u])}};return n.scopeName=t.scopeName,n}(i,...t)]}},15975:(e,t,n)=>{n.d(t,{lg:()=>b,qW:()=>v,bL:()=>y});var r,u=n(20107),i=n(94521),l=n(4589),o=n(74111),s=n(85547),a=n(20475),c="dismissableLayer.update",d=u.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),v=u.forwardRef((e,t)=>{var n,v;let{disableOutsidePointerEvents:f=!1,onEscapeKeyDown:y,onPointerDownOutside:b,onFocusOutside:E,onInteractOutside:h,onDismiss:w,...C}=e,g=u.useContext(d),[P,L]=u.useState(null),N=null!==(v=null==P?void 0:P.ownerDocument)&&void 0!==v?v:null===(n=globalThis)||void 0===n?void 0:n.document,[,O]=u.useState({}),x=(0,o.s)(t,e=>L(e)),D=Array.from(g.layers),[k]=[...g.layersWithOutsidePointerEventsDisabled].slice(-1),j=D.indexOf(k),R=P?D.indexOf(P):-1,S=g.layersWithOutsidePointerEventsDisabled.size>0,_=R>=j,T=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===(t=globalThis)||void 0===t?void 0:t.document,r=(0,s.c)(e),i=u.useRef(!1),l=u.useRef(()=>{});return u.useEffect(()=>{let e=e=>{if(e.target&&!i.current){let t=function(){p("dismissableLayer.pointerDownOutside",r,u,{discrete:!0})},u={originalEvent:e};"touch"===e.pointerType?(n.removeEventListener("click",l.current),l.current=t,n.addEventListener("click",l.current,{once:!0})):t()}else n.removeEventListener("click",l.current);i.current=!1},t=window.setTimeout(()=>{n.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",l.current)}},[n,r]),{onPointerDownCapture:()=>i.current=!0}}(e=>{let t=e.target,n=[...g.branches].some(e=>e.contains(t));!_||n||(null==b||b(e),null==h||h(e),e.defaultPrevented||null==w||w())},N),W=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null===(t=globalThis)||void 0===t?void 0:t.document,r=(0,s.c)(e),i=u.useRef(!1);return u.useEffect(()=>{let e=e=>{e.target&&!i.current&&p("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)},[n,r]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}(e=>{let t=e.target;[...g.branches].some(e=>e.contains(t))||(null==E||E(e),null==h||h(e),e.defaultPrevented||null==w||w())},N);return!function(e,t=globalThis?.document){let n=(0,s.c)(e);u.useEffect(()=>{let e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[n,t])}(e=>{R!==g.layers.size-1||(null==y||y(e),!e.defaultPrevented&&w&&(e.preventDefault(),w()))},N),u.useEffect(()=>{if(P)return f&&(0===g.layersWithOutsidePointerEventsDisabled.size&&(r=N.body.style.pointerEvents,N.body.style.pointerEvents="none"),g.layersWithOutsidePointerEventsDisabled.add(P)),g.layers.add(P),m(),()=>{f&&1===g.layersWithOutsidePointerEventsDisabled.size&&(N.body.style.pointerEvents=r)}},[P,N,f,g]),u.useEffect(()=>()=>{P&&(g.layers.delete(P),g.layersWithOutsidePointerEventsDisabled.delete(P),m())},[P,g]),u.useEffect(()=>{let e=()=>O({});return document.addEventListener(c,e),()=>document.removeEventListener(c,e)},[]),(0,a.jsx)(l.sG.div,{...C,ref:x,style:{pointerEvents:S?_?"auto":"none":void 0,...e.style},onFocusCapture:(0,i.m)(e.onFocusCapture,W.onFocusCapture),onBlurCapture:(0,i.m)(e.onBlurCapture,W.onBlurCapture),onPointerDownCapture:(0,i.m)(e.onPointerDownCapture,T.onPointerDownCapture)})});v.displayName="DismissableLayer";var f=u.forwardRef((e,t)=>{let n=u.useContext(d),r=u.useRef(null),i=(0,o.s)(t,r);return u.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,a.jsx)(l.sG.div,{...e,ref:i})});function m(){let e=new CustomEvent(c);document.dispatchEvent(e)}function p(e,t,n,r){let{discrete:u}=r,i=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),u?(0,l.hO)(i,o):i.dispatchEvent(o)}f.displayName="DismissableLayerBranch";var y=v,b=f},82412:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(20107),u=n(25642),i=n(4589),l=n(58013),o=n(20475),s=r.forwardRef((e,t)=>{var n,s;let{container:a,...c}=e,[d,v]=r.useState(!1);(0,l.N)(()=>v(!0),[]);let f=a||d&&(null===(s=globalThis)||void 0===s?void 0:null===(n=s.document)||void 0===n?void 0:n.body);return f?u.createPortal((0,o.jsx)(i.sG.div,{...c,ref:t}),f):null});s.displayName="Portal"},4589:(e,t,n)=>{n.d(t,{hO:()=>s,sG:()=>o});var r=n(20107),u=n(25642),i=n(61837),l=n(20475),o=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let n=r.forwardRef((e,n)=>{let{asChild:r,...u}=e,o=r?i.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(o,{...u,ref:n})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function s(e,t){e&&u.flushSync(()=>e.dispatchEvent(t))}},85547:(e,t,n)=>{n.d(t,{c:()=>u});var r=n(20107);function u(e){let t=r.useRef(e);return r.useEffect(()=>{t.current=e}),r.useMemo(()=>(...e)=>t.current?.(...e),[])}},81255:(e,t,n)=>{n.d(t,{i:()=>i});var r=n(20107),u=n(85547);function i({prop:e,defaultProp:t,onChange:n=()=>{}}){let[i,l]=function({defaultProp:e,onChange:t}){let n=r.useState(e),[i]=n,l=r.useRef(i),o=(0,u.c)(t);return r.useEffect(()=>{l.current!==i&&(o(i),l.current=i)},[i,l,o]),n}({defaultProp:t,onChange:n}),o=void 0!==e,s=o?e:i,a=(0,u.c)(n);return[s,r.useCallback(t=>{if(o){let n="function"==typeof t?t(e):t;n!==e&&a(n)}else l(t)},[o,e,l,a])]}},58013:(e,t,n)=>{n.d(t,{N:()=>u});var r=n(20107),u=globalThis?.document?r.useLayoutEffect:()=>{}},29395:(e,t,n)=>{n.d(t,{F:()=>i});let r=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,u=function(){for(var e,t,n=0,r="";nn=>{var i;if((null==t?void 0:t.variants)==null)return u(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:l,defaultVariants:o}=t,s=Object.keys(l).map(e=>{let t=null==n?void 0:n[e],u=null==o?void 0:o[e];if(null===t)return null;let i=r(t)||r(u);return l[e][i]}),a=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return void 0===r||(e[n]=r),e},{});return u(e,s,null==t?void 0:null===(i=t.compoundVariants)||void 0===i?void 0:i.reduce((e,t)=>{let{class:n,className:r,...u}=t;return Object.entries(u).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...o,...a}[t]):({...o,...a})[t]===n})?[...e,n,r]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1827-82545ba38805ede6.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1827-82545ba38805ede6.js deleted file mode 100644 index d245179..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/1827-82545ba38805ede6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1827],{71827:(e,n,t)=>{t.d(n,{G$:()=>J,Hs:()=>O,UC:()=>en,VY:()=>er,ZL:()=>Q,bL:()=>$,bm:()=>eo,hE:()=>et,hJ:()=>ee,l9:()=>z});var r=t(20107),o=t(94521),i=t(74111),a=t(80938),l=t(72763),s=t(81255),u=t(15975),d=t(98246),c=t(82412),f=t(62796),p=t(4589),m=t(62894),g=t(41364),v=t(58020),N=t(61837),y=t(20475),D="Dialog",[h,O]=(0,a.A)(D),[R,w]=h(D),C=e=>{let{__scopeDialog:n,children:t,open:o,defaultOpen:i,onOpenChange:a,modal:u=!0}=e,d=r.useRef(null),c=r.useRef(null),[f=!1,p]=(0,s.i)({prop:o,defaultProp:i,onChange:a});return(0,y.jsx)(R,{scope:n,triggerRef:d,contentRef:c,contentId:(0,l.B)(),titleId:(0,l.B)(),descriptionId:(0,l.B)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:u,children:t})};C.displayName=D;var I="DialogTrigger",b=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,a=w(I,t),l=(0,i.s)(n,a.triggerRef);return(0,y.jsx)(p.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Z(a.open),...r,ref:l,onClick:(0,o.m)(e.onClick,a.onOpenToggle)})});b.displayName=I;var E="DialogPortal",[j,x]=h(E,{forceMount:void 0}),_=e=>{let{__scopeDialog:n,forceMount:t,children:o,container:i}=e,a=w(E,n);return(0,y.jsx)(j,{scope:n,forceMount:t,children:r.Children.map(o,e=>(0,y.jsx)(f.C,{present:t||a.open,children:(0,y.jsx)(c.Z,{asChild:!0,container:i,children:e})}))})};_.displayName=E;var M="DialogOverlay",T=r.forwardRef((e,n)=>{let t=x(M,e.__scopeDialog),{forceMount:r=t.forceMount,...o}=e,i=w(M,e.__scopeDialog);return i.modal?(0,y.jsx)(f.C,{present:r||i.open,children:(0,y.jsx)(A,{...o,ref:n})}):null});T.displayName=M;var A=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,o=w(M,t);return(0,y.jsx)(g.A,{as:N.DX,allowPinchZoom:!0,shards:[o.contentRef],children:(0,y.jsx)(p.sG.div,{"data-state":Z(o.open),...r,ref:n,style:{pointerEvents:"auto",...r.style}})})}),F="DialogContent",P=r.forwardRef((e,n)=>{let t=x(F,e.__scopeDialog),{forceMount:r=t.forceMount,...o}=e,i=w(F,e.__scopeDialog);return(0,y.jsx)(f.C,{present:r||i.open,children:i.modal?(0,y.jsx)(U,{...o,ref:n}):(0,y.jsx)(k,{...o,ref:n})})});P.displayName=F;var U=r.forwardRef((e,n)=>{let t=w(F,e.__scopeDialog),a=r.useRef(null),l=(0,i.s)(n,t.contentRef,a);return r.useEffect(()=>{let e=a.current;if(e)return(0,v.Eq)(e)},[]),(0,y.jsx)(L,{...e,ref:l,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.m)(e.onCloseAutoFocus,e=>{var n;e.preventDefault(),null===(n=t.triggerRef.current)||void 0===n||n.focus()}),onPointerDownOutside:(0,o.m)(e.onPointerDownOutside,e=>{let n=e.detail.originalEvent,t=0===n.button&&!0===n.ctrlKey;(2===n.button||t)&&e.preventDefault()}),onFocusOutside:(0,o.m)(e.onFocusOutside,e=>e.preventDefault())})}),k=r.forwardRef((e,n)=>{let t=w(F,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,y.jsx)(L,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:n=>{var r,a;null===(r=e.onCloseAutoFocus)||void 0===r||r.call(e,n),n.defaultPrevented||(o.current||null===(a=t.triggerRef.current)||void 0===a||a.focus(),n.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:n=>{var r,a;null===(r=e.onInteractOutside)||void 0===r||r.call(e,n),n.defaultPrevented||(o.current=!0,"pointerdown"!==n.detail.originalEvent.type||(i.current=!0));let l=n.target;(null===(a=t.triggerRef.current)||void 0===a?void 0:a.contains(l))&&n.preventDefault(),"focusin"===n.detail.originalEvent.type&&i.current&&n.preventDefault()}})}),L=r.forwardRef((e,n)=>{let{__scopeDialog:t,trapFocus:o,onOpenAutoFocus:a,onCloseAutoFocus:l,...s}=e,c=w(F,t),f=r.useRef(null),p=(0,i.s)(n,f);return(0,m.Oh)(),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:a,onUnmountAutoFocus:l,children:(0,y.jsx)(u.qW,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":Z(c.open),...s,ref:p,onDismiss:()=>c.onOpenChange(!1)})}),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(X,{titleId:c.titleId}),(0,y.jsx)(Y,{contentRef:f,descriptionId:c.descriptionId})]})]})}),W="DialogTitle",S=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,o=w(W,t);return(0,y.jsx)(p.sG.h2,{id:o.titleId,...r,ref:n})});S.displayName=W;var G="DialogDescription",B=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,o=w(G,t);return(0,y.jsx)(p.sG.p,{id:o.descriptionId,...r,ref:n})});B.displayName=G;var q="DialogClose",V=r.forwardRef((e,n)=>{let{__scopeDialog:t,...r}=e,i=w(q,t);return(0,y.jsx)(p.sG.button,{type:"button",...r,ref:n,onClick:(0,o.m)(e.onClick,()=>i.onOpenChange(!1))})});function Z(e){return e?"open":"closed"}V.displayName=q;var H="DialogTitleWarning",[J,K]=(0,a.q)(H,{contentName:F,titleName:W,docsSlug:"dialog"}),X=e=>{let{titleId:n}=e,t=K(H),o="`".concat(t.contentName,"` requires a `").concat(t.titleName,"` for the component to be accessible for screen reader users.\n\nIf you want to hide the `").concat(t.titleName,"`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/").concat(t.docsSlug);return r.useEffect(()=>{n&&!document.getElementById(n)&&console.error(o)},[o,n]),null},Y=e=>{let{contentRef:n,descriptionId:t}=e,o=K("DialogDescriptionWarning"),i="Warning: Missing `Description` or `aria-describedby={undefined}` for {".concat(o.contentName,"}.");return r.useEffect(()=>{var e;let r=null===(e=n.current)||void 0===e?void 0:e.getAttribute("aria-describedby");t&&r&&!document.getElementById(t)&&console.warn(i)},[i,n,t]),null},$=C,z=b,Q=_,ee=T,en=P,et=S,er=B,eo=V},62796:(e,n,t)=>{t.d(n,{C:()=>a});var r=t(20107),o=t(74111),i=t(58013),a=e=>{let{present:n,children:t}=e,a=function(e){var n,t;let[o,a]=r.useState(),s=r.useRef({}),u=r.useRef(e),d=r.useRef("none"),[c,f]=(n=e?"mounted":"unmounted",t={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,n)=>{let r=t[e][n];return null!=r?r:e},n));return r.useEffect(()=>{let e=l(s.current);d.current="mounted"===c?e:"none"},[c]),(0,i.N)(()=>{let n=s.current,t=u.current;if(t!==e){let r=d.current,o=l(n);e?f("MOUNT"):"none"===o||(null==n?void 0:n.display)==="none"?f("UNMOUNT"):t&&r!==o?f("ANIMATION_OUT"):f("UNMOUNT"),u.current=e}},[e,f]),(0,i.N)(()=>{if(o){var e;let n;let t=null!==(e=o.ownerDocument.defaultView)&&void 0!==e?e:window,r=e=>{let r=l(s.current).includes(e.animationName);if(e.target===o&&r&&(f("ANIMATION_END"),!u.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",n=t.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},i=e=>{e.target===o&&(d.current=l(s.current))};return o.addEventListener("animationstart",i),o.addEventListener("animationcancel",r),o.addEventListener("animationend",r),()=>{t.clearTimeout(n),o.removeEventListener("animationstart",i),o.removeEventListener("animationcancel",r),o.removeEventListener("animationend",r)}}f("ANIMATION_END")},[o,f]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:r.useCallback(e=>{e&&(s.current=getComputedStyle(e)),a(e)},[])}}(n),s="function"==typeof t?t({present:a.isPresent}):r.Children.only(t),u=(0,o.s)(a.ref,function(e){var n,t;let r=null===(n=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===n?void 0:n.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=null===(t=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===t?void 0:t.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(s));return"function"==typeof t||a.isPresent?r.cloneElement(s,{ref:u}):null};function l(e){return(null==e?void 0:e.animationName)||"none"}a.displayName="Presence"}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3210-0ee79328b7c2a459.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3210-0ee79328b7c2a459.js deleted file mode 100644 index 66d8615..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3210-0ee79328b7c2a459.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3210],{39997:(e,t,r)=>{r.d(t,{A:()=>u});var n=r(20107);let o=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,n.forwardRef)((e,t)=>{let{color:r="currentColor",size:o=24,strokeWidth:l=2,absoluteStrokeWidth:u,className:s="",children:d,iconNode:c,...f}=e;return(0,n.createElement)("svg",{ref:t,...i,width:o,height:o,stroke:r,strokeWidth:u?24*Number(l)/Number(o):l,className:a("lucide",s),...f},[...c.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(d)?d:[d]])}),u=(e,t)=>{let r=(0,n.forwardRef)((r,i)=>{let{className:u,...s}=r;return(0,n.createElement)(l,{ref:i,iconNode:t,className:a("lucide-".concat(o(e)),u),...s})});return r.displayName="".concat(e),r}},51873:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},12607:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(39997).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},62108:(e,t,r)=>{r.d(t,{UC:()=>A,bL:()=>M,l9:()=>P});var n,o=r(20107),a=r(94521),i=r(80938),l=r(81255),u=r(74111),s=r(14673),d=(r(82412),r(62796)),c=r(4589),f=r(15975),p=r(20475),v="HoverCard",[m,h]=(0,i.A)(v,[s.Bk]),w=(0,s.Bk)(),[N,y]=m(v),g=e=>{let{__scopeHoverCard:t,children:r,open:n,defaultOpen:a,onOpenChange:i,openDelay:u=700,closeDelay:d=300}=e,c=w(t),f=o.useRef(0),v=o.useRef(0),m=o.useRef(!1),h=o.useRef(!1),[y=!1,g]=(0,l.i)({prop:n,defaultProp:a,onChange:i}),C=o.useCallback(()=>{clearTimeout(v.current),f.current=window.setTimeout(()=>g(!0),u)},[u,g]),x=o.useCallback(()=>{clearTimeout(f.current),m.current||h.current||(v.current=window.setTimeout(()=>g(!1),d))},[d,g]),E=o.useCallback(()=>g(!1),[g]);return o.useEffect(()=>()=>{clearTimeout(f.current),clearTimeout(v.current)},[]),(0,p.jsx)(N,{scope:t,open:y,onOpenChange:g,onOpen:C,onClose:x,onDismiss:E,hasSelectionRef:m,isPointerDownOnContentRef:h,children:(0,p.jsx)(s.bL,{...c,children:r})})};g.displayName=v;var C="HoverCardTrigger",x=o.forwardRef((e,t)=>{let{__scopeHoverCard:r,...n}=e,o=y(C,r),i=w(r);return(0,p.jsx)(s.Mz,{asChild:!0,...i,children:(0,p.jsx)(c.sG.a,{"data-state":o.open?"open":"closed",...n,ref:t,onPointerEnter:(0,a.m)(e.onPointerEnter,O(o.onOpen)),onPointerLeave:(0,a.m)(e.onPointerLeave,O(o.onClose)),onFocus:(0,a.m)(e.onFocus,o.onOpen),onBlur:(0,a.m)(e.onBlur,o.onClose),onTouchStart:(0,a.m)(e.onTouchStart,e=>e.preventDefault())})})});x.displayName=C;var[E,T]=m("HoverCardPortal",{forceMount:void 0}),R="HoverCardContent",b=o.forwardRef((e,t)=>{let r=T(R,e.__scopeHoverCard),{forceMount:n=r.forceMount,...o}=e,i=y(R,e.__scopeHoverCard);return(0,p.jsx)(d.C,{present:n||i.open,children:(0,p.jsx)(k,{"data-state":i.open?"open":"closed",...o,onPointerEnter:(0,a.m)(e.onPointerEnter,O(i.onOpen)),onPointerLeave:(0,a.m)(e.onPointerLeave,O(i.onClose)),ref:t})})});b.displayName=R;var k=o.forwardRef((e,t)=>{let{__scopeHoverCard:r,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:c,...v}=e,m=y(R,r),h=w(r),N=o.useRef(null),g=(0,u.s)(t,N),[C,x]=o.useState(!1);return o.useEffect(()=>{if(C){let e=document.body;return n=e.style.userSelect||e.style.webkitUserSelect,e.style.userSelect="none",e.style.webkitUserSelect="none",()=>{e.style.userSelect=n,e.style.webkitUserSelect=n}}},[C]),o.useEffect(()=>{if(N.current){let e=()=>{x(!1),m.isPointerDownOnContentRef.current=!1,setTimeout(()=>{var e;(null===(e=document.getSelection())||void 0===e?void 0:e.toString())!==""&&(m.hasSelectionRef.current=!0)})};return document.addEventListener("pointerup",e),()=>{document.removeEventListener("pointerup",e),m.hasSelectionRef.current=!1,m.isPointerDownOnContentRef.current=!1}}},[m.isPointerDownOnContentRef,m.hasSelectionRef]),o.useEffect(()=>{N.current&&(function(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;r.nextNode();)t.push(r.currentNode);return t})(N.current).forEach(e=>e.setAttribute("tabindex","-1"))}),(0,p.jsx)(f.qW,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:c,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:(0,a.m)(d,e=>{e.preventDefault()}),onDismiss:m.onDismiss,children:(0,p.jsx)(s.UC,{...h,...v,onPointerDown:(0,a.m)(v.onPointerDown,e=>{e.currentTarget.contains(e.target)&&x(!0),m.hasSelectionRef.current=!1,m.isPointerDownOnContentRef.current=!0}),ref:g,style:{...v.style,userSelect:C?"text":void 0,WebkitUserSelect:C?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})})});function O(e){return t=>"touch"===t.pointerType?void 0:e()}o.forwardRef((e,t)=>{let{__scopeHoverCard:r,...n}=e,o=w(r);return(0,p.jsx)(s.i3,{...o,...n,ref:t})}).displayName="HoverCardArrow";var M=g,P=x,A=b},73725:(e,t,r)=>{r.d(t,{b:()=>l});var n=r(20107),o=r(4589),a=r(20475),i=n.forwardRef((e,t)=>(0,a.jsx)(o.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));i.displayName="Label";var l=i},62796:(e,t,r)=>{r.d(t,{C:()=>i});var n=r(20107),o=r(74111),a=r(58013),i=e=>{let{present:t,children:r}=e,i=function(e){var t,r;let[o,i]=n.useState(),u=n.useRef({}),s=n.useRef(e),d=n.useRef("none"),[c,f]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},n.useReducer((e,t)=>{let n=r[e][t];return null!=n?n:e},t));return n.useEffect(()=>{let e=l(u.current);d.current="mounted"===c?e:"none"},[c]),(0,a.N)(()=>{let t=u.current,r=s.current;if(r!==e){let n=d.current,o=l(t);e?f("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?f("UNMOUNT"):r&&n!==o?f("ANIMATION_OUT"):f("UNMOUNT"),s.current=e}},[e,f]),(0,a.N)(()=>{if(o){var e;let t;let r=null!==(e=o.ownerDocument.defaultView)&&void 0!==e?e:window,n=e=>{let n=l(u.current).includes(e.animationName);if(e.target===o&&n&&(f("ANIMATION_END"),!s.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",t=r.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},a=e=>{e.target===o&&(d.current=l(u.current))};return o.addEventListener("animationstart",a),o.addEventListener("animationcancel",n),o.addEventListener("animationend",n),()=>{r.clearTimeout(t),o.removeEventListener("animationstart",a),o.removeEventListener("animationcancel",n),o.removeEventListener("animationend",n)}}f("ANIMATION_END")},[o,f]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:n.useCallback(e=>{e&&(u.current=getComputedStyle(e)),i(e)},[])}}(t),u="function"==typeof r?r({present:i.isPresent}):n.Children.only(r),s=(0,o.s)(i.ref,function(e){var t,r;let n=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,o=n&&"isReactWarning"in n&&n.isReactWarning;return o?e.ref:(o=(n=null===(r=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===r?void 0:r.get)&&"isReactWarning"in n&&n.isReactWarning)?e.props.ref:e.props.ref||e.ref}(u));return"function"==typeof r||i.isPresent?n.cloneElement(u,{ref:s}):null};function l(e){return(null==e?void 0:e.animationName)||"none"}i.displayName="Presence"},78190:(e,t,r)=>{r.d(t,{b:()=>s});var n=r(20107),o=r(4589),a=r(20475),i="horizontal",l=["horizontal","vertical"],u=n.forwardRef((e,t)=>{let{decorative:r,orientation:n=i,...u}=e,s=l.includes(n)?n:i;return(0,a.jsx)(o.sG.div,{"data-orientation":s,...r?{role:"none"}:{"aria-orientation":"vertical"===s?s:void 0,role:"separator"},...u,ref:t})});u.displayName="Separator";var s=u}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3320-7d48962f2ebfa876.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3320-7d48962f2ebfa876.js deleted file mode 100644 index 6caf70c..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3320-7d48962f2ebfa876.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3320],{14629:(e,t,r)=>{r.d(t,{default:()=>i.a});var n=r(46954),i=r.n(n)},16118:(e,t,r)=>{var n=r(65834);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},15354:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return _}});let n=r(67342),i=r(62599),o=r(20475),l=i._(r(20107)),a=n._(r(25642)),u=n._(r(80627)),s=r(59090),d=r(92863),f=r(30957);r(20339);let c=r(59280),p=n._(r(94354)),m=r(91297),g={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function h(e,t,r,n,i,o,l){let a=null==e?void 0:e.src;e&&e["data-loaded-src"]!==a&&(e["data-loaded-src"]=a,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}(null==n?void 0:n.current)&&n.current(e)}}))}function v(e){return l.use?{fetchPriority:e}:{fetchpriority:e}}"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let y=(0,l.forwardRef)((e,t)=>{let{src:r,srcSet:n,sizes:i,height:a,width:u,decoding:s,className:d,style:f,fetchPriority:c,placeholder:p,loading:g,unoptimized:y,fill:b,onLoadRef:_,onLoadingCompleteRef:w,setBlurComplete:j,setShowAltText:x,sizesInput:P,onLoad:S,onError:O,...C}=e,M=(0,l.useCallback)(e=>{e&&(O&&(e.src=e.src),e.complete&&h(e,p,_,w,j,y,P))},[r,p,_,w,j,O,y,P]),E=(0,m.useMergedRef)(t,M);return(0,o.jsx)("img",{...C,...v(c),loading:g,width:u,height:a,decoding:s,"data-nimg":b?"fill":"1",className:d,style:f,sizes:i,srcSet:n,src:r,ref:E,onLoad:e=>{h(e.currentTarget,p,_,w,j,y,P)},onError:e=>{x(!0),"empty"!==p&&j(!0),O&&O(e)}})});function b(e){let{isAppRouter:t,imgAttributes:r}=e,n={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...v(r.fetchPriority)};return t&&a.default.preload?(a.default.preload(r.src,n),null):(0,o.jsx)(u.default,{children:(0,o.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...n},"__nimg-"+r.src+r.srcSet+r.sizes)})}let _=(0,l.forwardRef)((e,t)=>{let r=(0,l.useContext)(c.RouterContext),n=(0,l.useContext)(f.ImageConfigContext),i=(0,l.useMemo)(()=>{let e=g||n||d.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r}},[n]),{onLoad:a,onLoadingComplete:u}=e,m=(0,l.useRef)(a);(0,l.useEffect)(()=>{m.current=a},[a]);let h=(0,l.useRef)(u);(0,l.useEffect)(()=>{h.current=u},[u]);let[v,_]=(0,l.useState)(!1),[w,j]=(0,l.useState)(!1),{props:x,meta:P}=(0,s.getImgProps)(e,{defaultLoader:p.default,imgConf:i,blurComplete:v,showAltText:w});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(y,{...x,unoptimized:P.unoptimized,placeholder:P.placeholder,fill:P.fill,onLoadRef:m,onLoadingCompleteRef:h,setBlurComplete:_,setShowAltText:j,sizesInput:e.sizes,ref:t}),P.priority?(0,o.jsx)(b,{isAppRouter:!r,imgAttributes:x}):null]})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},91297:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return i}});let n=r(20107);function i(e,t){let r=(0,n.useRef)(()=>{}),i=(0,n.useRef)(()=>{});return(0,n.useMemo)(()=>e&&t?n=>{null===n?(r.current(),i.current()):(r.current=o(e,n),i.current=o(t,n))}:e||t,[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},76947:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return n}});let n=r(67342)._(r(20107)).default.createContext({})},47451:(e,t)=>{function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},59090:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return a}}),r(20339);let n=r(78971),i=r(92863);function o(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function a(e,t){var r;let a,u,s,{src:d,sizes:f,unoptimized:c=!1,priority:p=!1,loading:m,className:g,quality:h,width:v,height:y,fill:b=!1,style:_,overrideSrc:w,onLoad:j,onLoadingComplete:x,placeholder:P="empty",blurDataURL:S,fetchPriority:O,decoding:C="async",layout:M,objectFit:E,objectPosition:z,lazyBoundary:I,lazyRoot:R,...A}=e,{imgConf:k,showAltText:D,blurComplete:N,defaultLoader:T}=t,L=k||i.imageConfigDefault;if("allSizes"in L)a=L;else{let e=[...L.deviceSizes,...L.imageSizes].sort((e,t)=>e-t),t=L.deviceSizes.sort((e,t)=>e-t);a={...L,allSizes:e,deviceSizes:t}}if(void 0===T)throw Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config");let F=A.loader||T;delete A.loader,delete A.srcSet;let G="__next_img_default"in F;if(G){if("custom"===a.loader)throw Error('Image with src "'+d+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader')}else{let e=F;F=t=>{let{config:r,...n}=t;return e(n)}}if(M){"fill"===M&&(b=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[M];e&&(_={..._,...e});let t={responsive:"100vw",fill:"100vw"}[M];t&&!f&&(f=t)}let U="",B=l(v),W=l(y);if((r=d)&&"object"==typeof r&&(o(r)||void 0!==r.src)){let e=o(d)?d.default:d;if(!e.src)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e));if(!e.height||!e.width)throw Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e));if(u=e.blurWidth,s=e.blurHeight,S=S||e.blurDataURL,U=e.src,!b){if(B||W){if(B&&!W){let t=B/e.width;W=Math.round(e.height*t)}else if(!B&&W){let t=W/e.height;B=Math.round(e.width*t)}}else B=e.width,W=e.height}}let V=!p&&("lazy"===m||void 0===m);(!(d="string"==typeof d?d:U)||d.startsWith("data:")||d.startsWith("blob:"))&&(c=!0,V=!1),a.unoptimized&&(c=!0),G&&!a.dangerouslyAllowSVG&&d.split("?",1)[0].endsWith(".svg")&&(c=!0);let H=l(h),$=Object.assign(b?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:E,objectPosition:z}:{},D?{}:{color:"transparent"},_),q=N||"empty"===P?null:"blur"===P?'url("data:image/svg+xml;charset=utf-8,'+(0,n.getImageBlurSvg)({widthInt:B,heightInt:W,blurWidth:u,blurHeight:s,blurDataURL:S||"",objectFit:$.objectFit})+'")':'url("'+P+'")',X=q?{backgroundSize:$.objectFit||"cover",backgroundPosition:$.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:q}:{},J=function(e){let{config:t,src:r,unoptimized:n,width:i,quality:o,sizes:l,loader:a}=e;if(n)return{src:r,srcSet:void 0,sizes:void 0};let{widths:u,kind:s}=function(e,t,r){let{deviceSizes:n,allSizes:i}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let n;n=e.exec(r);n)t.push(parseInt(n[2]));if(t.length){let e=.01*Math.min(...t);return{widths:i.filter(t=>t>=n[0]*e),kind:"w"}}return{widths:i,kind:"w"}}return"number"!=typeof t?{widths:n,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>i.find(t=>t>=e)||i[i.length-1]))],kind:"x"}}(t,i,l),d=u.length-1;return{sizes:l||"w"!==s?l:"100vw",srcSet:u.map((e,n)=>a({config:t,src:r,quality:o,width:e})+" "+("w"===s?e:n+1)+s).join(", "),src:a({config:t,src:r,quality:o,width:u[d]})}}({config:a,src:d,unoptimized:c,width:B,quality:H,sizes:f,loader:F});return{props:{...A,loading:V?"lazy":m,fetchPriority:O,width:B,height:W,decoding:C,className:g,style:{...$,...X},sizes:J.sizes,srcSet:J.srcSet,src:w||J.src},meta:{unoptimized:c,priority:p,placeholder:P,fill:b}}}},80627:(e,t,r)=>{var n=r(86170);Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return h},defaultHead:function(){return c}});let i=r(67342),o=r(62599),l=r(20475),a=o._(r(20107)),u=i._(r(41868)),s=r(76947),d=r(17315),f=r(47451);function c(e){void 0===e&&(e=!1);let t=[(0,l.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,l.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function p(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===a.default.Fragment?e.concat(a.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(20339);let m=["name","httpEquiv","charSet","itemProp"];function g(e,t){let{inAmpMode:r}=t;return e.reduce(p,[]).reverse().concat(c(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return i=>{let o=!0,l=!1;if(i.key&&"number"!=typeof i.key&&i.key.indexOf("$")>0){l=!0;let t=i.key.slice(i.key.indexOf("$")+1);e.has(t)?o=!1:e.add(t)}switch(i.type){case"title":case"base":t.has(i.type)?o=!1:t.add(i.type);break;case"meta":for(let e=0,t=m.length;e{let i=e.key||t;if(n.env.__NEXT_OPTIMIZE_FONTS&&!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,a.default.cloneElement(e,t)}return a.default.cloneElement(e,{key:i})})}let h=function(e){let{children:t}=e,r=(0,a.useContext)(s.AmpStateContext),n=(0,a.useContext)(d.HeadManagerContext);return(0,l.jsx)(u.default,{reduceComponentsToState:g,headManager:n,inAmpMode:(0,f.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},78971:(e,t)=>{function r(e){let{widthInt:t,heightInt:r,blurWidth:n,blurHeight:i,blurDataURL:o,objectFit:l}=e,a=n?40*n:t,u=i?40*i:r,s=a&&u?"viewBox='0 0 "+a+" "+u+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+s+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(s?"none":"contain"===l?"xMidYMid":"cover"===l?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+o+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},30957:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let n=r(67342)._(r(20107)),i=r(92863),o=n.default.createContext(i.imageConfigDefault)},92863:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],unoptimized:!1}},46954:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return u},getImageProps:function(){return a}});let n=r(67342),i=r(59090),o=r(15354),l=n._(r(94354));function a(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:l.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image/",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let u=o.Image},94354:(e,t)=>{function r(e){let{config:t,src:r,width:n,quality:i}=e;return t.path+"?url="+encodeURIComponent(r)+"&w="+n+"&q="+(i||75)+(r.startsWith("/_next/static/media/"),"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}}),r.__next_img_default=!0;let n=r},59280:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(67342)._(r(20107)).default.createContext(null)},41868:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(20107),i="undefined"==typeof window,o=i?()=>{}:n.useLayoutEffect,l=i?()=>{}:n.useEffect;function a(e){let{headManager:t,reduceComponentsToState:r}=e;function a(){if(t&&t.mountedInstances){let i=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(i,e))}}if(i){var u;null==t||null==(u=t.mountedInstances)||u.add(e.children),a()}return o(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),o(()=>(t&&(t._pendingUpdate=a),()=>{t&&(t._pendingUpdate=a)})),l(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},73725:(e,t,r)=>{r.d(t,{b:()=>a});var n=r(20107),i=r(4589),o=r(20475),l=n.forwardRef((e,t)=>(0,o.jsx)(i.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));l.displayName="Label";var a=l},4589:(e,t,r)=>{r.d(t,{hO:()=>u,sG:()=>a});var n=r(20107),i=r(25642),o=r(61837),l=r(20475),a=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=n.forwardRef((e,r)=>{let{asChild:n,...i}=e,a=n?o.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(a,{...i,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function u(e,t){e&&i.flushSync(()=>e.dispatchEvent(t))}},29395:(e,t,r)=>{r.d(t,{F:()=>o});let n=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,i=function(){for(var e,t,r=0,n="";rr=>{var o;if((null==t?void 0:t.variants)==null)return i(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:l,defaultVariants:a}=t,u=Object.keys(l).map(e=>{let t=null==r?void 0:r[e],i=null==a?void 0:a[e];if(null===t)return null;let o=n(t)||n(i);return l[e][o]}),s=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return i(e,u,null==t?void 0:null===(o=t.compoundVariants)||void 0===o?void 0:o.reduce((e,t)=>{let{class:r,className:n,...i}=t;return Object.entries(i).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...a,...s}[t]):({...a,...s})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3742-8a2e24c9cc905cd9.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3742-8a2e24c9cc905cd9.js deleted file mode 100644 index be8294e..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/3742-8a2e24c9cc905cd9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3742],{39997:(e,t,r)=>{r.d(t,{A:()=>c});var a=r(20107);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),o=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let i=(0,a.forwardRef)((e,t)=>{let{color:r="currentColor",size:n=24,strokeWidth:i=2,absoluteStrokeWidth:c,className:u="",children:s,iconNode:d,...v}=e;return(0,a.createElement)("svg",{ref:t,...l,width:n,height:n,stroke:r,strokeWidth:c?24*Number(i)/Number(n):i,className:o("lucide",u),...v},[...d.map(e=>{let[t,r]=e;return(0,a.createElement)(t,r)}),...Array.isArray(s)?s:[s]])}),c=(e,t)=>{let r=(0,a.forwardRef)((r,l)=>{let{className:c,...u}=r;return(0,a.createElement)(i,{ref:l,iconNode:t,className:o("lucide-".concat(n(e)),c),...u})});return r.displayName="".concat(e),r}},76076:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(39997).A)("FileUp",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 12v6",key:"3ahymv"}],["path",{d:"m15 15-3-3-3 3",key:"15xj92"}]])},59166:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(39997).A)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},91994:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(39997).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},27720:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(39997).A)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},51873:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},93069:(e,t,r)=>{r.d(t,{C1:()=>O,bL:()=>w});var a=r(20107),n=r(81045),o=r(4589),l=r(20475),i="Progress",[c,u]=(0,n.A)(i),[s,d]=c(i),v=a.forwardRef((e,t)=>{var r,a,n,i;let{__scopeProgress:c,value:u=null,max:d,getValueLabel:v=y,...p}=e;(d||0===d)&&!b(d)&&console.error((r="".concat(d),a="Progress","Invalid prop `max` of value `".concat(r,"` supplied to `").concat(a,"`. Only numbers greater than 0 are valid max values. Defaulting to `").concat(100,"`.")));let f=b(d)?d:100;null===u||g(u,f)||console.error((n="".concat(u),i="Progress","Invalid prop `value` of value `".concat(n,"` supplied to `").concat(i,"`. The `value` prop must be:\n - a positive number\n - less than the value passed to `max` (or ").concat(100," if no `max` prop is set)\n - `null` or `undefined` if the progress is indeterminate.\n\nDefaulting to `null`.")));let w=g(u,f)?u:null,O=h(w)?v(w,f):void 0;return(0,l.jsx)(s,{scope:c,value:w,max:f,children:(0,l.jsx)(o.sG.div,{"aria-valuemax":f,"aria-valuemin":0,"aria-valuenow":h(w)?w:void 0,"aria-valuetext":O,role:"progressbar","data-state":m(w,f),"data-value":null!=w?w:void 0,"data-max":f,...p,ref:t})})});v.displayName=i;var p="ProgressIndicator",f=a.forwardRef((e,t)=>{var r;let{__scopeProgress:a,...n}=e,i=d(p,a);return(0,l.jsx)(o.sG.div,{"data-state":m(i.value,i.max),"data-value":null!==(r=i.value)&&void 0!==r?r:void 0,"data-max":i.max,...n,ref:t})});function y(e,t){return"".concat(Math.round(e/t*100),"%")}function m(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function h(e){return"number"==typeof e}function b(e){return h(e)&&!isNaN(e)&&e>0}function g(e,t){return h(e)&&!isNaN(e)&&e<=t&&e>=0}f.displayName=p;var w=v,O=f},45930:(e,t,r)=>{r.d(t,{k5:()=>s});var a=r(20107),n={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},o=a.createContext&&a.createContext(n),l=["attr","size","title"];function i(){return(i=Object.assign?Object.assign.bind():function(e){for(var t=1;ta.createElement(d,i({attr:u({},e.attr)},t),function e(t){return t&&t.map((t,r)=>a.createElement(t.tag,u({key:r},t.attr),e(t.child)))}(e.child))}function d(e){var t=t=>{var r,{attr:n,size:o,title:c}=e,s=function(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r={};for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){if(t.indexOf(a)>=0)continue;r[a]=e[a]}return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}(e,l),d=o||t.size||"1em";return t.className&&(r=t.className),e.className&&(r=(r?r+" ":"")+e.className),a.createElement("svg",i({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,n,s,{className:r,style:u(u({color:e.color||t.color},t.style),e.style),height:d,width:d,xmlns:"http://www.w3.org/2000/svg"}),c&&a.createElement("title",null,c),e.children)};return void 0!==o?a.createElement(o.Consumer,null,e=>t(e)):t(n)}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4568-33274c67a634d54a.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4568-33274c67a634d54a.js deleted file mode 100644 index 7e20809..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4568-33274c67a634d54a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4568],{56703:(e,r,t)=>{t.d(r,{q:()=>n});function n(e,[r,t]){return Math.min(t,Math.max(r,e))}},25289:(e,r,t)=>{t.d(r,{jH:()=>l});var n=t(20107);t(20475);var o=n.createContext(void 0);function l(e){let r=n.useContext(o);return e||r||"ltr"}},34568:(e,r,t)=>{t.d(r,{LM:()=>q,OK:()=>K,VM:()=>C,bL:()=>G,lr:()=>H});var n=t(20107),o=t(4589),l=t(62796),i=t(80938),a=t(74111),s=t(85547),c=t(25289),d=t(58013),u=t(56703),f=t(94521),p=t(20475),h="ScrollArea",[v,w]=(0,i.A)(h),[g,b]=v(h),m=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,type:l="hover",dir:i,scrollHideDelay:s=600,...d}=e,[u,f]=n.useState(null),[h,v]=n.useState(null),[w,b]=n.useState(null),[m,S]=n.useState(null),[x,E]=n.useState(null),[C,y]=n.useState(0),[T,R]=n.useState(0),[L,P]=n.useState(!1),[_,j]=n.useState(!1),D=(0,a.s)(r,e=>f(e)),A=(0,c.jH)(i);return(0,p.jsx)(g,{scope:t,type:l,dir:A,scrollHideDelay:s,scrollArea:u,viewport:h,onViewportChange:v,content:w,onContentChange:b,scrollbarX:m,onScrollbarXChange:S,scrollbarXEnabled:L,onScrollbarXEnabledChange:P,scrollbarY:x,onScrollbarYChange:E,scrollbarYEnabled:_,onScrollbarYEnabledChange:j,onCornerWidthChange:y,onCornerHeightChange:R,children:(0,p.jsx)(o.sG.div,{dir:A,...d,ref:D,style:{position:"relative","--radix-scroll-area-corner-width":C+"px","--radix-scroll-area-corner-height":T+"px",...e.style}})})});m.displayName=h;var S="ScrollAreaViewport",x=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,children:l,asChild:i,nonce:s,...c}=e,d=b(S,t),u=n.useRef(null),f=(0,a.s)(r,u,d.onViewportChange);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("style",{dangerouslySetInnerHTML:{__html:"\n[data-radix-scroll-area-viewport] {\n scrollbar-width: none;\n -ms-overflow-style: none;\n -webkit-overflow-scrolling: touch;\n}\n[data-radix-scroll-area-viewport]::-webkit-scrollbar {\n display: none;\n}\n:where([data-radix-scroll-area-viewport]) {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n}\n:where([data-radix-scroll-area-content]) {\n flex-grow: 1;\n}\n"},nonce:s}),(0,p.jsx)(o.sG.div,{"data-radix-scroll-area-viewport":"",...c,asChild:i,ref:f,style:{overflowX:d.scrollbarXEnabled?"scroll":"hidden",overflowY:d.scrollbarYEnabled?"scroll":"hidden",...e.style},children:function(e,r){let{asChild:t,children:o}=e;if(!t)return"function"==typeof r?r(o):r;let l=n.Children.only(o);return n.cloneElement(l,{children:"function"==typeof r?r(l.props.children):r})}({asChild:i,children:l},e=>(0,p.jsx)("div",{"data-radix-scroll-area-content":"",ref:d.onContentChange,style:{minWidth:d.scrollbarXEnabled?"fit-content":void 0},children:e}))})]})});x.displayName=S;var E="ScrollAreaScrollbar",C=n.forwardRef((e,r)=>{let{forceMount:t,...o}=e,l=b(E,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=l,s="horizontal"===e.orientation;return n.useEffect(()=>(s?i(!0):a(!0),()=>{s?i(!1):a(!1)}),[s,i,a]),"hover"===l.type?(0,p.jsx)(y,{...o,ref:r,forceMount:t}):"scroll"===l.type?(0,p.jsx)(T,{...o,ref:r,forceMount:t}):"auto"===l.type?(0,p.jsx)(R,{...o,ref:r,forceMount:t}):"always"===l.type?(0,p.jsx)(L,{...o,ref:r}):null});C.displayName=E;var y=n.forwardRef((e,r)=>{let{forceMount:t,...o}=e,i=b(E,e.__scopeScrollArea),[a,s]=n.useState(!1);return n.useEffect(()=>{let e=i.scrollArea,r=0;if(e){let t=()=>{window.clearTimeout(r),s(!0)},n=()=>{r=window.setTimeout(()=>s(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(r),e.removeEventListener("pointerenter",t),e.removeEventListener("pointerleave",n)}}},[i.scrollArea,i.scrollHideDelay]),(0,p.jsx)(l.C,{present:t||a,children:(0,p.jsx)(R,{"data-state":a?"visible":"hidden",...o,ref:r})})}),T=n.forwardRef((e,r)=>{var t,o;let{forceMount:i,...a}=e,s=b(E,e.__scopeScrollArea),c="horizontal"===e.orientation,d=V(()=>h("SCROLL_END"),100),[u,h]=(t="hidden",o={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},n.useReducer((e,r)=>{let t=o[e][r];return null!=t?t:e},t));return n.useEffect(()=>{if("idle"===u){let e=window.setTimeout(()=>h("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(e)}},[u,s.scrollHideDelay,h]),n.useEffect(()=>{let e=s.viewport,r=c?"scrollLeft":"scrollTop";if(e){let t=e[r],n=()=>{let n=e[r];t!==n&&(h("SCROLL"),d()),t=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[s.viewport,c,h,d]),(0,p.jsx)(l.C,{present:i||"hidden"!==u,children:(0,p.jsx)(L,{"data-state":"hidden"===u?"hidden":"visible",...a,ref:r,onPointerEnter:(0,f.m)(e.onPointerEnter,()=>h("POINTER_ENTER")),onPointerLeave:(0,f.m)(e.onPointerLeave,()=>h("POINTER_LEAVE"))})})}),R=n.forwardRef((e,r)=>{let t=b(E,e.__scopeScrollArea),{forceMount:o,...i}=e,[a,s]=n.useState(!1),c="horizontal"===e.orientation,d=V(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{orientation:t="vertical",...o}=e,l=b(E,e.__scopeScrollArea),i=n.useRef(null),a=n.useRef(0),[s,c]=n.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=Y(s.viewport,s.content),u={...o,sizes:s,onSizesChange:c,hasThumb:!!(d>0&&d<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:e=>a.current=e};function f(e,r){return function(e,r,t){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ltr",o=k(t),l=r||o/2,i=t.scrollbar.paddingStart+l,a=t.scrollbar.size-t.scrollbar.paddingEnd-(o-l),s=t.content-t.viewport;return M([i,a],"ltr"===n?[0,s]:[-1*s,0])(e)}(e,a.current,s,r)}return"horizontal"===t?(0,p.jsx)(P,{...u,ref:r,onThumbPositionChange:()=>{if(l.viewport&&i.current){let e=U(l.viewport.scrollLeft,s,l.dir);i.current.style.transform="translate3d(".concat(e,"px, 0, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollLeft=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollLeft=f(e,l.dir))}}):"vertical"===t?(0,p.jsx)(_,{...u,ref:r,onThumbPositionChange:()=>{if(l.viewport&&i.current){let e=U(l.viewport.scrollTop,s);i.current.style.transform="translate3d(0, ".concat(e,"px, 0)")}},onWheelScroll:e=>{l.viewport&&(l.viewport.scrollTop=e)},onDragScroll:e=>{l.viewport&&(l.viewport.scrollTop=f(e))}}):null}),P=n.forwardRef((e,r)=>{let{sizes:t,onSizesChange:o,...l}=e,i=b(E,e.__scopeScrollArea),[s,c]=n.useState(),d=n.useRef(null),u=(0,a.s)(r,d,i.onScrollbarXChange);return n.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),(0,p.jsx)(A,{"data-orientation":"horizontal",...l,ref:u,sizes:t,style:{bottom:0,left:"rtl"===i.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===i.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":k(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.x),onDragScroll:r=>e.onDragScroll(r.x),onWheelScroll:(r,t)=>{if(i.viewport){let n=i.viewport.scrollLeft+r.deltaX;e.onWheelScroll(n),function(e,r){return e>0&&e{d.current&&i.viewport&&s&&o({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:d.current.clientWidth,paddingStart:X(s.paddingLeft),paddingEnd:X(s.paddingRight)}})}})}),_=n.forwardRef((e,r)=>{let{sizes:t,onSizesChange:o,...l}=e,i=b(E,e.__scopeScrollArea),[s,c]=n.useState(),d=n.useRef(null),u=(0,a.s)(r,d,i.onScrollbarYChange);return n.useEffect(()=>{d.current&&c(getComputedStyle(d.current))},[d]),(0,p.jsx)(A,{"data-orientation":"vertical",...l,ref:u,sizes:t,style:{top:0,right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":k(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.y),onDragScroll:r=>e.onDragScroll(r.y),onWheelScroll:(r,t)=>{if(i.viewport){let n=i.viewport.scrollTop+r.deltaY;e.onWheelScroll(n),function(e,r){return e>0&&e{d.current&&i.viewport&&s&&o({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:d.current.clientHeight,paddingStart:X(s.paddingTop),paddingEnd:X(s.paddingBottom)}})}})}),[j,D]=v(E),A=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,sizes:l,hasThumb:i,onThumbChange:c,onThumbPointerUp:d,onThumbPointerDown:u,onThumbPositionChange:h,onDragScroll:v,onWheelScroll:w,onResize:g,...m}=e,S=b(E,t),[x,C]=n.useState(null),y=(0,a.s)(r,e=>C(e)),T=n.useRef(null),R=n.useRef(""),L=S.viewport,P=l.content-l.viewport,_=(0,s.c)(w),D=(0,s.c)(h),A=V(g,10);function N(e){T.current&&v({x:e.clientX-T.current.left,y:e.clientY-T.current.top})}return n.useEffect(()=>{let e=e=>{let r=e.target;(null==x?void 0:x.contains(r))&&_(e,P)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[L,x,P,_]),n.useEffect(D,[l,D]),B(x,A),B(S.content,A),(0,p.jsx)(j,{scope:t,scrollbar:x,hasThumb:i,onThumbChange:(0,s.c)(c),onThumbPointerUp:(0,s.c)(d),onThumbPositionChange:D,onThumbPointerDown:(0,s.c)(u),children:(0,p.jsx)(o.sG.div,{...m,ref:y,style:{position:"absolute",...m.style},onPointerDown:(0,f.m)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),T.current=x.getBoundingClientRect(),R.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",S.viewport&&(S.viewport.style.scrollBehavior="auto"),N(e))}),onPointerMove:(0,f.m)(e.onPointerMove,N),onPointerUp:(0,f.m)(e.onPointerUp,e=>{let r=e.target;r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=R.current,S.viewport&&(S.viewport.style.scrollBehavior=""),T.current=null})})})}),N="ScrollAreaThumb",H=n.forwardRef((e,r)=>{let{forceMount:t,...n}=e,o=D(N,e.__scopeScrollArea);return(0,p.jsx)(l.C,{present:t||o.hasThumb,children:(0,p.jsx)(z,{ref:r,...n})})}),z=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,style:l,...i}=e,s=b(N,t),c=D(N,t),{onThumbPositionChange:d}=c,u=(0,a.s)(r,e=>c.onThumbChange(e)),h=n.useRef(),v=V(()=>{h.current&&(h.current(),h.current=void 0)},100);return n.useEffect(()=>{let e=s.viewport;if(e){let r=()=>{if(v(),!h.current){let r=F(e,d);h.current=r,d()}};return d(),e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[s.viewport,v,d]),(0,p.jsx)(o.sG.div,{"data-state":c.hasThumb?"visible":"hidden",...i,ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...l},onPointerDownCapture:(0,f.m)(e.onPointerDownCapture,e=>{let r=e.target.getBoundingClientRect(),t=e.clientX-r.left,n=e.clientY-r.top;c.onThumbPointerDown({x:t,y:n})}),onPointerUp:(0,f.m)(e.onPointerUp,c.onThumbPointerUp)})});H.displayName=N;var W="ScrollAreaCorner",O=n.forwardRef((e,r)=>{let t=b(W,e.__scopeScrollArea),n=!!(t.scrollbarX&&t.scrollbarY);return"scroll"!==t.type&&n?(0,p.jsx)(I,{...e,ref:r}):null});O.displayName=W;var I=n.forwardRef((e,r)=>{let{__scopeScrollArea:t,...l}=e,i=b(W,t),[a,s]=n.useState(0),[c,d]=n.useState(0),u=!!(a&&c);return B(i.scrollbarX,()=>{var e;let r=(null===(e=i.scrollbarX)||void 0===e?void 0:e.offsetHeight)||0;i.onCornerHeightChange(r),d(r)}),B(i.scrollbarY,()=>{var e;let r=(null===(e=i.scrollbarY)||void 0===e?void 0:e.offsetWidth)||0;i.onCornerWidthChange(r),s(r)}),u?(0,p.jsx)(o.sG.div,{...l,ref:r,style:{width:a,height:c,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function X(e){return e?parseInt(e,10):0}function Y(e,r){let t=e/r;return isNaN(t)?0:t}function k(e){let r=Y(e.viewport,e.content),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-t)*r,18)}function U(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"ltr",n=k(r),o=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,l=r.scrollbar.size-o,i=r.content-r.viewport,a=(0,u.q)(e,"ltr"===t?[0,i]:[-1*i,0]);return M([0,i],[0,l-n])(a)}function M(e,r){return t=>{if(e[0]===e[1]||r[0]===r[1])return r[0];let n=(r[1]-r[0])/(e[1]-e[0]);return r[0]+n*(t-e[0])}}var F=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},t={left:e.scrollLeft,top:e.scrollTop},n=0;return!function o(){let l={left:e.scrollLeft,top:e.scrollTop},i=t.left!==l.left,a=t.top!==l.top;(i||a)&&r(),t=l,n=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(n)};function V(e,r){let t=(0,s.c)(e),o=n.useRef(0);return n.useEffect(()=>()=>window.clearTimeout(o.current),[]),n.useCallback(()=>{window.clearTimeout(o.current),o.current=window.setTimeout(t,r)},[t,r])}function B(e,r){let t=(0,s.c)(r);(0,d.N)(()=>{let r=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(t)});return n.observe(e),()=>{window.cancelAnimationFrame(r),n.unobserve(e)}}},[e,t])}var G=m,q=x,K=O}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4623-3adb8e9629e6d4f2.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4623-3adb8e9629e6d4f2.js deleted file mode 100644 index b91127b..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4623-3adb8e9629e6d4f2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4623],{72763:(e,t,n)=>{n.d(t,{B:()=>u});var r,o=n(20107),i=n(58013),l=(r||(r=n.t(o,2)))["useId".toString()]||(()=>void 0),a=0;function u(e){let[t,n]=o.useState(l());return(0,i.N)(()=>{e||n(e=>e??String(a++))},[e]),e||(t?`radix-${t}`:"")}},62796:(e,t,n)=>{n.d(t,{C:()=>l});var r=n(20107),o=n(74111),i=n(58013),l=e=>{let{present:t,children:n}=e,l=function(e){var t,n;let[o,l]=r.useState(),u=r.useRef({}),s=r.useRef(e),c=r.useRef("none"),[d,p]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return r.useEffect(()=>{let e=a(u.current);c.current="mounted"===d?e:"none"},[d]),(0,i.N)(()=>{let t=u.current,n=s.current;if(n!==e){let r=c.current,o=a(t);e?p("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?p("UNMOUNT"):n&&r!==o?p("ANIMATION_OUT"):p("UNMOUNT"),s.current=e}},[e,p]),(0,i.N)(()=>{if(o){var e;let t;let n=null!==(e=o.ownerDocument.defaultView)&&void 0!==e?e:window,r=e=>{let r=a(u.current).includes(e.animationName);if(e.target===o&&r&&(p("ANIMATION_END"),!s.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",t=n.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},i=e=>{e.target===o&&(c.current=a(u.current))};return o.addEventListener("animationstart",i),o.addEventListener("animationcancel",r),o.addEventListener("animationend",r),()=>{n.clearTimeout(t),o.removeEventListener("animationstart",i),o.removeEventListener("animationcancel",r),o.removeEventListener("animationend",r)}}p("ANIMATION_END")},[o,p]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:r.useCallback(e=>{e&&(u.current=getComputedStyle(e)),l(e)},[])}}(t),u="function"==typeof n?n({present:l.isPresent}):r.Children.only(n),s=(0,o.s)(l.ref,function(e){var t,n;let r=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=null===(n=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===n?void 0:n.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(u));return"function"==typeof n||l.isPresent?r.cloneElement(u,{ref:s}):null};function a(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},84623:(e,t,n)=>{n.d(t,{Kq:()=>B,UC:()=>H,bL:()=>F,l9:()=>W});var r=n(20107),o=n(94521),i=n(74111),l=n(80938),a=n(15975),u=n(72763),s=n(14673),c=(n(82412),n(62796)),d=n(4589),p=n(61837),f=n(81255),m=n(20232),v=n(20475),[g,h]=(0,l.A)("Tooltip",[s.Bk]),y=(0,s.Bk)(),x="TooltipProvider",w="tooltip.open",[b,T]=g(x),C=e=>{let{__scopeTooltip:t,delayDuration:n=700,skipDelayDuration:o=300,disableHoverableContent:i=!1,children:l}=e,[a,u]=r.useState(!0),s=r.useRef(!1),c=r.useRef(0);return r.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,v.jsx)(b,{scope:t,isOpenDelayed:a,delayDuration:n,onOpen:r.useCallback(()=>{window.clearTimeout(c.current),u(!1)},[]),onClose:r.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>u(!0),o)},[o]),isPointerInTransitRef:s,onPointerInTransitChange:r.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:l})};C.displayName=x;var E="Tooltip",[N,M]=g(E),k=e=>{let{__scopeTooltip:t,children:n,open:o,defaultOpen:i=!1,onOpenChange:l,disableHoverableContent:a,delayDuration:c}=e,d=T(E,e.__scopeTooltip),p=y(t),[m,g]=r.useState(null),h=(0,u.B)(),x=r.useRef(0),b=null!=a?a:d.disableHoverableContent,C=null!=c?c:d.delayDuration,M=r.useRef(!1),[k=!1,O]=(0,f.i)({prop:o,defaultProp:i,onChange:e=>{e?(d.onOpen(),document.dispatchEvent(new CustomEvent(w))):d.onClose(),null==l||l(e)}}),R=r.useMemo(()=>k?M.current?"delayed-open":"instant-open":"closed",[k]),L=r.useCallback(()=>{window.clearTimeout(x.current),M.current=!1,O(!0)},[O]),_=r.useCallback(()=>{window.clearTimeout(x.current),O(!1)},[O]),j=r.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{M.current=!0,O(!0)},C)},[C,O]);return r.useEffect(()=>()=>window.clearTimeout(x.current),[]),(0,v.jsx)(s.bL,{...p,children:(0,v.jsx)(N,{scope:t,contentId:h,open:k,stateAttribute:R,trigger:m,onTriggerChange:g,onTriggerEnter:r.useCallback(()=>{d.isOpenDelayed?j():L()},[d.isOpenDelayed,j,L]),onTriggerLeave:r.useCallback(()=>{b?_():window.clearTimeout(x.current)},[_,b]),onOpen:L,onClose:_,disableHoverableContent:b,children:n})})};k.displayName=E;var O="TooltipTrigger",R=r.forwardRef((e,t)=>{let{__scopeTooltip:n,...l}=e,a=M(O,n),u=T(O,n),c=y(n),p=r.useRef(null),f=(0,i.s)(t,p,a.onTriggerChange),m=r.useRef(!1),g=r.useRef(!1),h=r.useCallback(()=>m.current=!1,[]);return r.useEffect(()=>()=>document.removeEventListener("pointerup",h),[h]),(0,v.jsx)(s.Mz,{asChild:!0,...c,children:(0,v.jsx)(d.sG.button,{"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute,...l,ref:f,onPointerMove:(0,o.m)(e.onPointerMove,e=>{"touch"===e.pointerType||g.current||u.isPointerInTransitRef.current||(a.onTriggerEnter(),g.current=!0)}),onPointerLeave:(0,o.m)(e.onPointerLeave,()=>{a.onTriggerLeave(),g.current=!1}),onPointerDown:(0,o.m)(e.onPointerDown,()=>{m.current=!0,document.addEventListener("pointerup",h,{once:!0})}),onFocus:(0,o.m)(e.onFocus,()=>{m.current||a.onOpen()}),onBlur:(0,o.m)(e.onBlur,a.onClose),onClick:(0,o.m)(e.onClick,a.onClose)})})});R.displayName=O;var[L,_]=g("TooltipPortal",{forceMount:void 0}),j="TooltipContent",I=r.forwardRef((e,t)=>{let n=_(j,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...i}=e,l=M(j,e.__scopeTooltip);return(0,v.jsx)(c.C,{present:r||l.open,children:l.disableHoverableContent?(0,v.jsx)(U,{side:o,...i,ref:t}):(0,v.jsx)(P,{side:o,...i,ref:t})})}),P=r.forwardRef((e,t)=>{let n=M(j,e.__scopeTooltip),o=T(j,e.__scopeTooltip),l=r.useRef(null),a=(0,i.s)(t,l),[u,s]=r.useState(null),{trigger:c,onClose:d}=n,p=l.current,{onPointerInTransitChange:f}=o,m=r.useCallback(()=>{s(null),f(!1)},[f]),g=r.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),i=Math.abs(t.left-e.x);switch(Math.min(n,r,o,i)){case i:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw Error("unreachable")}}(r,n.getBoundingClientRect());s(function(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y?1:0),function(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return(n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y)?t:t.concat(n)}(t)}([...function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,o),...function(e){let{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())])),f(!0)},[f]);return r.useEffect(()=>()=>m(),[m]),r.useEffect(()=>{if(c&&p){let e=e=>g(e,p),t=e=>g(e,c);return c.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{c.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[c,p,g,m]),r.useEffect(()=>{if(u){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=(null==c?void 0:c.contains(t))||(null==p?void 0:p.contains(t)),o=!function(e,t){let{x:n,y:r}=e,o=!1;for(let e=0,i=t.length-1;er!=s>r&&n<(u-l)*(r-a)/(s-a)+l&&(o=!o)}return o}(n,u);r?m():o&&(m(),d())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[c,p,u,d,m]),(0,v.jsx)(U,{...e,ref:a})}),[A,D]=g(E,{isInside:!1}),U=r.forwardRef((e,t)=>{let{__scopeTooltip:n,children:o,"aria-label":i,onEscapeKeyDown:l,onPointerDownOutside:u,...c}=e,d=M(j,n),f=y(n),{onClose:g}=d;return r.useEffect(()=>(document.addEventListener(w,g),()=>document.removeEventListener(w,g)),[g]),r.useEffect(()=>{if(d.trigger){let e=e=>{let t=e.target;(null==t?void 0:t.contains(d.trigger))&&g()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[d.trigger,g]),(0,v.jsx)(a.qW,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:e=>e.preventDefault(),onDismiss:g,children:(0,v.jsxs)(s.UC,{"data-state":d.stateAttribute,...f,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,v.jsx)(p.xV,{children:o}),(0,v.jsx)(A,{scope:n,isInside:!0,children:(0,v.jsx)(m.b,{id:d.contentId,role:"tooltip",children:i||o})})]})})});I.displayName=j;var S="TooltipArrow";r.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,o=y(n);return D(S,n).isInside?null:(0,v.jsx)(s.i3,{...o,...r,ref:t})}).displayName=S;var B=C,F=k,W=R,H=I},20232:(e,t,n)=>{n.d(t,{b:()=>a,s:()=>l});var r=n(20107),o=n(4589),i=n(20475),l=r.forwardRef((e,t)=>(0,i.jsx)(o.sG.span,{...e,ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}));l.displayName="VisuallyHidden";var a=l}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4673-858d1306ab77aa0c.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4673-858d1306ab77aa0c.js deleted file mode 100644 index 4f29229..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/4673-858d1306ab77aa0c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4673],{81045:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(20107),i=n(20475);function o(e,t=[]){let n=[],l=()=>{let t=n.map(e=>r.createContext(e));return function(n){let i=n?.[e]||t;return r.useMemo(()=>({[`__scope${e}`]:{...n,[e]:i}}),[n,i])}};return l.scopeName=e,[function(t,o){let l=r.createContext(o),a=n.length;function f(t){let{scope:n,children:o,...f}=t,u=n?.[e][a]||l,s=r.useMemo(()=>f,Object.values(f));return(0,i.jsx)(u.Provider,{value:s,children:o})}return n=[...n,o],f.displayName=t+"Provider",[f,function(n,i){let f=i?.[e][a]||l,u=r.useContext(f);if(u)return u;if(void 0!==o)return o;throw Error(`\`${n}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let i=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return r.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}(l,...t)]}},14673:(e,t,n)=>{n.d(t,{Mz:()=>eq,i3:()=>eJ,UC:()=>eU,bL:()=>eG,Bk:()=>ek});var r=n(20107);let i=["top","right","bottom","left"],o=Math.min,l=Math.max,a=Math.round,f=Math.floor,u=e=>({x:e,y:e}),s={left:"right",right:"left",bottom:"top",top:"bottom"},c={start:"end",end:"start"};function d(e,t){return"function"==typeof e?e(t):e}function p(e){return e.split("-")[0]}function h(e){return e.split("-")[1]}function m(e){return"x"===e?"y":"x"}function g(e){return"y"===e?"height":"width"}function y(e){return["top","bottom"].includes(p(e))?"y":"x"}function v(e){return e.replace(/start|end/g,e=>c[e])}function w(e){return e.replace(/left|right|bottom|top/g,e=>s[e])}function x(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function b(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function A(e,t,n){let r,{reference:i,floating:o}=e,l=y(t),a=m(y(t)),f=g(a),u=p(t),s="y"===l,c=i.x+i.width/2-o.width/2,d=i.y+i.height/2-o.height/2,v=i[f]/2-o[f]/2;switch(u){case"top":r={x:c,y:i.y-o.height};break;case"bottom":r={x:c,y:i.y+i.height};break;case"right":r={x:i.x+i.width,y:d};break;case"left":r={x:i.x-o.width,y:d};break;default:r={x:i.x,y:i.y}}switch(h(t)){case"start":r[a]-=v*(n&&s?-1:1);break;case"end":r[a]+=v*(n&&s?-1:1)}return r}let R=async(e,t,n)=>{let{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:l}=n,a=o.filter(Boolean),f=await (null==l.isRTL?void 0:l.isRTL(t)),u=await l.getElementRects({reference:e,floating:t,strategy:i}),{x:s,y:c}=A(u,r,f),d=r,p={},h=0;for(let n=0;ne[t]>=0)}async function T(e,t){let{placement:n,platform:r,elements:i}=e,o=await (null==r.isRTL?void 0:r.isRTL(i.floating)),l=p(n),a=h(n),f="y"===y(n),u=["left","top"].includes(l)?-1:1,s=o&&f?-1:1,c=d(t,e),{mainAxis:m,crossAxis:g,alignmentAxis:v}="number"==typeof c?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return a&&"number"==typeof v&&(g="end"===a?-1*v:v),f?{x:g*s,y:m*u}:{x:m*u,y:g*s}}function C(){return"undefined"!=typeof window}function O(e){return N(e)?(e.nodeName||"").toLowerCase():"#document"}function P(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function k(e){var t;return null==(t=(N(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function N(e){return!!C()&&(e instanceof Node||e instanceof P(e).Node)}function H(e){return!!C()&&(e instanceof Element||e instanceof P(e).Element)}function D(e){return!!C()&&(e instanceof HTMLElement||e instanceof P(e).HTMLElement)}function M(e){return!!C()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof P(e).ShadowRoot)}function j(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=B(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(i)}function F(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch(e){return!1}})}function W(e){let t=z(),n=H(e)?B(e):e;return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some(e=>(n.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(n.contain||"").includes(e))}function z(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function _(e){return["html","body","#document"].includes(O(e))}function B(e){return P(e).getComputedStyle(e)}function V(e){return H(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function $(e){if("html"===O(e))return e;let t=e.assignedSlot||e.parentNode||M(e)&&e.host||k(e);return M(t)?t.host:t}function X(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let i=function e(t){let n=$(t);return _(n)?t.ownerDocument?t.ownerDocument.body:t.body:D(n)&&j(n)?n:e(n)}(e),o=i===(null==(r=e.ownerDocument)?void 0:r.body),l=P(i);if(o){let e=I(l);return t.concat(l,l.visualViewport||[],j(i)?i:[],e&&n?X(e):[])}return t.concat(i,X(i,[],n))}function I(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Y(e){let t=B(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=D(e),o=i?e.offsetWidth:n,l=i?e.offsetHeight:r,f=a(n)!==o||a(r)!==l;return f&&(n=o,r=l),{width:n,height:r,$:f}}function G(e){return H(e)?e:e.contextElement}function q(e){let t=G(e);if(!D(t))return u(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:o}=Y(t),l=(o?a(n.width):n.width)/r,f=(o?a(n.height):n.height)/i;return l&&Number.isFinite(l)||(l=1),f&&Number.isFinite(f)||(f=1),{x:l,y:f}}let U=u(0);function J(e){let t=P(e);return z()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:U}function K(e,t,n,r){var i;void 0===t&&(t=!1),void 0===n&&(n=!1);let o=e.getBoundingClientRect(),l=G(e),a=u(1);t&&(r?H(r)&&(a=q(r)):a=q(e));let f=(void 0===(i=n)&&(i=!1),r&&(!i||r===P(l))&&i)?J(l):u(0),s=(o.left+f.x)/a.x,c=(o.top+f.y)/a.y,d=o.width/a.x,p=o.height/a.y;if(l){let e=P(l),t=r&&H(r)?P(r):r,n=e,i=I(n);for(;i&&r&&t!==n;){let e=q(i),t=i.getBoundingClientRect(),r=B(i),o=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;s*=e.x,c*=e.y,d*=e.x,p*=e.y,s+=o,c+=l,i=I(n=P(i))}}return b({width:d,height:p,x:s,y:c})}function Q(e,t){let n=V(e).scrollLeft;return t?t.left+n:K(k(e)).left+n}function Z(e,t,n){let r;if("viewport"===t)r=function(e,t){let n=P(e),r=k(e),i=n.visualViewport,o=r.clientWidth,l=r.clientHeight,a=0,f=0;if(i){o=i.width,l=i.height;let e=z();(!e||e&&"fixed"===t)&&(a=i.offsetLeft,f=i.offsetTop)}return{width:o,height:l,x:a,y:f}}(e,n);else if("document"===t)r=function(e){let t=k(e),n=V(e),r=e.ownerDocument.body,i=l(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=l(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),a=-n.scrollLeft+Q(e),f=-n.scrollTop;return"rtl"===B(r).direction&&(a+=l(t.clientWidth,r.clientWidth)-i),{width:i,height:o,x:a,y:f}}(k(e));else if(H(t))r=function(e,t){let n=K(e,!0,"fixed"===t),r=n.top+e.clientTop,i=n.left+e.clientLeft,o=D(e)?q(e):u(1),l=e.clientWidth*o.x;return{width:l,height:e.clientHeight*o.y,x:i*o.x,y:r*o.y}}(t,n);else{let n=J(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return b(r)}function ee(e){return"static"===B(e).position}function et(e,t){if(!D(e)||"fixed"===B(e).position)return null;if(t)return t(e);let n=e.offsetParent;return k(e)===n&&(n=n.ownerDocument.body),n}function en(e,t){let n=P(e);if(F(e))return n;if(!D(e)){let t=$(e);for(;t&&!_(t);){if(H(t)&&!ee(t))return t;t=$(t)}return n}let r=et(e,t);for(;r&&["table","td","th"].includes(O(r))&&ee(r);)r=et(r,t);return r&&_(r)&&ee(r)&&!W(r)?n:r||function(e){let t=$(e);for(;D(t)&&!_(t);){if(W(t))return t;if(F(t))break;t=$(t)}return null}(e)||n}let er=async function(e){let t=this.getOffsetParent||en,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=D(t),i=k(t),o="fixed"===n,l=K(e,!0,o,t),a={scrollLeft:0,scrollTop:0},f=u(0);if(r||!r&&!o){if(("body"!==O(t)||j(i))&&(a=V(t)),r){let e=K(t,!0,o,t);f.x=e.x+t.clientLeft,f.y=e.y+t.clientTop}else i&&(f.x=Q(i))}let s=0,c=0;if(i&&!r&&!o){let e=i.getBoundingClientRect();c=e.top+a.scrollTop,s=e.left+a.scrollLeft-Q(i,e)}return{x:l.left+a.scrollLeft-f.x-s,y:l.top+a.scrollTop-f.y-c,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},ei={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,o="fixed"===i,l=k(r),a=!!t&&F(t.floating);if(r===l||a&&o)return n;let f={scrollLeft:0,scrollTop:0},s=u(1),c=u(0),d=D(r);if((d||!d&&!o)&&(("body"!==O(r)||j(l))&&(f=V(r)),D(r))){let e=K(r);s=q(r),c.x=e.x+r.clientLeft,c.y=e.y+r.clientTop}return{width:n.width*s.x,height:n.height*s.y,x:n.x*s.x-f.scrollLeft*s.x+c.x,y:n.y*s.y-f.scrollTop*s.y+c.y}},getDocumentElement:k,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[..."clippingAncestors"===n?F(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=X(e,[],!1).filter(e=>H(e)&&"body"!==O(e)),i=null,o="fixed"===B(e).position,l=o?$(e):e;for(;H(l)&&!_(l);){let t=B(l),n=W(l);n||"fixed"!==t.position||(i=null),(o?!n&&!i:!n&&"static"===t.position&&!!i&&["absolute","fixed"].includes(i.position)||j(l)&&!n&&function e(t,n){let r=$(t);return!(r===n||!H(r)||_(r))&&("fixed"===B(r).position||e(r,n))}(e,l))?r=r.filter(e=>e!==l):i=t,l=$(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],f=a[0],u=a.reduce((e,n)=>{let r=Z(t,n,i);return e.top=l(r.top,e.top),e.right=o(r.right,e.right),e.bottom=o(r.bottom,e.bottom),e.left=l(r.left,e.left),e},Z(t,f,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}},getOffsetParent:en,getElementRects:er,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=Y(e);return{width:t,height:n}},getScale:q,isElement:H,isRTL:function(e){return"rtl"===B(e).direction}},eo=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:f,elements:u,middlewareData:s}=t,{element:c,padding:p=0}=d(e,t)||{};if(null==c)return{};let v=x(p),w={x:n,y:r},b=m(y(i)),A=g(b),R=await f.getDimensions(c),L="y"===b,E=L?"clientHeight":"clientWidth",S=a.reference[A]+a.reference[b]-w[b]-a.floating[A],T=w[b]-a.reference[b],C=await (null==f.getOffsetParent?void 0:f.getOffsetParent(c)),O=C?C[E]:0;O&&await (null==f.isElement?void 0:f.isElement(C))||(O=u.floating[E]||a.floating[A]);let P=O/2-R[A]/2-1,k=o(v[L?"top":"left"],P),N=o(v[L?"bottom":"right"],P),H=O-R[A]-N,D=O/2-R[A]/2+(S/2-T/2),M=l(k,o(D,H)),j=!s.arrow&&null!=h(i)&&D!==M&&a.reference[A]/2-(D{let r=new Map,i={platform:ei,...n},o={...i.platform,_c:r};return R(e,t,{...i,platform:o})};var ea=n(25642),ef="undefined"!=typeof document?r.useLayoutEffect:r.useEffect;function eu(e,t){let n,r,i;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!eu(e[r],t[r]))return!1;return!0}if((n=(i=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,i[r]))return!1;for(r=n;0!=r--;){let n=i[r];if(("_owner"!==n||!e.$$typeof)&&!eu(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function es(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ec(e,t){let n=es(e);return Math.round(t*n)/n}function ed(e){let t=r.useRef(e);return ef(()=>{t.current=e}),t}let ep=e=>({name:"arrow",options:e,fn(t){let{element:n,padding:r}="function"==typeof e?e(t):e;return n&&({}).hasOwnProperty.call(n,"current")?null!=n.current?eo({element:n.current,padding:r}).fn(t):{}:n?eo({element:n,padding:r}).fn(t):{}}}),eh=(e,t)=>({...function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:i,y:o,placement:l,middlewareData:a}=t,f=await T(t,e);return l===(null==(n=a.offset)?void 0:n.placement)&&null!=(r=a.arrow)&&r.alignmentOffset?{}:{x:i+f.x,y:o+f.y,data:{...f,placement:l}}}}}(e),options:[e,t]}),em=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:i}=t,{mainAxis:a=!0,crossAxis:f=!1,limiter:u={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=d(e,t),c={x:n,y:r},h=await L(t,s),g=y(p(i)),v=m(g),w=c[v],x=c[g];if(a){let e="y"===v?"top":"left",t="y"===v?"bottom":"right",n=w+h[e],r=w-h[t];w=l(n,o(w,r))}if(f){let e="y"===g?"top":"left",t="y"===g?"bottom":"right",n=x+h[e],r=x-h[t];x=l(n,o(x,r))}let b=u.fn({...t,[v]:w,[g]:x});return{...b,data:{x:b.x-n,y:b.y-r,enabled:{[v]:a,[g]:f}}}}}}(e),options:[e,t]}),eg=(e,t)=>({...function(e){return void 0===e&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:o,middlewareData:l}=t,{offset:a=0,mainAxis:f=!0,crossAxis:u=!0}=d(e,t),s={x:n,y:r},c=y(i),h=m(c),g=s[h],v=s[c],w=d(a,t),x="number"==typeof w?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(f){let e="y"===h?"height":"width",t=o.reference[h]-o.floating[e]+x.mainAxis,n=o.reference[h]+o.reference[e]-x.mainAxis;gn&&(g=n)}if(u){var b,A;let e="y"===h?"width":"height",t=["top","left"].includes(p(i)),n=o.reference[c]-o.floating[e]+(t&&(null==(b=l.offset)?void 0:b[c])||0)+(t?0:x.crossAxis),r=o.reference[c]+o.reference[e]+(t?0:(null==(A=l.offset)?void 0:A[c])||0)-(t?x.crossAxis:0);vr&&(v=r)}return{[h]:g,[c]:v}}}}(e),options:[e,t]}),ey=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r,i,o,l;let{placement:a,middlewareData:f,rects:u,initialPlacement:s,platform:c,elements:x}=t,{mainAxis:b=!0,crossAxis:A=!0,fallbackPlacements:R,fallbackStrategy:E="bestFit",fallbackAxisSideDirection:S="none",flipAlignment:T=!0,...C}=d(e,t);if(null!=(n=f.arrow)&&n.alignmentOffset)return{};let O=p(a),P=y(s),k=p(s)===s,N=await (null==c.isRTL?void 0:c.isRTL(x.floating)),H=R||(k||!T?[w(s)]:function(e){let t=w(e);return[v(e),t,v(t)]}(s)),D="none"!==S;!R&&D&&H.push(...function(e,t,n,r){let i=h(e),o=function(e,t,n){let r=["left","right"],i=["right","left"];switch(e){case"top":case"bottom":if(n)return t?i:r;return t?r:i;case"left":case"right":return t?["top","bottom"]:["bottom","top"];default:return[]}}(p(e),"start"===n,r);return i&&(o=o.map(e=>e+"-"+i),t&&(o=o.concat(o.map(v)))),o}(s,T,S,N));let M=[s,...H],j=await L(t,C),F=[],W=(null==(r=f.flip)?void 0:r.overflows)||[];if(b&&F.push(j[O]),A){let e=function(e,t,n){void 0===n&&(n=!1);let r=h(e),i=m(y(e)),o=g(i),l="x"===i?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[o]>t.floating[o]&&(l=w(l)),[l,w(l)]}(a,u,N);F.push(j[e[0]],j[e[1]])}if(W=[...W,{placement:a,overflows:F}],!F.every(e=>e<=0)){let e=((null==(i=f.flip)?void 0:i.index)||0)+1,t=M[e];if(t)return{data:{index:e,overflows:W},reset:{placement:t}};let n=null==(o=W.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:o.placement;if(!n)switch(E){case"bestFit":{let e=null==(l=W.filter(e=>{if(D){let t=y(e.placement);return t===P||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:l[0];e&&(n=e);break}case"initialPlacement":n=s}if(a!==n)return{reset:{placement:n}}}return{}}}}(e),options:[e,t]}),ev=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;let i,a;let{placement:f,rects:u,platform:s,elements:c}=t,{apply:m=()=>{},...g}=d(e,t),v=await L(t,g),w=p(f),x=h(f),b="y"===y(f),{width:A,height:R}=u.floating;"top"===w||"bottom"===w?(i=w,a=x===(await (null==s.isRTL?void 0:s.isRTL(c.floating))?"start":"end")?"left":"right"):(a=w,i="end"===x?"top":"bottom");let E=R-v.top-v.bottom,S=A-v.left-v.right,T=o(R-v[i],E),C=o(A-v[a],S),O=!t.middlewareData.shift,P=T,k=C;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(k=S),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(P=E),O&&!x){let e=l(v.left,0),t=l(v.right,0),n=l(v.top,0),r=l(v.bottom,0);b?k=A-2*(0!==e||0!==t?e+t:l(v.left,v.right)):P=R-2*(0!==n||0!==r?n+r:l(v.top,v.bottom))}await m({...t,availableWidth:k,availableHeight:P});let N=await s.getDimensions(c.floating);return A!==N.width||R!==N.height?{reset:{rects:!0}}:{}}}}(e),options:[e,t]}),ew=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...i}=d(e,t);switch(r){case"referenceHidden":{let e=E(await L(t,{...i,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:S(e)}}}case"escaped":{let e=E(await L(t,{...i,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:S(e)}}}default:return{}}}}}(e),options:[e,t]}),ex=(e,t)=>({...ep(e),options:[e,t]});var eb=n(4589),eA=n(20475),eR=r.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...o}=e;return(0,eA.jsx)(eb.sG.svg,{...o,ref:t,width:r,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,eA.jsx)("polygon",{points:"0,0 30,0 15,10"})})});eR.displayName="Arrow";var eL=n(74111),eE=n(81045),eS=n(85547),eT=n(58013),eC=n(26783),eO="Popper",[eP,ek]=(0,eE.A)(eO),[eN,eH]=eP(eO),eD=e=>{let{__scopePopper:t,children:n}=e,[i,o]=r.useState(null);return(0,eA.jsx)(eN,{scope:t,anchor:i,onAnchorChange:o,children:n})};eD.displayName=eO;var eM="PopperAnchor",ej=r.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:i,...o}=e,l=eH(eM,n),a=r.useRef(null),f=(0,eL.s)(t,a);return r.useEffect(()=>{l.onAnchorChange((null==i?void 0:i.current)||a.current)}),i?null:(0,eA.jsx)(eb.sG.div,{...o,ref:f})});ej.displayName=eM;var eF="PopperContent",[eW,ez]=eP(eF),e_=r.forwardRef((e,t)=>{var n,i,a,u,s,c,d,p;let{__scopePopper:h,side:m="bottom",sideOffset:g=0,align:y="center",alignOffset:v=0,arrowPadding:w=0,avoidCollisions:x=!0,collisionBoundary:b=[],collisionPadding:A=0,sticky:R="partial",hideWhenDetached:L=!1,updatePositionStrategy:E="optimized",onPlaced:S,...T}=e,C=eH(eF,h),[O,P]=r.useState(null),N=(0,eL.s)(t,e=>P(e)),[H,D]=r.useState(null),M=(0,eC.X)(H),j=null!==(d=null==M?void 0:M.width)&&void 0!==d?d:0,F=null!==(p=null==M?void 0:M.height)&&void 0!==p?p:0,W="number"==typeof A?A:{top:0,right:0,bottom:0,left:0,...A},z=Array.isArray(b)?b:[b],_=z.length>0,B={padding:W,boundary:z.filter(eX),altBoundary:_},{refs:V,floatingStyles:$,placement:I,isPositioned:Y,middlewareData:q}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:n="absolute",middleware:i=[],platform:o,elements:{reference:l,floating:a}={},transform:f=!0,whileElementsMounted:u,open:s}=e,[c,d]=r.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=r.useState(i);eu(p,i)||h(i);let[m,g]=r.useState(null),[y,v]=r.useState(null),w=r.useCallback(e=>{e!==R.current&&(R.current=e,g(e))},[]),x=r.useCallback(e=>{e!==L.current&&(L.current=e,v(e))},[]),b=l||m,A=a||y,R=r.useRef(null),L=r.useRef(null),E=r.useRef(c),S=null!=u,T=ed(u),C=ed(o),O=ed(s),P=r.useCallback(()=>{if(!R.current||!L.current)return;let e={placement:t,strategy:n,middleware:p};C.current&&(e.platform=C.current),el(R.current,L.current,e).then(e=>{let t={...e,isPositioned:!1!==O.current};k.current&&!eu(E.current,t)&&(E.current=t,ea.flushSync(()=>{d(t)}))})},[p,t,n,C,O]);ef(()=>{!1===s&&E.current.isPositioned&&(E.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[s]);let k=r.useRef(!1);ef(()=>(k.current=!0,()=>{k.current=!1}),[]),ef(()=>{if(b&&(R.current=b),A&&(L.current=A),b&&A){if(T.current)return T.current(b,A,P);P()}},[b,A,P,T,S]);let N=r.useMemo(()=>({reference:R,floating:L,setReference:w,setFloating:x}),[w,x]),H=r.useMemo(()=>({reference:b,floating:A}),[b,A]),D=r.useMemo(()=>{let e={position:n,left:0,top:0};if(!H.floating)return e;let t=ec(H.floating,c.x),r=ec(H.floating,c.y);return f?{...e,transform:"translate("+t+"px, "+r+"px)",...es(H.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}},[n,f,H.floating,c.x,c.y]);return r.useMemo(()=>({...c,update:P,refs:N,elements:H,floatingStyles:D}),[c,P,N,H,D])}({strategy:"fixed",placement:m+("center"!==y?"-"+y:""),whileElementsMounted:function(){for(var e=arguments.length,t=Array(e),n=0;n{a&&e.addEventListener("scroll",n,{passive:!0}),u&&e.addEventListener("resize",n)});let m=p&&c?function(e,t){let n,r=null,i=k(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function u(s,c){void 0===s&&(s=!1),void 0===c&&(c=1),a();let{left:d,top:p,width:h,height:m}=e.getBoundingClientRect();if(s||t(),!h||!m)return;let g=f(p),y=f(i.clientWidth-(d+h)),v={rootMargin:-g+"px "+-y+"px "+-f(i.clientHeight-(p+m))+"px "+-f(d)+"px",threshold:l(0,o(1,c))||1},w=!0;function x(e){let t=e[0].intersectionRatio;if(t!==c){if(!w)return u();t?u(!1,t):n=setTimeout(()=>{u(!1,1e-7)},1e3)}w=!1}try{r=new IntersectionObserver(x,{...v,root:i.ownerDocument})}catch(e){r=new IntersectionObserver(x,v)}r.observe(e)}(!0),a}(p,n):null,g=-1,y=null;s&&(y=new ResizeObserver(e=>{let[r]=e;r&&r.target===p&&y&&(y.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var e;null==(e=y)||e.observe(t)})),n()}),p&&!d&&y.observe(p),y.observe(t));let v=d?K(e):null;return d&&function t(){let r=K(e);v&&(r.x!==v.x||r.y!==v.y||r.width!==v.width||r.height!==v.height)&&n(),v=r,i=requestAnimationFrame(t)}(),n(),()=>{var e;h.forEach(e=>{a&&e.removeEventListener("scroll",n),u&&e.removeEventListener("resize",n)}),null==m||m(),null==(e=y)||e.disconnect(),y=null,d&&cancelAnimationFrame(i)}}(...t,{animationFrame:"always"===E})},elements:{reference:C.anchor},middleware:[eh({mainAxis:g+F,alignmentAxis:v}),x&&em({mainAxis:!0,crossAxis:!1,limiter:"partial"===R?eg():void 0,...B}),x&&ey({...B}),ev({...B,apply:e=>{let{elements:t,rects:n,availableWidth:r,availableHeight:i}=e,{width:o,height:l}=n.reference,a=t.floating.style;a.setProperty("--radix-popper-available-width","".concat(r,"px")),a.setProperty("--radix-popper-available-height","".concat(i,"px")),a.setProperty("--radix-popper-anchor-width","".concat(o,"px")),a.setProperty("--radix-popper-anchor-height","".concat(l,"px"))}}),H&&ex({element:H,padding:w}),eI({arrowWidth:j,arrowHeight:F}),L&&ew({strategy:"referenceHidden",...B})]}),[U,J]=eY(I),Q=(0,eS.c)(S);(0,eT.N)(()=>{Y&&(null==Q||Q())},[Y,Q]);let Z=null===(n=q.arrow)||void 0===n?void 0:n.x,ee=null===(i=q.arrow)||void 0===i?void 0:i.y,et=(null===(a=q.arrow)||void 0===a?void 0:a.centerOffset)!==0,[en,er]=r.useState();return(0,eT.N)(()=>{O&&er(window.getComputedStyle(O).zIndex)},[O]),(0,eA.jsx)("div",{ref:V.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:Y?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:en,"--radix-popper-transform-origin":[null===(u=q.transformOrigin)||void 0===u?void 0:u.x,null===(s=q.transformOrigin)||void 0===s?void 0:s.y].join(" "),...(null===(c=q.hide)||void 0===c?void 0:c.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,eA.jsx)(eW,{scope:h,placedSide:U,onArrowChange:D,arrowX:Z,arrowY:ee,shouldHideArrow:et,children:(0,eA.jsx)(eb.sG.div,{"data-side":U,"data-align":J,...T,ref:N,style:{...T.style,animation:Y?void 0:"none"}})})})});e_.displayName=eF;var eB="PopperArrow",eV={top:"bottom",right:"left",bottom:"top",left:"right"},e$=r.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=ez(eB,n),o=eV[i.placedSide];return(0,eA.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,eA.jsx)(eR,{...r,ref:t,style:{...r.style,display:"block"}})})});function eX(e){return null!==e}e$.displayName=eB;var eI=e=>({name:"transformOrigin",options:e,fn(t){var n,r,i,o,l;let{placement:a,rects:f,middlewareData:u}=t,s=(null===(n=u.arrow)||void 0===n?void 0:n.centerOffset)!==0,c=s?0:e.arrowWidth,d=s?0:e.arrowHeight,[p,h]=eY(a),m={start:"0%",center:"50%",end:"100%"}[h],g=(null!==(o=null===(r=u.arrow)||void 0===r?void 0:r.x)&&void 0!==o?o:0)+c/2,y=(null!==(l=null===(i=u.arrow)||void 0===i?void 0:i.y)&&void 0!==l?l:0)+d/2,v="",w="";return"bottom"===p?(v=s?m:"".concat(g,"px"),w="".concat(-d,"px")):"top"===p?(v=s?m:"".concat(g,"px"),w="".concat(f.floating.height+d,"px")):"right"===p?(v="".concat(-d,"px"),w=s?m:"".concat(y,"px")):"left"===p&&(v="".concat(f.floating.width+d,"px"),w=s?m:"".concat(y,"px")),{data:{x:v,y:w}}}});function eY(e){let[t,n="center"]=e.split("-");return[t,n]}var eG=eD,eq=ej,eU=e_,eJ=e$},26783:(e,t,n)=>{n.d(t,{X:()=>o});var r=n(20107),i=n(58013);function o(e){let[t,n]=r.useState(void 0);return(0,i.N)(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,i;if(!Array.isArray(t)||!t.length)return;let o=t[0];if("borderBoxSize"in o){let e=o.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,i=t.blockSize}else r=e.offsetWidth,i=e.offsetHeight;n({width:r,height:i})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)},[e]),t}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5011-c111b606b30e72ad.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5011-c111b606b30e72ad.js deleted file mode 100644 index 50eef0d..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5011-c111b606b30e72ad.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5011],{58020:(e,t,n)=>{n.d(t,{Eq:()=>l});var r=new WeakMap,o=new WeakMap,a={},c=0,i=function(e){return e&&(e.host||i(e.parentNode))},u=function(e,t,n,u){var l=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var n=i(e);return n&&t.contains(n)?n:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});a[n]||(a[n]=new WeakMap);var d=a[n],s=[],f=new Set,v=new Set(l),p=function(e){!e||f.has(e)||(f.add(e),p(e.parentNode))};l.forEach(p);var h=function(e){!e||v.has(e)||Array.prototype.forEach.call(e.children,function(e){if(f.has(e))h(e);else try{var t=e.getAttribute(u),a=null!==t&&"false"!==t,c=(r.get(e)||0)+1,i=(d.get(e)||0)+1;r.set(e,c),d.set(e,i),s.push(e),1===c&&a&&o.set(e,!0),1===i&&e.setAttribute(n,"true"),a||e.setAttribute(u,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return h(t),f.clear(),c++,function(){s.forEach(function(e){var t=r.get(e)-1,a=d.get(e)-1;r.set(e,t),d.set(e,a),t||(o.has(e)||e.removeAttribute(u),o.delete(e)),a||e.removeAttribute(n)}),--c||(r=new WeakMap,r=new WeakMap,o=new WeakMap,a={})}},l=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r,o=Array.from(Array.isArray(e)?e:[e]),a=t||(r=e,"undefined"==typeof document?null:(Array.isArray(r)?r[0]:r).ownerDocument.body);return a?(o.push.apply(o,Array.from(a.querySelectorAll("[aria-live]"))),u(o,a,n,"aria-hidden")):function(){return null}}},41364:(e,t,n)=>{n.d(t,{A:()=>Z});var r,o,a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError;var i=n(20107),u="right-scroll-bar-position",l="width-before-scroll-bar";function d(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var s="undefined"!=typeof window?i.useLayoutEffect:i.useEffect,f=new WeakMap;function v(e){return e}var p=function(e){void 0===e&&(e={});var t,n,r,o=(void 0===t&&(t=v),n=[],r=!1,{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:null},useMedium:function(e){var o=t(e,r);return n.push(o),function(){n=n.filter(function(e){return e!==o})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var o=n;n=[],o.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},c=function(){return Promise.resolve().then(a)};c(),n={push:function(e){t.push(e),c()},filter:function(e){return t=t.filter(e),n}}}});return o.options=a({async:!0,ssr:!1},e),o}(),h=function(){},m=i.forwardRef(function(e,t){var n,r,o,u,l=i.useRef(null),v=i.useState({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:h}),m=v[0],g=v[1],y=e.forwardProps,b=e.children,E=e.className,w=e.removeScrollBar,S=e.enabled,C=e.shards,k=e.sideCar,A=e.noIsolation,N=e.inert,M=e.allowPinchZoom,L=e.as,T=e.gapMode,x=c(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),R=(n=[l,t],r=function(e){return n.forEach(function(t){return d(t,e)})},(o=(0,i.useState)(function(){return{value:null,callback:r,facade:{get current(){return o.value},set current(value){var e=o.value;e!==value&&(o.value=value,o.callback(value,e))}}}})[0]).callback=r,u=o.facade,s(function(){var e=f.get(u);if(e){var t=new Set(e),r=new Set(n),o=u.current;t.forEach(function(e){r.has(e)||d(e,null)}),r.forEach(function(e){t.has(e)||d(e,o)})}f.set(u,n)},[n]),u),O=a(a({},x),m);return i.createElement(i.Fragment,null,S&&i.createElement(k,{sideCar:p,removeScrollBar:w,shards:C,noIsolation:A,inert:N,setCallbacks:g,allowPinchZoom:!!M,lockRef:l,gapMode:T}),y?i.cloneElement(i.Children.only(b),a(a({},O),{ref:R})):i.createElement(void 0===L?"div":L,a({},O,{className:E,ref:R}),b))});m.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},m.classNames={fullWidth:l,zeroRight:u};var g=function(e){var t=e.sideCar,n=c(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error("Sidecar medium not found");return i.createElement(r,a({},n))};g.isSideCarExport=!0;var y=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=o||n.nc;return t&&e.setAttribute("nonce",t),e}())){var a,c;(a=t).styleSheet?a.styleSheet.cssText=r:a.appendChild(document.createTextNode(r)),c=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(c)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},b=function(){var e=y();return function(t,n){i.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},E=function(){var e=b();return function(t){return e(t.styles,t.dynamic),null}},w={left:0,top:0,right:0,gap:0},S=function(e){return parseInt(e||"",10)||0},C=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[S(n),S(r),S(o)]},k=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return w;var t=C(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},A=E(),N="data-scroll-locked",M=function(e,t,n,r){var o=e.left,a=e.top,c=e.right,i=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(i,"px ").concat(r,";\n }\n body[").concat(N,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(c,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(i,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(i,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(u," {\n right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(l," {\n margin-right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(u," .").concat(u," {\n right: 0 ").concat(r,";\n }\n \n .").concat(l," .").concat(l," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(N,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(i,"px;\n }\n")},L=function(){var e=parseInt(document.body.getAttribute(N)||"0",10);return isFinite(e)?e:0},T=function(){i.useEffect(function(){return document.body.setAttribute(N,(L()+1).toString()),function(){var e=L()-1;e<=0?document.body.removeAttribute(N):document.body.setAttribute(N,e.toString())}},[])},x=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=void 0===r?"margin":r;T();var a=i.useMemo(function(){return k(o)},[o]);return i.createElement(A,{styles:M(a,!t,o,n?"":"!important")})},R=!1;if("undefined"!=typeof window)try{var O=Object.defineProperty({},"passive",{get:function(){return R=!0,!0}});window.addEventListener("test",O,O),window.removeEventListener("test",O,O)}catch(e){R=!1}var P=!!R&&{passive:!1},I=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&"TEXTAREA"!==e.tagName&&"visible"===n[t])},W=function(e,t){var n=t.ownerDocument,r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),F(e,r)){var o=j(e,r);if(o[1]>o[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},F=function(e,t){return"v"===e?I(t,"overflowY"):I(t,"overflowX")},j=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},B=function(e,t,n,r,o){var a,c=(a=window.getComputedStyle(t).direction,"h"===e&&"rtl"===a?-1:1),i=c*r,u=n.target,l=t.contains(u),d=!1,s=i>0,f=0,v=0;do{var p=j(e,u),h=p[0],m=p[1]-p[2]-c*h;(h||m)&&F(e,u)&&(f+=m,v+=h),u instanceof ShadowRoot?u=u.host:u=u.parentNode}while(!l&&u!==document.body||l&&(t.contains(u)||t===u));return s&&(o&&1>Math.abs(f)||!o&&i>f)?d=!0:!s&&(o&&1>Math.abs(v)||!o&&-i>v)&&(d=!0),d},D=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},K=function(e){return[e.deltaX,e.deltaY]},_=function(e){return e&&"current"in e?e.current:e},X=0,Y=[];let q=(r=function(e){var t=i.useRef([]),n=i.useRef([0,0]),r=i.useRef(),o=i.useState(X++)[0],a=i.useState(E)[0],c=i.useRef(e);i.useEffect(function(){c.current=e},[e]),i.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var t=(function(e,t,n){if(n||2==arguments.length)for(var r,o=0,a=t.length;oMath.abs(l)?"h":"v";if("touches"in e&&"h"===s&&"range"===d.type)return!1;var f=W(s,d);if(!f)return!0;if(f?o=s:(o="v"===s?"h":"v",f=W(s,d)),!f)return!1;if(!r.current&&"changedTouches"in e&&(u||l)&&(r.current=o),!o)return!0;var v=r.current||o;return B(v,t,e,"h"===v?u:l,!0)},[]),l=i.useCallback(function(e){if(Y.length&&Y[Y.length-1]===a){var n="deltaY"in e?K(e):D(e),r=t.current.filter(function(t){var r;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(r=t.delta)[0]===n[0]&&r[1]===n[1]})[0];if(r&&r.should){e.cancelable&&e.preventDefault();return}if(!r){var o=(c.current.shards||[]).map(_).filter(Boolean).filter(function(t){return t.contains(e.target)});(o.length>0?u(e,o[0]):!c.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),d=i.useCallback(function(e,n,r,o){var a={name:e,delta:n,target:r,should:o,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),s=i.useCallback(function(e){n.current=D(e),r.current=void 0},[]),f=i.useCallback(function(t){d(t.type,K(t),t.target,u(t,e.lockRef.current))},[]),v=i.useCallback(function(t){d(t.type,D(t),t.target,u(t,e.lockRef.current))},[]);i.useEffect(function(){return Y.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:v}),document.addEventListener("wheel",l,P),document.addEventListener("touchmove",l,P),document.addEventListener("touchstart",s,P),function(){Y=Y.filter(function(e){return e!==a}),document.removeEventListener("wheel",l,P),document.removeEventListener("touchmove",l,P),document.removeEventListener("touchstart",s,P)}},[]);var p=e.removeScrollBar,h=e.inert;return i.createElement(i.Fragment,null,h?i.createElement(a,{styles:"\n .block-interactivity-".concat(o," {pointer-events: none;}\n .allow-interactivity-").concat(o," {pointer-events: all;}\n")}):null,p?i.createElement(x,{gapMode:e.gapMode}):null)},p.useMedium(r),g);var H=i.forwardRef(function(e,t){return i.createElement(m,a({},e,{ref:t,sideCar:q}))});H.classNames=m.classNames;let Z=H},62894:(e,t,n)=>{n.d(t,{Oh:()=>a});var r=n(20107),o=0;function a(){r.useEffect(()=>{var e,t;let n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=n[0])&&void 0!==e?e:c()),document.body.insertAdjacentElement("beforeend",null!==(t=n[1])&&void 0!==t?t:c()),o++,()=>{1===o&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),o--}},[])}function c(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}},98246:(e,t,n)=>{n.d(t,{n:()=>s});var r=n(20107),o=n(74111),a=n(4589),c=n(85547),i=n(20475),u="focusScope.autoFocusOnMount",l="focusScope.autoFocusOnUnmount",d={bubbles:!1,cancelable:!0},s=r.forwardRef((e,t)=>{let{loop:n=!1,trapped:s=!1,onMountAutoFocus:m,onUnmountAutoFocus:g,...y}=e,[b,E]=r.useState(null),w=(0,c.c)(m),S=(0,c.c)(g),C=r.useRef(null),k=(0,o.s)(t,e=>E(e)),A=r.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;r.useEffect(()=>{if(s){let e=function(e){if(A.paused||!b)return;let t=e.target;b.contains(t)?C.current=t:p(C.current,{select:!0})},t=function(e){if(A.paused||!b)return;let t=e.relatedTarget;null===t||b.contains(t)||p(C.current,{select:!0})};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let n=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&p(b)});return b&&n.observe(b,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}},[s,b,A.paused]),r.useEffect(()=>{if(b){h.add(A);let e=document.activeElement;if(!b.contains(e)){let t=new CustomEvent(u,d);b.addEventListener(u,w),b.dispatchEvent(t),t.defaultPrevented||(function(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=document.activeElement;for(let r of e)if(p(r,{select:t}),document.activeElement!==n)return}(f(b).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&p(b))}return()=>{b.removeEventListener(u,w),setTimeout(()=>{let t=new CustomEvent(l,d);b.addEventListener(l,S),b.dispatchEvent(t),t.defaultPrevented||p(null!=e?e:document.body,{select:!0}),b.removeEventListener(l,S),h.remove(A)},0)}}},[b,w,S,A]);let N=r.useCallback(e=>{if(!n&&!s||A.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){let t=e.currentTarget,[o,a]=function(e){let t=f(e);return[v(t,e),v(t.reverse(),e)]}(t);o&&a?e.shiftKey||r!==a?e.shiftKey&&r===o&&(e.preventDefault(),n&&p(a,{select:!0})):(e.preventDefault(),n&&p(o,{select:!0})):r===t&&e.preventDefault()}},[n,s,A.paused]);return(0,i.jsx)(a.sG.div,{tabIndex:-1,...y,ref:k,onKeyDown:N})});function f(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function v(e,t){for(let n of e)if(!function(e,t){let{upTo:n}=t;if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===n||e!==n);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(n,{upTo:t}))return n}function p(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e&&e.focus){var n;let r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&(n=e)instanceof HTMLInputElement&&"select"in n&&t&&e.select()}}s.displayName="FocusScope";var h=function(){let e=[];return{add(t){let n=e[0];t!==n&&(null==n||n.pause()),(e=m(e,t)).unshift(t)},remove(t){var n;null===(n=(e=m(e,t))[0])||void 0===n||n.resume()}}}();function m(e,t){let n=[...e],r=n.indexOf(t);return -1!==r&&n.splice(r,1),n}},72763:(e,t,n)=>{n.d(t,{B:()=>u});var r,o=n(20107),a=n(58013),c=(r||(r=n.t(o,2)))["useId".toString()]||(()=>void 0),i=0;function u(e){let[t,n]=o.useState(c());return(0,a.N)(()=>{e||n(e=>e??String(i++))},[e]),e||(t?`radix-${t}`:"")}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5315-58d2fa3cadcc19a0.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5315-58d2fa3cadcc19a0.js deleted file mode 100644 index 1df38eb..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/5315-58d2fa3cadcc19a0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5315],{39997:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(20107);let o=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),i=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var u={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,n.forwardRef)((e,t)=>{let{color:r="currentColor",size:o=24,strokeWidth:l=2,absoluteStrokeWidth:a,className:s="",children:c,iconNode:d,...f}=e;return(0,n.createElement)("svg",{ref:t,...u,width:o,height:o,stroke:r,strokeWidth:a?24*Number(l)/Number(o):l,className:i("lucide",s),...f},[...d.map(e=>{let[t,r]=e;return(0,n.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),a=(e,t)=>{let r=(0,n.forwardRef)((r,u)=>{let{className:a,...s}=r;return(0,n.createElement)(l,{ref:u,iconNode:t,className:i("lucide-".concat(o(e)),a),...s})});return r.displayName="".concat(e),r}},29475:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(39997).A)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},91994:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(39997).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},94521:(e,t,r)=>{r.d(t,{m:()=>n});function n(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(e?.(n),!1===r||!n.defaultPrevented)return t?.(n)}}},32044:(e,t,r)=>{r.d(t,{C1:()=>A,bL:()=>x});var n=r(20107),o=r(74111),i=r(80938),u=r(94521),l=r(81255),a=r(48543),s=r(26783),c=r(62796),d=r(4589),f=r(20475),v="Checkbox",[m,p]=(0,i.A)(v),[h,y]=m(v),N=n.forwardRef((e,t)=>{let{__scopeCheckbox:r,name:i,checked:a,defaultChecked:s,required:c,disabled:v,value:m="on",onCheckedChange:p,form:y,...N}=e,[b,w]=n.useState(null),x=(0,o.s)(t,e=>w(e)),A=n.useRef(!1),M=!b||y||!!b.closest("form"),[O=!1,C]=(0,l.i)({prop:a,defaultProp:s,onChange:p}),R=n.useRef(O);return n.useEffect(()=>{let e=null==b?void 0:b.form;if(e){let t=()=>C(R.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[b,C]),(0,f.jsxs)(h,{scope:r,state:O,disabled:v,children:[(0,f.jsx)(d.sG.button,{type:"button",role:"checkbox","aria-checked":k(O)?"mixed":O,"aria-required":c,"data-state":E(O),"data-disabled":v?"":void 0,disabled:v,value:m,...N,ref:x,onKeyDown:(0,u.m)(e.onKeyDown,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,u.m)(e.onClick,e=>{C(e=>!!k(e)||!e),M&&(A.current=e.isPropagationStopped(),A.current||e.stopPropagation())})}),M&&(0,f.jsx)(g,{control:b,bubbles:!A.current,name:i,value:m,checked:O,required:c,disabled:v,form:y,style:{transform:"translateX(-100%)"},defaultChecked:!k(s)&&s})]})});N.displayName=v;var b="CheckboxIndicator",w=n.forwardRef((e,t)=>{let{__scopeCheckbox:r,forceMount:n,...o}=e,i=y(b,r);return(0,f.jsx)(c.C,{present:n||k(i.state)||!0===i.state,children:(0,f.jsx)(d.sG.span,{"data-state":E(i.state),"data-disabled":i.disabled?"":void 0,...o,ref:t,style:{pointerEvents:"none",...e.style}})})});w.displayName=b;var g=e=>{let{control:t,checked:r,bubbles:o=!0,defaultChecked:i,...u}=e,l=n.useRef(null),c=(0,a.Z)(r),d=(0,s.X)(t);n.useEffect(()=>{let e=l.current,t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(c!==r&&t){let n=new Event("click",{bubbles:o});e.indeterminate=k(r),t.call(e,!k(r)&&r),e.dispatchEvent(n)}},[c,r,o]);let v=n.useRef(!k(r)&&r);return(0,f.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:null!=i?i:v.current,...u,tabIndex:-1,ref:l,style:{...e.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function k(e){return"indeterminate"===e}function E(e){return k(e)?"indeterminate":e?"checked":"unchecked"}var x=N,A=w},80938:(e,t,r)=>{r.d(t,{A:()=>u,q:()=>i});var n=r(20107),o=r(20475);function i(e,t){let r=n.createContext(t),i=e=>{let{children:t,...i}=e,u=n.useMemo(()=>i,Object.values(i));return(0,o.jsx)(r.Provider,{value:u,children:t})};return i.displayName=e+"Provider",[i,function(o){let i=n.useContext(r);if(i)return i;if(void 0!==t)return t;throw Error(`\`${o}\` must be used within \`${e}\``)}]}function u(e,t=[]){let r=[],i=()=>{let t=r.map(e=>n.createContext(e));return function(r){let o=r?.[e]||t;return n.useMemo(()=>({[`__scope${e}`]:{...r,[e]:o}}),[r,o])}};return i.scopeName=e,[function(t,i){let u=n.createContext(i),l=r.length;r=[...r,i];let a=t=>{let{scope:r,children:i,...a}=t,s=r?.[e]?.[l]||u,c=n.useMemo(()=>a,Object.values(a));return(0,o.jsx)(s.Provider,{value:c,children:i})};return a.displayName=t+"Provider",[a,function(r,o){let a=o?.[e]?.[l]||u,s=n.useContext(a);if(s)return s;if(void 0!==i)return i;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let o=r.reduce((t,{useScope:r,scopeName:n})=>{let o=r(e)[`__scope${n}`];return{...t,...o}},{});return n.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return r.scopeName=t.scopeName,r}(i,...t)]}},62796:(e,t,r)=>{r.d(t,{C:()=>u});var n=r(20107),o=r(74111),i=r(58013),u=e=>{let{present:t,children:r}=e,u=function(e){var t,r;let[o,u]=n.useState(),a=n.useRef({}),s=n.useRef(e),c=n.useRef("none"),[d,f]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},n.useReducer((e,t)=>{let n=r[e][t];return null!=n?n:e},t));return n.useEffect(()=>{let e=l(a.current);c.current="mounted"===d?e:"none"},[d]),(0,i.N)(()=>{let t=a.current,r=s.current;if(r!==e){let n=c.current,o=l(t);e?f("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?f("UNMOUNT"):r&&n!==o?f("ANIMATION_OUT"):f("UNMOUNT"),s.current=e}},[e,f]),(0,i.N)(()=>{if(o){var e;let t;let r=null!==(e=o.ownerDocument.defaultView)&&void 0!==e?e:window,n=e=>{let n=l(a.current).includes(e.animationName);if(e.target===o&&n&&(f("ANIMATION_END"),!s.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",t=r.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},i=e=>{e.target===o&&(c.current=l(a.current))};return o.addEventListener("animationstart",i),o.addEventListener("animationcancel",n),o.addEventListener("animationend",n),()=>{r.clearTimeout(t),o.removeEventListener("animationstart",i),o.removeEventListener("animationcancel",n),o.removeEventListener("animationend",n)}}f("ANIMATION_END")},[o,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:n.useCallback(e=>{e&&(a.current=getComputedStyle(e)),u(e)},[])}}(t),a="function"==typeof r?r({present:u.isPresent}):n.Children.only(r),s=(0,o.s)(u.ref,function(e){var t,r;let n=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,o=n&&"isReactWarning"in n&&n.isReactWarning;return o?e.ref:(o=(n=null===(r=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===r?void 0:r.get)&&"isReactWarning"in n&&n.isReactWarning)?e.props.ref:e.props.ref||e.ref}(a));return"function"==typeof r||u.isPresent?n.cloneElement(a,{ref:s}):null};function l(e){return(null==e?void 0:e.animationName)||"none"}u.displayName="Presence"},4589:(e,t,r)=>{r.d(t,{hO:()=>a,sG:()=>l});var n=r(20107),o=r(25642),i=r(61837),u=r(20475),l=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=n.forwardRef((e,r)=>{let{asChild:n,...o}=e,l=n?i.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,u.jsx)(l,{...o,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function a(e,t){e&&o.flushSync(()=>e.dispatchEvent(t))}},85547:(e,t,r)=>{r.d(t,{c:()=>o});var n=r(20107);function o(e){let t=n.useRef(e);return n.useEffect(()=>{t.current=e}),n.useMemo(()=>(...e)=>t.current?.(...e),[])}},81255:(e,t,r)=>{r.d(t,{i:()=>i});var n=r(20107),o=r(85547);function i({prop:e,defaultProp:t,onChange:r=()=>{}}){let[i,u]=function({defaultProp:e,onChange:t}){let r=n.useState(e),[i]=r,u=n.useRef(i),l=(0,o.c)(t);return n.useEffect(()=>{u.current!==i&&(l(i),u.current=i)},[i,u,l]),r}({defaultProp:t,onChange:r}),l=void 0!==e,a=l?e:i,s=(0,o.c)(r);return[a,n.useCallback(t=>{if(l){let r="function"==typeof t?t(e):t;r!==e&&s(r)}else u(t)},[l,e,u,s])]}},58013:(e,t,r)=>{r.d(t,{N:()=>o});var n=r(20107),o=globalThis?.document?n.useLayoutEffect:()=>{}},48543:(e,t,r)=>{r.d(t,{Z:()=>o});var n=r(20107);function o(e){let t=n.useRef({value:e,previous:e});return n.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},26783:(e,t,r)=>{r.d(t,{X:()=>i});var n=r(20107),o=r(58013);function i(e){let[t,r]=n.useState(void 0);return(0,o.N)(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let n,o;if(!Array.isArray(t)||!t.length)return;let i=t[0];if("borderBoxSize"in i){let e=i.borderBoxSize,t=Array.isArray(e)?e[0]:e;n=t.inlineSize,o=t.blockSize}else n=e.offsetWidth,o=e.offsetHeight;r({width:n,height:o})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}},29395:(e,t,r)=>{r.d(t,{F:()=>i});let n=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,o=function(){for(var e,t,r=0,n="";rr=>{var i;if((null==t?void 0:t.variants)==null)return o(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:u,defaultVariants:l}=t,a=Object.keys(u).map(e=>{let t=null==r?void 0:r[e],o=null==l?void 0:l[e];if(null===t)return null;let i=n(t)||n(o);return u[e][i]}),s=r&&Object.entries(r).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return o(e,a,null==t?void 0:null===(i=t.compoundVariants)||void 0===i?void 0:i.reduce((e,t)=>{let{class:r,className:n,...o}=t;return Object.entries(o).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...s}[t]):({...l,...s})[t]===r})?[...e,r,n]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6035-ec51cb9f09eb54c7.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6035-ec51cb9f09eb54c7.js deleted file mode 100644 index 1b40268..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6035-ec51cb9f09eb54c7.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6035],{45139:(e,t)=>{"use strict";function r(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return r}})},15129:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},86170:(e,t,r)=>{"use strict";var n,o;e.exports=(null==(n=r.g.process)?void 0:n.env)&&"object"==typeof(null==(o=r.g.process)?void 0:o.env)?r.g.process:r(18259)},95376:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return a}});let n=r(76905),o=r(53317);function a(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,""))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9545:(e,t)=>{"use strict";function r(e){var t,r;t=self.__next_s,r=()=>{e()},t&&t.length?t.reduce((e,t)=>{let[r,n]=t;return e.then(()=>new Promise((e,t)=>{let o=document.createElement("script");if(n)for(let e in n)"children"!==e&&o.setAttribute(e,n[e]);r?(o.src=r,o.onload=()=>e(),o.onerror=t):n&&(o.innerHTML=n.children,setTimeout(e)),document.head.appendChild(o)}))},Promise.resolve()).catch(e=>{console.error(e)}).then(()=>{r()}):r()}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"appBootstrap",{enumerable:!0,get:function(){return r}}),window.next={version:"15.1.2",appDir:!0},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},28567:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getAppBuildId:function(){return o},setAppBuildId:function(){return n}});let r="";function n(e){r=e}function o(){return r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},53051:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{callServer:function(){return l},useServerActionDispatcher:function(){return u}});let n=r(20107),o=r(23093),a=null;function u(e){a=(0,n.useCallback)(t=>{(0,n.startTransition)(()=>{e({...t,type:o.ACTION_SERVER_ACTION})})},[e])}async function l(e,t){let r=a;if(!r)throw Error("Invariant: missing action dispatcher.");return new Promise((n,o)=>{r({actionId:e,actionArgs:t,resolve:n,reject:o})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},98387:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findSourceMapURL",{enumerable:!0,get:function(){return r}});let r=void 0;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},88583:(e,t,r)=>{"use strict";let n,o;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hydrate",{enumerable:!0,get:function(){return N}});let a=r(67342),u=r(62599),l=r(20475);r(15129),r(165),r(80099);let i=a._(r(52661)),s=u._(r(20107)),c=r(18971),f=r(17315),d=r(43477),p=r(42347),h=r(53051),y=r(98387),g=r(52345),b=a._(r(78311)),_=r(85010);r(32618);let v=r(28567),m=document,P=new TextEncoder,E=!1,O=!1,R=null;function S(e){if(0===e[0])n=[];else if(1===e[0]){if(!n)throw Error("Unexpected server data: missing bootstrap script.");o?o.enqueue(P.encode(e[1])):n.push(e[1])}else if(2===e[0])R=e[1];else if(3===e[0]){if(!n)throw Error("Unexpected server data: missing bootstrap script.");let r=atob(e[1]),a=new Uint8Array(r.length);for(var t=0;t{t.enqueue("string"==typeof e?P.encode(e):e)}),E&&!O)&&(null===t.desiredSize||t.desiredSize<0?t.error(Error("The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection.")):t.close(),O=!0,n=void 0),o=t}}),M=(0,c.createFromReadableStream)(T,{callServer:h.callServer,findSourceMapURL:y.findSourceMapURL}),x=new Promise((e,t)=>{M.then(t=>{(0,v.setAppBuildId)(t.b),e((0,g.createMutableActionQueue)((0,_.createInitialRouterState)({initialFlightData:t.f,initialCanonicalUrlParts:t.c,initialParallelRoutes:new Map,location:window.location,couldBeIntercepted:t.i,postponed:t.s,prerendered:t.S})))},e=>t(e))});function A(){let e=(0,s.use)(M),t=(0,s.use)(x);return(0,l.jsx)(b.default,{actionQueue:t,globalErrorComponentAndStyles:e.G,assetPrefix:e.p})}let C=s.default.StrictMode;function k(e){let{children:t}=e;return t}let D={onRecoverableError:d.onRecoverableError,onCaughtError:p.onCaughtError,onUncaughtError:p.onUncaughtError};function N(){let e=(0,l.jsx)(C,{children:(0,l.jsx)(f.HeadManagerContext.Provider,{value:{appDir:!0},children:(0,l.jsx)(k,{children:(0,l.jsx)(A,{})})})}),t=window.__next_root_layout_missing_tags,r=!!(null==t?void 0:t.length);"__next_error__"===document.documentElement.id||r?i.default.createRoot(m,D).render(e):s.default.startTransition(()=>i.default.hydrateRoot(m,e,{...D,formState:R}))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},31336:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(79100),(0,r(9545).appBootstrap)(()=>{let{hydrate:e}=r(88583);r(78311),r(24900),e()}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},79100:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(45139);let n=r(80724);{let e=r.u;r.u=function(){for(var t=arguments.length,r=Array(t),o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"assignLocation",{enumerable:!0,get:function(){return o}});let n=r(95376);function o(e,t){if(e.startsWith(".")){let r=t.origin+t.pathname;return new URL((r.endsWith("/")?r:r+"/")+e)}return new URL((0,n.addBasePath)(e),t.href)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},95249:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AppRouterAnnouncer",{enumerable:!0,get:function(){return u}});let n=r(20107),o=r(25642),a="next-route-announcer";function u(e){let{tree:t}=e,[r,u]=(0,n.useState)(null);(0,n.useEffect)(()=>(u(function(){var e;let t=document.getElementsByName(a)[0];if(null==t?void 0:null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(a);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(a)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[l,i]=(0,n.useState)(""),s=(0,n.useRef)(void 0);return(0,n.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==s.current&&s.current!==e&&i(e),s.current=e},[t]),r?(0,o.createPortal)(l,r):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},90604:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_HEADER:function(){return n},FLIGHT_HEADERS:function(){return c},NEXT_DID_POSTPONE_HEADER:function(){return p},NEXT_HMR_REFRESH_HEADER:function(){return l},NEXT_IS_PRERENDER_HEADER:function(){return h},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return u},NEXT_ROUTER_STALE_TIME_HEADER:function(){return d},NEXT_ROUTER_STATE_TREE_HEADER:function(){return o},NEXT_RSC_UNION_QUERY:function(){return f},NEXT_URL:function(){return i},RSC_CONTENT_TYPE_HEADER:function(){return s},RSC_HEADER:function(){return r}});let r="RSC",n="Next-Action",o="Next-Router-State-Tree",a="Next-Router-Prefetch",u="Next-Router-Segment-Prefetch",l="Next-HMR-Refresh",i="Next-Url",s="text/x-component",c=[r,o,a,l,u],f="_rsc",d="x-nextjs-stale-time",p="x-nextjs-postponed",h="x-nextjs-prerender";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},78311:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createEmptyCacheNode:function(){return M},createPrefetchURL:function(){return w},default:function(){return k}});let n=r(62599),o=r(20475),a=n._(r(20107)),u=r(32618),l=r(23093),i=r(94084),s=r(14839),c=r(59702),f=r(25339),d=r(80691),p=r(95376),h=r(95249),y=r(50157),g=r(27642),b=r(99153),_=r(52721),v=r(33099),m=r(4709),P=r(51079),E=r(53051);r(728);let O=r(2372),R=r(93475),S={};function j(e){return e.origin!==window.location.origin}function w(e){let t;if((0,d.isBot)(window.navigator.userAgent))return null;try{t=new URL((0,p.addBasePath)(e),window.location.href)}catch(t){throw Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL.")}return j(t)?null:t}function T(e){let{appRouterState:t}=e;return(0,a.useInsertionEffect)(()=>{let{tree:e,pushRef:r,canonicalUrl:n}=t,o={...r.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};r.pendingPush&&(0,i.createHrefFromUrl)(new URL(window.location.href))!==n?(r.pendingPush=!1,window.history.pushState(o,"",n)):window.history.replaceState(o,"",n)},[t]),null}function M(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null}}function x(e){null==e&&(e={});let t=window.history.state,r=null==t?void 0:t.__NA;r&&(e.__NA=r);let n=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return n&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=n),e}function A(e){let{headCacheNode:t}=e,r=null!==t?t.head:null,n=null!==t?t.prefetchHead:null,o=null!==n?n:r;return(0,a.useDeferredValue)(r,o)}function C(e){let t,{actionQueue:r,assetPrefix:n}=e,[i,f]=(0,c.useReducer)(r),{canonicalUrl:d}=(0,c.useUnwrapState)(i),{searchParams:P,pathname:M}=(0,a.useMemo)(()=>{let e=new URL(d,"undefined"==typeof window?"http://n":window.location.href);return{searchParams:e.searchParams,pathname:(0,v.hasBasePath)(e.pathname)?(0,_.removeBasePath)(e.pathname):e.pathname}},[d]),C=(0,a.useCallback)(e=>{let{previousTree:t,serverResponse:r}=e;(0,a.startTransition)(()=>{f({type:l.ACTION_SERVER_PATCH,previousTree:t,serverResponse:r})})},[f]),k=(0,a.useCallback)((e,t,r)=>{let n=new URL((0,p.addBasePath)(e),location.href);return f({type:l.ACTION_NAVIGATE,url:n,isExternalUrl:j(n),locationSearch:location.search,shouldScroll:null==r||r,navigateType:t,allowAliasing:!0})},[f]);(0,E.useServerActionDispatcher)(f);let D=(0,a.useMemo)(()=>({back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r=w(e);null!==r&&(0,a.startTransition)(()=>{var e;f({type:l.ACTION_PREFETCH,url:r,kind:null!=(e=null==t?void 0:t.kind)?e:l.PrefetchKind.FULL})})},replace:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;k(e,"replace",null==(r=t.scroll)||r)})},push:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;k(e,"push",null==(r=t.scroll)||r)})},refresh:()=>{(0,a.startTransition)(()=>{f({type:l.ACTION_REFRESH,origin:window.location.origin})})},hmrRefresh:()=>{throw Error("hmrRefresh can only be used in development mode. Please use refresh instead.")}}),[r,f,k]);(0,a.useEffect)(()=>{window.next&&(window.next.router=D)},[D]),(0,a.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(S.pendingMpaPath=void 0,f({type:l.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[f]),(0,a.useEffect)(()=>{function e(e){let t="reason"in e?e.reason:e.error;if((0,R.isRedirectError)(t)){e.preventDefault();let r=(0,O.getURLFromRedirectError)(t);(0,O.getRedirectTypeFromError)(t)===R.RedirectType.push?D.push(r,{}):D.replace(r,{})}}return window.addEventListener("error",e),window.addEventListener("unhandledrejection",e),()=>{window.removeEventListener("error",e),window.removeEventListener("unhandledrejection",e)}},[D]);let{pushRef:N}=(0,c.useUnwrapState)(i);if(N.mpaNavigation){if(S.pendingMpaPath!==d){let e=window.location;N.pendingPush?e.assign(d):e.replace(d),S.pendingMpaPath=d}(0,a.use)(b.unresolvedThenable)}(0,a.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),r=e=>{var t;let r=window.location.href,n=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,a.startTransition)(()=>{f({type:l.ACTION_RESTORE,url:new URL(null!=e?e:r,r),tree:n})})};window.history.pushState=function(t,n,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=x(t),o&&r(o)),e(t,n,o)},window.history.replaceState=function(e,n,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=x(e),o&&r(o)),t(e,n,o)};let n=e=>{if(e.state){if(!e.state.__NA){window.location.reload();return}(0,a.startTransition)(()=>{f({type:l.ACTION_RESTORE,url:new URL(window.location.href),tree:e.state.__PRIVATE_NEXTJS_INTERNALS_TREE})})}};return window.addEventListener("popstate",n),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",n)}},[f]);let{cache:I,tree:L,nextUrl:H,focusAndScrollRef:F}=(0,c.useUnwrapState)(i),$=(0,a.useMemo)(()=>(0,g.findHeadInCache)(I,L[1]),[I,L]),B=(0,a.useMemo)(()=>(0,m.getSelectedParams)(L),[L]),W=(0,a.useMemo)(()=>({childNodes:I.parallelRoutes,tree:L,url:d,loading:I.loading}),[I.parallelRoutes,L,d,I.loading]),G=(0,a.useMemo)(()=>({changeByServerResponse:C,tree:L,focusAndScrollRef:F,nextUrl:H}),[C,L,F,H]);if(null!==$){let[e,r]=$;t=(0,o.jsx)(A,{headCacheNode:e},r)}else t=null;let K=(0,o.jsxs)(y.RedirectBoundary,{children:[t,I.rsc,(0,o.jsx)(h.AppRouterAnnouncer,{tree:L})]});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(T,{appRouterState:(0,c.useUnwrapState)(i)}),(0,o.jsx)(U,{}),(0,o.jsx)(s.PathParamsContext.Provider,{value:B,children:(0,o.jsx)(s.PathnameContext.Provider,{value:M,children:(0,o.jsx)(s.SearchParamsContext.Provider,{value:P,children:(0,o.jsx)(u.GlobalLayoutRouterContext.Provider,{value:G,children:(0,o.jsx)(u.AppRouterContext.Provider,{value:D,children:(0,o.jsx)(u.LayoutRouterContext.Provider,{value:W,children:K})})})})})})]})}function k(e){let{actionQueue:t,globalErrorComponentAndStyles:[r,n],assetPrefix:a}=e;return(0,P.useNavFailureHandler)(),(0,o.jsx)(f.ErrorBoundary,{errorComponent:r,errorStyles:n,children:(0,o.jsx)(C,{actionQueue:t,assetPrefix:a})})}let D=new Set,N=new Set;function U(){let[,e]=a.default.useState(0),t=D.size;return(0,a.useEffect)(()=>{let r=()=>e(e=>e+1);return N.add(r),t!==D.size&&r(),()=>{N.delete(r)}},[t,e]),[...D].map((e,t)=>(0,o.jsx)("link",{rel:"stylesheet",href:""+e,precedence:"next"},t))}globalThis._N_E_STYLE_LOAD=function(e){let t=D.size;return D.add(e),D.size!==t&&N.forEach(e=>e()),Promise.resolve()},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},15407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"bailoutToClientRendering",{enumerable:!0,get:function(){return a}});let n=r(13007),o=r(32381);function a(e){let t=o.workAsyncStorage.getStore();if((null==t||!t.forceStatic)&&(null==t?void 0:t.isStaticGeneration))throw new n.BailoutToCSRError(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5329:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return a}});let n=r(20475),o=r(83156);function a(e){let{Component:t,searchParams:a,params:u,promises:l}=e;if("undefined"==typeof window){let e,l;let{workAsyncStorage:i}=r(32381),s=i.getStore();if(!s)throw new o.InvariantError("Expected workStore to exist when handling searchParams in a client Page.");let{createSearchParamsFromClient:c}=r(78394);e=c(a,s);let{createParamsFromClient:f}=r(90215);return l=f(u,s),(0,n.jsx)(t,{params:l,searchParams:e})}{let{createRenderSearchParamsFromClient:e}=r(36756),o=e(a),{createRenderParamsFromClient:l}=r(98369),i=l(u);return(0,n.jsx)(t,{params:i,searchParams:o})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},92907:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientSegmentRoot",{enumerable:!0,get:function(){return a}});let n=r(20475),o=r(83156);function a(e){let{Component:t,slots:a,params:u,promise:l}=e;if("undefined"==typeof window){let e;let{workAsyncStorage:l}=r(32381),i=l.getStore();if(!i)throw new o.InvariantError("Expected workStore to exist when handling params in a client segment such as a Layout or Template.");let{createParamsFromClient:s}=r(90215);return e=s(u,i),(0,n.jsx)(t,{...a,params:e})}{let{createRenderParamsFromClient:e}=r(98369),o=e(u);return(0,n.jsx)(t,{...a,params:o})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return f},GlobalError:function(){return d},default:function(){return p}});let n=r(67342),o=r(20475),a=n._(r(20107)),u=r(40228),l=r(69211);r(51079);let i=r(32381),s={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function c(e){let{error:t}=e,r=i.workAsyncStorage.getStore();if((null==r?void 0:r.isRevalidate)||(null==r?void 0:r.isStaticGeneration))throw console.error(t),t;return null}class f extends a.default.Component{static getDerivedStateFromError(e){if((0,l.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function d(e){let{error:t}=e,r=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(c,{error:t}),(0,o.jsx)("div",{style:s.error,children:(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{style:s.text,children:"Application error: a "+(r?"server":"client")+"-side exception has occurred (see the "+(r?"server logs":"browser console")+" for more information)."}),r?(0,o.jsx)("p",{style:s.text,children:"Digest: "+r}):null]})})]})]})}let p=d;function h(e){let{errorComponent:t,errorStyles:r,errorScripts:n,children:a}=e,l=(0,u.useUntrackedPathname)();return t?(0,o.jsx)(f,{pathname:l,errorComponent:t,errorStyles:r,errorScripts:n,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},82029:(e,t,r)=>{"use strict";function n(){throw Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled.")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"forbidden",{enumerable:!0,get:function(){return n}}),r(20797).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},80099:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,r(75880).handleGlobalErrors)(),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},75394:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{originConsoleError:function(){return o},patchConsoleError:function(){return a}}),r(91194);let n=r(69211);r(75880);let o=window.console.error;function a(){"undefined"!=typeof window&&(window.console.error=function(){let e;for(var t=arguments.length,r=Array(t),a=0;a{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,r(75394).patchConsoleError)(),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},75566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return o}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},30896:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return c}});let n=r(62599),o=r(20475),a=n._(r(20107)),u=r(40228),l=r(20797);r(20339);let i=r(32618);class s extends a.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,l.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,l.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:a}=this.state,u={[l.HTTPAccessErrorStatus.NOT_FOUND]:e,[l.HTTPAccessErrorStatus.FORBIDDEN]:t,[l.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(a){let i=a===l.HTTPAccessErrorStatus.NOT_FOUND&&e,s=a===l.HTTPAccessErrorStatus.FORBIDDEN&&t,c=a===l.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return i||s||c?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,u[a]]}):n}return n}constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}}function c(e){let{notFound:t,forbidden:r,unauthorized:n,children:l}=e,c=(0,u.useUntrackedPathname)(),f=(0,a.useContext)(i.MissingSlotContext);return t||r||n?(0,o.jsx)(s,{pathname:c,notFound:t,forbidden:r,unauthorized:n,missingSlots:f,children:l}):(0,o.jsx)(o.Fragment,{children:l})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},20797:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTTPAccessErrorStatus:function(){return r},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return o},getAccessFallbackErrorTypeByStatus:function(){return l},getAccessFallbackHTTPStatus:function(){return u},isHTTPAccessFallbackError:function(){return a}});let r={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},n=new Set(Object.values(r)),o="NEXT_HTTP_ERROR_FALLBACK";function a(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===o&&n.has(Number(r))}function u(e){return Number(e.digest.split(";")[1])}function l(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},43008:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getDefaultHydrationErrorMessage:function(){return i},getHydrationErrorStackInfo:function(){return f},isHydrationError:function(){return s},isReactHydrationErrorMessage:function(){return c}});let n=r(67342)._(r(91194)),o=/hydration failed|while hydrating|content does not match|did not match|HTML didn't match/i,a="Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used",u=[a,"A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:"],l="https://react.dev/link/hydration-mismatch",i=()=>a;function s(e){return(0,n.default)(e)&&o.test(e.message)}function c(e){return u.some(t=>e.startsWith(t))}function f(e){if(!c(e=e.replace(/^Error: /,"")))return{message:null};let t=e.indexOf("\n"),[r,n]=(e=e.slice(t+1).trim()).split(""+l),o=r.trim();if(!n||!(n.length>1))return{message:o,link:l,stack:n};{let e=[],t=[];return n.split("\n").forEach(r=>{""!==r.trim()&&(r.trim().startsWith("at ")?e.push(r):t.push(r))}),{message:o,link:l,diff:t.join("\n"),stack:e.join("\n")}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},69211:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return a}});let n=r(20797),o=r(93475);function a(e){return(0,o.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24900:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return j}});let n=r(67342),o=r(62599),a=r(20475),u=o._(r(20107)),l=n._(r(25642)),i=r(32618),s=r(90883),c=r(99153),f=r(25339),d=r(82210),p=r(65200),h=r(50157),y=r(30896),g=r(25967),b=r(62228),_=r(51653),v=l.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,m=["bottom","height","left","right","top","width","x","y"];function P(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class E extends u.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,d.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r=function(e){var t;return"top"===e?document.body:null!=(t=document.getElementById(e))?t:document.getElementsByName(e)[0]}(n)),!r&&(r="undefined"==typeof window?null:(0,v.findDOMNode)(this)),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return m.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,p.handleSmoothScroll)(()=>{if(n){r.scrollIntoView();return}let e=document.documentElement,t=e.clientHeight;!P(r,t)&&(e.scrollTop=0,P(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function O(e){let{segmentPath:t,children:r}=e,n=(0,u.useContext)(i.GlobalLayoutRouterContext);if(!n)throw Error("invariant global layout router not mounted");return(0,a.jsx)(E,{segmentPath:t,focusAndScrollRef:n.focusAndScrollRef,children:r})}function R(e){let{parallelRouterKey:t,url:r,childNodes:n,segmentPath:o,tree:l,cacheKey:f}=e,p=(0,u.useContext)(i.GlobalLayoutRouterContext);if(!p)throw Error("invariant global layout router not mounted");let{changeByServerResponse:h,tree:y}=p,g=n.get(f);if(void 0===g){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null};g=e,n.set(f,e)}let b=null!==g.prefetchRsc?g.prefetchRsc:g.rsc,v=(0,u.useDeferredValue)(g.rsc,b),m="object"==typeof v&&null!==v&&"function"==typeof v.then?(0,u.use)(v):v;if(!m){let e=g.lazyData;if(null===e){let t=function e(t,r){if(t){let[n,o]=t,a=2===t.length;if((0,d.matchSegment)(r[0],n)&&r[1].hasOwnProperty(o)){if(a){let t=e(void 0,r[1][o]);return[r[0],{...r[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[r[0],{...r[1],[o]:e(t.slice(2),r[1][o])}]}}return r}(["",...o],y),n=(0,_.hasInterceptionRouteInCurrentTree)(y);g.lazyData=e=(0,s.fetchServerResponse)(new URL(r,location.origin),{flightRouterState:t,nextUrl:n?p.nextUrl:null}).then(e=>((0,u.startTransition)(()=>{h({previousTree:y,serverResponse:e})}),e))}(0,u.use)(c.unresolvedThenable)}return(0,a.jsx)(i.LayoutRouterContext.Provider,{value:{tree:l[1][t],childNodes:g.parallelRoutes,url:r,loading:g.loading},children:m})}function S(e){let t,{loading:r,children:n}=e;if(t="object"==typeof r&&null!==r&&"function"==typeof r.then?(0,u.use)(r):r){let e=t[0],r=t[1],o=t[2];return(0,a.jsx)(u.Suspense,{fallback:(0,a.jsxs)(a.Fragment,{children:[r,o,e]}),children:n})}return(0,a.jsx)(a.Fragment,{children:n})}function j(e){let{parallelRouterKey:t,segmentPath:r,error:n,errorStyles:o,errorScripts:l,templateStyles:s,templateScripts:c,template:d,notFound:p,forbidden:_,unauthorized:v}=e,m=(0,u.useContext)(i.LayoutRouterContext);if(!m)throw Error("invariant expected layout router to be mounted");let{childNodes:P,tree:E,url:j,loading:w}=m,T=P.get(t);T||(T=new Map,P.set(t,T));let M=E[1][t][0],x=(0,g.getSegmentValue)(M),A=[M];return(0,a.jsx)(a.Fragment,{children:A.map(e=>{let u=(0,g.getSegmentValue)(e),m=(0,b.createRouterCacheKey)(e);return(0,a.jsxs)(i.TemplateContext.Provider,{value:(0,a.jsx)(O,{segmentPath:r,children:(0,a.jsx)(f.ErrorBoundary,{errorComponent:n,errorStyles:o,errorScripts:l,children:(0,a.jsx)(S,{loading:w,children:(0,a.jsx)(y.HTTPAccessFallbackBoundary,{notFound:p,forbidden:_,unauthorized:v,children:(0,a.jsx)(h.RedirectBoundary,{children:(0,a.jsx)(R,{parallelRouterKey:t,url:j,tree:E,childNodes:T,segmentPath:r,cacheKey:m,isActive:x===u})})})})})}),children:[s,c,d]},(0,b.createRouterCacheKey)(e,!0))})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},82210:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{canSegmentBeOverridden:function(){return a},matchSegment:function(){return o}});let n=r(88870),o=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1],a=(e,t)=>{var r;return!Array.isArray(e)&&!!Array.isArray(t)&&(null==(r=(0,n.getSegmentParam)(e))?void 0:r.param)===t[0]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},51079:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleHardNavError:function(){return o},useNavFailureHandler:function(){return a}}),r(20107);let n=r(94084);function o(e){return!!e&&"undefined"!=typeof window&&!!window.next.__pendingUrl&&(0,n.createHrefFromUrl)(new URL(window.location.href))!==(0,n.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function a(){}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},40228:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useUntrackedPathname",{enumerable:!0,get:function(){return a}});let n=r(20107),o=r(14839);function a(){return!function(){if("undefined"==typeof window){let{workAsyncStorage:e}=r(32381),t=e.getStore();if(!t)return!1;let{fallbackRouteParams:n}=t;return!!n&&0!==n.size}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},65834:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return i.RedirectType},ServerInsertedHTMLContext:function(){return c.ServerInsertedHTMLContext},forbidden:function(){return i.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},unauthorized:function(){return i.unauthorized},unstable_rethrow:function(){return i.unstable_rethrow},useParams:function(){return h},usePathname:function(){return d},useRouter:function(){return p},useSearchParams:function(){return f},useSelectedLayoutSegment:function(){return g},useSelectedLayoutSegments:function(){return y},useServerInsertedHTML:function(){return c.useServerInsertedHTML}});let n=r(20107),o=r(32618),a=r(14839),u=r(25967),l=r(63234),i=r(10901),s=r(48002),c=r(58741);function f(){let e=(0,n.useContext)(a.SearchParamsContext),t=(0,n.useMemo)(()=>e?new i.ReadonlyURLSearchParams(e):null,[e]);if("undefined"==typeof window){let{bailoutToClientRendering:e}=r(15407);e("useSearchParams()")}return t}function d(){return(0,s.useDynamicRouteParams)("usePathname()"),(0,n.useContext)(a.PathnameContext)}function p(){let e=(0,n.useContext)(o.AppRouterContext);if(null===e)throw Error("invariant expected app router to be mounted");return e}function h(){return(0,s.useDynamicRouteParams)("useParams()"),(0,n.useContext)(a.PathParamsContext)}function y(e){void 0===e&&(e="children"),(0,s.useDynamicRouteParams)("useSelectedLayoutSegments()");let t=(0,n.useContext)(o.LayoutRouterContext);return t?function e(t,r,n,o){let a;if(void 0===n&&(n=!0),void 0===o&&(o=[]),n)a=t[1][r];else{var i;let e=t[1];a=null!=(i=e.children)?i:Object.values(e)[0]}if(!a)return o;let s=a[0],c=(0,u.getSegmentValue)(s);return!c||c.startsWith(l.PAGE_SEGMENT_KEY)?o:(o.push(c),e(a,r,!1,o))}(t.tree,e):null}function g(e){void 0===e&&(e="children"),(0,s.useDynamicRouteParams)("useSelectedLayoutSegment()");let t=y(e);if(!t||0===t.length)return null;let r="children"===e?t[0]:t[t.length-1];return r===l.DEFAULT_SEGMENT_KEY?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},10901:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return c},RedirectType:function(){return o.RedirectType},forbidden:function(){return u.forbidden},notFound:function(){return a.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect},unauthorized:function(){return l.unauthorized},unstable_rethrow:function(){return i.unstable_rethrow}});let n=r(2372),o=r(93475),a=r(64216),u=r(82029),l=r(45050),i=r(91946);class s extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class c extends URLSearchParams{append(){throw new s}delete(){throw new s}set(){throw new s}sort(){throw new s}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},64216:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"notFound",{enumerable:!0,get:function(){return o}});let n=""+r(20797).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function o(){let e=Error(n);throw e.digest=n,e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},21339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return s}});let n=r(32465),o=r(44911);var a=o._("_maxConcurrency"),u=o._("_runningCount"),l=o._("_queue"),i=o._("_processNext");class s{enqueue(e){let t,r;let o=new Promise((e,n)=>{t=e,r=n}),a=async()=>{try{n._(this,u)[u]++;let r=await e();t(r)}catch(e){r(e)}finally{n._(this,u)[u]--,n._(this,i)[i]()}};return n._(this,l)[l].push({promiseFn:o,task:a}),n._(this,i)[i](),o}bump(e){let t=n._(this,l)[l].findIndex(t=>t.promiseFn===e);if(t>-1){let e=n._(this,l)[l].splice(t,1)[0];n._(this,l)[l].unshift(e),n._(this,i)[i](!0)}}constructor(e=5){Object.defineProperty(this,i,{value:c}),Object.defineProperty(this,a,{writable:!0,value:void 0}),Object.defineProperty(this,u,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),n._(this,a)[a]=e,n._(this,u)[u]=0,n._(this,l)[l]=[]}}function c(e){if(void 0===e&&(e=!1),(n._(this,u)[u]0){var t;null==(t=n._(this,l)[l].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},98846:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"attachHydrationErrorState",{enumerable:!0,get:function(){return a}});let n=r(43008),o=r(71823);function a(e){if((0,n.isHydrationError)(e)&&!e.message.includes("https://nextjs.org/docs/messages/react-hydration-error")){let t=(0,o.getReactHydrationDiffSegments)(e.message),r={};t?r={...e.details,...o.hydrationErrorState,warning:o.hydrationErrorState.warning||[(0,n.getDefaultHydrationErrorMessage)()],notes:t[0],reactOutputComponentDiff:t[1]}:o.hydrationErrorState.warning&&(r={...e.details,...o.hydrationErrorState}),e.details=r}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},10559:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createUnhandledError:function(){return o},getUnhandledErrorType:function(){return u},isUnhandledConsoleOrRejection:function(){return a}});let r=Symbol.for("next.console.error.digest"),n=Symbol.for("next.console.error.type");function o(e){let t="string"==typeof e?Error(e):e;return t[r]="NEXT_UNHANDLED_ERROR",t[n]="string"==typeof e?"string":"error",t}let a=e=>e&&"NEXT_UNHANDLED_ERROR"===e[r],u=e=>e[n];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35002:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"enqueueConsecutiveDedupedError",{enumerable:!0,get:function(){return o}});let n=r(43008);function o(e,t){let r=(0,n.isHydrationError)(t),o=r?e[0]:e[e.length-1];o&&o.stack===t.stack||(r?e.unshift(t):e.push(t))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},71823:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getHydrationWarningType:function(){return l},getReactHydrationDiffSegments:function(){return d},hydrationErrorState:function(){return o},storeHydrationErrorStateFromConsoleArgs:function(){return p}});let n=r(43008),o={},a=new Set(["Warning: In HTML, %s cannot be a child of <%s>.%s\nThis will cause a hydration error.%s","Warning: In HTML, %s cannot be a descendant of <%s>.\nThis will cause a hydration error.%s","Warning: In HTML, text nodes cannot be a child of <%s>.\nThis will cause a hydration error.","Warning: In HTML, whitespace text nodes cannot be a child of <%s>. Make sure you don't have any extra whitespace between tags on each line of your source code.\nThis will cause a hydration error.","Warning: Expected server HTML to contain a matching <%s> in <%s>.%s","Warning: Did not expect server HTML to contain a <%s> in <%s>.%s"]),u=new Set(['Warning: Expected server HTML to contain a matching text node for "%s" in <%s>.%s','Warning: Did not expect server HTML to contain the text node "%s" in <%s>.%s']),l=e=>{if("string"!=typeof e)return"text";let t=e.startsWith("Warning: ")?e:"Warning: "+e;return i(t)?"tag":c(t)?"text-in-tag":"text"},i=e=>a.has(e),s=e=>'Warning: Text content did not match. Server: "%s" Client: "%s"%s'===e,c=e=>u.has(e),f=e=>{if("string"!=typeof e)return!1;let t=e.startsWith("Warning: ")?e:"Warning: "+e;return i(t)||c(t)||s(t)},d=e=>{if(e){let{message:t,diff:r}=(0,n.getHydrationErrorStackInfo)(e);if(t)return[t,r]}};function p(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getReactStitchedError",{enumerable:!0,get:function(){return s}});let n=r(67342),o=n._(r(20107)),a=n._(r(91194)),u="react-stack-bottom-frame",l=RegExp("(at "+u+" )|("+u+"\\@)"),i=o.default.captureOwnerStack?o.default.captureOwnerStack:()=>"";function s(e){if("function"!=typeof o.default.captureOwnerStack)return e;let t=(0,a.default)(e),r=t&&e.stack||"",n=t?e.message:"",u=r.split("\n"),s=u.findIndex(e=>l.test(e)),c=s>=0?u.slice(0,s).join("\n"):r,f=Error(n);return Object.assign(f,e),f.stack=c,function(e){let t=e.stack||"",r=i();r&&!1===t.endsWith(r)&&(t+=r,e.stack=t)}(f),f}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},75880:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleClientError:function(){return _},handleGlobalErrors:function(){return E},useErrorHandler:function(){return v}});let n=r(67342),o=r(20107),a=r(98846),u=r(69211),l=r(71823),i=r(13828),s=n._(r(91194)),c=r(10559),f=r(35002),d=r(3132),p=globalThis.queueMicrotask||(e=>Promise.resolve().then(e)),h=[],y=[],g=[],b=[];function _(e,t,r){let n;if(void 0===r&&(r=!1),e&&(0,s.default)(e))n=r?(0,c.createUnhandledError)(e):e;else{let e=(0,i.formatConsoleArgs)(t);n=(0,c.createUnhandledError)(e)}for(let e of(n=(0,d.getReactStitchedError)(n),(0,l.storeHydrationErrorStateFromConsoleArgs)(...t),(0,a.attachHydrationErrorState)(n),(0,f.enqueueConsecutiveDedupedError)(h,n),y))p(()=>{e(n)})}function v(e,t){(0,o.useEffect)(()=>(h.forEach(e),g.forEach(t),y.push(e),b.push(t),()=>{y.splice(y.indexOf(e),1),b.splice(b.indexOf(t),1)}),[e,t])}function m(e){if((0,u.isNextRouterError)(e.error))return e.preventDefault(),!1;_(e.error,[])}function P(e){let t=null==e?void 0:e.reason;if((0,u.isNextRouterError)(t)){e.preventDefault();return}let r=t;for(let e of(r&&!(0,s.default)(r)&&(r=(0,c.createUnhandledError)(r+"")),g.push(r),b))e(r)}function E(){if("undefined"!=typeof window){try{Error.stackTraceLimit=50}catch(e){}window.addEventListener("error",m),window.addEventListener("unhandledrejection",P)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},50157:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectBoundary:function(){return f},RedirectErrorBoundary:function(){return c}});let n=r(62599),o=r(20475),a=n._(r(20107)),u=r(65834),l=r(2372),i=r(93475);function s(e){let{redirect:t,reset:r,redirectType:n}=e,o=(0,u.useRouter)();return(0,a.useEffect)(()=>{a.default.startTransition(()=>{n===i.RedirectType.push?o.push(t,{}):o.replace(t,{}),r()})},[t,n,r,o]),null}class c extends a.default.Component{static getDerivedStateFromError(e){if((0,i.isRedirectError)(e))return{redirect:(0,l.getURLFromRedirectError)(e),redirectType:(0,l.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(s,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function f(e){let{children:t}=e,r=(0,u.useRouter)();return(0,o.jsx)(c,{router:r,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},93475:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{REDIRECT_ERROR_CODE:function(){return o},RedirectType:function(){return a},isRedirectError:function(){return u}});let n=r(63865),o="NEXT_REDIRECT";var a=function(e){return e.push="push",e.replace="replace",e}({});function u(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,a]=t,u=t.slice(2,-2).join(";"),l=Number(t.at(-2));return r===o&&("replace"===a||"push"===a)&&"string"==typeof u&&!isNaN(l)&&l in n.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},63865:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}});var r=function(e){return e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2372:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getRedirectError:function(){return u},getRedirectStatusCodeFromError:function(){return f},getRedirectTypeFromError:function(){return c},getURLFromRedirectError:function(){return s},permanentRedirect:function(){return i},redirect:function(){return l}});let n=r(55006),o=r(63865),a=r(93475);function u(e,t,r){void 0===r&&(r=o.RedirectStatusCode.TemporaryRedirect);let n=Error(a.REDIRECT_ERROR_CODE);return n.digest=a.REDIRECT_ERROR_CODE+";"+t+";"+e+";"+r+";",n}function l(e,t){let r=n.actionAsyncStorage.getStore();throw u(e,t||((null==r?void 0:r.isAction)?a.RedirectType.push:a.RedirectType.replace),o.RedirectStatusCode.TemporaryRedirect)}function i(e,t){throw void 0===t&&(t=a.RedirectType.replace),u(e,t,o.RedirectStatusCode.PermanentRedirect)}function s(e){return(0,a.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function c(e){if(!(0,a.isRedirectError)(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function f(e){if(!(0,a.isRedirectError)(e))throw Error("Not a redirect error");return Number(e.digest.split(";").at(-2))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},81570:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return l}});let n=r(62599),o=r(20475),a=n._(r(20107)),u=r(32618);function l(){let e=(0,a.useContext)(u.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},97296:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addSearchParamsToPageSegments:function(){return f},handleAliasedPrefetchEntry:function(){return c}});let n=r(63234),o=r(78311),a=r(66645),u=r(94084),l=r(62228),i=r(74077),s=r(53080);function c(e,t,r,c){let d,p=e.tree,h=e.cache,y=(0,u.createHrefFromUrl)(r);for(let e of t){if(!function e(t){if(!t)return!1;let r=t[2];if(t[3])return!0;for(let t in r)if(e(r[t]))return!0;return!1}(e.seedData))continue;let t=e.tree;t=f(t,Object.fromEntries(r.searchParams));let{seedData:u,isRootRender:s,pathToSegment:c}=e,g=["",...c];t=f(t,Object.fromEntries(r.searchParams));let b=(0,a.applyRouterStatePatchToTree)(g,p,t,y),_=(0,o.createEmptyCacheNode)();if(s&&u){let e=u[1],r=u[3];_.loading=r,_.rsc=e,function e(t,r,o,a){if(0!==Object.keys(o[1]).length)for(let u in o[1]){let i;let s=o[1][u],c=s[0],f=(0,l.createRouterCacheKey)(c),d=null!==a&&void 0!==a[2][u]?a[2][u]:null;if(null!==d){let e=d[1],t=d[3];i={lazyData:null,rsc:c.includes(n.PAGE_SEGMENT_KEY)?null:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:t}}else i={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null};let p=t.parallelRoutes.get(u);p?p.set(f,i):t.parallelRoutes.set(u,new Map([[f,i]])),e(i,r,s,d)}}(_,h,t,u)}else _.rsc=h.rsc,_.prefetchRsc=h.prefetchRsc,_.loading=h.loading,_.parallelRoutes=new Map(h.parallelRoutes),(0,i.fillCacheWithNewSubTreeDataButOnlyLoading)(_,h,e);b&&(p=b,h=_,d=!0)}return!!d&&(c.patchedTree=p,c.cache=h,c.canonicalUrl=y,c.hashFragment=r.hash,(0,s.handleMutable)(e,c))}function f(e,t){let[r,o,...a]=e;if(r.includes(n.PAGE_SEGMENT_KEY))return[(0,n.addSearchParamsIfPageSegment)(r,t),o,...a];let u={};for(let[e,r]of Object.entries(o))u[e]=f(r,t);return[r,u,...a]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},99687:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return a}});let n=r(14375),o=r(74077);function a(e,t,r,a){let{tree:u,seedData:l,head:i,isRootRender:s}=r;if(null===l)return!1;if(s){let r=l[1],o=l[3];t.loading=o,t.rsc=r,t.prefetchRsc=null,(0,n.fillLazyItemsTillLeafWithHead)(t,e,u,l,i,a)}else t.rsc=e.rsc,t.prefetchRsc=e.prefetchRsc,t.parallelRoutes=new Map(e.parallelRoutes),t.loading=e.loading,(0,o.fillCacheWithNewSubTreeData)(t,e,r,a);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},66645:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,r,n,i){let s;let[c,f,d,p,h]=r;if(1===t.length){let e=l(r,n);return(0,u.addRefreshMarkerToActiveParallelSegments)(e,i),e}let[y,g]=t;if(!(0,a.matchSegment)(y,c))return null;if(2===t.length)s=l(f[g],n);else if(null===(s=e((0,o.getNextFlightSegmentPath)(t),f[g],n,i)))return null;let b=[t[0],{...f,[g]:s},d,p];return h&&(b[4]=!0),(0,u.addRefreshMarkerToActiveParallelSegments)(b,i),b}}});let n=r(63234),o=r(76504),a=r(82210),u=r(9747);function l(e,t){let[r,o]=e,[u,i]=t;if(u===n.DEFAULT_SEGMENT_KEY&&r!==n.DEFAULT_SEGMENT_KEY)return e;if((0,a.matchSegment)(r,u)){let t={};for(let e in o)void 0!==i[e]?t[e]=l(o[e],i[e]):t[e]=o[e];for(let e in i)t[e]||(t[e]=i[e]);let n=[r,t];return e[2]&&(n[2]=e[2]),e[3]&&(n[3]=e[3]),e[4]&&(n[4]=e[4]),n}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},51851:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,r,a){let u=a.length<=2,[l,i]=a,s=(0,o.createRouterCacheKey)(i),c=r.parallelRoutes.get(l),f=t.parallelRoutes.get(l);f&&f!==c||(f=new Map(c),t.parallelRoutes.set(l,f));let d=null==c?void 0:c.get(s),p=f.get(s);if(u){p&&p.lazyData&&p!==d||f.set(s,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null});return}if(!p||!d){p||f.set(s,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null});return}return p===d&&(p={lazyData:p.lazyData,rsc:p.rsc,prefetchRsc:p.prefetchRsc,head:p.head,prefetchHead:p.prefetchHead,parallelRoutes:new Map(p.parallelRoutes),loading:p.loading},f.set(s,p)),e(p,d,(0,n.getNextFlightSegmentPath)(a))}}});let n=r(76504),o=r(62228);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4709:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{computeChangedPath:function(){return c},extractPathFromFlightRouterState:function(){return s},getSelectedParams:function(){return function e(t,r){for(let n of(void 0===r&&(r={}),Object.values(t[1]))){let t=n[0],a=Array.isArray(t),u=a?t[1]:t;!u||u.startsWith(o.PAGE_SEGMENT_KEY)||(a&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):a&&(r[t[0]]=t[1]),r=e(n,r))}return r}}});let n=r(92688),o=r(63234),a=r(82210),u=e=>"/"===e[0]?e.slice(1):e,l=e=>"string"==typeof e?"children"===e?"":e:e[1];function i(e){return e.reduce((e,t)=>""===(t=u(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function s(e){var t;let r=Array.isArray(e[0])?e[0][1]:e[0];if(r===o.DEFAULT_SEGMENT_KEY||n.INTERCEPTION_ROUTE_MARKERS.some(e=>r.startsWith(e)))return;if(r.startsWith(o.PAGE_SEGMENT_KEY))return"";let a=[l(r)],u=null!=(t=e[1])?t:{},c=u.children?s(u.children):void 0;if(void 0!==c)a.push(c);else for(let[e,t]of Object.entries(u)){if("children"===e)continue;let r=s(t);void 0!==r&&a.push(r)}return i(a)}function c(e,t){let r=function e(t,r){let[o,u]=t,[i,c]=r,f=l(o),d=l(i);if(n.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)||d.startsWith(e)))return"";if(!(0,a.matchSegment)(o,i)){var p;return null!=(p=s(r))?p:""}for(let t in u)if(c[t]){let r=e(u[t],c[t]);if(null!==r)return l(i)+"/"+r}return null}(e,t);return null==r||"/"===r?r:i(r.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},94084:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},85010:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return c}});let n=r(94084),o=r(14375),a=r(4709),u=r(26461),l=r(23093),i=r(9747),s=r(76504);function c(e){var t,r;let{initialFlightData:c,initialCanonicalUrlParts:f,initialParallelRoutes:d,location:p,couldBeIntercepted:h,postponed:y,prerendered:g}=e,b=f.join("/"),_=(0,s.getFlightDataPartsFromPath)(c[0]),{tree:v,seedData:m,head:P}=_,E=!p,O=null==m?void 0:m[1],R=null!=(t=null==m?void 0:m[3])?t:null,S={lazyData:null,rsc:O,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:E?new Map:d,loading:R},j=p?(0,n.createHrefFromUrl)(p):b;(0,i.addRefreshMarkerToActiveParallelSegments)(v,j);let w=new Map;(null===d||0===d.size)&&(0,o.fillLazyItemsTillLeafWithHead)(S,void 0,v,m,P);let T={tree:v,cache:S,prefetchCache:w,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:j,nextUrl:null!=(r=(0,a.extractPathFromFlightRouterState)(v)||(null==p?void 0:p.pathname))?r:null};if(p){let e=new URL(""+p.pathname+p.search,p.origin);(0,u.createSeededPrefetchCacheEntry)({url:e,data:{flightData:[_],canonicalUrl:void 0,couldBeIntercepted:!!h,prerendered:g,postponed:y,staleTime:-1},tree:T.tree,prefetchCache:T.prefetchCache,nextUrl:T.nextUrl,kind:g?l.PrefetchKind.FULL:l.PrefetchKind.AUTO})}return T}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},62228:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=r(63234);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},90883:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createFetch:function(){return h},createFromNextReadableStream:function(){return y},fetchServerResponse:function(){return p},urlToUrlWithoutFlightMarker:function(){return f}});let n=r(90604),o=r(53051),a=r(98387),u=r(23093),l=r(76249),i=r(76504),s=r(28567),{createFromReadableStream:c}=r(18971);function f(e){let t=new URL(e,location.origin);if(t.searchParams.delete(n.NEXT_RSC_UNION_QUERY),t.pathname.endsWith(".txt")){let{pathname:e}=t,r=e.endsWith("/index.txt")?10:4;t.pathname=e.slice(0,-r)}return t}function d(e){return{flightData:f(e).toString(),canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1}}async function p(e,t){let{flightRouterState:r,nextUrl:o,prefetchKind:a}=t,l={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_STATE_TREE_HEADER]:encodeURIComponent(JSON.stringify(r))};a===u.PrefetchKind.AUTO&&(l[n.NEXT_ROUTER_PREFETCH_HEADER]="1"),o&&(l[n.NEXT_URL]=o);try{var c;let t=a?a===u.PrefetchKind.TEMPORARY?"high":"low":"auto",r=await h(e,l,t),o=f(r.url),p=r.redirected?o:void 0,g=r.headers.get("content-type")||"",b=!!(null==(c=r.headers.get("vary"))?void 0:c.includes(n.NEXT_URL)),_=!!r.headers.get(n.NEXT_DID_POSTPONE_HEADER),v=r.headers.get(n.NEXT_ROUTER_STALE_TIME_HEADER),m=null!==v?parseInt(v,10):-1,P=g.startsWith(n.RSC_CONTENT_TYPE_HEADER);if(P||(P=g.startsWith("text/plain")),!P||!r.ok||!r.body)return e.hash&&(o.hash=e.hash),d(o.toString());let E=_?function(e){let t=e.getReader();return new ReadableStream({async pull(e){for(;;){let{done:r,value:n}=await t.read();if(!r){e.enqueue(n);continue}return}}})}(r.body):r.body,O=await y(E);if((0,s.getAppBuildId)()!==O.b)return d(r.url);return{flightData:(0,i.normalizeFlightData)(O.f),canonicalUrl:p,couldBeIntercepted:b,prerendered:O.S,postponed:_,staleTime:m}}catch(t){return console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),{flightData:e.toString(),canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1}}}function h(e,t,r){let o=new URL(e);o.pathname.endsWith("/")?o.pathname+="index.txt":o.pathname+=".txt";let a=(0,l.hexHash)([t[n.NEXT_ROUTER_PREFETCH_HEADER]||"0",t[n.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]||"0",t[n.NEXT_ROUTER_STATE_TREE_HEADER],t[n.NEXT_URL]].join(","));return o.searchParams.set(n.NEXT_RSC_UNION_QUERY,a),fetch(o,{credentials:"same-origin",headers:t,priority:r||void 0})}function y(e){return c(e,{callServer:o.callServer,findSourceMapURL:a.findSourceMapURL})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},74077:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{fillCacheWithNewSubTreeData:function(){return i},fillCacheWithNewSubTreeDataButOnlyLoading:function(){return s}});let n=r(69431),o=r(14375),a=r(62228),u=r(63234);function l(e,t,r,l,i){let{segmentPath:s,seedData:c,tree:f,head:d}=r,p=e,h=t;for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,r,a,u,l,i){if(0===Object.keys(a[1]).length){t.head=l;return}for(let s in a[1]){let c;let f=a[1][s],d=f[0],p=(0,n.createRouterCacheKey)(d),h=null!==u&&void 0!==u[2][s]?u[2][s]:null;if(r){let n=r.parallelRoutes.get(s);if(n){let r;let a=(null==i?void 0:i.kind)==="auto"&&i.status===o.PrefetchCacheEntryStatus.reusable,u=new Map(n),c=u.get(p);r=null!==h?{lazyData:null,rsc:h[1],prefetchRsc:null,head:null,prefetchHead:null,loading:h[3],parallelRoutes:new Map(null==c?void 0:c.parallelRoutes)}:a&&c?{lazyData:c.lazyData,rsc:c.rsc,prefetchRsc:c.prefetchRsc,head:c.head,prefetchHead:c.prefetchHead,parallelRoutes:new Map(c.parallelRoutes),loading:c.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),loading:null},u.set(p,r),e(r,c,f,h||null,l,i),t.parallelRoutes.set(s,u);continue}}if(null!==h){let e=h[1],t=h[3];c={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:t}}else c={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null};let y=t.parallelRoutes.get(s);y?y.set(p,c):t.parallelRoutes.set(s,new Map([[p,c]])),e(c,void 0,f,h,l,i)}}}});let n=r(62228),o=r(23093);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},53080:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return a}});let n=r(4709);function o(e){return void 0!==e}function a(e,t){var r,a;let u=null==(r=t.shouldScroll)||r,l=e.nextUrl;if(o(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?l=r:l||(l=e.canonicalUrl)}return{canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!u&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:t.onlyHashChange||!1,hashFragment:u?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:u?null!=(a=null==t?void 0:t.scrollableSegments)?a:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:l}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},14610:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let n=r(48323);function o(e,t,r){return(0,n.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},70971:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,r,a){let u=a.length<=2,[l,i]=a,s=(0,n.createRouterCacheKey)(i),c=r.parallelRoutes.get(l);if(!c)return;let f=t.parallelRoutes.get(l);if(f&&f!==c||(f=new Map(c),t.parallelRoutes.set(l,f)),u){f.delete(s);return}let d=c.get(s),p=f.get(s);p&&d&&(p===d&&(p={lazyData:p.lazyData,rsc:p.rsc,prefetchRsc:p.prefetchRsc,head:p.head,prefetchHead:p.prefetchHead,parallelRoutes:new Map(p.parallelRoutes)},f.set(s,p)),e(p,d,(0,o.getNextFlightSegmentPath)(a)))}}});let n=r(62228),o=r(76504);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},69431:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let n=r(62228);function o(e,t,r){for(let o in r[1]){let a=r[1][o][0],u=(0,n.createRouterCacheKey)(a),l=t.parallelRoutes.get(o);if(l){let t=new Map(l);t.delete(u),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},68425:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],o=r[0];if(Array.isArray(n)&&Array.isArray(o)){if(n[0]!==o[0]||n[2]!==o[2])return!0}else if(n!==o)return!0;if(t[4])return!r[4];if(r[4])return!0;let a=Object.values(t[1])[0],u=Object.values(r[1])[0];return!a||!u||e(a,u)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},68079:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{abortTask:function(){return s},listenForDynamicRequest:function(){return i},updateCacheNodeOnNavigation:function(){return function e(t,r,l,i,s,c){let f=r[1],d=l[1],p=null!==i?i[2]:null,h=t.parallelRoutes,y=new Map(h),g={},b=null,_=!1;for(let t in d){let r;let l=d[t],i=f[t],v=h.get(t),m=null!==p?p[t]:null,P=l[0],E=(0,a.createRouterCacheKey)(P),O=void 0!==i?i[0]:void 0,R=void 0!==v?v.get(E):void 0;if(null!==(r=P===n.DEFAULT_SEGMENT_KEY?void 0!==i?{route:i,node:null,needsDynamicRequest:!1,children:null}:u(l,void 0!==m?m:null,s,c):void 0!==O&&(0,o.matchSegment)(P,O)&&void 0!==R&&void 0!==i?e(R,i,l,m,s,c):u(l,void 0!==m?m:null,s,c))){null===b&&(b=new Map),b.set(t,r);let e=r.node;if(null!==e){let r=new Map(v);r.set(E,e),y.set(t,r)}r.needsDynamicRequest&&(_=!0),g[t]=r.route}else g[t]=l}if(null===b)return null;let v={lazyData:null,rsc:t.rsc,prefetchRsc:t.prefetchRsc,head:t.head,prefetchHead:t.prefetchHead,loading:t.loading,parallelRoutes:y};return{route:function(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}(l,g),node:v,needsDynamicRequest:_,children:b}}},updateCacheNodeOnPopstateRestoration:function(){return function e(t,r){let n=r[1],o=t.parallelRoutes,u=new Map(o);for(let t in n){let r=n[t],l=r[0],i=(0,a.createRouterCacheKey)(l),s=o.get(t);if(void 0!==s){let n=s.get(i);if(void 0!==n){let o=e(n,r),a=new Map(s);a.set(i,o),u.set(t,a)}}}let l=t.rsc,i=d(l)&&"pending"===l.status;return{lazyData:null,rsc:l,head:t.head,prefetchHead:i?t.prefetchHead:null,prefetchRsc:i?t.prefetchRsc:null,loading:t.loading,parallelRoutes:u}}}});let n=r(63234),o=r(82210),a=r(62228);function u(e,t,r,n){if(null===t)return l(e,null,r,n);let o=e[1],i=t[4],s=0===Object.keys(o).length;if(i||n&&s)return l(e,t,r,n);let c=t[2],f=new Map,d=new Map,p=!1;for(let e in o){let t=o[e],l=null!==c?c[e]:null,i=t[0],s=(0,a.createRouterCacheKey)(i),h=u(t,l,r,n);f.set(e,h),h.needsDynamicRequest&&(p=!0);let y=h.node;if(null!==y){let t=new Map;t.set(s,y),d.set(e,t)}}return{route:e,node:{lazyData:null,rsc:t[1],prefetchRsc:null,head:s?r:null,prefetchHead:null,loading:t[3],parallelRoutes:d},needsDynamicRequest:p,children:f}}function l(e,t,r,n){return{route:e,node:function e(t,r,n,o){let u=t[1],l=null!==r?r[2]:null,i=new Map;for(let t in u){let r=u[t],s=null!==l?l[t]:null,c=r[0],f=(0,a.createRouterCacheKey)(c),d=e(r,void 0===s?null:s,n,o),p=new Map;p.set(f,d),i.set(t,p)}let s=0===i.size,c=null!==r?r[1]:null,f=null!==r?r[3]:null;return{lazyData:null,parallelRoutes:i,prefetchRsc:void 0!==c?c:null,prefetchHead:s?n:null,loading:void 0!==f?f:null,rsc:p(),head:s?p():null}}(e,t,r,n),needsDynamicRequest:!0,children:null}}function i(e,t){t.then(t=>{let{flightData:r}=t;if("string"!=typeof r){for(let t of r){let{segmentPath:r,tree:n,seedData:u,head:l}=t;u&&function(e,t,r,n,u){let l=e;for(let e=0;e{s(e,t)})}function s(e,t){let r=e.node;if(null===r)return;let n=e.children;if(null===n)c(e.route,r,t);else for(let e of n.values())s(e,t);e.needsDynamicRequest=!1}function c(e,t,r){let n=e[1],o=t.parallelRoutes;for(let e in n){let t=n[e],u=o.get(e);if(void 0===u)continue;let l=t[0],i=(0,a.createRouterCacheKey)(l),s=u.get(i);void 0!==s&&c(t,s,r)}let u=t.rsc;d(u)&&(null===r?u.resolve(null):u.reject(r));let l=t.head;d(l)&&l.resolve(null)}let f=Symbol();function d(e){return e&&e.tag===f}function p(){let e,t;let r=new Promise((r,n)=>{e=r,t=n});return r.status="pending",r.resolve=t=>{"pending"===r.status&&(r.status="fulfilled",r.value=t,e(t))},r.reject=e=>{"pending"===r.status&&(r.status="rejected",r.reason=e,t(e))},r.tag=f,r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},26461:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createSeededPrefetchCacheEntry:function(){return s},getOrCreatePrefetchCacheEntry:function(){return i},prunePrefetchCache:function(){return f}});let n=r(90883),o=r(23093),a=r(50239);function u(e,t,r){let n=e.pathname;return(t&&(n+=e.search),r)?""+r+"%"+n:n}function l(e,t,r){return u(e,t===o.PrefetchKind.FULL,r)}function i(e){let{url:t,nextUrl:r,tree:n,prefetchCache:a,kind:l,allowAliasing:i=!0}=e,s=function(e,t,r,n,a){for(let l of(void 0===t&&(t=o.PrefetchKind.TEMPORARY),[r,null])){let r=u(e,!0,l),i=u(e,!1,l),s=e.search?r:i,c=n.get(s);if(c&&a){if(c.url.pathname===e.pathname&&c.url.search!==e.search)return{...c,aliased:!0};return c}let f=n.get(i);if(a&&e.search&&t!==o.PrefetchKind.FULL&&f&&!f.key.includes("%"))return{...f,aliased:!0}}if(t!==o.PrefetchKind.FULL&&a){for(let t of n.values())if(t.url.pathname===e.pathname&&!t.key.includes("%"))return{...t,aliased:!0}}}(t,l,r,a,i);return s?(s.status=h(s),s.kind!==o.PrefetchKind.FULL&&l===o.PrefetchKind.FULL&&s.data.then(e=>{if(!(Array.isArray(e.flightData)&&e.flightData.some(e=>e.isRootRender&&null!==e.seedData)))return c({tree:n,url:t,nextUrl:r,prefetchCache:a,kind:null!=l?l:o.PrefetchKind.TEMPORARY})}),l&&s.kind===o.PrefetchKind.TEMPORARY&&(s.kind=l),s):c({tree:n,url:t,nextUrl:r,prefetchCache:a,kind:l||o.PrefetchKind.TEMPORARY})}function s(e){let{nextUrl:t,tree:r,prefetchCache:n,url:a,data:u,kind:i}=e,s=u.couldBeIntercepted?l(a,i,t):l(a,i),c={treeAtTimeOfPrefetch:r,data:Promise.resolve(u),kind:i,prefetchTime:Date.now(),lastUsedTime:Date.now(),staleTime:-1,key:s,status:o.PrefetchCacheEntryStatus.fresh,url:a};return n.set(s,c),c}function c(e){let{url:t,kind:r,tree:u,nextUrl:i,prefetchCache:s}=e,c=l(t,r),f=a.prefetchQueue.enqueue(()=>(0,n.fetchServerResponse)(t,{flightRouterState:u,nextUrl:i,prefetchKind:r}).then(e=>{let r;if(e.couldBeIntercepted&&(r=function(e){let{url:t,nextUrl:r,prefetchCache:n,existingCacheKey:o}=e,a=n.get(o);if(!a)return;let u=l(t,a.kind,r);return n.set(u,{...a,key:u}),n.delete(o),u}({url:t,existingCacheKey:c,nextUrl:i,prefetchCache:s})),e.prerendered){let t=s.get(null!=r?r:c);t&&(t.kind=o.PrefetchKind.FULL,-1!==e.staleTime&&(t.staleTime=e.staleTime))}return e})),d={treeAtTimeOfPrefetch:u,data:f,kind:r,prefetchTime:Date.now(),lastUsedTime:null,staleTime:-1,key:c,status:o.PrefetchCacheEntryStatus.fresh,url:t};return s.set(c,d),d}function f(e){for(let[t,r]of e)h(r)===o.PrefetchCacheEntryStatus.expired&&e.delete(t)}let d=1e3*Number("0"),p=1e3*Number("300");function h(e){let{kind:t,prefetchTime:r,lastUsedTime:n,staleTime:a}=e;return -1!==a?Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findHeadInCache",{enumerable:!0,get:function(){return o}});let n=r(62228);function o(e,t){return function e(t,r,o){if(0===Object.keys(r).length)return[t,o];for(let a in r){let[u,l]=r[a],i=t.parallelRoutes.get(a);if(!i)continue;let s=(0,n.createRouterCacheKey)(u),c=i.get(s);if(!c)continue;let f=e(c,l,o+"/"+s);if(f)return f}return null}(e,t,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},25967:(e,t)=>{"use strict";function r(e){return Array.isArray(e)?e[1]:e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentValue",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},51653:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e(t){let[r,o]=t;if(Array.isArray(r)&&("di"===r[2]||"ci"===r[2])||"string"==typeof r&&(0,n.isInterceptionRouteAppPath)(r))return!0;if(o){for(let t in o)if(e(o[t]))return!0}return!1}}});let n=r(92688);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1383:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hmrRefreshReducer",{enumerable:!0,get:function(){return n}}),r(90883),r(94084),r(66645),r(68425),r(48323),r(53080),r(99687),r(78311),r(14610),r(51653);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},48323:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleExternalUrl:function(){return v},navigateReducer:function(){return function e(t,r){let{url:P,isExternalUrl:E,navigateType:O,shouldScroll:R,allowAliasing:S}=r,j={},{hash:w}=P,T=(0,o.createHrefFromUrl)(P),M="push"===O;if((0,g.prunePrefetchCache)(t.prefetchCache),j.preserveCustomHistoryState=!1,j.pendingPush=M,E)return v(t,j,P.toString(),M);if(document.getElementById("__next-page-redirect"))return v(t,j,T,M);let x=(0,g.getOrCreatePrefetchCacheEntry)({url:P,nextUrl:t.nextUrl,tree:t.tree,prefetchCache:t.prefetchCache,allowAliasing:S}),{treeAtTimeOfPrefetch:A,data:C}=x;return d.prefetchQueue.bump(C),C.then(d=>{let{flightData:g,canonicalUrl:E,postponed:O}=d,S=!1;if(x.lastUsedTime||(x.lastUsedTime=Date.now(),S=!0),"string"==typeof g)return v(t,j,g,M);let C=E?(0,o.createHrefFromUrl)(E):T;if(w&&t.canonicalUrl.split("#",1)[0]===C.split("#",1)[0])return j.onlyHashChange=!0,j.canonicalUrl=C,j.shouldScroll=R,j.hashFragment=w,j.scrollableSegments=[],(0,c.handleMutable)(t,j);if(x.aliased){let n=(0,_.handleAliasedPrefetchEntry)(t,g,P,j);return!1===n?e(t,{...r,allowAliasing:!1}):n}let k=t.tree,D=t.cache,N=[];for(let e of g){let{pathToSegment:r,seedData:o,head:c,isHeadPartial:d,isRootRender:g}=e,_=e.tree,E=["",...r],R=(0,u.applyRouterStatePatchToTree)(E,k,_,T);if(null===R&&(R=(0,u.applyRouterStatePatchToTree)(E,A,_,T)),null!==R){if((0,i.isNavigatingToNewRootLayout)(k,R))return v(t,j,T,M);if(o&&g&&O){let e=(0,y.updateCacheNodeOnNavigation)(D,k,_,o,c,d);if(null!==e){R=e.route;let r=e.node;if(null!==r&&(j.cache=r),e.needsDynamicRequest){let r=(0,n.fetchServerResponse)(P,{flightRouterState:k,nextUrl:t.nextUrl});(0,y.listenForDynamicRequest)(e,r)}}else R=_}else{let t=(0,p.createEmptyCacheNode)(),n=!1;x.status!==s.PrefetchCacheEntryStatus.stale||S?n=(0,f.applyFlightData)(D,t,e,x):(n=function(e,t,r,n){let o=!1;for(let a of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),m(n).map(e=>[...r,...e])))(0,b.clearCacheNodeDataForSegmentPath)(e,t,a),o=!0;return o}(t,D,r,_),x.lastUsedTime=Date.now()),(0,l.shouldHardNavigate)(E,k)?(t.rsc=D.rsc,t.prefetchRsc=D.prefetchRsc,(0,a.invalidateCacheBelowFlightSegmentPath)(t,D,r),j.cache=t):n&&(j.cache=t,D=t)}for(let e of(k=R,m(_))){let t=[...r,...e];t[t.length-1]!==h.DEFAULT_SEGMENT_KEY&&N.push(t)}}}return j.patchedTree=k,j.canonicalUrl=C,j.scrollableSegments=N,j.hashFragment=w,j.shouldScroll=R,(0,c.handleMutable)(t,j)},()=>t)}}});let n=r(90883),o=r(94084),a=r(70971),u=r(66645),l=r(60636),i=r(68425),s=r(23093),c=r(53080),f=r(99687),d=r(50239),p=r(78311),h=r(63234),y=r(68079),g=r(26461),b=r(51851),_=r(97296);function v(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,c.handleMutable)(e,t)}function m(e){let t=[],[r,n]=e;if(0===Object.keys(n).length)return[[r]];for(let[e,o]of Object.entries(n))for(let n of m(o))""===r?t.push([e,...n]):t.push([r,e,...n]);return t}r(36053),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},50239:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{prefetchQueue:function(){return a},prefetchReducer:function(){return u}});let n=r(21339),o=r(26461),a=new n.PromiseQueue(5),u=function(e,t){(0,o.prunePrefetchCache)(e.prefetchCache);let{url:r}=t;return(0,o.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,allowAliasing:!0}),e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},36745:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return h}});let n=r(90883),o=r(94084),a=r(66645),u=r(68425),l=r(48323),i=r(53080),s=r(14375),c=r(78311),f=r(14610),d=r(51653),p=r(9747);function h(e,t){let{origin:r}=t,h={},y=e.canonicalUrl,g=e.tree;h.preserveCustomHistoryState=!1;let b=(0,c.createEmptyCacheNode)(),_=(0,d.hasInterceptionRouteInCurrentTree)(e.tree);return b.lazyData=(0,n.fetchServerResponse)(new URL(y,r),{flightRouterState:[g[0],g[1],g[2],"refetch"],nextUrl:_?e.nextUrl:null}),b.lazyData.then(async r=>{let{flightData:n,canonicalUrl:c}=r;if("string"==typeof n)return(0,l.handleExternalUrl)(e,h,n,e.pushRef.pendingPush);for(let r of(b.lazyData=null,n)){let{tree:n,seedData:i,head:d,isRootRender:v}=r;if(!v)return console.log("REFRESH FAILED"),e;let m=(0,a.applyRouterStatePatchToTree)([""],g,n,e.canonicalUrl);if(null===m)return(0,f.handleSegmentMismatch)(e,t,n);if((0,u.isNavigatingToNewRootLayout)(g,m))return(0,l.handleExternalUrl)(e,h,y,e.pushRef.pendingPush);let P=c?(0,o.createHrefFromUrl)(c):void 0;if(c&&(h.canonicalUrl=P),null!==i){let e=i[1],t=i[3];b.rsc=e,b.prefetchRsc=null,b.loading=t,(0,s.fillLazyItemsTillLeafWithHead)(b,void 0,n,i,d),h.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({state:e,updatedTree:m,updatedCache:b,includeNextUrl:_,canonicalUrl:h.canonicalUrl||e.canonicalUrl}),h.cache=b,h.patchedTree=m,g=m}return(0,i.handleMutable)(e,h)},()=>e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},80336:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return a}});let n=r(94084),o=r(4709);function a(e,t){var r;let{url:a,tree:u}=t,l=(0,n.createHrefFromUrl)(a),i=u||e.tree,s=e.cache;return{canonicalUrl:l,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:s,prefetchCache:e.prefetchCache,tree:i,nextUrl:null!=(r=(0,o.extractPathFromFlightRouterState)(i))?r:a.pathname}}r(68079),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24474:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return M}});let n=r(53051),o=r(98387),a=r(90604),u=r(23093),l=r(45982),i=r(94084),s=r(48323),c=r(66645),f=r(68425),d=r(53080),p=r(14375),h=r(78311),y=r(51653),g=r(14610),b=r(9747),_=r(76504),v=r(2372),m=r(93475),P=r(26461),E=r(52721),O=r(33099),R=r(56797),{createFromFetch:S,createTemporaryReferenceSet:j,encodeReply:w}=r(18971);async function T(e,t,r){let u,i,{actionId:s,actionArgs:c}=r,f=j(),d=(0,R.extractInfoFromServerReferenceId)(s),p="use-cache"===d.type?(0,R.omitUnusedArgs)(c,d):c,h=await w(p,{temporaryReferences:f}),y=await fetch("",{method:"POST",headers:{Accept:a.RSC_CONTENT_TYPE_HEADER,[a.ACTION_HEADER]:s,[a.NEXT_ROUTER_STATE_TREE_HEADER]:encodeURIComponent(JSON.stringify(e.tree)),...t?{[a.NEXT_URL]:t}:{}},body:h}),g=y.headers.get("x-action-redirect"),[b,v]=(null==g?void 0:g.split(";"))||[];switch(v){case"push":u=m.RedirectType.push;break;case"replace":u=m.RedirectType.replace;break;default:u=void 0}let P=!!y.headers.get(a.NEXT_IS_PRERENDER_HEADER);try{let e=JSON.parse(y.headers.get("x-action-revalidated")||"[[],0,0]");i={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){i={paths:[],tag:!1,cookie:!1}}let E=b?(0,l.assignLocation)(b,new URL(e.canonicalUrl,window.location.href)):void 0,O=y.headers.get("content-type");if(null==O?void 0:O.startsWith(a.RSC_CONTENT_TYPE_HEADER)){let e=await S(Promise.resolve(y),{callServer:n.callServer,findSourceMapURL:o.findSourceMapURL,temporaryReferences:f});return b?{actionFlightData:(0,_.normalizeFlightData)(e.f),redirectLocation:E,redirectType:u,revalidatedParts:i,isPrerender:P}:{actionResult:e.a,actionFlightData:(0,_.normalizeFlightData)(e.f),redirectLocation:E,redirectType:u,revalidatedParts:i,isPrerender:P}}if(y.status>=400)throw Error("text/plain"===O?await y.text():"An unexpected response was received from the server.");return{redirectLocation:E,redirectType:u,revalidatedParts:i,isPrerender:P}}function M(e,t){let{resolve:r,reject:n}=t,o={},a=e.tree;o.preserveCustomHistoryState=!1;let l=e.nextUrl&&(0,y.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null;return T(e,l,t).then(async y=>{let _,{actionResult:R,actionFlightData:S,redirectLocation:j,redirectType:w,isPrerender:T,revalidatedParts:M}=y;if(j&&(w===m.RedirectType.replace?(e.pushRef.pendingPush=!1,o.pendingPush=!1):(e.pushRef.pendingPush=!0,o.pendingPush=!0),_=(0,i.createHrefFromUrl)(j,!1),o.canonicalUrl=_),!S)return(r(R),j)?(0,s.handleExternalUrl)(e,o,j.href,e.pushRef.pendingPush):e;if("string"==typeof S)return r(R),(0,s.handleExternalUrl)(e,o,S,e.pushRef.pendingPush);let x=M.paths.length>0||M.tag||M.cookie;for(let n of S){let{tree:u,seedData:i,head:d,isRootRender:y}=n;if(!y)return console.log("SERVER ACTION APPLY FAILED"),r(R),e;let v=(0,c.applyRouterStatePatchToTree)([""],a,u,_||e.canonicalUrl);if(null===v)return r(R),(0,g.handleSegmentMismatch)(e,t,u);if((0,f.isNavigatingToNewRootLayout)(a,v))return r(R),(0,s.handleExternalUrl)(e,o,_||e.canonicalUrl,e.pushRef.pendingPush);if(null!==i){let t=i[1],r=(0,h.createEmptyCacheNode)();r.rsc=t,r.prefetchRsc=null,r.loading=i[3],(0,p.fillLazyItemsTillLeafWithHead)(r,void 0,u,i,d),o.cache=r,o.prefetchCache=new Map,x&&await (0,b.refreshInactiveParallelSegments)({state:e,updatedTree:v,updatedCache:r,includeNextUrl:!!l,canonicalUrl:o.canonicalUrl||e.canonicalUrl})}o.patchedTree=v,a=v}return j&&_?(x||((0,P.createSeededPrefetchCacheEntry)({url:j,data:{flightData:S,canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1},tree:e.tree,prefetchCache:e.prefetchCache,nextUrl:e.nextUrl,kind:T?u.PrefetchKind.FULL:u.PrefetchKind.AUTO}),o.prefetchCache=e.prefetchCache),n((0,v.getRedirectError)((0,O.hasBasePath)(_)?(0,E.removeBasePath)(_):_,w||m.RedirectType.push))):r(R),(0,d.handleMutable)(e,o)},t=>(n(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},77064:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return c}});let n=r(94084),o=r(66645),a=r(68425),u=r(48323),l=r(99687),i=r(53080),s=r(78311);function c(e,t){let{serverResponse:{flightData:r,canonicalUrl:c}}=t,f={};if(f.preserveCustomHistoryState=!1,"string"==typeof r)return(0,u.handleExternalUrl)(e,f,r,e.pushRef.pendingPush);let d=e.tree,p=e.cache;for(let t of r){let{segmentPath:r,tree:i}=t,h=(0,o.applyRouterStatePatchToTree)(["",...r],d,i,e.canonicalUrl);if(null===h)return e;if((0,a.isNavigatingToNewRootLayout)(d,h))return(0,u.handleExternalUrl)(e,f,e.canonicalUrl,e.pushRef.pendingPush);let y=c?(0,n.createHrefFromUrl)(c):void 0;y&&(f.canonicalUrl=y);let g=(0,s.createEmptyCacheNode)();(0,l.applyFlightData)(p,g,t),f.patchedTree=h,f.cache=g,p=g,d=h}return(0,i.handleMutable)(e,f)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},56797:(e,t)=>{"use strict";function r(e){let t=parseInt(e.slice(0,2),16),r=t>>1&63,n=Array(6);for(let e=0;e<6;e++){let t=r>>5-e&1;n[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:n,hasRestArgs:1==(1&t)}}function n(e,t){let r=Array(e.length);for(let n=0;n=6&&t.hasRestArgs)&&(r[n]=e[n]);return r}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{extractInfoFromServerReferenceId:function(){return r},omitUnusedArgs:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,r){let[n,o,,u]=t;for(let l in n.includes(a.PAGE_SEGMENT_KEY)&&"refresh"!==u&&(t[2]=r,t[3]="refresh"),o)e(o[l],r)}},refreshInactiveParallelSegments:function(){return u}});let n=r(99687),o=r(90883),a=r(63234);async function u(e){let t=new Set;await l({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function l(e){let{state:t,updatedTree:r,updatedCache:a,includeNextUrl:u,fetchedSegments:i,rootTree:s=r,canonicalUrl:c}=e,[,f,d,p]=r,h=[];if(d&&d!==c&&"refresh"===p&&!i.has(d)){i.add(d);let e=(0,o.fetchServerResponse)(new URL(d,location.origin),{flightRouterState:[s[0],s[1],s[2],"refetch"],nextUrl:u?t.nextUrl:null}).then(e=>{let{flightData:t}=e;if("string"!=typeof t)for(let e of t)(0,n.applyFlightData)(a,a,e)});h.push(e)}for(let e in f){let r=l({state:t,updatedTree:f[e],updatedCache:a,includeNextUrl:u,fetchedSegments:i,rootTree:s,canonicalUrl:c});h.push(r)}await Promise.all(h)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},23093:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_HMR_REFRESH:function(){return l},ACTION_NAVIGATE:function(){return n},ACTION_PREFETCH:function(){return u},ACTION_REFRESH:function(){return r},ACTION_RESTORE:function(){return o},ACTION_SERVER_ACTION:function(){return i},ACTION_SERVER_PATCH:function(){return a},PrefetchCacheEntryStatus:function(){return c},PrefetchKind:function(){return s}});let r="refresh",n="navigate",o="restore",a="server-patch",u="prefetch",l="hmr-refresh",i="server-action";var s=function(e){return e.AUTO="auto",e.FULL="full",e.TEMPORARY="temporary",e}({}),c=function(e){return e.fresh="fresh",e.reusable="reusable",e.expired="expired",e.stale="stale",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},27749:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return f}});let n=r(23093),o=r(48323),a=r(77064),u=r(80336),l=r(36745),i=r(50239),s=r(1383),c=r(24474),f="undefined"==typeof window?function(e,t){return e}:function(e,t){switch(t.type){case n.ACTION_NAVIGATE:return(0,o.navigateReducer)(e,t);case n.ACTION_SERVER_PATCH:return(0,a.serverPatchReducer)(e,t);case n.ACTION_RESTORE:return(0,u.restoreReducer)(e,t);case n.ACTION_REFRESH:return(0,l.refreshReducer)(e,t);case n.ACTION_HMR_REFRESH:return(0,s.hmrRefreshReducer)(e,t);case n.ACTION_PREFETCH:return(0,i.prefetchReducer)(e,t);case n.ACTION_SERVER_ACTION:return(0,c.serverActionReducer)(e,t);default:throw Error("Unknown action")}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},60636:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,r){let[a,u]=r,[l,i]=t;return(0,o.matchSegment)(l,a)?!(t.length<=2)&&e((0,n.getNextFlightSegmentPath)(t),u[i]):!!Array.isArray(l)}}});let n=r(76504),o=r(82210);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},60769:(e,t)=>{"use strict";function r(e,t){let r=new URL(e);return r.search="",{href:r.href,nextUrl:t}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createCacheKey",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},35763:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{EntryStatus:function(){return c},readExactRouteCacheEntry:function(){return y},readRouteCacheEntry:function(){return g},readSegmentCacheEntry:function(){return b},requestRouteCacheEntryFromCache:function(){return v},requestSegmentEntryFromCache:function(){return m},waitForSegmentCacheEntry:function(){return _}});let n=r(90604),o=r(90883),a=r(73096),u=r(28567),l=r(94084),i=r(60928),s=r(63952);var c=function(e){return e[e.Pending=0]="Pending",e[e.Rejected=1]="Rejected",e[e.Fulfilled=2]="Fulfilled",e}({});let f=(0,i.createTupleMap)(),d=(0,s.createLRU)(0xa00000,function(e){let t=e.keypath;null!==t&&(e.keypath=null,E(e),f.delete(t))}),p=new Map,h=(0,s.createLRU)(0x3200000,function(e){let t=e.key;null!==t&&(e.key=null,P(e),p.delete(t))});function y(e,t,r){let n=null===r?[t]:[t,r],o=f.get(n);if(null!==o){if(o.staleAt>e)return d.put(o),o;E(o),f.delete(n),d.delete(o)}return null}function g(e,t){let r=y(e,t.href,null);return null===r||r.couldBeIntercepted?y(e,t.href,t.nextUrl):r}function b(e,t){let r=p.get(t);if(void 0!==r){if(r.staleAt>e)return h.put(r),r;P(r),p.delete(t),h.delete(r)}return null}function _(e){let t=e.promise;return null===t&&(t=e.promise=function(){let e,t;let r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}}()),t.promise}function v(e,t){let r=t.key,n=y(e,r.href,null);if(null!==n&&!n.couldBeIntercepted)return n;let o=y(e,r.href,r.nextUrl);if(null!==o)return o;let u={canonicalUrl:null,status:0,blockedTasks:null,tree:null,head:null,isHeadPartial:!0,staleAt:e+6e4,couldBeIntercepted:!0,keypath:null,next:null,prev:null,size:0};(0,a.spawnPrefetchSubtask)(S(u,t));let l=null===r.nextUrl?[r.href]:[r.href,r.nextUrl];return f.set(l,u),u.keypath=l,d.put(u),u}function m(e,t,r,n,o){let u=b(e,n);if(null!==u)return u;let l={status:0,rsc:null,loading:null,staleAt:r.staleAt,isPartial:!0,promise:null,key:null,next:null,prev:null,size:0};return(0,a.spawnPrefetchSubtask)(j(r,l,t.key,n,o)),p.set(n,l),l.key=n,h.put(l),l}function P(e){0===e.status&&null!==e.promise&&(e.promise.resolve(null),e.promise=null)}function E(e){let t=e.blockedTasks;if(null!==t){for(let e of t)(0,a.pingPrefetchTask)(e);e.blockedTasks=null}}function O(e,t){e.status=1,e.staleAt=t,E(e)}function R(e,t){e.status=1,e.staleAt=t,null!==e.promise&&(e.promise.resolve(null),e.promise=null)}async function S(e,t){let r=t.key,a=r.href,i=r.nextUrl;try{var s,c,p,h;let t=await w(a,"/_tree",i);if(!t||!t.ok||204===t.status||!t.body){O(e,Date.now()+1e4);return}let r=T(t.body,d,e),y=await (0,o.createFromNextReadableStream)(r);if(y.buildId!==(0,u.getAppBuildId)()){O(e,Date.now()+1e4);return}let g=t.redirected?(0,l.createHrefFromUrl)((0,o.urlToUrlWithoutFlightMarker)(t.url)):a,b=t.headers.get("vary"),_=null!==b&&b.includes(n.NEXT_URL);if(s=y.tree,c=y.head,p=y.isHeadPartial,h=Date.now()+y.staleTime,e.status=2,e.tree=s,e.head=c,e.isHeadPartial=p,e.staleAt=h,e.couldBeIntercepted=_,e.canonicalUrl=g,E(e),!_&&null!==i){let t=[a,i];if(f.get(t)===e){f.delete(t);let r=[a];f.set(r,e),e.keypath=r}}}catch(t){O(e,Date.now()+1e4)}}async function j(e,t,r,n,a){let l=r.href;try{var i,s,c,f;let d=await w(l,""===a?n:n+"."+a,r.nextUrl);if(!d||!d.ok||204===d.status||!d.body){R(t,Date.now()+1e4);return}let p=T(d.body,h,t),y=await (0,o.createFromNextReadableStream)(p);if(y.buildId!==(0,u.getAppBuildId)()){R(t,Date.now()+1e4);return}i=y.rsc,s=y.loading,c=e.staleAt,f=y.isPartial,t.status=2,t.rsc=i,t.loading=s,t.staleAt=c,t.isPartial=f,null!==t.promise&&(t.promise.resolve(t),t.promise=null)}catch(e){R(t,Date.now()+1e4)}}async function w(e,t,r){let u={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_PREFETCH_HEADER]:"1",[n.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]:t};null!==r&&(u[n.NEXT_URL]=r);let l=(0,o.createFetch)(new URL(e),u,"low");(0,a.trackPrefetchRequestBandwidth)(l);let i=await l,s=i.headers.get("content-type"),c=s&&s.startsWith(n.RSC_CONTENT_TYPE_HEADER);return i.ok&&c?i:null}function T(e,t,r){let n=0,o=e.getReader();return new ReadableStream({async pull(e){for(;;){let{done:a,value:u}=await o.read();if(!a){e.enqueue(u),n+=u.byteLength,t.updateSize(r,n);continue}return}}})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},63952:(e,t)=>{"use strict";function r(e,t){let r=null,o=!1,a=0;function u(e){let t=e.next,n=e.prev;null!==t&&null!==n&&(a-=e.size,e.next=null,e.prev=null,r===e?r=t===r?null:t:(n.next=t,t.prev=n))}function l(){o||a<=e||(o=!0,n(i))}function i(){o=!1;let n=.9*e;for(;a>n&&null!==r;){let e=r.prev;u(e),t(e)}}return{put:function(e){if(r===e)return;let t=e.prev,n=e.next;if(null===n||null===t?(a+=e.size,l()):(t.next=n,n.prev=t),null===r)e.prev=e,e.next=e;else{let t=r.prev;e.prev=t,t.next=e,e.next=r,r.prev=e}r=e},delete:u,updateSize:function(e,t){if(null===e.next)return;let r=e.size;e.size=t,a=a-r+t,l()}}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createLRU",{enumerable:!0,get:function(){return r}});let n="function"==typeof requestIdleCallback?requestIdleCallback:e=>setTimeout(e,0);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},36053:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{NavigationResultTag:function(){return i},navigate:function(){return c}});let n=r(90883),o=r(68079),a=r(94084),u=r(35763),l=r(60769);var i=function(e){return e[e.MPA=0]="MPA",e[e.Success=1]="Success",e[e.NoOp=2]="NoOp",e[e.Async=3]="Async",e}({});let s={tag:2,data:null};function c(e,t,r,a){let i=Date.now(),c=(0,l.createCacheKey)(e.href,a),p=(0,u.readRouteCacheEntry)(i,c);if(null!==p&&p.status===u.EntryStatus.Fulfilled){let l=function e(t,r){let n={},o={},a=r.slots;if(null!==a)for(let r in a){let u=e(t,a[r]);n[r]=u.flightRouterState,o[r]=u.seedData}let l=null,i=null,s=!0,c=(0,u.readSegmentCacheEntry)(t,r.path);if(null!==c)switch(c.status){case u.EntryStatus.Fulfilled:l=c.rsc,i=c.loading,s=c.isPartial;break;case u.EntryStatus.Pending:{let e=(0,u.waitForSegmentCacheEntry)(c);l=e.then(e=>null!==e?e.rsc:null),i=e.then(e=>null!==e?e.loading:null),s=!0}case u.EntryStatus.Rejected:}let f=r.extra,d=f[0];return{flightRouterState:[d,n,null,null,f[1]],seedData:[d,l,o,i,s]}}(i,p.tree),c=l.flightRouterState,d=l.seedData;return function(e,t,r,a,u,l,i,c,d){let p=(0,o.updateCacheNodeOnNavigation)(r,a,u,l,i,c);if(null!==p){if(p.needsDynamicRequest){let r=(0,n.fetchServerResponse)(e,{flightRouterState:a,nextUrl:t});(0,o.listenForDynamicRequest)(p,r)}return f(p,r,d)}return s}(e,a,t,r,c,d,p.head,p.isHeadPartial,p.canonicalUrl)}return{tag:3,data:d(e,a,t,r)}}function f(e,t,r){let n=e.node;return{tag:1,data:{flightRouterState:e.route,cacheNode:null!==n?n:t,canonicalUrl:r}}}async function d(e,t,r,u){let l=(0,n.fetchServerResponse)(e,{flightRouterState:u,nextUrl:t}),{flightData:i,canonicalUrl:c}=await l;if("string"==typeof i)return{tag:0,data:i};let d=function(e,t){let r=e;for(let{segmentPath:n,tree:o}of t){let t=r!==e;r=function e(t,r,n,o,a){if(a===n.length)return r;let u=n[a],l=t[1],i={};for(let t in l)if(t===u){let u=l[t];i[t]=e(u,r,n,o,a+2)}else i[t]=l[t];if(o)return t[1]=i,t;let s=[t[0],i];return 2 in t&&(s[2]=t[2]),3 in t&&(s[3]=t[3]),4 in t&&(s[4]=t[4]),s}(r,o,n,t,0)}return r}(u,i),p=(0,a.createHrefFromUrl)(c||e),h=(0,o.updateCacheNodeOnNavigation)(r,u,d,null,null,!0);return null!==h?(h.needsDynamicRequest&&(0,o.listenForDynamicRequest)(h,l),f(h,r,p)):s}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},728:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"prefetch",{enumerable:!0,get:function(){return u}});let n=r(78311),o=r(60769),a=r(73096);function u(e,t){let r=(0,n.createPrefetchURL)(e);if(null===r)return;let u=(0,o.createCacheKey)(r.href,t);(0,a.schedulePrefetchTask)(u)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},73096:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{pingPrefetchTask:function(){return y},schedulePrefetchTask:function(){return s},spawnPrefetchSubtask:function(){return p},trackPrefetchRequestBandwidth:function(){return f}});let n=r(35763),o="function"==typeof queueMicrotask?queueMicrotask:e=>Promise.resolve().then(e).catch(e=>setTimeout(()=>{throw e})),a=[],u=0,l=0,i=!1;function s(e){_(a,{key:e,sortId:l++,isBlocked:!1,_heapIndex:-1}),c()}function c(){!i&&u<3&&(i=!0,o(g))}function f(e){u++,e.then(h,h)}let d=()=>{};function p(e){e.then(d,d)}function h(){u--,c()}function y(e){e.isBlocked&&(e.isBlocked=!1,_(a,e),c())}function g(){i=!1;let e=Date.now(),t=v(a);for(;null!==t&&u<3;){let r=(0,n.requestRouteCacheEntryFromCache)(e,t);switch(function(e,t,r){switch(r.status){case n.EntryStatus.Pending:{let e=r.blockedTasks;return null===e?r.blockedTasks=new Set([t]):e.add(t),1}case n.EntryStatus.Rejected:return 2;case n.EntryStatus.Fulfilled:{if(!(u<3))return 0;let o=r.tree;return(0,n.requestSegmentEntryFromCache)(e,t,r,o.path,""),function e(t,r,o,a){if(null!==a.slots)for(let l in a.slots){let i=a.slots[l];if(!(u<3))return 0;{let e=i.path,a=i.token;(0,n.requestSegmentEntryFromCache)(t,r,o,e,a)}if(0===e(t,r,o,i))return 0}return 2}(e,t,r,o)}default:return 2}}(e,t,r)){case 0:default:return;case 1:t.isBlocked=!0,m(a),t=v(a);continue;case 2:m(a),t=v(a);continue}}}function b(e,t){return t.sortId-e.sortId}function _(e,t){let r=e.length;e.push(t),t._heapIndex=r,function(e,t,r){let n=r;for(;n>0;){let r=n-1>>>1,o=e[r];if(!(b(o,t)>0))return;e[r]=t,t._heapIndex=r,e[n]=o,o._heapIndex=n,n=r}}(e,t,r)}function v(e){return 0===e.length?null:e[0]}function m(e){if(0===e.length)return null;let t=e[0];t._heapIndex=-1;let r=e.pop();return r!==t&&(e[0]=r,r._heapIndex=0,function(e,t,r){let n=0,o=e.length,a=o>>>1;for(;nb(a,t))ub(l,a)?(e[n]=l,l._heapIndex=n,e[u]=t,t._heapIndex=u,n=u):(e[n]=a,a._heapIndex=n,e[r]=t,t._heapIndex=r,n=r);else{if(!(ub(l,t)))return;e[n]=l,l._heapIndex=n,e[u]=t,t._heapIndex=u,n=u}}}(e,r,0)),t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},60928:(e,t)=>{"use strict";function r(){let e={parent:null,key:null,hasValue:!1,value:null,map:null},t=null,r=null;function n(n){if(r===n)return t;let o=e;for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return o}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},45050:(e,t,r)=>{"use strict";function n(){throw Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled.")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unauthorized",{enumerable:!0,get:function(){return n}}),r(20797).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},99153:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return r}});let r={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},91946:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,u.isNextRouterError)(t)||(0,a.isBailoutToCSRError)(t)||(0,n.isDynamicUsageError)(t)||(0,o.isPostpone)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=r(8195),o=r(76568),a=r(13007),u=r(69211);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},59702:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{useReducer:function(){return u},useUnwrapState:function(){return a}});let n=r(62599)._(r(20107)),o=r(75803);function a(e){return(0,o.isThenable)(e)?(0,n.use)(e):e}function u(e){let[t,r]=n.default.useState(e.state);return[t,(0,n.useCallback)(t=>{e.dispatch(t,r)},[e])]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},76504:(e,t)=>{"use strict";function r(e){var t;let[r,n,o,a]=e.slice(-4),u=e.slice(0,-4);return{pathToSegment:u.slice(0,-1),segmentPath:u,segment:null!=(t=u[u.length-1])?t:"",tree:r,seedData:n,head:o,isHeadPartial:a,isRootRender:4===e.length}}function n(e){return e.slice(2)}function o(e){return"string"==typeof e?e:e.map(r)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getFlightDataPartsFromPath:function(){return r},getNextFlightSegmentPath:function(){return n},normalizeFlightData:function(){return o}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},33099:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(50344);function o(e){return(0,n.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},13828:(e,t)=>{"use strict";function r(e,t){switch(typeof e){case"object":if(null===e)return"null";if(Array.isArray(e)){let n="[";if(t<1)for(let o=0;o0?"...":"";return n+"]"}{if(e instanceof Error)return e+"";let n=Object.keys(e),o="{";if(t<1)for(let a=0;a0?"...":"";return o+"}"}case"string":return JSON.stringify(e);default:return String(e)}}function n(e){let t,n;"string"==typeof e[0]?(t=e[0],n=1):(t="",n=0);let o="",a=!1;for(let u=0;u=e.length){o+=l;continue}let i=t[++u];switch(i){case"c":o=a?""+o+"]":"["+o,a=!a,n++;break;case"O":case"o":o+=r(e[n++],0);break;case"d":case"i":o+=parseInt(e[n++],10);break;case"f":o+=parseFloat(e[n++]);break;case"s":o+=String(e[n++]);break;default:o+="%"+i}}for(;n0?" ":"")+r(e[n],0);return o}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"formatConsoleArgs",{enumerable:!0,get:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},53317:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return a}});let n=r(22150),o=r(19974),a=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:a}=(0,o.parsePath)(e);return/\.[^/]+\/?$/.test(t)?""+(0,n.removeTrailingSlash)(t)+r+a:t.endsWith("/")?""+t+r+a:t+"/"+r+a};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},42347:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{onCaughtError:function(){return l},onUncaughtError:function(){return i}}),r(3132),r(75880);let n=r(69211),o=r(13007),a=r(24617),u=r(75394),l=(e,t)=>{(0,o.isBailoutToCSRError)(e)||(0,n.isNextRouterError)(e)||(0,u.originConsoleError)(e)},i=(e,t)=>{(0,o.isBailoutToCSRError)(e)||(0,n.isNextRouterError)(e)||(0,a.reportGlobalError)(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},24617:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{window.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},43477:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"onRecoverableError",{enumerable:!0,get:function(){return i}});let n=r(67342),o=r(13007),a=r(24617),u=r(3132),l=n._(r(91194)),i=(e,t)=>{let r=(0,l.default)(e)&&"cause"in e?e.cause:e,n=(0,u.getReactStitchedError)(r);(0,o.isBailoutToCSRError)(r)||(0,a.reportGlobalError)(n)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},52721:(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return n}}),r(33099),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},18259:e=>{!function(){var t={229:function(e){var t,r,n,o=e.exports={};function a(){throw Error("setTimeout has not been defined")}function u(){throw Error("clearTimeout has not been defined")}function l(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:a}catch(e){t=a}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(e){r=u}}();var i=[],s=!1,c=-1;function f(){s&&n&&(s=!1,n.length?i=n.concat(i):c=-1,i.length&&d())}function d(){if(!s){var e=l(f);s=!0;for(var t=i.length;t;){for(n=i,i=[];++c1)for(var r=1;r{"use strict";function r(e,t){var r=e.length;for(e.push(t);0>>1,o=e[n];if(0>>1;na(i,r))sa(c,i)?(e[n]=c,e[s]=r,n=s):(e[n]=i,e[l]=r,n=l);else if(sa(c,r))e[n]=c,e[s]=r,n=s;else break}}return t}function a(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var u,l=performance;t.unstable_now=function(){return l.now()}}else{var i=Date,s=i.now();t.unstable_now=function(){return i.now()-s}}var c=[],f=[],d=1,p=null,h=3,y=!1,g=!1,b=!1,_="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,m="undefined"!=typeof setImmediate?setImmediate:null;function P(e){for(var t=n(f);null!==t;){if(null===t.callback)o(f);else if(t.startTime<=e)o(f),t.sortIndex=t.expirationTime,r(c,t);else break;t=n(f)}}function E(e){if(b=!1,P(e),!g){if(null!==n(c))g=!0,A();else{var t=n(f);null!==t&&C(E,t.startTime-e)}}}var O=!1,R=-1,S=5,j=-1;function w(){return!(t.unstable_now()-je&&w());){var l=p.callback;if("function"==typeof l){p.callback=null,h=p.priorityLevel;var i=l(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof i){p.callback=i,P(e),r=!0;break t}p===n(c)&&o(c),P(e)}else o(c);p=n(c)}if(null!==p)r=!0;else{var s=n(f);null!==s&&C(E,s.startTime-e),r=!1}}break e}finally{p=null,h=a,y=!1}r=void 0}}finally{r?u():O=!1}}}if("function"==typeof m)u=function(){m(T)};else if("undefined"!=typeof MessageChannel){var M=new MessageChannel,x=M.port2;M.port1.onmessage=T,u=function(){x.postMessage(null)}}else u=function(){_(T,0)};function A(){O||(O=!0,u())}function C(e,r){R=_(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||y||(g=!0,A())},t.unstable_forceFrameRate=function(e){0>e||125u?(e.sortIndex=a,r(f,e),null===n(c)&&e===n(f)&&(b?(v(R),R=-1):b=!0,C(E,a-u))):(e.sortIndex=l,r(c,e),g||y||(g=!0,A())),e},t.unstable_shouldYield=w,t.unstable_wrapCallback=function(e){var t=h;return function(){var r=h;h=t;try{return e.apply(this,arguments)}finally{h=r}}}},87803:(e,t,r)=>{"use strict";e.exports=r(10600)},8195:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicUsageError",{enumerable:!0,get:function(){return l}});let n=r(75566),o=r(13007),a=r(69211),u=r(48002),l=e=>(0,n.isDynamicServerError)(e)||(0,o.isBailoutToCSRError)(e)||(0,a.isNextRouterError)(e)||(0,u.isDynamicPostpone)(e)},91194:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getProperError:function(){return a}});let n=r(27052);function o(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function a(e){return o(e)?e:Error((0,n.isPlainObject)(e)?function(e){let t=new WeakSet;return JSON.stringify(e,(e,r)=>{if("object"==typeof r&&null!==r){if(t.has(r))return"[Circular]";t.add(r)}return r})}(e):e+"")}},99165:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{MetadataBoundary:function(){return a},OutletBoundary:function(){return l},ViewportBoundary:function(){return u}});let n=r(91980),o={[n.METADATA_BOUNDARY_NAME]:function(e){let{children:t}=e;return t},[n.VIEWPORT_BOUNDARY_NAME]:function(e){let{children:t}=e;return t},[n.OUTLET_BOUNDARY_NAME]:function(e){let{children:t}=e;return t}},a=o[n.METADATA_BOUNDARY_NAME.slice(0)],u=o[n.VIEWPORT_BOUNDARY_NAME.slice(0)],l=o[n.OUTLET_BOUNDARY_NAME.slice(0)]},91980:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{METADATA_BOUNDARY_NAME:function(){return r},OUTLET_BOUNDARY_NAME:function(){return o},VIEWPORT_BOUNDARY_NAME:function(){return n}});let r="__next_metadata_boundary__",n="__next_viewport_boundary__",o="__next_outlet_boundary__"},47314:(e,t,r)=>{"use strict";var n=r(86170);Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{atLeastOneTask:function(){return u},scheduleImmediate:function(){return a},scheduleOnNextTick:function(){return o},waitAtLeastOneReactRenderTask:function(){return l}});let o=e=>{Promise.resolve().then(()=>{n.nextTick(e)})},a=e=>{setImmediate(e)};function u(){return new Promise(e=>a(e))}function l(){return new Promise(e=>setImmediate(e))}},55006:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"actionAsyncStorage",{enumerable:!0,get:function(){return n.actionAsyncStorageInstance}});let n=r(81939)},21773:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"afterTaskAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,r(42904).createAsyncLocalStorage)()},98372:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"afterTaskAsyncStorage",{enumerable:!0,get:function(){return n.afterTaskAsyncStorageInstance}});let n=r(21773)},42904:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bindSnapshot:function(){return u},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return l}});let r=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class n{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}static bind(e){return e}}let o="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return o?new o:new n}function u(e){return o?o.bind(e):n.bind(e)}function l(){return o?o.snapshot():function(e,...t){return e(...t)}}},48002:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return O},abortAndThrowOnSynchronousRequestDataAccess:function(){return P},abortOnSynchronousPlatformIOAccess:function(){return v},accessedDynamicData:function(){return A},annotateDynamicAccess:function(){return U},consumeDynamicAccess:function(){return C},createDynamicTrackingState:function(){return f},createDynamicValidationState:function(){return d},createPostponedAbortSignal:function(){return N},formatDynamicAPIAccesses:function(){return k},getFirstDynamicReason:function(){return p},isDynamicPostpone:function(){return j},isPrerenderInterruptedError:function(){return x},markCurrentScopeAsDynamic:function(){return h},postponeWithTracking:function(){return R},throwIfDisallowedDynamic:function(){return W},throwToInterruptStaticGeneration:function(){return g},trackAllowedDynamicAccess:function(){return B},trackDynamicDataInDynamicRender:function(){return b},trackFallbackParamAccessed:function(){return y},trackSynchronousPlatformIOAccessInDev:function(){return m},trackSynchronousRequestDataAccessInDev:function(){return E},useDynamicRouteParams:function(){return I}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(20107)),o=r(75566),a=r(91558),u=r(31322),l=r(32381),i=r(6745),s=r(91980),c="function"==typeof n.default.unstable_postpone;function f(e){return{isDebugDynamicAccesses:e,dynamicAccesses:[],syncDynamicExpression:void 0,syncDynamicErrorWithStack:null}}function d(){return{hasSuspendedDynamic:!1,hasDynamicMetadata:!1,hasDynamicViewport:!1,hasSyncDynamicErrors:!1,dynamicErrors:[]}}function p(e){var t;return null==(t=e.dynamicAccesses[0])?void 0:t.expression}function h(e,t,r){if((!t||"cache"!==t.type&&"unstable-cache"!==t.type)&&!e.forceDynamic&&!e.forceStatic){if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${e.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${r}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(t){if("prerender-ppr"===t.type)R(e.route,r,t.dynamicTracking);else if("prerender-legacy"===t.type){t.revalidate=0;let n=new o.DynamicServerError(`Route ${e.route} couldn't be rendered statically because it used ${r}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=r,e.dynamicUsageStack=n.stack,n}}}}function y(e,t){let r=u.workUnitAsyncStorage.getStore();r&&"prerender-ppr"===r.type&&R(e.route,t,r.dynamicTracking)}function g(e,t,r){let n=new o.DynamicServerError(`Route ${t.route} couldn't be rendered statically because it used \`${e}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw r.revalidate=0,t.dynamicUsageDescription=e,t.dynamicUsageStack=n.stack,n}function b(e,t){t&&"cache"!==t.type&&"unstable-cache"!==t.type&&("prerender"===t.type||"prerender-legacy"===t.type)&&(t.revalidate=0)}function _(e,t,r){let n=M(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`);r.controller.abort(n);let o=r.dynamicTracking;o&&o.dynamicAccesses.push({stack:o.isDebugDynamicAccesses?Error().stack:void 0,expression:t})}function v(e,t,r,n){let o=n.dynamicTracking;return o&&null===o.syncDynamicErrorWithStack&&(o.syncDynamicExpression=t,o.syncDynamicErrorWithStack=r),_(e,t,n)}function m(e){e.prerenderPhase=!1}function P(e,t,r,n){let o=n.dynamicTracking;throw o&&null===o.syncDynamicErrorWithStack&&(o.syncDynamicExpression=t,o.syncDynamicErrorWithStack=r,!0===n.validating&&(o.syncDynamicLogged=!0)),_(e,t,n),M(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`)}let E=m;function O({reason:e,route:t}){let r=u.workUnitAsyncStorage.getStore();R(t,e,r&&"prerender-ppr"===r.type?r.dynamicTracking:null)}function R(e,t,r){D(),r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:t}),n.default.unstable_postpone(S(e,t))}function S(e,t){return`Route ${e} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function j(e){return"object"==typeof e&&null!==e&&"string"==typeof e.message&&w(e.message)}function w(e){return e.includes("needs to bail out of prerendering at this point because it used")&&e.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===w(S("%%%","^^^")))throw Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js");let T="NEXT_PRERENDER_INTERRUPTED";function M(e){let t=Error(e);return t.digest=T,t}function x(e){return"object"==typeof e&&null!==e&&e.digest===T&&"name"in e&&"message"in e&&e instanceof Error}function A(e){return e.length>0}function C(e,t){return e.dynamicAccesses.push(...t.dynamicAccesses),e.dynamicAccesses}function k(e){return e.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: -${t}`))}function D(){if(!c)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function N(e){D();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}function U(e,t){let r=t.dynamicTracking;r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:e})}function I(e){if("undefined"==typeof window){let t=l.workAsyncStorage.getStore();if(t&&t.isStaticGeneration&&t.fallbackRouteParams&&t.fallbackRouteParams.size>0){let r=u.workUnitAsyncStorage.getStore();r&&("prerender"===r.type?n.default.use((0,i.makeHangingPromise)(r.renderSignal,e)):"prerender-ppr"===r.type?R(t.route,e,r.dynamicTracking):"prerender-legacy"===r.type&&g(e,t,r))}}}let L=/\n\s+at Suspense \(\)/,H=RegExp(`\\n\\s+at ${s.METADATA_BOUNDARY_NAME}[\\n\\s]`),F=RegExp(`\\n\\s+at ${s.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),$=RegExp(`\\n\\s+at ${s.OUTLET_BOUNDARY_NAME}[\\n\\s]`);function B(e,t,r,n,o){if(!$.test(t)){if(H.test(t)){r.hasDynamicMetadata=!0;return}if(F.test(t)){r.hasDynamicViewport=!0;return}if(L.test(t)){r.hasSuspendedDynamic=!0;return}if(n.syncDynamicErrorWithStack||o.syncDynamicErrorWithStack){r.hasSyncDynamicErrors=!0;return}else{let n=function(e,t){let r=Error(e);return r.stack="Error: "+e+t,r}(`Route "${e}": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. We don't have the exact line number added to error messages yet but you can see which component in the stack below. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense`,t);r.dynamicErrors.push(n);return}}}function W(e,t,r,n){let o,u,l;if(r.syncDynamicErrorWithStack?(o=r.syncDynamicErrorWithStack,u=r.syncDynamicExpression,l=!0===r.syncDynamicLogged):n.syncDynamicErrorWithStack?(o=n.syncDynamicErrorWithStack,u=n.syncDynamicExpression,l=!0===n.syncDynamicLogged):(o=null,u=void 0,l=!1),t.hasSyncDynamicErrors&&o)throw l||console.error(o),new a.StaticGenBailoutError;let i=t.dynamicErrors;if(i.length){for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentParam",{enumerable:!0,get:function(){return o}});let n=r(92688);function o(e){let t=n.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{type:"optional-catchall",param:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{type:t?"catchall-intercepted":"catchall",param:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{type:t?"dynamic-intercepted":"dynamic",param:e.slice(1,-1)}:null}},32381:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=r(70876)},31322:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getExpectedRequestStore:function(){return o},getPrerenderResumeDataCache:function(){return a},getRenderResumeDataCache:function(){return u},workUnitAsyncStorage:function(){return n.workUnitAsyncStorageInstance}});let n=r(17707);function o(e){let t=n.workUnitAsyncStorageInstance.getStore();if(t){if("request"===t.type)return t;if("prerender"===t.type||"prerender-ppr"===t.type||"prerender-legacy"===t.type)throw Error(`\`${e}\` cannot be called inside a prerender. This is a bug in Next.js.`);if("cache"===t.type)throw Error(`\`${e}\` cannot be called inside "use cache". Call it outside and pass an argument instead. Read more: https://nextjs.org/docs/messages/next-request-in-use-cache`);if("unstable-cache"===t.type)throw Error(`\`${e}\` cannot be called inside unstable_cache. Call it outside and pass an argument instead. Read more: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`)}throw Error(`\`${e}\` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`)}function a(e){return"prerender"===e.type||"prerender-ppr"===e.type?e.prerenderResumeDataCache:null}function u(e){return"prerender-legacy"!==e.type&&"cache"!==e.type&&"unstable-cache"!==e.type?"request"===e.type?e.renderResumeDataCache:e.prerenderResumeDataCache:null}},80775:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var l=a?Object.getOwnPropertyDescriptor(e,u):null;l&&(l.get||l.set)?Object.defineProperty(n,u,l):n[u]=e[u]}return n.default=e,r&&r.set(e,n),n}(r(20107));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}let a={current:null},u="function"==typeof n.cache?n.cache:e=>e,l=console.warn;function i(e){return function(...t){l(e(...t))}}u(e=>{try{l(a.current)}finally{a.current=null}})},6745:(e,t)=>{"use strict";function r(e,t){let r=new Promise((r,n)=>{e.addEventListener("abort",()=>{n(Error(`During prerendering, ${t} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${t} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context.`))},{once:!0})});return r.catch(n),r}function n(){}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"makeHangingPromise",{enumerable:!0,get:function(){return r}})},92688:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return u},isInterceptionRouteAppPath:function(){return a}});let n=r(40483),o=["(..)(..)","(.)","(..)","(...)"];function a(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function u(e){let t,r,a;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,a]=e.split(r,2);break}if(!t||!r||!a)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":a="/"===t?`/${a}`:t+"/"+a;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);a=t.split("/").slice(0,-1).concat(a).join("/");break;case"(...)":a="/"+a;break;case"(..)(..)":let u=t.split("/");if(u.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);a=u.slice(0,-2).concat(a).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:a}}},76568:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isPostpone",{enumerable:!0,get:function(){return n}});let r=Symbol.for("react.postpone");function n(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}},98369:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRenderParamsFromClient",{enumerable:!0,get:function(){return o}}),r(38906),r(83156);let n=r(38558);function o(e){return function(e){let t=a.get(e);if(t)return t;let r=Promise.resolve(e);return a.set(e,r),Object.keys(e).forEach(t=>{n.wellKnownProperties.has(t)||(r[t]=e[t])}),r}(e)}let a=new WeakMap},90215:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createParamsFromClient:function(){return s},createPrerenderParamsForClientSegment:function(){return p},createServerParamsForMetadata:function(){return c},createServerParamsForRoute:function(){return f},createServerParamsForServerSegment:function(){return d}}),r(38906);let n=r(48002),o=r(31322),a=r(83156),u=r(38558),l=r(6745),i=r(80775);function s(e,t){let r=o.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-ppr":case"prerender-legacy":return h(e,t,r)}return g(e)}r(47314);let c=d;function f(e,t){let r=o.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-ppr":case"prerender-legacy":return h(e,t,r)}return g(e)}function d(e,t){let r=o.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-ppr":case"prerender-legacy":return h(e,t,r)}return g(e)}function p(e,t){let r=o.workUnitAsyncStorage.getStore();if(r&&"prerender"===r.type){let n=t.fallbackRouteParams;if(n){for(let t in e)if(n.has(t))return(0,l.makeHangingPromise)(r.renderSignal,"`params`")}}return Promise.resolve(e)}function h(e,t,r){let o=t.fallbackRouteParams;if(o){let a=!1;for(let t in e)if(o.has(t)){a=!0;break}if(a)return"prerender"===r.type?function(e,t,r){let o=y.get(e);if(o)return o;let a=(0,l.makeHangingPromise)(r.renderSignal,"`params`");return y.set(e,a),Object.keys(e).forEach(e=>{u.wellKnownProperties.has(e)||Object.defineProperty(a,e,{get(){let o=(0,u.describeStringPropertyAccess)("params",e),a=b(t,o);(0,n.abortAndThrowOnSynchronousRequestDataAccess)(t,o,a,r)},set(t){Object.defineProperty(a,e,{value:t,writable:!0,enumerable:!0})},enumerable:!0,configurable:!0})}),a}(e,t.route,r):function(e,t,r,o){let a=y.get(e);if(a)return a;let l={...e},i=Promise.resolve(l);return y.set(e,i),Object.keys(e).forEach(a=>{u.wellKnownProperties.has(a)||(t.has(a)?(Object.defineProperty(l,a,{get(){let e=(0,u.describeStringPropertyAccess)("params",a);"prerender-ppr"===o.type?(0,n.postponeWithTracking)(r.route,e,o.dynamicTracking):(0,n.throwToInterruptStaticGeneration)(e,r,o)},enumerable:!0}),Object.defineProperty(i,a,{get(){let e=(0,u.describeStringPropertyAccess)("params",a);"prerender-ppr"===o.type?(0,n.postponeWithTracking)(r.route,e,o.dynamicTracking):(0,n.throwToInterruptStaticGeneration)(e,r,o)},set(e){Object.defineProperty(i,a,{value:e,writable:!0,enumerable:!0})},enumerable:!0,configurable:!0})):i[a]=e[a])}),i}(e,o,t,r)}return g(e)}let y=new WeakMap;function g(e){let t=y.get(e);if(t)return t;let r=Promise.resolve(e);return y.set(e,r),Object.keys(e).forEach(t=>{u.wellKnownProperties.has(t)||(r[t]=e[t])}),r}function b(e,t){let r=e?`Route "${e}" `:"This route ";return Error(`${r}used ${t}. \`params\` should be awaited before using its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)}(0,i.createDedupedByCallsiteServerErrorLoggerDev)(b),(0,i.createDedupedByCallsiteServerErrorLoggerDev)(function(e,t,r){let n=e?`Route "${e}" `:"This route ";return Error(`${n}used ${t}. \`params\` should be awaited before using its properties. The following properties were not available through enumeration because they conflict with builtin property names: ${function(e){switch(e.length){case 0:throw new a.InvariantError("Expected describeListOfPropertyNames to be called with a non-empty list of strings.");case 1:return`\`${e[0]}\``;case 2:return`\`${e[0]}\` and \`${e[1]}\``;default:{let t="";for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return o}}),r(38906);let n=r(38558);function o(e){return function(e){let t=a.get(e);if(t)return t;let r=Promise.resolve(e);return a.set(e,r),Object.keys(e).forEach(t=>{n.wellKnownProperties.has(t)||(r[t]=e[t])}),r}(e)}let a=new WeakMap},78394:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createPrerenderSearchParamsForClientPage:function(){return p},createSearchParamsFromClient:function(){return c},createServerSearchParamsForMetadata:function(){return f},createServerSearchParamsForServerPage:function(){return d}});let n=r(38906),o=r(48002),a=r(31322),u=r(83156),l=r(6745),i=r(80775),s=r(38558);function c(e,t){let r=a.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-ppr":case"prerender-legacy":return h(t,r)}return y(e,t)}r(47314);let f=d;function d(e,t){let r=a.workUnitAsyncStorage.getStore();if(r)switch(r.type){case"prerender":case"prerender-ppr":case"prerender-legacy":return h(t,r)}return y(e,t)}function p(e){if(e.forceStatic)return Promise.resolve({});let t=a.workUnitAsyncStorage.getStore();return t&&"prerender"===t.type?(0,l.makeHangingPromise)(t.renderSignal,"`searchParams`"):Promise.resolve({})}function h(e,t){return e.forceStatic?Promise.resolve({}):"prerender"===t.type?function(e,t){let r=g.get(t);if(r)return r;let a=(0,l.makeHangingPromise)(t.renderSignal,"`searchParams`"),u=new Proxy(a,{get(r,u,l){if(Object.hasOwn(a,u))return n.ReflectAdapter.get(r,u,l);switch(u){case"then":return(0,o.annotateDynamicAccess)("`await searchParams`, `searchParams.then`, or similar",t),n.ReflectAdapter.get(r,u,l);case"status":return(0,o.annotateDynamicAccess)("`use(searchParams)`, `searchParams.status`, or similar",t),n.ReflectAdapter.get(r,u,l);case"hasOwnProperty":case"isPrototypeOf":case"propertyIsEnumerable":case"toString":case"valueOf":case"toLocaleString":case"catch":case"finally":case"toJSON":case"$$typeof":case"__esModule":return n.ReflectAdapter.get(r,u,l);default:if("string"==typeof u){let r=(0,s.describeStringPropertyAccess)("searchParams",u),n=b(e,r);(0,o.abortAndThrowOnSynchronousRequestDataAccess)(e,r,n,t)}return n.ReflectAdapter.get(r,u,l)}},has(r,a){if("string"==typeof a){let r=(0,s.describeHasCheckingStringProperty)("searchParams",a),n=b(e,r);(0,o.abortAndThrowOnSynchronousRequestDataAccess)(e,r,n,t)}return n.ReflectAdapter.has(r,a)},ownKeys(){let r="`{...searchParams}`, `Object.keys(searchParams)`, or similar",n=b(e,r);(0,o.abortAndThrowOnSynchronousRequestDataAccess)(e,r,n,t)}});return g.set(t,u),u}(e.route,t):function(e,t){let r=g.get(e);if(r)return r;let a=Promise.resolve({}),u=new Proxy(a,{get(r,u,l){if(Object.hasOwn(a,u))return n.ReflectAdapter.get(r,u,l);switch(u){case"hasOwnProperty":case"isPrototypeOf":case"propertyIsEnumerable":case"toString":case"valueOf":case"toLocaleString":case"catch":case"finally":case"toJSON":case"$$typeof":case"__esModule":return n.ReflectAdapter.get(r,u,l);case"then":{let r="`await searchParams`, `searchParams.then`, or similar";e.dynamicShouldError?(0,s.throwWithStaticGenerationBailoutErrorWithDynamicError)(e.route,r):"prerender-ppr"===t.type?(0,o.postponeWithTracking)(e.route,r,t.dynamicTracking):(0,o.throwToInterruptStaticGeneration)(r,e,t);return}case"status":{let r="`use(searchParams)`, `searchParams.status`, or similar";e.dynamicShouldError?(0,s.throwWithStaticGenerationBailoutErrorWithDynamicError)(e.route,r):"prerender-ppr"===t.type?(0,o.postponeWithTracking)(e.route,r,t.dynamicTracking):(0,o.throwToInterruptStaticGeneration)(r,e,t);return}default:if("string"==typeof u){let r=(0,s.describeStringPropertyAccess)("searchParams",u);e.dynamicShouldError?(0,s.throwWithStaticGenerationBailoutErrorWithDynamicError)(e.route,r):"prerender-ppr"===t.type?(0,o.postponeWithTracking)(e.route,r,t.dynamicTracking):(0,o.throwToInterruptStaticGeneration)(r,e,t)}return n.ReflectAdapter.get(r,u,l)}},has(r,a){if("string"==typeof a){let r=(0,s.describeHasCheckingStringProperty)("searchParams",a);return e.dynamicShouldError?(0,s.throwWithStaticGenerationBailoutErrorWithDynamicError)(e.route,r):"prerender-ppr"===t.type?(0,o.postponeWithTracking)(e.route,r,t.dynamicTracking):(0,o.throwToInterruptStaticGeneration)(r,e,t),!1}return n.ReflectAdapter.has(r,a)},ownKeys(){let r="`{...searchParams}`, `Object.keys(searchParams)`, or similar";e.dynamicShouldError?(0,s.throwWithStaticGenerationBailoutErrorWithDynamicError)(e.route,r):"prerender-ppr"===t.type?(0,o.postponeWithTracking)(e.route,r,t.dynamicTracking):(0,o.throwToInterruptStaticGeneration)(r,e,t)}});return g.set(e,u),u}(e,t)}function y(e,t){return t.forceStatic?Promise.resolve({}):function(e,t){let r=g.get(e);if(r)return r;let n=Promise.resolve(e);return g.set(e,n),Object.keys(e).forEach(r=>{switch(r){case"hasOwnProperty":case"isPrototypeOf":case"propertyIsEnumerable":case"toString":case"valueOf":case"toLocaleString":case"then":case"catch":case"finally":case"status":case"toJSON":case"$$typeof":case"__esModule":break;default:Object.defineProperty(n,r,{get(){let n=a.workUnitAsyncStorage.getStore();return(0,o.trackDynamicDataInDynamicRender)(t,n),e[r]},set(e){Object.defineProperty(n,r,{value:e,writable:!0,enumerable:!0})},enumerable:!0,configurable:!0})}}),n}(e,t)}let g=new WeakMap;function b(e,t){let r=e?`Route "${e}" `:"This route ";return Error(`${r}used ${t}. \`searchParams\` should be awaited before using its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)}(0,i.createDedupedByCallsiteServerErrorLoggerDev)(b),(0,i.createDedupedByCallsiteServerErrorLoggerDev)(function(e,t,r){let n=e?`Route "${e}" `:"This route ";return Error(`${n}used ${t}. \`searchParams\` should be awaited before using its properties. The following properties were not available through enumeration because they conflict with builtin or well-known property names: ${function(e){switch(e.length){case 0:throw new u.InvariantError("Expected describeListOfPropertyNames to be called with a non-empty list of strings.");case 1:return`\`${e[0]}\``;case 2:return`\`${e[0]}\` and \`${e[1]}\``;default:{let t="";for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{describeHasCheckingStringProperty:function(){return l},describeStringPropertyAccess:function(){return u},isRequestAPICallableInsideAfter:function(){return c},throwWithStaticGenerationBailoutError:function(){return i},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return s},wellKnownProperties:function(){return f}});let n=r(91558),o=r(98372),a=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function u(e,t){return a.test(t)?`\`${e}.${t}\``:`\`${e}[${JSON.stringify(t)}]\``}function l(e,t){let r=JSON.stringify(t);return`\`Reflect.has(${e}, ${r})\`, \`${r} in ${e}\`, or similar`}function i(e,t){throw new n.StaticGenBailoutError(`Route ${e} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`)}function s(e,t){throw new n.StaticGenBailoutError(`Route ${e} with \`dynamic = "error"\` couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`)}function c(){let e=o.afterTaskAsyncStorage.getStore();return(null==e?void 0:e.rootTaskSpawnPhase)==="action"}let f=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","toJSON","$$typeof","__esModule"])},38906:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},32618:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return u},LayoutRouterContext:function(){return a},MissingSlotContext:function(){return i},TemplateContext:function(){return l}});let n=r(67342)._(r(20107)),o=n.default.createContext(null),a=n.default.createContext(null),u=n.default.createContext(null),l=n.default.createContext(null),i=n.default.createContext(new Set)},80724:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},76249:(e,t)=>{"use strict";function r(e){let t=5381;for(let r=0;r>>0}function n(e){return r(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{djb2Hash:function(){return r},hexHash:function(){return n}})},17315:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=r(67342)._(r(20107)).default.createContext({})},14839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathParamsContext:function(){return u},PathnameContext:function(){return a},SearchParamsContext:function(){return o}});let n=r(20107),o=(0,n.createContext)(null),a=(0,n.createContext)(null),u=(0,n.createContext)(null)},83156:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"InvariantError",{enumerable:!0,get:function(){return r}});class r extends Error{constructor(e,t){super("Invariant: "+(e.endsWith(".")?e:e+".")+" This is a bug in Next.js.",t),this.name="InvariantError"}}},27052:(e,t)=>{"use strict";function r(e){return Object.prototype.toString.call(e)}function n(e){if("[object Object]"!==r(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getObjectClassLabel:function(){return r},isPlainObject:function(){return n}})},75803:(e,t)=>{"use strict";function r(e){return null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isThenable",{enumerable:!0,get:function(){return r}})},13007:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},88018:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},52345:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createMutableActionQueue",{enumerable:!0,get:function(){return s}});let n=r(23093),o=r(27749),a=r(20107),u=r(75803);function l(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?i({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:n.ACTION_REFRESH,origin:window.location.origin},t)))}async function i(e){let{actionQueue:t,action:r,setState:n}=e,o=t.state;t.pending=r;let a=r.payload,i=t.action(o,a);function s(e){r.discarded||(t.state=e,l(t,n),r.resolve(e))}(0,u.isThenable)(i)?i.then(s,e=>{l(t,n),r.reject(e)}):s(i)}function s(e){let t={state:e,dispatch:(e,r)=>(function(e,t,r){let o={resolve:r,reject:()=>{}};if(t.type!==n.ACTION_RESTORE){let e=new Promise((e,t)=>{o={resolve:e,reject:t}});(0,a.startTransition)(()=>{r(e)})}let u={payload:t,next:null,resolve:o.resolve,reject:o.reject};null===e.pending?(e.last=u,i({actionQueue:e,action:u,setState:r})):t.type===n.ACTION_NAVIGATE||t.type===n.ACTION_RESTORE?(e.pending.discarded=!0,e.last=u,e.pending.payload.type===n.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),i({actionQueue:e,action:u,setState:r})):(null!==e.last&&(e.last.next=u),e.last=u)})(t,e,r),action:async(e,t)=>(0,o.reducer)(e,t),pending:null,last:null};return t}},76905:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(19974);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+t+r+o+a}},40483:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return a},normalizeRscURL:function(){return u}});let n=r(88018),o=r(63234);function a(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function u(e){return e.replace(/\.rsc($|\?)/,"$1")}},65200:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange){e();return}let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},80691:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isBot",{enumerable:!0,get:function(){return n}});let r=/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i;function n(e){return r.test(e)}},19974:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},50344:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(19974);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},22150:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},63234:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}function n(e){return e.startsWith("@")&&"@children"!==e}function o(e,t){if(e.includes(a)){let e=JSON.stringify(t);return"{}"!==e?a+"?"+e:a}return e}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return u},PAGE_SEGMENT_KEY:function(){return a},addSearchParamsIfPageSegment:function(){return o},isGroupSegment:function(){return r},isParallelRouteSegment:function(){return n}});let a="__PAGE__",u="__DEFAULT__"},58741:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ServerInsertedHTMLContext:function(){return o},useServerInsertedHTML:function(){return a}});let n=r(62599)._(r(20107)),o=n.default.createContext(null);function a(e){let t=(0,n.useContext)(o);t&&t(e)}},20339:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},31858:(e,t,r)=>{"use strict";var n=r(20107);function o(e){var t="https://react.dev/errors/"+e;if(1{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=r(71272)},25642:(e,t,r)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=r(31858)},70446:(e,t,r)=>{"use strict";var n=r(25642),o={stream:!0},a=new Map;function u(e){var t=r(e);return"function"!=typeof t.then||"fulfilled"===t.status?null:(t.then(function(e){t.status="fulfilled",t.value=e},function(e){t.status="rejected",t.reason=e}),t)}function l(){}function i(e){for(var t=e[1],n=[],o=0;os||35===s||114===s||120===s?(c=s,s=3,l++):(c=0,s=3);continue;case 2:44===(y=u[l++])?s=4:f=f<<4|(96u.length&&(y=-1)}var g=u.byteOffset+l;if(-1{"use strict";e.exports=r(70446)},18971:(e,t,r)=>{"use strict";e.exports=r(17925)},32905:(e,t)=>{"use strict";var r=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function o(e,t,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==t.key&&(o=""+t.key),"key"in t)for(var a in n={},t)"key"!==a&&(n[a]=t[a]);else n=t;return{$$typeof:r,type:e,key:o,ref:void 0!==(t=n.ref)?t:null,props:n}}t.Fragment=n,t.jsx=o,t.jsxs=o},29914:(e,t,r)=>{"use strict";var n=r(86170),o=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),c=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),y=Symbol.iterator,g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,_={};function v(e,t,r){this.props=e,this.context=t,this.refs=_,this.updater=r||g}function m(){}function P(e,t,r){this.props=e,this.context=t,this.refs=_,this.updater=r||g}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=v.prototype;var E=P.prototype=new m;E.constructor=P,b(E,v.prototype),E.isPureReactComponent=!0;var O=Array.isArray,R={H:null,A:null,T:null,S:null},S=Object.prototype.hasOwnProperty;function j(e,t,r,n,a,u){return{$$typeof:o,type:e,key:t,ref:void 0!==(r=u.ref)?r:null,props:u}}function w(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var T=/\/+/g;function M(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function x(){}function A(e,t,r){if(null==e)return e;var n=[],u=0;return!function e(t,r,n,u,l){var i,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case a:d=!0;break;case h:return e((d=t._init)(t._payload),r,n,u,l)}}if(d)return l=l(t),d=""===u?"."+M(t,0):u,O(l)?(n="",null!=d&&(n=d.replace(T,"$&/")+"/"),e(l,r,n,"",function(e){return e})):null!=l&&(w(l)&&(i=l,s=n+(null==l.key||t&&t.key===l.key?"":(""+l.key).replace(T,"$&/")+"/")+d,l=j(i.type,s,void 0,void 0,void 0,i.props)),r.push(l)),1;d=0;var p=""===u?".":u+":";if(O(t))for(var g=0;g{"use strict";e.exports=r(29914)},20475:(e,t,r)=>{"use strict";e.exports=r(32905)},81939:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"actionAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,r(35838).createAsyncLocalStorage)()},35838:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bindSnapshot:function(){return u},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return l}});let r=Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available");class n{disable(){throw r}getStore(){}run(){throw r}exit(){throw r}enterWith(){throw r}static bind(e){return e}}let o="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return o?new o:new n}function u(e){return o?o.bind(e):n.bind(e)}function l(){return o?o.snapshot():function(e,...t){return e(...t)}}},70876:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,r(35838).createAsyncLocalStorage)()},17707:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workUnitAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,r(35838).createAsyncLocalStorage)()},32465:(e,t,r)=>{"use strict";function n(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}r.r(t),r.d(t,{_:()=>n})},44911:(e,t,r)=>{"use strict";r.r(t),r.d(t,{_:()=>o});var n=0;function o(e){return"__private_"+n+++"_"+e}},67342:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n})},62599:(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var l=a?Object.getOwnPropertyDescriptor(e,u):null;l&&(l.get||l.set)?Object.defineProperty(o,u,l):o[u]=e[u]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o})}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6152-326f6ec4a26e144e.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6152-326f6ec4a26e144e.js deleted file mode 100644 index e271740..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/6152-326f6ec4a26e144e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6152],{42541:(e,t,r)=>{r.d(t,{$:()=>l,r:()=>i});var a=r(20475),s=r(20107),o=r(61837),n=r(29395),d=r(22250);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),l=s.forwardRef((e,t)=>{let{className:r,variant:s,size:n,asChild:l=!1,...c}=e,f=l?o.DX:"button";return(0,a.jsx)(f,{className:(0,d.cn)(i({variant:s,size:n,className:r})),ref:t,...c})});l.displayName="Button"},72167:(e,t,r)=>{r.d(t,{BT:()=>l,Wu:()=>c,ZB:()=>i,Zp:()=>n,aR:()=>d,wL:()=>f});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});n.displayName="Card";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex flex-col space-y-1.5 p-6",r),...s})});d.displayName="CardHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,o.cn)("font-semibold leading-none tracking-tight",r),...s})});i.displayName="CardTitle";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",r),...s})});l.displayName="CardDescription";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("p-6 pt-0",r),...s})});c.displayName="CardContent";let f=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex items-center p-6 pt-0",r),...s})});f.displayName="CardFooter"},64219:(e,t,r)=>{r.d(t,{p:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,type:s,...n}=e;return(0,a.jsx)("input",{type:s,className:(0,o.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...n})});n.displayName="Input"},49153:(e,t,r)=>{r.d(t,{J:()=>l});var a=r(20475),s=r(20107),o=r(73725),n=r(29395),d=r(22250);let i=(0,n.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(o.b,{ref:t,className:(0,d.cn)(i(),r),...s})});l.displayName=o.b.displayName},35601:(e,t,r)=>{r.d(t,{TR:()=>h,bq:()=>f,eb:()=>x,gC:()=>m,l6:()=>i,s3:()=>l,yv:()=>c});var a=r(20475),s=r(20107),o=r(7197),n=r(32301),d=r(22250);let i=n.bL,l=n.YJ,c=n.WT,f=s.forwardRef((e,t)=>{let{className:r,children:s,...i}=e;return(0,a.jsxs)(n.l9,{ref:t,className:(0,d.cn)("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",r),...i,children:[s,(0,a.jsx)(n.In,{asChild:!0,children:(0,a.jsx)(o.TBE,{className:"h-4 w-4 opacity-50"})})]})});f.displayName=n.l9.displayName;let u=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.PP,{ref:t,className:(0,d.cn)("flex cursor-default items-center justify-center py-1",r),...s,children:(0,a.jsx)(o.Mtm,{})})});u.displayName=n.PP.displayName;let p=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.wn,{ref:t,className:(0,d.cn)("flex cursor-default items-center justify-center py-1",r),...s,children:(0,a.jsx)(o.D3D,{})})});p.displayName=n.wn.displayName;let m=s.forwardRef((e,t)=>{let{className:r,children:s,position:o="popper",...i}=e;return(0,a.jsx)(n.ZL,{children:(0,a.jsxs)(n.UC,{ref:t,className:(0,d.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===o&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",r),position:o,...i,children:[(0,a.jsx)(u,{}),(0,a.jsx)(n.LM,{className:(0,d.cn)("p-1","popper"===o&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:s}),(0,a.jsx)(p,{})]})})});m.displayName=n.UC.displayName;let h=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.JU,{ref:t,className:(0,d.cn)("px-2 py-1.5 text-sm font-semibold",r),...s})});h.displayName=n.JU.displayName;let x=s.forwardRef((e,t)=>{let{className:r,children:s,...i}=e;return(0,a.jsxs)(n.q7,{ref:t,className:(0,d.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r),...i,children:[(0,a.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,a.jsx)(n.VF,{children:(0,a.jsx)(o.Srz,{className:"h-4 w-4"})})}),(0,a.jsx)(n.p4,{children:s})]})});x.displayName=n.q7.displayName,s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.wv,{ref:t,className:(0,d.cn)("-mx-1 my-1 h-px bg-muted",r),...s})}).displayName=n.wv.displayName},76554:(e,t,r)=>{r.d(t,{w:()=>d});var a=r(20475),s=r(20107),o=r(78190),n=r(22250);let d=s.forwardRef((e,t)=>{let{className:r,orientation:s="horizontal",decorative:d=!0,...i}=e;return(0,a.jsx)(o.b,{ref:t,decorative:d,orientation:s,className:(0,n.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",r),...i})});d.displayName=o.b.displayName},32857:(e,t,r)=>{r.d(t,{dj:()=>u,oR:()=>f});var a=r(20107);let s=0,o=new Map,n=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},d=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?n(r):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},i=[],l={toasts:[]};function c(e){l=d(l,e),i.forEach(e=>{e(l)})}function f(e){let{...t}=e,r=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||a()}}}),{id:r,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function u(){let[e,t]=a.useState(l);return a.useEffect(()=>(i.push(t),()=>{let e=i.indexOf(t);e>-1&&i.splice(e,1)}),[e]),{...e,toast:f,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{r.d(t,{cn:()=>o});var a=r(64901),s=r(868);function o(){for(var e=arguments.length,t=Array(e),r=0;r{r.d(t,{A:()=>i});var a=r(20107);let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),o=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let d=(0,a.forwardRef)((e,t)=>{let{color:r="currentColor",size:s=24,strokeWidth:d=2,absoluteStrokeWidth:i,className:l="",children:c,iconNode:f,...u}=e;return(0,a.createElement)("svg",{ref:t,...n,width:s,height:s,stroke:r,strokeWidth:i?24*Number(d)/Number(s):d,className:o("lucide",l),...u},[...f.map(e=>{let[t,r]=e;return(0,a.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),i=(e,t)=>{let r=(0,a.forwardRef)((r,n)=>{let{className:i,...l}=r;return(0,a.createElement)(d,{ref:n,iconNode:t,className:o("lucide-".concat(s(e)),i),...l})});return r.displayName="".concat(e),r}},52161:(e,t,r)=>{r.d(t,{A:()=>a});let a=(0,r(39997).A)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},78190:(e,t,r)=>{r.d(t,{b:()=>l});var a=r(20107),s=r(4589),o=r(20475),n="horizontal",d=["horizontal","vertical"],i=a.forwardRef((e,t)=>{let{decorative:r,orientation:a=n,...i}=e,l=d.includes(a)?a:n;return(0,o.jsx)(s.sG.div,{"data-orientation":l,...r?{role:"none"}:{"aria-orientation":"vertical"===l?l:void 0,role:"separator"},...i,ref:t})});i.displayName="Separator";var l=i}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/7780-304b82dcfd6e5323.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/7780-304b82dcfd6e5323.js deleted file mode 100644 index bd29405..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/7780-304b82dcfd6e5323.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7780],{74111:(e,r,o)=>{o.d(r,{s:()=>l,t:()=>n});var t=o(20107);function n(...e){return r=>e.forEach(e=>{"function"==typeof e?e(r):null!=e&&(e.current=r)})}function l(...e){return t.useCallback(n(...e),e)}},61837:(e,r,o)=>{o.d(r,{DX:()=>s,xV:()=>i});var t=o(20107),n=o(74111),l=o(20475),s=t.forwardRef((e,r)=>{let{children:o,...n}=e,s=t.Children.toArray(o),i=s.find(d);if(i){let e=i.props.children,o=s.map(r=>r!==i?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,l.jsx)(a,{...n,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,o):null})}return(0,l.jsx)(a,{...n,ref:r,children:o})});s.displayName="Slot";var a=t.forwardRef((e,r)=>{let{children:o,...l}=e;if(t.isValidElement(o)){let e=function(e){let r=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=Object.getOwnPropertyDescriptor(e,"ref")?.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(o);return t.cloneElement(o,{...function(e,r){let o={...r};for(let t in r){let n=e[t],l=r[t];/^on[A-Z]/.test(t)?n&&l?o[t]=(...e)=>{l(...e),n(...e)}:n&&(o[t]=n):"style"===t?o[t]={...n,...l}:"className"===t&&(o[t]=[n,l].filter(Boolean).join(" "))}return{...e,...o}}(l,o.props),ref:r?(0,n.t)(r,e):e})}return t.Children.count(o)>1?t.Children.only(null):null});a.displayName="SlotClone";var i=({children:e})=>(0,l.jsx)(l.Fragment,{children:e});function d(e){return t.isValidElement(e)&&e.type===i}},64901:(e,r,o)=>{function t(){for(var e,r,o=0,t="",n=arguments.length;ot,A:()=>n});let n=t},868:(e,r,o)=>{o.d(r,{QP:()=>J});let t=e=>{let r=a(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:t}=e;return{getClassGroupId:e=>{let o=e.split("-");return""===o[0]&&1!==o.length&&o.shift(),n(o,r)||s(e)},getConflictingClassGroupIds:(e,r)=>{let n=o[e]||[];return r&&t[e]?[...n,...t[e]]:n}}},n=(e,r)=>{if(0===e.length)return r.classGroupId;let o=e[0],t=r.nextPart.get(o),l=t?n(e.slice(1),t):void 0;if(l)return l;if(0===r.validators.length)return;let s=e.join("-");return r.validators.find(({validator:e})=>e(s))?.classGroupId},l=/^\[(.+)\]$/,s=e=>{if(l.test(e)){let r=l.exec(e)[1],o=r?.substring(0,r.indexOf(":"));if(o)return"arbitrary.."+o}},a=e=>{let{theme:r,prefix:o}=e,t={nextPart:new Map,validators:[]};return p(Object.entries(e.classGroups),o).forEach(([e,o])=>{i(o,t,e,r)}),t},i=(e,r,o,t)=>{e.forEach(e=>{if("string"==typeof e){(""===e?r:d(r,e)).classGroupId=o;return}if("function"==typeof e){if(c(e)){i(e(t),r,o,t);return}r.validators.push({validator:e,classGroupId:o});return}Object.entries(e).forEach(([e,n])=>{i(n,d(r,e),o,t)})})},d=(e,r)=>{let o=e;return r.split("-").forEach(e=>{o.nextPart.has(e)||o.nextPart.set(e,{nextPart:new Map,validators:[]}),o=o.nextPart.get(e)}),o},c=e=>e.isThemeGetter,p=(e,r)=>r?e.map(([e,o])=>[e,o.map(e=>"string"==typeof e?r+e:"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,o])=>[r+e,o])):e)]):e,u=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,o=new Map,t=new Map,n=(n,l)=>{o.set(n,l),++r>e&&(r=0,t=o,o=new Map)};return{get(e){let r=o.get(e);return void 0!==r?r:void 0!==(r=t.get(e))?(n(e,r),r):void 0},set(e,r){o.has(e)?o.set(e,r):n(e,r)}}},b=e=>{let{separator:r,experimentalParseClassName:o}=e,t=1===r.length,n=r[0],l=r.length,s=e=>{let o;let s=[],a=0,i=0;for(let d=0;di?o-i:void 0}};return o?e=>o({className:e,parseClassName:s}):s},f=e=>{if(e.length<=1)return e;let r=[],o=[];return e.forEach(e=>{"["===e[0]?(r.push(...o.sort(),e),o=[]):o.push(e)}),r.push(...o.sort()),r},m=e=>({cache:u(e.cacheSize),parseClassName:b(e),...t(e)}),g=/\s+/,h=(e,r)=>{let{parseClassName:o,getClassGroupId:t,getConflictingClassGroupIds:n}=r,l=[],s=e.trim().split(g),a="";for(let e=s.length-1;e>=0;e-=1){let r=s[e],{modifiers:i,hasImportantModifier:d,baseClassName:c,maybePostfixModifierPosition:p}=o(r),u=!!p,b=t(u?c.substring(0,p):c);if(!b){if(!u||!(b=t(c))){a=r+(a.length>0?" "+a:a);continue}u=!1}let m=f(i).join(":"),g=d?m+"!":m,h=g+b;if(l.includes(h))continue;l.push(h);let y=n(b,u);for(let e=0;e0?" "+a:a)}return a};function y(){let e,r,o=0,t="";for(;o{let r;if("string"==typeof e)return e;let o="";for(let t=0;t{let r=r=>r[e]||[];return r.isThemeGetter=!0,r},w=/^\[(?:([a-z-]+):)?(.+)\]$/i,k=/^\d+\/\d+$/,z=new Set(["px","full","screen"]),j=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,C=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,E=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,S=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,P=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,N=e=>R(e)||z.has(e)||k.test(e),G=e=>F(e,"length",Q),R=e=>!!e&&!Number.isNaN(Number(e)),O=e=>F(e,"number",R),W=e=>!!e&&Number.isInteger(Number(e)),$=e=>e.endsWith("%")&&R(e.slice(0,-1)),M=e=>w.test(e),I=e=>j.test(e),_=new Set(["length","size","percentage"]),A=e=>F(e,_,X),V=e=>F(e,"position",X),D=new Set(["image","url"]),T=e=>F(e,D,H),q=e=>F(e,"",Z),B=()=>!0,F=(e,r,o)=>{let t=w.exec(e);return!!t&&(t[1]?"string"==typeof r?t[1]===r:r.has(t[1]):o(t[2]))},Q=e=>C.test(e)&&!E.test(e),X=()=>!1,Z=e=>S.test(e),H=e=>P.test(e);Symbol.toStringTag;let J=function(e,...r){let o,t,n;let l=function(a){return t=(o=m(r.reduce((e,r)=>r(e),e()))).cache.get,n=o.cache.set,l=s,s(a)};function s(e){let r=t(e);if(r)return r;let l=h(e,o);return n(e,l),l}return function(){return l(y.apply(null,arguments))}}(()=>{let e=v("colors"),r=v("spacing"),o=v("blur"),t=v("brightness"),n=v("borderColor"),l=v("borderRadius"),s=v("borderSpacing"),a=v("borderWidth"),i=v("contrast"),d=v("grayscale"),c=v("hueRotate"),p=v("invert"),u=v("gap"),b=v("gradientColorStops"),f=v("gradientColorStopPositions"),m=v("inset"),g=v("margin"),h=v("opacity"),y=v("padding"),x=v("saturate"),w=v("scale"),k=v("sepia"),z=v("skew"),j=v("space"),C=v("translate"),E=()=>["auto","contain","none"],S=()=>["auto","hidden","clip","visible","scroll"],P=()=>["auto",M,r],_=()=>[M,r],D=()=>["",N,G],F=()=>["auto",R,M],Q=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],X=()=>["solid","dashed","dotted","double","none"],Z=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],H=()=>["start","end","center","between","around","evenly","stretch"],J=()=>["","0",M],K=()=>["auto","avoid","all","avoid-page","page","left","right","column"],L=()=>[R,M];return{cacheSize:500,separator:":",theme:{colors:[B],spacing:[N,G],blur:["none","",I,M],brightness:L(),borderColor:[e],borderRadius:["none","","full",I,M],borderSpacing:_(),borderWidth:D(),contrast:L(),grayscale:J(),hueRotate:L(),invert:J(),gap:_(),gradientColorStops:[e],gradientColorStopPositions:[$,G],inset:P(),margin:P(),opacity:L(),padding:_(),saturate:L(),scale:L(),sepia:J(),skew:L(),space:_(),translate:_()},classGroups:{aspect:[{aspect:["auto","square","video",M]}],container:["container"],columns:[{columns:[I]}],"break-after":[{"break-after":K()}],"break-before":[{"break-before":K()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Q(),M]}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:E()}],"overscroll-x":[{"overscroll-x":E()}],"overscroll-y":[{"overscroll-y":E()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[m]}],"inset-x":[{"inset-x":[m]}],"inset-y":[{"inset-y":[m]}],start:[{start:[m]}],end:[{end:[m]}],top:[{top:[m]}],right:[{right:[m]}],bottom:[{bottom:[m]}],left:[{left:[m]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",W,M]}],basis:[{basis:P()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",M]}],grow:[{grow:J()}],shrink:[{shrink:J()}],order:[{order:["first","last","none",W,M]}],"grid-cols":[{"grid-cols":[B]}],"col-start-end":[{col:["auto",{span:["full",W,M]},M]}],"col-start":[{"col-start":F()}],"col-end":[{"col-end":F()}],"grid-rows":[{"grid-rows":[B]}],"row-start-end":[{row:["auto",{span:[W,M]},M]}],"row-start":[{"row-start":F()}],"row-end":[{"row-end":F()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",M]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",M]}],gap:[{gap:[u]}],"gap-x":[{"gap-x":[u]}],"gap-y":[{"gap-y":[u]}],"justify-content":[{justify:["normal",...H()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...H(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...H(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[y]}],px:[{px:[y]}],py:[{py:[y]}],ps:[{ps:[y]}],pe:[{pe:[y]}],pt:[{pt:[y]}],pr:[{pr:[y]}],pb:[{pb:[y]}],pl:[{pl:[y]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[j]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[j]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",M,r]}],"min-w":[{"min-w":[M,r,"min","max","fit"]}],"max-w":[{"max-w":[M,r,"none","full","min","max","fit","prose",{screen:[I]},I]}],h:[{h:[M,r,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[M,r,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[M,r,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[M,r,"auto","min","max","fit"]}],"font-size":[{text:["base",I,G]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",O]}],"font-family":[{font:[B]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",M]}],"line-clamp":[{"line-clamp":["none",R,O]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",N,M]}],"list-image":[{"list-image":["none",M]}],"list-style-type":[{list:["none","disc","decimal",M]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[h]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[h]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...X(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",N,G]}],"underline-offset":[{"underline-offset":["auto",N,M]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:_()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",M]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",M]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[h]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Q(),V]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",A]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},T]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[f]}],"gradient-via-pos":[{via:[f]}],"gradient-to-pos":[{to:[f]}],"gradient-from":[{from:[b]}],"gradient-via":[{via:[b]}],"gradient-to":[{to:[b]}],rounded:[{rounded:[l]}],"rounded-s":[{"rounded-s":[l]}],"rounded-e":[{"rounded-e":[l]}],"rounded-t":[{"rounded-t":[l]}],"rounded-r":[{"rounded-r":[l]}],"rounded-b":[{"rounded-b":[l]}],"rounded-l":[{"rounded-l":[l]}],"rounded-ss":[{"rounded-ss":[l]}],"rounded-se":[{"rounded-se":[l]}],"rounded-ee":[{"rounded-ee":[l]}],"rounded-es":[{"rounded-es":[l]}],"rounded-tl":[{"rounded-tl":[l]}],"rounded-tr":[{"rounded-tr":[l]}],"rounded-br":[{"rounded-br":[l]}],"rounded-bl":[{"rounded-bl":[l]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[h]}],"border-style":[{border:[...X(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[h]}],"divide-style":[{divide:X()}],"border-color":[{border:[n]}],"border-color-x":[{"border-x":[n]}],"border-color-y":[{"border-y":[n]}],"border-color-s":[{"border-s":[n]}],"border-color-e":[{"border-e":[n]}],"border-color-t":[{"border-t":[n]}],"border-color-r":[{"border-r":[n]}],"border-color-b":[{"border-b":[n]}],"border-color-l":[{"border-l":[n]}],"divide-color":[{divide:[n]}],"outline-style":[{outline:["",...X()]}],"outline-offset":[{"outline-offset":[N,M]}],"outline-w":[{outline:[N,G]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:D()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[h]}],"ring-offset-w":[{"ring-offset":[N,G]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",I,q]}],"shadow-color":[{shadow:[B]}],opacity:[{opacity:[h]}],"mix-blend":[{"mix-blend":[...Z(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":Z()}],filter:[{filter:["","none"]}],blur:[{blur:[o]}],brightness:[{brightness:[t]}],contrast:[{contrast:[i]}],"drop-shadow":[{"drop-shadow":["","none",I,M]}],grayscale:[{grayscale:[d]}],"hue-rotate":[{"hue-rotate":[c]}],invert:[{invert:[p]}],saturate:[{saturate:[x]}],sepia:[{sepia:[k]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[o]}],"backdrop-brightness":[{"backdrop-brightness":[t]}],"backdrop-contrast":[{"backdrop-contrast":[i]}],"backdrop-grayscale":[{"backdrop-grayscale":[d]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[c]}],"backdrop-invert":[{"backdrop-invert":[p]}],"backdrop-opacity":[{"backdrop-opacity":[h]}],"backdrop-saturate":[{"backdrop-saturate":[x]}],"backdrop-sepia":[{"backdrop-sepia":[k]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[s]}],"border-spacing-x":[{"border-spacing-x":[s]}],"border-spacing-y":[{"border-spacing-y":[s]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",M]}],duration:[{duration:L()}],ease:[{ease:["linear","in","out","in-out",M]}],delay:[{delay:L()}],animate:[{animate:["none","spin","ping","pulse","bounce",M]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[w]}],"scale-x":[{"scale-x":[w]}],"scale-y":[{"scale-y":[w]}],rotate:[{rotate:[W,M]}],"translate-x":[{"translate-x":[C]}],"translate-y":[{"translate-y":[C]}],"skew-x":[{"skew-x":[z]}],"skew-y":[{"skew-y":[z]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",M]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",M]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":_()}],"scroll-mx":[{"scroll-mx":_()}],"scroll-my":[{"scroll-my":_()}],"scroll-ms":[{"scroll-ms":_()}],"scroll-me":[{"scroll-me":_()}],"scroll-mt":[{"scroll-mt":_()}],"scroll-mr":[{"scroll-mr":_()}],"scroll-mb":[{"scroll-mb":_()}],"scroll-ml":[{"scroll-ml":_()}],"scroll-p":[{"scroll-p":_()}],"scroll-px":[{"scroll-px":_()}],"scroll-py":[{"scroll-py":_()}],"scroll-ps":[{"scroll-ps":_()}],"scroll-pe":[{"scroll-pe":_()}],"scroll-pt":[{"scroll-pt":_()}],"scroll-pr":[{"scroll-pr":_()}],"scroll-pb":[{"scroll-pb":_()}],"scroll-pl":[{"scroll-pl":_()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",M]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[N,G,O]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}})}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9107-369a762e6832fbc4.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9107-369a762e6832fbc4.js deleted file mode 100644 index f56ec3a..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9107-369a762e6832fbc4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9107],{39997:(t,e,n)=>{n.d(e,{A:()=>c});var r=n(20107);let a=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),o=function(){for(var t=arguments.length,e=Array(t),n=0;n!!t&&n.indexOf(t)===e).join(" ")};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,r.forwardRef)((t,e)=>{let{color:n="currentColor",size:a=24,strokeWidth:l=2,absoluteStrokeWidth:c,className:u="",children:s,iconNode:d,...f}=t;return(0,r.createElement)("svg",{ref:e,...i,width:a,height:a,stroke:n,strokeWidth:c?24*Number(l)/Number(a):l,className:o("lucide",u),...f},[...d.map(t=>{let[e,n]=t;return(0,r.createElement)(e,n)}),...Array.isArray(s)?s:[s]])}),c=(t,e)=>{let n=(0,r.forwardRef)((n,i)=>{let{className:c,...u}=n;return(0,r.createElement)(l,{ref:i,iconNode:e,className:o("lucide-".concat(a(t)),c),...u})});return n.displayName="".concat(t),n}},17799:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},89463:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("CircleArrowDown",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 8v8",key:"napkw2"}],["path",{d:"m8 12 4 4 4-4",key:"k98ssh"}]])},622:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("CircleArrowUp",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 12-4-4-4 4",key:"177agl"}],["path",{d:"M12 16V8",key:"1sbj14"}]])},98969:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},14389:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("CirclePlay",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polygon",{points:"10 8 16 12 10 16 10 8",key:"1cimsy"}]])},8782:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},10964:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("Gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]])},99312:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("Link",[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]])},7778:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]])},25262:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]])},97801:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},90304:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("TrendingDown",[["polyline",{points:"22 17 13.5 8.5 8.5 13.5 2 7",key:"1r2t7k"}],["polyline",{points:"16 17 22 17 22 11",key:"11uiuu"}]])},20633:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]])},12607:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},92823:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(39997).A)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},43719:function(t,e,n){var r=this&&this.__assign||function(){return(r=Object.assign||function(t){for(var e,n=1,r=arguments.length;ne.indexOf(r)&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(t);ae.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n};Object.defineProperty(e,"__esModule",{value:!0});var c=i(n(20107)),u=n(14563),s=n(38907),d=[(0,s.createAnimation)("PropagateLoader","25% {transform: translateX(-".concat(1,"rem) scale(0.75)}\n 50% {transform: translateX(-").concat(3,"rem) scale(0.6)}\n 75% {transform: translateX(-").concat(5,"rem) scale(0.5)}\n 95% {transform: translateX(0rem) scale(1)}"),"propogate-0"),(0,s.createAnimation)("PropagateLoader","25% {transform: translateX(-".concat(1,"rem) scale(0.75)}\n 50% {transform: translateX(-").concat(3,"rem) scale(0.6)}\n 75% {transform: translateX(-").concat(3,"rem) scale(0.6)}\n 95% {transform: translateX(0rem) scale(1)}"),"propogate-1"),(0,s.createAnimation)("PropagateLoader","25% {transform: translateX(-".concat(1,"rem) scale(0.75)}\n 75% {transform: translateX(-").concat(1,"rem) scale(0.75)}\n 95% {transform: translateX(0rem) scale(1)}"),"propogate-2"),(0,s.createAnimation)("PropagateLoader","25% {transform: translateX(".concat(1,"rem) scale(0.75)}\n 75% {transform: translateX(").concat(1,"rem) scale(0.75)}\n 95% {transform: translateX(0rem) scale(1)}"),"propogate-3"),(0,s.createAnimation)("PropagateLoader","25% {transform: translateX(".concat(1,"rem) scale(0.75)}\n 50% {transform: translateX(").concat(3,"rem) scale(0.6)}\n 75% {transform: translateX(").concat(3,"rem) scale(0.6)}\n 95% {transform: translateX(0rem) scale(1)}"),"propogate-4"),(0,s.createAnimation)("PropagateLoader","25% {transform: translateX(".concat(1,"rem) scale(0.75)}\n 50% {transform: translateX(").concat(3,"rem) scale(0.6)}\n 75% {transform: translateX(").concat(5,"rem) scale(0.5)}\n 95% {transform: translateX(0rem) scale(1)}"),"propogate-5")];e.default=function(t){var e=t.loading,n=t.color,a=void 0===n?"#000000":n,o=t.speedMultiplier,i=void 0===o?1:o,s=t.cssOverride,f=t.size,p=l(t,["loading","color","speedMultiplier","cssOverride","size"]),m=(0,u.parseLengthAndUnit)(void 0===f?15:f),h=m.value,y=m.unit,v=r({display:"inherit",position:"relative"},void 0===s?{}:s),g=function(t){return{position:"absolute",fontSize:"".concat(h/3).concat(y),width:"".concat(h).concat(y),height:"".concat(h).concat(y),background:a,borderRadius:"50%",animation:"".concat(d[t]," ").concat(1.5/i,"s infinite"),animationFillMode:"forwards"}};return void 0===e||e?c.createElement("span",r({style:v},p),c.createElement("span",{style:g(0)}),c.createElement("span",{style:g(1)}),c.createElement("span",{style:g(2)}),c.createElement("span",{style:g(3)}),c.createElement("span",{style:g(4)}),c.createElement("span",{style:g(5)})):null}},90281:(t,e,n)=>{n.d(e,{A:()=>s});var r=n(20107),a={cm:!0,mm:!0,in:!0,px:!0,pt:!0,pc:!0,em:!0,ex:!0,ch:!0,rem:!0,vw:!0,vh:!0,vmin:!0,vmax:!0,"%":!0};function o(t){var e=function(t){if("number"==typeof t)return{value:t,unit:"px"};var e,n=(t.match(/^[0-9.]*/)||"").toString();e=n.includes(".")?parseFloat(n):parseInt(n,10);var r=(t.match(/[^0-9]*$/)||"").toString();return a[r]?{value:e,unit:r}:(console.warn("React Spinners: ".concat(t," is not a valid css value. Defaulting to ").concat(e,"px.")),{value:e,unit:"px"})}(t);return"".concat(e.value).concat(e.unit)}var i=function(t,e,n){var r="react-spinners-".concat(t,"-").concat(n);if("undefined"==typeof window||!window.document)return r;var a=document.createElement("style");document.head.appendChild(a);var o=a.sheet,i="\n @keyframes ".concat(r," {\n ").concat(e,"\n }\n ");return o&&o.insertRule(i,0),r},l=function(){return(l=Object.assign||function(t){for(var e,n=1,r=arguments.length;ne.indexOf(r)&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var a=0,r=Object.getOwnPropertySymbols(t);ae.indexOf(r[a])&&Object.prototype.propertyIsEnumerable.call(t,r[a])&&(n[r[a]]=t[r[a]]);return n},u=[i("PuffLoader","0% {transform: scale(0)} 100% {transform: scale(1.0)}","puff-1"),i("PuffLoader","0% {opacity: 1} 100% {opacity: 0}","puff-2")];let s=function(t){var e=t.loading,n=t.color,a=void 0===n?"#000000":n,i=t.speedMultiplier,s=void 0===i?1:i,d=t.cssOverride,f=t.size,p=void 0===f?60:f,m=c(t,["loading","color","speedMultiplier","cssOverride","size"]),h=l({display:"inherit",position:"relative",width:o(p),height:o(p)},void 0===d?{}:d),y=function(t){return{position:"absolute",height:o(p),width:o(p),border:"thick solid ".concat(a),borderRadius:"50%",opacity:"1",top:"0",left:"0",animationFillMode:"both",animation:"".concat(u[0],", ").concat(u[1]),animationDuration:"".concat(2/s,"s"),animationIterationCount:"infinite",animationTimingFunction:"cubic-bezier(0.165, 0.84, 0.44, 1), cubic-bezier(0.3, 0.61, 0.355, 1)",animationDelay:1===t?"-1s":"0s"}};return void 0===e||e?r.createElement("span",l({style:h},m),r.createElement("span",{style:y(1)}),r.createElement("span",{style:y(2)})):null}},38907:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.createAnimation=void 0,e.createAnimation=function(t,e,n){var r="react-spinners-".concat(t,"-").concat(n);if("undefined"==typeof window||!window.document)return r;var a=document.createElement("style");document.head.appendChild(a);var o=a.sheet,i="\n @keyframes ".concat(r," {\n ").concat(e,"\n }\n ");return o&&o.insertRule(i,0),r}},14563:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.cssValue=e.parseLengthAndUnit=void 0;var n={cm:!0,mm:!0,in:!0,px:!0,pt:!0,pc:!0,em:!0,ex:!0,ch:!0,rem:!0,vw:!0,vh:!0,vmin:!0,vmax:!0,"%":!0};function r(t){if("number"==typeof t)return{value:t,unit:"px"};var e,r=(t.match(/^[0-9.]*/)||"").toString();e=r.includes(".")?parseFloat(r):parseInt(r,10);var a=(t.match(/[^0-9]*$/)||"").toString();return n[a]?{value:e,unit:a}:(console.warn("React Spinners: ".concat(t," is not a valid css value. Defaulting to ").concat(e,"px.")),{value:e,unit:"px"})}e.parseLengthAndUnit=r,e.cssValue=function(t){var e=r(t);return"".concat(e.value).concat(e.unit)}},94005:(t,e,n)=>{n.d(e,{d:()=>D});var r=n(20107),a=n(14632),o=n.n(a),i=n(42228),l=n(89952),c=n(61211),u=n(95492),s=n(62882),d=n(67064),f=n(25161),p=["x1","y1","x2","y2","key"],m=["offset"];function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)}return n}function v(t){for(var e=1;e=0)continue;n[r]=t[r]}return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}var b=function(t){var e=t.fill;if(!e||"none"===e)return null;var n=t.fillOpacity,a=t.x,o=t.y,i=t.width,l=t.height,c=t.ry;return r.createElement("rect",{x:a,y:o,ry:c,width:i,height:l,stroke:"none",fill:e,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function x(t,e){var n;if(r.isValidElement(t))n=r.cloneElement(t,e);else if(o()(t))n=t(e);else{var a=e.x1,i=e.y1,l=e.x2,u=e.y2,s=e.key,d=w(e,p),f=(0,c.J9)(d,!1),h=(f.offset,w(f,m));n=r.createElement("line",g({},h,{x1:a,y1:i,x2:l,y2:u,fill:"none",key:s}))}return n}function O(t){var e=t.x,n=t.width,a=t.horizontal,o=void 0===a||a,i=t.horizontalPoints;if(!o||!i||!i.length)return null;var l=i.map(function(r,a){return x(o,v(v({},t),{},{x1:e,y1:r,x2:e+n,y2:r,key:"line-".concat(a),index:a}))});return r.createElement("g",{className:"recharts-cartesian-grid-horizontal"},l)}function A(t){var e=t.y,n=t.height,a=t.vertical,o=void 0===a||a,i=t.verticalPoints;if(!o||!i||!i.length)return null;var l=i.map(function(r,a){return x(o,v(v({},t),{},{x1:r,y1:e,x2:r,y2:e+n,key:"line-".concat(a),index:a}))});return r.createElement("g",{className:"recharts-cartesian-grid-vertical"},l)}function E(t){var e=t.horizontalFill,n=t.fillOpacity,a=t.x,o=t.y,i=t.width,l=t.height,c=t.horizontalPoints,u=t.horizontal;if(!(void 0===u||u)||!e||!e.length)return null;var s=c.map(function(t){return Math.round(t+o-o)}).sort(function(t,e){return t-e});o!==s[0]&&s.unshift(0);var d=s.map(function(t,c){var u=s[c+1]?s[c+1]-t:o+l-t;if(u<=0)return null;var d=c%e.length;return r.createElement("rect",{key:"react-".concat(c),y:t,x:a,height:u,width:i,stroke:"none",fill:e[d],fillOpacity:n,className:"recharts-cartesian-grid-bg"})});return r.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},d)}function k(t){var e=t.vertical,n=t.verticalFill,a=t.fillOpacity,o=t.x,i=t.y,l=t.width,c=t.height,u=t.verticalPoints;if(!(void 0===e||e)||!n||!n.length)return null;var s=u.map(function(t){return Math.round(t+o-o)}).sort(function(t,e){return t-e});o!==s[0]&&s.unshift(0);var d=s.map(function(t,e){var u=s[e+1]?s[e+1]-t:o+l-t;if(u<=0)return null;var d=e%n.length;return r.createElement("rect",{key:"react-".concat(e),x:t,y:i,width:u,height:c,stroke:"none",fill:n[d],fillOpacity:a,className:"recharts-cartesian-grid-bg"})});return r.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},d)}var P=function(t,e){var n=t.xAxis,r=t.width,a=t.height,o=t.offset;return(0,u.PW)((0,s.f)(v(v(v({},d.u.defaultProps),n),{},{ticks:(0,u.Rh)(n,!0),viewBox:{x:0,y:0,width:r,height:a}})),o.left,o.left+o.width,e)},S=function(t,e){var n=t.yAxis,r=t.width,a=t.height,o=t.offset;return(0,u.PW)((0,s.f)(v(v(v({},d.u.defaultProps),n),{},{ticks:(0,u.Rh)(n,!0),viewBox:{x:0,y:0,width:r,height:a}})),o.top,o.top+o.height,e)},j={horizontal:!0,vertical:!0,stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[]};function D(t){var e,n,a,c,u,s,d=(0,f.yi)(),p=(0,f.rY)(),m=(0,f.hj)(),y=v(v({},t),{},{stroke:null!==(e=t.stroke)&&void 0!==e?e:j.stroke,fill:null!==(n=t.fill)&&void 0!==n?n:j.fill,horizontal:null!==(a=t.horizontal)&&void 0!==a?a:j.horizontal,horizontalFill:null!==(c=t.horizontalFill)&&void 0!==c?c:j.horizontalFill,vertical:null!==(u=t.vertical)&&void 0!==u?u:j.vertical,verticalFill:null!==(s=t.verticalFill)&&void 0!==s?s:j.verticalFill,x:(0,l.Et)(t.x)?t.x:m.left,y:(0,l.Et)(t.y)?t.y:m.top,width:(0,l.Et)(t.width)?t.width:m.width,height:(0,l.Et)(t.height)?t.height:m.height}),w=y.x,x=y.y,D=y.width,T=y.height,C=y.syncWithTicks,R=y.horizontalValues,M=y.verticalValues,N=(0,f.pj)(),L=(0,f.$G)();if(!(0,l.Et)(D)||D<=0||!(0,l.Et)(T)||T<=0||!(0,l.Et)(w)||w!==+w||!(0,l.Et)(x)||x!==+x)return null;var z=y.verticalCoordinatesGenerator||P,F=y.horizontalCoordinatesGenerator||S,I=y.horizontalPoints,B=y.verticalPoints;if((!I||!I.length)&&o()(F)){var W=R&&R.length,_=F({yAxis:L?v(v({},L),{},{ticks:W?R:L.ticks}):void 0,width:d,height:p,offset:m},!!W||C);(0,i.R)(Array.isArray(_),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(h(_),"]")),Array.isArray(_)&&(I=_)}if((!B||!B.length)&&o()(z)){var H=M&&M.length,X=z({xAxis:N?v(v({},N),{},{ticks:H?M:N.ticks}):void 0,width:d,height:p,offset:m},!!H||C);(0,i.R)(Array.isArray(X),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(h(X),"]")),Array.isArray(X)&&(B=X)}return r.createElement("g",{className:"recharts-cartesian-grid"},r.createElement(b,{fill:y.fill,fillOpacity:y.fillOpacity,x:y.x,y:y.y,width:y.width,height:y.height,ry:y.ry}),r.createElement(O,g({},y,{offset:m,horizontalPoints:I,xAxis:N,yAxis:L})),r.createElement(A,g({},y,{offset:m,verticalPoints:B,xAxis:N,yAxis:L})),r.createElement(E,g({},y,{horizontalPoints:I})),r.createElement(k,g({},y,{verticalPoints:B})))}D.displayName="CartesianGrid"},96399:(t,e,n)=>{n.d(e,{N:()=>z});var r=n(20107),a=n(54584),o=n(14632),i=n.n(o),l=n(87107),c=n.n(l),u=n(6440),s=n.n(u),d=n(64901),f=n(60992),p=n(42555),m=n(37819),h=n(58864),y=n(73678),v=n(89952),g=n(61211),w=n(95392),b=n(95492),x=["type","layout","connectNulls","ref"],O=["key"];function A(t){return(A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function E(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n={};for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){if(e.indexOf(r)>=0)continue;n[r]=t[r]}return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}function k(){return(k=Object.assign?Object.assign.bind():function(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,r=Array(e);nl){u=[].concat(j(r.slice(0,s)),[l-d]);break}var f=u.length%2==0?[0,c]:[c];return[].concat(j(o.repeat(r,i)),j(u),f).map(function(t){return"".concat(t,"px")}).join(", ")}),N(t,"id",(0,v.NF)("recharts-line-")),N(t,"pathRef",function(e){t.mainCurve=e}),N(t,"handleAnimationEnd",function(){t.setState({isAnimationFinished:!0}),t.props.onAnimationEnd&&t.props.onAnimationEnd()}),N(t,"handleAnimationStart",function(){t.setState({isAnimationFinished:!1}),t.props.onAnimationStart&&t.props.onAnimationStart()}),t}return!function(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&M(t,e)}(o,t),e=[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var t=this.getTotalLength();this.setState({totalLength:t})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var t=this.getTotalLength();t!==this.state.totalLength&&this.setState({totalLength:t})}}},{key:"getTotalLength",value:function(){var t=this.mainCurve;try{return t&&t.getTotalLength&&t.getTotalLength()||0}catch(t){return 0}}},{key:"renderErrorBar",value:function(t,e){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var n=this.props,a=n.points,o=n.xAxis,i=n.yAxis,l=n.layout,c=n.children,u=(0,g.aS)(c,y.u);if(!u)return null;var s=function(t,e){return{x:t.x,y:t.y,value:t.value,errorVal:(0,b.kr)(t.payload,e)}};return r.createElement(m.W,{clipPath:t?"url(#clipPath-".concat(e,")"):null},u.map(function(t){return r.cloneElement(t,{key:"bar-".concat(t.props.dataKey),data:a,xAxis:o,yAxis:i,layout:l,dataPointFormatter:s})}))}},{key:"renderDots",value:function(t,e,n){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var a=this.props,i=a.dot,l=a.points,c=a.dataKey,u=(0,g.J9)(this.props,!1),s=(0,g.J9)(i,!0),d=l.map(function(t,e){var n=S(S(S({key:"dot-".concat(e),r:3},u),s),{},{value:t.value,dataKey:c,cx:t.x,cy:t.y,index:e,payload:t.payload});return o.renderDotItem(i,n)}),f={clipPath:t?"url(#clipPath-".concat(e?"":"dots-").concat(n,")"):null};return r.createElement(m.W,k({className:"recharts-line-dots",key:"dots"},f),d)}},{key:"renderCurveStatically",value:function(t,e,n,a){var o=this.props,i=o.type,l=o.layout,c=o.connectNulls,u=(o.ref,E(o,x)),s=S(S(S({},(0,g.J9)(u,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:e?"url(#clipPath-".concat(n,")"):null,points:t},a),{},{type:i,layout:l,connectNulls:c});return r.createElement(f.I,k({},s,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(t,e){var n=this,o=this.props,i=o.points,l=o.strokeDasharray,c=o.isAnimationActive,u=o.animationBegin,s=o.animationDuration,d=o.animationEasing,f=o.animationId,p=o.animateNewValues,m=o.width,h=o.height,y=this.state,g=y.prevPoints,w=y.totalLength;return r.createElement(a.Ay,{begin:u,duration:s,isActive:c,easing:d,from:{t:0},to:{t:1},key:"line-".concat(f),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(r){var a,o=r.t;if(g){var c=g.length/i.length,u=i.map(function(t,e){var n=Math.floor(e*c);if(g[n]){var r=g[n],a=(0,v.Dj)(r.x,t.x),i=(0,v.Dj)(r.y,t.y);return S(S({},t),{},{x:a(o),y:i(o)})}if(p){var l=(0,v.Dj)(2*m,t.x),u=(0,v.Dj)(h/2,t.y);return S(S({},t),{},{x:l(o),y:u(o)})}return S(S({},t),{},{x:t.x,y:t.y})});return n.renderCurveStatically(u,t,e)}var s=(0,v.Dj)(0,w)(o);if(l){var d="".concat(l).split(/[,\s]+/gim).map(function(t){return parseFloat(t)});a=n.getStrokeDasharray(s,w,d)}else a=n.generateSimpleStrokeDasharray(w,s);return n.renderCurveStatically(i,t,e,{strokeDasharray:a})})}},{key:"renderCurve",value:function(t,e){var n=this.props,r=n.points,a=n.isAnimationActive,o=this.state,i=o.prevPoints,l=o.totalLength;return a&&r&&r.length&&(!i&&l>0||!s()(i,r))?this.renderCurveWithAnimation(t,e):this.renderCurveStatically(r,t,e)}},{key:"render",value:function(){var t,e=this.props,n=e.hide,a=e.dot,o=e.points,i=e.className,l=e.xAxis,u=e.yAxis,s=e.top,f=e.left,p=e.width,y=e.height,v=e.isAnimationActive,w=e.id;if(n||!o||!o.length)return null;var b=this.state.isAnimationFinished,x=1===o.length,O=(0,d.A)("recharts-line",i),A=l&&l.allowDataOverflow,E=u&&u.allowDataOverflow,k=A||E,P=c()(w)?this.id:w,S=null!==(t=(0,g.J9)(a,!1))&&void 0!==t?t:{r:3,strokeWidth:2},j=S.r,D=S.strokeWidth,T=((0,g.sT)(a)?a:{}).clipDot,C=void 0===T||T,R=2*(void 0===j?3:j)+(void 0===D?2:D);return r.createElement(m.W,{className:O},A||E?r.createElement("defs",null,r.createElement("clipPath",{id:"clipPath-".concat(P)},r.createElement("rect",{x:A?f:f-p/2,y:E?s:s-y/2,width:A?p:2*p,height:E?y:2*y})),!C&&r.createElement("clipPath",{id:"clipPath-dots-".concat(P)},r.createElement("rect",{x:f-R/2,y:s-R/2,width:p+R,height:y+R}))):null,!x&&this.renderCurve(k,P),this.renderErrorBar(k,P),(x||a)&&this.renderDots(k,C,P),(!v||b)&&h.Z.renderCallByParent(this.props,o))}}],n=[{key:"getDerivedStateFromProps",value:function(t,e){return t.animationId!==e.prevAnimationId?{prevAnimationId:t.animationId,curPoints:t.points,prevPoints:e.curPoints}:t.points!==e.curPoints?{curPoints:t.points}:null}},{key:"repeat",value:function(t,e){for(var n=t.length%2!=0?[].concat(j(t),[0]):t,r=[],a=0;a{n.d(e,{b:()=>c});var r=n(90805),a=n(96399),o=n(4538),i=n(41797),l=n(98456),c=(0,r.gu)({chartName:"LineChart",GraphicalChild:a.N,axisComponents:[{axisType:"xAxis",AxisComp:o.W},{axisType:"yAxis",AxisComp:i.h}],formatAxisMap:l.pr})},74043:(t,e,n)=>{n.d(e,{A:()=>k});var r=n(20107);function a(t){return"[object Object]"===Object.prototype.toString.call(t)||Array.isArray(t)}function o(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&JSON.stringify(Object.keys(t.breakpoints||{}))===JSON.stringify(Object.keys(e.breakpoints||{}))&&n.every(n=>{let r=t[n],i=e[n];return"function"==typeof r?`${r}`==`${i}`:a(r)&&a(i)?o(r,i):r===i})}function i(t){return t.concat().sort((t,e)=>t.name>e.name?1:-1).map(t=>t.options)}function l(t){return"number"==typeof t}function c(t){return"string"==typeof t}function u(t){return"boolean"==typeof t}function s(t){return"[object Object]"===Object.prototype.toString.call(t)}function d(t){return Math.abs(t)}function f(t){return Math.sign(t)}function p(t){return v(t).map(Number)}function m(t){return t[h(t)]}function h(t){return Math.max(0,t.length-1)}function y(t,e=0){return Array.from(Array(t),(t,n)=>e+n)}function v(t){return Object.keys(t)}function g(t,e){return void 0!==e.MouseEvent&&t instanceof e.MouseEvent}function w(){let t=[],e={add:function(n,r,a,o={passive:!0}){let i;return"addEventListener"in n?(n.addEventListener(r,a,o),i=()=>n.removeEventListener(r,a,o)):(n.addListener(a),i=()=>n.removeListener(a)),t.push(i),e},clear:function(){t=t.filter(t=>t())}};return e}function b(t=0,e=0){let n=d(t-e);function r(n){return ne}return{length:n,max:e,min:t,constrain:function(n){return r(n)?ne},reachedMin:function(e){return e(v(n).forEach(r=>{let a=e[r],o=n[r],i=s(a)&&s(o);e[r]=i?t(a,o):o}),e),{})}(t,e||{})}return{mergeOptions:e,optionsAtMedia:function(n){let r=n.breakpoints||{},a=v(r).filter(e=>t.matchMedia(e).matches).map(t=>r[t]).reduce((t,n)=>e(t,n),{});return e(n,a)},optionsMediaQueries:function(e){return e.map(t=>v(t.breakpoints||{})).reduce((t,e)=>t.concat(e),[]).map(t.matchMedia)}}}(S),D=(k=[],{init:function(t,e){return(k=e.filter(({options:t})=>!1!==j.optionsAtMedia(t).active)).forEach(e=>e.init(t,j)),e.reduce((t,e)=>Object.assign(t,{[e.name]:e}),{})},destroy:function(){k=k.filter(t=>t.destroy())}}),T=w(),C=function(){let t,e={},n={init:function(e){t=e},emit:function(r){return(e[r]||[]).forEach(e=>e(t,r)),n},off:function(t,r){return e[t]=(e[t]||[]).filter(t=>t!==r),n},on:function(t,r){return e[t]=(e[t]||[]).concat([r]),n},clear:function(){e={}}};return n}(),{mergeOptions:R,optionsAtMedia:M,optionsMediaQueries:N}=j,{on:L,off:z,emit:F}=C,I=!1,B=R(A,E.globalOptions),W=R(B),_=[];function H(e,n){!I&&(W=M(B=R(B,e)),_=n||_,function(){let{container:e,slides:n}=W;o=(c(e)?t.querySelector(e):e)||t.children[0];let r=c(n)?o.querySelectorAll(n):n;i=[].slice.call(r||o.children)}(),r=function e(n){let r=function(t,e,n,r,a,o,i){let s,A;let{align:E,axis:k,direction:P,startIndex:S,loop:j,duration:D,dragFree:T,dragThreshold:C,inViewThreshold:R,slidesToScroll:M,skipSnaps:N,containScroll:L,watchResize:z,watchSlides:F,watchDrag:I,watchFocus:B}=o,W={measure:function(t){let{offsetTop:e,offsetLeft:n,offsetWidth:r,offsetHeight:a}=t;return{top:e,right:n+r,bottom:e+a,left:n,width:r,height:a}}},_=W.measure(e),H=n.map(W.measure),X=function(t,e){let n="rtl"===e,r="y"===t,a=!r&&n?-1:1;return{scroll:r?"y":"x",cross:r?"x":"y",startEdge:r?"top":n?"right":"left",endEdge:r?"bottom":n?"left":"right",measureSize:function(t){let{height:e,width:n}=t;return r?e:n},direction:function(t){return t*a}}}(k,P),U=X.measureSize(_),q={measure:function(t){return t/100*U}},V=function(t,e){let n={start:function(){return 0},center:function(t){return(e-t)/2},end:function(t){return e-t}};return{measure:function(r,a){return c(t)?n[t](r):t(e,r,a)}}}(E,U),Y=!j&&!!L,{slideSizes:$,slideSizesWithGaps:G,startGap:J,endGap:K}=function(t,e,n,r,a,o){let{measureSize:i,startEdge:l,endEdge:c}=t,u=n[0]&&a,s=function(){if(!u)return 0;let t=n[0];return d(e[l]-t[l])}(),f=u?parseFloat(o.getComputedStyle(m(r)).getPropertyValue(`margin-${c}`)):0,p=n.map(i),y=n.map((t,e,n)=>{let r=e===h(n);return e?r?p[e]+f:n[e+1][l]-t[l]:p[e]+s}).map(d);return{slideSizes:p,slideSizesWithGaps:y,startGap:s,endGap:f}}(X,_,H,n,j||!!L,a),Z=function(t,e,n,r,a,o,i,c,u){let{startEdge:s,endEdge:f,direction:y}=t,v=l(n);return{groupSlides:function(t){return v?p(t).filter(t=>t%n==0).map(e=>t.slice(e,e+n)):t.length?p(t).reduce((n,l,u)=>{let p=m(n)||0,v=l===h(t),g=a[s]-o[p][s],w=a[s]-o[l][f],b=r||0!==p?0:y(i),x=d(w-(!r&&v?y(c):0)-(g+b));return u&&x>e+2&&n.push(l),v&&n.push(t.length),n},[]).map((e,n,r)=>{let a=Math.max(r[n-1]||0);return t.slice(a,e)}):[]}}}(X,U,M,j,_,H,J,K,0),{snaps:Q,snapsAligned:tt}=function(t,e,n,r,a){let{startEdge:o,endEdge:i}=t,{groupSlides:l}=a,c=l(r).map(t=>m(t)[i]-t[0][o]).map(d).map(e.measure),u=r.map(t=>n[o]-t[o]).map(t=>-d(t)),s=l(u).map(t=>t[0]).map((t,e)=>t+c[e]);return{snaps:u,snapsAligned:s}}(X,V,_,H,Z),te=-m(Q)+m(G),{snapsContained:tn,scrollContainLimit:tr}=function(t,e,n,r,a){let o=b(-e+t,0),i=n.map((t,e)=>{let{min:r,max:a}=o,i=o.constrain(t),l=e===h(n);return e?l||1>d(r-i)?r:1>d(a-i)?a:i:a}).map(t=>parseFloat(t.toFixed(3))),l=function(){let t=i[0],e=m(i);return b(i.lastIndexOf(t),i.indexOf(e)+1)}();return{snapsContained:function(){if(e<=t+2)return[o.max];if("keepSnaps"===r)return i;let{min:n,max:a}=l;return i.slice(n,a)}(),scrollContainLimit:l}}(U,te,tt,L,0),ta=Y?tn:tt,{limit:to}=function(t,e,n){let r=e[0];return{limit:b(n?r-t:m(e),r)}}(te,ta,j),ti=function t(e,n,r){let{constrain:a}=b(0,e),o=e+1,i=l(n);function l(t){return r?d((o+t)%o):a(t)}function c(){return t(e,i,r)}let u={get:function(){return i},set:function(t){return i=l(t),u},add:function(t){return c().set(i+t)},clone:c};return u}(h(ta),S,j),tl=ti.clone(),tc=p(n),tu=({dragHandler:t,scrollBody:e,scrollBounds:n,options:{loop:r}},a)=>{r||n.constrain(t.pointerDown()),e.seek(a)},ts=({scrollBody:t,translate:e,location:n,offsetLocation:r,scrollLooper:a,slideLooper:o,dragHandler:i,animation:l,eventHandler:c,scrollBounds:u,options:{loop:s}},d)=>{let f=t.settled(),p=!u.shouldConstrain(),m=s?f:f&&p;m&&!i.pointerDown()&&(l.stop(),c.emit("settle")),m||c.emit("scroll");let h=n.get()*d+tm.get()*(1-d);r.set(h),s&&(a.loop(t.direction()),o.loop()),e.to(r.get())},td=function(t,e,n,r){let a=w(),o=1e3/60,i=null,l=0,c=0;function u(t){if(!c)return;i||(i=t);let a=t-i;for(i=t,l+=a;l>=o;)n(o),l-=o;r(l/o),c&&e.requestAnimationFrame(u)}function s(){e.cancelAnimationFrame(c),i=null,l=0,c=0}return{init:function(){a.add(t,"visibilitychange",()=>{t.hidden&&(i=null,l=0)})},destroy:function(){s(),a.clear()},start:function(){c||(c=e.requestAnimationFrame(u))},stop:s,update:()=>n(o),render:r}}(r,a,t=>tu(tk,t),t=>ts(tk,t)),tf=ta[ti.get()],tp=x(tf),tm=x(tf),th=x(tf),ty=x(tf),tv=function(t,e,n,r,a,o){let i=0,l=0,c=a,u=.68,s=t.get(),p=0;function m(t){return c=t,y}function h(t){return u=t,y}let y={direction:function(){return l},duration:function(){return c},velocity:function(){return i},seek:function(e){let a=e/1e3,o=c*a,d=r.get()-t.get(),m=0;return c?(n.set(t),i+=d/o,i*=u,s+=i,t.add(i*a),m=s-p):(i=0,n.set(r),t.set(r),m=d),l=f(m),p=s,y},settled:function(){return .001>d(r.get()-e.get())},useBaseFriction:function(){return h(.68)},useBaseDuration:function(){return m(a)},useFriction:h,useDuration:m};return y}(tp,th,tm,ty,D,0),tg=function(t,e,n,r,a){let{reachedAny:o,removeOffset:i,constrain:l}=r;function c(t){return t.concat().sort((t,e)=>d(t)-d(e))[0]}function u(e,r){let a=[e,e+n,e-n];if(!t)return e;if(!r)return c(a);let o=a.filter(t=>f(t)===r);return o.length?c(o):m(a)-n}return{byDistance:function(n,r){let c=a.get()+n,{index:s,distance:f}=function(n){let r=t?i(n):l(n),{index:a}=e.map((t,e)=>({diff:u(t-r,0),index:e})).sort((t,e)=>d(t.diff)-d(e.diff))[0];return{index:a,distance:r}}(c),p=!t&&o(c);if(!r||p)return{index:s,distance:n};let m=n+u(e[s]-f,0);return{index:s,distance:m}},byIndex:function(t,n){let r=u(e[t]-a.get(),n);return{index:t,distance:r}},shortcut:u}}(j,ta,te,to,ty),tw=function(t,e,n,r,a,o,i){function l(a){let l=a.distance,c=a.index!==e.get();o.add(l),l&&(r.duration()?t.start():(t.update(),t.render(1),t.update())),c&&(n.set(e.get()),e.set(a.index),i.emit("select"))}return{distance:function(t,e){l(a.byDistance(t,e))},index:function(t,n){let r=e.clone().set(t);l(a.byIndex(r.get(),n))}}}(td,ti,tl,tv,tg,ty,i),tb=function(t){let{max:e,length:n}=t;return{get:function(t){return n?-((t-e)/n):0}}}(to),tx=w(),tO=function(t,e,n,r){let a;let o={},i=null,l=null,c=!1;return{init:function(){a=new IntersectionObserver(t=>{c||(t.forEach(t=>{o[e.indexOf(t.target)]=t}),i=null,l=null,n.emit("slidesInView"))},{root:t.parentElement,threshold:r}),e.forEach(t=>a.observe(t))},destroy:function(){a&&a.disconnect(),c=!0},get:function(t=!0){if(t&&i)return i;if(!t&&l)return l;let e=v(o).reduce((e,n)=>{let r=parseInt(n),{isIntersecting:a}=o[r];return(t&&a||!t&&!a)&&e.push(r),e},[]);return t&&(i=e),t||(l=e),e}}}(e,n,i,R),{slideRegistry:tA}=function(t,e,n,r,a,o){let{groupSlides:i}=a,{min:l,max:c}=r;return{slideRegistry:function(){let r=i(o);return 1===n.length?[o]:t&&"keepSnaps"!==e?r.slice(l,c).map((t,e,n)=>{let r=e===h(n);return e?r?y(h(o)-m(n)[0]+1,m(n)[0]):t:y(m(n[0])+1)}):r}()}}(Y,L,ta,tr,Z,tc),tE=function(t,e,n,r,a,o,i,c){let s={passive:!0,capture:!0},d=0;function f(t){"Tab"===t.code&&(d=new Date().getTime())}return{init:function(p){c&&(o.add(document,"keydown",f,!1),e.forEach((e,f)=>{o.add(e,"focus",e=>{(u(c)||c(p,e))&&function(e){if(new Date().getTime()-d>10)return;i.emit("slideFocusStart"),t.scrollLeft=0;let o=n.findIndex(t=>t.includes(e));l(o)&&(a.useDuration(0),r.index(o,0),i.emit("slideFocus"))}(f)},s)}))}}}(t,n,tA,tw,tv,tx,i,B),tk={ownerDocument:r,ownerWindow:a,eventHandler:i,containerRect:_,slideRects:H,animation:td,axis:X,dragHandler:function(t,e,n,r,a,o,i,l,c,s,p,m,h,y,v,x,O,A,E){let{cross:k,direction:P}=t,S=["INPUT","SELECT","TEXTAREA"],j={passive:!1},D=w(),T=w(),C=b(50,225).constrain(y.measure(20)),R={mouse:300,touch:400},M={mouse:500,touch:600},N=v?43:25,L=!1,z=0,F=0,I=!1,B=!1,W=!1,_=!1;function H(t){if(!g(t,r)&&t.touches.length>=2)return X(t);let e=o.readPoint(t),n=o.readPoint(t,k),i=d(e-z),c=d(n-F);if(!B&&!_&&(!t.cancelable||!(B=i>c)))return X(t);let u=o.pointerMove(t);i>x&&(W=!0),s.useFriction(.3).useDuration(.75),l.start(),a.add(P(u)),t.preventDefault()}function X(t){let e=p.byDistance(0,!1).index!==m.get(),n=o.pointerUp(t)*(v?M:R)[_?"mouse":"touch"],r=function(t,e){let n=m.add(-1*f(t)),r=p.byDistance(t,!v).distance;return v||d(t)t.preventDefault(),j).add(e,"touchmove",()=>void 0,j).add(e,"touchend",()=>void 0).add(e,"touchstart",l).add(e,"mousedown",l).add(e,"touchcancel",X).add(e,"contextmenu",X).add(e,"click",U,!0);function l(l){(u(E)||E(t,l))&&function(t){let l=g(t,r);_=l,W=v&&l&&!t.buttons&&L,L=d(a.get()-i.get())>=2,l&&0!==t.button||function(t){let e=t.nodeName||"";return S.includes(e)}(t.target)||(I=!0,o.pointerDown(t),s.useFriction(0).useDuration(0),a.set(i),function(){let t=_?n:e;T.add(t,"touchmove",H,j).add(t,"touchend",X).add(t,"mousemove",H,j).add(t,"mouseup",X)}(),z=o.readPoint(t),F=o.readPoint(t,k),h.emit("pointerDown"))}(l)}},destroy:function(){D.clear(),T.clear()},pointerDown:function(){return I}}}(X,t,r,a,ty,function(t,e){let n,r;function a(t){return t.timeStamp}function o(n,r){let a=r||t.scroll,o=`client${"x"===a?"X":"Y"}`;return(g(n,e)?n:n.touches[0])[o]}return{pointerDown:function(t){return n=t,r=t,o(t)},pointerMove:function(t){let e=o(t)-o(r),i=a(t)-a(n)>170;return r=t,i&&(n=t),e},pointerUp:function(t){if(!n||!r)return 0;let e=o(r)-o(n),i=a(t)-a(n),l=a(t)-a(r)>170,c=e/i;return i&&!l&&d(c)>.1?c:0},readPoint:o}}(X,a),tp,td,tw,tv,tg,ti,i,q,T,C,N,0,I),eventStore:tx,percentOfView:q,index:ti,indexPrevious:tl,limit:to,location:tp,offsetLocation:th,previousLocation:tm,options:o,resizeHandler:function(t,e,n,r,a,o,i){let l,c;let s=[t].concat(r),f=[],p=!1;function m(t){return a.measureSize(i.measure(t))}return{init:function(a){o&&(c=m(t),f=r.map(m),l=new ResizeObserver(n=>{(u(o)||o(a,n))&&function(n){for(let o of n){if(p)return;let n=o.target===t,i=r.indexOf(o.target),l=n?c:f[i];if(d(m(n?t:r[i])-l)>=.5){a.reInit(),e.emit("resize");break}}}(n)}),n.requestAnimationFrame(()=>{s.forEach(t=>l.observe(t))}))},destroy:function(){p=!0,l&&l.disconnect()}}}(e,i,a,n,X,z,W),scrollBody:tv,scrollBounds:function(t,e,n,r,a){let o=a.measure(10),i=a.measure(50),l=b(.1,.99),c=!1;function u(){return!!(!c&&t.reachedAny(n.get())&&t.reachedAny(e.get()))}return{shouldConstrain:u,constrain:function(a){if(!u())return;let c=t.reachedMin(e.get())?"min":"max",s=d(t[c]-e.get()),f=n.get()-e.get(),p=l.constrain(s/i);n.subtract(f*p),!a&&d(f)t.add(i))}}}(te,to,th,[tp,th,tm,ty]),scrollProgress:tb,scrollSnapList:ta.map(tb.get),scrollSnaps:ta,scrollTarget:tg,scrollTo:tw,slideLooper:function(t,e,n,r,a,o,i,l,c){let u=p(a),s=m(f(p(a).reverse(),i[0]),n,!1).concat(m(f(u,e-i[0]-1),-n,!0));function d(t,e){return t.reduce((t,e)=>t-a[e],e)}function f(t,e){return t.reduce((t,n)=>d(t,e)>0?t.concat([n]):t,[])}function m(a,i,u){let s=o.map((t,n)=>({start:t-r[n]+.5+i,end:t+e-.5+i}));return a.map(e=>{let r=u?0:-n,a=u?n:0,o=s[e][u?"end":"start"];return{index:e,loopPoint:o,slideLocation:x(-1),translate:O(t,c[e]),target:()=>l.get()>o?r:a}})}return{canLoop:function(){return s.every(({index:t})=>.1>=d(u.filter(e=>e!==t),e))},clear:function(){s.forEach(t=>t.translate.clear())},loop:function(){s.forEach(t=>{let{target:e,translate:n,slideLocation:r}=t,a=e();a!==r.get()&&(n.to(a),r.set(a))})},loopPoints:s}}(X,U,te,$,G,Q,ta,th,n),slideFocus:tE,slidesHandler:(A=!1,{init:function(t){F&&(s=new MutationObserver(e=>{!A&&(u(F)||F(t,e))&&function(e){for(let n of e)if("childList"===n.type){t.reInit(),i.emit("slidesChanged");break}}(e)})).observe(e,{childList:!0})},destroy:function(){s&&s.disconnect(),A=!0}}),slidesInView:tO,slideIndexes:tc,slideRegistry:tA,slidesToScroll:Z,target:ty,translate:O(X,e)};return tk}(t,o,i,P,S,n,C);return n.loop&&!r.slideLooper.canLoop()?e(Object.assign({},n,{loop:!1})):r}(W),N([B,..._.map(({options:t})=>t)]).forEach(t=>T.add(t,"change",X)),W.active&&(r.translate.to(r.location.get()),r.animation.init(),r.slidesInView.init(),r.slideFocus.init(Y),r.eventHandler.init(Y),r.resizeHandler.init(Y),r.slidesHandler.init(Y),r.options.loop&&r.slideLooper.loop(),o.offsetParent&&i.length&&r.dragHandler.init(Y),a=D.init(Y,_)))}function X(t,e){let n=V();U(),H(R({startIndex:n},t),e),C.emit("reInit")}function U(){r.dragHandler.destroy(),r.eventStore.clear(),r.translate.clear(),r.slideLooper.clear(),r.resizeHandler.destroy(),r.slidesHandler.destroy(),r.slidesInView.destroy(),r.animation.destroy(),D.destroy(),T.clear()}function q(t,e,n){W.active&&!I&&(r.scrollBody.useBaseFriction().useDuration(!0===e?0:W.duration),r.scrollTo.index(t,n||0))}function V(){return r.index.get()}let Y={canScrollNext:function(){return r.index.add(1).get()!==V()},canScrollPrev:function(){return r.index.add(-1).get()!==V()},containerNode:function(){return o},internalEngine:function(){return r},destroy:function(){I||(I=!0,T.clear(),U(),C.emit("destroy"),C.clear())},off:z,on:L,emit:F,plugins:function(){return a},previousScrollSnap:function(){return r.indexPrevious.get()},reInit:X,rootNode:function(){return t},scrollNext:function(t){q(r.index.add(1).get(),t,-1)},scrollPrev:function(t){q(r.index.add(-1).get(),t,1)},scrollProgress:function(){return r.scrollProgress.get(r.location.get())},scrollSnapList:function(){return r.scrollSnapList},scrollTo:q,selectedScrollSnap:V,slideNodes:function(){return i},slidesInView:function(){return r.slidesInView.get()},slidesNotInView:function(){return r.slidesInView.get(!1)}};return H(e,n),setTimeout(()=>C.emit("init"),0),Y}function k(t={},e=[]){let n=(0,r.useRef)(t),a=(0,r.useRef)(e),[l,c]=(0,r.useState)(),[u,s]=(0,r.useState)(),d=(0,r.useCallback)(()=>{l&&l.reInit(n.current,a.current)},[l]);return(0,r.useEffect)(()=>{o(n.current,t)||(n.current=t,d())},[t,d]),(0,r.useEffect)(()=>{!function(t,e){if(t.length!==e.length)return!1;let n=i(t),r=i(e);return n.every((t,e)=>o(t,r[e]))}(a.current,e)&&(a.current=e,d())},[e,d]),(0,r.useEffect)(()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&u){E.globalOptions=k.globalOptions;let t=E(u,n.current,a.current);return c(t),()=>t.destroy()}c(void 0)},[u,c]),[s,l]}E.globalOptions=void 0,k.globalOptions=void 0},45930:(t,e,n)=>{n.d(e,{k5:()=>s});var r=n(20107),a={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},o=r.createContext&&r.createContext(a),i=["attr","size","title"];function l(){return(l=Object.assign?Object.assign.bind():function(t){for(var e=1;er.createElement(d,l({attr:u({},t.attr)},e),function t(e){return e&&e.map((e,n)=>r.createElement(e.tag,u({key:n},e.attr),t(e.child)))}(t.child))}function d(t){var e=e=>{var n,{attr:a,size:o,title:c}=t,s=function(t,e){if(null==t)return{};var n,r,a=function(t,e){if(null==t)return{};var n={};for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){if(e.indexOf(r)>=0)continue;n[r]=t[r]}return n}(t,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a}(t,i),d=o||e.size||"1em";return e.className&&(n=e.className),t.className&&(n=(n?n+" ":"")+t.className),r.createElement("svg",l({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},e.attr,a,s,{className:n,style:u(u({color:t.color||e.color},e.style),t.style),height:d,width:d,xmlns:"http://www.w3.org/2000/svg"}),c&&r.createElement("title",null,c),t.children)};return void 0!==o?r.createElement(o.Consumer,null,t=>e(t)):e(a)}},44734:(t,e,n)=>{let r;n.d(e,{_s:()=>F});var a=n(71827),o=n(20107);let i=o.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),l=()=>{let t=o.useContext(i);if(!t)throw Error("useDrawerContext must be used within a Drawer.Root");return t};function c(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function u(){return s(/^iPhone/)||s(/^iPad/)||s(/^Mac/)&&navigator.maxTouchPoints>1}function s(t){return"undefined"!=typeof window&&null!=window.navigator?t.test(window.navigator.platform):void 0}!function(t){if(!t||"undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",e.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let d="undefined"!=typeof window?o.useLayoutEffect:o.useEffect;function f(){for(var t=arguments.length,e=Array(t),n=0;n{t.removeEventListener(e,n,r)}}function w(t){let e=document.scrollingElement||document.documentElement;for(;t&&t!==e;){let e=h(t);if(e!==document.documentElement&&e!==document.body&&e!==t){let n=e.getBoundingClientRect().top,r=t.getBoundingClientRect().top;t.getBoundingClientRect().bottom>e.getBoundingClientRect().bottom+24&&(e.scrollTop+=r-n)}t=e.parentElement}}function b(t){return t instanceof HTMLInputElement&&!y.has(t.type)||t instanceof HTMLTextAreaElement||t instanceof HTMLElement&&t.isContentEditable}function x(){for(var t=arguments.length,e=Array(t),n=0;ne.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(...e),e)}let O=new WeakMap;function A(t,e){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!t||!(t instanceof HTMLElement))return;let r={};Object.entries(e).forEach(e=>{let[n,a]=e;if(n.startsWith("--")){t.style.setProperty(n,a);return}r[n]=t.style[n],t.style[n]=a}),n||O.set(t,r)}let E=t=>{switch(t){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return t}};function k(t,e){if(!t)return null;let n=window.getComputedStyle(t),r=n.transform||n.webkitTransform||n.mozTransform,a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[E(e)?13:12]):(a=r.match(/^matrix\((.+)\)$/))?parseFloat(a[1].split(", ")[E(e)?5:4]):null}function P(t,e){if(!t)return()=>{};let n=t.style.cssText;return Object.assign(t.style,e),()=>{t.style.cssText=n}}let S={DURATION:.5,EASE:[.32,.72,0,1]},j="vaul-dragging";function D(t){let e=o.useRef(t);return o.useEffect(()=>{e.current=t}),o.useMemo(()=>function(){for(var t=arguments.length,n=Array(t),r=0;r{}}=t,[a,i]=function(t){let{defaultProp:e,onChange:n}=t,r=o.useState(e),[a]=r,i=o.useRef(a),l=D(n);return o.useEffect(()=>{i.current!==a&&(l(a),i.current=a)},[a,i,l]),r}({defaultProp:n,onChange:r}),l=void 0!==e,c=l?e:a,u=D(r);return[c,o.useCallback(t=>{if(l){let n="function"==typeof t?t(e):t;n!==e&&u(n)}else i(t)},[l,e,i,u])]}let C=()=>()=>{},R=null;function M(t){var e,n;let{open:l,onOpenChange:s,children:m,onDrag:y,onRelease:x,snapPoints:P,shouldScaleBackground:D=!1,setBackgroundColorOnScale:C=!0,closeThreshold:M=.25,scrollLockTimeout:N=100,dismissible:L=!0,handleOnly:z=!1,fadeFromIndex:F=P&&P.length-1,activeSnapPoint:I,setActiveSnapPoint:B,fixed:W,modal:_=!0,onClose:H,nested:X,noBodyStyles:U=!1,direction:q="bottom",defaultOpen:V=!1,disablePreventScroll:Y=!0,snapToSequentialPoint:$=!1,preventScrollRestoration:G=!1,repositionInputs:J=!0,onAnimationEnd:K,container:Z,autoFocus:Q=!1}=t,[tt=!1,te]=T({defaultProp:V,prop:l,onChange:t=>{null==s||s(t),t||X||tR(),setTimeout(()=>{null==K||K(t)},1e3*S.DURATION),t&&!_&&"undefined"!=typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),t||(document.body.style.pointerEvents="auto")}}),[tn,tr]=o.useState(!1),[ta,to]=o.useState(!1),[ti,tl]=o.useState(!1),tc=o.useRef(null),tu=o.useRef(null),ts=o.useRef(null),td=o.useRef(null),tf=o.useRef(null),tp=o.useRef(!1),tm=o.useRef(null),th=o.useRef(0),ty=o.useRef(!1),tv=o.useRef(!V),tg=o.useRef(0),tw=o.useRef(null),tb=o.useRef((null==(e=tw.current)?void 0:e.getBoundingClientRect().height)||0),tx=o.useRef((null==(n=tw.current)?void 0:n.getBoundingClientRect().width)||0),tO=o.useRef(0),tA=o.useCallback(t=>{P&&t===tj.length-1&&(tu.current=new Date)},[]),{activeSnapPoint:tE,activeSnapPointIndex:tk,setActiveSnapPoint:tP,onRelease:tS,snapPointsOffset:tj,onDrag:tD,shouldFade:tT,getPercentageDragged:tC}=function(t){let{activeSnapPointProp:e,setActiveSnapPointProp:n,snapPoints:r,drawerRef:a,overlayRef:i,fadeFromIndex:l,onSnapPointChange:c,direction:u="bottom",container:s,snapToSequentialPoint:d}=t,[f,p]=T({prop:e,defaultProp:null==r?void 0:r[0],onChange:n}),[m,h]=o.useState("undefined"!=typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);o.useEffect(()=>{function t(){h({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]);let y=o.useMemo(()=>f===(null==r?void 0:r[r.length-1])||null,[r,f]),v=o.useMemo(()=>{var t;return null!=(t=null==r?void 0:r.findIndex(t=>t===f))?t:null},[r,f]),g=r&&r.length>0&&(l||0===l)&&!Number.isNaN(l)&&r[l]===f||!r,w=o.useMemo(()=>{var t;let e=s?{width:s.getBoundingClientRect().width,height:s.getBoundingClientRect().height}:"undefined"!=typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};return null!=(t=null==r?void 0:r.map(t=>{let n="string"==typeof t,r=0;if(n&&(r=parseInt(t,10)),E(u)){let a=n?r:m?t*e.height:0;return m?"bottom"===u?e.height-a:-e.height+a:a}let a=n?r:m?t*e.width:0;return m?"right"===u?e.width-a:-e.width+a:a}))?t:[]},[r,m,s]),b=o.useMemo(()=>null!==v?null==w?void 0:w[v]:null,[w,v]),x=o.useCallback(t=>{var e;let n=null!=(e=null==w?void 0:w.findIndex(e=>e===t))?e:null;c(n),A(a.current,{transition:"transform ".concat(S.DURATION,"s cubic-bezier(").concat(S.EASE.join(","),")"),transform:E(u)?"translate3d(0, ".concat(t,"px, 0)"):"translate3d(".concat(t,"px, 0, 0)")}),w&&n!==w.length-1&&void 0!==l&&n!==l&&n{if(f||e){var t;let n=null!=(t=null==r?void 0:r.findIndex(t=>t===e||t===f))?t:-1;w&&-1!==n&&"number"==typeof w[n]&&x(w[n])}},[f,e,r,w,x]),{isLastSnapPoint:y,activeSnapPoint:f,shouldFade:g,getPercentageDragged:function(t,e){if(!r||"number"!=typeof v||!w||void 0===l)return null;let n=v===l-1;if(v>=l&&e)return 0;if(n&&!e)return 1;if(!g&&!n)return null;let a=n?v+1:v-1,o=t/Math.abs(n?w[a]-w[a-1]:w[a+1]-w[a]);return n?1-o:o},setActiveSnapPoint:p,activeSnapPointIndex:v,onRelease:function(t){let{draggedDistance:e,closeDrawer:n,velocity:a,dismissible:o}=t;if(void 0===l)return;let c="bottom"===u||"right"===u?(null!=b?b:0)-e:(null!=b?b:0)+e,s=v===l-1,f=0===v,p=e>0;if(s&&A(i.current,{transition:"opacity ".concat(S.DURATION,"s cubic-bezier(").concat(S.EASE.join(","),")")}),!d&&a>2&&!p){o?n():x(w[0]);return}if(!d&&a>2&&p&&w&&r){x(w[r.length-1]);return}let m=null==w?void 0:w.reduce((t,e)=>"number"!=typeof t||"number"!=typeof e?t:Math.abs(e-c).4&&Math.abs(e)<.4*h){let t=p?1:-1;if(t>0&&y&&r){x(w[r.length-1]);return}if(f&&t<0&&o&&n(),null===v)return;x(w[v+t]);return}x(m)},onDrag:function(t){let{draggedDistance:e}=t;if(null===b)return;let n="bottom"===u||"right"===u?b-e:b+e;("bottom"===u||"right"===u)&&nw[w.length-1]||A(a.current,{transform:E(u)?"translate3d(0, ".concat(n,"px, 0)"):"translate3d(".concat(n,"px, 0, 0)")})},snapPointsOffset:w}}({snapPoints:P,activeSnapPointProp:I,setActiveSnapPointProp:B,drawerRef:tw,fadeFromIndex:F,overlayRef:tc,onSnapPointChange:tA,direction:q,container:Z,snapToSequentialPoint:$});!function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{isDisabled:e}=t;d(()=>{if(!e){var t,n,a;let e,o,i,l,c,s,d;return 1==++v&&u()&&(i=0,l=window.pageXOffset,c=window.pageYOffset,s=f((t=document.documentElement,n="paddingRight",a="".concat(window.innerWidth-document.documentElement.clientWidth,"px"),o=t.style[n],t.style[n]=a,()=>{t.style[n]=o})),window.scrollTo(0,0),d=f(g(document,"touchstart",t=>{((e=h(t.target))!==document.documentElement||e!==document.body)&&(i=t.changedTouches[0].pageY)},{passive:!1,capture:!0}),g(document,"touchmove",t=>{if(!e||e===document.documentElement||e===document.body){t.preventDefault();return}let n=t.changedTouches[0].pageY,r=e.scrollTop,a=e.scrollHeight-e.clientHeight;0!==a&&((r<=0&&n>i||r>=a&&n{let e=t.target;b(e)&&e!==document.activeElement&&(t.preventDefault(),e.style.transform="translateY(-2000px)",e.focus(),requestAnimationFrame(()=>{e.style.transform=""}))},{passive:!1,capture:!0}),g(document,"focus",t=>{let e=t.target;b(e)&&(e.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{e.style.transform="",p&&(p.height{w(e)}):p.addEventListener("resize",()=>w(e),{once:!0}))}))},!0),g(window,"scroll",()=>{window.scrollTo(0,0)})),r=()=>{s(),d(),window.scrollTo(l,c)}),()=>{0==--v&&(null==r||r())}}},[e])}({isDisabled:!tt||ta||!_||ti||!tn||!J||!Y});let{restorePositionSetting:tR}=function(t){let{isOpen:e,modal:n,nested:r,hasBeenOpened:a,preventScrollRestoration:i,noBodyStyles:l}=t,[u,s]=o.useState(()=>"undefined"!=typeof window?window.location.href:""),d=o.useRef(0),f=o.useCallback(()=>{if(c()&&null===R&&e&&!l){R={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:t,innerHeight:e}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:"".concat(-d.current,"px"),left:"".concat(-t,"px"),right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let t=e-window.innerHeight;t&&d.current>=e&&(document.body.style.top="".concat(-(d.current+t),"px"))}),300)}},[e]),p=o.useCallback(()=>{if(c()&&null!==R&&!l){let t=-parseInt(document.body.style.top,10),e=-parseInt(document.body.style.left,10);Object.assign(document.body.style,R),window.requestAnimationFrame(()=>{if(i&&u!==window.location.href){s(window.location.href);return}window.scrollTo(e,t)}),R=null}},[u]);return o.useEffect(()=>{function t(){d.current=window.scrollY}return t(),window.addEventListener("scroll",t),()=>{window.removeEventListener("scroll",t)}},[]),o.useEffect(()=>{if(n)return()=>{"undefined"!=typeof document&&(document.querySelector("[data-vaul-drawer]")||p())}},[n,p]),o.useEffect(()=>{r||!a||(e?(window.matchMedia("(display-mode: standalone)").matches||f(),n||window.setTimeout(()=>{p()},500)):p())},[e,a,u,n,r,f,p]),{restorePositionSetting:p}}({isOpen:tt,modal:_,nested:null!=X&&X,hasBeenOpened:tn,preventScrollRestoration:G,noBodyStyles:U});function tM(){return(window.innerWidth-26)/window.innerWidth}function tN(t,e){var n;let r=t,a=null==(n=window.getSelection())?void 0:n.toString(),o=tw.current?k(tw.current,q):null,i=new Date;if("SELECT"===r.tagName||r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===q||"left"===q)return!0;if(tu.current&&i.getTime()-tu.current.getTime()<500)return!1;if(null!==o&&("bottom"===q?o>0:o<0))return!0;if(a&&a.length>0)return!1;if(tf.current&&i.getTime()-tf.current.getTime()r.clientHeight){if(0!==r.scrollTop)return tf.current=new Date,!1;if("dialog"===r.getAttribute("role"))break}r=r.parentNode}return!0}function tL(t){ta&&tw.current&&(tw.current.classList.remove(j),tp.current=!1,to(!1),td.current=new Date),null==H||H(),t||te(!1),setTimeout(()=>{P&&tP(P[0])},1e3*S.DURATION)}function tz(){if(!tw.current)return;let t=document.querySelector("[data-vaul-drawer-wrapper]"),e=k(tw.current,q);A(tw.current,{transform:"translate3d(0, 0, 0)",transition:"transform ".concat(S.DURATION,"s cubic-bezier(").concat(S.EASE.join(","),")")}),A(tc.current,{transition:"opacity ".concat(S.DURATION,"s cubic-bezier(").concat(S.EASE.join(","),")"),opacity:"1"}),D&&e&&e>0&&tt&&A(t,{borderRadius:"".concat(8,"px"),overflow:"hidden",...E(q)?{transform:"scale(".concat(tM(),") translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)"),transformOrigin:"top"}:{transform:"scale(".concat(tM(),") translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)"),transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"".concat(S.DURATION,"s"),transitionTimingFunction:"cubic-bezier(".concat(S.EASE.join(","),")")},!0)}return o.useEffect(()=>{window.requestAnimationFrame(()=>{tv.current=!0})},[]),o.useEffect(()=>{var t;function e(){if(tw.current&&J&&(b(document.activeElement)||ty.current)){var t;let e=(null==(t=window.visualViewport)?void 0:t.height)||0,n=window.innerHeight,r=n-e,a=tw.current.getBoundingClientRect().height||0;tO.current||(tO.current=a);let o=tw.current.getBoundingClientRect().top;if(Math.abs(tg.current-r)>60&&(ty.current=!ty.current),P&&P.length>0&&tj&&tk&&(r+=tj[tk]||0),tg.current=r,a>e||ty.current){let t=tw.current.getBoundingClientRect().height,i=t;t>e&&(i=e-(a>.8*n?o:26)),W?tw.current.style.height="".concat(t-Math.max(r,0),"px"):tw.current.style.height="".concat(Math.max(i,e-o),"px")}else!function(){let t=navigator.userAgent;return"undefined"!=typeof window&&(/Firefox/.test(t)&&/Mobile/.test(t)||/FxiOS/.test(t))}()&&(tw.current.style.height="".concat(tO.current,"px"));P&&P.length>0&&!ty.current?tw.current.style.bottom="0px":tw.current.style.bottom="".concat(Math.max(r,0),"px")}}return null==(t=window.visualViewport)||t.addEventListener("resize",e),()=>{var t;return null==(t=window.visualViewport)?void 0:t.removeEventListener("resize",e)}},[tk,P,tj]),o.useEffect(()=>(tt&&(A(document.documentElement,{scrollBehavior:"auto"}),tu.current=new Date),()=>{!function(t,e){if(!t||!(t instanceof HTMLElement))return;let n=O.get(t);n&&(t.style[e]=n[e])}(document.documentElement,"scrollBehavior")}),[tt]),o.useEffect(()=>{_||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[_]),o.createElement(a.bL,{defaultOpen:V,onOpenChange:t=>{(L||t)&&(t?tr(!0):tL(!0),te(t))},open:tt},o.createElement(i.Provider,{value:{activeSnapPoint:tE,snapPoints:P,setActiveSnapPoint:tP,drawerRef:tw,overlayRef:tc,onOpenChange:s,onPress:function(t){var e,n;(L||P)&&(!tw.current||tw.current.contains(t.target))&&(tb.current=(null==(e=tw.current)?void 0:e.getBoundingClientRect().height)||0,tx.current=(null==(n=tw.current)?void 0:n.getBoundingClientRect().width)||0,to(!0),ts.current=new Date,u()&&window.addEventListener("touchend",()=>tp.current=!1,{once:!0}),t.target.setPointerCapture(t.pointerId),th.current=E(q)?t.pageY:t.pageX)},onRelease:function(t){var e,n;if(!ta||!tw.current)return;tw.current.classList.remove(j),tp.current=!1,to(!1),td.current=new Date;let r=k(tw.current,q);if(!t||!tN(t.target,!1)||!r||Number.isNaN(r)||null===ts.current)return;let a=td.current.getTime()-ts.current.getTime(),o=th.current-(E(q)?t.pageY:t.pageX),i=Math.abs(o)/a;if(i>.05&&(tl(!0),setTimeout(()=>{tl(!1)},200)),P){tS({draggedDistance:o*("bottom"===q||"right"===q?1:-1),closeDrawer:tL,velocity:i,dismissible:L}),null==x||x(t,!0);return}if("bottom"===q||"right"===q?o>0:o<0){tz(),null==x||x(t,!0);return}if(i>.4){tL(),null==x||x(t,!1);return}let l=Math.min(null!=(e=tw.current.getBoundingClientRect().height)?e:0,window.innerHeight),c=Math.min(null!=(n=tw.current.getBoundingClientRect().width)?n:0,window.innerWidth);if(Math.abs(r)>=("left"===q||"right"===q?c:l)*M){tL(),null==x||x(t,!1);return}null==x||x(t,!0),tz()},onDrag:function(t){if(tw.current&&ta){let e="bottom"===q||"right"===q?1:-1,n=(th.current-(E(q)?t.pageY:t.pageX))*e,r=n>0,a=P&&!L&&!r;if(a&&0===tk)return;let o=Math.abs(n),i=document.querySelector("[data-vaul-drawer-wrapper]"),l=o/("bottom"===q||"top"===q?tb.current:tx.current),c=tC(o,r);if(null!==c&&(l=c),a&&l>=1||!tp.current&&!tN(t.target,r))return;if(tw.current.classList.add(j),tp.current=!0,A(tw.current,{transition:"none"}),A(tc.current,{transition:"none"}),P&&tD({draggedDistance:n}),r&&!P){let t=Math.min(-(8*(Math.log(n+1)-2)*1),0)*e;A(tw.current,{transform:E(q)?"translate3d(0, ".concat(t,"px, 0)"):"translate3d(".concat(t,"px, 0, 0)")});return}let u=1-l;if((tT||F&&tk===F-1)&&(null==y||y(t,l),A(tc.current,{opacity:"".concat(u),transition:"none"},!0)),i&&tc.current&&D){let t=Math.min(tM()+l*(1-tM()),1),e=8-8*l,n=Math.max(0,14-14*l);A(i,{borderRadius:"".concat(e,"px"),transform:E(q)?"scale(".concat(t,") translate3d(0, ").concat(n,"px, 0)"):"scale(".concat(t,") translate3d(").concat(n,"px, 0, 0)"),transition:"none"},!0)}if(!P){let t=o*e;A(tw.current,{transform:E(q)?"translate3d(0, ".concat(t,"px, 0)"):"translate3d(".concat(t,"px, 0, 0)")})}}},dismissible:L,shouldAnimate:tv,handleOnly:z,isOpen:tt,isDragging:ta,shouldFade:tT,closeDrawer:tL,onNestedDrag:function(t,e){if(e<0)return;let n=(window.innerWidth-16)/window.innerWidth,r=n+e*(1-n),a=-16+16*e;A(tw.current,{transform:E(q)?"scale(".concat(r,") translate3d(0, ").concat(a,"px, 0)"):"scale(".concat(r,") translate3d(").concat(a,"px, 0, 0)"),transition:"none"})},onNestedOpenChange:function(t){let e=t?(window.innerWidth-16)/window.innerWidth:1,n=t?-16:0;tm.current&&window.clearTimeout(tm.current),A(tw.current,{transition:"transform ".concat(S.DURATION,"s cubic-bezier(").concat(S.EASE.join(","),")"),transform:E(q)?"scale(".concat(e,") translate3d(0, ").concat(n,"px, 0)"):"scale(".concat(e,") translate3d(").concat(n,", 0, 0)")}),!t&&tw.current&&(tm.current=setTimeout(()=>{let t=k(tw.current,q);A(tw.current,{transition:"none",transform:E(q)?"translate3d(0, ".concat(t,"px, 0)"):"translate3d(".concat(t,"px, 0, 0)")})},500))},onNestedRelease:function(t,e){let n=E(q)?window.innerHeight:window.innerWidth,r=e?(n-16)/n:1,a=e?-16:0;e&&A(tw.current,{transition:"transform ".concat(S.DURATION,"s cubic-bezier(").concat(S.EASE.join(","),")"),transform:E(q)?"scale(".concat(r,") translate3d(0, ").concat(a,"px, 0)"):"scale(".concat(r,") translate3d(").concat(a,"px, 0, 0)")})},keyboardIsOpen:ty,modal:_,snapPointsOffset:tj,activeSnapPointIndex:tk,direction:q,shouldScaleBackground:D,setBackgroundColorOnScale:C,noBodyStyles:U,container:Z,autoFocus:Q}},m))}let N=o.forwardRef(function(t,e){let{...n}=t,{overlayRef:r,snapPoints:i,onRelease:c,shouldFade:u,isOpen:s,modal:d,shouldAnimate:f}=l(),p=x(e,r),m=i&&i.length>0;if(!d)return null;let h=o.useCallback(t=>c(t),[c]);return o.createElement(a.hJ,{onMouseUp:h,ref:p,"data-vaul-overlay":"","data-vaul-snap-points":s&&m?"true":"false","data-vaul-snap-points-overlay":s&&u?"true":"false","data-vaul-animate":(null==f?void 0:f.current)?"true":"false",...n})});N.displayName="Drawer.Overlay";let L=o.forwardRef(function(t,e){let{onPointerDownOutside:n,style:r,onOpenAutoFocus:i,...c}=t,{drawerRef:u,onPress:s,onRelease:d,onDrag:f,keyboardIsOpen:p,snapPointsOffset:m,activeSnapPointIndex:h,modal:y,isOpen:v,direction:g,snapPoints:w,container:b,handleOnly:O,shouldAnimate:A,autoFocus:k}=l(),[j,D]=o.useState(!1),T=x(e,u),R=o.useRef(null),M=o.useRef(null),N=o.useRef(!1),L=w&&w.length>0;!function(){let{direction:t,isOpen:e,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:a}=l(),i=o.useRef(null),c=(0,o.useMemo)(()=>document.body.style.backgroundColor,[]);function u(){return(window.innerWidth-26)/window.innerWidth}o.useEffect(()=>{if(e&&n){i.current&&clearTimeout(i.current);let e=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!e)return;!function(){for(var t=arguments.length,e=Array(t),n=0;n{n(),i.current=window.setTimeout(()=>{c?document.body.style.background=c:document.body.style.removeProperty("background")},1e3*S.DURATION)}}},[e,n,c])}();let z=function(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(N.current)return!0;let r=Math.abs(t.y),a=Math.abs(t.x),o=a>r,i=["bottom","right"].includes(e)?1:-1;if("left"===e||"right"===e){if(!(t.x*i<0)&&a>=0&&a<=n)return o}else if(!(t.y*i<0)&&r>=0&&r<=n)return!o;return N.current=!0,!0};function F(t){R.current=null,N.current=!1,d(t)}return o.useEffect(()=>{L&&window.requestAnimationFrame(()=>{D(!0)})},[]),o.createElement(a.UC,{"data-vaul-drawer-direction":g,"data-vaul-drawer":"","data-vaul-delayed-snap-points":j?"true":"false","data-vaul-snap-points":v&&L?"true":"false","data-vaul-custom-container":b?"true":"false","data-vaul-animate":(null==A?void 0:A.current)?"true":"false",...c,ref:T,style:m&&m.length>0?{"--snap-point-height":"".concat(m[null!=h?h:0],"px"),...r}:r,onPointerDown:t=>{O||(null==c.onPointerDown||c.onPointerDown.call(c,t),R.current={x:t.pageX,y:t.pageY},s(t))},onOpenAutoFocus:t=>{null==i||i(t),k||t.preventDefault()},onPointerDownOutside:t=>{if(null==n||n(t),!y||t.defaultPrevented){t.preventDefault();return}p.current&&(p.current=!1)},onFocusOutside:t=>{if(!y){t.preventDefault();return}},onPointerMove:t=>{if(M.current=t,O||(null==c.onPointerMove||c.onPointerMove.call(c,t),!R.current))return;let e=t.pageY-R.current.y,n=t.pageX-R.current.x,r="touch"===t.pointerType?10:2;z({x:n,y:e},g,r)?f(t):(Math.abs(n)>r||Math.abs(e)>r)&&(R.current=null)},onPointerUp:t=>{null==c.onPointerUp||c.onPointerUp.call(c,t),R.current=null,N.current=!1,d(t)},onPointerOut:t=>{null==c.onPointerOut||c.onPointerOut.call(c,t),F(M.current)},onContextMenu:t=>{null==c.onContextMenu||c.onContextMenu.call(c,t),M.current&&F(M.current)}})});L.displayName="Drawer.Content";let z=o.forwardRef(function(t,e){let{preventCycle:n=!1,children:r,...a}=t,{closeDrawer:i,isDragging:c,snapPoints:u,activeSnapPoint:s,setActiveSnapPoint:d,dismissible:f,handleOnly:p,isOpen:m,onPress:h,onDrag:y}=l(),v=o.useRef(null),g=o.useRef(!1);function w(){v.current&&window.clearTimeout(v.current),g.current=!1}return o.createElement("div",{onClick:function(){if(g.current){w();return}window.setTimeout(()=>{!function(){if(c||n||g.current){w();return}if(w(),!u||0===u.length){f||i();return}if(s===u[u.length-1]&&f){i();return}let t=u.findIndex(t=>t===s);-1!==t&&d(u[t+1])}()},120)},onPointerCancel:w,onPointerDown:t=>{p&&h(t),v.current=window.setTimeout(()=>{g.current=!0},250)},onPointerMove:t=>{p&&y(t)},ref:e,"data-vaul-drawer-visible":m?"true":"false","data-vaul-handle":"","aria-hidden":"true",...a},o.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},r))});z.displayName="Drawer.Handle";let F={Root:M,NestedRoot:function(t){let{onDrag:e,onOpenChange:n,...r}=t,{onNestedDrag:a,onNestedOpenChange:i,onNestedRelease:c}=l();if(!a)throw Error("Drawer.NestedRoot must be placed in another drawer");return o.createElement(M,{nested:!0,onClose:()=>{i(!1)},onDrag:(t,n)=>{a(t,n),null==e||e(t,n)},onOpenChange:t=>{t&&i(t)},onRelease:c,...r})},Content:L,Overlay:N,Trigger:a.l9,Portal:function(t){let e=l(),{container:n=e.container,...r}=t;return o.createElement(a.ZL,{container:n,...r})},Handle:z,Close:a.bm,Title:a.hE,Description:a.VY}}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9700-86092c9639feaee7.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9700-86092c9639feaee7.js deleted file mode 100644 index 0ae88d2..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/9700-86092c9639feaee7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9700],{67595:(e,t,n)=>{n.d(t,{N:()=>u});var r=n(20107),o=n(81045),a=n(74111),l=n(61837),i=n(20475);function u(e){let t=e+"CollectionProvider",[n,u]=(0,o.A)(t),[c,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),d=e=>{let{scope:t,children:n}=e,o=r.useRef(null),a=r.useRef(new Map).current;return(0,i.jsx)(c,{scope:t,itemMap:a,collectionRef:o,children:n})};d.displayName=t;let f=e+"CollectionSlot",p=r.forwardRef((e,t)=>{let{scope:n,children:r}=e,o=s(f,n),u=(0,a.s)(t,o.collectionRef);return(0,i.jsx)(l.DX,{ref:u,children:r})});p.displayName=f;let m=e+"CollectionItemSlot",v="data-radix-collection-item",h=r.forwardRef((e,t)=>{let{scope:n,children:o,...u}=e,c=r.useRef(null),d=(0,a.s)(t,c),f=s(m,n);return r.useEffect(()=>(f.itemMap.set(c,{ref:c,...u}),()=>void f.itemMap.delete(c))),(0,i.jsx)(l.DX,{[v]:"",ref:d,children:o})});return h.displayName=m,[{Provider:d,Slot:p,ItemSlot:h},function(t){let n=s(e+"CollectionConsumer",t);return r.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(v,"]")));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])},u]}},25289:(e,t,n)=>{n.d(t,{jH:()=>a});var r=n(20107);n(20475);var o=r.createContext(void 0);function a(e){let t=r.useContext(o);return e||t||"ltr"}},33169:(e,t,n)=>{n.d(t,{H_:()=>tf,UC:()=>tu,YJ:()=>tc,q7:()=>td,VF:()=>tv,JU:()=>ts,ZL:()=>ti,z6:()=>tp,hN:()=>tm,bL:()=>ta,wv:()=>th,Pb:()=>tg,G5:()=>ty,ZP:()=>tw,l9:()=>tl});var r=n(20107),o=n(94521),a=n(74111),l=n(80938),i=n(81255),u=n(4589),c=n(67595),s=n(25289),d=n(15975),f=n(62894),p=n(98246),m=n(72763),v=n(14673),h=n(82412),g=n(62796),w=n(81045),y=n(85547),x=n(20475),b="rovingFocusGroup.onEntryFocus",C={bubbles:!1,cancelable:!0},M="RovingFocusGroup",[R,j,D]=(0,c.N)(M),[k,S]=(0,w.A)(M,[D]),[_,E]=k(M),I=r.forwardRef((e,t)=>(0,x.jsx)(R.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,x.jsx)(R.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,x.jsx)(T,{...e,ref:t})})}));I.displayName=M;var T=r.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,orientation:l,loop:c=!1,dir:d,currentTabStopId:f,defaultCurrentTabStopId:p,onCurrentTabStopIdChange:m,onEntryFocus:v,preventScrollOnEntryFocus:h=!1,...g}=e,w=r.useRef(null),M=(0,a.s)(t,w),R=(0,s.jH)(d),[D=null,k]=(0,i.i)({prop:f,defaultProp:p,onChange:m}),[S,E]=r.useState(!1),I=(0,y.c)(v),T=j(n),P=r.useRef(!1),[N,A]=r.useState(0);return r.useEffect(()=>{let e=w.current;if(e)return e.addEventListener(b,I),()=>e.removeEventListener(b,I)},[I]),(0,x.jsx)(_,{scope:n,orientation:l,dir:R,loop:c,currentTabStopId:D,onItemFocus:r.useCallback(e=>k(e),[k]),onItemShiftTab:r.useCallback(()=>E(!0),[]),onFocusableItemAdd:r.useCallback(()=>A(e=>e+1),[]),onFocusableItemRemove:r.useCallback(()=>A(e=>e-1),[]),children:(0,x.jsx)(u.sG.div,{tabIndex:S||0===N?-1:0,"data-orientation":l,...g,ref:M,style:{outline:"none",...e.style},onMouseDown:(0,o.m)(e.onMouseDown,()=>{P.current=!0}),onFocus:(0,o.m)(e.onFocus,e=>{let t=!P.current;if(e.target===e.currentTarget&&t&&!S){let t=new CustomEvent(b,C);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=T().filter(e=>e.focusable);O([e.find(e=>e.active),e.find(e=>e.id===D),...e].filter(Boolean).map(e=>e.ref.current),h)}}P.current=!1}),onBlur:(0,o.m)(e.onBlur,()=>E(!1))})})}),P="RovingFocusGroupItem",N=r.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:n,focusable:a=!0,active:l=!1,tabStopId:i,...c}=e,s=(0,m.B)(),d=i||s,f=E(P,n),p=f.currentTabStopId===d,v=j(n),{onFocusableItemAdd:h,onFocusableItemRemove:g}=f;return r.useEffect(()=>{if(a)return h(),()=>g()},[a,h,g]),(0,x.jsx)(R.ItemSlot,{scope:n,id:d,focusable:a,active:l,children:(0,x.jsx)(u.sG.span,{tabIndex:p?0:-1,"data-orientation":f.orientation,...c,ref:t,onMouseDown:(0,o.m)(e.onMouseDown,e=>{a?f.onItemFocus(d):e.preventDefault()}),onFocus:(0,o.m)(e.onFocus,()=>f.onItemFocus(d)),onKeyDown:(0,o.m)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey){f.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=function(e,t,n){var r;let o=(r=e.key,"rtl"!==n?r:"ArrowLeft"===r?"ArrowRight":"ArrowRight"===r?"ArrowLeft":r);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(o))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(o)))return A[o]}(e,f.orientation,f.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let n=v().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)n.reverse();else if("prev"===t||"next"===t){"prev"===t&&n.reverse();let r=n.indexOf(e.currentTarget);n=f.loop?function(e,t){return e.map((n,r)=>e[(t+r)%e.length])}(n,r+1):n.slice(r+1)}setTimeout(()=>O(n))}})})})});N.displayName=P;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function O(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}var L=n(61837),F=n(58020),K=n(41364),G=["Enter"," "],B=["ArrowUp","PageDown","End"],U=["ArrowDown","PageUp","Home",...B],V={ltr:[...G,"ArrowRight"],rtl:[...G,"ArrowLeft"]},X={ltr:["ArrowLeft"],rtl:["ArrowRight"]},H="Menu",[z,q,J]=(0,c.N)(H),[Z,Y]=(0,l.A)(H,[J,v.Bk,S]),W=(0,v.Bk)(),Q=S(),[$,ee]=Z(H),[et,en]=Z(H),er=e=>{let{__scopeMenu:t,open:n=!1,children:o,dir:a,onOpenChange:l,modal:i=!0}=e,u=W(t),[c,d]=r.useState(null),f=r.useRef(!1),p=(0,y.c)(l),m=(0,s.jH)(a);return r.useEffect(()=>{let e=()=>{f.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>f.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,x.jsx)(v.bL,{...u,children:(0,x.jsx)($,{scope:t,open:n,onOpenChange:p,content:c,onContentChange:d,children:(0,x.jsx)(et,{scope:t,onClose:r.useCallback(()=>p(!1),[p]),isUsingKeyboardRef:f,dir:m,modal:i,children:o})})})};er.displayName=H;var eo=r.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,o=W(n);return(0,x.jsx)(v.Mz,{...o,...r,ref:t})});eo.displayName="MenuAnchor";var ea="MenuPortal",[el,ei]=Z(ea,{forceMount:void 0}),eu=e=>{let{__scopeMenu:t,forceMount:n,children:r,container:o}=e,a=ee(ea,t);return(0,x.jsx)(el,{scope:t,forceMount:n,children:(0,x.jsx)(g.C,{present:n||a.open,children:(0,x.jsx)(h.Z,{asChild:!0,container:o,children:r})})})};eu.displayName=ea;var ec="MenuContent",[es,ed]=Z(ec),ef=r.forwardRef((e,t)=>{let n=ei(ec,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,a=ee(ec,e.__scopeMenu),l=en(ec,e.__scopeMenu);return(0,x.jsx)(z.Provider,{scope:e.__scopeMenu,children:(0,x.jsx)(g.C,{present:r||a.open,children:(0,x.jsx)(z.Slot,{scope:e.__scopeMenu,children:l.modal?(0,x.jsx)(ep,{...o,ref:t}):(0,x.jsx)(em,{...o,ref:t})})})})}),ep=r.forwardRef((e,t)=>{let n=ee(ec,e.__scopeMenu),l=r.useRef(null),i=(0,a.s)(t,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,F.Eq)(e)},[]),(0,x.jsx)(ev,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:(0,o.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),em=r.forwardRef((e,t)=>{let n=ee(ec,e.__scopeMenu);return(0,x.jsx)(ev,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),ev=r.forwardRef((e,t)=>{let{__scopeMenu:n,loop:l=!1,trapFocus:i,onOpenAutoFocus:u,onCloseAutoFocus:c,disableOutsidePointerEvents:s,onEntryFocus:m,onEscapeKeyDown:h,onPointerDownOutside:g,onFocusOutside:w,onInteractOutside:y,onDismiss:b,disableOutsideScroll:C,...M}=e,R=ee(ec,n),j=en(ec,n),D=W(n),k=Q(n),S=q(n),[_,E]=r.useState(null),T=r.useRef(null),P=(0,a.s)(t,T,R.onContentChange),N=r.useRef(0),A=r.useRef(""),O=r.useRef(0),F=r.useRef(null),G=r.useRef("right"),V=r.useRef(0),X=C?K.A:r.Fragment,H=C?{as:L.DX,allowPinchZoom:!0}:void 0,z=e=>{var t,n;let r=A.current+e,o=S().filter(e=>!e.disabled),a=document.activeElement,l=null===(t=o.find(e=>e.ref.current===a))||void 0===t?void 0:t.textValue,i=function(e,t,n){var r;let o=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=(r=Math.max(n?e.indexOf(n):-1,0),e.map((t,n)=>e[(r+n)%e.length]));1===o.length&&(a=a.filter(e=>e!==n));let l=a.find(e=>e.toLowerCase().startsWith(o.toLowerCase()));return l!==n?l:void 0}(o.map(e=>e.textValue),r,l),u=null===(n=o.find(e=>e.textValue===i))||void 0===n?void 0:n.ref.current;!function e(t){A.current=t,window.clearTimeout(N.current),""!==t&&(N.current=window.setTimeout(()=>e(""),1e3))}(r),u&&setTimeout(()=>u.focus())};r.useEffect(()=>()=>window.clearTimeout(N.current),[]),(0,f.Oh)();let J=r.useCallback(e=>{var t,n;return G.current===(null===(t=F.current)||void 0===t?void 0:t.side)&&function(e,t){return!!t&&function(e,t){let{x:n,y:r}=e,o=!1;for(let e=0,a=t.length-1;er!=c>r&&n<(u-l)*(r-i)/(c-i)+l&&(o=!o)}return o}({x:e.clientX,y:e.clientY},t)}(e,null===(n=F.current)||void 0===n?void 0:n.area)},[]);return(0,x.jsx)(es,{scope:n,searchRef:A,onItemEnter:r.useCallback(e=>{J(e)&&e.preventDefault()},[J]),onItemLeave:r.useCallback(e=>{var t;J(e)||(null===(t=T.current)||void 0===t||t.focus(),E(null))},[J]),onTriggerLeave:r.useCallback(e=>{J(e)&&e.preventDefault()},[J]),pointerGraceTimerRef:O,onPointerGraceIntentChange:r.useCallback(e=>{F.current=e},[]),children:(0,x.jsx)(X,{...H,children:(0,x.jsx)(p.n,{asChild:!0,trapped:i,onMountAutoFocus:(0,o.m)(u,e=>{var t;e.preventDefault(),null===(t=T.current)||void 0===t||t.focus({preventScroll:!0})}),onUnmountAutoFocus:c,children:(0,x.jsx)(d.qW,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:h,onPointerDownOutside:g,onFocusOutside:w,onInteractOutside:y,onDismiss:b,children:(0,x.jsx)(I,{asChild:!0,...k,dir:j.dir,orientation:"vertical",loop:l,currentTabStopId:_,onCurrentTabStopIdChange:E,onEntryFocus:(0,o.m)(m,e=>{j.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,x.jsx)(v.UC,{role:"menu","aria-orientation":"vertical","data-state":eV(R.open),"data-radix-menu-content":"",dir:j.dir,...D,...M,ref:P,style:{outline:"none",...M.style},onKeyDown:(0,o.m)(M.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,n=e.ctrlKey||e.altKey||e.metaKey,r=1===e.key.length;t&&("Tab"===e.key&&e.preventDefault(),!n&&r&&z(e.key));let o=T.current;if(e.target!==o||!U.includes(e.key))return;e.preventDefault();let a=S().filter(e=>!e.disabled).map(e=>e.ref.current);B.includes(e.key)&&a.reverse(),function(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}(a)}),onBlur:(0,o.m)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(N.current),A.current="")}),onPointerMove:(0,o.m)(e.onPointerMove,ez(e=>{let t=e.target,n=V.current!==e.clientX;if(e.currentTarget.contains(t)&&n){let t=e.clientX>V.current?"right":"left";G.current=t,V.current=e.clientX}}))})})})})})})});ef.displayName=ec;var eh=r.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,x.jsx)(u.sG.div,{role:"group",...r,ref:t})});eh.displayName="MenuGroup";var eg=r.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,x.jsx)(u.sG.div,{...r,ref:t})});eg.displayName="MenuLabel";var ew="MenuItem",ey="menu.itemSelect",ex=r.forwardRef((e,t)=>{let{disabled:n=!1,onSelect:l,...i}=e,c=r.useRef(null),s=en(ew,e.__scopeMenu),d=ed(ew,e.__scopeMenu),f=(0,a.s)(t,c),p=r.useRef(!1);return(0,x.jsx)(eb,{...i,ref:f,disabled:n,onClick:(0,o.m)(e.onClick,()=>{let e=c.current;if(!n&&e){let t=new CustomEvent(ey,{bubbles:!0,cancelable:!0});e.addEventListener(ey,e=>null==l?void 0:l(e),{once:!0}),(0,u.hO)(e,t),t.defaultPrevented?p.current=!1:s.onClose()}}),onPointerDown:t=>{var n;null===(n=e.onPointerDown)||void 0===n||n.call(e,t),p.current=!0},onPointerUp:(0,o.m)(e.onPointerUp,e=>{var t;p.current||null===(t=e.currentTarget)||void 0===t||t.click()}),onKeyDown:(0,o.m)(e.onKeyDown,e=>{let t=""!==d.searchRef.current;!n&&(!t||" "!==e.key)&&G.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});ex.displayName=ew;var eb=r.forwardRef((e,t)=>{let{__scopeMenu:n,disabled:l=!1,textValue:i,...c}=e,s=ed(ew,n),d=Q(n),f=r.useRef(null),p=(0,a.s)(t,f),[m,v]=r.useState(!1),[h,g]=r.useState("");return r.useEffect(()=>{let e=f.current;if(e){var t;g((null!==(t=e.textContent)&&void 0!==t?t:"").trim())}},[c.children]),(0,x.jsx)(z.ItemSlot,{scope:n,disabled:l,textValue:null!=i?i:h,children:(0,x.jsx)(N,{asChild:!0,...d,focusable:!l,children:(0,x.jsx)(u.sG.div,{role:"menuitem","data-highlighted":m?"":void 0,"aria-disabled":l||void 0,"data-disabled":l?"":void 0,...c,ref:p,onPointerMove:(0,o.m)(e.onPointerMove,ez(e=>{l?s.onItemLeave(e):(s.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,o.m)(e.onPointerLeave,ez(e=>s.onItemLeave(e))),onFocus:(0,o.m)(e.onFocus,()=>v(!0)),onBlur:(0,o.m)(e.onBlur,()=>v(!1))})})})}),eC=r.forwardRef((e,t)=>{let{checked:n=!1,onCheckedChange:r,...a}=e;return(0,x.jsx)(eE,{scope:e.__scopeMenu,checked:n,children:(0,x.jsx)(ex,{role:"menuitemcheckbox","aria-checked":eX(n)?"mixed":n,...a,ref:t,"data-state":eH(n),onSelect:(0,o.m)(a.onSelect,()=>null==r?void 0:r(!!eX(n)||!n),{checkForDefaultPrevented:!1})})})});eC.displayName="MenuCheckboxItem";var eM="MenuRadioGroup",[eR,ej]=Z(eM,{value:void 0,onValueChange:()=>{}}),eD=r.forwardRef((e,t)=>{let{value:n,onValueChange:r,...o}=e,a=(0,y.c)(r);return(0,x.jsx)(eR,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,x.jsx)(eh,{...o,ref:t})})});eD.displayName=eM;var ek="MenuRadioItem",eS=r.forwardRef((e,t)=>{let{value:n,...r}=e,a=ej(ek,e.__scopeMenu),l=n===a.value;return(0,x.jsx)(eE,{scope:e.__scopeMenu,checked:l,children:(0,x.jsx)(ex,{role:"menuitemradio","aria-checked":l,...r,ref:t,"data-state":eH(l),onSelect:(0,o.m)(r.onSelect,()=>{var e;return null===(e=a.onValueChange)||void 0===e?void 0:e.call(a,n)},{checkForDefaultPrevented:!1})})})});eS.displayName=ek;var e_="MenuItemIndicator",[eE,eI]=Z(e_,{checked:!1}),eT=r.forwardRef((e,t)=>{let{__scopeMenu:n,forceMount:r,...o}=e,a=eI(e_,n);return(0,x.jsx)(g.C,{present:r||eX(a.checked)||!0===a.checked,children:(0,x.jsx)(u.sG.span,{...o,ref:t,"data-state":eH(a.checked)})})});eT.displayName=e_;var eP=r.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e;return(0,x.jsx)(u.sG.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});eP.displayName="MenuSeparator";var eN=r.forwardRef((e,t)=>{let{__scopeMenu:n,...r}=e,o=W(n);return(0,x.jsx)(v.i3,{...o,...r,ref:t})});eN.displayName="MenuArrow";var eA="MenuSub",[eO,eL]=Z(eA),eF=e=>{let{__scopeMenu:t,children:n,open:o=!1,onOpenChange:a}=e,l=ee(eA,t),i=W(t),[u,c]=r.useState(null),[s,d]=r.useState(null),f=(0,y.c)(a);return r.useEffect(()=>(!1===l.open&&f(!1),()=>f(!1)),[l.open,f]),(0,x.jsx)(v.bL,{...i,children:(0,x.jsx)($,{scope:t,open:o,onOpenChange:f,content:s,onContentChange:d,children:(0,x.jsx)(eO,{scope:t,contentId:(0,m.B)(),triggerId:(0,m.B)(),trigger:u,onTriggerChange:c,children:n})})})};eF.displayName=eA;var eK="MenuSubTrigger",eG=r.forwardRef((e,t)=>{let n=ee(eK,e.__scopeMenu),l=en(eK,e.__scopeMenu),i=eL(eK,e.__scopeMenu),u=ed(eK,e.__scopeMenu),c=r.useRef(null),{pointerGraceTimerRef:s,onPointerGraceIntentChange:d}=u,f={__scopeMenu:e.__scopeMenu},p=r.useCallback(()=>{c.current&&window.clearTimeout(c.current),c.current=null},[]);return r.useEffect(()=>p,[p]),r.useEffect(()=>{let e=s.current;return()=>{window.clearTimeout(e),d(null)}},[s,d]),(0,x.jsx)(eo,{asChild:!0,...f,children:(0,x.jsx)(eb,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":i.contentId,"data-state":eV(n.open),...e,ref:(0,a.t)(t,i.onTriggerChange),onClick:t=>{var r;null===(r=e.onClick)||void 0===r||r.call(e,t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:(0,o.m)(e.onPointerMove,ez(t=>{u.onItemEnter(t),t.defaultPrevented||e.disabled||n.open||c.current||(u.onPointerGraceIntentChange(null),c.current=window.setTimeout(()=>{n.onOpenChange(!0),p()},100))})),onPointerLeave:(0,o.m)(e.onPointerLeave,ez(e=>{var t,r;p();let o=null===(t=n.content)||void 0===t?void 0:t.getBoundingClientRect();if(o){let t=null===(r=n.content)||void 0===r?void 0:r.dataset.side,a="right"===t,l=o[a?"left":"right"],i=o[a?"right":"left"];u.onPointerGraceIntentChange({area:[{x:e.clientX+(a?-5:5),y:e.clientY},{x:l,y:o.top},{x:i,y:o.top},{x:i,y:o.bottom},{x:l,y:o.bottom}],side:t}),window.clearTimeout(s.current),s.current=window.setTimeout(()=>u.onPointerGraceIntentChange(null),300)}else{if(u.onTriggerLeave(e),e.defaultPrevented)return;u.onPointerGraceIntentChange(null)}})),onKeyDown:(0,o.m)(e.onKeyDown,t=>{let r=""!==u.searchRef.current;if(!e.disabled&&(!r||" "!==t.key)&&V[l.dir].includes(t.key)){var o;n.onOpenChange(!0),null===(o=n.content)||void 0===o||o.focus(),t.preventDefault()}})})})});eG.displayName=eK;var eB="MenuSubContent",eU=r.forwardRef((e,t)=>{let n=ei(ec,e.__scopeMenu),{forceMount:l=n.forceMount,...i}=e,u=ee(ec,e.__scopeMenu),c=en(ec,e.__scopeMenu),s=eL(eB,e.__scopeMenu),d=r.useRef(null),f=(0,a.s)(t,d);return(0,x.jsx)(z.Provider,{scope:e.__scopeMenu,children:(0,x.jsx)(g.C,{present:l||u.open,children:(0,x.jsx)(z.Slot,{scope:e.__scopeMenu,children:(0,x.jsx)(ev,{id:s.contentId,"aria-labelledby":s.triggerId,...i,ref:f,align:"start",side:"rtl"===c.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{var t;c.isUsingKeyboardRef.current&&(null===(t=d.current)||void 0===t||t.focus()),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,o.m)(e.onFocusOutside,e=>{e.target!==s.trigger&&u.onOpenChange(!1)}),onEscapeKeyDown:(0,o.m)(e.onEscapeKeyDown,e=>{c.onClose(),e.preventDefault()}),onKeyDown:(0,o.m)(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),n=X[c.dir].includes(e.key);if(t&&n){var r;u.onOpenChange(!1),null===(r=s.trigger)||void 0===r||r.focus(),e.preventDefault()}})})})})})});function eV(e){return e?"open":"closed"}function eX(e){return"indeterminate"===e}function eH(e){return eX(e)?"indeterminate":e?"checked":"unchecked"}function ez(e){return t=>"mouse"===t.pointerType?e(t):void 0}eU.displayName=eB;var eq="DropdownMenu",[eJ,eZ]=(0,l.A)(eq,[Y]),eY=Y(),[eW,eQ]=eJ(eq),e$=e=>{let{__scopeDropdownMenu:t,children:n,dir:o,open:a,defaultOpen:l,onOpenChange:u,modal:c=!0}=e,s=eY(t),d=r.useRef(null),[f=!1,p]=(0,i.i)({prop:a,defaultProp:l,onChange:u});return(0,x.jsx)(eW,{scope:t,triggerId:(0,m.B)(),triggerRef:d,contentId:(0,m.B)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:c,children:(0,x.jsx)(er,{...s,open:f,onOpenChange:p,dir:o,modal:c,children:n})})};e$.displayName=eq;var e0="DropdownMenuTrigger",e1=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,disabled:r=!1,...l}=e,i=eQ(e0,n),c=eY(n);return(0,x.jsx)(eo,{asChild:!0,...c,children:(0,x.jsx)(u.sG.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...l,ref:(0,a.t)(t,i.triggerRef),onPointerDown:(0,o.m)(e.onPointerDown,e=>{r||0!==e.button||!1!==e.ctrlKey||(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:(0,o.m)(e.onKeyDown,e=>{!r&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});e1.displayName=e0;var e2=e=>{let{__scopeDropdownMenu:t,...n}=e,r=eY(t);return(0,x.jsx)(eu,{...r,...n})};e2.displayName="DropdownMenuPortal";var e5="DropdownMenuContent",e7=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...a}=e,l=eQ(e5,n),i=eY(n),u=r.useRef(!1);return(0,x.jsx)(ef,{id:l.contentId,"aria-labelledby":l.triggerId,...i,...a,ref:t,onCloseAutoFocus:(0,o.m)(e.onCloseAutoFocus,e=>{var t;u.current||null===(t=l.triggerRef.current)||void 0===t||t.focus(),u.current=!1,e.preventDefault()}),onInteractOutside:(0,o.m)(e.onInteractOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey,r=2===t.button||n;(!l.modal||r)&&(u.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});e7.displayName=e5;var e4=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eh,{...o,...r,ref:t})});e4.displayName="DropdownMenuGroup";var e8=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eg,{...o,...r,ref:t})});e8.displayName="DropdownMenuLabel";var e9=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(ex,{...o,...r,ref:t})});e9.displayName="DropdownMenuItem";var e6=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eC,{...o,...r,ref:t})});e6.displayName="DropdownMenuCheckboxItem";var e3=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eD,{...o,...r,ref:t})});e3.displayName="DropdownMenuRadioGroup";var te=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eS,{...o,...r,ref:t})});te.displayName="DropdownMenuRadioItem";var tt=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eT,{...o,...r,ref:t})});tt.displayName="DropdownMenuItemIndicator";var tn=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eP,{...o,...r,ref:t})});tn.displayName="DropdownMenuSeparator",r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eN,{...o,...r,ref:t})}).displayName="DropdownMenuArrow";var tr=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eG,{...o,...r,ref:t})});tr.displayName="DropdownMenuSubTrigger";var to=r.forwardRef((e,t)=>{let{__scopeDropdownMenu:n,...r}=e,o=eY(n);return(0,x.jsx)(eU,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});to.displayName="DropdownMenuSubContent";var ta=e$,tl=e1,ti=e2,tu=e7,tc=e4,ts=e8,td=e9,tf=e6,tp=e3,tm=te,tv=tt,th=tn,tg=e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:o,defaultOpen:a}=e,l=eY(t),[u=!1,c]=(0,i.i)({prop:r,defaultProp:a,onChange:o});return(0,x.jsx)(eF,{...l,open:u,onOpenChange:c,children:n})},tw=tr,ty=to},39524:(e,t,n)=>{n.d(t,{D:()=>c,N:()=>s});var r=n(20107),o=["light","dark"],a="(prefers-color-scheme: dark)",l="undefined"==typeof window,i=r.createContext(void 0),u={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=r.useContext(i))?e:u},s=e=>r.useContext(i)?e.children:r.createElement(f,{...e}),d=["light","dark"],f=e=>{let{forcedTheme:t,disableTransitionOnChange:n=!1,enableSystem:l=!0,enableColorScheme:u=!0,storageKey:c="theme",themes:s=d,defaultTheme:f=l?"system":"light",attribute:g="data-theme",value:w,children:y,nonce:x}=e,[b,C]=r.useState(()=>m(c,f)),[M,R]=r.useState(()=>m(c)),j=w?Object.values(w):s,D=r.useCallback(e=>{let t=e;if(!t)return;"system"===e&&l&&(t=h());let r=w?w[t]:t,a=n?v():null,i=document.documentElement;if("class"===g?(i.classList.remove(...j),r&&i.classList.add(r)):r?i.setAttribute(g,r):i.removeAttribute(g),u){let e=o.includes(f)?f:null,n=o.includes(t)?t:e;i.style.colorScheme=n}null==a||a()},[]),k=r.useCallback(e=>{let t="function"==typeof e?e(e):e;C(t);try{localStorage.setItem(c,t)}catch(e){}},[t]),S=r.useCallback(e=>{R(h(e)),"system"===b&&l&&!t&&D("system")},[b,t]);r.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(S),S(e),()=>e.removeListener(S)},[S]),r.useEffect(()=>{let e=e=>{e.key===c&&k(e.newValue||f)};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[k]),r.useEffect(()=>{D(null!=t?t:b)},[t,b]);let _=r.useMemo(()=>({theme:b,setTheme:k,forcedTheme:t,resolvedTheme:"system"===b?M:b,themes:l?[...s,"system"]:s,systemTheme:l?M:void 0}),[b,k,t,M,l,s]);return r.createElement(i.Provider,{value:_},r.createElement(p,{forcedTheme:t,disableTransitionOnChange:n,enableSystem:l,enableColorScheme:u,storageKey:c,themes:s,defaultTheme:f,attribute:g,value:w,children:y,attrs:j,nonce:x}),y)},p=r.memo(e=>{let{forcedTheme:t,storageKey:n,attribute:l,enableSystem:i,enableColorScheme:u,defaultTheme:c,value:s,attrs:d,nonce:f}=e,p="system"===c,m="class"===l?"var d=document.documentElement,c=d.classList;".concat("c.remove(".concat(d.map(e=>"'".concat(e,"'")).join(","),")"),";"):"var d=document.documentElement,n='".concat(l,"',s='setAttribute';"),v=u?(o.includes(c)?c:null)?"if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'".concat(c,"'"):"if(e==='light'||e==='dark')d.style.colorScheme=e":"",h=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=!(arguments.length>2)||void 0===arguments[2]||arguments[2],r=s?s[e]:e,a=t?e+"|| ''":"'".concat(r,"'"),i="";return u&&n&&!t&&o.includes(e)&&(i+="d.style.colorScheme = '".concat(e,"';")),"class"===l?t||r?i+="c.add(".concat(a,")"):i+="null":r&&(i+="d[s](n,".concat(a,")")),i},g=t?"!function(){".concat(m).concat(h(t),"}()"):i?"!function(){try{".concat(m,"var e=localStorage.getItem('").concat(n,"');if('system'===e||(!e&&").concat(p,")){var t='").concat(a,"',m=window.matchMedia(t);if(m.media!==t||m.matches){").concat(h("dark"),"}else{").concat(h("light"),"}}else if(e){").concat(s?"var x=".concat(JSON.stringify(s),";"):"").concat(h(s?"x[e]":"e",!0),"}").concat(p?"":"else{"+h(c,!1,!1)+"}").concat(v,"}catch(e){}}()"):"!function(){try{".concat(m,"var e=localStorage.getItem('").concat(n,"');if(e){").concat(s?"var x=".concat(JSON.stringify(s),";"):"").concat(h(s?"x[e]":"e",!0),"}else{").concat(h(c,!1,!1),";}").concat(v,"}catch(t){}}();");return r.createElement("script",{nonce:f,dangerouslySetInnerHTML:{__html:g}})}),m=(e,t)=>{let n;if(!l){try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t}},v=()=>{let e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(e)},1)}},h=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")}}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-114fb5f8ed454b46.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-114fb5f8ed454b46.js deleted file mode 100644 index f1ce314..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-114fb5f8ed454b46.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6655],{39884:(e,s,t)=>{Promise.resolve().then(t.bind(t,51228))},51228:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>d});var n=t(20475),r=t(20107),a=t(72167);let l=()=>{let[e,s]=(0,r.useState)(null),[t,n]=(0,r.useState)(!0),a=(0,r.useCallback)(async()=>{try{n(!0);let e=await fetch("/cgi-bin/fetch_data.sh?set=3"),t=await e.json();console.log("Fetched about data:",t);let r={manufacturer:t[0].response.split("\n")[1].trim(),model:t[1].response.split("\n")[1].trim(),firmwareVersion:t[2].response.split("\n")[1].trim(),phoneNum:t[3].response.split("\n")[1].split(":")[1].split(",")[1].replace(/"/g,"").trim(),imsi:t[4].response.split("\n")[1].trim(),iccid:t[5].response.split("\n")[1].split(":")[1].trim(),imei:t[6].response.split("\n")[1].trim(),currentDeviceIP:t[7].response.split("\n")[1].split(",")[1].replace(/"/g,"").trim(),lanGateway:t[7].response.split("\n")[1].split(":")[1].split(",")[3].replace(/"/g,"").trim(),wwanIPv4:t[8].response.split("\n")[1].split(":")[1].split(",")[4].replace(/"/g,"").trim(),wwanIPv6:t[8].response.split("\n")[2].split(",")[4].replace(/"/g,"").trim(),lteCategory:t[9].response.split("\n")[5].split(":")[2].trim()};s(r),console.log("Processed cell settings data:",r)}catch(e){console.error("Error fetching cell settings data:",e)}n(!1)},[]);return(0,r.useEffect)(()=>{a()},[a]),{data:e,isLoading:t,fetchAboutData:a}};var i=t(36824),c=t(36760);let d=()=>{let{data:e,isLoading:s}=l();return(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"QuecManager"}),(0,n.jsx)(a.BT,{children:"What is QuecManager and how it can help you."})]}),(0,n.jsxs)(a.Wu,{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-8",children:[(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"Device Technical Details"}),(0,n.jsx)(a.BT,{children:"View technical details of your device."})]}),(0,n.jsx)(a.Wu,{children:(0,n.jsxs)(i.F,{className:"w-full",children:[(0,n.jsxs)("div",{className:"grid gap-2",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Modem Manufacturer"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.manufacturer)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Modem Model"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.model)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Firmware Revision"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.firmwareVersion)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"LTE Category"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsxs)(n.Fragment,{children:["CAT-",(null==e?void 0:e.lteCategory)||"N/A"]})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active Phone Number"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.phoneNum)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active IMSI"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.imsi)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active ICCID"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.iccid)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"IMEI"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.imei)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Current Device IP"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.currentDeviceIP)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"LAN Gateway"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.lanGateway)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"WWAN IPv4"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.wwanIPv4)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"WWAN IPv6"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:s?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.wwanIPv6)||"N/A"})})]})]}),(0,n.jsx)(i.$,{orientation:"horizontal"})]})})]}),(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"About Us"}),(0,n.jsx)(a.BT,{children:"Who we are and what we do."})]}),(0,n.jsxs)(a.Wu,{className:"space-y-6",children:[(0,n.jsxs)("div",{className:"grid gap-2",children:[(0,n.jsx)("h1",{className:"text-xl font-bold antialiased",children:"QuecManager"}),(0,n.jsx)("p",{className:"text-md font-medium antialiased",children:"QuecManager began as 'Simple Admin,' a straightforward GUI in the RGMII toolkit. Over time, it’s evolved into a comprehensive dashboard with powerful features for managing cellular modems. While we’ve moved beyond the 'Simple' name, our goal remains the same: providing a clean, easy-to-use interface that makes advanced modem management feel straightforward and accessible."})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-xl font-bold antialiased",children:"Thanks to"}),(0,n.jsxs)("ul",{className:"list-disc list-inside text-md font-medium antialiased",children:[(0,n.jsxs)("li",{children:["RGMII Toolkit and Documentation, and Backend",(0,n.jsx)("a",{href:"https://github.com/iamromulan",target:"_blank",className:"text-primary font-semibold ml-2",children:"iamromulan"})]}),(0,n.jsxs)("li",{children:["Simple Admin 2.0 and QuecManager GUI",(0,n.jsx)("a",{href:"https://github.com/dr-dolomite",target:"_blank",className:"text-primary font-semibold ml-2",children:"dr-dolomite"})]}),(0,n.jsxs)("li",{children:["SMS Feature",(0,n.jsx)("a",{href:"https://github.com/snjzb",target:"_blank",className:"text-primary font-semibold ml-2",children:"snjzb"})]}),(0,n.jsxs)("li",{children:["Original Simple Admin",(0,n.jsx)("a",{href:"https://github.com/aesthernr",target:"_blank",className:"text-primary font-semibold ml-2",children:"aesthernr"})]}),(0,n.jsxs)("li",{children:["Original Socat Bridge",(0,n.jsx)("a",{href:"https://github.com/natecarlson",target:"_blank",className:"text-primary font-semibold ml-2",children:"natecarlson"})]}),(0,n.jsx)("li",{children:"Wutang Clan"})]})]})]})]})]}),(0,n.jsx)(a.wL,{className:"flex justify-center",children:(0,n.jsx)("p",{children:"QuecManager \xa9 2024 - For Personal Use Only. All rights reserved."})})]})}},72167:(e,s,t)=>{"use strict";t.d(s,{BT:()=>d,Wu:()=>o,ZB:()=>c,Zp:()=>l,aR:()=>i,wL:()=>m});var n=t(20475),r=t(20107),a=t(22250);let l=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)("div",{ref:s,className:(0,a.cn)("rounded-xl border bg-card text-card-foreground shadow",t),...r})});l.displayName="Card";let i=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)("div",{ref:s,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",t),...r})});i.displayName="CardHeader";let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)("h3",{ref:s,className:(0,a.cn)("font-semibold leading-none tracking-tight",t),...r})});c.displayName="CardTitle";let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)("p",{ref:s,className:(0,a.cn)("text-sm text-muted-foreground",t),...r})});d.displayName="CardDescription";let o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)("div",{ref:s,className:(0,a.cn)("p-6 pt-0",t),...r})});o.displayName="CardContent";let m=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,n.jsx)("div",{ref:s,className:(0,a.cn)("flex items-center p-6 pt-0",t),...r})});m.displayName="CardFooter"},36824:(e,s,t)=>{"use strict";t.d(s,{$:()=>c,F:()=>i});var n=t(20475),r=t(20107),a=t(34568),l=t(22250);let i=r.forwardRef((e,s)=>{let{className:t,children:r,...i}=e;return(0,n.jsxs)(a.bL,{ref:s,className:(0,l.cn)("relative overflow-hidden",t),...i,children:[(0,n.jsx)(a.LM,{className:"h-full w-full rounded-[inherit]",children:r}),(0,n.jsx)(c,{}),(0,n.jsx)(a.OK,{})]})});i.displayName=a.bL.displayName;let c=r.forwardRef((e,s)=>{let{className:t,orientation:r="vertical",...i}=e;return(0,n.jsx)(a.VM,{ref:s,orientation:r,className:(0,l.cn)("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...i,children:(0,n.jsx)(a.lr,{className:"relative flex-1 rounded-full bg-border"})})});c.displayName=a.VM.displayName},36760:(e,s,t)=>{"use strict";t.d(s,{E:()=>a});var n=t(20475),r=t(22250);function a(e){let{className:s,...t}=e;return(0,n.jsx)("div",{className:(0,r.cn)("animate-pulse rounded-md bg-primary/10",s),...t})}},22250:(e,s,t)=>{"use strict";t.d(s,{cn:()=>a});var n=t(64901),r=t(868);function a(){for(var e=arguments.length,s=Array(e),t=0;t{"use strict";function n(e,s,{checkForDefaultPrevented:t=!0}={}){return function(n){if(e?.(n),!1===t||!n.defaultPrevented)return s?.(n)}}t.d(s,{m:()=>n})},80938:(e,s,t)=>{"use strict";t.d(s,{A:()=>l,q:()=>a});var n=t(20107),r=t(20475);function a(e,s){let t=n.createContext(s),a=e=>{let{children:s,...a}=e,l=n.useMemo(()=>a,Object.values(a));return(0,r.jsx)(t.Provider,{value:l,children:s})};return a.displayName=e+"Provider",[a,function(r){let a=n.useContext(t);if(a)return a;if(void 0!==s)return s;throw Error(`\`${r}\` must be used within \`${e}\``)}]}function l(e,s=[]){let t=[],a=()=>{let s=t.map(e=>n.createContext(e));return function(t){let r=t?.[e]||s;return n.useMemo(()=>({[`__scope${e}`]:{...t,[e]:r}}),[t,r])}};return a.scopeName=e,[function(s,a){let l=n.createContext(a),i=t.length;t=[...t,a];let c=s=>{let{scope:t,children:a,...c}=s,d=t?.[e]?.[i]||l,o=n.useMemo(()=>c,Object.values(c));return(0,r.jsx)(d.Provider,{value:o,children:a})};return c.displayName=s+"Provider",[c,function(t,r){let c=r?.[e]?.[i]||l,d=n.useContext(c);if(d)return d;if(void 0!==a)return a;throw Error(`\`${t}\` must be used within \`${s}\``)}]},function(...e){let s=e[0];if(1===e.length)return s;let t=()=>{let t=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=t.reduce((s,{useScope:t,scopeName:n})=>{let r=t(e)[`__scope${n}`];return{...s,...r}},{});return n.useMemo(()=>({[`__scope${s.scopeName}`]:r}),[r])}};return t.scopeName=s.scopeName,t}(a,...s)]}},62796:(e,s,t)=>{"use strict";t.d(s,{C:()=>l});var n=t(20107),r=t(74111),a=t(58013),l=e=>{let{present:s,children:t}=e,l=function(e){var s,t;let[r,l]=n.useState(),c=n.useRef({}),d=n.useRef(e),o=n.useRef("none"),[m,u]=(s=e?"mounted":"unmounted",t={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},n.useReducer((e,s)=>{let n=t[e][s];return null!=n?n:e},s));return n.useEffect(()=>{let e=i(c.current);o.current="mounted"===m?e:"none"},[m]),(0,a.N)(()=>{let s=c.current,t=d.current;if(t!==e){let n=o.current,r=i(s);e?u("MOUNT"):"none"===r||(null==s?void 0:s.display)==="none"?u("UNMOUNT"):t&&n!==r?u("ANIMATION_OUT"):u("UNMOUNT"),d.current=e}},[e,u]),(0,a.N)(()=>{if(r){var e;let s;let t=null!==(e=r.ownerDocument.defaultView)&&void 0!==e?e:window,n=e=>{let n=i(c.current).includes(e.animationName);if(e.target===r&&n&&(u("ANIMATION_END"),!d.current)){let e=r.style.animationFillMode;r.style.animationFillMode="forwards",s=t.setTimeout(()=>{"forwards"===r.style.animationFillMode&&(r.style.animationFillMode=e)})}},a=e=>{e.target===r&&(o.current=i(c.current))};return r.addEventListener("animationstart",a),r.addEventListener("animationcancel",n),r.addEventListener("animationend",n),()=>{t.clearTimeout(s),r.removeEventListener("animationstart",a),r.removeEventListener("animationcancel",n),r.removeEventListener("animationend",n)}}u("ANIMATION_END")},[r,u]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:n.useCallback(e=>{e&&(c.current=getComputedStyle(e)),l(e)},[])}}(s),c="function"==typeof t?t({present:l.isPresent}):n.Children.only(t),d=(0,r.s)(l.ref,function(e){var s,t;let n=null===(s=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===s?void 0:s.get,r=n&&"isReactWarning"in n&&n.isReactWarning;return r?e.ref:(r=(n=null===(t=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===t?void 0:t.get)&&"isReactWarning"in n&&n.isReactWarning)?e.props.ref:e.props.ref||e.ref}(c));return"function"==typeof t||l.isPresent?n.cloneElement(c,{ref:d}):null};function i(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},4589:(e,s,t)=>{"use strict";t.d(s,{hO:()=>c,sG:()=>i});var n=t(20107),r=t(25642),a=t(61837),l=t(20475),i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,s)=>{let t=n.forwardRef((e,t)=>{let{asChild:n,...r}=e,i=n?a.DX:s;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(i,{...r,ref:t})});return t.displayName=`Primitive.${s}`,{...e,[s]:t}},{});function c(e,s){e&&r.flushSync(()=>e.dispatchEvent(s))}},85547:(e,s,t)=>{"use strict";t.d(s,{c:()=>r});var n=t(20107);function r(e){let s=n.useRef(e);return n.useEffect(()=>{s.current=e}),n.useMemo(()=>(...e)=>s.current?.(...e),[])}},58013:(e,s,t)=>{"use strict";t.d(s,{N:()=>r});var n=t(20107),r=globalThis?.document?n.useLayoutEffect:()=>{}}},e=>{var s=s=>e(e.s=s);e.O(0,[7780,4568,191,6035,7358],()=>s(39884)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-1f3a1d3da213686b.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-1f3a1d3da213686b.js deleted file mode 100644 index 20bcbe9..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-1f3a1d3da213686b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6655],{39884:(e,t,s)=>{Promise.resolve().then(s.bind(s,51228))},51228:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>d});var n=s(20475),r=s(20107),a=s(72167);let l=()=>{let[e,t]=(0,r.useState)(null),[s,n]=(0,r.useState)(!0),a=(0,r.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/quecmanager/settings/device-uptime.sh"),s=await e.json();t(e=>e?{...e,deviceUptime:s.uptime.formatted||"N/A"}:e)}catch(e){console.error("Error fetching uptime:",e)}},[]),l=(0,r.useCallback)(async()=>{try{n(!0);let[e,s]=await Promise.all([fetch("/cgi-bin/quecmanager/at_cmd/fetch_data.sh?set=3"),fetch("/cgi-bin/quecmanager/settings/device-uptime.sh")]),[r,a]=await Promise.all([e.json(),s.json()]);console.log("Fetched about data:",r),console.log("Fetched uptime data:",a);let l={manufacturer:r[0].response.split("\n")[1].trim(),model:r[1].response.split("\n")[1].trim(),firmwareVersion:r[2].response.split("\n")[1].trim(),phoneNum:r[3].response.split("\n")[1].split(":")[1].split(",")[1].replace(/"/g,"").trim(),imsi:r[4].response.split("\n")[1].trim(),iccid:r[5].response.split("\n")[1].split(":")[1].trim(),imei:r[6].response.split("\n")[1].trim(),currentDeviceIP:r[7].response.split("\n")[1].split(",")[1].replace(/"/g,"").trim(),lanGateway:r[7].response.split("\n")[1].split(":")[1].split(",")[3].replace(/"/g,"").trim(),wwanIPv4:r[8].response.split("\n")[1].split(":")[1].split(",")[4].replace(/"/g,"").trim(),wwanIPv6:r[8].response.split("\n")[2].split(",")[4].replace(/"/g,"").trim(),lteCategory:r[9].response.split("\n")[5].split(":")[2].trim(),deviceUptime:a.uptime.formatted||"N/A"};t(l),console.log("Processed data:",l)}catch(e){console.error("Error fetching data:",e)}n(!1)},[]);return(0,r.useEffect)(()=>{l();let e=setInterval(a,1e3);return()=>{clearInterval(e)}},[l,a]),{data:e,isLoading:s,fetchAboutData:l}};var i=s(36824),c=s(36760);let d=()=>{let{data:e,isLoading:t}=l();return(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"QuecManager"}),(0,n.jsx)(a.BT,{children:"What is QuecManager and how it can help you."})]}),(0,n.jsxs)(a.Wu,{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-8",children:[(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"Device Technical Details"}),(0,n.jsx)(a.BT,{children:"View technical details of your device."})]}),(0,n.jsx)(a.Wu,{children:(0,n.jsxs)(i.F,{className:"w-full",children:[(0,n.jsxs)("div",{className:"grid gap-2",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Modem Manufacturer"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.manufacturer)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Modem Model"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.model)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Firmware Revision"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.firmwareVersion)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"LTE Category"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsxs)(n.Fragment,{children:["CAT-",(null==e?void 0:e.lteCategory)||"N/A"]})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active Phone Number"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.phoneNum)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active IMSI"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.imsi)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active ICCID"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.iccid)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"IMEI"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.imei)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Current Device IP"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.currentDeviceIP)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"LAN Gateway"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.lanGateway)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"WWAN IPv4"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.wwanIPv4)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"WWAN IPv6"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.wwanIPv6)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Device Uptime"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.deviceUptime)||"N/A"})})]})]}),(0,n.jsx)(i.$,{orientation:"horizontal"})]})})]}),(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"About Us"}),(0,n.jsx)(a.BT,{children:"Who we are and what we do."})]}),(0,n.jsxs)(a.Wu,{className:"space-y-6",children:[(0,n.jsxs)("div",{className:"grid gap-2",children:[(0,n.jsx)("h1",{className:"text-xl font-bold antialiased",children:"QuecManager"}),(0,n.jsx)("p",{className:"text-md font-medium antialiased",children:"QuecManager began as 'Simple Admin,' a straightforward GUI in the RGMII toolkit. Over time, it’s evolved into a comprehensive dashboard with powerful features for managing cellular modems. While we’ve moved beyond the 'Simple' name, our goal remains the same: providing a clean, easy-to-use interface that makes advanced modem management feel straightforward and accessible."})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-xl font-bold antialiased",children:"Thanks to"}),(0,n.jsxs)("ul",{className:"list-disc list-inside text-md font-medium antialiased",children:[(0,n.jsxs)("li",{children:["RGMII Toolkit, Documentation, and Backend",(0,n.jsx)("a",{href:"https://github.com/iamromulan",target:"_blank",className:"text-primary font-semibold ml-2",children:"iamromulan"})]}),(0,n.jsxs)("li",{children:["Simple Admin 2.0 and QuecManager GUI",(0,n.jsx)("a",{href:"https://github.com/dr-dolomite",target:"_blank",className:"text-primary font-semibold ml-2",children:"dr-dolomite"})]}),(0,n.jsxs)("li",{children:["Original Simple Admin",(0,n.jsx)("a",{href:"https://github.com/aesthernr",target:"_blank",className:"text-primary font-semibold ml-2",children:"aesthernr"})]}),(0,n.jsxs)("li",{children:["Original Socat Bridge",(0,n.jsx)("a",{href:"https://github.com/natecarlson",target:"_blank",className:"text-primary font-semibold ml-2",children:"natecarlson"})]}),(0,n.jsx)("li",{children:"Wutang Clan"})]})]})]})]})]}),(0,n.jsx)(a.wL,{className:"flex justify-center",children:(0,n.jsx)("p",{children:"QuecManager \xa9 2024 - For Personal Use Only. All rights reserved."})})]})}},72167:(e,t,s)=>{"use strict";s.d(t,{BT:()=>d,Wu:()=>o,ZB:()=>c,Zp:()=>l,aR:()=>i,wL:()=>m});var n=s(20475),r=s(20107),a=s(22250);let l=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("rounded-xl border bg-card text-card-foreground shadow",s),...r})});l.displayName="Card";let i=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",s),...r})});i.displayName="CardHeader";let c=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("h3",{ref:t,className:(0,a.cn)("font-semibold leading-none tracking-tight",s),...r})});c.displayName="CardTitle";let d=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",s),...r})});d.displayName="CardDescription";let o=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",s),...r})});o.displayName="CardContent";let m=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",s),...r})});m.displayName="CardFooter"},36824:(e,t,s)=>{"use strict";s.d(t,{$:()=>c,F:()=>i});var n=s(20475),r=s(20107),a=s(89679),l=s(22250);let i=r.forwardRef((e,t)=>{let{className:s,children:r,...i}=e;return(0,n.jsxs)(a.bL,{ref:t,className:(0,l.cn)("relative overflow-hidden",s),...i,children:[(0,n.jsx)(a.LM,{className:"h-full w-full rounded-[inherit]",children:r}),(0,n.jsx)(c,{}),(0,n.jsx)(a.OK,{})]})});i.displayName=a.bL.displayName;let c=r.forwardRef((e,t)=>{let{className:s,orientation:r="vertical",...i}=e;return(0,n.jsx)(a.VM,{ref:t,orientation:r,className:(0,l.cn)("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",s),...i,children:(0,n.jsx)(a.lr,{className:"relative flex-1 rounded-full bg-border"})})});c.displayName=a.VM.displayName},36760:(e,t,s)=>{"use strict";s.d(t,{E:()=>a});var n=s(20475),r=s(22250);function a(e){let{className:t,...s}=e;return(0,n.jsx)("div",{className:(0,r.cn)("animate-pulse rounded-md bg-primary/10",t),...s})}},22250:(e,t,s)=>{"use strict";s.d(t,{cn:()=>a});var n=s(64901),r=s(868);function a(){for(var e=arguments.length,t=Array(e),s=0;s{"use strict";function n(e,t,{checkForDefaultPrevented:s=!0}={}){return function(n){if(e?.(n),!1===s||!n.defaultPrevented)return t?.(n)}}s.d(t,{m:()=>n})},45170:(e,t,s)=>{"use strict";s.d(t,{A:()=>l,q:()=>a});var n=s(20107),r=s(20475);function a(e,t){let s=n.createContext(t),a=e=>{let{children:t,...a}=e,l=n.useMemo(()=>a,Object.values(a));return(0,r.jsx)(s.Provider,{value:l,children:t})};return a.displayName=e+"Provider",[a,function(r){let a=n.useContext(s);if(a)return a;if(void 0!==t)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}]}function l(e,t=[]){let s=[],a=()=>{let t=s.map(e=>n.createContext(e));return function(s){let r=s?.[e]||t;return n.useMemo(()=>({[`__scope${e}`]:{...s,[e]:r}}),[s,r])}};return a.scopeName=e,[function(t,a){let l=n.createContext(a),i=s.length;s=[...s,a];let c=t=>{let{scope:s,children:a,...c}=t,d=s?.[e]?.[i]||l,o=n.useMemo(()=>c,Object.values(c));return(0,r.jsx)(d.Provider,{value:o,children:a})};return c.displayName=t+"Provider",[c,function(s,r){let c=r?.[e]?.[i]||l,d=n.useContext(c);if(d)return d;if(void 0!==a)return a;throw Error(`\`${s}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let s=()=>{let s=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=s.reduce((t,{useScope:s,scopeName:n})=>{let r=s(e)[`__scope${n}`];return{...t,...r}},{});return n.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return s.scopeName=t.scopeName,s}(a,...t)]}},54245:(e,t,s)=>{"use strict";s.d(t,{C:()=>l});var n=s(20107),r=s(64236),a=s(54122),l=e=>{let{present:t,children:s}=e,l=function(e){var t,s;let[r,l]=n.useState(),c=n.useRef({}),d=n.useRef(e),o=n.useRef("none"),[m,u]=(t=e?"mounted":"unmounted",s={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},n.useReducer((e,t)=>{let n=s[e][t];return null!=n?n:e},t));return n.useEffect(()=>{let e=i(c.current);o.current="mounted"===m?e:"none"},[m]),(0,a.N)(()=>{let t=c.current,s=d.current;if(s!==e){let n=o.current,r=i(t);e?u("MOUNT"):"none"===r||(null==t?void 0:t.display)==="none"?u("UNMOUNT"):s&&n!==r?u("ANIMATION_OUT"):u("UNMOUNT"),d.current=e}},[e,u]),(0,a.N)(()=>{if(r){var e;let t;let s=null!==(e=r.ownerDocument.defaultView)&&void 0!==e?e:window,n=e=>{let n=i(c.current).includes(e.animationName);if(e.target===r&&n&&(u("ANIMATION_END"),!d.current)){let e=r.style.animationFillMode;r.style.animationFillMode="forwards",t=s.setTimeout(()=>{"forwards"===r.style.animationFillMode&&(r.style.animationFillMode=e)})}},a=e=>{e.target===r&&(o.current=i(c.current))};return r.addEventListener("animationstart",a),r.addEventListener("animationcancel",n),r.addEventListener("animationend",n),()=>{s.clearTimeout(t),r.removeEventListener("animationstart",a),r.removeEventListener("animationcancel",n),r.removeEventListener("animationend",n)}}u("ANIMATION_END")},[r,u]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:n.useCallback(e=>{e&&(c.current=getComputedStyle(e)),l(e)},[])}}(t),c="function"==typeof s?s({present:l.isPresent}):n.Children.only(s),d=(0,r.s)(l.ref,function(e){var t,s;let n=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,r=n&&"isReactWarning"in n&&n.isReactWarning;return r?e.ref:(r=(n=null===(s=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===s?void 0:s.get)&&"isReactWarning"in n&&n.isReactWarning)?e.props.ref:e.props.ref||e.ref}(c));return"function"==typeof s||l.isPresent?n.cloneElement(c,{ref:d}):null};function i(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},34544:(e,t,s)=>{"use strict";s.d(t,{hO:()=>c,sG:()=>i});var n=s(20107),r=s(25642),a=s(61837),l=s(20475),i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let s=n.forwardRef((e,s)=>{let{asChild:n,...r}=e,i=n?a.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(i,{...r,ref:s})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{});function c(e,t){e&&r.flushSync(()=>e.dispatchEvent(t))}},46774:(e,t,s)=>{"use strict";s.d(t,{c:()=>r});var n=s(20107);function r(e){let t=n.useRef(e);return n.useEffect(()=>{t.current=e}),n.useMemo(()=>(...e)=>t.current?.(...e),[])}},54122:(e,t,s)=>{"use strict";s.d(t,{N:()=>r});var n=s(20107),r=globalThis?.document?n.useLayoutEffect:()=>{}}},e=>{var t=t=>e(e.s=t);e.O(0,[7780,9679,191,6035,7358],()=>t(39884)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-5431674c006b4771.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-5431674c006b4771.js new file mode 100644 index 0000000..e474de7 --- /dev/null +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/about/page-5431674c006b4771.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6655],{39884:(e,t,s)=>{Promise.resolve().then(s.bind(s,51228))},51228:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>d});var n=s(20475),r=s(20107),a=s(72167);let l=()=>{let[e,t]=(0,r.useState)(null),[s,n]=(0,r.useState)(!0),a=(0,r.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/quecmanager/settings/device-uptime.sh"),s=await e.json();t(e=>e?{...e,deviceUptime:s.uptime.formatted||"N/A"}:e)}catch(e){console.error("Error fetching uptime:",e)}},[]),l=(0,r.useCallback)(async()=>{try{n(!0);let[e,s]=await Promise.all([fetch("/cgi-bin/quecmanager/at_cmd/fetch_data.sh?set=3"),fetch("/cgi-bin/quecmanager/settings/device-uptime.sh")]),[r,a]=await Promise.all([e.json(),s.json()]);console.log("Fetched about data:",r),console.log("Fetched uptime data:",a);let l={manufacturer:r[0].response.split("\n")[1].trim(),model:r[1].response.split("\n")[1].trim(),firmwareVersion:r[2].response.split("\n")[1].trim(),phoneNum:r[3].response.split("\n")[1].split(":")[1].split(",")[1].replace(/"/g,"").trim(),imsi:r[4].response.split("\n")[1].trim(),iccid:r[5].response.split("\n")[1].split(":")[1].trim(),imei:r[6].response.split("\n")[1].trim(),currentDeviceIP:r[7].response.split("\n")[1].split(",")[1].replace(/"/g,"").trim(),lanGateway:r[7].response.split("\n")[1].split(":")[1].split(",")[3].replace(/"/g,"").trim(),wwanIPv4:r[8].response.split("\n")[1].split(":")[1].split(",")[4].replace(/"/g,"").trim(),wwanIPv6:r[8].response.split("\n")[2].split(",")[4].replace(/"/g,"").trim(),lteCategory:r[9].response.split("\n")[5].split(":")[2].trim(),deviceUptime:a.uptime.formatted||"N/A"};t(l),console.log("Processed data:",l)}catch(e){console.error("Error fetching data:",e)}n(!1)},[]);return(0,r.useEffect)(()=>{l();let e=setInterval(a,1e3);return()=>{clearInterval(e)}},[l,a]),{data:e,isLoading:s,fetchAboutData:l}};var i=s(36824),c=s(36760);let d=()=>{let{data:e,isLoading:t}=l();return(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"QuecManager"}),(0,n.jsx)(a.BT,{children:"What is QuecManager and how it can help you."})]}),(0,n.jsxs)(a.Wu,{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-8",children:[(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"Device Technical Details"}),(0,n.jsx)(a.BT,{children:"View technical details of your device."})]}),(0,n.jsx)(a.Wu,{children:(0,n.jsxs)(i.F,{className:"w-full",children:[(0,n.jsxs)("div",{className:"grid gap-2",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Modem Manufacturer"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.manufacturer)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Modem Model"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.model)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Firmware Revision"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.firmwareVersion)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"LTE Category"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsxs)(n.Fragment,{children:["CAT-",(null==e?void 0:e.lteCategory)||"N/A"]})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active Phone Number"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.phoneNum)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active IMSI"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.imsi)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Active ICCID"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.iccid)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"IMEI"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.imei)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Current Device IP"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.currentDeviceIP)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"LAN Gateway"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.lanGateway)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"WWAN IPv4"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.wwanIPv4)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"WWAN IPv6"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.wwanIPv6)||"N/A"})})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{children:"Device Uptime"}),(0,n.jsx)("span",{className:"font-semibold max-w-32 md:max-w-full truncate",children:t?(0,n.jsx)(c.E,{className:"h-4 w-32"}):(0,n.jsx)(n.Fragment,{children:(null==e?void 0:e.deviceUptime)||"N/A"})})]})]}),(0,n.jsx)(i.$,{orientation:"horizontal"})]})})]}),(0,n.jsxs)(a.Zp,{children:[(0,n.jsxs)(a.aR,{children:[(0,n.jsx)(a.ZB,{children:"About Us"}),(0,n.jsx)(a.BT,{children:"Who we are and what we do."})]}),(0,n.jsxs)(a.Wu,{className:"space-y-6",children:[(0,n.jsxs)("div",{className:"grid gap-2",children:[(0,n.jsx)("h1",{className:"text-xl font-bold antialiased",children:"QuecManager"}),(0,n.jsx)("p",{className:"text-md font-medium antialiased",children:"QuecManager began as 'Simple Admin,' a straightforward GUI in the RGMII toolkit. Over time, it evolved into a comprehensive dashboard with powerful features for managing cellular modems. While we’ve moved beyond the 'Simple' name, our goal remains the same: providing a clean, easy-to-use interface that makes advanced modem management feel straightforward and accessible."})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-xl font-bold antialiased",children:"Thanks to"}),(0,n.jsxs)("ul",{className:"list-disc list-inside text-md font-medium antialiased",children:[(0,n.jsxs)("li",{children:["RGMII Toolkit, Documentation, and Backend",(0,n.jsx)("a",{href:"https://github.com/iamromulan",target:"_blank",className:"text-primary font-semibold ml-2",children:"iamromulan"})]}),(0,n.jsxs)("li",{children:["Simple Admin 2.0 and QuecManager GUI",(0,n.jsx)("a",{href:"https://github.com/dr-dolomite",target:"_blank",className:"text-primary font-semibold ml-2",children:"dr-dolomite"})]}),(0,n.jsxs)("li",{children:["Original Simple Admin",(0,n.jsx)("a",{href:"https://github.com/aesthernr",target:"_blank",className:"text-primary font-semibold ml-2",children:"aesthernr"})]}),(0,n.jsxs)("li",{children:["Original Socat Bridge",(0,n.jsx)("a",{href:"https://github.com/natecarlson",target:"_blank",className:"text-primary font-semibold ml-2",children:"natecarlson"})]}),(0,n.jsx)("li",{children:"Wutang Clan"})]})]})]})]})]}),(0,n.jsx)(a.wL,{className:"flex justify-center",children:(0,n.jsx)("p",{children:"QuecManager \xa9 2024 - For Personal Use Only. All rights reserved."})})]})}},72167:(e,t,s)=>{"use strict";s.d(t,{BT:()=>d,Wu:()=>o,ZB:()=>c,Zp:()=>l,aR:()=>i,wL:()=>m});var n=s(20475),r=s(20107),a=s(22250);let l=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("rounded-xl border bg-card text-card-foreground shadow",s),...r})});l.displayName="Card";let i=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",s),...r})});i.displayName="CardHeader";let c=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("h3",{ref:t,className:(0,a.cn)("font-semibold leading-none tracking-tight",s),...r})});c.displayName="CardTitle";let d=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",s),...r})});d.displayName="CardDescription";let o=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",s),...r})});o.displayName="CardContent";let m=r.forwardRef((e,t)=>{let{className:s,...r}=e;return(0,n.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",s),...r})});m.displayName="CardFooter"},36824:(e,t,s)=>{"use strict";s.d(t,{$:()=>c,F:()=>i});var n=s(20475),r=s(20107),a=s(89679),l=s(22250);let i=r.forwardRef((e,t)=>{let{className:s,children:r,...i}=e;return(0,n.jsxs)(a.bL,{ref:t,className:(0,l.cn)("relative overflow-hidden",s),...i,children:[(0,n.jsx)(a.LM,{className:"h-full w-full rounded-[inherit]",children:r}),(0,n.jsx)(c,{}),(0,n.jsx)(a.OK,{})]})});i.displayName=a.bL.displayName;let c=r.forwardRef((e,t)=>{let{className:s,orientation:r="vertical",...i}=e;return(0,n.jsx)(a.VM,{ref:t,orientation:r,className:(0,l.cn)("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",s),...i,children:(0,n.jsx)(a.lr,{className:"relative flex-1 rounded-full bg-border"})})});c.displayName=a.VM.displayName},36760:(e,t,s)=>{"use strict";s.d(t,{E:()=>a});var n=s(20475),r=s(22250);function a(e){let{className:t,...s}=e;return(0,n.jsx)("div",{className:(0,r.cn)("animate-pulse rounded-md bg-primary/10",t),...s})}},22250:(e,t,s)=>{"use strict";s.d(t,{cn:()=>a});var n=s(64901),r=s(868);function a(){for(var e=arguments.length,t=Array(e),s=0;s{"use strict";function n(e,t,{checkForDefaultPrevented:s=!0}={}){return function(n){if(e?.(n),!1===s||!n.defaultPrevented)return t?.(n)}}s.d(t,{m:()=>n})},45170:(e,t,s)=>{"use strict";s.d(t,{A:()=>l,q:()=>a});var n=s(20107),r=s(20475);function a(e,t){let s=n.createContext(t),a=e=>{let{children:t,...a}=e,l=n.useMemo(()=>a,Object.values(a));return(0,r.jsx)(s.Provider,{value:l,children:t})};return a.displayName=e+"Provider",[a,function(r){let a=n.useContext(s);if(a)return a;if(void 0!==t)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}]}function l(e,t=[]){let s=[],a=()=>{let t=s.map(e=>n.createContext(e));return function(s){let r=s?.[e]||t;return n.useMemo(()=>({[`__scope${e}`]:{...s,[e]:r}}),[s,r])}};return a.scopeName=e,[function(t,a){let l=n.createContext(a),i=s.length;s=[...s,a];let c=t=>{let{scope:s,children:a,...c}=t,d=s?.[e]?.[i]||l,o=n.useMemo(()=>c,Object.values(c));return(0,r.jsx)(d.Provider,{value:o,children:a})};return c.displayName=t+"Provider",[c,function(s,r){let c=r?.[e]?.[i]||l,d=n.useContext(c);if(d)return d;if(void 0!==a)return a;throw Error(`\`${s}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let s=()=>{let s=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=s.reduce((t,{useScope:s,scopeName:n})=>{let r=s(e)[`__scope${n}`];return{...t,...r}},{});return n.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return s.scopeName=t.scopeName,s}(a,...t)]}},54245:(e,t,s)=>{"use strict";s.d(t,{C:()=>l});var n=s(20107),r=s(64236),a=s(54122),l=e=>{let{present:t,children:s}=e,l=function(e){var t,s;let[r,l]=n.useState(),c=n.useRef({}),d=n.useRef(e),o=n.useRef("none"),[m,u]=(t=e?"mounted":"unmounted",s={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},n.useReducer((e,t)=>{let n=s[e][t];return null!=n?n:e},t));return n.useEffect(()=>{let e=i(c.current);o.current="mounted"===m?e:"none"},[m]),(0,a.N)(()=>{let t=c.current,s=d.current;if(s!==e){let n=o.current,r=i(t);e?u("MOUNT"):"none"===r||(null==t?void 0:t.display)==="none"?u("UNMOUNT"):s&&n!==r?u("ANIMATION_OUT"):u("UNMOUNT"),d.current=e}},[e,u]),(0,a.N)(()=>{if(r){var e;let t;let s=null!==(e=r.ownerDocument.defaultView)&&void 0!==e?e:window,n=e=>{let n=i(c.current).includes(e.animationName);if(e.target===r&&n&&(u("ANIMATION_END"),!d.current)){let e=r.style.animationFillMode;r.style.animationFillMode="forwards",t=s.setTimeout(()=>{"forwards"===r.style.animationFillMode&&(r.style.animationFillMode=e)})}},a=e=>{e.target===r&&(o.current=i(c.current))};return r.addEventListener("animationstart",a),r.addEventListener("animationcancel",n),r.addEventListener("animationend",n),()=>{s.clearTimeout(t),r.removeEventListener("animationstart",a),r.removeEventListener("animationcancel",n),r.removeEventListener("animationend",n)}}u("ANIMATION_END")},[r,u]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:n.useCallback(e=>{e&&(c.current=getComputedStyle(e)),l(e)},[])}}(t),c="function"==typeof s?s({present:l.isPresent}):n.Children.only(s),d=(0,r.s)(l.ref,function(e){var t,s;let n=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,r=n&&"isReactWarning"in n&&n.isReactWarning;return r?e.ref:(r=(n=null===(s=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===s?void 0:s.get)&&"isReactWarning"in n&&n.isReactWarning)?e.props.ref:e.props.ref||e.ref}(c));return"function"==typeof s||l.isPresent?n.cloneElement(c,{ref:d}):null};function i(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},34544:(e,t,s)=>{"use strict";s.d(t,{hO:()=>c,sG:()=>i});var n=s(20107),r=s(25642),a=s(61837),l=s(20475),i=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let s=n.forwardRef((e,s)=>{let{asChild:n,...r}=e,i=n?a.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(i,{...r,ref:s})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{});function c(e,t){e&&r.flushSync(()=>e.dispatchEvent(t))}},46774:(e,t,s)=>{"use strict";s.d(t,{c:()=>r});var n=s(20107);function r(e){let t=n.useRef(e);return n.useEffect(()=>{t.current=e}),n.useMemo(()=>(...e)=>t.current?.(...e),[])}},54122:(e,t,s)=>{"use strict";s.d(t,{N:()=>r});var n=s(20107),r=globalThis?.document?n.useLayoutEffect:()=>{}}},e=>{var t=t=>e(e.s=t);e.O(0,[7780,9679,191,6035,7358],()=>t(39884)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-1bb7b7081b0d04a2.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-1bb7b7081b0d04a2.js deleted file mode 100644 index f94b435..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-1bb7b7081b0d04a2.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8757],{80631:(e,t,r)=>{Promise.resolve().then(r.bind(r,92040))},92040:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var a=r(20475),s=r(20107),o=r(72167),n=r(36824),l=r(42541),i=r(49153),d=r(31739),c=r(64219),m=r(51873),u=r(39997);let p=(0,u.A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);var f=r(66698);let x=(0,u.A)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var h=r(50049),g=r(32857),v=r(83086),y=r(51303),b=r(45934);let w=()=>{let{toast:e}=(0,g.dj)(),[t,r]=(0,s.useState)(""),[u,w]=(0,s.useState)(""),[j,N]=(0,s.useState)([]),[A,T]=(0,s.useState)([]),[C,S]=(0,s.useState)([]),[R,E]=(0,s.useState)(!1),[k,O]=(0,s.useState)([]),[D,_]=(0,s.useState)(!0),[I,F]=(0,s.useState)(-1),H=(0,s.useRef)(null),z=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=e=>{z.current&&!z.current.contains(e.target)&&(T([]),F(-1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,s.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/quecmanager/advance/fetch_commands.sh"),t=await e.json(),r=Object.entries(t).filter(e=>{let[t]=e;return"error"!==t}).map(e=>{let[t,r]=e;return{description:t,command:r}});if(0===r.length&&t.error)throw Error(t.error);O(r)}catch(t){console.error("Failed to fetch AT commands:",t),e({title:"Error",description:t instanceof Error?t.message:"Failed to load common AT commands",variant:"destructive"})}finally{_(!1)}})()},[]),(0,s.useEffect)(()=>{let e=window.localStorage.getItem("atCommandHistory"),t=window.localStorage.getItem("atCommands");if(e)try{N(JSON.parse(e))}catch(e){console.error("Failed to parse command history:",e),N([])}if(t)try{S(JSON.parse(t))}catch(e){console.error("Failed to parse previous commands:",e),S([])}},[]),(0,s.useEffect)(()=>{j.length>0&&window.localStorage.setItem("atCommandHistory",JSON.stringify(j))},[j]),(0,s.useEffect)(()=>{C.length>0&&window.localStorage.setItem("atCommands",JSON.stringify(C))},[C]);let L=async()=>{let t=u.trim();if("tetris"===t.toLowerCase()){window.open("/settings/games/tetris","_blank"),w("");return}if(!t.toUpperCase().startsWith("AT")){e({title:"Invalid Command",description:"Command must start with 'AT'",variant:"destructive"});return}E(!0),w(""),r("> ".concat(t,"\nExecuting command, please wait..."));try{let a=encodeURIComponent(t),s=await fetch("/cgi-bin/quecmanager/at_cmd/at_queue_client?command=".concat(a,"&wait=1")),o=await s.json(),n="> ".concat(t,"\n");o.response.raw_output&&(n+=o.response.raw_output),r(n);let l={command:t,response:o.response.raw_output||"No output",timestamp:o.command.timestamp,status:o.response.status,duration:o.response.duration_ms,commandId:o.command.id};N(e=>[l,...e]),"success"!==o.response.status||C.includes(t)||S(e=>[...e,t]),("error"===o.response.status||"timeout"===o.response.status)&&e({title:"Command ".concat("timeout"===o.response.status?"Timeout":"Error"),description:o.response.raw_output||"Command execution ".concat(o.response.status),variant:"destructive"})}catch(s){let a=s instanceof Error?s.message:"An unknown error occurred";r("> ".concat(t,"\nError: ").concat(a)),e({title:"Error",description:a,variant:"destructive"})}finally{E(!1)}},M=e=>{N(t=>{let r=[...t];return r.splice(e,1),0===r.length&&window.localStorage.removeItem("atCommandHistory"),r})},B=e=>{S(t=>{let r=t.filter(t=>t!==e);return window.localStorage.setItem("atCommands",JSON.stringify(r)),r}),T(t=>t.filter(t=>t!==e))},V=async t=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(t);else{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-999999px",e.style.top="-999999px",document.body.appendChild(e),e.focus(),e.select();try{document.execCommand("copy")}catch(e){throw console.error("Fallback: Oops, unable to copy",e),Error("Copy failed")}finally{e.remove()}}e({title:"Copied!",description:'Command "'.concat(t,'" copied to clipboard'),duration:2e3})}catch(t){console.error("Failed to copy command:",t),e({title:"Error",description:"Failed to copy command to clipboard",variant:"destructive",duration:3e3})}};return(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)(o.Zp,{children:[(0,a.jsxs)(o.aR,{children:[(0,a.jsx)(o.ZB,{children:"AT Terminal"}),(0,a.jsx)(o.BT,{children:"Send AT commands to your device using the queue system"})]}),(0,a.jsx)(o.Wu,{children:(0,a.jsxs)("div",{className:"grid gap-8 w-full max-w-screen p-4",children:[(0,a.jsxs)("div",{className:"grid gap-1.5",children:[(0,a.jsx)(i.J,{htmlFor:"ATOutput",children:"AT Command Output"}),(0,a.jsx)(d.T,{value:t,placeholder:"AT command output will appear here...",readOnly:!0,className:"h-64 font-mono",id:"ATOutput"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(h.w,{className:"mb-2"}),0===j.length?(0,a.jsx)("p",{className:"italic text-sm text-muted-foreground font-medium text-center",children:"Command History is Empty"}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,a.jsx)(i.J,{children:"Command History"}),(0,a.jsxs)(v.Lt,{children:[(0,a.jsx)(v.tv,{asChild:!0,children:(0,a.jsxs)(l.$,{variant:"outline",size:"sm",children:[(0,a.jsx)(m.A,{className:"h-4 w-4 text-rose-500"}),"Clear All"]})}),(0,a.jsxs)(v.EO,{children:[(0,a.jsxs)(v.wd,{children:[(0,a.jsx)(v.r7,{children:"Clear Command History"}),(0,a.jsx)(v.$v,{children:"This action cannot be undone. This will permanently delete your command history."})]}),(0,a.jsxs)(v.ck,{children:[(0,a.jsx)(v.Zr,{children:"Cancel"}),(0,a.jsx)(v.Rx,{onClick:()=>{N([]),window.localStorage.removeItem("atCommandHistory")},children:"Continue"})]})]})]})]}),(0,a.jsx)(n.F,{className:"h-44 p-4",children:(0,a.jsx)("div",{className:"grid gap-y-2",children:j.map((e,t)=>(0,a.jsx)(o.Zp,{children:(0,a.jsx)(o.Wu,{className:"p-3 relative",children:(0,a.jsxs)(n.F,{className:"max-w-xs md:max-w-full",children:[(0,a.jsx)(l.$,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 h-4 w-4",onClick:()=>M(t),children:(0,a.jsx)(p,{className:"h-4 w-4"})}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:e.command}),(0,a.jsxs)(b.E,{className:"".concat("success"===e.status?"bg-primary text-foreground":"timeout"===e.status?"bg-yellow-500 text-foreground":"bg-red-500 text-red-foreground"),children:[e.status," -"," ",void 0!==e.duration&&"".concat(e.duration,"ms")]})]}),e.response&&"No output"!==e.response&&(0,a.jsx)("p",{className:"whitespace-pre-wrap font-mono text-sm",children:e.response})]}),(0,a.jsx)(n.$,{orientation:"horizontal"})]})})},"".concat(e.timestamp,"-").concat(t)))})})]}),(0,a.jsx)(h.w,{className:"mt-2"})]}),(0,a.jsxs)("div",{className:"grid gap-1.5 relative",children:[(0,a.jsx)(i.J,{htmlFor:"ATInput",children:"AT Command Input"}),(0,a.jsx)(c.p,{ref:H,value:u,onChange:e=>{let t=e.target.value;w(t),F(-1),requestAnimationFrame(()=>{t.trim()?T(C.filter(e=>e.toLowerCase().includes(t.toLowerCase())).slice(0,5)):T([])})},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),L())},placeholder:"ATI",id:"ATInput",disabled:R,autoComplete:"off"}),A.length>0&&(0,a.jsx)("div",{ref:z,className:"absolute top-full mt-1 bg-background border rounded-md shadow-lg z-10 w-full",children:(0,a.jsx)(n.F,{className:"max-h-[200px]",children:A.map((e,t)=>(0,a.jsxs)("div",{className:"p-2 cursor-pointer flex items-center justify-between group transition-colors ".concat(t===I?"bg-accent":"hover:bg-accent/50"),onClick:()=>{var t;w(e),T([]),F(-1),null===(t=H.current)||void 0===t||t.focus()},children:[(0,a.jsx)("p",{className:"text-sm font-medium text-muted-foreground flex-grow",children:e}),(0,a.jsx)(l.$,{variant:"ghost",size:"icon",className:"h-4 w-4 opacity-0 group-hover:opacity-100 transition-opacity",onClick:t=>{t.stopPropagation(),B(e)},children:(0,a.jsx)(p,{className:"h-4 w-4"})})]},t))})}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Your successful commands will be saved for autocomplete."})]})]})}),(0,a.jsx)(o.wL,{className:"grid border-t py-4",children:(0,a.jsxs)(l.$,{onClick:L,disabled:R,children:[(0,a.jsx)(f.A,{className:"mr-2"}),R?"Sending...":"Send Command"]})})]}),(0,a.jsxs)(o.Zp,{children:[(0,a.jsxs)(o.aR,{children:[(0,a.jsx)(o.ZB,{children:"Common AT Commands List"}),(0,a.jsx)(o.BT,{children:"Here are some common AT commands you can try:"})]}),(0,a.jsx)(o.Wu,{children:(0,a.jsxs)(y.XI,{children:[(0,a.jsx)(y.r6,{children:"AT Command List"}),(0,a.jsx)(y.A0,{children:(0,a.jsxs)(y.Hj,{children:[(0,a.jsx)(y.nd,{children:"AT Command"}),(0,a.jsx)(y.nd,{className:"text-right",children:"Description"})]})}),(0,a.jsx)(y.BF,{children:D?(0,a.jsx)(y.Hj,{children:(0,a.jsx)(y.nA,{colSpan:3,className:"text-center",children:"Loading commands..."})}):0===k.length?(0,a.jsx)(y.Hj,{children:(0,a.jsx)(y.nA,{colSpan:3,className:"text-center",children:"No commands available"})}):k.map((e,t)=>(0,a.jsxs)(y.Hj,{children:[(0,a.jsxs)(y.nA,{className:"flex items-center gap-x-2",children:[(0,a.jsx)("p",{className:"font-mono truncate max-w-6 md:max-w-md",children:e.command}),(0,a.jsx)(x,{className:"w-3 h-3 hover:text-purple-300 cursor-pointer",onClick:()=>V(e.command)})]}),(0,a.jsx)(y.nA,{className:"text-right max-w-10 md:max-w-lg",children:e.description})]},t))})]})})]})]})}},83086:(e,t,r)=>{"use strict";r.d(t,{Lt:()=>D,Rx:()=>B,Zr:()=>V,EO:()=>F,$v:()=>M,ck:()=>z,wd:()=>H,r7:()=>L,tv:()=>_});var a=r(20475),s=r(20107),o=r(45170),n=r(64236),l=r(60241),i=r(94521),d=r(61837),c="AlertDialog",[m,u]=(0,o.A)(c,[l.Hs]),p=(0,l.Hs)(),f=e=>{let{__scopeAlertDialog:t,...r}=e,s=p(t);return(0,a.jsx)(l.bL,{...s,...r,modal:!0})};f.displayName=c;var x=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.l9,{...o,...s,ref:t})});x.displayName="AlertDialogTrigger";var h=e=>{let{__scopeAlertDialog:t,...r}=e,s=p(t);return(0,a.jsx)(l.ZL,{...s,...r})};h.displayName="AlertDialogPortal";var g=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.hJ,{...o,...s,ref:t})});g.displayName="AlertDialogOverlay";var v="AlertDialogContent",[y,b]=m(v),w=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,children:o,...c}=e,m=p(r),u=s.useRef(null),f=(0,n.s)(t,u),x=s.useRef(null);return(0,a.jsx)(l.G$,{contentName:v,titleName:j,docsSlug:"alert-dialog",children:(0,a.jsx)(y,{scope:r,cancelRef:x,children:(0,a.jsxs)(l.UC,{role:"alertdialog",...m,...c,ref:f,onOpenAutoFocus:(0,i.m)(c.onOpenAutoFocus,e=>{var t;e.preventDefault(),null===(t=x.current)||void 0===t||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,a.jsx)(d.xV,{children:o}),(0,a.jsx)(E,{contentRef:u})]})})})});w.displayName=v;var j="AlertDialogTitle",N=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.hE,{...o,...s,ref:t})});N.displayName=j;var A="AlertDialogDescription",T=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.VY,{...o,...s,ref:t})});T.displayName=A;var C=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.bm,{...o,...s,ref:t})});C.displayName="AlertDialogAction";var S="AlertDialogCancel",R=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,{cancelRef:o}=b(S,r),i=p(r),d=(0,n.s)(t,o);return(0,a.jsx)(l.bm,{...i,...s,ref:d})});R.displayName=S;var E=e=>{let{contentRef:t}=e,r="`".concat(v,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(v,"` by passing a `").concat(A,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(v,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return s.useEffect(()=>{var e;document.getElementById(null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby"))||console.warn(r)},[r,t]),null},k=r(22250),O=r(42541);let D=f,_=x,I=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(g,{className:(0,k.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...s,ref:t})});I.displayName=g.displayName;let F=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsxs)(h,{children:[(0,a.jsx)(I,{}),(0,a.jsx)(w,{ref:t,className:(0,k.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",r),...s})]})});F.displayName=w.displayName;let H=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,k.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...r})};H.displayName="AlertDialogHeader";let z=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,k.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...r})};z.displayName="AlertDialogFooter";let L=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(N,{ref:t,className:(0,k.cn)("text-lg font-semibold",r),...s})});L.displayName=N.displayName;let M=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(T,{ref:t,className:(0,k.cn)("text-sm text-muted-foreground",r),...s})});M.displayName=T.displayName;let B=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(C,{ref:t,className:(0,k.cn)((0,O.r)(),r),...s})});B.displayName=C.displayName;let V=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(R,{ref:t,className:(0,k.cn)((0,O.r)({variant:"outline"}),"mt-2 sm:mt-0",r),...s})});V.displayName=R.displayName},45934:(e,t,r)=>{"use strict";r.d(t,{E:()=>l});var a=r(20475);r(20107);var s=r(29395),o=r(22250);let n=(0,s.F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:r,...s}=e;return(0,a.jsx)("div",{className:(0,o.cn)(n({variant:r}),t),...s})}},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>d,r:()=>i});var a=r(20475),s=r(20107),o=r(61837),n=r(29395),l=r(22250);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=s.forwardRef((e,t)=>{let{className:r,variant:s,size:n,asChild:d=!1,...c}=e,m=d?o.DX:"button";return(0,a.jsx)(m,{className:(0,l.cn)(i({variant:s,size:n,className:r})),ref:t,...c})});d.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>i,Zp:()=>n,aR:()=>l,wL:()=>m});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});n.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex flex-col space-y-1.5 p-6",r),...s})});l.displayName="CardHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,o.cn)("font-semibold leading-none tracking-tight",r),...s})});i.displayName="CardTitle";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",r),...s})});d.displayName="CardDescription";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("p-6 pt-0",r),...s})});c.displayName="CardContent";let m=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex items-center p-6 pt-0",r),...s})});m.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,type:s,...n}=e;return(0,a.jsx)("input",{type:s,className:(0,o.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...n})});n.displayName="Input"},49153:(e,t,r)=>{"use strict";r.d(t,{J:()=>d});var a=r(20475),s=r(20107),o=r(21840),n=r(29395),l=r(22250);let i=(0,n.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(o.b,{ref:t,className:(0,l.cn)(i(),r),...s})});d.displayName=o.b.displayName},36824:(e,t,r)=>{"use strict";r.d(t,{$:()=>i,F:()=>l});var a=r(20475),s=r(20107),o=r(89679),n=r(22250);let l=s.forwardRef((e,t)=>{let{className:r,children:s,...l}=e;return(0,a.jsxs)(o.bL,{ref:t,className:(0,n.cn)("relative overflow-hidden",r),...l,children:[(0,a.jsx)(o.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(o.OK,{})]})});l.displayName=o.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...l}=e;return(0,a.jsx)(o.VM,{ref:t,orientation:s,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...l,children:(0,a.jsx)(o.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=o.VM.displayName},50049:(e,t,r)=>{"use strict";r.d(t,{w:()=>c});var a=r(20475),s=r(20107),o=r(34544),n="horizontal",l=["horizontal","vertical"],i=s.forwardRef((e,t)=>{let{decorative:r,orientation:s=n,...i}=e,d=l.includes(s)?s:n;return(0,a.jsx)(o.sG.div,{"data-orientation":d,...r?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...i,ref:t})});i.displayName="Separator";var d=r(22250);let c=s.forwardRef((e,t)=>{let{className:r,orientation:s="horizontal",decorative:o=!0,...n}=e;return(0,a.jsx)(i,{ref:t,decorative:o,orientation:s,className:(0,d.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",r),...n})});c.displayName=i.displayName},51303:(e,t,r)=>{"use strict";r.d(t,{A0:()=>l,BF:()=>i,Hj:()=>d,XI:()=>n,nA:()=>m,nd:()=>c,r6:()=>u});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{className:"relative w-full overflow-auto",children:(0,a.jsx)("table",{ref:t,className:(0,o.cn)("w-full caption-bottom text-sm",r),...s})})});n.displayName="Table";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("thead",{ref:t,className:(0,o.cn)("[&_tr]:border-b",r),...s})});l.displayName="TableHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tbody",{ref:t,className:(0,o.cn)("[&_tr:last-child]:border-0",r),...s})});i.displayName="TableBody",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tfoot",{ref:t,className:(0,o.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...s})}).displayName="TableFooter";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tr",{ref:t,className:(0,o.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...s})});d.displayName="TableRow";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("th",{ref:t,className:(0,o.cn)("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",r),...s})});c.displayName="TableHead";let m=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("td",{ref:t,className:(0,o.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",r),...s})});m.displayName="TableCell";let u=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("caption",{ref:t,className:(0,o.cn)("mt-4 text-sm text-muted-foreground",r),...s})});u.displayName="TableCaption"},31739:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("textarea",{className:(0,o.cn)("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",r),ref:t,...s})});n.displayName="Textarea"},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>u,oR:()=>m});var a=r(20107);let s=0,o=new Map,n=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?n(r):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},i=[],d={toasts:[]};function c(e){d=l(d,e),i.forEach(e=>{e(d)})}function m(e){let{...t}=e,r=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||a()}}}),{id:r,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function u(){let[e,t]=a.useState(d);return a.useEffect(()=>(i.push(t),()=>{let e=i.indexOf(t);e>-1&&i.splice(e,1)}),[e]),{...e,toast:m,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>o});var a=r(64901),s=r(868);function o(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},51873:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},21840:(e,t,r)=>{"use strict";r.d(t,{b:()=>l});var a=r(20107),s=r(34544),o=r(20475),n=a.forwardRef((e,t)=>(0,o.jsx)(s.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));n.displayName="Label";var l=n}},e=>{var t=t=>e(e.s=t);e.O(0,[7780,8885,9464,6357,9679,191,6035,7358],()=>t(80631)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-32774eecfd12c3bb.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-32774eecfd12c3bb.js new file mode 100644 index 0000000..5cb6c3e --- /dev/null +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-32774eecfd12c3bb.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8757],{80631:(e,t,r)=>{Promise.resolve().then(r.bind(r,92040))},92040:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var a=r(20475),s=r(20107),o=r(72167),n=r(36824),l=r(42541),i=r(49153),d=r(31739),c=r(64219),m=r(51873),u=r(39997);let p=(0,u.A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);var f=r(66698);let x=(0,u.A)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var h=r(50049),g=r(32857),v=r(83086),y=r(51303),b=r(45934);let w=()=>{let{toast:e}=(0,g.dj)(),[t,r]=(0,s.useState)(""),[u,w]=(0,s.useState)(""),[j,N]=(0,s.useState)([]),[A,T]=(0,s.useState)([]),[C,S]=(0,s.useState)([]),[R,E]=(0,s.useState)(!1),[k,O]=(0,s.useState)([]),[D,_]=(0,s.useState)(!0),[I,F]=(0,s.useState)(-1),H=(0,s.useRef)(null),z=(0,s.useRef)(null);(0,s.useEffect)(()=>{let e=e=>{z.current&&!z.current.contains(e.target)&&(T([]),F(-1))};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,s.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/quecmanager/advance/fetch_commands.sh"),t=await e.json(),r=Object.entries(t).filter(e=>{let[t]=e;return"error"!==t}).map(e=>{let[t,r]=e;return{description:t,command:r}});if(0===r.length&&t.error)throw Error(t.error);O(r)}catch(t){console.error("Failed to fetch AT commands:",t),e({title:"Error",description:t instanceof Error?t.message:"Failed to load common AT commands",variant:"destructive"})}finally{_(!1)}})()},[]),(0,s.useEffect)(()=>{let e=window.localStorage.getItem("atCommandHistory"),t=window.localStorage.getItem("atCommands");if(e)try{N(JSON.parse(e))}catch(e){console.error("Failed to parse command history:",e),N([])}if(t)try{S(JSON.parse(t))}catch(e){console.error("Failed to parse previous commands:",e),S([])}},[]),(0,s.useEffect)(()=>{j.length>0&&window.localStorage.setItem("atCommandHistory",JSON.stringify(j))},[j]),(0,s.useEffect)(()=>{C.length>0&&window.localStorage.setItem("atCommands",JSON.stringify(C))},[C]);let L=async()=>{let t=u.trim();if("tetris"===t.toLowerCase()){window.open("/settings/games/tetris","_blank"),w("");return}if(!t.toUpperCase().startsWith("AT")){e({title:"Invalid Command",description:"Command must start with 'AT'",variant:"destructive"});return}E(!0),w(""),r("> ".concat(t,"\nExecuting command, please wait..."));try{let a=encodeURIComponent(t),s=await fetch("/cgi-bin/quecmanager/at_cmd/at_queue_client.sh?command=".concat(a,"&wait=1")),o=await s.json(),n="> ".concat(t,"\n");o.response.raw_output&&(n+=o.response.raw_output),r(n);let l={command:t,response:o.response.raw_output||"No output",timestamp:o.command.timestamp,status:o.response.status,duration:o.response.duration_ms,commandId:o.command.id};N(e=>[l,...e]),"success"!==o.response.status||C.includes(t)||S(e=>[...e,t]),("error"===o.response.status||"timeout"===o.response.status)&&e({title:"Command ".concat("timeout"===o.response.status?"Timeout":"Error"),description:o.response.raw_output||"Command execution ".concat(o.response.status),variant:"destructive"})}catch(s){let a=s instanceof Error?s.message:"An unknown error occurred";r("> ".concat(t,"\nError: ").concat(a)),e({title:"Error",description:a,variant:"destructive"})}finally{E(!1)}},M=e=>{N(t=>{let r=[...t];return r.splice(e,1),0===r.length&&window.localStorage.removeItem("atCommandHistory"),r})},B=e=>{S(t=>{let r=t.filter(t=>t!==e);return window.localStorage.setItem("atCommands",JSON.stringify(r)),r}),T(t=>t.filter(t=>t!==e))},V=async t=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(t);else{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-999999px",e.style.top="-999999px",document.body.appendChild(e),e.focus(),e.select();try{document.execCommand("copy")}catch(e){throw console.error("Fallback: Oops, unable to copy",e),Error("Copy failed")}finally{e.remove()}}e({title:"Copied!",description:'Command "'.concat(t,'" copied to clipboard'),duration:2e3})}catch(t){console.error("Failed to copy command:",t),e({title:"Error",description:"Failed to copy command to clipboard",variant:"destructive",duration:3e3})}};return(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)(o.Zp,{children:[(0,a.jsxs)(o.aR,{children:[(0,a.jsx)(o.ZB,{children:"AT Terminal"}),(0,a.jsx)(o.BT,{children:"Send AT commands to your device using the queue system"})]}),(0,a.jsx)(o.Wu,{children:(0,a.jsxs)("div",{className:"grid gap-8 w-full max-w-screen p-4",children:[(0,a.jsxs)("div",{className:"grid gap-1.5",children:[(0,a.jsx)(i.J,{htmlFor:"ATOutput",children:"AT Command Output"}),(0,a.jsx)(d.T,{value:t,placeholder:"AT command output will appear here...",readOnly:!0,className:"h-64 font-mono",id:"ATOutput"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(h.w,{className:"mb-2"}),0===j.length?(0,a.jsx)("p",{className:"italic text-sm text-muted-foreground font-medium text-center",children:"Command History is Empty"}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,a.jsx)(i.J,{children:"Command History"}),(0,a.jsxs)(v.Lt,{children:[(0,a.jsx)(v.tv,{asChild:!0,children:(0,a.jsxs)(l.$,{variant:"outline",size:"sm",children:[(0,a.jsx)(m.A,{className:"h-4 w-4 text-rose-500"}),"Clear All"]})}),(0,a.jsxs)(v.EO,{children:[(0,a.jsxs)(v.wd,{children:[(0,a.jsx)(v.r7,{children:"Clear Command History"}),(0,a.jsx)(v.$v,{children:"This action cannot be undone. This will permanently delete your command history."})]}),(0,a.jsxs)(v.ck,{children:[(0,a.jsx)(v.Zr,{children:"Cancel"}),(0,a.jsx)(v.Rx,{onClick:()=>{N([]),window.localStorage.removeItem("atCommandHistory")},children:"Continue"})]})]})]})]}),(0,a.jsx)(n.F,{className:"h-44 p-4",children:(0,a.jsx)("div",{className:"grid gap-y-2",children:j.map((e,t)=>(0,a.jsx)(o.Zp,{children:(0,a.jsx)(o.Wu,{className:"p-3 relative",children:(0,a.jsxs)(n.F,{className:"max-w-xs md:max-w-full",children:[(0,a.jsx)(l.$,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 h-4 w-4",onClick:()=>M(t),children:(0,a.jsx)(p,{className:"h-4 w-4"})}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,a.jsx)("p",{className:"text-sm font-medium",children:e.command}),(0,a.jsxs)(b.E,{className:"".concat("success"===e.status?"bg-primary text-foreground":"timeout"===e.status?"bg-yellow-500 text-foreground":"bg-red-500 text-red-foreground"),children:[e.status," -"," ",void 0!==e.duration&&"".concat(e.duration,"ms")]})]}),e.response&&"No output"!==e.response&&(0,a.jsx)("p",{className:"whitespace-pre-wrap font-mono text-sm",children:e.response})]}),(0,a.jsx)(n.$,{orientation:"horizontal"})]})})},"".concat(e.timestamp,"-").concat(t)))})})]}),(0,a.jsx)(h.w,{className:"mt-2"})]}),(0,a.jsxs)("div",{className:"grid gap-1.5 relative",children:[(0,a.jsx)(i.J,{htmlFor:"ATInput",children:"AT Command Input"}),(0,a.jsx)(c.p,{ref:H,value:u,onChange:e=>{let t=e.target.value;w(t),F(-1),requestAnimationFrame(()=>{t.trim()?T(C.filter(e=>e.toLowerCase().includes(t.toLowerCase())).slice(0,5)):T([])})},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),L())},placeholder:"ATI",id:"ATInput",disabled:R,autoComplete:"off"}),A.length>0&&(0,a.jsx)("div",{ref:z,className:"absolute top-full mt-1 bg-background border rounded-md shadow-lg z-10 w-full",children:(0,a.jsx)(n.F,{className:"max-h-[200px]",children:A.map((e,t)=>(0,a.jsxs)("div",{className:"p-2 cursor-pointer flex items-center justify-between group transition-colors ".concat(t===I?"bg-accent":"hover:bg-accent/50"),onClick:()=>{var t;w(e),T([]),F(-1),null===(t=H.current)||void 0===t||t.focus()},children:[(0,a.jsx)("p",{className:"text-sm font-medium text-muted-foreground flex-grow",children:e}),(0,a.jsx)(l.$,{variant:"ghost",size:"icon",className:"h-4 w-4 opacity-0 group-hover:opacity-100 transition-opacity",onClick:t=>{t.stopPropagation(),B(e)},children:(0,a.jsx)(p,{className:"h-4 w-4"})})]},t))})}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Your successful commands will be saved for autocomplete."})]})]})}),(0,a.jsx)(o.wL,{className:"grid border-t py-4",children:(0,a.jsxs)(l.$,{onClick:L,disabled:R,children:[(0,a.jsx)(f.A,{className:"mr-2"}),R?"Sending...":"Send Command"]})})]}),(0,a.jsxs)(o.Zp,{children:[(0,a.jsxs)(o.aR,{children:[(0,a.jsx)(o.ZB,{children:"Common AT Commands List"}),(0,a.jsx)(o.BT,{children:"Here are some common AT commands you can try:"})]}),(0,a.jsx)(o.Wu,{children:(0,a.jsxs)(y.XI,{children:[(0,a.jsx)(y.r6,{children:"AT Command List"}),(0,a.jsx)(y.A0,{children:(0,a.jsxs)(y.Hj,{children:[(0,a.jsx)(y.nd,{children:"AT Command"}),(0,a.jsx)(y.nd,{className:"text-right",children:"Description"})]})}),(0,a.jsx)(y.BF,{children:D?(0,a.jsx)(y.Hj,{children:(0,a.jsx)(y.nA,{colSpan:3,className:"text-center",children:"Loading commands..."})}):0===k.length?(0,a.jsx)(y.Hj,{children:(0,a.jsx)(y.nA,{colSpan:3,className:"text-center",children:"No commands available"})}):k.map((e,t)=>(0,a.jsxs)(y.Hj,{children:[(0,a.jsxs)(y.nA,{className:"flex items-center gap-x-2",children:[(0,a.jsx)("p",{className:"font-mono truncate max-w-6 md:max-w-md",children:e.command}),(0,a.jsx)(x,{className:"w-3 h-3 hover:text-purple-300 cursor-pointer",onClick:()=>V(e.command)})]}),(0,a.jsx)(y.nA,{className:"text-right max-w-10 md:max-w-lg",children:e.description})]},t))})]})})]})]})}},83086:(e,t,r)=>{"use strict";r.d(t,{Lt:()=>D,Rx:()=>B,Zr:()=>V,EO:()=>F,$v:()=>M,ck:()=>z,wd:()=>H,r7:()=>L,tv:()=>_});var a=r(20475),s=r(20107),o=r(45170),n=r(64236),l=r(60241),i=r(94521),d=r(61837),c="AlertDialog",[m,u]=(0,o.A)(c,[l.Hs]),p=(0,l.Hs)(),f=e=>{let{__scopeAlertDialog:t,...r}=e,s=p(t);return(0,a.jsx)(l.bL,{...s,...r,modal:!0})};f.displayName=c;var x=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.l9,{...o,...s,ref:t})});x.displayName="AlertDialogTrigger";var h=e=>{let{__scopeAlertDialog:t,...r}=e,s=p(t);return(0,a.jsx)(l.ZL,{...s,...r})};h.displayName="AlertDialogPortal";var g=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.hJ,{...o,...s,ref:t})});g.displayName="AlertDialogOverlay";var v="AlertDialogContent",[y,b]=m(v),w=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,children:o,...c}=e,m=p(r),u=s.useRef(null),f=(0,n.s)(t,u),x=s.useRef(null);return(0,a.jsx)(l.G$,{contentName:v,titleName:j,docsSlug:"alert-dialog",children:(0,a.jsx)(y,{scope:r,cancelRef:x,children:(0,a.jsxs)(l.UC,{role:"alertdialog",...m,...c,ref:f,onOpenAutoFocus:(0,i.m)(c.onOpenAutoFocus,e=>{var t;e.preventDefault(),null===(t=x.current)||void 0===t||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,a.jsx)(d.xV,{children:o}),(0,a.jsx)(E,{contentRef:u})]})})})});w.displayName=v;var j="AlertDialogTitle",N=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.hE,{...o,...s,ref:t})});N.displayName=j;var A="AlertDialogDescription",T=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.VY,{...o,...s,ref:t})});T.displayName=A;var C=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.bm,{...o,...s,ref:t})});C.displayName="AlertDialogAction";var S="AlertDialogCancel",R=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,{cancelRef:o}=b(S,r),i=p(r),d=(0,n.s)(t,o);return(0,a.jsx)(l.bm,{...i,...s,ref:d})});R.displayName=S;var E=e=>{let{contentRef:t}=e,r="`".concat(v,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(v,"` by passing a `").concat(A,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(v,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return s.useEffect(()=>{var e;document.getElementById(null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby"))||console.warn(r)},[r,t]),null},k=r(22250),O=r(42541);let D=f,_=x,I=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(g,{className:(0,k.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...s,ref:t})});I.displayName=g.displayName;let F=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsxs)(h,{children:[(0,a.jsx)(I,{}),(0,a.jsx)(w,{ref:t,className:(0,k.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",r),...s})]})});F.displayName=w.displayName;let H=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,k.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...r})};H.displayName="AlertDialogHeader";let z=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,k.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...r})};z.displayName="AlertDialogFooter";let L=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(N,{ref:t,className:(0,k.cn)("text-lg font-semibold",r),...s})});L.displayName=N.displayName;let M=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(T,{ref:t,className:(0,k.cn)("text-sm text-muted-foreground",r),...s})});M.displayName=T.displayName;let B=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(C,{ref:t,className:(0,k.cn)((0,O.r)(),r),...s})});B.displayName=C.displayName;let V=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(R,{ref:t,className:(0,k.cn)((0,O.r)({variant:"outline"}),"mt-2 sm:mt-0",r),...s})});V.displayName=R.displayName},45934:(e,t,r)=>{"use strict";r.d(t,{E:()=>l});var a=r(20475);r(20107);var s=r(29395),o=r(22250);let n=(0,s.F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:r,...s}=e;return(0,a.jsx)("div",{className:(0,o.cn)(n({variant:r}),t),...s})}},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>d,r:()=>i});var a=r(20475),s=r(20107),o=r(61837),n=r(29395),l=r(22250);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=s.forwardRef((e,t)=>{let{className:r,variant:s,size:n,asChild:d=!1,...c}=e,m=d?o.DX:"button";return(0,a.jsx)(m,{className:(0,l.cn)(i({variant:s,size:n,className:r})),ref:t,...c})});d.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>i,Zp:()=>n,aR:()=>l,wL:()=>m});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});n.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex flex-col space-y-1.5 p-6",r),...s})});l.displayName="CardHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,o.cn)("font-semibold leading-none tracking-tight",r),...s})});i.displayName="CardTitle";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",r),...s})});d.displayName="CardDescription";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("p-6 pt-0",r),...s})});c.displayName="CardContent";let m=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex items-center p-6 pt-0",r),...s})});m.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,type:s,...n}=e;return(0,a.jsx)("input",{type:s,className:(0,o.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...n})});n.displayName="Input"},49153:(e,t,r)=>{"use strict";r.d(t,{J:()=>d});var a=r(20475),s=r(20107),o=r(21840),n=r(29395),l=r(22250);let i=(0,n.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(o.b,{ref:t,className:(0,l.cn)(i(),r),...s})});d.displayName=o.b.displayName},36824:(e,t,r)=>{"use strict";r.d(t,{$:()=>i,F:()=>l});var a=r(20475),s=r(20107),o=r(89679),n=r(22250);let l=s.forwardRef((e,t)=>{let{className:r,children:s,...l}=e;return(0,a.jsxs)(o.bL,{ref:t,className:(0,n.cn)("relative overflow-hidden",r),...l,children:[(0,a.jsx)(o.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(o.OK,{})]})});l.displayName=o.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...l}=e;return(0,a.jsx)(o.VM,{ref:t,orientation:s,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...l,children:(0,a.jsx)(o.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=o.VM.displayName},50049:(e,t,r)=>{"use strict";r.d(t,{w:()=>c});var a=r(20475),s=r(20107),o=r(34544),n="horizontal",l=["horizontal","vertical"],i=s.forwardRef((e,t)=>{let{decorative:r,orientation:s=n,...i}=e,d=l.includes(s)?s:n;return(0,a.jsx)(o.sG.div,{"data-orientation":d,...r?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...i,ref:t})});i.displayName="Separator";var d=r(22250);let c=s.forwardRef((e,t)=>{let{className:r,orientation:s="horizontal",decorative:o=!0,...n}=e;return(0,a.jsx)(i,{ref:t,decorative:o,orientation:s,className:(0,d.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",r),...n})});c.displayName=i.displayName},51303:(e,t,r)=>{"use strict";r.d(t,{A0:()=>l,BF:()=>i,Hj:()=>d,XI:()=>n,nA:()=>m,nd:()=>c,r6:()=>u});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{className:"relative w-full overflow-auto",children:(0,a.jsx)("table",{ref:t,className:(0,o.cn)("w-full caption-bottom text-sm",r),...s})})});n.displayName="Table";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("thead",{ref:t,className:(0,o.cn)("[&_tr]:border-b",r),...s})});l.displayName="TableHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tbody",{ref:t,className:(0,o.cn)("[&_tr:last-child]:border-0",r),...s})});i.displayName="TableBody",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tfoot",{ref:t,className:(0,o.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...s})}).displayName="TableFooter";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tr",{ref:t,className:(0,o.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...s})});d.displayName="TableRow";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("th",{ref:t,className:(0,o.cn)("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",r),...s})});c.displayName="TableHead";let m=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("td",{ref:t,className:(0,o.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",r),...s})});m.displayName="TableCell";let u=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("caption",{ref:t,className:(0,o.cn)("mt-4 text-sm text-muted-foreground",r),...s})});u.displayName="TableCaption"},31739:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("textarea",{className:(0,o.cn)("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",r),ref:t,...s})});n.displayName="Textarea"},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>u,oR:()=>m});var a=r(20107);let s=0,o=new Map,n=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?n(r):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},i=[],d={toasts:[]};function c(e){d=l(d,e),i.forEach(e=>{e(d)})}function m(e){let{...t}=e,r=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||a()}}}),{id:r,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function u(){let[e,t]=a.useState(d);return a.useEffect(()=>(i.push(t),()=>{let e=i.indexOf(t);e>-1&&i.splice(e,1)}),[e]),{...e,toast:m,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>o});var a=r(64901),s=r(868);function o(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},51873:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},21840:(e,t,r)=>{"use strict";r.d(t,{b:()=>l});var a=r(20107),s=r(34544),o=r(20475),n=a.forwardRef((e,t)=>(0,o.jsx)(s.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));n.displayName="Label";var l=n}},e=>{var t=t=>e(e.s=t);e.O(0,[7780,8885,9464,6357,9679,191,6035,7358],()=>t(80631)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-e1c6ee3cda4d5576.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-e1c6ee3cda4d5576.js deleted file mode 100644 index ba4263c..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/at-terminal/page-e1c6ee3cda4d5576.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8757],{80631:(e,t,r)=>{Promise.resolve().then(r.bind(r,92040))},92040:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>w});var a=r(20475),s=r(20107),o=r(72167),n=r(36824),l=r(42541),i=r(49153),d=r(31739),c=r(64219),m=r(51873),u=r(39997);let p=(0,u.A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);var f=r(66698);let x=(0,u.A)("Copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var h=r(76554),g=r(32857),y=r(76837),v=r(51303);let w=()=>{let e=(0,g.dj)(),[t,r]=(0,s.useState)(""),[u,w]=(0,s.useState)(""),[j,b]=(0,s.useState)([]),[N,A]=(0,s.useState)([]),[C,T]=(0,s.useState)([]),[R,S]=(0,s.useState)(!1),[k,E]=(0,s.useState)([]),[O,D]=(0,s.useState)(!0);(0,s.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/advance/fetch_commands.sh"),t=await e.json(),r=Object.entries(t).filter(e=>{let[t]=e;return"error"!==t}).map(e=>{let[t,r]=e;return{description:t,command:r}});if(0===r.length&&t.error)throw Error(t.error);E(r)}catch(t){console.error("Failed to fetch AT commands:",t),e.toast({title:"Error",description:t instanceof Error?t.message:"Failed to load common AT commands",variant:"destructive"})}finally{D(!1)}})()},[]),(0,s.useEffect)(()=>{let e=window.localStorage.getItem("atCommandHistory"),t=window.localStorage.getItem("atCommands");if(e)try{b(JSON.parse(e))}catch(e){console.error("Failed to parse command history:",e),b([])}if(t)try{T(JSON.parse(t))}catch(e){console.error("Failed to parse previous commands:",e),T([])}},[]),(0,s.useEffect)(()=>{j.length>0&&window.localStorage.setItem("atCommandHistory",JSON.stringify(j))},[j]),(0,s.useEffect)(()=>{C.length>0&&window.localStorage.setItem("atCommands",JSON.stringify(C))},[C]);let I=async()=>{if("tetris"===u.trim().toLowerCase()){window.open("/settings/games/tetris","_blank"),w("");return}S(!0),w(""),r("> ".concat(u,"\nExecuting command, please wait..."));try{let t=encodeURIComponent(u),a=await fetch("/cgi-bin/at_command.sh?command=".concat(t)),s=await a.json(),o="> ".concat(u,"\n");s.response&&(o+=s.response),"error"===s.status&&s.message&&(o+="\nError: ".concat(s.message)),r(o);let n={command:u,response:s.response||"No output",timestamp:s.timestamp,status:s.status,message:s.message};b(e=>[n,...e]),"success"!==s.status||C.includes(u)||T(e=>[...e,u]),"error"===s.status&&e.toast({title:"Command Error",description:s.message||"Command execution failed",variant:"destructive"})}catch(a){let t=a instanceof Error?a.message:"An unknown error occurred";r("> ".concat(u,"\nError: ").concat(t)),e.toast({title:"Error",description:t,variant:"destructive"})}finally{S(!1)}},_=e=>{w(e),A([])},F=e=>{b(t=>{let r=[...t];return r.splice(e,1),0===r.length&&window.localStorage.removeItem("atCommandHistory"),r})},z=e=>{T(t=>{let r=t.filter(t=>t!==e);return window.localStorage.setItem("atCommands",JSON.stringify(r)),r}),A(t=>t.filter(t=>t!==e))},H=async t=>{try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(t);else{let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.left="-999999px",e.style.top="-999999px",document.body.appendChild(e),e.focus(),e.select();try{document.execCommand("copy")}catch(e){throw console.error("Fallback: Oops, unable to copy",e),Error("Copy failed")}finally{e.remove()}}e.toast({title:"Copied!",description:'Command "'.concat(t,'" copied to clipboard'),duration:2e3})}catch(t){console.error("Failed to copy command:",t),e.toast({title:"Error",description:"Failed to copy command to clipboard",variant:"destructive",duration:3e3})}};return(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)(o.Zp,{children:[(0,a.jsxs)(o.aR,{children:[(0,a.jsx)(o.ZB,{children:"AT Terminal"}),(0,a.jsx)(o.BT,{children:"Send AT commands to your device"})]}),(0,a.jsx)(o.Wu,{children:(0,a.jsxs)("div",{className:"grid gap-8 w-full max-w-screen p-4",children:[(0,a.jsxs)("div",{className:"grid gap-1.5",children:[(0,a.jsx)(i.J,{htmlFor:"ATOutput",children:"AT Command Output"}),(0,a.jsx)(d.T,{value:t,placeholder:"AT command output will appear here...",readOnly:!0,className:"h-[240px] font-mono",id:"ATOutput"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)(h.w,{className:"mb-2"}),0===j.length?(0,a.jsx)("p",{className:"italic text-sm text-muted-foreground font-medium text-center",children:"Command History is Empty"}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,a.jsx)(i.J,{children:"Command History"}),(0,a.jsxs)(y.Lt,{children:[(0,a.jsx)(y.tv,{asChild:!0,children:(0,a.jsxs)(l.$,{variant:"outline",size:"sm",children:[(0,a.jsx)(m.A,{className:"h-4 w-4 text-rose-500"}),"Clear All"]})}),(0,a.jsxs)(y.EO,{children:[(0,a.jsxs)(y.wd,{children:[(0,a.jsx)(y.r7,{children:"Clear Command History"}),(0,a.jsx)(y.$v,{children:"This action cannot be undone. This will permanently delete your command history."})]}),(0,a.jsxs)(y.ck,{children:[(0,a.jsx)(y.Zr,{children:"Cancel"}),(0,a.jsx)(y.Rx,{onClick:()=>{b([]),window.localStorage.removeItem("atCommandHistory")},children:"Continue"})]})]})]})]}),(0,a.jsx)(n.F,{className:"h-[180px] p-4",children:(0,a.jsx)("div",{className:"grid gap-y-2",children:j.map((e,t)=>(0,a.jsx)(o.Zp,{children:(0,a.jsx)(o.Wu,{className:"p-3 relative",children:(0,a.jsxs)(n.F,{className:"max-w-xs md:max-w-full",children:[(0,a.jsx)(l.$,{variant:"ghost",size:"icon",className:"absolute right-2 top-2 h-4 w-4",onClick:()=>F(t),children:(0,a.jsx)(p,{className:"h-4 w-4"})}),(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsxs)("p",{className:"text-sm font-medium flex items-center gap-2",children:[e.command,"error"===e.status&&(0,a.jsx)("span",{className:"text-xs text-red-500",children:e.message})]}),e.response&&"No output"!==e.response&&(0,a.jsx)("p",{className:"whitespace-pre-wrap font-mono",children:e.response})]}),(0,a.jsx)(n.$,{orientation:"horizontal"})]})})},"".concat(e.timestamp,"-").concat(t)))})})]}),(0,a.jsx)(h.w,{className:"mt-2"})]}),(0,a.jsxs)("div",{className:"grid gap-1.5 relative",children:[(0,a.jsx)(i.J,{htmlFor:"ATInput",children:"AT Command Input"}),(0,a.jsx)(c.p,{value:u,onChange:e=>{let t=e.target.value;w(t),t.trim()?A(C.filter(e=>e.toLowerCase().includes(t.toLowerCase()))):A([])},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),I())},placeholder:"ATI",id:"ATInput",disabled:R,autoComplete:"off"}),N.length>0&&(0,a.jsx)("div",{className:"absolute top-full mt-1 bg-background border rounded-md shadow-lg z-10",children:(0,a.jsx)(n.F,{className:"h-24",children:N.map((e,t)=>(0,a.jsxs)("div",{className:"p-2 hover:bg-accent cursor-pointer flex items-center justify-between group",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-muted-foreground flex-grow",onClick:()=>_(e),children:e}),(0,a.jsx)(l.$,{variant:"ghost",size:"icon",className:"h-4 w-4 opacity-0 group-hover:opacity-100 transition-opacity",onClick:t=>{t.stopPropagation(),z(e)},children:(0,a.jsx)(p,{className:"h-4 w-4"})})]},t))})}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground",children:"Your successful commands will be saved for autocomplete."})]})]})}),(0,a.jsx)(o.wL,{className:"grid border-t py-4",children:(0,a.jsxs)(l.$,{onClick:I,disabled:R,children:[(0,a.jsx)(f.A,{className:"mr-2"}),R?"Sending...":"Send Command"]})})]}),(0,a.jsxs)(o.Zp,{children:[(0,a.jsxs)(o.aR,{children:[(0,a.jsx)(o.ZB,{children:"Common AT Commands List"}),(0,a.jsx)(o.BT,{children:"Here are some common AT commands you can try:"})]}),(0,a.jsx)(o.Wu,{children:(0,a.jsxs)(v.XI,{children:[(0,a.jsx)(v.r6,{children:"AT Command List"}),(0,a.jsx)(v.A0,{children:(0,a.jsxs)(v.Hj,{children:[(0,a.jsx)(v.nd,{children:"AT Command"}),(0,a.jsx)(v.nd,{className:"text-right",children:"Description"})]})}),(0,a.jsx)(v.BF,{children:O?(0,a.jsx)(v.Hj,{children:(0,a.jsx)(v.nA,{colSpan:3,className:"text-center",children:"Loading commands..."})}):0===k.length?(0,a.jsx)(v.Hj,{children:(0,a.jsx)(v.nA,{colSpan:3,className:"text-center",children:"No commands available"})}):k.map((e,t)=>(0,a.jsxs)(v.Hj,{children:[(0,a.jsxs)(v.nA,{className:"flex items-center gap-x-2",children:[(0,a.jsx)("p",{className:"font-mono truncate max-w-6 md:max-w-md",children:e.command}),(0,a.jsx)(x,{className:"w-3 h-3 hover:text-purple-300 cursor-pointer",onClick:()=>H(e.command)})]}),(0,a.jsx)(v.nA,{className:"text-right max-w-10 md:max-w-lg",children:e.description})]},t))})]})})]})]})}},76837:(e,t,r)=>{"use strict";r.d(t,{Lt:()=>D,Rx:()=>$,Zr:()=>B,EO:()=>F,$v:()=>M,ck:()=>H,wd:()=>z,r7:()=>L,tv:()=>I});var a=r(20475),s=r(20107),o=r(80938),n=r(74111),l=r(71827),i=r(94521),d=r(61837),c="AlertDialog",[m,u]=(0,o.A)(c,[l.Hs]),p=(0,l.Hs)(),f=e=>{let{__scopeAlertDialog:t,...r}=e,s=p(t);return(0,a.jsx)(l.bL,{...s,...r,modal:!0})};f.displayName=c;var x=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.l9,{...o,...s,ref:t})});x.displayName="AlertDialogTrigger";var h=e=>{let{__scopeAlertDialog:t,...r}=e,s=p(t);return(0,a.jsx)(l.ZL,{...s,...r})};h.displayName="AlertDialogPortal";var g=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.hJ,{...o,...s,ref:t})});g.displayName="AlertDialogOverlay";var y="AlertDialogContent",[v,w]=m(y),j=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,children:o,...c}=e,m=p(r),u=s.useRef(null),f=(0,n.s)(t,u),x=s.useRef(null);return(0,a.jsx)(l.G$,{contentName:y,titleName:b,docsSlug:"alert-dialog",children:(0,a.jsx)(v,{scope:r,cancelRef:x,children:(0,a.jsxs)(l.UC,{role:"alertdialog",...m,...c,ref:f,onOpenAutoFocus:(0,i.m)(c.onOpenAutoFocus,e=>{var t;e.preventDefault(),null===(t=x.current)||void 0===t||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,a.jsx)(d.xV,{children:o}),(0,a.jsx)(k,{contentRef:u})]})})})});j.displayName=y;var b="AlertDialogTitle",N=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.hE,{...o,...s,ref:t})});N.displayName=b;var A="AlertDialogDescription",C=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.VY,{...o,...s,ref:t})});C.displayName=A;var T=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,o=p(r);return(0,a.jsx)(l.bm,{...o,...s,ref:t})});T.displayName="AlertDialogAction";var R="AlertDialogCancel",S=s.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...s}=e,{cancelRef:o}=w(R,r),i=p(r),d=(0,n.s)(t,o);return(0,a.jsx)(l.bm,{...i,...s,ref:d})});S.displayName=R;var k=e=>{let{contentRef:t}=e,r="`".concat(y,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(y,"` by passing a `").concat(A,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(y,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return s.useEffect(()=>{var e;document.getElementById(null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby"))||console.warn(r)},[r,t]),null},E=r(22250),O=r(42541);let D=f,I=x,_=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(g,{className:(0,E.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...s,ref:t})});_.displayName=g.displayName;let F=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsxs)(h,{children:[(0,a.jsx)(_,{}),(0,a.jsx)(j,{ref:t,className:(0,E.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",r),...s})]})});F.displayName=j.displayName;let z=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,E.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...r})};z.displayName="AlertDialogHeader";let H=e=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,E.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...r})};H.displayName="AlertDialogFooter";let L=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(N,{ref:t,className:(0,E.cn)("text-lg font-semibold",r),...s})});L.displayName=N.displayName;let M=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(C,{ref:t,className:(0,E.cn)("text-sm text-muted-foreground",r),...s})});M.displayName=C.displayName;let $=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(T,{ref:t,className:(0,E.cn)((0,O.r)(),r),...s})});$.displayName=T.displayName;let B=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(S,{ref:t,className:(0,E.cn)((0,O.r)({variant:"outline"}),"mt-2 sm:mt-0",r),...s})});B.displayName=S.displayName},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>d,r:()=>i});var a=r(20475),s=r(20107),o=r(61837),n=r(29395),l=r(22250);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=s.forwardRef((e,t)=>{let{className:r,variant:s,size:n,asChild:d=!1,...c}=e,m=d?o.DX:"button";return(0,a.jsx)(m,{className:(0,l.cn)(i({variant:s,size:n,className:r})),ref:t,...c})});d.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>i,Zp:()=>n,aR:()=>l,wL:()=>m});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});n.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex flex-col space-y-1.5 p-6",r),...s})});l.displayName="CardHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,o.cn)("font-semibold leading-none tracking-tight",r),...s})});i.displayName="CardTitle";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,o.cn)("text-sm text-muted-foreground",r),...s})});d.displayName="CardDescription";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("p-6 pt-0",r),...s})});c.displayName="CardContent";let m=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,o.cn)("flex items-center p-6 pt-0",r),...s})});m.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,type:s,...n}=e;return(0,a.jsx)("input",{type:s,className:(0,o.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...n})});n.displayName="Input"},49153:(e,t,r)=>{"use strict";r.d(t,{J:()=>d});var a=r(20475),s=r(20107),o=r(73725),n=r(29395),l=r(22250);let i=(0,n.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(o.b,{ref:t,className:(0,l.cn)(i(),r),...s})});d.displayName=o.b.displayName},36824:(e,t,r)=>{"use strict";r.d(t,{$:()=>i,F:()=>l});var a=r(20475),s=r(20107),o=r(34568),n=r(22250);let l=s.forwardRef((e,t)=>{let{className:r,children:s,...l}=e;return(0,a.jsxs)(o.bL,{ref:t,className:(0,n.cn)("relative overflow-hidden",r),...l,children:[(0,a.jsx)(o.LM,{className:"h-full w-full rounded-[inherit]",children:s}),(0,a.jsx)(i,{}),(0,a.jsx)(o.OK,{})]})});l.displayName=o.bL.displayName;let i=s.forwardRef((e,t)=>{let{className:r,orientation:s="vertical",...l}=e;return(0,a.jsx)(o.VM,{ref:t,orientation:s,className:(0,n.cn)("flex touch-none select-none transition-colors","vertical"===s&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===s&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...l,children:(0,a.jsx)(o.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=o.VM.displayName},76554:(e,t,r)=>{"use strict";r.d(t,{w:()=>l});var a=r(20475),s=r(20107),o=r(78190),n=r(22250);let l=s.forwardRef((e,t)=>{let{className:r,orientation:s="horizontal",decorative:l=!0,...i}=e;return(0,a.jsx)(o.b,{ref:t,decorative:l,orientation:s,className:(0,n.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",r),...i})});l.displayName=o.b.displayName},51303:(e,t,r)=>{"use strict";r.d(t,{A0:()=>l,BF:()=>i,Hj:()=>d,XI:()=>n,nA:()=>m,nd:()=>c,r6:()=>u});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{className:"relative w-full overflow-auto",children:(0,a.jsx)("table",{ref:t,className:(0,o.cn)("w-full caption-bottom text-sm",r),...s})})});n.displayName="Table";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("thead",{ref:t,className:(0,o.cn)("[&_tr]:border-b",r),...s})});l.displayName="TableHeader";let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tbody",{ref:t,className:(0,o.cn)("[&_tr:last-child]:border-0",r),...s})});i.displayName="TableBody",s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tfoot",{ref:t,className:(0,o.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",r),...s})}).displayName="TableFooter";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("tr",{ref:t,className:(0,o.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",r),...s})});d.displayName="TableRow";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("th",{ref:t,className:(0,o.cn)("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",r),...s})});c.displayName="TableHead";let m=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("td",{ref:t,className:(0,o.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",r),...s})});m.displayName="TableCell";let u=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("caption",{ref:t,className:(0,o.cn)("mt-4 text-sm text-muted-foreground",r),...s})});u.displayName="TableCaption"},31739:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});var a=r(20475),s=r(20107),o=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("textarea",{className:(0,o.cn)("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",r),ref:t,...s})});n.displayName="Textarea"},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>u,oR:()=>m});var a=r(20107);let s=0,o=new Map,n=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?n(r):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},i=[],d={toasts:[]};function c(e){d=l(d,e),i.forEach(e=>{e(d)})}function m(e){let{...t}=e,r=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||a()}}}),{id:r,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function u(){let[e,t]=a.useState(d);return a.useEffect(()=>(i.push(t),()=>{let e=i.indexOf(t);e>-1&&i.splice(e,1)}),[e]),{...e,toast:m,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>o});var a=r(64901),s=r(868);function o(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.d(t,{A:()=>i});var a=r(20107);let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),o=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,a.forwardRef)((e,t)=>{let{color:r="currentColor",size:s=24,strokeWidth:l=2,absoluteStrokeWidth:i,className:d="",children:c,iconNode:m,...u}=e;return(0,a.createElement)("svg",{ref:t,...n,width:s,height:s,stroke:r,strokeWidth:i?24*Number(l)/Number(s):l,className:o("lucide",d),...u},[...m.map(e=>{let[t,r]=e;return(0,a.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),i=(e,t)=>{let r=(0,a.forwardRef)((r,n)=>{let{className:i,...d}=r;return(0,a.createElement)(l,{ref:n,iconNode:t,className:o("lucide-".concat(s(e)),i),...d})});return r.displayName="".concat(e),r}},66698:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},51873:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},73725:(e,t,r)=>{"use strict";r.d(t,{b:()=>l});var a=r(20107),s=r(4589),o=r(20475),n=a.forwardRef((e,t)=>(0,o.jsx)(s.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));n.displayName="Label";var l=n},78190:(e,t,r)=>{"use strict";r.d(t,{b:()=>d});var a=r(20107),s=r(4589),o=r(20475),n="horizontal",l=["horizontal","vertical"],i=a.forwardRef((e,t)=>{let{decorative:r,orientation:a=n,...i}=e,d=l.includes(a)?a:n;return(0,o.jsx)(s.sG.div,{"data-orientation":d,...r?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...i,ref:t})});i.displayName="Separator";var d=i}},e=>{var t=t=>e(e.s=t);e.O(0,[7780,1617,5011,1827,4568,191,6035,7358],()=>t(80631)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/connectivity/page-ca74cc3bfed7745d.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/connectivity/page-ca74cc3bfed7745d.js deleted file mode 100644 index 72906fd..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/connectivity/page-ca74cc3bfed7745d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9548],{15348:(e,t,a)=>{Promise.resolve().then(a.bind(a,39966))},39966:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>f});var s=a(20475),r=a(20107),l=a(72167),o=a(35601),n=a(76837),d=a(32857),i=a(42541),c=a(49153),u=a(36760),m=a(76554),h=a(114);let f=()=>{let{toast:e}=(0,d.dj)(),[t,a]=(0,r.useState)(!0),[f,p]=(0,r.useState)([]),[x,g]=(0,r.useState)(!1),[v,b]=(0,r.useState)(""),[y,j]=(0,r.useState)({passthrough:null,selectedMac:null,modemProtocol:null,dnsProxy:null}),[N,w]=(0,r.useState)({passthrough:null,selectedMac:null,modemProtocol:null,dnsProxy:null}),P={passthrough:{disabled:'+QMAP="MPDN_rule",0;+QMAPWAC=1;+QPOWD=1',ETH:e=>'+QMAP="MPDN_rule",0,1,0,1,1,"'.concat(e,'";+QPOWD=1'),USB:e=>'+QMAP="MPDN_rule",0,1,0,3,1,"'.concat(e,'";+QPOWD=1')},modemProtocol:{rmnet:'+QCFG="usbnet",0;+QPOWD=1',ecm:'+QCFG="usbnet",1;+QPOWD=1',mbim:'+QCFG="usbnet",2;+QPOWD=1',rndis:'+QCFG="usbnet",3;+QPOWD=1'},dnsProxy:{enabled:'+QMAP="DHCPV4DNS","enable"',disabled:'+QMAP="DHCPV4DNS","disable"'}},D=e=>{let t={passthrough:null,selectedMac:null,modemProtocol:null,dnsProxy:null};return e.forEach(e=>{let{response:a}=e;if(a.includes("MPDN_rule")){let e=a.split("\n")[1];e.includes('MPDN_rule",0,1,0,1,1')?t.passthrough="ETH":e.includes('MPDN_rule",0,1,0,3,1')?t.passthrough="USB":e.includes('MPDN_rule",0,0,0,0,0')&&(t.passthrough="disabled")}if(a.includes("usbnet")){let e=a.match(/usbnet",(\d)/);e&&(t.modemProtocol=({0:"rmnet",1:"ecm",2:"mbim",3:"rndis"})[e[1]])}a.includes("DHCPV4DNS")&&(a.includes('"enable"')?t.dnsProxy="enabled":a.includes('"disable"')&&(t.dnsProxy="disabled"))}),t},S=()=>{let e=[],t=Object.entries(N).reduce((e,t)=>{let[a,s]=t;return s!==y[a]&&(e[a]=s),e},{});if("passthrough"in t){if("disabled"===t.passthrough)e.push(P.passthrough.disabled.replace(";+QPOWD=1",""));else if(t.passthrough){let e=P.passthrough[t.passthrough](N.selectedMac);return"AT".concat(e.replace(";+QPOWD=1",""))}}if("modemProtocol"in t&&t.modemProtocol){let a=P.modemProtocol[t.modemProtocol];if(1===Object.keys(t).length)return"AT".concat(a.replace(";+QPOWD=1",""));e.push(a.replace(";+QPOWD=1",""))}if("dnsProxy"in t&&t.dnsProxy){let a=P.dnsProxy[t.dnsProxy];if(1===Object.keys(t).length)return"AT".concat(a);e.push(a)}return e.length>0?"AT".concat(e.join(";")):""},A=async()=>{try{let t=encodeURIComponent("AT+QPOWD=1");if(!(await fetch("/cgi-bin/at_command.sh?command=".concat(t))).ok)throw Error("Failed to queue reboot command");e({title:"Success",description:"Settings saved and device is rebooting..."}),setTimeout(()=>{window.location.reload()},9e4)}catch(t){e({variant:"destructive",title:"Error",description:"Failed to reboot device",action:(0,s.jsx)(h.A,{})})}},R=async()=>{try{let e=S();b(e),g(!0)}catch(t){e({variant:"destructive",title:"Error",description:"Failed to prepare settings",action:(0,s.jsx)(h.A,{})})}},C=async()=>{try{let e=encodeURIComponent(v);if(!(await fetch("/cgi-bin/at_command.sh?command=".concat(e))).ok)throw Error("Failed to queue reboot command");j({...N}),await A()}catch(t){e({variant:"destructive",title:"Error",description:"Failed to save settings",action:(0,s.jsx)(h.A,{})})}};return(0,r.useEffect)(()=>{(async()=>{try{let[e,t]=await Promise.all([fetch("/cgi-bin/advance/fetch_macs.sh"),fetch("/cgi-bin/fetch_data.sh?set=4")]),[s,r]=await Promise.all([e.json(),t.json()]);p(s);let l=D(r);j(l),w(l),a(!1)}catch(t){a(!1),e({variant:"destructive",title:"Uh oh! Something went wrong.",description:"Failed to fetch connectivity settings",action:(0,s.jsx)(h.A,{})})}})()},[]),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(l.Zp,{children:[(0,s.jsxs)(l.aR,{children:[(0,s.jsx)(l.ZB,{children:"Connectivity Settings"}),(0,s.jsx)(l.BT,{children:"Configure your device's connectivity settings."})]}),(0,s.jsx)(l.Wu,{children:(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 grid-flow-row gap-6",children:[(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"passthrough",children:"IP Passthrough Mode"}),t?(0,s.jsx)(u.E,{className:"w-full h-8"}):(0,s.jsxs)(o.l6,{onValueChange:e=>w(t=>({...t,passthrough:e})),value:N.passthrough||void 0,children:[(0,s.jsx)(o.bq,{children:(0,s.jsx)(o.yv,{placeholder:"Select IP Passthrough Mode"})}),(0,s.jsx)(o.gC,{children:(0,s.jsxs)(o.s3,{children:[(0,s.jsx)(o.TR,{children:"Passthrough Mode"}),(0,s.jsx)(o.eb,{value:"disabled",children:"Disabled"}),(0,s.jsx)(o.eb,{value:"ETH",children:"ETH Passthrough Enabled"}),(0,s.jsx)(o.eb,{value:"USB",children:"USB Passthrough Enabled"})]})})]})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"mac",children:"Connected MAC"}),t?(0,s.jsx)(u.E,{className:"w-full h-8"}):(0,s.jsxs)(o.l6,{onValueChange:e=>w(t=>({...t,selectedMac:e})),value:N.selectedMac||void 0,disabled:!N.passthrough||"disabled"===N.passthrough,children:[(0,s.jsx)(o.bq,{children:(0,s.jsx)(o.yv,{placeholder:"Select Active MAC"})}),(0,s.jsx)(o.gC,{children:(0,s.jsxs)(o.s3,{children:[(0,s.jsx)(o.TR,{children:"Active MAC"}),f.map(e=>(0,s.jsx)(o.eb,{value:e.mac,children:"".concat(e.hostname," - ").concat(e.mac)},e.mac))]})})]})]}),(0,s.jsx)(m.w,{className:"lg:col-span-2 col-span-1 my-2"}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"modemProtocol",children:"USB Modem Protocol"}),t?(0,s.jsx)(u.E,{className:"w-full h-8"}):(0,s.jsxs)(o.l6,{onValueChange:e=>w(t=>({...t,modemProtocol:e})),value:N.modemProtocol||void 0,children:[(0,s.jsx)(o.bq,{children:(0,s.jsx)(o.yv,{placeholder:"Select USB Modem Protocol"})}),(0,s.jsx)(o.gC,{children:(0,s.jsxs)(o.s3,{children:[(0,s.jsx)(o.TR,{children:"USB Modem Protocol"}),(0,s.jsx)(o.eb,{value:"rmnet",children:"RMNET"}),(0,s.jsx)(o.eb,{value:"ecm",children:"ECM (Recommended)"}),(0,s.jsx)(o.eb,{value:"mbim",children:"MBIM"}),(0,s.jsx)(o.eb,{value:"rndis",children:"RNDIS"})]})})]})]}),(0,s.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,s.jsx)(c.J,{htmlFor:"dnsProxy",children:"Onboard DNS Proxy Mode"}),t?(0,s.jsx)(u.E,{className:"w-full h-8"}):(0,s.jsxs)(o.l6,{onValueChange:e=>w(t=>({...t,dnsProxy:e})),value:N.dnsProxy||void 0,children:[(0,s.jsx)(o.bq,{children:(0,s.jsx)(o.yv,{placeholder:"Select DNS Proxy Mode"})}),(0,s.jsx)(o.gC,{children:(0,s.jsxs)(o.s3,{children:[(0,s.jsx)(o.TR,{children:"DNS Proxy Mode"}),(0,s.jsx)(o.eb,{value:"enabled",children:"Enabled"}),(0,s.jsx)(o.eb,{value:"disabled",children:"Disabled (Recommended for Passthrough)"})]})})]})]})]})}),(0,s.jsx)(l.wL,{className:"grid border-t py-4",children:(0,s.jsx)(i.$,{onClick:R,disabled:!Object.entries(N).some(e=>{let[t,a]=e;return a!==y[t]})||!(!N.passthrough||"disabled"===N.passthrough||N.selectedMac),children:"Save"})})]}),(0,s.jsx)(n.Lt,{open:x,onOpenChange:g,children:(0,s.jsxs)(n.EO,{children:[(0,s.jsxs)(n.wd,{children:[(0,s.jsx)(n.r7,{children:"Reboot Required"}),(0,s.jsx)(n.$v,{children:"The changes you made require a device reboot to take effect. Would you like to reboot now?"})]}),(0,s.jsxs)(n.ck,{children:[(0,s.jsx)(n.Zr,{children:"Later"}),(0,s.jsx)(n.Rx,{onClick:C,children:"Save & Reboot Now"})]})]})})]})}},114:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var s=a(20475),r=a(42541),l=a(7197);let o=()=>(0,s.jsx)(r.$,{asChild:!0,variant:"outline",className:"ml-2",children:(0,s.jsxs)("a",{href:"https://github.com/iamromulan/quectel-rgmii-toolkit/tree/development-SDXPINN",children:[(0,s.jsx)(l.ERf,{className:"w-4 h-4 mr-2"}),"Get there!"]})})},76837:(e,t,a)=>{"use strict";a.d(t,{Lt:()=>E,Rx:()=>W,Zr:()=>z,EO:()=>F,$v:()=>U,ck:()=>Q,wd:()=>k,r7:()=>I,tv:()=>O});var s=a(20475),r=a(20107),l=a(80938),o=a(74111),n=a(71827),d=a(94521),i=a(61837),c="AlertDialog",[u,m]=(0,l.A)(c,[n.Hs]),h=(0,n.Hs)(),f=e=>{let{__scopeAlertDialog:t,...a}=e,r=h(t);return(0,s.jsx)(n.bL,{...r,...a,modal:!0})};f.displayName=c;var p=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,l=h(a);return(0,s.jsx)(n.l9,{...l,...r,ref:t})});p.displayName="AlertDialogTrigger";var x=e=>{let{__scopeAlertDialog:t,...a}=e,r=h(t);return(0,s.jsx)(n.ZL,{...r,...a})};x.displayName="AlertDialogPortal";var g=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,l=h(a);return(0,s.jsx)(n.hJ,{...l,...r,ref:t})});g.displayName="AlertDialogOverlay";var v="AlertDialogContent",[b,y]=u(v),j=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,children:l,...c}=e,u=h(a),m=r.useRef(null),f=(0,o.s)(t,m),p=r.useRef(null);return(0,s.jsx)(n.G$,{contentName:v,titleName:N,docsSlug:"alert-dialog",children:(0,s.jsx)(b,{scope:a,cancelRef:p,children:(0,s.jsxs)(n.UC,{role:"alertdialog",...u,...c,ref:f,onOpenAutoFocus:(0,d.m)(c.onOpenAutoFocus,e=>{var t;e.preventDefault(),null===(t=p.current)||void 0===t||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,s.jsx)(i.xV,{children:l}),(0,s.jsx)(C,{contentRef:m})]})})})});j.displayName=v;var N="AlertDialogTitle",w=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,l=h(a);return(0,s.jsx)(n.hE,{...l,...r,ref:t})});w.displayName=N;var P="AlertDialogDescription",D=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,l=h(a);return(0,s.jsx)(n.VY,{...l,...r,ref:t})});D.displayName=P;var S=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,l=h(a);return(0,s.jsx)(n.bm,{...l,...r,ref:t})});S.displayName="AlertDialogAction";var A="AlertDialogCancel",R=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,{cancelRef:l}=y(A,a),d=h(a),i=(0,o.s)(t,l);return(0,s.jsx)(n.bm,{...d,...r,ref:i})});R.displayName=A;var C=e=>{let{contentRef:t}=e,a="`".concat(v,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(v,"` by passing a `").concat(P,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(v,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return r.useEffect(()=>{var e;document.getElementById(null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby"))||console.warn(a)},[a,t]),null},T=a(22250),M=a(42541);let E=f,O=p,_=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(g,{className:(0,T.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...r,ref:t})});_.displayName=g.displayName;let F=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsxs)(x,{children:[(0,s.jsx)(_,{}),(0,s.jsx)(j,{ref:t,className:(0,T.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...r})]})});F.displayName=j.displayName;let k=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,T.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...a})};k.displayName="AlertDialogHeader";let Q=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,T.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};Q.displayName="AlertDialogFooter";let I=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(w,{ref:t,className:(0,T.cn)("text-lg font-semibold",a),...r})});I.displayName=w.displayName;let U=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(D,{ref:t,className:(0,T.cn)("text-sm text-muted-foreground",a),...r})});U.displayName=D.displayName;let W=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(S,{ref:t,className:(0,T.cn)((0,M.r)(),a),...r})});W.displayName=S.displayName;let z=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(R,{ref:t,className:(0,T.cn)((0,M.r)({variant:"outline"}),"mt-2 sm:mt-0",a),...r})});z.displayName=R.displayName},42541:(e,t,a)=>{"use strict";a.d(t,{$:()=>i,r:()=>d});var s=a(20475),r=a(20107),l=a(61837),o=a(29395),n=a(22250);let d=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),i=r.forwardRef((e,t)=>{let{className:a,variant:r,size:o,asChild:i=!1,...c}=e,u=i?l.DX:"button";return(0,s.jsx)(u,{className:(0,n.cn)(d({variant:r,size:o,className:a})),ref:t,...c})});i.displayName="Button"},72167:(e,t,a)=>{"use strict";a.d(t,{BT:()=>i,Wu:()=>c,ZB:()=>d,Zp:()=>o,aR:()=>n,wL:()=>u});var s=a(20475),r=a(20107),l=a(22250);let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...r})});o.displayName="Card";let n=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-6",a),...r})});n.displayName="CardHeader";let d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("h3",{ref:t,className:(0,l.cn)("font-semibold leading-none tracking-tight",a),...r})});d.displayName="CardTitle";let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("p",{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",a),...r})});i.displayName="CardDescription";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("p-6 pt-0",a),...r})});c.displayName="CardContent";let u=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,l.cn)("flex items-center p-6 pt-0",a),...r})});u.displayName="CardFooter"},49153:(e,t,a)=>{"use strict";a.d(t,{J:()=>i});var s=a(20475),r=a(20107),l=a(73725),o=a(29395),n=a(22250);let d=(0,o.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(l.b,{ref:t,className:(0,n.cn)(d(),a),...r})});i.displayName=l.b.displayName},35601:(e,t,a)=>{"use strict";a.d(t,{TR:()=>p,bq:()=>u,eb:()=>x,gC:()=>f,l6:()=>d,s3:()=>i,yv:()=>c});var s=a(20475),r=a(20107),l=a(7197),o=a(32301),n=a(22250);let d=o.bL,i=o.YJ,c=o.WT,u=r.forwardRef((e,t)=>{let{className:a,children:r,...d}=e;return(0,s.jsxs)(o.l9,{ref:t,className:(0,n.cn)("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",a),...d,children:[r,(0,s.jsx)(o.In,{asChild:!0,children:(0,s.jsx)(l.TBE,{className:"h-4 w-4 opacity-50"})})]})});u.displayName=o.l9.displayName;let m=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(o.PP,{ref:t,className:(0,n.cn)("flex cursor-default items-center justify-center py-1",a),...r,children:(0,s.jsx)(l.Mtm,{})})});m.displayName=o.PP.displayName;let h=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(o.wn,{ref:t,className:(0,n.cn)("flex cursor-default items-center justify-center py-1",a),...r,children:(0,s.jsx)(l.D3D,{})})});h.displayName=o.wn.displayName;let f=r.forwardRef((e,t)=>{let{className:a,children:r,position:l="popper",...d}=e;return(0,s.jsx)(o.ZL,{children:(0,s.jsxs)(o.UC,{ref:t,className:(0,n.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===l&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",a),position:l,...d,children:[(0,s.jsx)(m,{}),(0,s.jsx)(o.LM,{className:(0,n.cn)("p-1","popper"===l&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,s.jsx)(h,{})]})})});f.displayName=o.UC.displayName;let p=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(o.JU,{ref:t,className:(0,n.cn)("px-2 py-1.5 text-sm font-semibold",a),...r})});p.displayName=o.JU.displayName;let x=r.forwardRef((e,t)=>{let{className:a,children:r,...d}=e;return(0,s.jsxs)(o.q7,{ref:t,className:(0,n.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,s.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,s.jsx)(o.VF,{children:(0,s.jsx)(l.Srz,{className:"h-4 w-4"})})}),(0,s.jsx)(o.p4,{children:r})]})});x.displayName=o.q7.displayName,r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(o.wv,{ref:t,className:(0,n.cn)("-mx-1 my-1 h-px bg-muted",a),...r})}).displayName=o.wv.displayName},76554:(e,t,a)=>{"use strict";a.d(t,{w:()=>n});var s=a(20475),r=a(20107),l=a(78190),o=a(22250);let n=r.forwardRef((e,t)=>{let{className:a,orientation:r="horizontal",decorative:n=!0,...d}=e;return(0,s.jsx)(l.b,{ref:t,decorative:n,orientation:r,className:(0,o.cn)("shrink-0 bg-border","horizontal"===r?"h-[1px] w-full":"h-full w-[1px]",a),...d})});n.displayName=l.b.displayName},36760:(e,t,a)=>{"use strict";a.d(t,{E:()=>l});var s=a(20475),r=a(22250);function l(e){let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,r.cn)("animate-pulse rounded-md bg-primary/10",t),...a})}},32857:(e,t,a)=>{"use strict";a.d(t,{dj:()=>m,oR:()=>u});var s=a(20107);let r=0,l=new Map,o=e=>{if(l.has(e))return;let t=setTimeout(()=>{l.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);l.set(e,t)},n=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:a}=t;return a?o(a):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===a||void 0===a?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],i={toasts:[]};function c(e){i=n(i,e),d.forEach(e=>{e(i)})}function u(e){let{...t}=e,a=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:a});return c({type:"ADD_TOAST",toast:{...t,id:a,open:!0,onOpenChange:e=>{e||s()}}}),{id:a,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:a}})}}function m(){let[e,t]=s.useState(i);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,a)=>{"use strict";a.d(t,{cn:()=>l});var s=a(64901),r=a(868);function l(){for(var e=arguments.length,t=Array(e),a=0;a{"use strict";a.d(t,{b:()=>i});var s=a(20107),r=a(4589),l=a(20475),o="horizontal",n=["horizontal","vertical"],d=s.forwardRef((e,t)=>{let{decorative:a,orientation:s=o,...d}=e,i=n.includes(s)?s:o;return(0,l.jsx)(r.sG.div,{"data-orientation":i,...a?{role:"none"}:{"aria-orientation":"vertical"===i?i:void 0,role:"separator"},...d,ref:t})});d.displayName="Separator";var i=d}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,1617,4673,5011,1827,1457,191,6035,7358],()=>t(15348)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/mtu/page-3f0163e50a9b265c.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/mtu/page-3f0163e50a9b265c.js deleted file mode 100644 index d4e12e2..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/mtu/page-3f0163e50a9b265c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3669],{27651:(e,t,r)=>{Promise.resolve().then(r.bind(r,34819))},34819:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var s=r(20475),n=r(20107),a=r(72167),i=r(64219),o=r(22631),l=r(42541),u=r(32857),c=r(114);let d=()=>{let[e,t]=(0,n.useState)("1500"),[r,d]=(0,n.useState)(!1),[f,p]=(0,n.useState)(!0),[m,h]=(0,n.useState)(""),v=(0,u.dj)();(0,n.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/advance/mtu.sh"),r=await e.json();d(r.isEnabled),t(r.currentValue.toString()),p(!1)}catch(e){h("Failed to fetch MTU settings"),p(!1),v.toast({variant:"destructive",title:"Uh oh! Something went wrong.",description:"Failed to fetch MTU settings",action:(0,s.jsx)(c.A,{})})}})()},[]);let b=async t=>{t.preventDefault(),h("");let n=r?e:"disable";try{let e=await fetch("/cgi-bin/advance/mtu.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"mtu=".concat(n)}),t=await e.json();!0===t.success?v.toast({title:"Success",description:t.message||"MTU settings saved successfully"}):v.toast({variant:"destructive",title:"Uh oh! Something went wrong.",description:t.error||"Failed to save MTU settings",action:(0,s.jsx)(c.A,{})})}catch(e){h("Failed to save MTU settings"),v.toast({variant:"destructive",title:"Uh oh! Something went wrong.",description:"Network error while saving MTU settings",action:(0,s.jsx)(c.A,{})})}};return(0,s.jsxs)(a.Zp,{children:[(0,s.jsxs)(a.aR,{children:[(0,s.jsx)(a.ZB,{children:"MTU Settings"}),(0,s.jsx)(a.BT,{children:"Configure MTU for rmnet_data0 interface."})]}),(0,s.jsx)(a.Wu,{children:(0,s.jsxs)("form",{onSubmit:b,className:"space-y-8",children:[(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm font-medium",children:"MTU Value"}),(0,s.jsx)(i.p,{type:"number",value:e,onChange:e=>t(e.target.value),disabled:!r,className:"mt-1",min:"68",max:"9000"}),(0,s.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"Set the MTU value for your connection (default: 1500)."})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-base font-medium",children:"MTU State"}),(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Toggle to enable or disable custom MTU value."})]}),(0,s.jsx)(o.d,{checked:r,onCheckedChange:e=>{d(e),e||t("1500")}})]})]}),(0,s.jsx)(l.$,{type:"submit",className:"w-full",disabled:f,children:"Save Configuration"})]})})]})}},114:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var s=r(20475),n=r(42541),a=r(7197);let i=()=>(0,s.jsx)(n.$,{asChild:!0,variant:"outline",className:"ml-2",children:(0,s.jsxs)("a",{href:"https://github.com/iamromulan/quectel-rgmii-toolkit/tree/development-SDXPINN",children:[(0,s.jsx)(a.ERf,{className:"w-4 h-4 mr-2"}),"Get there!"]})})},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>u,r:()=>l});var s=r(20475),n=r(20107),a=r(61837),i=r(29395),o=r(22250);let l=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),u=n.forwardRef((e,t)=>{let{className:r,variant:n,size:i,asChild:u=!1,...c}=e,d=u?a.DX:"button";return(0,s.jsx)(d,{className:(0,o.cn)(l({variant:n,size:i,className:r})),ref:t,...c})});u.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>u,Wu:()=>c,ZB:()=>l,Zp:()=>i,aR:()=>o,wL:()=>d});var s=r(20475),n=r(20107),a=r(22250);let i=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...n})});i.displayName="Card";let o=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",r),...n})});o.displayName="CardHeader";let l=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("h3",{ref:t,className:(0,a.cn)("font-semibold leading-none tracking-tight",r),...n})});l.displayName="CardTitle";let u=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",r),...n})});u.displayName="CardDescription";let c=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",r),...n})});c.displayName="CardContent";let d=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",r),...n})});d.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var s=r(20475),n=r(20107),a=r(22250);let i=n.forwardRef((e,t)=>{let{className:r,type:n,...i}=e;return(0,s.jsx)("input",{type:n,className:(0,a.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},22631:(e,t,r)=>{"use strict";r.d(t,{d:()=>j});var s=r(20475),n=r(20107),a=r(94521),i=r(74111),o=r(80938),l=r(81255),u=r(48543),c=r(26783),d=r(4589),f="Switch",[p,m]=(0,o.A)(f),[h,v]=p(f),b=n.forwardRef((e,t)=>{let{__scopeSwitch:r,name:o,checked:u,defaultChecked:c,required:f,disabled:p,value:m="on",onCheckedChange:v,form:b,...g}=e,[x,N]=n.useState(null),j=(0,i.s)(t,e=>N(e)),S=n.useRef(!1),T=!x||b||!!x.closest("form"),[k=!1,A]=(0,l.i)({prop:u,defaultProp:c,onChange:v});return(0,s.jsxs)(h,{scope:r,checked:k,disabled:p,children:[(0,s.jsx)(d.sG.button,{type:"button",role:"switch","aria-checked":k,"aria-required":f,"data-state":w(k),"data-disabled":p?"":void 0,disabled:p,value:m,...g,ref:j,onClick:(0,a.m)(e.onClick,e=>{A(e=>!e),T&&(S.current=e.isPropagationStopped(),S.current||e.stopPropagation())})}),T&&(0,s.jsx)(y,{control:x,bubbles:!S.current,name:o,value:m,checked:k,required:f,disabled:p,form:b,style:{transform:"translateX(-100%)"}})]})});b.displayName=f;var g="SwitchThumb",x=n.forwardRef((e,t)=>{let{__scopeSwitch:r,...n}=e,a=v(g,r);return(0,s.jsx)(d.sG.span,{"data-state":w(a.checked),"data-disabled":a.disabled?"":void 0,...n,ref:t})});x.displayName=g;var y=e=>{let{control:t,checked:r,bubbles:a=!0,...i}=e,o=n.useRef(null),l=(0,u.Z)(r),d=(0,c.X)(t);return n.useEffect(()=>{let e=o.current,t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(l!==r&&t){let s=new Event("click",{bubbles:a});t.call(e,r),e.dispatchEvent(s)}},[l,r,a]),(0,s.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...i,tabIndex:-1,ref:o,style:{...e.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function w(e){return e?"checked":"unchecked"}var N=r(22250);let j=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(b,{className:(0,N.cn)("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",r),...n,ref:t,children:(0,s.jsx)(x,{className:(0,N.cn)("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})})});j.displayName=b.displayName},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>f,oR:()=>d});var s=r(20107);let n=0,a=new Map,i=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],u={toasts:[]};function c(e){u=o(u,e),l.forEach(e=>{e(u)})}function d(e){let{...t}=e,r=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||s()}}}),{id:r,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function f(){let[e,t]=s.useState(u);return s.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:d,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>a});var s=r(64901),n=r(868);function a(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";function s(e,t,{checkForDefaultPrevented:r=!0}={}){return function(s){if(e?.(s),!1===r||!s.defaultPrevented)return t?.(s)}}r.d(t,{m:()=>s})},80938:(e,t,r)=>{"use strict";r.d(t,{A:()=>i,q:()=>a});var s=r(20107),n=r(20475);function a(e,t){let r=s.createContext(t),a=e=>{let{children:t,...a}=e,i=s.useMemo(()=>a,Object.values(a));return(0,n.jsx)(r.Provider,{value:i,children:t})};return a.displayName=e+"Provider",[a,function(n){let a=s.useContext(r);if(a)return a;if(void 0!==t)return t;throw Error(`\`${n}\` must be used within \`${e}\``)}]}function i(e,t=[]){let r=[],a=()=>{let t=r.map(e=>s.createContext(e));return function(r){let n=r?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return a.scopeName=e,[function(t,a){let i=s.createContext(a),o=r.length;r=[...r,a];let l=t=>{let{scope:r,children:a,...l}=t,u=r?.[e]?.[o]||i,c=s.useMemo(()=>l,Object.values(l));return(0,n.jsx)(u.Provider,{value:c,children:a})};return l.displayName=t+"Provider",[l,function(r,n){let l=n?.[e]?.[o]||i,u=s.useContext(l);if(u)return u;if(void 0!==a)return a;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:r,scopeName:s})=>{let n=r(e)[`__scope${s}`];return{...t,...n}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(a,...t)]}},4589:(e,t,r)=>{"use strict";r.d(t,{hO:()=>l,sG:()=>o});var s=r(20107),n=r(25642),a=r(61837),i=r(20475),o=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=s.forwardRef((e,r)=>{let{asChild:s,...n}=e,o=s?a.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(o,{...n,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function l(e,t){e&&n.flushSync(()=>e.dispatchEvent(t))}},85547:(e,t,r)=>{"use strict";r.d(t,{c:()=>n});var s=r(20107);function n(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>(...e)=>t.current?.(...e),[])}},81255:(e,t,r)=>{"use strict";r.d(t,{i:()=>a});var s=r(20107),n=r(85547);function a({prop:e,defaultProp:t,onChange:r=()=>{}}){let[a,i]=function({defaultProp:e,onChange:t}){let r=s.useState(e),[a]=r,i=s.useRef(a),o=(0,n.c)(t);return s.useEffect(()=>{i.current!==a&&(o(a),i.current=a)},[a,i,o]),r}({defaultProp:t,onChange:r}),o=void 0!==e,l=o?e:a,u=(0,n.c)(r);return[l,s.useCallback(t=>{if(o){let r="function"==typeof t?t(e):t;r!==e&&u(r)}else i(t)},[o,e,i,u])]}},58013:(e,t,r)=>{"use strict";r.d(t,{N:()=>n});var s=r(20107),n=globalThis?.document?s.useLayoutEffect:()=>{}},48543:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});var s=r(20107);function n(e){let t=s.useRef({value:e,previous:e});return s.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},26783:(e,t,r)=>{"use strict";r.d(t,{X:()=>a});var s=r(20107),n=r(58013);function a(e){let[t,r]=s.useState(void 0);return(0,n.N)(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let s,n;if(!Array.isArray(t)||!t.length)return;let a=t[0];if("borderBoxSize"in a){let e=a.borderBoxSize,t=Array.isArray(e)?e[0]:e;s=t.inlineSize,n=t.blockSize}else s=e.offsetWidth,n=e.offsetHeight;r({width:s,height:n})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}},29395:(e,t,r)=>{"use strict";r.d(t,{F:()=>a});let s=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,n=function(){for(var e,t,r=0,s="";rr=>{var a;if((null==t?void 0:t.variants)==null)return n(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:o}=t,l=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],n=null==o?void 0:o[e];if(null===t)return null;let a=s(t)||s(n);return i[e][a]}),u=r&&Object.entries(r).reduce((e,t)=>{let[r,s]=t;return void 0===s||(e[r]=s),e},{});return n(e,l,null==t?void 0:null===(a=t.compoundVariants)||void 0===a?void 0:a.reduce((e,t)=>{let{class:r,className:s,...n}=t;return Object.entries(n).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...u}[t]):({...o,...u})[t]===r})?[...e,r,s]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,191,6035,7358],()=>t(27651)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/ttl-settings/page-ed723dcbbed96c52.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/ttl-settings/page-ed723dcbbed96c52.js deleted file mode 100644 index df70f4e..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/advanced-settings/ttl-settings/page-ed723dcbbed96c52.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4481],{70465:(e,t,r)=>{Promise.resolve().then(r.bind(r,83143))},83143:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var s=r(20475),n=r(20107),a=r(72167),i=r(64219),o=r(22631),l=r(42541),u=r(32857),c=r(114);let d=()=>{let[e,t]=(0,n.useState)("0"),[r,d]=(0,n.useState)(!1),[f,p]=(0,n.useState)(!0),[m,h]=(0,n.useState)(""),[v,b]=(0,n.useState)(""),g=(0,u.dj)();(0,n.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/advance/ttl.sh"),r=await e.json();d(r.isEnabled),t(r.currentValue.toString()),p(!1)}catch(e){h("Failed to fetch TTL settings"),p(!1),g.toast({variant:"destructive",title:"Uh oh! Something went wrong.",description:m,action:(0,s.jsx)(c.A,{})})}})()},[]);let x=async t=>{t.preventDefault(),h(""),b("");let n=r?e:"0";try{let e=await fetch("/cgi-bin/advance/ttl.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"ttl=".concat(n)}),t=await e.json();!0===t.success?g.toast({title:"Success",description:"Settings saved successfully"}):g.toast({variant:"destructive",title:"Uh oh! Something went wrong.",description:"Failed to save settings",action:(0,s.jsx)(c.A,{})})}catch(e){h("Failed to save settings")}};return(0,s.jsxs)(a.Zp,{children:[(0,s.jsxs)(a.aR,{children:[(0,s.jsx)(a.ZB,{children:"TTL Settings"}),(0,s.jsx)(a.BT,{children:"Configure TTL mangling for your connection."})]}),(0,s.jsx)(a.Wu,{children:(0,s.jsxs)("form",{onSubmit:x,className:"space-y-8",children:[(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-sm font-medium",children:"TTL Value"}),(0,s.jsx)(i.p,{type:"number",min:"0",max:"255",value:e,onChange:e=>t(e.target.value),disabled:!r,className:"mt-1"}),(0,s.jsx)("p",{className:"text-sm text-gray-500 mt-1",children:"Set the TTL value for your connection (0-255)."})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between rounded-lg border p-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"text-base font-medium",children:"TTL State"}),(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Toggle to enable or disable TTL mangling"})]}),(0,s.jsx)(o.d,{checked:r,onCheckedChange:d})]})]}),(0,s.jsx)(l.$,{type:"submit",className:"w-full",disabled:f,children:"Save Configuration"})]})})]})}},114:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var s=r(20475),n=r(42541),a=r(7197);let i=()=>(0,s.jsx)(n.$,{asChild:!0,variant:"outline",className:"ml-2",children:(0,s.jsxs)("a",{href:"https://github.com/iamromulan/quectel-rgmii-toolkit/tree/development-SDXPINN",children:[(0,s.jsx)(a.ERf,{className:"w-4 h-4 mr-2"}),"Get there!"]})})},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>u,r:()=>l});var s=r(20475),n=r(20107),a=r(61837),i=r(29395),o=r(22250);let l=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),u=n.forwardRef((e,t)=>{let{className:r,variant:n,size:i,asChild:u=!1,...c}=e,d=u?a.DX:"button";return(0,s.jsx)(d,{className:(0,o.cn)(l({variant:n,size:i,className:r})),ref:t,...c})});u.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>u,Wu:()=>c,ZB:()=>l,Zp:()=>i,aR:()=>o,wL:()=>d});var s=r(20475),n=r(20107),a=r(22250);let i=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...n})});i.displayName="Card";let o=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",r),...n})});o.displayName="CardHeader";let l=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("h3",{ref:t,className:(0,a.cn)("font-semibold leading-none tracking-tight",r),...n})});l.displayName="CardTitle";let u=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("p",{ref:t,className:(0,a.cn)("text-sm text-muted-foreground",r),...n})});u.displayName="CardDescription";let c=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("p-6 pt-0",r),...n})});c.displayName="CardContent";let d=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex items-center p-6 pt-0",r),...n})});d.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var s=r(20475),n=r(20107),a=r(22250);let i=n.forwardRef((e,t)=>{let{className:r,type:n,...i}=e;return(0,s.jsx)("input",{type:n,className:(0,a.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},22631:(e,t,r)=>{"use strict";r.d(t,{d:()=>j});var s=r(20475),n=r(20107),a=r(94521),i=r(74111),o=r(80938),l=r(81255),u=r(48543),c=r(26783),d=r(4589),f="Switch",[p,m]=(0,o.A)(f),[h,v]=p(f),b=n.forwardRef((e,t)=>{let{__scopeSwitch:r,name:o,checked:u,defaultChecked:c,required:f,disabled:p,value:m="on",onCheckedChange:v,form:b,...g}=e,[x,N]=n.useState(null),j=(0,i.s)(t,e=>N(e)),S=n.useRef(!1),T=!x||b||!!x.closest("form"),[k=!1,A]=(0,l.i)({prop:u,defaultProp:c,onChange:v});return(0,s.jsxs)(h,{scope:r,checked:k,disabled:p,children:[(0,s.jsx)(d.sG.button,{type:"button",role:"switch","aria-checked":k,"aria-required":f,"data-state":w(k),"data-disabled":p?"":void 0,disabled:p,value:m,...g,ref:j,onClick:(0,a.m)(e.onClick,e=>{A(e=>!e),T&&(S.current=e.isPropagationStopped(),S.current||e.stopPropagation())})}),T&&(0,s.jsx)(y,{control:x,bubbles:!S.current,name:o,value:m,checked:k,required:f,disabled:p,form:b,style:{transform:"translateX(-100%)"}})]})});b.displayName=f;var g="SwitchThumb",x=n.forwardRef((e,t)=>{let{__scopeSwitch:r,...n}=e,a=v(g,r);return(0,s.jsx)(d.sG.span,{"data-state":w(a.checked),"data-disabled":a.disabled?"":void 0,...n,ref:t})});x.displayName=g;var y=e=>{let{control:t,checked:r,bubbles:a=!0,...i}=e,o=n.useRef(null),l=(0,u.Z)(r),d=(0,c.X)(t);return n.useEffect(()=>{let e=o.current,t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(l!==r&&t){let s=new Event("click",{bubbles:a});t.call(e,r),e.dispatchEvent(s)}},[l,r,a]),(0,s.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...i,tabIndex:-1,ref:o,style:{...e.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function w(e){return e?"checked":"unchecked"}var N=r(22250);let j=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)(b,{className:(0,N.cn)("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",r),...n,ref:t,children:(0,s.jsx)(x,{className:(0,N.cn)("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})})});j.displayName=b.displayName},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>f,oR:()=>d});var s=r(20107);let n=0,a=new Map,i=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,t)},o=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],u={toasts:[]};function c(e){u=o(u,e),l.forEach(e=>{e(u)})}function d(e){let{...t}=e,r=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||s()}}}),{id:r,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function f(){let[e,t]=s.useState(u);return s.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:d,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>a});var s=r(64901),n=r(868);function a(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";function s(e,t,{checkForDefaultPrevented:r=!0}={}){return function(s){if(e?.(s),!1===r||!s.defaultPrevented)return t?.(s)}}r.d(t,{m:()=>s})},80938:(e,t,r)=>{"use strict";r.d(t,{A:()=>i,q:()=>a});var s=r(20107),n=r(20475);function a(e,t){let r=s.createContext(t),a=e=>{let{children:t,...a}=e,i=s.useMemo(()=>a,Object.values(a));return(0,n.jsx)(r.Provider,{value:i,children:t})};return a.displayName=e+"Provider",[a,function(n){let a=s.useContext(r);if(a)return a;if(void 0!==t)return t;throw Error(`\`${n}\` must be used within \`${e}\``)}]}function i(e,t=[]){let r=[],a=()=>{let t=r.map(e=>s.createContext(e));return function(r){let n=r?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return a.scopeName=e,[function(t,a){let i=s.createContext(a),o=r.length;r=[...r,a];let l=t=>{let{scope:r,children:a,...l}=t,u=r?.[e]?.[o]||i,c=s.useMemo(()=>l,Object.values(l));return(0,n.jsx)(u.Provider,{value:c,children:a})};return l.displayName=t+"Provider",[l,function(r,n){let l=n?.[e]?.[o]||i,u=s.useContext(l);if(u)return u;if(void 0!==a)return a;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:r,scopeName:s})=>{let n=r(e)[`__scope${s}`];return{...t,...n}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(a,...t)]}},4589:(e,t,r)=>{"use strict";r.d(t,{hO:()=>l,sG:()=>o});var s=r(20107),n=r(25642),a=r(61837),i=r(20475),o=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=s.forwardRef((e,r)=>{let{asChild:s,...n}=e,o=s?a.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(o,{...n,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function l(e,t){e&&n.flushSync(()=>e.dispatchEvent(t))}},85547:(e,t,r)=>{"use strict";r.d(t,{c:()=>n});var s=r(20107);function n(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>(...e)=>t.current?.(...e),[])}},81255:(e,t,r)=>{"use strict";r.d(t,{i:()=>a});var s=r(20107),n=r(85547);function a({prop:e,defaultProp:t,onChange:r=()=>{}}){let[a,i]=function({defaultProp:e,onChange:t}){let r=s.useState(e),[a]=r,i=s.useRef(a),o=(0,n.c)(t);return s.useEffect(()=>{i.current!==a&&(o(a),i.current=a)},[a,i,o]),r}({defaultProp:t,onChange:r}),o=void 0!==e,l=o?e:a,u=(0,n.c)(r);return[l,s.useCallback(t=>{if(o){let r="function"==typeof t?t(e):t;r!==e&&u(r)}else i(t)},[o,e,i,u])]}},58013:(e,t,r)=>{"use strict";r.d(t,{N:()=>n});var s=r(20107),n=globalThis?.document?s.useLayoutEffect:()=>{}},48543:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});var s=r(20107);function n(e){let t=s.useRef({value:e,previous:e});return s.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},26783:(e,t,r)=>{"use strict";r.d(t,{X:()=>a});var s=r(20107),n=r(58013);function a(e){let[t,r]=s.useState(void 0);return(0,n.N)(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let s,n;if(!Array.isArray(t)||!t.length)return;let a=t[0];if("borderBoxSize"in a){let e=a.borderBoxSize,t=Array.isArray(e)?e[0]:e;s=t.inlineSize,n=t.blockSize}else s=e.offsetWidth,n=e.offsetHeight;r({width:s,height:n})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}r(void 0)},[e]),t}},29395:(e,t,r)=>{"use strict";r.d(t,{F:()=>a});let s=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,n=function(){for(var e,t,r=0,s="";rr=>{var a;if((null==t?void 0:t.variants)==null)return n(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:o}=t,l=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],n=null==o?void 0:o[e];if(null===t)return null;let a=s(t)||s(n);return i[e][a]}),u=r&&Object.entries(r).reduce((e,t)=>{let[r,s]=t;return void 0===s||(e[r]=s),e},{});return n(e,l,null==t?void 0:null===(a=t.compoundVariants)||void 0===a?void 0:a.reduce((e,t)=>{let{class:r,className:s,...n}=t;return Object.entries(n).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...u}[t]):({...o,...u})[t]===r})?[...e,r,s]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,191,6035,7358],()=>t(70465)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/band-locking/page-19705544b7dce06b.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/band-locking/page-19705544b7dce06b.js deleted file mode 100644 index 5cef901..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/band-locking/page-19705544b7dce06b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1942],{42554:(e,t,a)=>{Promise.resolve().then(a.bind(a,75808))},75808:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>p});var s=a(20475),r=a(20107),n=a(72167),o=a(574),c=a(42541),i=a(32857),d=a(29475),l=a(91994);let u={lte:"lte_band",nsa:"nsa_nr5g_band",sa:"nrdc_nr5g_band"},f={lte:"lte_band",nsa:"nsa_nr5g_band",sa:"nr5g_band"},p=()=>{let{toast:e}=(0,i.dj)(),[t,a]=(0,r.useState)({lte:[],nsa:[],sa:[]}),[p,h]=(0,r.useState)({lte:[],nsa:[],sa:[]}),[m,g]=(0,r.useState)(!0),b=async e=>{try{let t=encodeURIComponent(e),a=await fetch("/cgi-bin/at_command.sh?command=".concat(t),{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(!a.ok)throw Error("HTTP error! status: ".concat(a.status));let s=await a.json();if(s.error)throw Error(s.error);return s}catch(e){throw console.error("AT Command error:",e),e}},x=(e,t,a)=>{let s=e.split("\n"),r=a?u[t]:f[t];for(let e of s){let t='"'.concat(r,'"');if(e.includes(t)){let t=e.match(/\"[^\"]+\",(.+)/);if(t&&t[1])return t[1].trim().split(":").map(Number).filter(e=>!isNaN(e))}}return[]},v=async()=>{try{let e=await fetch("/cgi-bin/fetch_data.sh?set=7");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));let t=await e.json(),s=t[0].response,r={lte:x(s,"lte",!0),nsa:x(s,"nsa",!0),sa:x(s,"sa",!0)};a(r);let n=t[1].response,o={lte:x(n,"lte",!1),nsa:x(n,"nsa",!1),sa:x(n,"sa",!1)};h(o),g(!1)}catch(t){console.error("Error fetching bands:",t),e({title:"Error",description:"Failed to fetch bands data.",variant:"destructive"}),g(!1)}};(0,r.useEffect)(()=>{v()},[]);let N=(e,t)=>{h(a=>({...a,[e]:a[e].includes(t)?a[e].filter(e=>e!==t):[...a[e],t].sort((e,t)=>e-t)}))},w=async a=>{try{let s=p[a].join(":");if("nsa"===a){let e=p.sa.join(":");if(await b('AT+QNWPREFCFG="'.concat(f.nsa,'",').concat(s)),e)await b('AT+QNWPREFCFG="'.concat(f.sa,'",').concat(e));else{let e=t.sa.join(":");await b('AT+QNWPREFCFG="'.concat(f.sa,'",').concat(e))}h(a=>({...a,nsa:p.nsa,sa:e?p.sa:t.sa}))}else await b('AT+QNWPREFCFG="'.concat(f[a],'",').concat(s)),h(e=>({...e,[a]:p[a]}));e({title:"Band Locking",description:"Bands locked successfully."}),setTimeout(v,1e3)}catch(t){console.error("Error locking ".concat(a," bands:"),t),e({title:"Error",description:"Failed to lock ".concat(a.toUpperCase()," bands."),variant:"destructive"})}},y=e=>{h(t=>({...t,[e]:[]}))},T=async a=>{try{let s=t[a].join(":");if("nsa"===a){await b('AT+QNWPREFCFG="'.concat(f.nsa,'",').concat(s));let e=p.sa.join(":");e&&await b('AT+QNWPREFCFG="'.concat(f.sa,'",').concat(e))}else await b('AT+QNWPREFCFG="'.concat(f[a],'",').concat(s));e({title:"Reset Successful",description:"".concat(a.toUpperCase()," bands reset to default.")}),await v()}catch(t){console.error("Error resetting ".concat(a," bands:"),t),e({title:"Error",description:"Failed to reset ".concat(a.toUpperCase()," bands."),variant:"destructive"})}},j=e=>{let{title:a,description:r,bandType:i,prefix:u}=e;return(0,s.jsxs)(n.Zp,{children:[(0,s.jsxs)(n.aR,{children:[(0,s.jsx)(n.ZB,{children:a}),(0,s.jsx)(n.BT,{children:r})]}),(0,s.jsx)(n.Wu,{className:"grid lg:grid-cols-8 md:grid-cols-6 sm:grid-cols-4 grid-cols-3 grid-flow-row gap-4",children:m?(0,s.jsx)("div",{className:"col-span-8",children:"Fetching bands..."}):t[i].map(e=>(0,s.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,s.jsx)(o.S,{id:"".concat(i,"-").concat(e),checked:p[i].includes(e),onCheckedChange:()=>N(i,e)}),(0,s.jsxs)("label",{htmlFor:"".concat(i,"-").concat(e),className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:[u,e]})]},e))}),(0,s.jsxs)(n.wL,{className:"border-t py-4 grid grid-flow-row md:grid-cols-3 grid-cols-1 gap-3",children:[(0,s.jsxs)(c.$,{onClick:()=>w(i),children:[(0,s.jsx)(d.A,{className:"h-4 w-4"}),"Lock Selected Bands"]}),(0,s.jsx)(c.$,{variant:"secondary",onClick:()=>y(i),children:"Uncheck All"}),(0,s.jsxs)(c.$,{variant:"secondary",onClick:()=>T(i),children:[(0,s.jsx)(l.A,{className:"h-4 w-4"}),"Reset to Default"]})]})]})};return(0,s.jsxs)("div",{className:"grid gap-6",children:[(0,s.jsx)(j,{title:"4G LTE Band Locking",description:"Lock the device to specific LTE bands.",bandType:"lte",prefix:"B"}),(0,s.jsx)(j,{title:"NR5G-NSA Band Locking",description:"Lock the device to specific NR5G-NSA bands.",bandType:"nsa",prefix:"N"}),(0,s.jsx)(j,{title:"NR5G-SA Band Locking",description:"Lock the device to specific NR5G-SA bands.",bandType:"sa",prefix:"N"})]})}},42541:(e,t,a)=>{"use strict";a.d(t,{$:()=>d,r:()=>i});var s=a(20475),r=a(20107),n=a(61837),o=a(29395),c=a(22250);let i=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=r.forwardRef((e,t)=>{let{className:a,variant:r,size:o,asChild:d=!1,...l}=e,u=d?n.DX:"button";return(0,s.jsx)(u,{className:(0,c.cn)(i({variant:r,size:o,className:a})),ref:t,...l})});d.displayName="Button"},72167:(e,t,a)=>{"use strict";a.d(t,{BT:()=>d,Wu:()=>l,ZB:()=>i,Zp:()=>o,aR:()=>c,wL:()=>u});var s=a(20475),r=a(20107),n=a(22250);let o=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...r})});o.displayName="Card";let c=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",a),...r})});c.displayName="CardHeader";let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("h3",{ref:t,className:(0,n.cn)("font-semibold leading-none tracking-tight",a),...r})});i.displayName="CardTitle";let d=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("p",{ref:t,className:(0,n.cn)("text-sm text-muted-foreground",a),...r})});d.displayName="CardDescription";let l=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("p-6 pt-0",a),...r})});l.displayName="CardContent";let u=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)("div",{ref:t,className:(0,n.cn)("flex items-center p-6 pt-0",a),...r})});u.displayName="CardFooter"},574:(e,t,a)=>{"use strict";a.d(t,{S:()=>i});var s=a(20475),r=a(20107),n=a(32044),o=a(7197),c=a(22250);let i=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(n.bL,{ref:t,className:(0,c.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",a),...r,children:(0,s.jsx)(n.C1,{className:(0,c.cn)("flex items-center justify-center text-current"),children:(0,s.jsx)(o.Srz,{className:"h-4 w-4"})})})});i.displayName=n.bL.displayName},32857:(e,t,a)=>{"use strict";a.d(t,{dj:()=>f,oR:()=>u});var s=a(20107);let r=0,n=new Map,o=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),l({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},c=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:a}=t;return a?o(a):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===a||void 0===a?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},i=[],d={toasts:[]};function l(e){d=c(d,e),i.forEach(e=>{e(d)})}function u(e){let{...t}=e,a=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>l({type:"DISMISS_TOAST",toastId:a});return l({type:"ADD_TOAST",toast:{...t,id:a,open:!0,onOpenChange:e=>{e||s()}}}),{id:a,dismiss:s,update:e=>l({type:"UPDATE_TOAST",toast:{...e,id:a}})}}function f(){let[e,t]=s.useState(d);return s.useEffect(()=>(i.push(t),()=>{let e=i.indexOf(t);e>-1&&i.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>l({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,a)=>{"use strict";a.d(t,{cn:()=>n});var s=a(64901),r=a(868);function n(){for(var e=arguments.length,t=Array(e),a=0;a{var t=t=>e(e.s=t);e.O(0,[9980,7780,5315,191,6035,7358],()=>t(42554)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/basic-settings/page-cf5741b8d8576a31.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/basic-settings/page-cf5741b8d8576a31.js deleted file mode 100644 index 2d5859c..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/basic-settings/page-cf5741b8d8576a31.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2545],{58669:(e,r,l)=>{Promise.resolve().then(l.bind(l,8016))},8016:(e,r,l)=>{"use strict";l.r(r),l.d(r,{default:()=>S});var i=l(20475),t=l(20107),s=l(72167),n=l(35601),o=l(42541),a=l(64219),c=l(49153),d=l(36760),p=l(32857);let u=()=>{let[e,r]=(0,t.useState)(null),[l,i]=(0,t.useState)(!0),s=(0,t.useCallback)(async()=>{try{i(!0),r(null);let e=await fetch("/cgi-bin/fetch_data.sh?set=2"),l=await e.json();console.log("Fetched cell settings data:",l);let t={currentAPN:f(l[0].response,l[1].response),apnPDPType:h(l[0].response),preferredNetworkType:v(l[2].response),nr5gMode:P(l[3].response),simSlot:g(l[4].response)};r(t),console.log("Processed cell settings data:",t)}catch(e){console.error("Error fetching cell settings data:",e)}i(!1)},[]);return(0,t.useEffect)(()=>{s()},[s]),{data:e,isLoading:l,fetchCellSettingsData:s}},f=(e,r)=>{var l,i;let t=null===(l=e.split("\n").find(e=>e.includes("+CGDCONT: 1")))||void 0===l?void 0:l.split(",")[2].replace(/"/g,"");if(void 0===t||""===t){let e=null===(i=r.split("\n").find(e=>e.includes("+CGCONTRDP:")))||void 0===i?void 0:i.split(",")[2].replace(/"/g,"");return void 0===e||""===e?"No APN found":e}return t},h=e=>{var r;let l=null===(r=e.split("\n").find(e=>e.includes("+CGDCONT: 1")))||void 0===r?void 0:r.split(",")[1].replace(/"/g,"");return void 0===l||""===l?"Error fetching PDP Type":l},v=e=>{var r;let l=null===(r=e.split("\n").find(e=>e.includes('+QNWPREFCFG: "mode_pref"')))||void 0===r?void 0:r.split(",")[1].replace(/"/g,"");return void 0===l||""===l?"Error fetching network type":l},P=e=>{var r;let l=null===(r=e.split("\n").find(e=>e.includes('+QNWPREFCFG: "nr5g_disable_mode"')))||void 0===r?void 0:r.split(",")[1].replace(/"/g,"");return void 0===l||""===l?"Error fetching NR5G mode":l},g=e=>{var r;let l=null===(r=e.split("\n").find(e=>e.includes("+QUIMSLOT:")))||void 0===r?void 0:r.split(":")[1].trim();return void 0===l||""===l?"Error fetching SIM slot":l};var y=l(76554),m=l(52161),x=l(51873);let j={apn:"",pdpType:"",iccid:""},N={profile1:{...j},profile2:{...j}},T=[{value:"IPV4",label:"IPv4 Only"},{value:"IPV6",label:"IPv6 Only"},{value:"IPV4V6",label:"IPv4 and IPv6"},{value:"P2P",label:"P2P Protocol"}],w=()=>{let{toast:e}=(0,p.dj)(),{profiles:r,isLoading:l,updateAPNProfile:u,deleteAPNProfiles:f}=function(){let[e,r]=(0,t.useState)({}),[l,i]=(0,t.useState)(!0),s=async()=>{try{i(!0);let e=await fetch("/cgi-bin/cell-settings/apn-profiles/fetch-profile.sh",{method:"GET",headers:{"Content-Type":"application/x-www-form-urlencoded"},signal:AbortSignal.timeout(1e4)});if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));let l=await e.json();console.log("Fetched APN profiles data:",l),r(l)}catch(e){console.error("Error fetching APN profiles:",e)}finally{i(!1)}};(0,t.useEffect)(()=>{s()},[]);let n=async(l,i)=>{try{var t,s,n,o,a,c;let d=new URLSearchParams;"profile1"===l?(d.append("iccidProfile1",i.iccid),d.append("apnProfile1",i.apn),d.append("pdpType1",i.pdpType)):(d.append("iccidProfile1",(null===(t=e.profile1)||void 0===t?void 0:t.iccid)||""),d.append("apnProfile1",(null===(s=e.profile1)||void 0===s?void 0:s.apn)||""),d.append("pdpType1",(null===(n=e.profile1)||void 0===n?void 0:n.pdpType)||"")),("profile2"===l||e.profile2)&&(d.append("iccidProfile2","profile2"===l?i.iccid:(null===(o=e.profile2)||void 0===o?void 0:o.iccid)||""),d.append("apnProfile2","profile2"===l?i.apn:(null===(a=e.profile2)||void 0===a?void 0:a.apn)||""),d.append("pdpType2","profile2"===l?i.pdpType:(null===(c=e.profile2)||void 0===c?void 0:c.pdpType)||""));let p=await fetch("/cgi-bin/cell-settings/apn-profiles/save-profile.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:d.toString(),signal:AbortSignal.timeout(15e3)});if(!p.ok)throw Error("Failed to update profile");let u=await p.json();if("success"===u.status)return r(e=>({...e,[l]:i})),!0;throw Error(u.message||"Failed to update profile")}catch(e){return console.error("Error updating ".concat(l,":"),e),!1}};return{profiles:e,isLoading:l,updateAPNProfile:n,deleteAPNProfiles:async()=>{try{let e=await fetch("/cgi-bin/cell-settings/apn-profiles/delete-profile.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},signal:AbortSignal.timeout(1e4)});if(!e.ok)throw Error("Failed to delete profiles");let l=await e.json();if("success"===l.status)return r({}),!0;throw Error(l.message||"Failed to delete profiles")}catch(e){return console.error("Error deleting APN profiles:",e),!1}}}}(),[h,v]=(0,t.useState)(!1),[P,g]=(0,t.useState)(!1),[j,w]=(0,t.useState)(N);(0,t.useEffect)(()=>{if(r){var e,l,i,t,s,n;w({profile1:{apn:(null===(e=r.profile1)||void 0===e?void 0:e.apn)||"",pdpType:(null===(l=r.profile1)||void 0===l?void 0:l.pdpType)||"",iccid:(null===(i=r.profile1)||void 0===i?void 0:i.iccid)||""},profile2:{apn:(null===(t=r.profile2)||void 0===t?void 0:t.apn)||"",pdpType:(null===(s=r.profile2)||void 0===s?void 0:s.pdpType)||"",iccid:(null===(n=r.profile2)||void 0===n?void 0:n.iccid)||""}})}},[r]);let S=(e,r,l)=>{w(i=>({...i,[e]:{...i[e],[r]:l}}))},A=()=>j.profile1.apn&&j.profile1.pdpType&&j.profile1.iccid?!Object.values(j.profile2).some(e=>""!==e)||!!j.profile2.apn&&!!j.profile2.pdpType&&!!j.profile2.iccid||(e({variant:"destructive",title:"Invalid Profile 2",description:"All fields for Profile 2 are required if any field is filled"}),!1):(e({variant:"destructive",title:"Invalid Profile 1",description:"All fields for Profile 1 are required"}),!1),b=async r=>{if(r.preventDefault(),A()){v(!0);try{let r=await u("profile1",j.profile1),l=!Object.values(j.profile2).some(e=>""!==e)||await u("profile2",j.profile2);if(r&&l)e({title:"Success",description:"APN profiles have been saved successfully"});else throw Error("Failed to save one or more profiles")}catch(r){e({variant:"destructive",title:"Error",description:"Failed to save APN profiles. Please try again."})}finally{v(!1)}}},C=async()=>{if(confirm("Are you sure you want to delete all APN profiles?")){g(!0);try{if(await f())w(N),e({title:"Success",description:"APN profiles have been deleted successfully"});else throw Error("Failed to delete profiles")}catch(r){e({variant:"destructive",title:"Error",description:"Failed to delete APN profiles. Please try again."})}finally{g(!1)}}},E=(e,r)=>{var t;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsxs)(c.J,{htmlFor:"APNProfile".concat(r),children:["APN Profile ",r]}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsx)(a.p,{type:"text",id:"APNProfile".concat(r),placeholder:"APN for Profile ".concat(r),value:j[e].apn,onChange:r=>S(e,"apn",r.target.value)})]}),(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsx)(c.J,{htmlFor:"PDPType".concat(r),children:"APN PDP Type"}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsxs)(n.l6,{defaultValue:j[e].pdpType,value:j[e].pdpType,onValueChange:r=>S(e,"pdpType",r),children:[(0,i.jsx)(n.bq,{id:"PDPType".concat(r),children:(0,i.jsx)(n.yv,{placeholder:"Select PDP Type",children:(null===(t=T.find(r=>r.value===j[e].pdpType))||void 0===t?void 0:t.label)||"Select PDP Type"})}),(0,i.jsx)(n.gC,{children:(0,i.jsxs)(n.s3,{children:[(0,i.jsx)(n.TR,{children:"PDP Type"}),T.map(e=>{let{value:r,label:l}=e;return(0,i.jsx)(n.eb,{value:r,children:l},r)})]})})]})]}),(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2 col-span-2",children:[(0,i.jsxs)(c.J,{htmlFor:"ICCIDProfile".concat(r),children:["ICCID Profile ",r]}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsx)(a.p,{type:"text",id:"ICCIDProfile".concat(r),placeholder:"ICCID for Profile ".concat(r),value:j[e].iccid,onChange:r=>S(e,"iccid",r.target.value)})]})]})};return(0,i.jsxs)(s.Zp,{children:[(0,i.jsxs)(s.aR,{children:[(0,i.jsx)(s.ZB,{children:"APN and ICCID Profiles"}),(0,i.jsx)(s.BT,{children:"Configure APN profiles based on SIM card ICCID. Profile 1 is required."})]}),(0,i.jsx)(s.Wu,{children:(0,i.jsxs)("form",{className:"grid grid-cols-1 lg:grid-cols-2 grid-flow-row gap-6",onSubmit:b,children:[E("profile1",1),(0,i.jsx)(y.w,{className:"col-span-2 w-full my-2"}),E("profile2",2),(0,i.jsx)("div",{className:"col-span-2",children:(0,i.jsxs)(s.wL,{className:"border-t py-4 grid md:grid-cols-2 grid-cols-1 gap-4 px-0",children:[(0,i.jsxs)(o.$,{type:"submit",disabled:h||P,children:[(0,i.jsx)(m.A,{className:"h-4 w-4"}),h?"Saving...":"Save Profiles"]}),(0,i.jsxs)(o.$,{type:"button",variant:"secondary",onClick:C,disabled:h||P,children:[(0,i.jsx)(x.A,{className:"h-4 w-4"}),P?"Deleting...":"Delete All Profiles"]})]})})]})})]})},S=()=>{let{toast:e}=(0,p.dj)(),{data:r,isLoading:l,fetchCellSettingsData:f}=u(),[h,v]=(0,t.useState)(!1),[P,g]=(0,t.useState)(!1),[y,m]=(0,t.useState)({currentAPN:"",apnPDPType:"",preferredNetworkType:"",nr5gMode:"",simSlot:""});(0,t.useEffect)(()=>{r&&!P&&(m({currentAPN:String(r.currentAPN||""),apnPDPType:String(r.apnPDPType||""),preferredNetworkType:String(r.preferredNetworkType||""),nr5gMode:String(r.nr5gMode||""),simSlot:String(r.simSlot||"")}),g(!0))},[r,P]),(0,t.useEffect)(()=>{r||g(!1)},[r]);let x=e=>{let r=[];if(e.currentAPN||e.apnPDPType){let l=e.apnPDPType||y.apnPDPType,i=e.currentAPN||y.currentAPN;r.push('AT+CGDCONT=1,"'.concat(l,'","').concat(i,'"'))}if(e.preferredNetworkType){let l='+QNWPREFCFG="mode_pref",'.concat(e.preferredNetworkType);r.push(0===r.length?"AT".concat(l):l)}if(e.nr5gMode){let l='+QNWPREFCFG="nr5g_disable_mode",'.concat(e.nr5gMode);r.push(0===r.length?"AT".concat(l):l)}if(e.simSlot){let l="+QUIMSLOT=".concat(e.simSlot,";+COPS=2;+COPS=0");r.push(0===r.length?"AT".concat(l):l)}return r.join(";")},j=(e,r)=>{m(l=>({...l,[e]:r}))},N=async()=>{try{let r=await fetch("/cgi-bin/settings/force-rerun.sh"),l=await r.json();if("success"===l.status)e({title:"Scripts Restarted",description:"Scripts have been restarted successfully"});else if("info"===l.status)e({title:"Info",description:"No scripts were found to restart"});else throw Error("Failed to restart scripts")}catch(r){console.error("Error rerunning scripts:",r),e({variant:"destructive",title:"Script Restart Failed",description:"Failed to restart the required scripts"})}},T=async l=>{l.preventDefault(),v(!0);try{let l={};if(Object.keys(y).forEach(e=>{y[e]!==(null==r?void 0:r[e])&&(l[e]=y[e])}),0===Object.keys(l).length){e({title:"No changes detected",description:"Try changing some settings before saving"});return}let i=x(l),t=encodeURIComponent(i);if(!(await fetch("/cgi-bin/at_command.sh?command=".concat(t),{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)})).ok)throw Error("Failed to save settings");await new Promise(e=>setTimeout(e,1500)),await f(),g(!1),e({title:"Settings saved!",description:"The settings have been saved successfully",duration:3e3}),l.simSlot&&setTimeout(()=>{N()},3100)}catch(r){console.error("Error saving settings:",r),e({variant:"destructive",title:"Failed to save settings!",description:"An error occurred while saving the settings"})}finally{v(!1)}};return(0,i.jsxs)("div",{className:"grid grid-cols-1 grid-flow-row gap-8",children:[(0,i.jsx)(s.Zp,{children:(0,i.jsxs)("form",{onSubmit:T,children:[(0,i.jsxs)(s.aR,{children:[(0,i.jsx)(s.ZB,{children:"Network Settings"}),(0,i.jsx)(s.BT,{children:"Change the network settings of the device."})]}),(0,i.jsx)(s.Wu,{children:(0,i.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 grid-flow-row gap-6",children:[(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsx)(c.J,{htmlFor:"APN",children:"Current APN"}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsx)(a.p,{type:"text",id:"APN",placeholder:"Current APN",value:y.currentAPN,onChange:e=>j("currentAPN",e.target.value)})]}),(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsx)(c.J,{htmlFor:"APN",children:"APN PDP Type"}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsxs)(n.l6,{value:y.apnPDPType,onValueChange:e=>j("apnPDPType",e),children:[(0,i.jsx)(n.bq,{children:(0,i.jsx)(n.yv,{children:y.apnPDPType?(e=>({IPV4:"IPv4 Only",IPV6:"IPv6 Only",IPV4V6:"IPv4 and IPv6",P2P:"P2P Protocol"})[e]||e)(y.apnPDPType):"Select PDP Type"})}),(0,i.jsx)(n.gC,{children:(0,i.jsxs)(n.s3,{children:[(0,i.jsx)(n.TR,{children:"PDP Type"}),(0,i.jsx)(n.eb,{value:"IPV4",children:"IPv4 Only"}),(0,i.jsx)(n.eb,{value:"IPV6",children:"IPv6 Only"}),(0,i.jsx)(n.eb,{value:"IPV4V6",children:"IPv4 and IPv6"}),(0,i.jsx)(n.eb,{value:"P2P",children:"P2P Protocol"})]})})]},"pdp-type-".concat(y.apnPDPType))]}),(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsx)(c.J,{children:"Preferred Network Type"}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsxs)(n.l6,{value:y.preferredNetworkType,onValueChange:e=>j("preferredNetworkType",e),children:[(0,i.jsx)(n.bq,{children:(0,i.jsx)(n.yv,{children:y.preferredNetworkType?(e=>({AUTO:"Automatic",LTE:"LTE Only","LTE:NR5G":"NR5G-NSA",NR5G:"NR5G-SA"})[e]||e)(y.preferredNetworkType):"Select Network Type"})}),(0,i.jsx)(n.gC,{children:(0,i.jsxs)(n.s3,{children:[(0,i.jsx)(n.TR,{children:"Preferred Network Type"}),(0,i.jsx)(n.eb,{value:"AUTO",children:"Automatic"}),(0,i.jsx)(n.eb,{value:"LTE",children:"LTE Only"}),(0,i.jsx)(n.eb,{value:"LTE:NR5G",children:"NR5G-NSA"}),(0,i.jsx)(n.eb,{value:"NR5G",children:"NR5G-SA"})]})})]},"network-type-".concat(y.preferredNetworkType))]}),(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsx)(c.J,{children:"NR5G Mode Control"}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsxs)(n.l6,{value:y.nr5gMode,onValueChange:e=>j("nr5gMode",e),children:[(0,i.jsx)(n.bq,{children:(0,i.jsx)(n.yv,{children:y.nr5gMode?(e=>({0:"NR5G-SA and NSA Enabled",1:"NR5G-NSA Only",2:"NR5G-SA Only"})[e]||e)(y.nr5gMode):"Select NR5G Mode"})}),(0,i.jsx)(n.gC,{children:(0,i.jsxs)(n.s3,{children:[(0,i.jsx)(n.TR,{children:"NR5G Mode"}),(0,i.jsx)(n.eb,{value:"0",children:"NR5G-SA and NSA Enabled"}),(0,i.jsx)(n.eb,{value:"1",children:"NR5G-NSA Only"}),(0,i.jsx)(n.eb,{value:"2",children:"NR5G-SA Only"})]})})]},"nr5g-mode-".concat(y.nr5gMode))]}),(0,i.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,i.jsx)(c.J,{children:"U-SIM Slot Configuration"}),l?(0,i.jsx)(d.E,{className:"h-8"}):(0,i.jsxs)(n.l6,{value:y.simSlot,onValueChange:e=>j("simSlot",e),children:[(0,i.jsx)(n.bq,{children:(0,i.jsx)(n.yv,{children:y.simSlot?"U-SIM Slot ".concat(y.simSlot):"Select U-SIM Slot"})}),(0,i.jsx)(n.gC,{children:(0,i.jsxs)(n.s3,{children:[(0,i.jsx)(n.TR,{children:"U-SIM Slot"}),(0,i.jsx)(n.eb,{value:"1",children:"U-SIM Slot 1"}),(0,i.jsx)(n.eb,{value:"2",children:"U-SIM Slot 2"})]})})]},"sim-slot-".concat(y.simSlot))]})]})}),(0,i.jsx)(s.wL,{className:"grid border-t py-4",children:(0,i.jsx)(o.$,{type:"submit",disabled:h,children:h?"Saving...":"Save"})})]})}),(0,i.jsx)(w,{})]})}},36760:(e,r,l)=>{"use strict";l.d(r,{E:()=>s});var i=l(20475),t=l(22250);function s(e){let{className:r,...l}=e;return(0,i.jsx)("div",{className:(0,t.cn)("animate-pulse rounded-md bg-primary/10",r),...l})}},51873:(e,r,l)=>{"use strict";l.d(r,{A:()=>i});let i=(0,l(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])}},e=>{var r=r=>e(e.s=r);e.O(0,[9980,7780,1617,4673,5011,1457,6152,191,6035,7358],()=>r(58669)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/cell-locking/page-4ab1165c81cbdb13.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/cell-locking/page-4ab1165c81cbdb13.js deleted file mode 100644 index 433e3c9..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/cell-locking/page-4ab1165c81cbdb13.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5665],{5853:(e,t,s)=>{Promise.resolve().then(s.bind(s,43166))},43166:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>f});var a=s(20475),l=s(20107),r=s(72167),i=s(35601),c=s(42541),n=s(76554),o=s(64219),d=s(49153),h=s(52744),m=s(29475),u=s(52161),g=s(97801),p=s(32857);let C=(0,s(39997).A)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);var x=s(98969),N=s(96244);let w=e=>{let{loading:t,scheduling:s,startTime:i,endTime:c,onStartTimeChange:n,onEndTimeChange:m,onSchedulingToggle:u,locked:g}=e,[p,w]=(0,l.useState)({text:"Disabled",color:"text-red-600",icon:C}),f=()=>{if(!s){w({text:"Disabled",color:"text-red-600",icon:C});return}let e=new Date,t=60*e.getHours()+e.getMinutes(),[a,l]=i.split(":").map(Number),[r,n]=c.split(":").map(Number),o=60*a+l,d=60*r+n;o<=d?t>=o&&t<=d?w({text:"Active",color:"text-green-600",icon:x.A}):w({text:"Inactive",color:"text-yellow-500",icon:N.A}):t>=o||t<=d?w({text:"Active",color:"text-green-600",icon:x.A}):w({text:"Inactive",color:"text-yellow-500",icon:N.A})};(0,l.useEffect)(()=>{f();let e=setInterval(f,6e4);return()=>clearInterval(e)},[s,i,c]);let v=p.icon;return(0,a.jsxs)(r.Zp,{children:[(0,a.jsxs)(r.aR,{children:[(0,a.jsxs)(r.ZB,{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{children:(0,a.jsx)("span",{children:"Cell Locking Scheduler"})}),(0,a.jsxs)("div",{className:"flex items-center",children:[(0,a.jsx)(v,{className:"h-4 w-4 mr-1 ".concat(p.color)}),(0,a.jsx)("div",{className:"text-sm text-gray-500",children:p.text})]})]}),(0,a.jsx)(r.BT,{children:"Schedule the device to lock to specific cells at certain times."})]}),(0,a.jsx)(r.Wu,{children:(0,a.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4",children:[(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"start-time",children:"Start Time"}),(0,a.jsx)(o.p,{type:"time",id:"start-time",value:i,onChange:e=>n(e.target.value),disabled:t||s,placeholder:"START TIME"})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"end-time",children:"End Time"}),(0,a.jsx)(o.p,{type:"time",id:"end-time",value:c,onChange:e=>m(e.target.value),disabled:t||s,placeholder:"END TIME"})]}),(0,a.jsx)("div",{className:"lg:col-span-2 col-span-1",children:(0,a.jsx)("p",{className:"text-sm text-gray-500",children:"Make sure to properly set the timezone using Luci for this to properly work. The scheduler will lock the device to the selected cells during the specified time range. The scheduler will not lock the device if the time range is not valid (e.g. start time is after end time)."})})]})}),(0,a.jsx)(r.wL,{className:"border-t py-4",children:(0,a.jsxs)(h.l,{disabled:t||!i||!c||!g,pressed:s,onPressedChange:u,children:[(0,a.jsx)(N.A,{className:"h-4 w-4 mr-2"}),s?"Disable":"Enable"," Scheduled Locking"]})})]})},f=()=>{let{toast:e}=(0,p.dj)(),[t,s]=(0,l.useState)(!1),[C,x]=(0,l.useState)(!1),[N,f]=(0,l.useState)(!1),[v,j]=(0,l.useState)(!1),[R,A]=(0,l.useState)(!1),[y,E]=(0,l.useState)(""),[b,k]=(0,l.useState)(""),[F,P]=(0,l.useState)({EARFCN1:"",PCI1:"",EARFCN2:"",PCI2:"",EARFCN3:"",PCI3:""}),[T,S]=(0,l.useState)({NRARFCN:"",NRPCI:"",SCS:"",NRBAND:""}),I=async e=>{let t=encodeURIComponent(e);try{let e=await fetch("/cgi-bin/at_command.sh?command=".concat(t),{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)}),s=await e.json();if(console.log("AT command response:",s),!e.ok||"error"===s.status)throw Error(s.error||"Failed to execute AT command");return s}catch(e){if(e instanceof Error)throw Error("AT command failed: ".concat(e.message));throw Error("AT command failed with unknown error")}},L=e=>{let t=e.match(/\+QNWLOCK:\s*(.+?)\n/);return t?t[1].replace(/"/g,"").split(",").map(e=>e.trim()):null},_=async()=>{try{s(!0);let e=await fetch("/cgi-bin/fetch_data.sh?set=8"),t=await e.json();if(!e.ok)throw Error("Failed to fetch current status");console.log("Current cell locking status:",t);let a=L(t[2].response);console.log("Persist status:",a),a&&a.length>=2&&(f("1"===a[1]),j("1"===a[2]));let l=L(t[0].response);if(console.log("Current LTE lock status:",l),l){let e={EARFCN1:l[2],PCI1:l[3],EARFCN2:l[4],PCI2:l[5],EARFCN3:l[6],PCI3:l[7]};P(e),console.log("New LTE state:",e),parseInt(l[1])>0&&x(!0)}let r=L(t[1].response);if(console.log("Current NR5G lock status:",r),r&&r.length>=5){let e={NRPCI:r[1],NRARFCN:r[2],SCS:r[3],NRBAND:r[4]};S(e),console.log("New NR5G state:",e),parseInt(r[1])>0&&x(!0)}}catch(t){console.error("Error fetching current status:",t),e({title:"Error",description:"Failed to fetch current cell locking status",variant:"destructive"})}finally{s(!1)}},D=async t=>{try{if(s(!0),t&&(!y||!b))throw Error("Please set both start and end times");if(!(await fetch("/cgi-bin/cell-settings/scheduled_cell_locking.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t?"web=true&start_time=".concat(encodeURIComponent(y),"&end_time=").concat(encodeURIComponent(b)):"web=true&disable=true"})).ok)throw Error("Failed to update scheduling");A(t),e({title:"Success",description:t?"Cell locking schedule enabled":"Cell locking schedule disabled"})}catch(t){e({title:"Error",description:t instanceof Error?t.message:"Failed to update scheduling",variant:"destructive"})}finally{s(!1)}},O=async()=>{try{s(!0);let t=[];if(F.EARFCN1&&F.PCI1&&t.push([F.EARFCN1,F.PCI1]),F.EARFCN2&&F.PCI2&&t.push([F.EARFCN2,F.PCI2]),F.EARFCN3&&F.PCI3&&t.push([F.EARFCN3,F.PCI3]),0===t.length)throw Error("Please fill at least one EARFCN and PCI pair");let a='AT+QNWLOCK="common/4g",'.concat(t.length);t.forEach(e=>{let[t,s]=e;a+=",".concat(t,",").concat(s)}),await I(a),await new Promise(e=>setTimeout(e,1e3)),await I('AT+QNWLOCK="save_ctrl",1,0'),await _(),e({title:"Success",description:"LTE cells locked successfully with ".concat(t.length," pair").concat(t.length>1?"s":"")})}catch(t){s(!1),e({title:"Error",description:t instanceof Error?t.message:"Failed to lock LTE cells",variant:"destructive"})}},B=async()=>{try{if(s(!0),!T.NRPCI||!T.NRARFCN||!T.SCS||!T.NRBAND)throw Error("Please fill all NR5G fields");let t='AT+QNWLOCK="common/5g",'.concat(T.NRPCI,",").concat(T.NRARFCN,",").concat(T.SCS,",").concat(T.NRBAND);await I(t),await new Promise(e=>setTimeout(e,1e3)),await I('AT+QNWLOCK="save_ctrl",0,1'),await _(),e({title:"Success",description:"NR5G cell locked successfully"})}catch(t){s(!1),e({title:"Error",description:t instanceof Error?t.message:"Failed to lock NR5G cell",variant:"destructive"})}},G=async()=>{try{s(!0),await I('AT+QNWLOCK="common/4g",0'),await new Promise(e=>setTimeout(e,1e3)),await I('AT+QNWLOCK="save_ctrl",1,0'),await I("AT+COPS=2"),await new Promise(e=>setTimeout(e,2e3)),await I("AT+COPS=0"),await _(),e({title:"Success",description:"LTE cell locking reset to default"})}catch(t){s(!1),e({title:"Error",description:"Failed to reset LTE cell locking",variant:"destructive"})}},W=async()=>{try{s(!0),await I('AT+QNWLOCK="common/5g",0'),await I('AT+QNWLOCK="save_ctrl",0,1'),await I("AT+COPS=2"),await new Promise(e=>setTimeout(e,2e3)),await I("AT+COPS=0"),await _(),e({title:"Success",description:"NR5G cell locking reset to default"})}catch(t){s(!1),e({title:"Error",description:"Failed to reset NR5G cell locking",variant:"destructive"})}},z=async t=>{try{s(!0),await I('AT+QNWLOCK="save_ctrl",'.concat(t?"1":"0",",").concat(v?"1":"0")),await _(),e({title:"Success",description:"LTE persist on boot ".concat(t?"enabled":"disabled")}),await new Promise(e=>setTimeout(e,2e3)),window.location.reload()}catch(t){e({title:"Error",description:"Failed to update LTE persist setting",variant:"destructive"})}finally{s(!1)}},J=async t=>{try{s(!0),await I('AT+QNWLOCK="save_ctrl",'.concat(N?"1":"0",",").concat(t?"1":"0")),await _(),e({title:"Success",description:"NR5G persist on boot ".concat(t?"enabled":"disabled")}),await new Promise(e=>setTimeout(e,2e3)),window.location.reload()}catch(t){e({title:"Error",description:"Failed to update NR5G persist setting",variant:"destructive"})}finally{s(!1)}};return(0,l.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/cell-settings/scheduled_cell_locking.sh?status=true");if(e.ok){let t=await e.json();t.enabled&&(A(!0),E(t.start_time||""),k(t.end_time||""))}}catch(e){console.error("Failed to fetch schedule status:",e)}})(),_()},[]),(0,a.jsxs)("div",{className:"grid gap-6",children:[(0,a.jsxs)(r.Zp,{children:[(0,a.jsxs)(r.aR,{children:[(0,a.jsx)(r.ZB,{children:"4G LTE Cellular Locking"}),(0,a.jsx)(r.BT,{children:"Lock the device to specific LTE Physical Cell IDs."})]}),(0,a.jsx)(r.Wu,{children:(0,a.jsxs)("form",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-6",children:[(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"EARFCN1",children:"EARFCN 1"}),(0,a.jsx)(o.p,{type:"text",id:"EARFCN1",placeholder:"EARFCN 1",value:F.EARFCN1,onChange:e=>P(t=>({...t,EARFCN1:e.target.value}))})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"PCI1",children:"PCI 1"}),(0,a.jsx)(o.p,{type:"text",id:"PCI1",placeholder:"PCI 1",value:F.PCI1,onChange:e=>P(t=>({...t,PCI1:e.target.value}))})]}),(0,a.jsx)(n.w,{className:"my-1 col-span-2 w-full"}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"EARFCN2",children:"EARFCN 2"}),(0,a.jsx)(o.p,{type:"text",id:"EARFCN2",placeholder:"EARFCN 2",value:F.EARFCN2,onChange:e=>P(t=>({...t,EARFCN2:e.target.value}))})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"PCI2",children:"PCI 2"}),(0,a.jsx)(o.p,{type:"text",id:"PCI2",placeholder:"PCI 2",value:F.PCI2,onChange:e=>P(t=>({...t,PCI2:e.target.value}))})]}),(0,a.jsx)(n.w,{className:"my-1 col-span-2 w-full"}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"EARFCN3",children:"EARFCN 3"}),(0,a.jsx)(o.p,{type:"text",id:"EARFCN3",placeholder:"EARFCN 3",value:F.EARFCN3,onChange:e=>P(t=>({...t,EARFCN3:e.target.value}))})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"PCI3",children:"PCI 3"}),(0,a.jsx)(o.p,{type:"text",id:"PCI3",placeholder:"PCI 3",value:F.PCI3,onChange:e=>P(t=>({...t,PCI3:e.target.value}))})]})]})}),(0,a.jsxs)(r.wL,{className:"border-t py-4 grid grid-flow-row md:grid-cols-3 grid-cols-1 gap-4",children:[(0,a.jsxs)(c.$,{onClick:O,disabled:t||R,children:[(0,a.jsx)(m.A,{className:"h-4 w-4"}),"Lock LTE Cells"]}),(0,a.jsxs)(h.l,{pressed:N,onPressedChange:z,disabled:t,children:[(0,a.jsx)(u.A,{className:"h-4 w-4 mr-2"}),"Persist on Reboot"]}),(0,a.jsxs)(c.$,{variant:"secondary",onClick:G,disabled:t||!C||R,children:[(0,a.jsx)(g.A,{className:"h-4 w-4"}),"Reset to Default"]})]})]}),(0,a.jsxs)(r.Zp,{children:[(0,a.jsxs)(r.aR,{children:[(0,a.jsx)(r.ZB,{children:"NR5G-SA Cellular Locking"}),(0,a.jsx)(r.BT,{children:"Lock the device to a specific NR5G-SA Physical Cell ID."})]}),(0,a.jsx)(r.Wu,{children:(0,a.jsxs)("form",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-6",children:[(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"NR-ARFCN",children:"NR ARFCN"}),(0,a.jsx)(o.p,{type:"text",id:"NR-ARFCN",placeholder:"NR ARFCN",value:T.NRARFCN,onChange:e=>S(t=>({...t,NRARFCN:e.target.value}))})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"NR-PCI",children:"NR PCI"}),(0,a.jsx)(o.p,{type:"text",id:"NR-PCI",placeholder:"NR PCI",value:T.NRPCI,onChange:e=>S(t=>({...t,NRPCI:e.target.value}))})]}),(0,a.jsx)(n.w,{className:"my-0.5 col-span-2 w-full"}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"SCS",children:"SCS"}),(0,a.jsxs)(i.l6,{value:T.SCS,onValueChange:e=>S(t=>({...t,SCS:e})),children:[(0,a.jsx)(i.bq,{id:"SCS",children:(0,a.jsx)(i.yv,{placeholder:"SCS"})}),(0,a.jsx)(i.gC,{children:(0,a.jsxs)(i.s3,{children:[(0,a.jsx)(i.TR,{children:"SCS"}),(0,a.jsx)(i.eb,{value:"15",children:"15 kHz"}),(0,a.jsx)(i.eb,{value:"30",children:"30 kHz"}),(0,a.jsx)(i.eb,{value:"60",children:"60 kHz"}),(0,a.jsx)(i.eb,{value:"120",children:"120 kHz"}),(0,a.jsx)(i.eb,{value:"240",children:"240 kHz"})]})})]})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(d.J,{htmlFor:"NRBAND",children:"NR Band"}),(0,a.jsx)(o.p,{type:"text",id:"NRBAND",placeholder:"NR BAND",value:T.NRBAND,onChange:e=>S(t=>({...t,NRBAND:e.target.value}))})]})]})}),(0,a.jsxs)(r.wL,{className:"border-t py-4 grid grid-flow-row md:grid-cols-3 grid-cols-1 gap-4",children:[(0,a.jsxs)(c.$,{onClick:B,disabled:t||R,children:[(0,a.jsx)(m.A,{className:"h-4 w-4"}),"Lock NR5G-SA Cell"]}),(0,a.jsxs)(h.l,{pressed:v,onPressedChange:J,disabled:t,children:[(0,a.jsx)(u.A,{className:"h-4 w-4 mr-2"}),"Persist on Reboot"]}),(0,a.jsxs)(c.$,{variant:"secondary",onClick:W,disabled:t||!C||R,children:[(0,a.jsx)(g.A,{className:"h-4 w-4"}),"Reset to Default"]})]})]}),(0,a.jsx)(w,{loading:t,scheduling:R,startTime:y,endTime:b,onStartTimeChange:E,onEndTimeChange:k,onSchedulingToggle:D,locked:C})]})}},52744:(e,t,s)=>{"use strict";s.d(t,{l:()=>m});var a=s(20475),l=s(20107),r=s(94521),i=s(81255),c=s(4589),n=l.forwardRef((e,t)=>{let{pressed:s,defaultPressed:l=!1,onPressedChange:n,...o}=e,[d=!1,h]=(0,i.i)({prop:s,onChange:n,defaultProp:l});return(0,a.jsx)(c.sG.button,{type:"button","aria-pressed":d,"data-state":d?"on":"off","data-disabled":e.disabled?"":void 0,...o,ref:t,onClick:(0,r.m)(e.onClick,()=>{e.disabled||h(!d)})})});n.displayName="Toggle";var o=s(29395),d=s(22250);let h=(0,o.F)("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"},size:{default:"h-9 px-3",sm:"h-8 px-2",lg:"h-10 px-3"}},defaultVariants:{variant:"default",size:"default"}}),m=l.forwardRef((e,t)=>{let{className:s,variant:l,size:r,...i}=e;return(0,a.jsx)(n,{ref:t,className:(0,d.cn)(h({variant:l,size:r,className:s})),...i})});m.displayName=n.displayName},98969:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(39997).A)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},96244:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(39997).A)("Clock1",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 14.5 8",key:"12zbmj"}]])},29475:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(39997).A)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},97801:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(39997).A)("RefreshCcw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,1617,4673,5011,1457,6152,191,6035,7358],()=>t(5853)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/imei-mangling/page-98b9e4aee77d66d9.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/imei-mangling/page-98b9e4aee77d66d9.js deleted file mode 100644 index 9df1386..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/imei-mangling/page-98b9e4aee77d66d9.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9065],{6507:(e,i,t)=>{Promise.resolve().then(t.bind(t,34268))},34268:(e,i,t)=>{"use strict";t.r(i),t.d(i,{default:()=>b});var r=t(20475),s=t(20107),a=t(72167),o=t(62108),l=t(22250);let d=o.bL,n=o.l9,c=s.forwardRef((e,i)=>{let{className:t,align:s="center",sideOffset:a=4,...d}=e;return(0,r.jsx)(o.UC,{ref:i,align:s,sideOffset:a,className:(0,l.cn)("z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...d})});c.displayName=o.UC.displayName;var f=t(12607),p=t(51873),u=t(42541),m=t(64219),h=t(49153),v=t(36760),g=t(32857),I=t(76554);let x={imei:"",iccid:""},w={profile1:{...x},profile2:{...x}},b=()=>{let[e,i]=(0,s.useState)(!0),[t,o]=(0,s.useState)(!1),[l,x]=(0,s.useState)(!1),[b,y]=(0,s.useState)(""),[E,j]=(0,s.useState)(""),[N,C]=(0,s.useState)(w),[M,S]=(0,s.useState)(w),{profiles:T,hasActiveProfile:P,updateIMEIProfile:D,deleteIMEIProfiles:A}=function(){let[e,i]=(0,s.useState)({}),[t,r]=(0,s.useState)(!0),[a,o]=(0,s.useState)(!1),l=async()=>{try{r(!0);let e=await fetch("/cgi-bin/cell-settings/imei-profiles/fetch-profile.sh",{method:"GET",headers:{"Content-Type":"application/x-www-form-urlencoded"},signal:AbortSignal.timeout(1e4)});if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));let t=await e.json();i(t),(t.profile1||t.profile2)&&o(!0)}catch(e){console.error("Error fetching IMEI profiles:",e)}finally{r(!1)}};(0,s.useEffect)(()=>{l()},[]);let d=async(t,r)=>{try{var s,a,o,l;let d=new URLSearchParams;"profile1"===t?(d.append("iccidProfile1",r.iccid),d.append("imeiProfile1",r.imei)):(d.append("iccidProfile1",(null===(s=e.profile1)||void 0===s?void 0:s.iccid)||""),d.append("imeiProfile1",(null===(a=e.profile1)||void 0===a?void 0:a.imei)||"")),("profile2"===t||e.profile2)&&(d.append("iccidProfile2","profile2"===t?r.iccid:(null===(o=e.profile2)||void 0===o?void 0:o.iccid)||""),d.append("imeiProfile2","profile2"===t?r.imei:(null===(l=e.profile2)||void 0===l?void 0:l.imei)||""));let n=await fetch("/cgi-bin/cell-settings/imei-profiles/save-profile.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:d.toString(),signal:AbortSignal.timeout(1e4)});if(!n.ok)throw Error("Failed to update profile");let c=await n.json();if("success"===c.status)return i(e=>({...e,[t]:r})),!0;throw Error(c.message||"Failed to update profile")}catch(e){return console.error("Error updating ".concat(t,":"),e),!1}};return{profiles:e,hasActiveProfile:a,updateIMEIProfile:d,deleteIMEIProfiles:async()=>{try{let e=await fetch("/cgi-bin/cell-settings/imei-profiles/delete-profile.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},signal:AbortSignal.timeout(1e4)});if(!e.ok)throw Error("Failed to delete profiles");let t=await e.json();if("success"===t.status)return i({}),!0;throw Error(t.message||"Failed to delete profiles")}catch(e){return console.error("Error deleting IMEI profiles:",e),!1}}}}(),{toast:R}=(0,g.dj)(),_=(0,s.useCallback)(async()=>{try{i(!0);let e=await fetch("/cgi-bin/fetch_data.sh?set=3"),t=await e.json();console.log(t);let r=t[6].response.split("\n")[1];console.log(r);let s=r.match(/\d{15}/),a=s?s[0]:null;if(a)y(a),j(a);else throw Error("IMEI not found in response")}catch(e){R({title:"Failed to fetch IMEI",description:"Failed to fetch IMEI from the device",variant:"destructive"}),console.error(e)}finally{i(!1)}},[]);(0,s.useEffect)(()=>{_()},[]),(0,s.useEffect)(()=>{if(T){var e,i,t,r,s,a,o,l;S({profile1:{imei:(null===(e=T.profile1)||void 0===e?void 0:e.imei)||"",iccid:(null===(i=T.profile1)||void 0===i?void 0:i.iccid)||""},profile2:{imei:(null===(t=T.profile2)||void 0===t?void 0:t.imei)||"",iccid:(null===(r=T.profile2)||void 0===r?void 0:r.iccid)||""}}),C({profile1:{imei:(null===(s=T.profile1)||void 0===s?void 0:s.imei)||"",iccid:(null===(a=T.profile1)||void 0===a?void 0:a.iccid)||""},profile2:{imei:(null===(o=T.profile2)||void 0===o?void 0:o.imei)||"",iccid:(null===(l=T.profile2)||void 0===l?void 0:l.iccid)||""}})}},[T]);let F=async e=>{if(e.preventDefault(),i(!0),15!==E.length||isNaN(Number(E))){R({title:"Invalid IMEI",description:"IMEI must be 15 digits and numbers only",variant:"destructive"}),i(!1);return}try{let e='AT+EGMR=1,7,"'.concat(E,'";+QPOWD=1'),i=encodeURIComponent(e),t=await fetch("/cgi-bin/at_command.sh?command=".concat(i),{method:"GET",headers:{Accept:"application/json"},signal:AbortSignal.timeout(5e3)});if(console.log(t),!t.ok)throw Error("Failed to update IMEI");R({title:"Success",description:"IMEI has been updated successfully. Rebooting...",duration:9e4})}catch(e){R({title:"Failed to update IMEI",description:"Failed to update IMEI on the device",variant:"destructive"}),console.error(e)}finally{i(!1)}},O=()=>{if(!M.profile1.imei||!M.profile1.iccid)return R({variant:"destructive",title:"Invalid Profile 1",description:"Both IMEI and ICCID are required for Profile 1"}),!1;if(!/^\d{15}$/.test(M.profile1.imei))return R({variant:"destructive",title:"Invalid IMEI in Profile 1",description:"IMEI must be exactly 15 digits"}),!1;if(Object.values(M.profile2).some(e=>""!==e)){if(!M.profile2.imei||!M.profile2.iccid)return R({variant:"destructive",title:"Invalid Profile 2",description:"Both IMEI and ICCID are required if any Profile 2 field is filled"}),!1;if(!/^\d{15}$/.test(M.profile2.imei))return R({variant:"destructive",title:"Invalid IMEI in Profile 2",description:"IMEI must be exactly 15 digits"}),!1}return!0},k=async e=>{if(e.preventDefault(),O()){o(!0);try{await D("profile1",M.profile1),Object.values(M.profile2).some(e=>""!==e)&&await D("profile2",M.profile2),R({title:"Success",description:"IMEI profiles have been saved successfully. Rebooting...",duration:9e4}),setTimeout(()=>{window.location.reload()},9e4)}catch(e){R({variant:"destructive",title:"Error",description:"Failed to save IMEI profiles. Please try again."})}finally{o(!1)}}},z=async()=>{if(confirm("Are you sure you want to delete all IMEI profiles?")){x(!0);try{if(await A())S(w),R({title:"Success",description:"IMEI profiles have been deleted successfully"});else throw Error("Failed to delete profiles")}catch(e){R({variant:"destructive",title:"Error",description:"Failed to delete IMEI profiles. Please try again."})}finally{setTimeout(()=>{x(!1)},2e3)}}},B=(e,i,t)=>{S(r=>({...r,[e]:{...r[e],[i]:t}}))};return(0,r.jsxs)("div",{className:"grid gap-8",children:[(0,r.jsx)(a.Zp,{children:(0,r.jsxs)("form",{onSubmit:F,children:[(0,r.jsxs)(a.aR,{children:[(0,r.jsx)(a.ZB,{children:"IMEI Mangling"}),(0,r.jsxs)(a.BT,{className:"flex items-center justify-between",children:["Change the IMEI of the device.",(0,r.jsxs)("span",{className:"flex items-center text-orange-500",children:[(0,r.jsx)(f.A,{className:"size-4 mr-1"}),"Do at your own risk!"]})]})]}),(0,r.jsx)(a.Wu,{children:(0,r.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,r.jsx)(h.J,{htmlFor:"IMEI",children:"Change Current IMEI"}),e?(0,r.jsx)(v.E,{className:"h-8"}):(0,r.jsxs)("div",{className:"grid gap-1.5",children:[P?(0,r.jsx)("div",{className:"relative w-full",children:(0,r.jsxs)(d,{children:[(0,r.jsxs)(n,{children:[(0,r.jsx)(m.p,{className:"pr-9",placeholder:b,disabled:!0}),(0,r.jsx)(f.A,{className:"absolute right-0 top-0 m-2.5 h-4 w-4 text-muted-foreground"})]}),(0,r.jsx)(c,{className:"text-sm",children:"You cannot use this feature while IMEI profiles are active."})]})}):(0,r.jsx)(m.p,{type:"text",id:"IMEI",value:E,onChange:e=>j(e.target.value),placeholder:b}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground font-medium",children:"This will reboot the device."})]})]})}),(0,r.jsx)(a.wL,{className:"grid border-t py-4",children:(0,r.jsx)(u.$,{type:"submit",className:"w-full",disabled:e||E===b,children:e?"Processing...":"Change IMEI"})})]})}),(0,r.jsxs)(a.Zp,{children:[(0,r.jsxs)(a.aR,{children:[(0,r.jsx)(a.ZB,{children:"ICCID Based IMEI Mangling"}),(0,r.jsxs)(a.BT,{className:"flex items-center justify-between",children:["Change the IMEI of the device based on the ICCID.",(0,r.jsxs)("span",{className:"flex items-center text-orange-500",children:[(0,r.jsx)(f.A,{className:"size-4 mr-1"}),"Do at your own risk!"]})]})]}),(0,r.jsxs)("form",{onSubmit:k,children:[(0,r.jsx)(a.Wu,{children:(0,r.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4",children:[(0,r.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,r.jsx)(h.J,{htmlFor:"IMEI-prof1",children:"IMEI for Profile 1"}),e?(0,r.jsx)(v.E,{className:"h-8"}):(0,r.jsx)(m.p,{type:"text",id:"IMEI-prof1",placeholder:"IMEI for Profile 1",value:M.profile1.imei,onChange:e=>B("profile1","imei",e.target.value)})]}),(0,r.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,r.jsx)(h.J,{htmlFor:"ICCID-prof1",children:"ICCID for Profile 1"}),e?(0,r.jsx)(v.E,{className:"h-8"}):(0,r.jsx)(m.p,{type:"text",id:"ICCID-prof1",placeholder:"ICCID for Profile 1",value:M.profile1.iccid,onChange:e=>B("profile1","iccid",e.target.value)})]}),(0,r.jsx)(I.w,{className:"col-span-full my-2"}),(0,r.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,r.jsx)(h.J,{htmlFor:"IMEI-prof2",children:"IMEI for Profile 2"}),e?(0,r.jsx)(v.E,{className:"h-8"}):(0,r.jsx)(m.p,{type:"text",id:"IMEI-prof2",placeholder:"IMEI for Profile 2",value:M.profile2.imei,onChange:e=>B("profile2","imei",e.target.value)})]}),(0,r.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,r.jsx)(h.J,{htmlFor:"ICCID-prof2",children:"ICCID for Profile 2"}),e?(0,r.jsx)(v.E,{className:"h-8"}):(0,r.jsx)(m.p,{type:"text",id:"ICCID-prof2",placeholder:"ICCID for Profile 2",value:M.profile2.iccid,onChange:e=>B("profile2","iccid",e.target.value)})]})]})}),(0,r.jsxs)(a.wL,{className:"grid grid-cols-2 grid-flow-row gap-6 border-t py-4",children:[(0,r.jsx)(u.$,{type:"submit",className:"w-full",disabled:e||t||!(M.profile1.imei!==N.profile1.imei||M.profile1.iccid!==N.profile1.iccid||M.profile2.imei!==N.profile2.imei||M.profile2.iccid!==N.profile2.iccid),children:t?"Saving...":"Save IMEI Profiles"}),(0,r.jsxs)(u.$,{type:"button",variant:"secondary",className:"w-full",onClick:z,disabled:e||l,children:[(0,r.jsx)(p.A,{className:"h-4 w-4"}),l?"Deleting...":"Delete All Profiles"]})]})]})]})]})}},42541:(e,i,t)=>{"use strict";t.d(i,{$:()=>n,r:()=>d});var r=t(20475),s=t(20107),a=t(61837),o=t(29395),l=t(22250);let d=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),n=s.forwardRef((e,i)=>{let{className:t,variant:s,size:o,asChild:n=!1,...c}=e,f=n?a.DX:"button";return(0,r.jsx)(f,{className:(0,l.cn)(d({variant:s,size:o,className:t})),ref:i,...c})});n.displayName="Button"},72167:(e,i,t)=>{"use strict";t.d(i,{BT:()=>n,Wu:()=>c,ZB:()=>d,Zp:()=>o,aR:()=>l,wL:()=>f});var r=t(20475),s=t(20107),a=t(22250);let o=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:i,className:(0,a.cn)("rounded-xl border bg-card text-card-foreground shadow",t),...s})});o.displayName="Card";let l=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:i,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",t),...s})});l.displayName="CardHeader";let d=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)("h3",{ref:i,className:(0,a.cn)("font-semibold leading-none tracking-tight",t),...s})});d.displayName="CardTitle";let n=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)("p",{ref:i,className:(0,a.cn)("text-sm text-muted-foreground",t),...s})});n.displayName="CardDescription";let c=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:i,className:(0,a.cn)("p-6 pt-0",t),...s})});c.displayName="CardContent";let f=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)("div",{ref:i,className:(0,a.cn)("flex items-center p-6 pt-0",t),...s})});f.displayName="CardFooter"},64219:(e,i,t)=>{"use strict";t.d(i,{p:()=>o});var r=t(20475),s=t(20107),a=t(22250);let o=s.forwardRef((e,i)=>{let{className:t,type:s,...o}=e;return(0,r.jsx)("input",{type:s,className:(0,a.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",t),ref:i,...o})});o.displayName="Input"},49153:(e,i,t)=>{"use strict";t.d(i,{J:()=>n});var r=t(20475),s=t(20107),a=t(73725),o=t(29395),l=t(22250);let d=(0,o.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),n=s.forwardRef((e,i)=>{let{className:t,...s}=e;return(0,r.jsx)(a.b,{ref:i,className:(0,l.cn)(d(),t),...s})});n.displayName=a.b.displayName},76554:(e,i,t)=>{"use strict";t.d(i,{w:()=>l});var r=t(20475),s=t(20107),a=t(78190),o=t(22250);let l=s.forwardRef((e,i)=>{let{className:t,orientation:s="horizontal",decorative:l=!0,...d}=e;return(0,r.jsx)(a.b,{ref:i,decorative:l,orientation:s,className:(0,o.cn)("shrink-0 bg-border","horizontal"===s?"h-[1px] w-full":"h-full w-[1px]",t),...d})});l.displayName=a.b.displayName},36760:(e,i,t)=>{"use strict";t.d(i,{E:()=>a});var r=t(20475),s=t(22250);function a(e){let{className:i,...t}=e;return(0,r.jsx)("div",{className:(0,s.cn)("animate-pulse rounded-md bg-primary/10",i),...t})}},32857:(e,i,t)=>{"use strict";t.d(i,{dj:()=>p,oR:()=>f});var r=t(20107);let s=0,a=new Map,o=e=>{if(a.has(e))return;let i=setTimeout(()=>{a.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,i)},l=(e,i)=>{switch(i.type){case"ADD_TOAST":return{...e,toasts:[i.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===i.toast.id?{...e,...i.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=i;return t?o(t):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===i.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==i.toastId)}}},d=[],n={toasts:[]};function c(e){n=l(n,e),d.forEach(e=>{e(n)})}function f(e){let{...i}=e,t=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>c({type:"DISMISS_TOAST",toastId:t});return c({type:"ADD_TOAST",toast:{...i,id:t,open:!0,onOpenChange:e=>{e||r()}}}),{id:t,dismiss:r,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function p(){let[e,i]=r.useState(n);return r.useEffect(()=>(d.push(i),()=>{let e=d.indexOf(i);e>-1&&d.splice(e,1)}),[e]),{...e,toast:f,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,i,t)=>{"use strict";t.d(i,{cn:()=>a});var r=t(64901),s=t(868);function a(){for(var e=arguments.length,i=Array(e),t=0;t{var i=i=>e(e.s=i);e.O(0,[7780,1617,4673,3210,191,6035,7358],()=>i(6507)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/sms/page-e4bddb9c9369701f.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/sms/page-e4bddb9c9369701f.js deleted file mode 100644 index 530b94f..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/cell-settings/sms/page-e4bddb9c9369701f.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3358],{54016:(e,t,s)=>{Promise.resolve().then(s.bind(s,33776))},33776:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>v});var r=s(20475),a=s(20107),n=s(59166),i=s(66698);let l=(0,s(39997).A)("RotateCw",[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]]);var o=s(51873),d=s(72167),c=s(93557),u=s(36824),m=s(574),f=s(42541),p=s(76554),h=s(31739),x=s(64219),g=s(32857);let v=()=>{let[e,t]=(0,a.useState)([]),[s,v]=(0,a.useState)(!1),[y,b]=(0,a.useState)([]),[w,j]=(0,a.useState)(!1),[N,S]=(0,a.useState)(""),[k,R]=(0,a.useState)(""),[C,E]=(0,a.useState)(!1),[A,T]=(0,a.useState)(""),M=(e,t)=>e.trim()&&t.trim()?!!/^\d+$/.test(e.trim())||((0,g.oR)({title:"Validation Error",description:"Phone number should contain only numbers",variant:"destructive"}),!1):((0,g.oR)({title:"Validation Error",description:"Phone number and message are required",variant:"destructive"}),!1),I=async()=>{if(M(N,k)){E(!0);try{let e={phone:N.trim(),message:k.trim()},t=await fetch("/cgi-bin/cell-settings/sms/sms_send.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","Cache-Control":"no-cache"},body:new URLSearchParams(e).toString()}),s=await t.json();if(console.log("Response data:",s),s.success)(0,g.oR)({title:"Success",description:"Message sent successfully"}),S(""),R(""),D();else throw Error(s.error||"Failed to send message")}catch(e){console.error("Send operation failed:",e),(0,g.oR)({title:"Error",description:e instanceof Error?e.message:"Something went wrong",variant:"destructive"})}finally{E(!1)}}},_=async(e,t)=>{if(M(e,t)){E(!0);try{let s={phone:e.trim(),message:t.trim()},r=await fetch("/cgi-bin/cell-settings/sms/sms_send.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","Cache-Control":"no-cache"},body:new URLSearchParams(s).toString()}),a=await r.json();if(console.log("Response data:",a),a.success)(0,g.oR)({title:"Success",description:"Reply sent successfully"}),T(""),D();else throw Error(a.error||"Failed to send reply")}catch(e){console.error("Reply operation failed:",e),(0,g.oR)({title:"Error",description:e instanceof Error?e.message:"Something went wrong",variant:"destructive"})}finally{E(!1)}}},z=e=>{let t={},s=[];return e.msg.forEach(e=>{if(void 0!==e.reference&&void 0!==e.part){var r;let a="".concat(e.sender,"-").concat(e.reference);t[a]||(t[a]={index:e.index,status:"received",sender:e.sender,timestamp:e.timestamp,message:"",originalIndices:[]}),t[a].message+=e.content,null===(r=t[a].originalIndices)||void 0===r||r.push(e.index),e.part===e.total&&(s.push(t[a]),delete t[a])}else s.push({index:e.index,status:"received",sender:e.sender,timestamp:e.timestamp,message:e.content,originalIndices:[e.index]})}),Object.values(t).forEach(e=>{s.push(e)}),s.sort((e,t)=>new Date(t.timestamp).getTime()-new Date(e.timestamp).getTime())},D=async()=>{v(!0);try{let e=await fetch("/cgi-bin/cell-settings/sms/sms_inbox.sh"),s=await e.json();if(!(null==s?void 0:s.msg)||!Array.isArray(s.msg))throw Error("Invalid response format");let r=z(s);t(r),b([])}catch(e){console.error("Failed to refresh SMS:",e),t([])}finally{v(!1)}},L=async e=>{v(!0);try{if(!e.length)throw Error("No messages selected");let t=[...new Set(e)].sort((e,t)=>e-t).join(",");console.log("Deleting messages with indices:",t);let s=await fetch("/cgi-bin/cell-settings/sms/sms_delete.sh?indexes=".concat(t),{method:"GET",headers:{Accept:"application/json","Cache-Control":"no-cache"}}),r=await s.text();if(console.log("Raw response:",r),/Deleted message \d+/.test(r))(0,g.oR)({title:"Success!",description:"Selected messages deleted."}),await D();else throw Error("Something went wrong")}catch(e){console.error("Delete operation failed:",e),(0,g.oR)({title:"Error!",description:"Something went wrong",variant:"destructive"})}finally{v(!1)}},O=e=>{b(t=>{let s=new Set(t);return e.every(e=>s.has(e))?e.forEach(e=>s.delete(e)):e.forEach(e=>s.add(e)),Array.from(s)})},P=e=>{try{let[t,s]=e.split(" "),[r,a,n]=t.split("/");return{date:"20".concat(n,"-").concat(r,"-").concat(a),time:s}}catch(e){return console.error("Error parsing timestamp:",e),{date:"Invalid date",time:"Invalid time"}}};return(0,a.useEffect)(()=>{D()},[]),(0,r.jsxs)("div",{className:"grid gap-6",children:[(0,r.jsxs)(d.Zp,{className:"w-full max-w-screen",children:[(0,r.jsxs)(d.aR,{children:[(0,r.jsx)(d.ZB,{children:"SMS Inbox"}),(0,r.jsx)(d.BT,{children:(0,r.jsxs)("div",{className:"flex justify-between items-center",children:[(0,r.jsx)("span",{children:"View and manage SMS messages"}),(0,r.jsxs)("div",{className:"flex items-center space-x-1.5",children:[(0,r.jsx)(m.S,{checked:e.length>0&&y.length===e.flatMap(e=>e.originalIndices||[e.index]).length,onCheckedChange:t=>{t?b(e.flatMap(e=>e.originalIndices||[e.index])):b([])}}),(0,r.jsx)("span",{className:"text-sm",children:"Select All"})]})]})})]}),(0,r.jsx)(d.Wu,{children:(0,r.jsx)(u.F,{className:"h-[400px] w-full xs:max-w-xs p-4 grid",children:s?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-8",children:[(0,r.jsx)(n.A,{className:"h-8 w-8 animate-spin"}),(0,r.jsx)("p",{className:"mt-2",children:"Loading messages..."})]}):0===e.length?(0,r.jsx)("p",{className:"text-center py-8 text-muted-foreground",children:"No messages found"}):e.map(e=>{let{date:t,time:s}=P(e.timestamp),a=e.originalIndices||[e.index];return(0,r.jsxs)(c.lG,{children:[(0,r.jsx)(c.zM,{className:"w-full",children:(0,r.jsxs)(d.Zp,{className:"my-2 dark:hover:bg-slate-900 hover:bg-slate-100",children:[(0,r.jsxs)(d.aR,{children:[(0,r.jsxs)("div",{className:"flex justify-between items-center",children:[(0,r.jsx)(d.ZB,{children:e.sender}),(0,r.jsxs)("div",{className:"flex items-center space-x-2",onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("p",{className:"text-muted-foreground font-medium text-xs",children:a.join(", ")}),(0,r.jsx)(m.S,{checked:a.every(e=>y.includes(e)),onCheckedChange:()=>O(a)})]})]}),(0,r.jsxs)(d.BT,{className:"text-left",children:[t," at ",s]})]}),(0,r.jsx)(d.Wu,{children:(0,r.jsx)("p",{className:"line-clamp-3",children:e.message})})]})}),(0,r.jsxs)(c.Cf,{children:[(0,r.jsxs)(c.c7,{children:[(0,r.jsx)(c.L3,{children:e.sender}),(0,r.jsxs)(c.rr,{children:[t," at ",s]})]}),(0,r.jsx)("p",{className:"whitespace-pre-line",children:e.message}),(0,r.jsx)(p.w,{className:"my-2"}),(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsx)(h.T,{placeholder:"Reply to ".concat(e.sender,"..."),className:"h-24",value:A,onChange:e=>T(e.target.value)}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsxs)(f.$,{onClick:()=>_(e.sender,A),disabled:C||!A.trim(),children:[C?(0,r.jsx)(n.A,{className:"h-4 w-4 mr-2 animate-spin"}):(0,r.jsx)(i.A,{className:"h-4 w-4 mr-2"}),C?"Sending...":"Reply"]})})]})]})]},a.join("-"))})})}),(0,r.jsx)(d.wL,{className:"border-t py-4",children:(0,r.jsxs)("div",{className:"flex w-full justify-between items-center",children:[(0,r.jsxs)(f.$,{variant:"outline",onClick:D,disabled:s,children:[(0,r.jsx)(l,{className:"h-4 w-4 mr-2"}),"Refresh"]}),(0,r.jsxs)(f.$,{variant:"destructive",disabled:0===y.length||s,onClick:()=>{if(0===y.length){(0,g.oR)({title:"Delete Messages",description:"No messages selected"});return}L(y)},children:[(0,r.jsx)(o.A,{className:"h-4 w-4 mr-2"}),"Delete Selected"]})]})})]}),(0,r.jsxs)(d.Zp,{children:[(0,r.jsxs)(d.aR,{children:[(0,r.jsx)(d.ZB,{children:"Send SMS"}),(0,r.jsx)(d.BT,{children:"Send a new SMS message"})]}),(0,r.jsx)(d.Wu,{children:(0,r.jsxs)("div",{className:"grid gap-6",children:[(0,r.jsx)(x.p,{placeholder:'Recipient number with country code not including "+" symbol.',value:N,onChange:e=>S(e.target.value),required:!0}),(0,r.jsx)(h.T,{placeholder:"Type your message here...",className:"h-32",value:k,onChange:e=>R(e.target.value),required:!0}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsxs)(f.$,{onClick:I,disabled:C||!N.trim()||!k.trim(),children:[C?(0,r.jsx)(n.A,{className:"h-4 w-4 mr-2 animate-spin"}):(0,r.jsx)(i.A,{className:"h-4 w-4 mr-2"}),C?"Sending...":"Send"]})})]})})]})]})}},42541:(e,t,s)=>{"use strict";s.d(t,{$:()=>d,r:()=>o});var r=s(20475),a=s(20107),n=s(61837),i=s(29395),l=s(22250);let o=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=a.forwardRef((e,t)=>{let{className:s,variant:a,size:i,asChild:d=!1,...c}=e,u=d?n.DX:"button";return(0,r.jsx)(u,{className:(0,l.cn)(o({variant:a,size:i,className:s})),ref:t,...c})});d.displayName="Button"},72167:(e,t,s)=>{"use strict";s.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>o,Zp:()=>i,aR:()=>l,wL:()=>u});var r=s(20475),a=s(20107),n=s(22250);let i=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,n.cn)("rounded-xl border bg-card text-card-foreground shadow",s),...a})});i.displayName="Card";let l=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",s),...a})});l.displayName="CardHeader";let o=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("h3",{ref:t,className:(0,n.cn)("font-semibold leading-none tracking-tight",s),...a})});o.displayName="CardTitle";let d=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("p",{ref:t,className:(0,n.cn)("text-sm text-muted-foreground",s),...a})});d.displayName="CardDescription";let c=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,n.cn)("p-6 pt-0",s),...a})});c.displayName="CardContent";let u=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,n.cn)("flex items-center p-6 pt-0",s),...a})});u.displayName="CardFooter"},574:(e,t,s)=>{"use strict";s.d(t,{S:()=>o});var r=s(20475),a=s(20107),n=s(32044),i=s(7197),l=s(22250);let o=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)(n.bL,{ref:t,className:(0,l.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",s),...a,children:(0,r.jsx)(n.C1,{className:(0,l.cn)("flex items-center justify-center text-current"),children:(0,r.jsx)(i.Srz,{className:"h-4 w-4"})})})});o.displayName=n.bL.displayName},93557:(e,t,s)=>{"use strict";s.d(t,{Cf:()=>f,HM:()=>u,L3:()=>h,c7:()=>p,lG:()=>o,rr:()=>x,zM:()=>d});var r=s(20475),a=s(20107),n=s(71827),i=s(7197),l=s(22250);let o=n.bL,d=n.l9,c=n.ZL,u=n.bm,m=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)(n.hJ,{ref:t,className:(0,l.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",s),...a})});m.displayName=n.hJ.displayName;let f=a.forwardRef((e,t)=>{let{className:s,children:a,...o}=e;return(0,r.jsxs)(c,{children:[(0,r.jsx)(m,{}),(0,r.jsxs)(n.UC,{ref:t,className:(0,l.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",s),...o,children:[a,(0,r.jsxs)(n.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,r.jsx)(i.MKb,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});f.displayName=n.UC.displayName;let p=e=>{let{className:t,...s}=e;return(0,r.jsx)("div",{className:(0,l.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...s})};p.displayName="DialogHeader";let h=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)(n.hE,{ref:t,className:(0,l.cn)("text-lg font-semibold leading-none tracking-tight",s),...a})});h.displayName=n.hE.displayName;let x=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)(n.VY,{ref:t,className:(0,l.cn)("text-sm text-muted-foreground",s),...a})});x.displayName=n.VY.displayName},64219:(e,t,s)=>{"use strict";s.d(t,{p:()=>i});var r=s(20475),a=s(20107),n=s(22250);let i=a.forwardRef((e,t)=>{let{className:s,type:a,...i}=e;return(0,r.jsx)("input",{type:a,className:(0,n.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",s),ref:t,...i})});i.displayName="Input"},36824:(e,t,s)=>{"use strict";s.d(t,{$:()=>o,F:()=>l});var r=s(20475),a=s(20107),n=s(34568),i=s(22250);let l=a.forwardRef((e,t)=>{let{className:s,children:a,...l}=e;return(0,r.jsxs)(n.bL,{ref:t,className:(0,i.cn)("relative overflow-hidden",s),...l,children:[(0,r.jsx)(n.LM,{className:"h-full w-full rounded-[inherit]",children:a}),(0,r.jsx)(o,{}),(0,r.jsx)(n.OK,{})]})});l.displayName=n.bL.displayName;let o=a.forwardRef((e,t)=>{let{className:s,orientation:a="vertical",...l}=e;return(0,r.jsx)(n.VM,{ref:t,orientation:a,className:(0,i.cn)("flex touch-none select-none transition-colors","vertical"===a&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===a&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",s),...l,children:(0,r.jsx)(n.lr,{className:"relative flex-1 rounded-full bg-border"})})});o.displayName=n.VM.displayName},76554:(e,t,s)=>{"use strict";s.d(t,{w:()=>l});var r=s(20475),a=s(20107),n=s(78190),i=s(22250);let l=a.forwardRef((e,t)=>{let{className:s,orientation:a="horizontal",decorative:l=!0,...o}=e;return(0,r.jsx)(n.b,{ref:t,decorative:l,orientation:a,className:(0,i.cn)("shrink-0 bg-border","horizontal"===a?"h-[1px] w-full":"h-full w-[1px]",s),...o})});l.displayName=n.b.displayName},31739:(e,t,s)=>{"use strict";s.d(t,{T:()=>i});var r=s(20475),a=s(20107),n=s(22250);let i=a.forwardRef((e,t)=>{let{className:s,...a}=e;return(0,r.jsx)("textarea",{className:(0,n.cn)("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),ref:t,...a})});i.displayName="Textarea"},32857:(e,t,s)=>{"use strict";s.d(t,{dj:()=>m,oR:()=>u});var r=s(20107);let a=0,n=new Map,i=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?i(s):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},o=[],d={toasts:[]};function c(e){d=l(d,e),o.forEach(e=>{e(d)})}function u(e){let{...t}=e,s=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>c({type:"DISMISS_TOAST",toastId:s});return c({type:"ADD_TOAST",toast:{...t,id:s,open:!0,onOpenChange:e=>{e||r()}}}),{id:s,dismiss:r,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:s}})}}function m(){let[e,t]=r.useState(d);return r.useEffect(()=>(o.push(t),()=>{let e=o.indexOf(t);e>-1&&o.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,s)=>{"use strict";s.d(t,{cn:()=>n});var r=s(64901),a=s(868);function n(){for(var e=arguments.length,t=Array(e),s=0;s{"use strict";s.d(t,{A:()=>o});var r=s(20107);let a=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),n=function(){for(var e=arguments.length,t=Array(e),s=0;s!!e&&s.indexOf(e)===t).join(" ")};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,r.forwardRef)((e,t)=>{let{color:s="currentColor",size:a=24,strokeWidth:l=2,absoluteStrokeWidth:o,className:d="",children:c,iconNode:u,...m}=e;return(0,r.createElement)("svg",{ref:t,...i,width:a,height:a,stroke:s,strokeWidth:o?24*Number(l)/Number(a):l,className:n("lucide",d),...m},[...u.map(e=>{let[t,s]=e;return(0,r.createElement)(t,s)}),...Array.isArray(c)?c:[c]])}),o=(e,t)=>{let s=(0,r.forwardRef)((s,i)=>{let{className:o,...d}=s;return(0,r.createElement)(l,{ref:i,iconNode:t,className:n("lucide-".concat(a(e)),o),...d})});return s.displayName="".concat(e),s}},59166:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(39997).A)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},66698:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(39997).A)("Send",[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]])},51873:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(39997).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},32044:(e,t,s)=>{"use strict";s.d(t,{C1:()=>k,bL:()=>S});var r=s(20107),a=s(74111),n=s(80938),i=s(94521),l=s(81255),o=s(48543),d=s(26783),c=s(62796),u=s(4589),m=s(20475),f="Checkbox",[p,h]=(0,n.A)(f),[x,g]=p(f),v=r.forwardRef((e,t)=>{let{__scopeCheckbox:s,name:n,checked:o,defaultChecked:d,required:c,disabled:f,value:p="on",onCheckedChange:h,form:g,...v}=e,[y,b]=r.useState(null),S=(0,a.s)(t,e=>b(e)),k=r.useRef(!1),R=!y||g||!!y.closest("form"),[C=!1,E]=(0,l.i)({prop:o,defaultProp:d,onChange:h}),A=r.useRef(C);return r.useEffect(()=>{let e=null==y?void 0:y.form;if(e){let t=()=>E(A.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[y,E]),(0,m.jsxs)(x,{scope:s,state:C,disabled:f,children:[(0,m.jsx)(u.sG.button,{type:"button",role:"checkbox","aria-checked":j(C)?"mixed":C,"aria-required":c,"data-state":N(C),"data-disabled":f?"":void 0,disabled:f,value:p,...v,ref:S,onKeyDown:(0,i.m)(e.onKeyDown,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,i.m)(e.onClick,e=>{E(e=>!!j(e)||!e),R&&(k.current=e.isPropagationStopped(),k.current||e.stopPropagation())})}),R&&(0,m.jsx)(w,{control:y,bubbles:!k.current,name:n,value:p,checked:C,required:c,disabled:f,form:g,style:{transform:"translateX(-100%)"},defaultChecked:!j(d)&&d})]})});v.displayName=f;var y="CheckboxIndicator",b=r.forwardRef((e,t)=>{let{__scopeCheckbox:s,forceMount:r,...a}=e,n=g(y,s);return(0,m.jsx)(c.C,{present:r||j(n.state)||!0===n.state,children:(0,m.jsx)(u.sG.span,{"data-state":N(n.state),"data-disabled":n.disabled?"":void 0,...a,ref:t,style:{pointerEvents:"none",...e.style}})})});b.displayName=y;var w=e=>{let{control:t,checked:s,bubbles:a=!0,defaultChecked:n,...i}=e,l=r.useRef(null),c=(0,o.Z)(s),u=(0,d.X)(t);r.useEffect(()=>{let e=l.current,t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(c!==s&&t){let r=new Event("click",{bubbles:a});e.indeterminate=j(s),t.call(e,!j(s)&&s),e.dispatchEvent(r)}},[c,s,a]);let f=r.useRef(!j(s)&&s);return(0,m.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:null!=n?n:f.current,...i,tabIndex:-1,ref:l,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function j(e){return"indeterminate"===e}function N(e){return j(e)?"indeterminate":e?"checked":"unchecked"}var S=v,k=b},78190:(e,t,s)=>{"use strict";s.d(t,{b:()=>d});var r=s(20107),a=s(4589),n=s(20475),i="horizontal",l=["horizontal","vertical"],o=r.forwardRef((e,t)=>{let{decorative:s,orientation:r=i,...o}=e,d=l.includes(r)?r:i;return(0,n.jsx)(a.sG.div,{"data-orientation":d,...s?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...o,ref:t})});o.displayName="Separator";var d=o},48543:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var r=s(20107);function a(e){let t=r.useRef({value:e,previous:e});return r.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},26783:(e,t,s)=>{"use strict";s.d(t,{X:()=>n});var r=s(20107),a=s(58013);function n(e){let[t,s]=r.useState(void 0);return(0,a.N)(()=>{if(e){s({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,a;if(!Array.isArray(t)||!t.length)return;let n=t[0];if("borderBoxSize"in n){let e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,a=t.blockSize}else r=e.offsetWidth,a=e.offsetHeight;s({width:r,height:a})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}s(void 0)},[e]),t}}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,1617,5011,1827,4568,191,6035,7358],()=>t(54016)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/cell-scanner/page-ea13797318f89296.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/cell-scanner/page-ea13797318f89296.js deleted file mode 100644 index 684d3ab..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/cell-scanner/page-ea13797318f89296.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5014],{41126:(e,s,t)=>{Promise.resolve().then(t.bind(t,55066))},55066:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>w});var a=t(20475),r=t(20107),n=t(72167),l=t(51303),c=t(85014),i=t(42541),d=t(93069),o=t(22250);let u=r.forwardRef((e,s)=>{let{className:t,value:r,...n}=e;return(0,a.jsx)(d.bL,{ref:s,className:(0,o.cn)("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:(0,a.jsx)(d.C1,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:"translateX(-".concat(100-(r||0),"%)")}})})});u.displayName=d.bL.displayName;var x=t(59166),m=t(27720),p=t(91994),h=t(76076),f=t(51873),j=t(45934),g=t(38741),b=t(36824),N=t(32857);let v=e=>{let{neighborCells:s}=e,t=e=>e>=-65?(0,a.jsx)(g.z_q,{className:"text-xl"}):e>=-75?(0,a.jsx)(g.sRp,{className:"text-xl"}):e>=-85?(0,a.jsx)(g.ztD,{className:"text-xl"}):e>=-95?(0,a.jsx)(g.G7Q,{className:"text-xl"}):(0,a.jsx)(g.NJ4,{className:"text-xl"}),r=(null==s?void 0:s.data)?[...(e=>(null==e?void 0:e.neighborCells)?Array.from(e.neighborCells.matchAll(/\+QENG: "neighbourcell (?:intra|inter)","LTE",(\d+),(\d+),(-?\d+),(-?\d+)/g)).map(e=>({type:"LTE",frequency:parseInt(e[1]),pci:parseInt(e[2]),rsrq:parseInt(e[3]),rsrp:parseInt(e[4])})):[])(s.data),...(e=>(null==e?void 0:e.meas)?Array.from(e.meas.matchAll(/\+QNWCFG: "nr5g_meas_info",(\d+),(\d+),(\d+),(-?\d+),(-?\d+)/g)).map(e=>({type:"1"===e[1]?"NR5G-NSA":"NR5G-SA",frequency:parseInt(e[2]),pci:parseInt(e[3]),rsrp:parseInt(e[4]),rsrq:parseInt(e[5])})):[])(s.data)].sort((e,s)=>e.type.startsWith("NR5G")&&!s.type.startsWith("NR5G")?-1:!e.type.startsWith("NR5G")&&s.type.startsWith("NR5G")?1:s.rsrp-e.rsrp):[];return s&&0!==r.length?(0,a.jsx)("div",{className:"space-y-4",children:(0,a.jsxs)(l.XI,{children:[(0,a.jsx)(l.A0,{children:(0,a.jsxs)(l.Hj,{children:[(0,a.jsx)(l.nd,{children:"Type"}),(0,a.jsx)(l.nd,{children:"Frequency"}),(0,a.jsx)(l.nd,{children:"PCI"}),(0,a.jsx)(l.nd,{children:"Signal"})]})}),(0,a.jsx)(l.BF,{children:r.map((e,s)=>(0,a.jsxs)(l.Hj,{children:[(0,a.jsx)(l.nA,{className:"font-medium",children:e.type}),(0,a.jsx)(l.nA,{children:e.frequency}),(0,a.jsx)(l.nA,{children:e.pci}),(0,a.jsx)(l.nA,{children:(0,a.jsx)(c.TooltipProvider,{children:(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{children:t(e.rsrp)}),(0,a.jsx)(c.ZI,{children:(0,a.jsxs)("div",{className:"grid gap-1",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-1",children:["RSRP ",(0,a.jsxs)("span",{className:"font-medium",children:[e.rsrp," dBm"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-1",children:["RSRQ ",(0,a.jsxs)("span",{className:"font-medium",children:[e.rsrq," dB"]})]})]})})]})})})]},"".concat(e.type,"-").concat(e.frequency,"-").concat(s)))})]})}):(0,a.jsx)("div",{className:"text-center py-4 text-gray-500",children:"No neighbor cells data available"})};var y=t(7197);let w=()=>{let{toast:e}=(0,N.dj)(),[s,t]=(0,r.useState)(null),[d,o]=(0,r.useState)(null),[w,C]=(0,r.useState)(0),[S,A]=(0,r.useState)(!1),[R,T]=(0,r.useState)(null),[k,I]=(0,r.useState)([]),[_,E]=(0,r.useState)(null),[F,q]=(0,r.useState)({status:"idle",progress:0,message:""});(0,r.useEffect)(()=>{if(!d){C(0);return}let e=()=>{let s=new Date(d).getTime(),t=Math.max(0,6e4-(new Date().getTime()-s));C(t),t>0&&requestAnimationFrame(e)};e()},[d]);let O=(0,r.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/experimental/cell_scanner/fetch_mccmnc.sh"),s=await e.json();I(s)}catch(s){console.error("Failed to fetch MCC-MNC list:",s),e({title:"Warning",description:"Failed to load operator information",variant:"destructive"})}},[]);(0,r.useEffect)(()=>{O()},[O]);let B=(0,r.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/experimental/quecwatch/quecwatch-fetch.sh"),s=await e.json();T(s)}catch(s){console.error("Failed to fetch Quecwatch status:",s),e({title:"Error",description:"Failed to check Quecwatch status",variant:"destructive"})}},[]),D=(0,r.useCallback)((e,s)=>k.find(t=>t.mcc===e&&t.mnc===s)||null,[k]),P=(0,r.useCallback)(e=>e.split("\n").filter(e=>e.trim().startsWith("+QSCAN:")).map(e=>{let[s,t,a,r,n,l,c,i,...d]=e.substring(e.indexOf(":")+1).split(",").map(e=>e.trim().replace(/["\r]/g,"")),o={type:s.trim(),mcc:t,mnc:a,freq:parseInt(r),pci:parseInt(n),rsrp:parseInt(l),rsrq:parseInt(c),srxlev:parseInt(i)};if("LTE"===s.trim()){let[e,s,t,a,r]=d;return{...o,type:"LTE",squal:parseInt(e),cellId:s,tac:t,bandwidth:parseInt(a),band:parseInt(r)}}{let[e,s,t,a,r,n,l,c]=d;return{...o,type:"NR5G",scs:parseInt(e),cellId:s,tac:t,carrierBandwidth:parseInt(a),band:parseInt(r),offsetToPointA:parseInt(n),ssbSubcarrierOffset:parseInt(l),ssbScs:parseInt(c)}}}),[]),L=(0,r.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/experimental/cell_scanner/check_scan.sh"),s=await e.json();"success"===s.status&&s.output?(t(s),o(s.timestamp||null),q({status:"idle",progress:100,message:""})):"running"===s.status&&(q({status:"scanning",progress:50,message:"Scan in progress..."}),setTimeout(L,2e3))}catch(s){console.error("Failed to check scan status",s),e({title:"Error",description:"Failed to check scan status",variant:"destructive"})}},[]),M=(0,r.useCallback)(async()=>{if("scanning"!==F.status&&!S){A(!0),q({status:"scanning",progress:0,message:"Initiating scan..."}),t(null),o(null);try{let e=await fetch("/cgi-bin/experimental/cell_scanner/cell_scan.sh"),s=await e.json();if("running"===s.status)q({status:"scanning",progress:10,message:"Scan started..."}),setTimeout(L,2e3);else throw Error(s.message||"Failed to start scan")}catch(s){e({title:"Error",description:"Failed to start cell scan",variant:"destructive"}),q({status:"idle",progress:0,message:""})}finally{A(!1)}}},[F.status,S,L]),$=(0,r.useCallback)(e=>e.reduce((e,s)=>{let t="".concat(s.mcc).concat(s.mnc);if(!e[t]){let a=D(s.mcc,s.mnc);e[t]={cells:[],operatorInfo:a}}return e[t].cells.push(s),e},{}),[D]),G=(0,r.useCallback)(e=>[...e].sort((e,s)=>e.type!==s.type?"LTE"===e.type?-1:1:s.rsrp-e.rsrp),[]),Q=(0,r.useCallback)(e=>e>=-65?(0,a.jsx)(g.z_q,{className:"text-xl"}):e>=-75?(0,a.jsx)(g.sRp,{className:"text-xl"}):e>=-85?(0,a.jsx)(g.ztD,{className:"text-xl"}):e>=-95?(0,a.jsx)(g.G7Q,{className:"text-xl"}):(0,a.jsx)(g.NJ4,{className:"text-xl"}),[]);(0,r.useEffect)(()=>{L(),B()},[L,B]);let Z=(0,r.useCallback)(()=>{t(null),o(null),q({status:"idle",progress:0,message:""})},[]),z=(0,r.useCallback)(()=>{if(!(null==s?void 0:s.output))return;let e=new Blob([["Type,MCC,MNC,Frequency,PCI,RSRP,RSRQ,Band,Cell ID,TAC",...P(s.output).map(e=>"".concat(e.type,",").concat(e.mcc,",").concat(e.mnc,",").concat(e.freq,",").concat(e.pci,",").concat(e.rsrp,",").concat(e.rsrq,",").concat(e.band,",").concat(e.cellId,",").concat(e.tac))].join("\n")],{type:"text/csv;charset=utf-8;"}),t=document.createElement("a");t.href=URL.createObjectURL(e),t.setAttribute("download","cell_scan_".concat(new Date().toISOString(),".csv")),document.body.appendChild(t),t.click(),document.body.removeChild(t)},[s,P]),W=(0,r.useCallback)((e,s,t)=>t?"".concat(e).concat(s," - ").concat(t.brand," by ").concat(t.operator):"".concat(e).concat(s),[]),H=(null==s?void 0:s.status)==="success"&&s.output?$(P(s.output)):{},V=(0,r.useCallback)(async()=>{A(!0);let e=await fetch("/cgi-bin/experimental/cell_scanner/network_info.sh");E(await e.json()),A(!1)},[]),U=(0,r.useCallback)(()=>{E(null)},[]);return(0,a.jsxs)("div",{className:"grid gap-5",children:[(0,a.jsxs)(n.Zp,{children:[(0,a.jsxs)(n.aR,{children:[(0,a.jsx)(n.ZB,{children:"Full Network Cell Scan"}),(0,a.jsxs)(n.BT,{children:["Scan all available network cells, including those from other network providers. Current network mode will affect the results.",d&&(0,a.jsxs)("div",{className:"mt-1 text-sm text-muted-foreground",children:["Last scan: ",d]})]})]}),(0,a.jsx)(n.Wu,{children:(0,a.jsxs)(b.F,{className:"h-96",children:[!s&&"idle"===F.status&&(0,a.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,a.jsx)("p",{className:"text-gray-500 text-center",children:"Click the button below to start scanning the network..."})}),"scanning"===F.status&&(0,a.jsxs)("div",{className:"flex flex-col space-y-2 items-center justify-center h-full w-full",children:[(0,a.jsx)(u,{value:F.progress,className:"w-full"}),(0,a.jsx)("div",{className:"flex items-center justify-center",children:(0,a.jsx)("p",{className:"text-sm text-gray-500 text-center",children:F.message})})]}),(0,a.jsx)("div",{className:"grid gap-4",children:Object.entries(H).map(e=>{let[s,{cells:t,operatorInfo:r}]=e;return(0,a.jsxs)(n.Zp,{className:"p-4 grid gap-2",children:[(0,a.jsx)("div",{children:(0,a.jsx)(j.E,{children:W(t[0].mcc,t[0].mnc,r)})}),(0,a.jsxs)(l.XI,{children:[(0,a.jsx)(l.A0,{children:(0,a.jsxs)(l.Hj,{children:[(0,a.jsx)(l.nd,{children:"Type"}),(0,a.jsx)(l.nd,{children:"E/ARFCN"}),(0,a.jsx)(l.nd,{children:"PCI"}),(0,a.jsx)(l.nd,{children:"Band"}),(0,a.jsx)(l.nd,{children:"Cell ID"}),(0,a.jsx)(l.nd,{children:"TAC"}),(0,a.jsx)(l.nd,{children:"Signal"})]})}),(0,a.jsx)(l.BF,{children:G(t).map((e,s)=>(0,a.jsxs)(l.Hj,{children:[(0,a.jsx)(l.nA,{children:e.type}),(0,a.jsx)(l.nA,{children:e.freq}),(0,a.jsx)(l.nA,{children:e.pci}),(0,a.jsx)(l.nA,{children:e.band}),(0,a.jsx)(l.nA,{children:e.cellId}),(0,a.jsx)(l.nA,{children:e.tac}),(0,a.jsx)(l.nA,{children:(0,a.jsx)(c.TooltipProvider,{children:(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{children:Q(e.rsrp)}),(0,a.jsx)(c.ZI,{children:(0,a.jsxs)("div",{className:"grid gap-1",children:[(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-1",children:["RSRP"," ",(0,a.jsxs)("span",{className:"font-medium",children:[e.rsrp," dBm"]})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-1",children:["RSRQ"," ",(0,a.jsxs)("span",{className:"font-medium",children:[e.rsrq," dB"]})]})]})})]})})})]},"".concat(e.cellId,"-").concat(s)))})]})]},s)})})]})}),(0,a.jsx)(n.wL,{className:"border-t py-4",children:(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(null==R?void 0:R.status)==="active"?(0,a.jsx)(c.TooltipProvider,{children:(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{children:(0,a.jsx)(i.$,{disabled:!0,children:"scanning"===F.status?(0,a.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,a.jsx)(x.A,{className:"animate-spin w-4 h-4"}),(0,a.jsx)("span",{children:"Scanning Network..."})]}):s?(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(p.A,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Run Cell Scan Again"})]}):(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(m.A,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Start Cell Scan"})]})})}),(0,a.jsx)(c.ZI,{children:"Please disable Quecwatch first before proceeding."})]})}):(0,a.jsx)(c.TooltipProvider,{children:(0,a.jsxs)(c.m_,{children:[(0,a.jsx)(c.k$,{children:(0,a.jsx)(i.$,{onClick:M,disabled:"scanning"===F.status||S||w>0,children:"scanning"===F.status?(0,a.jsxs)("div",{className:"flex items-center gap-x-2",children:[(0,a.jsx)(x.A,{className:"animate-spin w-4 h-4"}),(0,a.jsx)("span",{children:"Scanning Network..."})]}):s?(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(p.A,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Run Cell Scan Again"})]}):(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(m.A,{className:"w-4 h-4"}),(0,a.jsx)("span",{children:"Start Cell Scan"})]})})}),(0,a.jsx)(c.ZI,{children:w>0?(0,a.jsxs)("span",{children:["Please wait ",Math.ceil(w/1e3)," ","seconds before scanning again"]}):(0,a.jsx)("span",{children:"Start a new network scan"})})]})}),(null==s?void 0:s.status)==="success"&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(i.$,{variant:"secondary",onClick:z,disabled:"scanning"===F.status,children:[(0,a.jsx)(h.A,{className:"w-4 h-4 mr-2"}),"Export to CSV"]}),(0,a.jsxs)(i.$,{variant:"destructive",onClick:Z,disabled:"scanning"===F.status,children:[(0,a.jsx)(f.A,{className:"w-4 h-4 mr-2"}),"Clear Results"]})]})]})})]}),(0,a.jsxs)(n.Zp,{children:[(0,a.jsxs)(n.aR,{children:[(0,a.jsx)(n.ZB,{children:"Neighbor Cell Scan"}),(0,a.jsx)(n.BT,{children:"Scan neighbor cells of the current network provider."})]}),(0,a.jsx)(n.Wu,{children:(0,a.jsx)(v,{neighborCells:_})}),(0,a.jsx)(n.wL,{className:"border-t py-4",children:(0,a.jsxs)("div",{className:"flex items-center space-x-4",children:[(0,a.jsxs)(i.$,{onClick:V,disabled:S,children:[(0,a.jsx)(y.$p$,{className:"w-4 h-4"}),"Start Neighbor Scan"]}),(null==_?void 0:_.status)==="success"&&(0,a.jsxs)(i.$,{variant:"destructive",onClick:U,disabled:S,children:[(0,a.jsx)(f.A,{className:"w-4 h-4"}),"Clear Results"]})]})})]})]})}},45934:(e,s,t)=>{"use strict";t.d(s,{E:()=>c});var a=t(20475);t(20107);var r=t(29395),n=t(22250);let l=(0,r.F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function c(e){let{className:s,variant:t,...r}=e;return(0,a.jsx)("div",{className:(0,n.cn)(l({variant:t}),s),...r})}},42541:(e,s,t)=>{"use strict";t.d(s,{$:()=>d,r:()=>i});var a=t(20475),r=t(20107),n=t(61837),l=t(29395),c=t(22250);let i=(0,l.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=r.forwardRef((e,s)=>{let{className:t,variant:r,size:l,asChild:d=!1,...o}=e,u=d?n.DX:"button";return(0,a.jsx)(u,{className:(0,c.cn)(i({variant:r,size:l,className:t})),ref:s,...o})});d.displayName="Button"},72167:(e,s,t)=>{"use strict";t.d(s,{BT:()=>d,Wu:()=>o,ZB:()=>i,Zp:()=>l,aR:()=>c,wL:()=>u});var a=t(20475),r=t(20107),n=t(22250);let l=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("rounded-xl border bg-card text-card-foreground shadow",t),...r})});l.displayName="Card";let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",t),...r})});c.displayName="CardHeader";let i=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("h3",{ref:s,className:(0,n.cn)("font-semibold leading-none tracking-tight",t),...r})});i.displayName="CardTitle";let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("p",{ref:s,className:(0,n.cn)("text-sm text-muted-foreground",t),...r})});d.displayName="CardDescription";let o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("p-6 pt-0",t),...r})});o.displayName="CardContent";let u=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{ref:s,className:(0,n.cn)("flex items-center p-6 pt-0",t),...r})});u.displayName="CardFooter"},36824:(e,s,t)=>{"use strict";t.d(s,{$:()=>i,F:()=>c});var a=t(20475),r=t(20107),n=t(34568),l=t(22250);let c=r.forwardRef((e,s)=>{let{className:t,children:r,...c}=e;return(0,a.jsxs)(n.bL,{ref:s,className:(0,l.cn)("relative overflow-hidden",t),...c,children:[(0,a.jsx)(n.LM,{className:"h-full w-full rounded-[inherit]",children:r}),(0,a.jsx)(i,{}),(0,a.jsx)(n.OK,{})]})});c.displayName=n.bL.displayName;let i=r.forwardRef((e,s)=>{let{className:t,orientation:r="vertical",...c}=e;return(0,a.jsx)(n.VM,{ref:s,orientation:r,className:(0,l.cn)("flex touch-none select-none transition-colors","vertical"===r&&"h-full w-2.5 border-l border-l-transparent p-[1px]","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...c,children:(0,a.jsx)(n.lr,{className:"relative flex-1 rounded-full bg-border"})})});i.displayName=n.VM.displayName},51303:(e,s,t)=>{"use strict";t.d(s,{A0:()=>c,BF:()=>i,Hj:()=>d,XI:()=>l,nA:()=>u,nd:()=>o,r6:()=>x});var a=t(20475),r=t(20107),n=t(22250);let l=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("div",{className:"relative w-full overflow-auto",children:(0,a.jsx)("table",{ref:s,className:(0,n.cn)("w-full caption-bottom text-sm",t),...r})})});l.displayName="Table";let c=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("thead",{ref:s,className:(0,n.cn)("[&_tr]:border-b",t),...r})});c.displayName="TableHeader";let i=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("tbody",{ref:s,className:(0,n.cn)("[&_tr:last-child]:border-0",t),...r})});i.displayName="TableBody",r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("tfoot",{ref:s,className:(0,n.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...r})}).displayName="TableFooter";let d=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("tr",{ref:s,className:(0,n.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...r})});d.displayName="TableRow";let o=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("th",{ref:s,className:(0,n.cn)("h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...r})});o.displayName="TableHead";let u=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("td",{ref:s,className:(0,n.cn)("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...r})});u.displayName="TableCell";let x=r.forwardRef((e,s)=>{let{className:t,...r}=e;return(0,a.jsx)("caption",{ref:s,className:(0,n.cn)("mt-4 text-sm text-muted-foreground",t),...r})});x.displayName="TableCaption"},85014:(e,s,t)=>{"use strict";t.d(s,{TooltipProvider:()=>c,ZI:()=>o,k$:()=>d,m_:()=>i});var a=t(20475),r=t(20107),n=t(84623),l=t(22250);let c=n.Kq,i=n.bL,d=n.l9,o=r.forwardRef((e,s)=>{let{className:t,sideOffset:r=4,...c}=e;return(0,a.jsx)(n.UC,{ref:s,sideOffset:r,className:(0,l.cn)("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...c})});o.displayName=n.UC.displayName},32857:(e,s,t)=>{"use strict";t.d(s,{dj:()=>x,oR:()=>u});var a=t(20107);let r=0,n=new Map,l=e=>{if(n.has(e))return;let s=setTimeout(()=>{n.delete(e),o({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,s)},c=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=s;return t?l(t):e.toasts.forEach(e=>{l(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},i=[],d={toasts:[]};function o(e){d=c(d,e),i.forEach(e=>{e(d)})}function u(e){let{...s}=e,t=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>o({type:"DISMISS_TOAST",toastId:t});return o({type:"ADD_TOAST",toast:{...s,id:t,open:!0,onOpenChange:e=>{e||a()}}}),{id:t,dismiss:a,update:e=>o({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function x(){let[e,s]=a.useState(d);return a.useEffect(()=>(i.push(s),()=>{let e=i.indexOf(s);e>-1&&i.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>o({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,s,t)=>{"use strict";t.d(s,{cn:()=>n});var a=t(64901),r=t(868);function n(){for(var e=arguments.length,s=Array(e),t=0;t{var s=s=>e(e.s=s);e.O(0,[9980,2101,7780,1617,4673,4568,4623,3742,191,6035,7358],()=>s(41126)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/keep-alive/page-fda1ccb2b4b74c1a.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/keep-alive/page-fda1ccb2b4b74c1a.js deleted file mode 100644 index f5feb7d..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/keep-alive/page-fda1ccb2b4b74c1a.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3376],{82064:(e,t,r)=>{Promise.resolve().then(r.bind(r,4546))},4546:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var a=r(20475),s=r(20107),n=r(72167),i=r(64219),l=r(49153),o=r(12607),d=r(96244),c=r(52744),u=r(32857);let p=()=>{let[e,t]=(0,s.useState)(""),[r,p]=(0,s.useState)(""),[f,m]=(0,s.useState)(""),[v,h]=(0,s.useState)(!1),{toast:g}=(0,u.dj)();(0,s.useEffect)(()=>{b()},[]);let b=async()=>{try{let e=await fetch("/cgi-bin/experimental/keep_alive.sh?status=true"),r=await e.json();t(r.start_time),p(r.end_time),m(r.interval.toString()),h(1===r.enabled)}catch(e){g({title:"Error",description:"Failed to fetch current status",variant:"destructive"})}},x=async t=>{try{if(t){if(!e||!r||!f){g({title:"Error",description:"Please fill in all fields",variant:"destructive"});return}let t=parseInt(f,10);if(isNaN(t)||t<=0){g({title:"Error",description:"Interval must be a positive number",variant:"destructive"});return}let a=await fetch("/cgi-bin/experimental/keep_alive.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"start_time=".concat(encodeURIComponent(e),"&end_time=").concat(encodeURIComponent(r),"&interval=").concat(encodeURIComponent(f))}),s=await a.json();if(s.error){g({title:"Error",description:s.error,variant:"destructive"});return}g({title:"Success",description:"Keep-alive scheduling enabled"})}else{let e=await fetch("/cgi-bin/experimental/keep_alive.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:"disable=true"});await e.json(),g({title:"Success",description:"Keep-alive scheduling disabled"})}h(t)}catch(e){g({title:"Error",description:"Failed to update keep-alive settings",variant:"destructive"})}};return(0,a.jsxs)(n.Zp,{children:[(0,a.jsxs)(n.aR,{children:[(0,a.jsx)(n.ZB,{children:"Keep Alive"}),(0,a.jsx)(n.BT,{children:"Ensure uninterrupted connectivity by preventing modem idle times with scheduled speed tests to keep your connection alive."})]}),(0,a.jsx)(n.Wu,{children:(0,a.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4",children:[(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(l.J,{htmlFor:"start-time",children:"Start Time"}),(0,a.jsx)(i.p,{type:"time",id:"start-time",value:e,onChange:e=>t(e.target.value),disabled:v})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(l.J,{htmlFor:"end-time",children:"End Time"}),(0,a.jsx)(i.p,{type:"time",id:"end-time",value:r,onChange:e=>p(e.target.value),disabled:v})]}),(0,a.jsxs)("div",{className:"grid w-full max-w-sm items-center gap-2",children:[(0,a.jsx)(l.J,{htmlFor:"interval",children:"Interval (minutes)"}),(0,a.jsx)(i.p,{type:"number",id:"interval",min:1,value:f,onChange:e=>{m(e.target.value.replace(/[^0-9]/g,"").replace(/^0+/,""))},placeholder:"Enter minutes",disabled:v,className:"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none"})]}),(0,a.jsxs)("div",{className:"lg:col-span-2 col-span-1 flex items-center gap-2",children:[(0,a.jsx)(o.A,{className:"h-4 w-4 text-red-600"}),(0,a.jsx)("p",{className:"text-sm text-gray-500",children:"Please consider your data usage limits when setting the interval."})]})]})}),(0,a.jsx)(n.wL,{className:"border-t py-4",children:(0,a.jsxs)(c.l,{pressed:v,onPressedChange:x,disabled:!e||!r||!f,children:[(0,a.jsx)(d.A,{className:"h-4 w-4 mr-2"}),"Enable Keep Alive"]})})]})}},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>o,Zp:()=>i,aR:()=>l,wL:()=>u});var a=r(20475),s=r(20107),n=r(22250);let i=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,n.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});i.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,n.cn)("flex flex-col space-y-1.5 p-6",r),...s})});l.displayName="CardHeader";let o=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,n.cn)("font-semibold leading-none tracking-tight",r),...s})});o.displayName="CardTitle";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,n.cn)("text-sm text-muted-foreground",r),...s})});d.displayName="CardDescription";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,n.cn)("p-6 pt-0",r),...s})});c.displayName="CardContent";let u=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,n.cn)("flex items-center p-6 pt-0",r),...s})});u.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var a=r(20475),s=r(20107),n=r(22250);let i=s.forwardRef((e,t)=>{let{className:r,type:s,...i}=e;return(0,a.jsx)("input",{type:s,className:(0,n.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},49153:(e,t,r)=>{"use strict";r.d(t,{J:()=>d});var a=r(20475),s=r(20107),n=r(73725),i=r(29395),l=r(22250);let o=(0,i.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.b,{ref:t,className:(0,l.cn)(o(),r),...s})});d.displayName=n.b.displayName},52744:(e,t,r)=>{"use strict";r.d(t,{l:()=>p});var a=r(20475),s=r(20107),n=r(94521),i=r(81255),l=r(4589),o=s.forwardRef((e,t)=>{let{pressed:r,defaultPressed:s=!1,onPressedChange:o,...d}=e,[c=!1,u]=(0,i.i)({prop:r,onChange:o,defaultProp:s});return(0,a.jsx)(l.sG.button,{type:"button","aria-pressed":c,"data-state":c?"on":"off","data-disabled":e.disabled?"":void 0,...d,ref:t,onClick:(0,n.m)(e.onClick,()=>{e.disabled||u(!c)})})});o.displayName="Toggle";var d=r(29395),c=r(22250);let u=(0,d.F)("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"},size:{default:"h-9 px-3",sm:"h-8 px-2",lg:"h-10 px-3"}},defaultVariants:{variant:"default",size:"default"}}),p=s.forwardRef((e,t)=>{let{className:r,variant:s,size:n,...i}=e;return(0,a.jsx)(o,{ref:t,className:(0,c.cn)(u({variant:s,size:n,className:r})),...i})});p.displayName=o.displayName},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>p,oR:()=>u});var a=r(20107);let s=0,n=new Map,i=e=>{if(n.has(e))return;let t=setTimeout(()=>{n.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);n.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?i(r):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},o=[],d={toasts:[]};function c(e){d=l(d,e),o.forEach(e=>{e(d)})}function u(e){let{...t}=e,r=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||a()}}}),{id:r,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function p(){let[e,t]=a.useState(d);return a.useEffect(()=>(o.push(t),()=>{let e=o.indexOf(t);e>-1&&o.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var a=r(64901),s=r(868);function n(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.d(t,{A:()=>o});var a=r(20107);let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),n=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,a.forwardRef)((e,t)=>{let{color:r="currentColor",size:s=24,strokeWidth:l=2,absoluteStrokeWidth:o,className:d="",children:c,iconNode:u,...p}=e;return(0,a.createElement)("svg",{ref:t,...i,width:s,height:s,stroke:r,strokeWidth:o?24*Number(l)/Number(s):l,className:n("lucide",d),...p},[...u.map(e=>{let[t,r]=e;return(0,a.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),o=(e,t)=>{let r=(0,a.forwardRef)((r,i)=>{let{className:o,...d}=r;return(0,a.createElement)(l,{ref:i,iconNode:t,className:n("lucide-".concat(s(e)),o),...d})});return r.displayName="".concat(e),r}},96244:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("Clock1",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 14.5 8",key:"12zbmj"}]])},12607:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});let a=(0,r(39997).A)("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},94521:(e,t,r)=>{"use strict";function a(e,t,{checkForDefaultPrevented:r=!0}={}){return function(a){if(e?.(a),!1===r||!a.defaultPrevented)return t?.(a)}}r.d(t,{m:()=>a})},73725:(e,t,r)=>{"use strict";r.d(t,{b:()=>l});var a=r(20107),s=r(4589),n=r(20475),i=a.forwardRef((e,t)=>(0,n.jsx)(s.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null===(r=e.onMouseDown)||void 0===r||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));i.displayName="Label";var l=i},4589:(e,t,r)=>{"use strict";r.d(t,{hO:()=>o,sG:()=>l});var a=r(20107),s=r(25642),n=r(61837),i=r(20475),l=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce((e,t)=>{let r=a.forwardRef((e,r)=>{let{asChild:a,...s}=e,l=a?n.DX:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,i.jsx)(l,{...s,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function o(e,t){e&&s.flushSync(()=>e.dispatchEvent(t))}},85547:(e,t,r)=>{"use strict";r.d(t,{c:()=>s});var a=r(20107);function s(e){let t=a.useRef(e);return a.useEffect(()=>{t.current=e}),a.useMemo(()=>(...e)=>t.current?.(...e),[])}},81255:(e,t,r)=>{"use strict";r.d(t,{i:()=>n});var a=r(20107),s=r(85547);function n({prop:e,defaultProp:t,onChange:r=()=>{}}){let[n,i]=function({defaultProp:e,onChange:t}){let r=a.useState(e),[n]=r,i=a.useRef(n),l=(0,s.c)(t);return a.useEffect(()=>{i.current!==n&&(l(n),i.current=n)},[n,i,l]),r}({defaultProp:t,onChange:r}),l=void 0!==e,o=l?e:n,d=(0,s.c)(r);return[o,a.useCallback(t=>{if(l){let r="function"==typeof t?t(e):t;r!==e&&d(r)}else i(t)},[l,e,i,d])]}},29395:(e,t,r)=>{"use strict";r.d(t,{F:()=>n});let a=e=>"boolean"==typeof e?"".concat(e):0===e?"0":e,s=function(){for(var e,t,r=0,a="";rr=>{var n;if((null==t?void 0:t.variants)==null)return s(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:l}=t,o=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],s=null==l?void 0:l[e];if(null===t)return null;let n=a(t)||a(s);return i[e][n]}),d=r&&Object.entries(r).reduce((e,t)=>{let[r,a]=t;return void 0===a||(e[r]=a),e},{});return s(e,o,null==t?void 0:null===(n=t.compoundVariants)||void 0===n?void 0:n.reduce((e,t)=>{let{class:r,className:a,...s}=t;return Object.entries(s).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...d}[t]):({...l,...d})[t]===r})?[...e,r,a]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}}},e=>{var t=t=>e(e.s=t);e.O(0,[7780,191,6035,7358],()=>t(82064)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/layout-3c6ab898e54410a1.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/layout-3c6ab898e54410a1.js deleted file mode 100644 index 4197dd8..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/layout-3c6ab898e54410a1.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3075],{43946:(e,a,r)=>{Promise.resolve().then(r.bind(r,31753))},31753:(e,a,r)=>{"use strict";r.r(a),r.d(a,{default:()=>c});var s=r(20475);r(20107);var t=r(16118),l=r(9477),n=r.n(l);let c=e=>{let{children:a}=e,r=(0,t.usePathname)();return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"mx-auto grid w-full max-w-6xl gap-2",children:(0,s.jsx)("h1",{className:"text-3xl font-semibold",children:"Experimental"})}),(0,s.jsxs)("div",{className:"mx-auto grid w-full max-w-6xl items-start gap-6 md:grid-cols-[180px_1fr] lg:grid-cols-[250px_1fr]",children:[(0,s.jsxs)("nav",{className:"grid gap-4 text-sm text-muted-foreground","x-chunk":"dashboard-04-chunk-0",children:[(0,s.jsx)(n(),{href:"/dashboard/experimental/quecwatch",className:"".concat("/dashboard/experimental/quecwatch/"===r?"font-semibold text-primary":"text-sm"),children:"QuecWatch"}),(0,s.jsx)(n(),{href:"/dashboard/experimental/keep-alive",className:"".concat("/dashboard/experimental/keep-alive/"===r?"font-semibold text-primary":"text-sm"),children:"Keep Alive"}),(0,s.jsx)(n(),{href:"/dashboard/experimental/cell-scanner",className:"".concat("/dashboard/experimental/cell-scanner/"===r?"font-semibold text-primary":"text-sm"),children:"Cell Scanner"})]}),a]})]})}},16118:(e,a,r)=>{"use strict";var s=r(65834);r.o(s,"usePathname")&&r.d(a,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(a,{useRouter:function(){return s.useRouter}})}},e=>{var a=a=>e(e.s=a);e.O(0,[9477,191,6035,7358],()=>a(43946)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/page-a7ca4f47824ebde8.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/page-a7ca4f47824ebde8.js deleted file mode 100644 index 64d6204..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/page-a7ca4f47824ebde8.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7040],{44833:()=>{}},_=>{var e=e=>_(_.s=e);_.O(0,[191,6035,7358],()=>e(44833)),_N_E=_.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/quecwatch/page-d94c5ce83b8ffc64.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/quecwatch/page-d94c5ce83b8ffc64.js deleted file mode 100644 index b71cba9..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/experimental/quecwatch/page-d94c5ce83b8ffc64.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6010],{30076:(e,t,r)=>{Promise.resolve().then(r.bind(r,84902))},84902:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var a=r(20475),s=r(20107),i=r(72167),n=r(35601),l=r(42541),o=r(22631),d=r(49153),c=r(64219),u=r(39997);let p=(0,u.A)("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]),h=(0,u.A)("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var m=r(32857);let f=()=>{let{toast:e}=(0,m.dj)(),[t,r]=(0,s.useState)({pingTarget:"",pingInterval:30,pingFailures:3,maxRetries:5,connectionRefresh:!1,autoSimFailover:!1,simFailoverSchedule:30}),[u,f]=(0,s.useState)("loading"),[g,x]=(0,s.useState)(!1),[v,b]=(0,s.useState)(null),[w,j]=(0,s.useState)(null),y=async()=>{try{let t=await fetch("/cgi-bin/experimental/quecwatch/quecwatch-fetch.sh",{method:"GET",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error("Network response was not ok");let a=await t.json();switch(a.status){case"active":if(a.config){let t={pingTarget:a.config.pingTarget,pingInterval:a.config.pingInterval,pingFailures:a.config.pingFailures,maxRetries:a.config.maxRetries,connectionRefresh:!0===a.config.connectionRefresh,autoSimFailover:!0===a.config.autoSimFailover,simFailoverSchedule:a.config.simFailoverSchedule||30,currentRetries:a.config.currentRetries,refreshCount:a.config.refreshCount};r(t),void 0!==t.currentRetries&&t.currentRetries>=t.maxRetries?(f("inactive"),e({title:"QuecWatch Stopped",description:"Maximum retries exhausted",variant:"destructive"})):f("active"),j(a.lastActivity||null)}break;case"inactive":f("inactive");break;default:f("error"),b(a.message||"Unknown error occurred"),e({title:"Error",description:"Failed to fetch quecwatch configuration",variant:"destructive"})}}catch(t){f("error"),b(t instanceof Error?t.message:"An unknown error occurred"),e({title:"Error",description:"Failed to fetch quecwatch configuration",variant:"destructive"})}};(0,s.useEffect)(()=>{y()},[]),(0,s.useEffect)(()=>{if("active"===u){let e=setInterval(y,5e3);return()=>clearInterval(e)}},[u]);let N=async()=>{x(!0),b(null);try{let r=new URLSearchParams;r.append("action","enable"),r.append("ping_target",t.pingTarget),r.append("ping_interval",t.pingInterval.toString()),r.append("ping_failures",t.pingFailures.toString()),r.append("max_retries",t.maxRetries.toString()),r.append("connection_refresh",t.connectionRefresh.toString()),r.append("auto_sim_failover",t.autoSimFailover.toString()),r.append("sim_failover_schedule",t.simFailoverSchedule.toString());let a=await fetch("/cgi-bin/experimental/quecwatch/enable-quecwatch.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:r});if(!a.ok)throw Error("Network response was not ok");let s=await a.json();if("success"===s.status)f("active"),e({title:"QuecWatch Enabled",description:"Quecwatch enabled successfully"}),await y();else throw Error(s.message)}catch(e){f("error"),b(e instanceof Error?e.message:"An unknown error occurred")}finally{x(!1)}},S=async()=>{x(!0),b(null);try{let t=new URLSearchParams;t.append("action","disable");let a=await fetch("/cgi-bin/experimental/quecwatch/disable-quecwatch.sh",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:t});if(!a.ok)throw Error("Network response was not ok");let s=await a.json();if("success"===s.status)f("inactive"),r({pingTarget:"",pingInterval:30,pingFailures:3,maxRetries:5,connectionRefresh:!1,autoSimFailover:!1,simFailoverSchedule:30}),e({title:"QuecWatch Disabled",description:"Quecwatch disabled successfully",variant:"default"});else throw Error(s.message)}catch(t){f("error"),b(t instanceof Error?t.message:"An unknown error occurred"),e({title:"Error",description:"Failed to disable QuecWatch",variant:"destructive"})}finally{x(!1)}};return(0,a.jsxs)(i.Zp,{children:[(0,a.jsxs)(i.aR,{children:[(0,a.jsx)(i.ZB,{children:"QuecWatch"}),(0,a.jsx)(i.BT,{children:"A watchdog feature catered for Quectel-AP modems"})]}),(0,a.jsx)(i.Wu,{children:(0,a.jsxs)("div",{className:"grid gap-8",children:[(0,a.jsxs)("div",{className:"grid gap-2",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center gap-x-4 rounded-lg border p-4",children:[(0,a.jsx)(d.J,{children:"QuecWatch Status"}),(0,a.jsx)("div",{className:"flex items-center space-x-1",children:"inactive"===u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(p,{className:"text-rose-500 size-4"}),(0,a.jsx)("p",{className:"text-muted-foreground text-sm",children:void 0!==t.currentRetries&&t.currentRetries>=t.maxRetries?"Max Retries Exhausted":"Inactive"})]}):"active"===u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(h,{className:"text-green-500 size-4"}),(0,a.jsx)("p",{className:"text-muted-foreground text-sm",children:"Active"})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(p,{className:"text-amber-500 size-4"}),(0,a.jsx)("p",{className:"text-muted-foreground text-sm",children:"Error"})]})})]}),(0,a.jsxs)("div",{className:"flex justify-between items-center gap-x-4 rounded-lg border p-4",children:[(0,a.jsx)(d.J,{children:"Remaining Retries"}),(0,a.jsxs)("p",{className:"text-muted-foreground text-sm",children:[t.currentRetries," / ",t.maxRetries]})]})]}),(0,a.jsxs)("div",{className:"grid grid-flow-row lg:grid-cols-2 grid-cols-1 gap-4",children:[(0,a.jsxs)("div",{className:"grid w-full items-center gap-1.5",children:[(0,a.jsx)(d.J,{htmlFor:"ping",children:"Ping Target"}),(0,a.jsx)(c.p,{id:"ping",placeholder:"8.8.8.8",value:t.pingTarget,disabled:"active"===u,readOnly:"active"===u,onChange:e=>r(t=>({...t,pingTarget:e.target.value}))})]}),(0,a.jsxs)("div",{className:"grid w-full items-center gap-1.5",children:[(0,a.jsx)(d.J,{htmlFor:"ping-interval",children:"Ping Interval"}),(0,a.jsxs)(n.l6,{value:t.pingInterval.toString(),disabled:"active"===u,onValueChange:e=>r(t=>({...t,pingInterval:parseInt(e)})),children:[(0,a.jsx)(n.bq,{id:"ping-interval",children:(0,a.jsx)(n.yv,{placeholder:"Select Ping Interval"})}),(0,a.jsx)(n.gC,{children:[1,3,5,10,15,30,60].map(e=>(0,a.jsxs)(n.eb,{value:e.toString(),children:[e," second",1!==e?"s":""]},e))})]})]}),(0,a.jsxs)("div",{className:"grid w-full items-center gap-1.5",children:[(0,a.jsx)(d.J,{htmlFor:"ping-failure",children:"Ping Failures"}),(0,a.jsxs)(n.l6,{value:t.pingFailures.toString(),disabled:"active"===u,onValueChange:e=>r(t=>({...t,pingFailures:parseInt(e)})),children:[(0,a.jsx)(n.bq,{id:"ping-failure",children:(0,a.jsx)(n.yv,{placeholder:"Select Ping Failures"})}),(0,a.jsx)(n.gC,{children:[1,3,5,10].map(e=>(0,a.jsxs)(n.eb,{value:e.toString(),children:[e," failure",1!==e?"s":""]},e))})]})]}),(0,a.jsxs)("div",{className:"grid w-full items-center gap-1.5",children:[(0,a.jsx)(d.J,{htmlFor:"max-retries",children:"Max Retries"}),(0,a.jsxs)(n.l6,{value:t.maxRetries.toString(),disabled:"active"===u,onValueChange:e=>r(t=>({...t,maxRetries:parseInt(e)})),children:[(0,a.jsx)(n.bq,{id:"max-retries",children:(0,a.jsx)(n.yv,{placeholder:"Select Max Retries"})}),(0,a.jsx)(n.gC,{children:[1,3,5,10].map(e=>(0,a.jsx)(n.eb,{value:e.toString(),children:e},e))})]})]})]}),(0,a.jsxs)("div",{className:"flex flex-row items-center justify-between rounded-lg border p-4",children:[(0,a.jsxs)("div",{className:"space-y-0.5 grid",children:[(0,a.jsx)(d.J,{className:"text-base",children:"Connection Refresh"}),(0,a.jsx)(d.J,{className:"text-sm font-normal text-muted-foreground",children:"Toggle the connection refresh for the modem to first attempt reconnecting to the network before restarting."})]}),(0,a.jsx)(o.d,{checked:t.connectionRefresh,disabled:"active"===u,onCheckedChange:e=>r(t=>({...t,connectionRefresh:e}))})]}),(0,a.jsxs)("div",{className:" rounded-lg border p-4 grid gap-y-6",children:[(0,a.jsxs)("div",{className:"flex flex-row items-center justify-between",children:[(0,a.jsxs)("div",{className:"space-y-0.5 grid",children:[(0,a.jsx)(d.J,{className:"text-base",children:"Auto SIM Failover"}),(0,a.jsx)(d.J,{className:"text-sm font-normal text-muted-foreground",children:"Auto SIM Failover will automatically switch to the next available SIM card when the current SIM card fails to connect to the network."})]}),(0,a.jsx)(o.d,{checked:t.autoSimFailover,disabled:"active"===u,onCheckedChange:e=>r(t=>({...t,autoSimFailover:e}))})]}),(0,a.jsxs)("div",{className:"grid w-full items-center gap-1.5",children:[(0,a.jsx)(d.J,{htmlFor:"sim-failover",children:"Schedule SIM Checking"}),(0,a.jsxs)(n.l6,{value:t.simFailoverSchedule.toString(),disabled:"active"===u,onValueChange:e=>r(t=>({...t,simFailoverSchedule:parseInt(e)})),children:[(0,a.jsx)(n.bq,{id:"sim-failover",className:"max-w-xs",children:(0,a.jsx)(n.yv,{placeholder:"Select SIM Checking Interval"})}),(0,a.jsxs)(n.gC,{children:[(0,a.jsx)(n.eb,{value:"1",children:"1 Minute"}),(0,a.jsx)(n.eb,{value:"5",children:"5 Minutes"}),(0,a.jsx)(n.eb,{value:"30",children:"30 Minutes"}),(0,a.jsx)(n.eb,{value:"60",children:"1 Hour"}),(0,a.jsx)(n.eb,{value:"360",children:"6 Hours"}),(0,a.jsx)(n.eb,{value:"720",children:"12 Hours"}),(0,a.jsx)(n.eb,{value:"1440",children:"24 Hours"})]})]})]})]}),(0,a.jsxs)("div",{className:"rounded-lg border p-4",children:[(0,a.jsx)(d.J,{className:"text-base",children:"Last Activity"}),(0,a.jsx)("p",{className:"text-sm text-muted-foreground mt-2",children:w})]}),v&&(0,a.jsx)("div",{className:"text-red-500 text-sm",children:v})]})}),(0,a.jsxs)(i.wL,{className:"flex gap-4",children:[(0,a.jsx)(l.$,{onClick:N,disabled:g||!t.pingTarget||"active"===u,children:g?"Enabling...":"Enable QuecWatch"}),"active"===u&&(0,a.jsx)(l.$,{variant:"destructive",onClick:S,disabled:g,children:g?"Disabling...":"Disable QuecWatch"})]})]})}},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>d,r:()=>o});var a=r(20475),s=r(20107),i=r(61837),n=r(29395),l=r(22250);let o=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=s.forwardRef((e,t)=>{let{className:r,variant:s,size:n,asChild:d=!1,...c}=e,u=d?i.DX:"button";return(0,a.jsx)(u,{className:(0,l.cn)(o({variant:s,size:n,className:r})),ref:t,...c})});d.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>o,Zp:()=>n,aR:()=>l,wL:()=>u});var a=r(20475),s=r(20107),i=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,i.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...s})});n.displayName="Card";let l=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,i.cn)("flex flex-col space-y-1.5 p-6",r),...s})});l.displayName="CardHeader";let o=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("h3",{ref:t,className:(0,i.cn)("font-semibold leading-none tracking-tight",r),...s})});o.displayName="CardTitle";let d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("p",{ref:t,className:(0,i.cn)("text-sm text-muted-foreground",r),...s})});d.displayName="CardDescription";let c=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,i.cn)("p-6 pt-0",r),...s})});c.displayName="CardContent";let u=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)("div",{ref:t,className:(0,i.cn)("flex items-center p-6 pt-0",r),...s})});u.displayName="CardFooter"},64219:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var a=r(20475),s=r(20107),i=r(22250);let n=s.forwardRef((e,t)=>{let{className:r,type:s,...n}=e;return(0,a.jsx)("input",{type:s,className:(0,i.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...n})});n.displayName="Input"},49153:(e,t,r)=>{"use strict";r.d(t,{J:()=>d});var a=r(20475),s=r(20107),i=r(73725),n=r(29395),l=r(22250);let o=(0,n.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(i.b,{ref:t,className:(0,l.cn)(o(),r),...s})});d.displayName=i.b.displayName},35601:(e,t,r)=>{"use strict";r.d(t,{TR:()=>f,bq:()=>u,eb:()=>g,gC:()=>m,l6:()=>o,s3:()=>d,yv:()=>c});var a=r(20475),s=r(20107),i=r(7197),n=r(32301),l=r(22250);let o=n.bL,d=n.YJ,c=n.WT,u=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsxs)(n.l9,{ref:t,className:(0,l.cn)("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",r),...o,children:[s,(0,a.jsx)(n.In,{asChild:!0,children:(0,a.jsx)(i.TBE,{className:"h-4 w-4 opacity-50"})})]})});u.displayName=n.l9.displayName;let p=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.PP,{ref:t,className:(0,l.cn)("flex cursor-default items-center justify-center py-1",r),...s,children:(0,a.jsx)(i.Mtm,{})})});p.displayName=n.PP.displayName;let h=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.wn,{ref:t,className:(0,l.cn)("flex cursor-default items-center justify-center py-1",r),...s,children:(0,a.jsx)(i.D3D,{})})});h.displayName=n.wn.displayName;let m=s.forwardRef((e,t)=>{let{className:r,children:s,position:i="popper",...o}=e;return(0,a.jsx)(n.ZL,{children:(0,a.jsxs)(n.UC,{ref:t,className:(0,l.cn)("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2","popper"===i&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",r),position:i,...o,children:[(0,a.jsx)(p,{}),(0,a.jsx)(n.LM,{className:(0,l.cn)("p-1","popper"===i&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:s}),(0,a.jsx)(h,{})]})})});m.displayName=n.UC.displayName;let f=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.JU,{ref:t,className:(0,l.cn)("px-2 py-1.5 text-sm font-semibold",r),...s})});f.displayName=n.JU.displayName;let g=s.forwardRef((e,t)=>{let{className:r,children:s,...o}=e;return(0,a.jsxs)(n.q7,{ref:t,className:(0,l.cn)("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r),...o,children:[(0,a.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,a.jsx)(n.VF,{children:(0,a.jsx)(i.Srz,{className:"h-4 w-4"})})}),(0,a.jsx)(n.p4,{children:s})]})});g.displayName=n.q7.displayName,s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(n.wv,{ref:t,className:(0,l.cn)("-mx-1 my-1 h-px bg-muted",r),...s})}).displayName=n.wv.displayName},22631:(e,t,r)=>{"use strict";r.d(t,{d:()=>N});var a=r(20475),s=r(20107),i=r(94521),n=r(74111),l=r(80938),o=r(81255),d=r(48543),c=r(26783),u=r(4589),p="Switch",[h,m]=(0,l.A)(p),[f,g]=h(p),x=s.forwardRef((e,t)=>{let{__scopeSwitch:r,name:l,checked:d,defaultChecked:c,required:p,disabled:h,value:m="on",onCheckedChange:g,form:x,...v}=e,[b,y]=s.useState(null),N=(0,n.s)(t,e=>y(e)),S=s.useRef(!1),k=!b||x||!!b.closest("form"),[R=!1,C]=(0,o.i)({prop:d,defaultProp:c,onChange:g});return(0,a.jsxs)(f,{scope:r,checked:R,disabled:h,children:[(0,a.jsx)(u.sG.button,{type:"button",role:"switch","aria-checked":R,"aria-required":p,"data-state":j(R),"data-disabled":h?"":void 0,disabled:h,value:m,...v,ref:N,onClick:(0,i.m)(e.onClick,e=>{C(e=>!e),k&&(S.current=e.isPropagationStopped(),S.current||e.stopPropagation())})}),k&&(0,a.jsx)(w,{control:b,bubbles:!S.current,name:l,value:m,checked:R,required:p,disabled:h,form:x,style:{transform:"translateX(-100%)"}})]})});x.displayName=p;var v="SwitchThumb",b=s.forwardRef((e,t)=>{let{__scopeSwitch:r,...s}=e,i=g(v,r);return(0,a.jsx)(u.sG.span,{"data-state":j(i.checked),"data-disabled":i.disabled?"":void 0,...s,ref:t})});b.displayName=v;var w=e=>{let{control:t,checked:r,bubbles:i=!0,...n}=e,l=s.useRef(null),o=(0,d.Z)(r),u=(0,c.X)(t);return s.useEffect(()=>{let e=l.current,t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(o!==r&&t){let a=new Event("click",{bubbles:i});t.call(e,r),e.dispatchEvent(a)}},[o,r,i]),(0,a.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...n,tabIndex:-1,ref:l,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})};function j(e){return e?"checked":"unchecked"}var y=r(22250);let N=s.forwardRef((e,t)=>{let{className:r,...s}=e;return(0,a.jsx)(x,{className:(0,y.cn)("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",r),...s,ref:t,children:(0,a.jsx)(b,{className:(0,y.cn)("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})})});N.displayName=x.displayName},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>p,oR:()=>u});var a=r(20107);let s=0,i=new Map,n=e=>{if(i.has(e))return;let t=setTimeout(()=>{i.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);i.set(e,t)},l=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?n(r):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},o=[],d={toasts:[]};function c(e){d=l(d,e),o.forEach(e=>{e(d)})}function u(e){let{...t}=e,r=(s=(s+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>c({type:"DISMISS_TOAST",toastId:r});return c({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||a()}}}),{id:r,dismiss:a,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function p(){let[e,t]=a.useState(d);return a.useEffect(()=>(o.push(t),()=>{let e=o.indexOf(t);e>-1&&o.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>i});var a=r(64901),s=r(868);function i(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.d(t,{A:()=>o});var a=r(20107);let s=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),i=function(){for(var e=arguments.length,t=Array(e),r=0;r!!e&&r.indexOf(e)===t).join(" ")};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,a.forwardRef)((e,t)=>{let{color:r="currentColor",size:s=24,strokeWidth:l=2,absoluteStrokeWidth:o,className:d="",children:c,iconNode:u,...p}=e;return(0,a.createElement)("svg",{ref:t,...n,width:s,height:s,stroke:r,strokeWidth:o?24*Number(l)/Number(s):l,className:i("lucide",d),...p},[...u.map(e=>{let[t,r]=e;return(0,a.createElement)(t,r)}),...Array.isArray(c)?c:[c]])}),o=(e,t)=>{let r=(0,a.forwardRef)((r,n)=>{let{className:o,...d}=r;return(0,a.createElement)(l,{ref:n,iconNode:t,className:i("lucide-".concat(s(e)),o),...d})});return r.displayName="".concat(e),r}}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,1617,4673,5011,1457,191,6035,7358],()=>t(30076)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-276663d2fd50ba09.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-276663d2fd50ba09.js deleted file mode 100644 index ff68df4..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-276663d2fd50ba09.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6665],{31710:(e,s,l)=>{Promise.resolve().then(l.bind(l,88954))},88954:(e,s,l)=>{"use strict";l.r(s),l.d(s,{default:()=>eQ});var t=l(20475),n=l(20107),r=l(32857),i=l(72167),a=l(36760),d=l(45934);let o=e=>{let{data:s,isLoading:l}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Sim Card"}),(0,t.jsx)(i.BT,{children:"Sim card information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Sim Card Slot in Use"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[50px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.slot})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Sim Card State"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.simCard.state)==="Inserted"?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.simCard.state})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Provider"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.provider})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Phone Number"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.phoneNumber})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"IMSI"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.imsi})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"ICCID"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.iccid})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"IMEI"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.imei})]})]})]})},c={6:"1.4 MHz",15:"3 MHz",25:"5 MHz",50:"10 MHz",75:"15 MHz",100:"20 MHz"},u={0:"5 MHz",1:"10 MHz",2:"15 MHz",3:"20 MHz",4:"25 MHz",5:"30 MHz",6:"40 MHz",7:"50 MHz",8:"60 MHz",9:"70 MHz",10:"80 MHz",11:"90 MHz",12:"100 MHz",13:"200 MHz",14:"400 MHz",15:"35 MHz",16:"45 MHz"},m={2:"UTRAN",4:"HSDPA",5:"HSUPA",6:"HSDPA & HSUPA",7:"E-UTRAN",10:"E-UTRAN - 5GCN",11:"NR - 5GCN",12:"NG-RAN",13:"E-UTRAN-NR Dual"},x=e=>m[e]||"Unknown",p=e=>{let{data:s,isLoading:l,dataConnectionState:n,connectionStateLoading:r}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Connection"}),(0,t.jsx)(i.BT,{children:"Connection information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"APN"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:null==s?void 0:s.connection.apn})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Operator State"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.connection.operatorState)==="Unknown"||(null==s?void 0:s.connection.operatorState)==="Denied"?"bg-rose-500 hover:bg-rose-800":"bg-emerald-500 hover:bg-emerald-800"),children:null==s?void 0:s.connection.operatorState})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Functionality State"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.connection.functionalityState)==="Enabled"?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.connection.functionalityState})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Data Connection State"}),r?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat("Connected"===n?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:n})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Network Type"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:null==s?void 0:s.connection.networkType})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Modem Temperature"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:null==s?void 0:s.connection.modemTemperature})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Access Technology"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:(null==s?void 0:s.connection.accessTechnology)?x(s.connection.accessTechnology):"Unknown"})]})]})]})},h=e=>{let{data:s,isLoading:l,bytesSent:n,bytesReceived:r}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Data Transmission"}),(0,t.jsx)(i.BT,{children:"Data transmission information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Carrier Aggregation"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.dataTransmission.carrierAggregation)==="Multi"?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.dataTransmission.carrierAggregation})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Bandwidth"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.dataTransmission.bandwidth})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Connected Bands"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.dataTransmission.connectedBands})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Signal Strength"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.dataTransmission.signalStrength)&&parseInt(null==s?void 0:s.dataTransmission.signalStrength)>80?"bg-emerald-500 hover:bg-emerald-800":(null==s?void 0:s.dataTransmission.signalStrength)&&parseInt(null==s?void 0:s.dataTransmission.signalStrength)>40?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.dataTransmission.signalStrength})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"MIMO Layers"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.dataTransmission.mimoLayers})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Bytes Sent"}),(0,t.jsx)("p",{className:"font-bold",children:n})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Bytes Received"}),(0,t.jsx)("p",{className:"font-bold",children:r})]})]})]})},f=e=>{let{data:s,isLoading:l}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Cellular Information"}),(0,t.jsx)(i.BT,{children:"Cellular network information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Cell ID"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.cellId})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"TAC"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.trackingAreaCode})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Physical Cell IDs"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.physicalCellId})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"E/ARFCN"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.earfcn})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Mobile Country Code"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.mcc})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Mobile Network Code"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.mnc})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Signal Quality"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)(d.E,{className:"\n font-bold ".concat((null==s?void 0:s.cellularInfo.signalQuality)&&parseInt(null==s?void 0:s.cellularInfo.signalQuality)>80?"bg-emerald-500 hover:bg-emerald-800":(null==s?void 0:s.cellularInfo.signalQuality)&&parseInt(null==s?void 0:s.cellularInfo.signalQuality)>40?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.cellularInfo.signalQuality})]})]})]})};var v=l(1307),g=l(78327),j=l(94005),N=l(4538),w=l(96399);let b={signal:{label:"LTE/5G Signal Metrics"},rsrp:{label:"RSRP",color:"hsl(var(--chart-1))"},rsrq:{label:"RSRQ",color:"hsl(var(--chart-2))"},sinr:{label:"SINR",color:"hsl(var(--chart-3))"}},y=e=>{let s=e.split("\n").filter(e=>e.trim()),l=[];s.forEach(e=>{let s=e.match(/-?\d+/g);s&&l.push(...s.map(Number))});let t=l.filter(e=>-140!==e&&-32768!==e);return 0===t.length?0:Math.round(t.reduce((e,s)=>e+s,0)/t.length)},S=()=>{let[e,s]=(0,n.useState)([]),[l,r]=(0,n.useState)("rsrp"),[d,o]=(0,n.useState)(!0),[c,u]=(0,n.useState)(null),m=(0,n.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/home/fetch_signal_metrics.sh");if(!e.ok)throw Error("Failed to fetch signal metrics");let l=await e.json(),t=Math.min(l.rsrp.length,l.rsrq.length,l.sinr.length),n=Array.from({length:t},(e,s)=>({time:l.rsrp[s].datetime,rsrp:y(l.rsrp[s].output),rsrq:y(l.rsrq[s].output),sinr:y(l.sinr[s].output)}));s(n),u(null)}catch(e){console.error("Error fetching metrics:",e),u(e instanceof Error?e.message:"An unknown error occurred"),s([])}finally{o(!1)}},[]);(0,n.useEffect)(()=>{m();let e=setInterval(m,15e3);return()=>clearInterval(e)},[m]);let x=e.length>0?e[e.length-1]:{rsrp:0,rsrq:0,sinr:0};return c?(0,t.jsx)(i.Zp,{children:(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Error Loading Signal Metrics"}),(0,t.jsx)(i.BT,{children:c})]})}):(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{className:"flex flex-col items-stretch space-y-0 border-b p-0 sm:flex-row",children:[(0,t.jsxs)("div",{className:"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6",children:[(0,t.jsx)(i.ZB,{children:"Signal Metrics"}),(0,t.jsx)(i.BT,{children:"Realtime LTE/5G Signal performance"})]}),(0,t.jsx)("div",{className:"flex",children:["rsrp","rsrq","sinr"].map(e=>(0,t.jsxs)("button",{"data-active":l===e,className:"flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-l sm:border-t-0 sm:px-8 sm:py-6",onClick:()=>r(e),children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:b[e].label}),d?(0,t.jsx)(a.E,{className:"lg:h-10 h-6 w-full"}):(0,t.jsx)("span",{className:"text-base font-bold leading-none sm:text-3xl",children:x[e].toFixed(0)})]},e))})]}),(0,t.jsx)(i.Wu,{className:"px-2 sm:p-6",children:(0,t.jsx)(v.at,{config:b,className:"aspect-auto h-[250px] w-full",children:(0,t.jsxs)(g.b,{accessibilityLayer:!0,data:e,margin:{left:12,right:12},children:[(0,t.jsx)(j.d,{vertical:!1}),(0,t.jsx)(N.W,{dataKey:"time",tickLine:!1,axisLine:!1,tickMargin:8,minTickGap:32,tickFormatter:e=>new Date(e).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0})}),(0,t.jsx)(v.II,{content:(0,t.jsx)(v.Nt,{className:"w-[200px]",nameKey:"metric",labelFormatter:e=>new Date(e).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0})})}),(0,t.jsx)(w.N,{dataKey:l,type:"monotone",stroke:"var(--color-".concat(l,")"),strokeWidth:2,dot:!1})]})})}),(0,t.jsxs)(i.wL,{className:"flex-col items-start gap-2 text-sm",children:[(0,t.jsx)("div",{className:"flex gap-2 font-medium leading-none",children:"The tabs show the combined average value for LTE and 5G metrics."}),(0,t.jsx)("div",{className:"leading-none text-muted-foreground italic",children:"The higher the value, the better the signal quality."})]})]})},k=e=>{if("Unknown!"===e)return"-";let s=e.match(/(\d+)/);if(!s)return e;let l=parseInt(s[1],10);return l>=1e3?"".concat(l/1e3).concat((e.includes("Gb"),"Gb/s")):"".concat(l).concat((e.includes("Mb"),"Mb/s"))},E=()=>{let[e,s]=(0,n.useState)({link_status:"Loading...",link_speed:"Loading...",auto_negotiation:"Loading..."}),[l,r]=(0,n.useState)(!0),[d,o]=(0,n.useState)(null);return((0,n.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/home/fetch_hw_details.sh?type=eth",{method:"GET",cache:"no-store",headers:{"Content-Type":"application/json"}});if(!e.ok)throw Error("Network response was not ok");let l=await e.json();s(l),r(!1)}catch(e){o("Failed to fetch Ethernet information"),r(!1)}})()},[]),d)?(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Ethernet"})}),(0,t.jsx)(i.Wu,{className:"flex items-center justify-center",children:(0,t.jsx)("div",{className:"text-red-500",children:d})})]}):(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Ethernet"})}),(0,t.jsx)(i.Wu,{children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-3 grid-cols-2 grid-flow-row gap-4 col-span-3",children:[(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Link Status"}),(0,t.jsx)("span",{className:"text-base font-bold",children:l?(0,t.jsx)(a.E,{className:"h-8 w-full"}):"yes"===e.link_status?"Active":"Inactive"})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Link Speed"}),(0,t.jsx)("span",{className:"text-base font-bold",children:l?(0,t.jsx)(a.E,{className:"h-8 w-full"}):k(e.link_speed)})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Auto-negotiation"}),(0,t.jsx)("span",{className:"text-base font-bold",children:l?(0,t.jsx)(a.E,{className:"h-8 w-full"}):"on"===e.auto_negotiation?"Active":"Inactive"})]})]})})]})},A=e=>"".concat(Math.round(e/1048576)," MB"),C=()=>{let[e,s]=(0,n.useState)({total:0,used:0,available:0}),[l,r]=(0,n.useState)(!0);return(0,n.useEffect)(()=>{let e=async()=>{try{let e=await fetch("/cgi-bin/home/fetch_hw_details.sh?type=memory",{method:"GET",cache:"no-store",headers:{"Content-Type":"application/json"}});if(!e.ok)throw Error("Network response was not ok");let t=await e.json();s(t),l&&r(!1)}catch(e){console.error("Failed to fetch memory information"),l&&r(!1)}};e();let t=setInterval(e,2e3);return()=>clearInterval(t)},[l]),(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Memory"})}),(0,t.jsx)(i.Wu,{children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-3 grid-cols-2 grid-flow-row gap-4 col-span-3",children:[(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Total"}),l?(0,t.jsx)(a.E,{className:"h-6 w-24"}):(0,t.jsx)("span",{className:"text-base font-bold",children:A(e.total)})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Used"}),l?(0,t.jsx)(a.E,{className:"h-6 w-24"}):(0,t.jsx)("span",{className:"text-base font-bold",children:A(e.used)})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Available"}),l?(0,t.jsx)(a.E,{className:"h-6 w-24"}):(0,t.jsx)("span",{className:"text-base font-bold",children:A(e.available)})]})]})})]})},R={ms:{label:"ms",color:"hsl(var(--chart-4))"}},T=()=>new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"}),I=()=>{let[e,s]=(0,n.useState)(()=>{let e=localStorage.getItem("pingData");return e?JSON.parse(e):[]}),[l,r]=(0,n.useState)(!0);return(0,n.useEffect)(()=>{let t=async()=>{try{let t=await fetch("/cgi-bin/home/ping_latency.sh",{method:"GET",cache:"no-store",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error("Network response was not ok");let n=await t.json(),i={time:T(),ms:n.latency},a=[...e,i].slice(-5);s(a),localStorage.setItem("pingData",JSON.stringify(a)),l&&r(!1)}catch(e){console.error("Failed to fetch ping latency",e),l&&r(!1)}};t();let n=setInterval(t,6e4);return()=>clearInterval(n)},[l,e]),(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Ping Latency"})}),(0,t.jsx)(i.Wu,{children:(0,t.jsx)(v.at,{config:R,children:(0,t.jsxs)(g.b,{accessibilityLayer:!0,data:e,margin:{left:12,right:12},children:[(0,t.jsx)(j.d,{vertical:!1}),(0,t.jsx)(N.W,{dataKey:"time",tickLine:!1,axisLine:!1,tickMargin:8,tickFormatter:e=>e}),(0,t.jsx)(v.II,{cursor:!1,content:(0,t.jsx)(v.Nt,{hideLabel:!0})}),(0,t.jsx)(w.N,{dataKey:"ms",type:"natural",stroke:"var(--color-ms)",strokeWidth:2,dot:!1})]})})})]})};var U=l(42541),M=l(93557),B=l(97801),D=l(14389),L=l(98969),z=l(17799),G=l(43719),_=l.n(G),P=l(7197),F=l(74043),H=l(22250);let Z=n.createContext(null);function O(){let e=n.useContext(Z);if(!e)throw Error("useCarousel must be used within a ");return e}let W=n.forwardRef((e,s)=>{let{orientation:l="horizontal",opts:r,setApi:i,plugins:a,className:d,children:o,...c}=e,[u,m]=(0,F.A)({...r,axis:"horizontal"===l?"x":"y"},a),[x,p]=n.useState(!1),[h,f]=n.useState(!1),v=n.useCallback(e=>{e&&(p(e.canScrollPrev()),f(e.canScrollNext()))},[]),g=n.useCallback(()=>{null==m||m.scrollPrev()},[m]),j=n.useCallback(()=>{null==m||m.scrollNext()},[m]),N=n.useCallback(e=>{"ArrowLeft"===e.key?(e.preventDefault(),g()):"ArrowRight"===e.key&&(e.preventDefault(),j())},[g,j]);return n.useEffect(()=>{m&&i&&i(m)},[m,i]),n.useEffect(()=>{if(m)return v(m),m.on("reInit",v),m.on("select",v),()=>{null==m||m.off("select",v)}},[m,v]),(0,t.jsx)(Z.Provider,{value:{carouselRef:u,api:m,opts:r,orientation:l||((null==r?void 0:r.axis)==="y"?"vertical":"horizontal"),scrollPrev:g,scrollNext:j,canScrollPrev:x,canScrollNext:h},children:(0,t.jsx)("div",{ref:s,onKeyDownCapture:N,className:(0,H.cn)("relative",d),role:"region","aria-roledescription":"carousel",...c,children:o})})});W.displayName="Carousel";let Q=n.forwardRef((e,s)=>{let{className:l,...n}=e,{carouselRef:r,orientation:i}=O();return(0,t.jsx)("div",{ref:r,className:"overflow-hidden",children:(0,t.jsx)("div",{ref:s,className:(0,H.cn)("flex","horizontal"===i?"-ml-4":"-mt-4 flex-col",l),...n})})});Q.displayName="CarouselContent";let q=n.forwardRef((e,s)=>{let{className:l,...n}=e,{orientation:r}=O();return(0,t.jsx)("div",{ref:s,role:"group","aria-roledescription":"slide",className:(0,H.cn)("min-w-0 shrink-0 grow-0 basis-full","horizontal"===r?"pl-4":"pt-4",l),...n})});q.displayName="CarouselItem";let K=n.forwardRef((e,s)=>{let{className:l,variant:n="outline",size:r="icon",...i}=e,{orientation:a,scrollPrev:d,canScrollPrev:o}=O();return(0,t.jsxs)(U.$,{ref:s,variant:n,size:r,className:(0,H.cn)("absolute h-8 w-8 rounded-full","horizontal"===a?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",l),disabled:!o,onClick:d,...i,children:[(0,t.jsx)(P.A60,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Previous slide"})]})});K.displayName="CarouselPrevious";let $=n.forwardRef((e,s)=>{let{className:l,variant:n="outline",size:r="icon",...i}=e,{orientation:a,scrollNext:d,canScrollNext:o}=O();return(0,t.jsxs)(U.$,{ref:s,variant:n,size:r,className:(0,H.cn)("absolute h-8 w-8 rounded-full","horizontal"===a?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",l),disabled:!o,onClick:d,...i,children:[(0,t.jsx)(P.flY,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Next slide"})]})});$.displayName="CarouselNext";let V=e=>{let{id:s,bandNumber:l,earfcn:n,bandwidth:r,pci:a,rsrp:o,rsrq:c,sinr:u}=e;return(0,t.jsx)(i.Zp,{className:"p-8",children:(0,t.jsxs)("div",{className:"flex flex-row items-center gap-6 justify-between",children:[(0,t.jsxs)("div",{className:"grid gap-2 w-[180px]",children:[(0,t.jsx)("h2",{className:"text-md font-bold",children:"Band"}),(0,t.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[l.replace("LTE BAND ","B").replace("NR5G BAND ","N"),l.includes("NR5G")&&(0,t.jsx)(d.E,{className:"text-xs bg-blue-600 hover:bg-blue-800",children:"NR 5G"})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"E/ARFCN"}),(0,t.jsx)("p",{children:n})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"Bandwidth"}),(0,t.jsx)("p",{children:r})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"Physical Cell ID"}),(0,t.jsx)("p",{children:a})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"RSRP"}),(0,t.jsxs)(d.E,{className:parseInt(o)>=-80?"bg-emerald-500 hover:bg-emerald-800":parseInt(o)>=-100?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[o," dBm"]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"RSRQ"}),(0,t.jsxs)(d.E,{className:10>=parseInt(c)?"bg-emerald-500 hover:bg-emerald-800":20>=parseInt(c)?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[c," dB"]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"SINR"}),(0,t.jsxs)(d.E,{className:parseInt(u)>=20?"bg-emerald-500 hover:bg-emerald-800":parseInt(u)>=0?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[u," dB"]})]})]})})},J=e=>{let{bands:s,isLoading:l}=e;return l?(0,t.jsxs)("div",{className:"flex items-center justify-center",children:[(0,t.jsx)("div",{className:"hidden lg:block w-full",children:(0,t.jsxs)(i.Zp,{className:"p-6 grid gap-4",children:[s&&s.map(e=>(0,t.jsx)(V,{...e},e.id)),(0,t.jsx)(i.wL,{className:"w-full p-6 flex items-center justify-center",children:(0,t.jsx)(i.BT,{className:"text-md",children:"Currently bands connected."})})]})}),(0,t.jsx)(W,{className:"lg:hidden w-full max-w-xs",children:(0,t.jsx)(Q,{children:(0,t.jsx)(q,{children:(0,t.jsx)("div",{className:"p-1",children:(0,t.jsx)(i.Zp,{children:(0,t.jsxs)(i.Wu,{className:"aspect-square p-4 gap-4 flex flex-col items-center justify-center flex-grow",children:[(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Band"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"E/ARFCN"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Bandwidth"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"PCI"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRP"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-32 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRQ"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-32 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"SINR"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-32 h-4"})})]})]})})})})})})]}):(0,t.jsxs)("div",{className:"flex items-center justify-center",children:[(0,t.jsx)("div",{className:"hidden lg:block w-full",children:(0,t.jsxs)(i.Zp,{className:"p-6 grid gap-4",children:[s&&s.map(e=>(0,t.jsx)(V,{...e},e.id)),(0,t.jsx)(i.wL,{className:"w-full p-6 flex items-center justify-center",children:(0,t.jsx)(i.BT,{className:"text-md",children:"Current bands connected."})})]})}),(0,t.jsxs)(W,{className:"lg:hidden w-full max-w-xs",children:[(0,t.jsx)(Q,{children:null==s?void 0:s.map(e=>(0,t.jsx)(q,{className:"md:basis-1/2 lg:basis-1/3",children:(0,t.jsx)("div",{className:"p-1",children:(0,t.jsx)(i.Zp,{children:(0,t.jsxs)(i.Wu,{className:"aspect-square p-4 gap-4 flex flex-col items-center justify-center flex-grow",children:[(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Band"}),(0,t.jsx)("p",{children:e.bandNumber})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"E/ARFCN"}),(0,t.jsx)("p",{children:e.earfcn})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Bandwidth"}),(0,t.jsx)("p",{children:e.bandwidth})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"PCI"}),(0,t.jsx)("p",{children:e.pci})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRP"}),(0,t.jsxs)(d.E,{className:parseInt(e.rsrp)>=-80?"bg-emerald-500 hover:bg-emerald-800":parseInt(e.rsrp)>=-100?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[e.rsrp," dBm"]})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRQ"}),(0,t.jsxs)(d.E,{className:10>=parseInt(e.rsrq)?"bg-emerald-500 hover:bg-emerald-800":20>=parseInt(e.rsrq)?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[e.rsrq," dB"]})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"SINR"}),(0,t.jsxs)(d.E,{className:parseInt(e.sinr)>=20?"bg-emerald-500 hover:bg-emerald-800":parseInt(e.sinr)>=0?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[e.sinr," dB"]})]})]})})})},e.id))}),(0,t.jsx)(K,{}),(0,t.jsx)($,{})]})]})},Y=(e,s)=>{var l,t,n,r;switch((null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[1].trim())||(null===(r=s.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[1].trim())){case"1":return"Registered";case"2":return"Searching";case"3":return"Denied";case"4":return"Unknown";case"5":return"Roaming";default:return"Not Registered"}},X=e=>{let s=e.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g),l=null==s?void 0:s.some(e=>e.includes("LTE")),t=null==s?void 0:s.some(e=>e.includes("NR5G"));return l&&t?"NR5G-NSA":l?"LTE":t?"NR5G-SA":"No Signal"},ee=e=>{let s=["cpuss-0","cpuss-1","cpuss-2","cpuss-3"].map(s=>{var l;let t=e.split("\n").find(e=>e.includes(s));return parseInt(null==t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[1].replace(/"/g,"").trim())}),l=s.reduce((e,s)=>e+s,0)/s.length;return"".concat(Math.round(l),"\xb0C")},es=(e,s)=>{var l;let t=e.split("\n").find(e=>e.includes("PCC"));t=null==t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[2].trim();let n=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("LTE"));n=n.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2].trim()});let r=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));if(r=r.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2].trim()}),"LTE"===s)return!n.length&&t?c[t]||"Unknown":[t?c[t]:"",...n.map(e=>c[e])].join(", ");if("NR5G-SA"===s&&t)return r.length?[u[t],...r.map(e=>u[e])].join(", "):u[t]||"Unknown";if("NR5G-NSA"===s&&t)return n.length||r.length?n.length&&!r.length?[c[t],...n.map(e=>c[e])].join(", "):[c[t],...n.map(e=>c[e]),...r.map(e=>u[e])].join(", "):c[t]||"Unknown";return"Unknown"},el=e=>{let s=e.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g);return(null==s?void 0:s.map(e=>e.includes("LTE")?"B".concat(e.match(/\d+/)):e.includes("NR5G")?"N".concat(null==e?void 0:e.split(" ")[2].replace(/"/g,"").trim()):void 0).join(", "))||"Unknown"},et=e=>{var s,l;let t=e.split("\n").find(e=>e.includes("LTE")),n=e.split("\n").find(e=>e.includes("NR5G")),r=[],i=[];if(t&&(r=null==t?void 0:null===(s=t.split(":")[1])||void 0===s?void 0:s.split(",").slice(0,4).map(e=>parseInt(e.trim()))),n&&(i=null==n?void 0:null===(l=n.split(":")[1])||void 0===l?void 0:l.split(",").slice(0,4).map(e=>parseInt(e.trim()))),r=r.filter(e=>-140!==e&&-37625!==e),i=i.filter(e=>-140!==e&&-37625!==e),r.length){if(i.length){let e=r.reduce((e,s)=>e+s,0)/r.length,s=i.reduce((e,s)=>e+s,0)/i.length,l=Math.max(0,Math.min(100,(e+125)/50*100)),t=Math.max(0,Math.min(100,(s+125)/50*100));return"".concat(Math.round((l+t)/2),"%")}{let e=Math.max(0,Math.min(100,(r.reduce((e,s)=>e+s,0)/r.length+125)/50*100));return"".concat(Math.round(e),"%")}}if(!i.length)return"Unknown%";{let e=Math.max(0,Math.min(100,(i.reduce((e,s)=>e+s,0)/i.length+125)/50*100));return"".concat(Math.round(e),"%")}},en=(e,s)=>{var l,t,n,r;return"NR5G-SA"===s||"LTE"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[6].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[4].trim():"Unknown"},er=(e,s)=>{var l,t,n,r,i,a;return"NR5G-SA"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[8].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[10].trim():"LTE"===s?null===(a=e.split("\n")[1])||void 0===a?void 0:null===(i=a.split(":")[1])||void 0===i?void 0:i.split(",")[12].trim():"Unknown"},ei=(e,s)=>{var l,t;if("LTE"===s||"NR5G-NSA"===s){let t=e.split("\n").find(e=>e.includes("PCC"));t=null==t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[5].trim();let n=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("LTE"));n=n.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5].trim()});let r=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));return(r=r.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[4].trim()}),n.length||r.length)?"LTE"===s?[t,...n].join(", "):[t,...n,...r].join(", "):t}if("NR5G-SA"===s){let s=e.split("\n").find(e=>e.includes("PCC"));s=null==s?void 0:null===(t=s.split(":")[1])||void 0===t?void 0:t.split(",")[4].trim();let l=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));return(l=l.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5].trim()})).length?[s,...l].join(", "):s}},ea=e=>{var s;let l=e.split("\n").find(e=>e.includes("PCC"));l=null==l?void 0:null===(s=l.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim();let t=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("LTE"));t=t.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim()});let n=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));return(n=n.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim()}),!l||t.length||n.length)?l&&t.length&&!n.length?[l,...t].join(", "):l&&!t.length&&n.length?[l,...n].join(", "):l&&t.length&&n.length?[l,...t,...n].join(", "):"Unknown":l},ed=(e,s)=>{var l,t,n,r;return"LTE"===s||"NR5G-SA"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[4].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[2].trim():"Unknown"},eo=(e,s)=>{var l,t,n,r;return"LTE"===s||"NR5G-SA"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[5].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[3].trim():void 0},ec=e=>{let s=e.split("\n"),l=s.find(e=>e.includes("LTE")),t=s.find(e=>e.includes("NR5G")),n=e=>{var s;return e?null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",").slice(0,4).map(e=>parseInt(e.trim())).filter(e=>-140!==e&&-37625!==e):[]},r=e=>e.length?Math.max(0,Math.min(100,(e.reduce((e,s)=>e+s,0)/e.length- -10)/40*100)):0,i=n(l),a=n(t),d=r(i),o=r(a);return i.length&&a.length?"".concat(Math.round((d+o)/2),"%"):i.length?"".concat(Math.round(d),"%"):a.length?"".concat(Math.round(o),"%"):"Unknown%"},eu=e=>{let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND"));return s.length&&l.length?[...s,...l].map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[3].replace(/"/g,"")}):s.length?s.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[3].replace(/"/g,"")}):l.length?l.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[3].replace(/"/g,"")}):["Unknown"]},em=e=>{let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND"));return s.length&&l.length?[...s,...l].map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1]}):s.length?s.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1]}):l.length?l.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1]}):["Unknown"]},ex=e=>{let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND")),t=s.map(e=>{var s;return c[null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2]]}),n=l.map(e=>{var s;return u[null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2]]});return t.length&&n.length?[...t,...n]:t.length?t:n.length?n:["Unknown"]},ep=(e,s)=>{if("LTE"===s||"NR5G-SA"===s){var l;let s=e.split("\n").find(e=>e.includes("PCC"));s=s?null==s?void 0:null===(l=s.split(":")[1])||void 0===l?void 0:l.split(",")[4].trim():"Unknown";let t=e.split("\n").filter(e=>e.includes("BAND"));return t.length?[s,...t.map(e=>{var s;return(null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5])||"Unknown"})]:[s]}if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND"));return[...s.map(e=>{var s;return(null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5])||"Unknown"}),...l.map(e=>{var s;return(null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[4])||"Unknown"})]}return["Unknown"]},eh=(e,s,l)=>{if("LTE"===s)return e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[6]});if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[6]}),t=l.split("\n").filter(e=>e.includes("NR5G-NSA")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[4]});return s.length&&t.length?[...s,...t]:s.length?s:t.length?t:["Unknown"]}if("NR5G-SA"===s){let e=l.split("\n").find(e=>e.includes("NR5G-SA"));if(e){var t;return[null==e?void 0:null===(t=e.split(":")[1])||void 0===t?void 0:t.split(",")[12]]}}return["Unknown"]},ef=(e,s,l)=>{if("LTE"===s)return e.split("\n").filter(e=>e.includes("BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[7]});if("NR5G-SA"===s){var t;let e=l.split("\n").find(e=>e.includes("NR5G-SA"));return e?[null==e?void 0:null===(t=e.split(":")[1])||void 0===t?void 0:t.split(",")[13]]:["Unknown"]}if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[7]}),t=l.split("\n").filter(e=>e.includes("NR5G-NSA")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[6]});if(s.length&&t.length)return[...s,...t];if(s.length)return s;if(t.length)return t}return["Unknown"]},ev=(e,s,l)=>{if("LTE"===s)return e.split("\n").filter(e=>e.includes("BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[9]});if("NR5G-SA"===s){var t;let e=l.split("\n").find(e=>e.includes("NR5G-SA"));return e?[null==e?void 0:null===(t=e.split(":")[1])||void 0===t?void 0:t.split(",")[14]]:["Unknown"]}if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[9]}),t=l.split("\n").filter(e=>e.includes("NR5G-NSA")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5]});if(s.length&&t.length)return[...s,...t];if(s.length)return s;if(t.length)return t}return["Unknown"]},eg=e=>{var s,l;let t=[-32768,-140],n=e.split("\n").find(e=>e.includes("LTE")),r=e.split("\n").find(e=>e.includes("NR5G")),i=[],a=[];return(n&&(i=null==n?void 0:null===(s=n.split(":")[1])||void 0===s?void 0:s.split(",").slice(0,4).map(e=>parseInt(e.trim()))),r&&(a=null==r?void 0:null===(l=r.split(":")[1])||void 0===l?void 0:l.split(",").slice(0,4).map(e=>parseInt(e.trim()))),i=i.filter(e=>!t.includes(e)),a=a.filter(e=>!t.includes(e)),i.length)?a.length?"LTE ".concat(i.length.toString()," / NR ").concat(a.length.toString()):"LTE ".concat(i.length.toString()):a.length?"NR ".concat(a.length.toString()):"Unknown"},ej=()=>{let[e,s]=(0,n.useState)(null),[l,t]=(0,n.useState)(!0),[r,i]=(0,n.useState)(null),a=(0,n.useCallback)(async()=>{try{var e,l,t,n,r,a,d,o,c,u,m,x,p,h,f,v;let i=await fetch("/cgi-bin/fetch_data.sh?set=1"),g=await i.json();console.log(g);let j={simCard:{slot:(null===(e=g[0].response.split("\n")[1])||void 0===e?void 0:e.split(":")[1].trim())||"Unknown",state:g[6].response.match("READY")?"Inserted":"Not Inserted",provider:(null===(t=g[2].response.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[2].replace(/"/g,"").trim())||"Unknown",phoneNumber:(null===(r=g[1].response.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[1].replace(/"/g,"").trim())||"Unknown",imsi:g[3].response.split("\n")[1].trim()||"Unknown",iccid:(null===(a=g[4].response.split("\n")[1])||void 0===a?void 0:a.split(":")[1].trim())||"Unknown",imei:g[5].response.split("\n")[1].trim()||"Unknown"},connection:{apn:(null===(o=g[7].response.split("\n")[1])||void 0===o?void 0:null===(d=o.split(":")[1])||void 0===d?void 0:d.split(",")[2].replace(/"/g,"").trim())||(null===(u=g[12].response.split("\n")[1])||void 0===u?void 0:null===(c=u.split(":")[1])||void 0===c?void 0:c.split(",")[2].replace(/"/g,"").trim())||"Unknown",operatorState:Y(g[8].response,g[16].response)||"Unknown",functionalityState:(null===(m=g[9].response.split("\n")[1])||void 0===m?void 0:m.split(":")[1].trim())==="1"?"Enabled":"Disabled",networkType:X(g[13].response)||"No Signal",modemTemperature:ee(g[11].response)||"Unknown",accessTechnology:(null===(p=g[2].response.split("\n")[1])||void 0===p?void 0:null===(x=p.split(":")[1])||void 0===x?void 0:x.split(",")[3].trim())||"Unknown"},dataTransmission:{carrierAggregation:(null===(h=g[13].response.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g))||void 0===h?void 0:h.length)>1?"Multi":"Inactive",bandwidth:es(g[13].response,X(g[13].response))||"Unknown",connectedBands:el(g[13].response)||"Unknown",signalStrength:et(g[14].response)||"Unknown",mimoLayers:eg(g[14].response)||"Unknown"},cellularInfo:{cellId:en(g[10].response,X(g[13].response))||"Unknown",trackingAreaCode:er(g[10].response,X(g[13].response))||"Unknown",physicalCellId:ei(g[13].response,X(g[13].response)),earfcn:ea(g[13].response),mcc:ed(g[10].response,X(g[13].response))||"Unknown",mnc:eo(g[10].response,X(g[13].response))||"Unknown",signalQuality:ec(g[19].response)||"Unknown"},currentBands:{id:Array.from({length:null!==(v=null===(f=eu(g[13].response))||void 0===f?void 0:f.length)&&void 0!==v?v:0},(e,s)=>s+1)||[1],bandNumber:eu(g[13].response)||["Unknown"],earfcn:em(g[13].response),bandwidth:ex(g[13].response)||["Unknown"],pci:ep(g[13].response,X(g[13].response))||["Unknown"],rsrp:eh(g[13].response,X(g[13].response),g[10].response),rsrq:ef(g[13].response,X(g[13].response),g[10].response)||["Unknown"],sinr:ev(g[13].response,X(g[13].response),g[10].response)||["Unknown"]}};s(j)}catch(e){console.error("Error fetching home data:",e),s({simCard:{slot:"Unknown",state:"Not Inserted",provider:"Unknown",phoneNumber:"Unknown",imsi:"Unknown",iccid:"Unknown",imei:"Unknown"},connection:{apn:"Unknown",operatorState:"Unknown",functionalityState:"Disabled",networkType:"No Signal",modemTemperature:"Unknown",accessTechnology:"Unknown"},dataTransmission:{carrierAggregation:"Inactive",connectedBands:"Unknown",signalStrength:"Unknown",mimoLayers:"Unknown"},cellularInfo:{cellId:"Unknown",trackingAreaCode:"Unknown",physicalCellId:"Unknown",earfcn:"Unknown",mnc:"Unknown",signalQuality:"Unknown"},currentBands:{id:[1],bandNumber:["Unknown"],earfcn:["Unknown"],bandwidth:["Unknown"],pci:["Unknown"],rsrp:["Unknown"],rsrq:["Unknown"],sinr:["Unknown"]}}),i(null)}},[]);return(0,n.useEffect)(()=>{let e,s=!0;return(async()=>{if(s)try{await a()}finally{s&&t(!1)}})(),e=setInterval(()=>{a()},15e3),()=>{s=!1,clearInterval(e)}},[a]),{data:e,isLoading:l,error:r,refresh:(0,n.useCallback)(async()=>{t(!0),await a(),t(!1)},[a])}},eN=()=>{let[e,s]=(0,n.useState)("Unknown"),[l,t]=(0,n.useState)(!0),r=(0,n.useCallback)(async()=>{try{t(!0);let e=await fetch("/cgi-bin/home/check_net.sh"),l=await e.json();s("ACTIVE"===l.connection?"Connected":"Disconnected"),t(!1)}catch(e){console.error("Error fetching data connection state:",e),s("Unknown"),t(!1)}},[]);return(0,n.useEffect)(()=>{r();let e=setInterval(r,3e4);return()=>clearInterval(e)},[r]),{dataConnectionState:e,refresh:(0,n.useCallback)(()=>{r()},[r]),isStateLoading:l}},ew=e=>{if(0===e)return"0 Bytes";let s=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,s)).toFixed(2))+" "+["Bytes","KB","MB","GB","TB"][s]},eb=()=>{let[e,s]=(0,n.useState)("0 Bytes"),[l,t]=(0,n.useState)("0 Bytes"),[r,i]=(0,n.useState)(""),a=e=>{var l,n;let r=Array.isArray(e)?e[e.length-1]:e;if(!r)return;i(r.datetime);let a=r.output.replace(/\r\\n/g,"\n").trim().split("\n").filter(e=>e.trim()),d=null===(l=a.find(e=>e.includes("+QGDCNT:")))||void 0===l?void 0:l.trim(),o=null===(n=a.find(e=>e.includes("+QGDNRCNT:")))||void 0===n?void 0:n.trim();if(!d||!o){console.error("Missing required data in response");return}let[c,u]=d.replace("+QGDCNT:","").split(",").map(e=>parseInt(e.trim())),[m,x]=o.replace("+QGDNRCNT:","").split(",").map(e=>parseInt(e.trim()));s(ew((u||0)+(m||0))),t(ew((c||0)+(x||0)))},d=(0,n.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/home/fetch_data_usage.sh"),s=await e.json();a(s)}catch(e){console.error("Error fetching traffic stats:",e)}},[]);return(0,n.useEffect)(()=>{d();let e=setInterval(d,12e3);return()=>clearInterval(e)},[d]),{bytesSent:e,bytesReceived:l,lastUpdateTime:r,refresh:(0,n.useCallback)(()=>{d()},[d])}},ey=()=>{let[e,s]=(0,n.useState)(!1),[l,t]=(0,n.useState)(null),r=(e,s)=>{var l,t,n,r;let i=null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[1].trim(),a=null===(r=s.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[1].trim();return"1"===i||"1"===a?"Registered":"Not Registered"},i=(e,s)=>{var l,t,n,r;return(null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[2].replace(/"/g,"").trim())===(null===(r=s.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[2].replace(/"/g,"").trim())?"Enabled":"Disabled"},a=e=>{var s,l,t,n;let r=null===(l=e.split("\n")[1])||void 0===l?void 0:null===(s=l.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim(),i=null===(n=e.split("\n")[2])||void 0===n?void 0:null===(t=n.split(":")[1])||void 0===t?void 0:t.split(",")[1].trim();return r&&"1"===r||i&&"1"===i?"Connected":"Disconnected"},d=e=>{try{var s,l,t,n;let r=e.trim().split("\n").map(e=>e.trim()),i=r.find(e=>e.includes("+QRSRP:")&&e.includes("LTE")),a=r.find(e=>e.includes("+QRSRP:")&&e.includes("NR5G")),d=[];i&&(d=null==i?void 0:null===(l=i.split(":")[1])||void 0===l?void 0:null===(s=l.split(","))||void 0===s?void 0:s.slice(0,4).map(e=>e.trim()).filter(e=>!isNaN(parseInt(e))).map(e=>parseInt(e)));let o=[];if(a&&(o=null==a?void 0:null===(n=a.split(":")[1])||void 0===n?void 0:null===(t=n.split(","))||void 0===t?void 0:t.slice(0,4).map(e=>e.trim()).filter(e=>!isNaN(parseInt(e))).map(e=>parseInt(e))),d=d.filter(e=>-32768!==e),o=o.filter(e=>-32768!==e),d=d.filter(e=>-140!==e),o=o.filter(e=>-140!==e),d.length>0){let e=d.reduce((e,s)=>e+s,0)/d.length;if(o.length>0){let s=o.reduce((e,s)=>e+s,0)/o.length;return(e+s)/2<-100?"Poor":"Good"}return e<-100?"Poor":"Good"}if(o.length>0)return o.reduce((e,s)=>e+s,0)/o.length<-100?"Poor":"Good";return"N/A"}catch(e){return console.error("Error processing cell signal:",e),"N/A"}},o=e=>{let s=e.split("\n").filter(e=>e.startsWith("+QTEMP:")).map(e=>parseInt(e.split(":")[1].split(",")[1].replace(/"/g,"").trim())).filter(e=>e>=0&&e<99);return s.reduce((e,s)=>e+s,0)/s.length<50?"Normal":"High"},c=e=>{var s,l,t,n,r,i;let a=null===(l=e.split("\n")[1])||void 0===l?void 0:null===(s=l.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim(),d=null===(n=e.split("\n")[2])||void 0===n?void 0:null===(t=n.split(":")[1])||void 0===t?void 0:t.split(",")[1].trim(),o=null===(i=e.split("\n")[3])||void 0===i?void 0:null===(r=i.split(":")[1])||void 0===r?void 0:r.split(",")[1].trim(),c=["0"!==a?"".concat(a):null,"0"!==d?"".concat(d):null,"0"!==o?"".concat(o):null].filter(Boolean);return c.length>0?c.join(", "):"None"};return{isRunningDiagnostics:e,runDiagnosticsData:l,startDiagnostics:async()=>{s(!0);try{let e=await fetch("/cgi-bin/fetch_data.sh?set=6"),s=await e.json();console.log("Diagnostics data:",s);let l={netRegistration:r(s[0].response,s[1].response),simState:s[2].response.split("\n")[1].split(":")[1].trim(),manualAPN:i(s[3].response,s[4].response),wanIP:a(s[5].response),cellSignal:d(s[6].response),modemTemp:o(s[7].response),netReject:c(s[8].response)};return t(l),l}catch(e){throw console.error("Error running diagnostics:",e),e}finally{s(!1)}}}};var eS=l(80159),ek=l(44734);let eE=e=>{let{shouldScaleBackground:s=!0,...l}=e;return(0,t.jsx)(ek._s.Root,{shouldScaleBackground:s,...l})};eE.displayName="Drawer";let eA=ek._s.Trigger,eC=ek._s.Portal;ek._s.Close;let eR=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(ek._s.Overlay,{ref:s,className:(0,H.cn)("fixed inset-0 z-50 bg-black/80",l),...n})});eR.displayName=ek._s.Overlay.displayName;let eT=n.forwardRef((e,s)=>{let{className:l,children:n,...r}=e;return(0,t.jsxs)(eC,{children:[(0,t.jsx)(eR,{}),(0,t.jsxs)(ek._s.Content,{ref:s,className:(0,H.cn)("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",l),...r,children:[(0,t.jsx)("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),n]})]})});eT.displayName="DrawerContent",n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(ek._s.Title,{ref:s,className:(0,H.cn)("text-lg font-semibold leading-none tracking-tight",l),...n})}).displayName=ek._s.Title.displayName,n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(ek._s.Description,{ref:s,className:(0,H.cn)("text-sm text-muted-foreground",l),...n})}).displayName=ek._s.Description.displayName;var eI=l(12607),eU=l(25262),eM=l(8782),eB=l(10964),eD=l(89463),eL=l(90304),ez=l(622),eG=l(20633),e_=l(7778),eP=l(99312),eF=l(92823),eH=l(90281);let eZ=e=>{if(null==e)return"N/A";let s=["B","KB","MB","GB"],l=e,t=0;for(;l>=1024&&t{if(null==e)return"N/A";let s=["bps","Kbps","Mbps","Gbps"],l=8*e,t=0;for(;l>=1e3&&t{let[e,s]=(0,n.useState)(null),[l,r]=(0,n.useState)(null),[a,d]=(0,n.useState)(!1),[o,c]=(0,n.useState)(null),[u,m]=(0,n.useState)(!1),[x,p]=(0,n.useState)(!1),[h,f]=(0,n.useState)(!1),[v,g]=(0,n.useState)(0),[j,N]=(0,n.useState)(!1),[w,b]=(0,n.useState)(!1),y=(0,n.useRef)(null),S=(0,n.useRef)(null),k=(0,n.useCallback)(()=>{s(null),r(null),c(null),m(!1),p(!1),f(!1),g(0),y.current=null},[]),E=(0,n.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/experimental/keep_alive.sh?status=true"),s=await e.json();if(s.enabled){let e=new Date,l=60*e.getHours()+e.getMinutes(),[t,n]=s.start_time.split(":").map(Number),[r,i]=s.end_time.split(":").map(Number);b(l>=60*t+n&&l<=60*r+i)}else b(!1)}catch(e){console.error("Failed to check keep-alive schedule:",e),b(!1)}},[]);(0,n.useEffect)(()=>{E();let e=setInterval(E,6e4);return()=>clearInterval(e)},[E]),(0,n.useEffect)(()=>{if(u&&!x){N(!0);let e=setTimeout(()=>{N(!1)},1e4);return()=>clearTimeout(e)}},[u,x]),(0,n.useEffect)(()=>()=>{S.current&&S.current.abort()},[]);let A=(0,n.useCallback)(async()=>{if(!j&&!w)try{if(k(),f(!0),S.current&&S.current.abort(),!(await fetch("/cgi-bin/home/speedtest/start_speedtest.sh",{method:"GET"})).ok)throw Error("Failed to start speedtest");C()}catch(e){console.error("Speedtest start error:",e),c(e instanceof Error?"Failed to start speedtest: ".concat(e.message):"Failed to start speedtest"),f(!1)}},[j,w,k]),C=(0,n.useCallback)(()=>{S.current=new AbortController,d(!1),p(!0),f(!1);try{fetch("/cgi-bin/home/speedtest/speedtest_stream.sh",{method:"GET",signal:S.current.signal}).then(async e=>{var t;if(!e.ok)throw Error("Network response was not ok");d(!0);let n=null===(t=e.body)||void 0===t?void 0:t.getReader(),i=new TextDecoder;if(!n)throw Error("Unable to get reader from response body");let a="";for(;;){let{done:e,value:t}=await n.read();if(e)break;let d=i.decode(t,{stream:!0}),o=(a+=d).split("\n\n");for(let e of(a=o.pop()||"",o))if(e.startsWith("data: "))try{let t=JSON.parse(e.replace("data: ","").trim());switch(t.type){case"ping":r("ping"),g(t.ping.progress);break;case"download":case"upload":"ping"!==l&&r(t.type);break;case"result":m(!0),p(!1),n.cancel()}y.current=t,s(t)}catch(e){console.error("Parsing error:",e)}}}).catch(e=>{"AbortError"!==e.name&&(console.error("Fetch error:",e),c("Connection failed: ".concat(e instanceof Error?e.message:String(e))),p(!1))})}catch(e){console.error("Failed to initialize fetch:",e),c("Failed to connect to speedtest stream"),p(!1)}},[l]);return(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Network Speedtest"})}),(0,t.jsxs)(i.Wu,{className:"flex flex-col gap-6 p-4 items-center justify-center",children:[(0,t.jsxs)(eE,{children:[(0,t.jsx)(eA,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative flex flex-col items-center justify-center",children:[(0,t.jsx)(eH.A,{color:"#5420ab",size:192,className:"-top-8 -left-8 absolute",style:{zIndex:1}}),(0,t.jsx)(D.A,{className:"size-32 ".concat(w?"text-gray-400 cursor-not-allowed":"text-primary cursor-pointer"," z-10"),onClick:A})]})}),(0,t.jsx)(eT,{children:(0,t.jsx)("div",{className:"lg:max-w-full max-w-sm mx-auto min-w-sm p-6 py-12",children:(()=>{var s,n,r,a,d,c,m,x,p,f,g;if(o)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-4",children:[(0,t.jsx)(eI.A,{className:"text-rose-600 lg:size-48 size-16 animate-pulse"}),(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Network Speedtest Failed"}),(0,t.jsxs)("p",{className:"text-sm text-gray-500",children:["Something went wrong while running the speedtest.",(0,t.jsx)("p",{className:"underline cursor-pointer ml-2",onClick:A,children:"Please try again."})]})]});if(h)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-4",children:[(0,t.jsx)(eU.A,{className:"text-primary lg:size-48 size-16 animate-pulse"}),(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Initiating Network Speedtest"}),(0,t.jsx)("p",{className:"text-sm text-gray-500 text-center",children:"Locating and establishing a connection to a server. Please wait..."})]});if("ping"===l)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-4",children:[(0,t.jsx)(eM.A,{className:"text-gray-600 size-16 animate-pulse"}),(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Calculating Ping Latency"}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2.5",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2.5 rounded-full",style:{width:"".concat(100*(v||0),"%")}})}),(0,t.jsx)("p",{className:"text-sm text-gray-500",children:(null==e?void 0:e.ping)?"Latency: ".concat(e.ping.latency.toFixed(2)," ms, \n Jitter: ").concat(e.ping.jitter.toFixed(2)," ms"):"Measuring network responsiveness..."})]});if(u)return(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4 w-full min-w-sm",children:[(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsxs)(i.ZB,{className:"flex items-center",children:[(0,t.jsx)(eB.A,{className:"mr-4 text-violet-600"})," Speedtest Result"]})}),(0,t.jsx)(i.Wu,{className:"lg:py-12 py-6 min-w-sm w-full",children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4 lg:gap-y-0 gap-y-8 gap-x-8",children:[(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(eD.A,{className:"text-green-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"font-semibold",children:"Download"})]}),(0,t.jsx)("h1",{className:"text-[3rem] font-semibold text-center antialiased leading-tight",children:eO(null==e?void 0:e.download.bandwidth)}),(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eL.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Latency"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(m=null==e?void 0:null===(a=e.download.latency)||void 0===a?void 0:null===(r=a.iqm)||void 0===r?void 0:r.toFixed(2))&&void 0!==m?m:"N/A"," ","ms"]})]})]}),(0,t.jsxs)("div",{className:"grid gap-1.5 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(ez.A,{className:"text-violet-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"font-semibold",children:"Upload"})]}),(0,t.jsx)("h1",{className:"text-[3rem] font-semibold text-center antialiased leading-tight",children:eO(null==e?void 0:e.upload.bandwidth)}),(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eL.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Latency"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(x=null==e?void 0:null===(c=e.upload.latency)||void 0===c?void 0:null===(d=c.iqm)||void 0===d?void 0:d.toFixed(2))&&void 0!==x?x:"N/A"," ","ms"]})]})]})]})}),(0,t.jsxs)(i.wL,{className:"mt-4 grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eM.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Ping"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(p=null==e?void 0:e.ping.latency.toFixed(2))&&void 0!==p?p:"N/A"," ms"]})]}),(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eG.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Jitter"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(f=null==e?void 0:e.ping.jitter.toFixed(2))&&void 0!==f?f:"N/A"," ms"]})]})]})]}),(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsxs)(i.ZB,{className:"flex items-center",children:[(0,t.jsx)(e_.A,{className:"mr-4 text-blue-600"})," Connection & Server Details"]})}),(0,t.jsx)(i.Wu,{children:(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"ISP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.isp})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Internal IP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.interface.internalIp})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"External IP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.interface.externalIp})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Server Name:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.name})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Location:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.location})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Country:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.country})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Server IP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.host})]}),(null==e?void 0:e.result.url)&&(0,t.jsxs)("div",{className:"flex items-center gap-x-2 mt-4",children:[(0,t.jsx)(eP.A,{className:"text-blue-600 size-4"}),(0,t.jsx)("a",{href:e.result.url,target:"_blank",rel:"noopener noreferrer",className:"font-medium text-blue-600 hover:underline",children:"View Full Result Online"})]})]})})]})]});if(!l||!e)return null;let j=e[l],N="download"===l;return(0,t.jsxs)(i.Zp,{className:"p-4 w-full",children:[(0,t.jsx)(i.aR,{children:(0,t.jsxs)(i.ZB,{className:"flex items-center",children:[N?(0,t.jsx)(eD.A,{className:"text-green-500 lg:size-6 size-4 mr-1"}):(0,t.jsx)(ez.A,{className:"text-violet-500 lg:size-6 size-4 mr-1"}),(0,t.jsxs)("p",{className:"ml-2",children:["Testing ",N?"Download":"Upload"," Speed"]})]})}),(0,t.jsx)(i.Wu,{children:(0,t.jsx)("div",{className:"grid place-items-center max-w-sm lg:max-w-full mx-auto w-full",children:(0,t.jsx)("h1",{className:"lg:text-[4rem] text-[3rem] font-semibold text-center",children:eO(j.bandwidth)})})}),(0,t.jsx)(i.wL,{children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-3 grid-cols-1 grid-flow-row gap-4",children:[(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(eF.A,{className:"mr-2 text-yellow-600"}),"Bytes Transferred"]}),(0,t.jsx)("p",{className:"lg:text-md text-base text-muted font-semibold",children:eZ(j.bytes)})]}),(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(eB.A,{className:"mr-2 text-purple-600"}),"Elapsed Time"]}),(0,t.jsxs)("p",{className:"lg:text-md text-base text-muted font-semibold",children:[(j.elapsed/1e3).toFixed(2)," sec"]})]}),(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(eM.A,{className:"mr-2 text-gray-600"}),"Latency (IQM)"]}),(0,t.jsxs)("p",{className:"lg:text-md text-base text-muted font-semibold",children:[null!==(g=null===(n=j.latency)||void 0===n?void 0:null===(s=n.iqm)||void 0===s?void 0:s.toFixed(2))&&void 0!==g?g:"N/A"," ms"]})]})]})})]})})()})})]}),(0,t.jsx)(i.BT,{children:w?"Speedtest is disabled during keep-alive schedule.":j?"Please wait 10 seconds before starting another test.":"Run a speed test to check your internet connection."})]})]})},eQ=()=>{let{toast:e}=(0,r.dj)(),{data:s,isLoading:l,refresh:i}=ej(),{dataConnectionState:a,isStateLoading:d,refresh:c}=eN(),{isRunningDiagnostics:u,runDiagnosticsData:m,startDiagnostics:x}=ey(),{bytesSent:v,bytesReceived:g,refresh:j}=eb(),N=async()=>{try{let s=await fetch("/cgi-bin/settings/force-rerun.sh"),l=await s.json();if("success"===l.status)e({title:"Data Refreshed",description:"Data and scripts has been refreshed successfully"});else if("info"===l.status)e({title:"Data Refreshed",description:"Data refreshed successfully, but no scripts to restart."});else throw Error("Failed to restart scripts")}catch(s){console.error("Error rerunning scripts:",s),e({variant:"destructive",title:"Script Restart Failed",description:"Failed to restart the required scripts"})}},w=async()=>{try{var l;let t=null==s?void 0:null===(l=s.simCard)||void 0===l?void 0:l.slot,n=encodeURIComponent("Slot 1"===t?"AT+QUIMSLOT=1":"AT+QUIMSLOT=2"),r=await fetch("/cgi-bin/at_command.sh?command=".concat(n));if(!r.ok)throw Error("HTTP error! status: ".concat(r.status));let i=await r.json();if(i.error)throw Error(i.error);e({title:"SIM Slot Changed",description:"The SIM slot has been changed successfully"}),setTimeout(async()=>{let e=encodeURIComponent("AT+COPS=0;+COPS=2"),s=await fetch("/cgi-bin/at_command.sh?command=".concat(e));if(!s.ok)throw Error("HTTP error! status: ".concat(s.status));let l=await s.json();if(l.error)throw Error(l.error)},3e3),setTimeout(b,3e3)}catch(s){console.error("Error changing SIM slot:",s),e({variant:"destructive",title:"SIM Slot Change Failed",description:"Failed to change the SIM slot"})}},b=(0,n.useCallback)(async()=>{try{await Promise.all([i(),c(),j()]),await N()}catch(s){console.error("Error refreshing data:",s),e({variant:"destructive",title:"Refresh Failed",description:"Failed to refresh the data"})}},[i,c,j,e]),[y,k]=(0,n.useState)([]),A=async()=>{try{await x()}catch(e){console.error("Error running diagnostics:",e)}};return(0,n.useEffect)(()=>{m&&console.log("Diagnostics data updated:",m)},[m]),(0,n.useEffect)(()=>{if(s&&s.currentBands){var e;let l=null===(e=s.currentBands.id)||void 0===e?void 0:e.map((e,l)=>{var t,n,r,i,a,d,o;return{id:e,bandNumber:(null===(t=s.currentBands.bandNumber)||void 0===t?void 0:t[l])||"N/A",earfcn:(null===(n=s.currentBands.earfcn)||void 0===n?void 0:n[l])||"N/A",bandwidth:(null===(r=s.currentBands.bandwidth)||void 0===r?void 0:r[l])||"N/A",pci:(null===(i=s.currentBands.pci)||void 0===i?void 0:i[l])||"N/A",rsrp:(null===(a=s.currentBands.rsrp)||void 0===a?void 0:a[l])||"N/A",rsrq:(null===(d=s.currentBands.rsrq)||void 0===d?void 0:d[l])||"N/A",sinr:(null===(o=s.currentBands.sinr)||void 0===o?void 0:o[l])||"N/A"}});l&&k(l)}},[s]),(0,t.jsxs)("div",{className:"grid xl:gap-y-12 gap-y-8 gap-4",children:[(0,t.jsxs)("div",{className:"grid gap-4",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between items-center",children:[(0,t.jsxs)("div",{className:"flex flex-row gap-2 items-center",children:[(0,t.jsx)("h1",{className:"xl:text-3xl text-base font-bold",children:"Connection Summary"}),(0,t.jsx)(U.$,{variant:"ghost",size:"icon",className:"text-sm",onClick:b,children:(0,t.jsx)(B.A,{className:"xl:size-6 size-5 text-blue-500",strokeWidth:3})})]}),(0,t.jsxs)("div",{className:"flex flex-row items-center gap-x-2",children:[(null==s?void 0:s.simCard.state)==="Not Inserted"&&(0,t.jsxs)(M.lG,{children:[(0,t.jsx)(M.zM,{children:(0,t.jsxs)(U.$,{variant:"destructive",children:[(0,t.jsx)(eS.fU4,{className:"xl:size-6 size-5"}),(0,t.jsx)("span",{className:"hidden md:block",children:"No SIM"})]})}),(0,t.jsxs)(M.Cf,{className:"max-w-xs md:max-w-lg",children:[(0,t.jsx)(M.c7,{children:(0,t.jsx)(M.L3,{children:"No SIM Detected"})}),(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsx)("div",{className:"flex items-center justify-center",children:(0,t.jsx)(eS.fU4,{className:"xl:size-14 md:size-12 size-6 text-red-500"})}),(0,t.jsx)("p",{className:"text-center",children:"There is no SIM card detected in the device. Please insert a SIM card or change the SIM card slot to use the device."})]}),(0,t.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,t.jsx)(U.$,{variant:"secondary",onClick:w,className:"mr-2",children:"Change SIM Slot"}),(0,t.jsx)(M.HM,{asChild:!0,children:(0,t.jsx)(U.$,{children:"Close"})})]})]})]}),(0,t.jsxs)(M.lG,{children:[(0,t.jsx)(M.zM,{children:(0,t.jsxs)(U.$,{variant:"secondary",onClick:A,children:[(0,t.jsx)(D.A,{className:"xl:size-6 size-5"}),(0,t.jsx)("span",{className:"hidden md:block",children:"Run Diagnostics"})]})}),!u&&(0,t.jsxs)(M.Cf,{className:"max-w-xs md:max-w-lg",children:[(0,t.jsx)(M.c7,{children:(0,t.jsx)(M.L3,{children:"Diagnostics Result"})}),(0,t.jsx)(M.rr,{children:"This is the result of the diagnostic test ran on your device."}),(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Network Registration "}),(null==m?void 0:m.netRegistration)==="Registered"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"U-SIM State"}),(null==m?void 0:m.simState)==="READY"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Manual APN"}),(null==m?void 0:m.manualAPN)==="Enabled"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"WAN IP"}),(null==m?void 0:m.wanIP)==="Connected"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Cellular Signal"}),(null==m?void 0:m.cellSignal)==="Good"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Modem Temperature"}),(null==m?void 0:m.modemTemp)==="Normal"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between mt-6",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Net Reject Cause"}),(null==m?void 0:m.netReject)==="None"?(0,t.jsxs)("div",{className:"flex space-x-2 items-center",children:[(0,t.jsx)(L.A,{className:"text-green-500"}),(0,t.jsx)("span",{children:"None"})]}):(0,t.jsxs)("div",{className:"flex space-x-2 items-center",children:[(0,t.jsx)(z.A,{className:"text-red-500"}),(0,t.jsx)("span",{children:null==m?void 0:m.netReject})]})]})]})]}),u&&(0,t.jsxs)(M.Cf,{className:"max-w-xs md:max-w-lg",children:[(0,t.jsx)(M.c7,{children:(0,t.jsx)(M.L3,{children:"Running Diagnostics"})}),(0,t.jsx)("div",{className:"flex items-center justify-center my-4",children:(0,t.jsx)(_(),{color:"#6D28D9"})}),(0,t.jsx)(M.rr,{className:"text-center",children:"Please wait while we run diagnostics on your device."})]})]})]})]}),(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4",children:[(0,t.jsx)("div",{children:(0,t.jsx)(S,{})}),(0,t.jsxs)("div",{className:"grid gap-2 lg:grid-cols-2 grid-cols-1 grid-flow-row",children:[(0,t.jsx)(E,{}),(0,t.jsx)(C,{}),(0,t.jsx)(eW,{}),(0,t.jsx)(I,{})]})]}),(0,t.jsxs)("div",{className:"grid 2xl:grid-cols-4 lg:grid-cols-2 grid-cols-1 gap-4",children:[(0,t.jsx)(o,{data:s,isLoading:l}),(0,t.jsx)(p,{data:s,isLoading:l,dataConnectionState:a,connectionStateLoading:d}),(0,t.jsx)(h,{data:s,isLoading:l,bytesSent:v,bytesReceived:g}),(0,t.jsx)(f,{data:s,isLoading:l})]})]}),(0,t.jsxs)("div",{className:"grid xl:gap-6 gap-4",children:[(0,t.jsx)("h1",{className:"xl:text-3xl text-base font-bold",children:"Current Active Bands"}),(0,t.jsx)(J,{bands:y,isLoading:l})]})]})}},45934:(e,s,l)=>{"use strict";l.d(s,{E:()=>a});var t=l(20475);l(20107);var n=l(29395),r=l(22250);let i=(0,n.F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function a(e){let{className:s,variant:l,...n}=e;return(0,t.jsx)("div",{className:(0,r.cn)(i({variant:l}),s),...n})}},42541:(e,s,l)=>{"use strict";l.d(s,{$:()=>o,r:()=>d});var t=l(20475),n=l(20107),r=l(61837),i=l(29395),a=l(22250);let d=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),o=n.forwardRef((e,s)=>{let{className:l,variant:n,size:i,asChild:o=!1,...c}=e,u=o?r.DX:"button";return(0,t.jsx)(u,{className:(0,a.cn)(d({variant:n,size:i,className:l})),ref:s,...c})});o.displayName="Button"},72167:(e,s,l)=>{"use strict";l.d(s,{BT:()=>o,Wu:()=>c,ZB:()=>d,Zp:()=>i,aR:()=>a,wL:()=>u});var t=l(20475),n=l(20107),r=l(22250);let i=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("rounded-xl border bg-card text-card-foreground shadow",l),...n})});i.displayName="Card";let a=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("flex flex-col space-y-1.5 p-6",l),...n})});a.displayName="CardHeader";let d=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("h3",{ref:s,className:(0,r.cn)("font-semibold leading-none tracking-tight",l),...n})});d.displayName="CardTitle";let o=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("p",{ref:s,className:(0,r.cn)("text-sm text-muted-foreground",l),...n})});o.displayName="CardDescription";let c=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("p-6 pt-0",l),...n})});c.displayName="CardContent";let u=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("flex items-center p-6 pt-0",l),...n})});u.displayName="CardFooter"},1307:(e,s,l)=>{"use strict";l.d(s,{II:()=>p,Nt:()=>h,at:()=>m});var t=l(20475),n=l(20107),r=l(81155),i=l(80982),a=l(58736),d=l(22250);let o={light:"",dark:".dark"},c=n.createContext(null);function u(){let e=n.useContext(c);if(!e)throw Error("useChart must be used within a ");return e}let m=n.forwardRef((e,s)=>{let{id:l,className:i,children:a,config:o,...u}=e,m=n.useId(),p="chart-".concat(l||m.replace(/:/g,""));return(0,t.jsx)(c.Provider,{value:{config:o},children:(0,t.jsxs)("div",{"data-chart":p,ref:s,className:(0,d.cn)("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",i),...u,children:[(0,t.jsx)(x,{id:p,config:o}),(0,t.jsx)(r.u,{children:a})]})})});m.displayName="Chart";let x=e=>{let{id:s,config:l}=e,n=Object.entries(l).filter(e=>{let[s,l]=e;return l.theme||l.color});return n.length?(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:Object.entries(o).map(e=>{let[l,t]=e;return"\n".concat(t," [data-chart=").concat(s,"] {\n").concat(n.map(e=>{var s;let[t,n]=e,r=(null===(s=n.theme)||void 0===s?void 0:s[l])||n.color;return r?" --color-".concat(t,": ").concat(r,";"):null}).join("\n"),"\n}\n")}).join("\n")}}):null},p=i.m,h=n.forwardRef((e,s)=>{let{active:l,payload:r,className:i,indicator:a="dot",hideLabel:o=!1,hideIndicator:c=!1,label:m,labelFormatter:x,labelClassName:p,formatter:h,color:v,nameKey:g,labelKey:j}=e,{config:N}=u(),w=n.useMemo(()=>{var e;if(o||!(null==r?void 0:r.length))return null;let[s]=r,l="".concat(j||s.dataKey||s.name||"value"),n=f(N,s,l),i=j||"string"!=typeof m?null==n?void 0:n.label:(null===(e=N[m])||void 0===e?void 0:e.label)||m;return x?(0,t.jsx)("div",{className:(0,d.cn)("font-medium",p),children:x(i,r)}):i?(0,t.jsx)("div",{className:(0,d.cn)("font-medium",p),children:i}):null},[m,x,r,o,p,N,j]);if(!l||!(null==r?void 0:r.length))return null;let b=1===r.length&&"dot"!==a;return(0,t.jsxs)("div",{ref:s,className:(0,d.cn)("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",i),children:[b?null:w,(0,t.jsx)("div",{className:"grid gap-1.5",children:r.map((e,s)=>{let l="".concat(g||e.name||e.dataKey||"value"),n=f(N,e,l),r=v||e.payload.fill||e.color;return(0,t.jsx)("div",{className:(0,d.cn)("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground","dot"===a&&"items-center"),children:h&&(null==e?void 0:e.value)!==void 0&&e.name?h(e.value,e.name,e,s,e.payload):(0,t.jsxs)(t.Fragment,{children:[(null==n?void 0:n.icon)?(0,t.jsx)(n.icon,{}):!c&&(0,t.jsx)("div",{className:(0,d.cn)("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":"dot"===a,"w-1":"line"===a,"w-0 border-[1.5px] border-dashed bg-transparent":"dashed"===a,"my-0.5":b&&"dashed"===a}),style:{"--color-bg":r,"--color-border":r}}),(0,t.jsxs)("div",{className:(0,d.cn)("flex flex-1 justify-between leading-none",b?"items-end":"items-center"),children:[(0,t.jsxs)("div",{className:"grid gap-1.5",children:[b?w:null,(0,t.jsx)("span",{className:"text-muted-foreground",children:(null==n?void 0:n.label)||e.name})]}),e.value&&(0,t.jsx)("span",{className:"font-mono font-medium tabular-nums text-foreground",children:e.value.toLocaleString()})]})]})},e.dataKey)})})]})});function f(e,s,l){if("object"!=typeof s||null===s)return;let t="payload"in s&&"object"==typeof s.payload&&null!==s.payload?s.payload:void 0,n=l;return l in s&&"string"==typeof s[l]?n=s[l]:t&&l in t&&"string"==typeof t[l]&&(n=t[l]),n in e?e[n]:e[l]}h.displayName="ChartTooltip",a.s,n.forwardRef((e,s)=>{let{className:l,hideIcon:n=!1,payload:r,verticalAlign:i="bottom",nameKey:a}=e,{config:o}=u();return(null==r?void 0:r.length)?(0,t.jsx)("div",{ref:s,className:(0,d.cn)("flex items-center justify-center gap-4","top"===i?"pb-3":"pt-3",l),children:r.map(e=>{let s="".concat(a||e.dataKey||"value"),l=f(o,e,s);return(0,t.jsxs)("div",{className:(0,d.cn)("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[(null==l?void 0:l.icon)&&!n?(0,t.jsx)(l.icon,{}):(0,t.jsx)("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:e.color}}),null==l?void 0:l.label]},e.value)})}):null}).displayName="ChartLegend"},93557:(e,s,l)=>{"use strict";l.d(s,{Cf:()=>x,HM:()=>u,L3:()=>h,c7:()=>p,lG:()=>d,rr:()=>f,zM:()=>o});var t=l(20475),n=l(20107),r=l(71827),i=l(7197),a=l(22250);let d=r.bL,o=r.l9,c=r.ZL,u=r.bm,m=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(r.hJ,{ref:s,className:(0,a.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",l),...n})});m.displayName=r.hJ.displayName;let x=n.forwardRef((e,s)=>{let{className:l,children:n,...d}=e;return(0,t.jsxs)(c,{children:[(0,t.jsx)(m,{}),(0,t.jsxs)(r.UC,{ref:s,className:(0,a.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",l),...d,children:[n,(0,t.jsxs)(r.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,t.jsx)(i.MKb,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});x.displayName=r.UC.displayName;let p=e=>{let{className:s,...l}=e;return(0,t.jsx)("div",{className:(0,a.cn)("flex flex-col space-y-1.5 text-center sm:text-left",s),...l})};p.displayName="DialogHeader";let h=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(r.hE,{ref:s,className:(0,a.cn)("text-lg font-semibold leading-none tracking-tight",l),...n})});h.displayName=r.hE.displayName;let f=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(r.VY,{ref:s,className:(0,a.cn)("text-sm text-muted-foreground",l),...n})});f.displayName=r.VY.displayName},36760:(e,s,l)=>{"use strict";l.d(s,{E:()=>r});var t=l(20475),n=l(22250);function r(e){let{className:s,...l}=e;return(0,t.jsx)("div",{className:(0,n.cn)("animate-pulse rounded-md bg-primary/10",s),...l})}},32857:(e,s,l)=>{"use strict";l.d(s,{dj:()=>m,oR:()=>u});var t=l(20107);let n=0,r=new Map,i=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},a=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:l}=s;return l?i(l):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===l||void 0===l?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},d=[],o={toasts:[]};function c(e){o=a(o,e),d.forEach(e=>{e(o)})}function u(e){let{...s}=e,l=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),t=()=>c({type:"DISMISS_TOAST",toastId:l});return c({type:"ADD_TOAST",toast:{...s,id:l,open:!0,onOpenChange:e=>{e||t()}}}),{id:l,dismiss:t,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:l}})}}function m(){let[e,s]=t.useState(o);return t.useEffect(()=>(d.push(s),()=>{let e=d.indexOf(s);e>-1&&d.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,s,l)=>{"use strict";l.d(s,{cn:()=>r});var t=l(64901),n=l(868);function r(){for(var e=arguments.length,s=Array(e),l=0;l{var s=s=>e(e.s=s);e.O(0,[9980,9649,7780,1617,5011,1827,1074,9107,191,6035,7358],()=>s(31710)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-e229d37c1ce4bed4.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-e229d37c1ce4bed4.js deleted file mode 100644 index 5da04b3..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/home/page-e229d37c1ce4bed4.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6665],{31710:(e,s,l)=>{Promise.resolve().then(l.bind(l,88954))},88954:(e,s,l)=>{"use strict";l.r(s),l.d(s,{default:()=>eQ});var t=l(20475),n=l(20107),r=l(32857),i=l(72167),a=l(36760),d=l(45934);let o=e=>{let{data:s,isLoading:l}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Sim Card"}),(0,t.jsx)(i.BT,{children:"Sim card information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Sim Card Slot in Use"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[50px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.slot})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Sim Card State"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.simCard.state)==="Inserted"?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.simCard.state})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Provider"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.provider})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Phone Number"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.phoneNumber})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"IMSI"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.imsi})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"ICCID"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.iccid})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"IMEI"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[140px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.simCard.imei})]})]})]})},c={6:"1.4 MHz",15:"3 MHz",25:"5 MHz",50:"10 MHz",75:"15 MHz",100:"20 MHz"},u={0:"5 MHz",1:"10 MHz",2:"15 MHz",3:"20 MHz",4:"25 MHz",5:"30 MHz",6:"40 MHz",7:"50 MHz",8:"60 MHz",9:"70 MHz",10:"80 MHz",11:"90 MHz",12:"100 MHz",13:"200 MHz",14:"400 MHz",15:"35 MHz",16:"45 MHz"},m={2:"UTRAN",4:"HSDPA",5:"HSUPA",6:"HSDPA & HSUPA",7:"E-UTRAN",10:"E-UTRAN - 5GCN",11:"NR - 5GCN",12:"NG-RAN",13:"E-UTRAN-NR Dual"},x=e=>m[e]||"Unknown",p=e=>{let{data:s,isLoading:l,dataConnectionState:n,connectionStateLoading:r}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Connection"}),(0,t.jsx)(i.BT,{children:"Connection information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"APN"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:null==s?void 0:s.connection.apn})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Operator State"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.connection.operatorState)==="Unknown"||(null==s?void 0:s.connection.operatorState)==="Denied"?"bg-rose-500 hover:bg-rose-800":"bg-emerald-500 hover:bg-emerald-800"),children:null==s?void 0:s.connection.operatorState})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Functionality State"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.connection.functionalityState)==="Enabled"?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.connection.functionalityState})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Data Connection State"}),r?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat("Connected"===n?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:n})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Network Type"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:null==s?void 0:s.connection.networkType})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Modem Temperature"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:null==s?void 0:s.connection.modemTemperature})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("div",{children:"Access Technology"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("div",{className:"font-bold",children:(null==s?void 0:s.connection.accessTechnology)?x(s.connection.accessTechnology):"Unknown"})]})]})]})},h=e=>{let{data:s,isLoading:l,bytesSent:n,bytesReceived:r}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Data Transmission"}),(0,t.jsx)(i.BT,{children:"Data transmission information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Carrier Aggregation"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.dataTransmission.carrierAggregation)==="Multi"?"bg-emerald-500 hover:bg-emerald-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.dataTransmission.carrierAggregation})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Bandwidth"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.dataTransmission.bandwidth})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Connected Bands"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.dataTransmission.connectedBands})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Signal Strength"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)(d.E,{className:"font-bold ".concat((null==s?void 0:s.dataTransmission.signalStrength)&&parseInt(null==s?void 0:s.dataTransmission.signalStrength)>80?"bg-emerald-500 hover:bg-emerald-800":(null==s?void 0:s.dataTransmission.signalStrength)&&parseInt(null==s?void 0:s.dataTransmission.signalStrength)>40?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.dataTransmission.signalStrength})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"MIMO Layers"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[100px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.dataTransmission.mimoLayers})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Bytes Sent"}),(0,t.jsx)("p",{className:"font-bold",children:n})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Bytes Received"}),(0,t.jsx)("p",{className:"font-bold",children:r})]})]})]})},f=e=>{let{data:s,isLoading:l}=e;return(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Cellular Information"}),(0,t.jsx)(i.BT,{children:"Cellular network information"})]}),(0,t.jsxs)(i.Wu,{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Cell ID"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.cellId})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"TAC"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.trackingAreaCode})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Physical Cell IDs"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.physicalCellId})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"E/ARFCN"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.earfcn})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Mobile Country Code"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.mcc})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Mobile Network Code"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)("p",{className:"font-bold",children:null==s?void 0:s.cellularInfo.mnc})]}),(0,t.jsxs)("div",{className:"flex flex-row justify-between text-md",children:[(0,t.jsx)("p",{children:"Signal Quality"}),l?(0,t.jsx)(a.E,{className:"h-4 w-[80px]"}):(0,t.jsx)(d.E,{className:"\n font-bold ".concat((null==s?void 0:s.cellularInfo.signalQuality)&&parseInt(null==s?void 0:s.cellularInfo.signalQuality)>80?"bg-emerald-500 hover:bg-emerald-800":(null==s?void 0:s.cellularInfo.signalQuality)&&parseInt(null==s?void 0:s.cellularInfo.signalQuality)>40?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800"),children:null==s?void 0:s.cellularInfo.signalQuality})]})]})]})};var v=l(1307),g=l(78327),j=l(94005),N=l(4538),w=l(96399);let b={signal:{label:"LTE/5G Signal Metrics"},rsrp:{label:"RSRP",color:"hsl(var(--chart-1))"},rsrq:{label:"RSRQ",color:"hsl(var(--chart-2))"},sinr:{label:"SINR",color:"hsl(var(--chart-3))"}},y=e=>{let s=e.split("\n").filter(e=>e.trim()),l=[];s.forEach(e=>{let s=e.match(/-?\d+/g);s&&l.push(...s.map(Number))});let t=l.filter(e=>-140!==e&&-32768!==e);return 0===t.length?0:Math.round(t.reduce((e,s)=>e+s,0)/t.length)},S=()=>{let[e,s]=(0,n.useState)([]),[l,r]=(0,n.useState)("rsrp"),[d,o]=(0,n.useState)(!0),[c,u]=(0,n.useState)(null),m=(0,n.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/home/fetch_signal_metrics.sh");if(!e.ok)throw Error("Failed to fetch signal metrics");let l=await e.json(),t=Math.min(l.rsrp.length,l.rsrq.length,l.sinr.length),n=Array.from({length:t},(e,s)=>({time:l.rsrp[s].datetime,rsrp:y(l.rsrp[s].output),rsrq:y(l.rsrq[s].output),sinr:y(l.sinr[s].output)}));s(n),u(null)}catch(e){console.error("Error fetching metrics:",e),u(e instanceof Error?e.message:"An unknown error occurred"),s([])}finally{o(!1)}},[]);(0,n.useEffect)(()=>{m();let e=setInterval(m,15e3);return()=>clearInterval(e)},[m]);let x=e.length>0?e[e.length-1]:{rsrp:0,rsrq:0,sinr:0};return c?(0,t.jsx)(i.Zp,{children:(0,t.jsxs)(i.aR,{children:[(0,t.jsx)(i.ZB,{children:"Error Loading Signal Metrics"}),(0,t.jsx)(i.BT,{children:c})]})}):(0,t.jsxs)(i.Zp,{children:[(0,t.jsxs)(i.aR,{className:"flex flex-col items-stretch space-y-0 border-b p-0 sm:flex-row",children:[(0,t.jsxs)("div",{className:"flex flex-1 flex-col justify-center gap-1 px-6 py-5 sm:py-6",children:[(0,t.jsx)(i.ZB,{children:"Signal Metrics"}),(0,t.jsx)(i.BT,{children:"Realtime LTE/5G Signal performance"})]}),(0,t.jsx)("div",{className:"flex",children:["rsrp","rsrq","sinr"].map(e=>(0,t.jsxs)("button",{"data-active":l===e,className:"flex flex-1 flex-col justify-center gap-1 border-t px-6 py-4 text-left even:border-l data-[active=true]:bg-muted/50 sm:border-l sm:border-t-0 sm:px-8 sm:py-6",onClick:()=>r(e),children:[(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:b[e].label}),d?(0,t.jsx)(a.E,{className:"lg:h-10 h-6 w-full"}):(0,t.jsx)("span",{className:"text-base font-bold leading-none sm:text-3xl",children:x[e].toFixed(0)})]},e))})]}),(0,t.jsx)(i.Wu,{className:"px-2 sm:p-6",children:(0,t.jsx)(v.at,{config:b,className:"aspect-auto h-[250px] w-full",children:(0,t.jsxs)(g.b,{accessibilityLayer:!0,data:e,margin:{left:12,right:12},children:[(0,t.jsx)(j.d,{vertical:!1}),(0,t.jsx)(N.W,{dataKey:"time",tickLine:!1,axisLine:!1,tickMargin:8,minTickGap:32,tickFormatter:e=>new Date(e).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0})}),(0,t.jsx)(v.II,{content:(0,t.jsx)(v.Nt,{className:"w-[200px]",nameKey:"metric",labelFormatter:e=>new Date(e).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!0})})}),(0,t.jsx)(w.N,{dataKey:l,type:"monotone",stroke:"var(--color-".concat(l,")"),strokeWidth:2,dot:!1})]})})}),(0,t.jsxs)(i.wL,{className:"flex-col items-start gap-2 text-sm",children:[(0,t.jsx)("div",{className:"flex gap-2 font-medium leading-none",children:"The tabs show the combined average value for LTE and 5G metrics."}),(0,t.jsx)("div",{className:"leading-none text-muted-foreground italic",children:"The higher the value, the better the signal quality."})]})]})},k=e=>{if("Unknown!"===e)return"-";let s=e.match(/(\d+)/);if(!s)return e;let l=parseInt(s[1],10);return l>=1e3?"".concat(l/1e3).concat((e.includes("Gb"),"Gb/s")):"".concat(l).concat((e.includes("Mb"),"Mb/s"))},E=()=>{let[e,s]=(0,n.useState)({link_status:"Loading...",link_speed:"Loading...",auto_negotiation:"Loading..."}),[l,r]=(0,n.useState)(!0),[d,o]=(0,n.useState)(null);return((0,n.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/home/fetch_hw_details.sh?type=eth",{method:"GET",cache:"no-store",headers:{"Content-Type":"application/json"}});if(!e.ok)throw Error("Network response was not ok");let l=await e.json();s(l),r(!1)}catch(e){o("Failed to fetch Ethernet information"),r(!1)}})()},[]),d)?(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Ethernet"})}),(0,t.jsx)(i.Wu,{className:"flex items-center justify-center",children:(0,t.jsx)("div",{className:"text-red-500",children:d})})]}):(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Ethernet"})}),(0,t.jsx)(i.Wu,{children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-3 grid-cols-2 grid-flow-row gap-4 col-span-3",children:[(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Link Status"}),(0,t.jsx)("span",{className:"text-base font-bold",children:l?(0,t.jsx)(a.E,{className:"h-8 w-full"}):"yes"===e.link_status?"Active":"Inactive"})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Link Speed"}),(0,t.jsx)("span",{className:"text-base font-bold",children:l?(0,t.jsx)(a.E,{className:"h-8 w-full"}):k(e.link_speed)})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Auto-negotiation"}),(0,t.jsx)("span",{className:"text-base font-bold",children:l?(0,t.jsx)(a.E,{className:"h-8 w-full"}):"on"===e.auto_negotiation?"Active":"Inactive"})]})]})})]})},A=e=>"".concat(Math.round(e/1048576)," MB"),C=()=>{let[e,s]=(0,n.useState)({total:0,used:0,available:0}),[l,r]=(0,n.useState)(!0);return(0,n.useEffect)(()=>{let e=async()=>{try{let e=await fetch("/cgi-bin/home/fetch_hw_details.sh?type=memory",{method:"GET",cache:"no-store",headers:{"Content-Type":"application/json"}});if(!e.ok)throw Error("Network response was not ok");let t=await e.json();s(t),l&&r(!1)}catch(e){console.error("Failed to fetch memory information"),l&&r(!1)}};e();let t=setInterval(e,2e3);return()=>clearInterval(t)},[l]),(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Memory"})}),(0,t.jsx)(i.Wu,{children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-3 grid-cols-2 grid-flow-row gap-4 col-span-3",children:[(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Total"}),l?(0,t.jsx)(a.E,{className:"h-6 w-24"}):(0,t.jsx)("span",{className:"text-base font-bold",children:A(e.total)})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Used"}),l?(0,t.jsx)(a.E,{className:"h-6 w-24"}):(0,t.jsx)("span",{className:"text-base font-bold",children:A(e.used)})]}),(0,t.jsxs)("div",{className:"grid gap-1",children:[(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"Available"}),l?(0,t.jsx)(a.E,{className:"h-6 w-24"}):(0,t.jsx)("span",{className:"text-base font-bold",children:A(e.available)})]})]})})]})},R={ms:{label:"ms",color:"hsl(var(--chart-4))"}},T=()=>new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"}),I=()=>{let[e,s]=(0,n.useState)(()=>{let e=localStorage.getItem("pingData");return e?JSON.parse(e):[]}),[l,r]=(0,n.useState)(!0);return(0,n.useEffect)(()=>{let t=async()=>{try{let t=await fetch("/cgi-bin/home/ping_latency.sh",{method:"GET",cache:"no-store",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error("Network response was not ok");let n=await t.json(),i={time:T(),ms:n.latency},a=[...e,i].slice(-5);s(a),localStorage.setItem("pingData",JSON.stringify(a)),l&&r(!1)}catch(e){console.error("Failed to fetch ping latency",e),l&&r(!1)}};t();let n=setInterval(t,6e4);return()=>clearInterval(n)},[l,e]),(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Ping Latency"})}),(0,t.jsx)(i.Wu,{children:(0,t.jsx)(v.at,{config:R,children:(0,t.jsxs)(g.b,{accessibilityLayer:!0,data:e,margin:{left:12,right:12},children:[(0,t.jsx)(j.d,{vertical:!1}),(0,t.jsx)(N.W,{dataKey:"time",tickLine:!1,axisLine:!1,tickMargin:8,tickFormatter:e=>e}),(0,t.jsx)(v.II,{cursor:!1,content:(0,t.jsx)(v.Nt,{hideLabel:!0})}),(0,t.jsx)(w.N,{dataKey:"ms",type:"natural",stroke:"var(--color-ms)",strokeWidth:2,dot:!1})]})})})]})};var U=l(42541),M=l(93557),B=l(97801),D=l(14389),L=l(98969),z=l(17799),G=l(43719),_=l.n(G),P=l(7197),F=l(74043),H=l(22250);let Z=n.createContext(null);function O(){let e=n.useContext(Z);if(!e)throw Error("useCarousel must be used within a ");return e}let W=n.forwardRef((e,s)=>{let{orientation:l="horizontal",opts:r,setApi:i,plugins:a,className:d,children:o,...c}=e,[u,m]=(0,F.A)({...r,axis:"horizontal"===l?"x":"y"},a),[x,p]=n.useState(!1),[h,f]=n.useState(!1),v=n.useCallback(e=>{e&&(p(e.canScrollPrev()),f(e.canScrollNext()))},[]),g=n.useCallback(()=>{null==m||m.scrollPrev()},[m]),j=n.useCallback(()=>{null==m||m.scrollNext()},[m]),N=n.useCallback(e=>{"ArrowLeft"===e.key?(e.preventDefault(),g()):"ArrowRight"===e.key&&(e.preventDefault(),j())},[g,j]);return n.useEffect(()=>{m&&i&&i(m)},[m,i]),n.useEffect(()=>{if(m)return v(m),m.on("reInit",v),m.on("select",v),()=>{null==m||m.off("select",v)}},[m,v]),(0,t.jsx)(Z.Provider,{value:{carouselRef:u,api:m,opts:r,orientation:l||((null==r?void 0:r.axis)==="y"?"vertical":"horizontal"),scrollPrev:g,scrollNext:j,canScrollPrev:x,canScrollNext:h},children:(0,t.jsx)("div",{ref:s,onKeyDownCapture:N,className:(0,H.cn)("relative",d),role:"region","aria-roledescription":"carousel",...c,children:o})})});W.displayName="Carousel";let Q=n.forwardRef((e,s)=>{let{className:l,...n}=e,{carouselRef:r,orientation:i}=O();return(0,t.jsx)("div",{ref:r,className:"overflow-hidden",children:(0,t.jsx)("div",{ref:s,className:(0,H.cn)("flex","horizontal"===i?"-ml-4":"-mt-4 flex-col",l),...n})})});Q.displayName="CarouselContent";let q=n.forwardRef((e,s)=>{let{className:l,...n}=e,{orientation:r}=O();return(0,t.jsx)("div",{ref:s,role:"group","aria-roledescription":"slide",className:(0,H.cn)("min-w-0 shrink-0 grow-0 basis-full","horizontal"===r?"pl-4":"pt-4",l),...n})});q.displayName="CarouselItem";let K=n.forwardRef((e,s)=>{let{className:l,variant:n="outline",size:r="icon",...i}=e,{orientation:a,scrollPrev:d,canScrollPrev:o}=O();return(0,t.jsxs)(U.$,{ref:s,variant:n,size:r,className:(0,H.cn)("absolute h-8 w-8 rounded-full","horizontal"===a?"-left-12 top-1/2 -translate-y-1/2":"-top-12 left-1/2 -translate-x-1/2 rotate-90",l),disabled:!o,onClick:d,...i,children:[(0,t.jsx)(P.A60,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Previous slide"})]})});K.displayName="CarouselPrevious";let $=n.forwardRef((e,s)=>{let{className:l,variant:n="outline",size:r="icon",...i}=e,{orientation:a,scrollNext:d,canScrollNext:o}=O();return(0,t.jsxs)(U.$,{ref:s,variant:n,size:r,className:(0,H.cn)("absolute h-8 w-8 rounded-full","horizontal"===a?"-right-12 top-1/2 -translate-y-1/2":"-bottom-12 left-1/2 -translate-x-1/2 rotate-90",l),disabled:!o,onClick:d,...i,children:[(0,t.jsx)(P.flY,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Next slide"})]})});$.displayName="CarouselNext";let V=e=>{let{id:s,bandNumber:l,earfcn:n,bandwidth:r,pci:a,rsrp:o,rsrq:c,sinr:u}=e;return(0,t.jsx)(i.Zp,{className:"p-8",children:(0,t.jsxs)("div",{className:"flex flex-row items-center gap-6 justify-between",children:[(0,t.jsxs)("div",{className:"grid gap-2 w-[180px]",children:[(0,t.jsx)("h2",{className:"text-md font-bold",children:"Band"}),(0,t.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[l.replace("LTE BAND ","B").replace("NR5G BAND ","N"),l.includes("NR5G")&&(0,t.jsx)(d.E,{className:"text-xs bg-blue-600 hover:bg-blue-800",children:"NR 5G"})]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"E/ARFCN"}),(0,t.jsx)("p",{children:n})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"Bandwidth"}),(0,t.jsx)("p",{children:r})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"Physical Cell ID"}),(0,t.jsx)("p",{children:a})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"RSRP"}),(0,t.jsxs)(d.E,{className:parseInt(o)>=-80?"bg-emerald-500 hover:bg-emerald-800":parseInt(o)>=-100?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[o," dBm"]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"RSRQ"}),(0,t.jsxs)(d.E,{className:10>=parseInt(c)?"bg-emerald-500 hover:bg-emerald-800":20>=parseInt(c)?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[c," dB"]})]}),(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsx)("p",{className:"text-sm font-bold",children:"SINR"}),(0,t.jsxs)(d.E,{className:parseInt(u)>=20?"bg-emerald-500 hover:bg-emerald-800":parseInt(u)>=0?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[u," dB"]})]})]})})},J=e=>{let{bands:s,isLoading:l}=e;return l?(0,t.jsxs)("div",{className:"flex items-center justify-center",children:[(0,t.jsx)("div",{className:"hidden lg:block w-full",children:(0,t.jsxs)(i.Zp,{className:"p-6 grid gap-4",children:[s&&s.map(e=>(0,t.jsx)(V,{...e},e.id)),(0,t.jsx)(i.wL,{className:"w-full p-6 flex items-center justify-center",children:(0,t.jsx)(i.BT,{className:"text-md",children:"Currently bands connected."})})]})}),(0,t.jsx)(W,{className:"lg:hidden w-full max-w-xs",children:(0,t.jsx)(Q,{children:(0,t.jsx)(q,{children:(0,t.jsx)("div",{className:"p-1",children:(0,t.jsx)(i.Zp,{children:(0,t.jsxs)(i.Wu,{className:"aspect-square p-4 gap-4 flex flex-col items-center justify-center flex-grow",children:[(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Band"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"E/ARFCN"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Bandwidth"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"PCI"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-16 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRP"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-32 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRQ"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-32 h-4"})})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"SINR"}),(0,t.jsx)("div",{children:(0,t.jsx)(a.E,{className:"w-32 h-4"})})]})]})})})})})})]}):(0,t.jsxs)("div",{className:"flex items-center justify-center",children:[(0,t.jsx)("div",{className:"hidden lg:block w-full",children:(0,t.jsxs)(i.Zp,{className:"p-6 grid gap-4",children:[s&&s.map(e=>(0,t.jsx)(V,{...e},e.id)),(0,t.jsx)(i.wL,{className:"w-full p-6 flex items-center justify-center",children:(0,t.jsx)(i.BT,{className:"text-md",children:"Current bands connected."})})]})}),(0,t.jsxs)(W,{className:"lg:hidden w-full max-w-xs",children:[(0,t.jsx)(Q,{children:null==s?void 0:s.map(e=>(0,t.jsx)(q,{className:"md:basis-1/2 lg:basis-1/3",children:(0,t.jsx)("div",{className:"p-1",children:(0,t.jsx)(i.Zp,{children:(0,t.jsxs)(i.Wu,{className:"aspect-square p-4 gap-4 flex flex-col items-center justify-center flex-grow",children:[(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Band"}),(0,t.jsx)("p",{children:e.bandNumber})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"E/ARFCN"}),(0,t.jsx)("p",{children:e.earfcn})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"Bandwidth"}),(0,t.jsx)("p",{children:e.bandwidth})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"PCI"}),(0,t.jsx)("p",{children:e.pci})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRP"}),(0,t.jsxs)(d.E,{className:parseInt(e.rsrp)>=-80?"bg-emerald-500 hover:bg-emerald-800":parseInt(e.rsrp)>=-100?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[e.rsrp," dBm"]})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"RSRQ"}),(0,t.jsxs)(d.E,{className:10>=parseInt(e.rsrq)?"bg-emerald-500 hover:bg-emerald-800":20>=parseInt(e.rsrq)?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[e.rsrq," dB"]})]}),(0,t.jsxs)("div",{className:"flex justify-between w-full",children:[(0,t.jsx)("p",{children:"SINR"}),(0,t.jsxs)(d.E,{className:parseInt(e.sinr)>=20?"bg-emerald-500 hover:bg-emerald-800":parseInt(e.sinr)>=0?"bg-orange-500 hover:bg-orange-800":"bg-rose-500 hover:bg-rose-800",children:[e.sinr," dB"]})]})]})})})},e.id))}),(0,t.jsx)(K,{}),(0,t.jsx)($,{})]})]})},Y=(e,s)=>{var l,t,n,r;switch((null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[1].trim())||(null===(r=s.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[1].trim())){case"1":return"Registered";case"2":return"Searching";case"3":return"Denied";case"4":return"Unknown";case"5":return"Roaming";default:return"Not Registered"}},X=e=>{let s=e.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g),l=null==s?void 0:s.some(e=>e.includes("LTE")),t=null==s?void 0:s.some(e=>e.includes("NR5G"));return l&&t?"NR5G-NSA":l?"LTE":t?"NR5G-SA":"No Signal"},ee=e=>{let s=["cpuss-0","cpuss-1","cpuss-2","cpuss-3"].map(s=>{var l;let t=e.split("\n").find(e=>e.includes(s));return parseInt(null==t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[1].replace(/"/g,"").trim())}),l=s.reduce((e,s)=>e+s,0)/s.length;return"".concat(Math.round(l),"\xb0C")},es=(e,s)=>{var l;let t=e.split("\n").find(e=>e.includes("PCC"));t=null==t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[2].trim();let n=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("LTE"));n=n.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2].trim()});let r=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));if(r=r.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2].trim()}),"LTE"===s)return!n.length&&t?c[t]||"Unknown":[t?c[t]:"",...n.map(e=>c[e])].join(", ");if("NR5G-SA"===s&&t)return r.length?[u[t],...r.map(e=>u[e])].join(", "):u[t]||"Unknown";if("NR5G-NSA"===s&&t)return n.length||r.length?n.length&&!r.length?[c[t],...n.map(e=>c[e])].join(", "):[c[t],...n.map(e=>c[e]),...r.map(e=>u[e])].join(", "):c[t]||"Unknown";return"Unknown"},el=e=>{let s=e.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g);return(null==s?void 0:s.map(e=>e.includes("LTE")?"B".concat(e.match(/\d+/)):e.includes("NR5G")?"N".concat(null==e?void 0:e.split(" ")[2].replace(/"/g,"").trim()):void 0).join(", "))||"Unknown"},et=e=>{var s,l;let t=e.split("\n").find(e=>e.includes("LTE")),n=e.split("\n").find(e=>e.includes("NR5G")),r=[],i=[];if(t&&(r=null==t?void 0:null===(s=t.split(":")[1])||void 0===s?void 0:s.split(",").slice(0,4).map(e=>parseInt(e.trim()))),n&&(i=null==n?void 0:null===(l=n.split(":")[1])||void 0===l?void 0:l.split(",").slice(0,4).map(e=>parseInt(e.trim()))),r=r.filter(e=>-140!==e&&-37625!==e),i=i.filter(e=>-140!==e&&-37625!==e),r.length){if(i.length){let e=r.reduce((e,s)=>e+s,0)/r.length,s=i.reduce((e,s)=>e+s,0)/i.length,l=Math.max(0,Math.min(100,(e+125)/50*100)),t=Math.max(0,Math.min(100,(s+125)/50*100));return"".concat(Math.round((l+t)/2),"%")}{let e=Math.max(0,Math.min(100,(r.reduce((e,s)=>e+s,0)/r.length+125)/50*100));return"".concat(Math.round(e),"%")}}if(!i.length)return"Unknown%";{let e=Math.max(0,Math.min(100,(i.reduce((e,s)=>e+s,0)/i.length+125)/50*100));return"".concat(Math.round(e),"%")}},en=(e,s)=>{var l,t,n,r;return"NR5G-SA"===s||"LTE"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[6].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[4].trim():"Unknown"},er=(e,s)=>{var l,t,n,r,i,a;return"NR5G-SA"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[8].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[9].trim():"LTE"===s?null===(a=e.split("\n")[1])||void 0===a?void 0:null===(i=a.split(":")[1])||void 0===i?void 0:i.split(",")[12].trim():"Unknown"},ei=(e,s)=>{var l,t;if("LTE"===s||"NR5G-NSA"===s){let t=e.split("\n").find(e=>e.includes("PCC"));t=null==t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[5].trim();let n=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("LTE"));n=n.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5].trim()});let r=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));return(r=r.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[4].trim()}),n.length||r.length)?"LTE"===s?[t,...n].join(", "):[t,...n,...r].join(", "):t}if("NR5G-SA"===s){let s=e.split("\n").find(e=>e.includes("PCC"));s=null==s?void 0:null===(t=s.split(":")[1])||void 0===t?void 0:t.split(",")[4].trim();let l=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));return(l=l.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5].trim()})).length?[s,...l].join(", "):s}},ea=e=>{var s;let l=e.split("\n").find(e=>e.includes("PCC"));l=null==l?void 0:null===(s=l.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim();let t=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("LTE"));t=t.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim()});let n=e.split("\n").filter(e=>e.includes("SCC")&&e.includes("NR5G"));return(n=n.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim()}),!l||t.length||n.length)?l&&t.length&&!n.length?[l,...t].join(", "):l&&!t.length&&n.length?[l,...n].join(", "):l&&t.length&&n.length?[l,...t,...n].join(", "):"Unknown":l},ed=(e,s)=>{var l,t,n,r;return"LTE"===s||"NR5G-SA"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[4].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[2].trim():"Unknown"},eo=(e,s)=>{var l,t,n,r;return"LTE"===s||"NR5G-SA"===s?null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[5].trim():"NR5G-NSA"===s?null===(r=e.split("\n")[2])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[3].trim():void 0},ec=e=>{let s=e.split("\n"),l=s.find(e=>e.includes("LTE")),t=s.find(e=>e.includes("NR5G")),n=e=>{var s;return e?null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",").slice(0,4).map(e=>parseInt(e.trim())).filter(e=>-140!==e&&-37625!==e):[]},r=e=>e.length?Math.max(0,Math.min(100,(e.reduce((e,s)=>e+s,0)/e.length- -10)/40*100)):0,i=n(l),a=n(t),d=r(i),o=r(a);return i.length&&a.length?"".concat(Math.round((d+o)/2),"%"):i.length?"".concat(Math.round(d),"%"):a.length?"".concat(Math.round(o),"%"):"Unknown%"},eu=e=>{let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND"));return s.length&&l.length?[...s,...l].map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[3].replace(/"/g,"")}):s.length?s.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[3].replace(/"/g,"")}):l.length?l.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[3].replace(/"/g,"")}):["Unknown"]},em=e=>{let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND"));return s.length&&l.length?[...s,...l].map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1]}):s.length?s.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1]}):l.length?l.map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[1]}):["Unknown"]},ex=e=>{let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND")),t=s.map(e=>{var s;return c[null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2]]}),n=l.map(e=>{var s;return u[null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[2]]});return t.length&&n.length?[...t,...n]:t.length?t:n.length?n:["Unknown"]},ep=(e,s)=>{if("LTE"===s||"NR5G-SA"===s){var l;let s=e.split("\n").find(e=>e.includes("PCC"));s=s?null==s?void 0:null===(l=s.split(":")[1])||void 0===l?void 0:l.split(",")[4].trim():"Unknown";let t=e.split("\n").filter(e=>e.includes("BAND"));return t.length?[s,...t.map(e=>{var s;return(null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5])||"Unknown"})]:[s]}if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")),l=e.split("\n").filter(e=>e.includes("NR5G BAND"));return[...s.map(e=>{var s;return(null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5])||"Unknown"}),...l.map(e=>{var s;return(null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[4])||"Unknown"})]}return["Unknown"]},eh=(e,s,l)=>{if("LTE"===s)return e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[6]});if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[6]}),t=l.split("\n").filter(e=>e.includes("NR5G-NSA")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[4]});return s.length&&t.length?[...s,...t]:s.length?s:t.length?t:["Unknown"]}if("NR5G-SA"===s){let e=l.split("\n").find(e=>e.includes("NR5G-SA"));if(e){var t;return[null==e?void 0:null===(t=e.split(":")[1])||void 0===t?void 0:t.split(",")[12]]}}return["Unknown"]},ef=(e,s,l)=>{if("LTE"===s)return e.split("\n").filter(e=>e.includes("BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[7]});if("NR5G-SA"===s){var t;let e=l.split("\n").find(e=>e.includes("NR5G-SA"));return e?[null==e?void 0:null===(t=e.split(":")[1])||void 0===t?void 0:t.split(",")[13]]:["Unknown"]}if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[7]}),t=l.split("\n").filter(e=>e.includes("NR5G-NSA")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[6]});if(s.length&&t.length)return[...s,...t];if(s.length)return s;if(t.length)return t}return["Unknown"]},ev=(e,s,l)=>{if("LTE"===s)return e.split("\n").filter(e=>e.includes("BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[9]});if("NR5G-SA"===s){var t;let e=l.split("\n").find(e=>e.includes("NR5G-SA"));return e?[null==e?void 0:null===(t=e.split(":")[1])||void 0===t?void 0:t.split(",")[14]]:["Unknown"]}if("NR5G-NSA"===s){let s=e.split("\n").filter(e=>e.includes("LTE BAND")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[9]}),t=l.split("\n").filter(e=>e.includes("NR5G-NSA")).map(e=>{var s;return null==e?void 0:null===(s=e.split(":")[1])||void 0===s?void 0:s.split(",")[5]});if(s.length&&t.length)return[...s,...t];if(s.length)return s;if(t.length)return t}return["Unknown"]},eg=e=>{var s,l;let t=[-32768,-140],n=e.split("\n").find(e=>e.includes("LTE")),r=e.split("\n").find(e=>e.includes("NR5G")),i=[],a=[];return(n&&(i=null==n?void 0:null===(s=n.split(":")[1])||void 0===s?void 0:s.split(",").slice(0,4).map(e=>parseInt(e.trim()))),r&&(a=null==r?void 0:null===(l=r.split(":")[1])||void 0===l?void 0:l.split(",").slice(0,4).map(e=>parseInt(e.trim()))),i=i.filter(e=>!t.includes(e)),a=a.filter(e=>!t.includes(e)),i.length)?a.length?"LTE ".concat(i.length.toString()," / NR ").concat(a.length.toString()):"LTE ".concat(i.length.toString()):a.length?"NR ".concat(a.length.toString()):"Unknown"},ej=()=>{let[e,s]=(0,n.useState)(null),[l,t]=(0,n.useState)(!0),[r,i]=(0,n.useState)(null),a=(0,n.useCallback)(async()=>{try{var e,l,t,n,r,a,d,o,c,u,m,x,p,h,f,v;let i=await fetch(" /cgi-bin/fetch_data.sh?set=1"),g=await i.json();console.log(g);let j={simCard:{slot:(null===(e=g[0].response.split("\n")[1])||void 0===e?void 0:e.split(":")[1].trim())||"Unknown",state:g[6].response.match("READY")?"Inserted":"Not Inserted",provider:(null===(t=g[2].response.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[2].replace(/"/g,"").trim())||"Unknown",phoneNumber:(null===(r=g[1].response.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[1].replace(/"/g,"").trim())||"Unknown",imsi:g[3].response.split("\n")[1].trim()||"Unknown",iccid:(null===(a=g[4].response.split("\n")[1])||void 0===a?void 0:a.split(":")[1].trim())||"Unknown",imei:g[5].response.split("\n")[1].trim()||"Unknown"},connection:{apn:(null===(o=g[7].response.split("\n")[1])||void 0===o?void 0:null===(d=o.split(":")[1])||void 0===d?void 0:d.split(",")[2].replace(/"/g,"").trim())||(null===(u=g[12].response.split("\n")[1])||void 0===u?void 0:null===(c=u.split(":")[1])||void 0===c?void 0:c.split(",")[2].replace(/"/g,"").trim())||"Unknown",operatorState:Y(g[8].response,g[16].response)||"Unknown",functionalityState:(null===(m=g[9].response.split("\n")[1])||void 0===m?void 0:m.split(":")[1].trim())==="1"?"Enabled":"Disabled",networkType:X(g[13].response)||"No Signal",modemTemperature:ee(g[11].response)||"Unknown",accessTechnology:(null===(p=g[2].response.split("\n")[1])||void 0===p?void 0:null===(x=p.split(":")[1])||void 0===x?void 0:x.split(",")[3].trim())||"Unknown"},dataTransmission:{carrierAggregation:(null===(h=g[13].response.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g))||void 0===h?void 0:h.length)>1?"Multi":"Inactive",bandwidth:es(g[13].response,X(g[13].response))||"Unknown",connectedBands:el(g[13].response)||"Unknown",signalStrength:et(g[14].response)||"Unknown",mimoLayers:eg(g[14].response)||"Unknown"},cellularInfo:{cellId:en(g[10].response,X(g[13].response))||"Unknown",trackingAreaCode:er(g[10].response,X(g[13].response))||"Unknown",physicalCellId:ei(g[13].response,X(g[13].response)),earfcn:ea(g[13].response),mcc:ed(g[10].response,X(g[13].response))||"Unknown",mnc:eo(g[10].response,X(g[13].response))||"Unknown",signalQuality:ec(g[19].response)||"Unknown"},currentBands:{id:Array.from({length:null!==(v=null===(f=eu(g[13].response))||void 0===f?void 0:f.length)&&void 0!==v?v:0},(e,s)=>s+1)||[1],bandNumber:eu(g[13].response)||["Unknown"],earfcn:em(g[13].response),bandwidth:ex(g[13].response)||["Unknown"],pci:ep(g[13].response,X(g[13].response))||["Unknown"],rsrp:eh(g[13].response,X(g[13].response),g[10].response),rsrq:ef(g[13].response,X(g[13].response),g[10].response)||["Unknown"],sinr:ev(g[13].response,X(g[13].response),g[10].response)||["Unknown"]}};s(j)}catch(e){console.error("Error fetching home data:",e),s({simCard:{slot:"Unknown",state:"Not Inserted",provider:"Unknown",phoneNumber:"Unknown",imsi:"Unknown",iccid:"Unknown",imei:"Unknown"},connection:{apn:"Unknown",operatorState:"Unknown",functionalityState:"Disabled",networkType:"No Signal",modemTemperature:"Unknown",accessTechnology:"Unknown"},dataTransmission:{carrierAggregation:"Inactive",connectedBands:"Unknown",signalStrength:"Unknown",mimoLayers:"Unknown"},cellularInfo:{cellId:"Unknown",trackingAreaCode:"Unknown",physicalCellId:"Unknown",earfcn:"Unknown",mnc:"Unknown",signalQuality:"Unknown"},currentBands:{id:[1],bandNumber:["Unknown"],earfcn:["Unknown"],bandwidth:["Unknown"],pci:["Unknown"],rsrp:["Unknown"],rsrq:["Unknown"],sinr:["Unknown"]}}),i(null)}},[]);return(0,n.useEffect)(()=>{let e,s=!0;return(async()=>{if(s)try{await a()}finally{s&&t(!1)}})(),e=setInterval(()=>{a()},15e3),()=>{s=!1,clearInterval(e)}},[a]),{data:e,isLoading:l,error:r,refresh:(0,n.useCallback)(async()=>{t(!0),await a(),t(!1)},[a])}},eN=()=>{let[e,s]=(0,n.useState)("Unknown"),[l,t]=(0,n.useState)(!0),r=(0,n.useCallback)(async()=>{try{t(!0);let e=await fetch("/cgi-bin/home/check_net.sh"),l=await e.json();s("ACTIVE"===l.connection?"Connected":"Disconnected"),t(!1)}catch(e){console.error("Error fetching data connection state:",e),s("Unknown"),t(!1)}},[]);return(0,n.useEffect)(()=>{r();let e=setInterval(r,3e4);return()=>clearInterval(e)},[r]),{dataConnectionState:e,refresh:(0,n.useCallback)(()=>{r()},[r]),isStateLoading:l}},ew=e=>{if(0===e)return"0 Bytes";let s=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,s)).toFixed(2))+" "+["Bytes","KB","MB","GB","TB"][s]},eb=()=>{let[e,s]=(0,n.useState)("0 Bytes"),[l,t]=(0,n.useState)("0 Bytes"),[r,i]=(0,n.useState)(""),a=e=>{var l,n;let r=Array.isArray(e)?e[e.length-1]:e;if(!r)return;i(r.datetime);let a=r.output.replace(/\r\\n/g,"\n").trim().split("\n").filter(e=>e.trim()),d=null===(l=a.find(e=>e.includes("+QGDCNT:")))||void 0===l?void 0:l.trim(),o=null===(n=a.find(e=>e.includes("+QGDNRCNT:")))||void 0===n?void 0:n.trim();if(!d||!o){console.error("Missing required data in response");return}let[c,u]=d.replace("+QGDCNT:","").split(",").map(e=>parseInt(e.trim())),[m,x]=o.replace("+QGDNRCNT:","").split(",").map(e=>parseInt(e.trim()));s(ew((u||0)+(m||0))),t(ew((c||0)+(x||0)))},d=(0,n.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/home/fetch_data_usage.sh"),s=await e.json();a(s)}catch(e){console.error("Error fetching traffic stats:",e)}},[]);return(0,n.useEffect)(()=>{d();let e=setInterval(d,12e3);return()=>clearInterval(e)},[d]),{bytesSent:e,bytesReceived:l,lastUpdateTime:r,refresh:(0,n.useCallback)(()=>{d()},[d])}},ey=()=>{let[e,s]=(0,n.useState)(!1),[l,t]=(0,n.useState)(null),r=(e,s)=>{var l,t,n,r;let i=null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[1].trim(),a=null===(r=s.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[1].trim();return"1"===i||"1"===a?"Registered":"Not Registered"},i=(e,s)=>{var l,t,n,r;return(null===(t=e.split("\n")[1])||void 0===t?void 0:null===(l=t.split(":")[1])||void 0===l?void 0:l.split(",")[2].replace(/"/g,"").trim())===(null===(r=s.split("\n")[1])||void 0===r?void 0:null===(n=r.split(":")[1])||void 0===n?void 0:n.split(",")[2].replace(/"/g,"").trim())?"Enabled":"Disabled"},a=e=>{var s,l,t,n;let r=null===(l=e.split("\n")[1])||void 0===l?void 0:null===(s=l.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim(),i=null===(n=e.split("\n")[2])||void 0===n?void 0:null===(t=n.split(":")[1])||void 0===t?void 0:t.split(",")[1].trim();return r&&"1"===r||i&&"1"===i?"Connected":"Disconnected"},d=e=>{try{var s,l,t,n;let r=e.trim().split("\n").map(e=>e.trim()),i=r.find(e=>e.includes("+QRSRP:")&&e.includes("LTE")),a=r.find(e=>e.includes("+QRSRP:")&&e.includes("NR5G")),d=[];i&&(d=null==i?void 0:null===(l=i.split(":")[1])||void 0===l?void 0:null===(s=l.split(","))||void 0===s?void 0:s.slice(0,4).map(e=>e.trim()).filter(e=>!isNaN(parseInt(e))).map(e=>parseInt(e)));let o=[];if(a&&(o=null==a?void 0:null===(n=a.split(":")[1])||void 0===n?void 0:null===(t=n.split(","))||void 0===t?void 0:t.slice(0,4).map(e=>e.trim()).filter(e=>!isNaN(parseInt(e))).map(e=>parseInt(e))),d=d.filter(e=>-32768!==e),o=o.filter(e=>-32768!==e),d=d.filter(e=>-140!==e),o=o.filter(e=>-140!==e),d.length>0){let e=d.reduce((e,s)=>e+s,0)/d.length;if(o.length>0){let s=o.reduce((e,s)=>e+s,0)/o.length;return(e+s)/2<-100?"Poor":"Good"}return e<-100?"Poor":"Good"}if(o.length>0)return o.reduce((e,s)=>e+s,0)/o.length<-100?"Poor":"Good";return"N/A"}catch(e){return console.error("Error processing cell signal:",e),"N/A"}},o=e=>{let s=e.split("\n").filter(e=>e.startsWith("+QTEMP:")).map(e=>parseInt(e.split(":")[1].split(",")[1].replace(/"/g,"").trim())).filter(e=>e>=0&&e<99);return s.reduce((e,s)=>e+s,0)/s.length<50?"Normal":"High"},c=e=>{var s,l,t,n,r,i;let a=null===(l=e.split("\n")[1])||void 0===l?void 0:null===(s=l.split(":")[1])||void 0===s?void 0:s.split(",")[1].trim(),d=null===(n=e.split("\n")[2])||void 0===n?void 0:null===(t=n.split(":")[1])||void 0===t?void 0:t.split(",")[1].trim(),o=null===(i=e.split("\n")[3])||void 0===i?void 0:null===(r=i.split(":")[1])||void 0===r?void 0:r.split(",")[1].trim(),c=["0"!==a?"".concat(a):null,"0"!==d?"".concat(d):null,"0"!==o?"".concat(o):null].filter(Boolean);return c.length>0?c.join(", "):"None"};return{isRunningDiagnostics:e,runDiagnosticsData:l,startDiagnostics:async()=>{s(!0);try{let e=await fetch("/cgi-bin/fetch_data.sh?set=6"),s=await e.json();console.log("Diagnostics data:",s);let l={netRegistration:r(s[0].response,s[1].response),simState:s[2].response.split("\n")[1].split(":")[1].trim(),manualAPN:i(s[3].response,s[4].response),wanIP:a(s[5].response),cellSignal:d(s[6].response),modemTemp:o(s[7].response),netReject:c(s[8].response)};return t(l),l}catch(e){throw console.error("Error running diagnostics:",e),e}finally{s(!1)}}}};var eS=l(80159),ek=l(44734);let eE=e=>{let{shouldScaleBackground:s=!0,...l}=e;return(0,t.jsx)(ek._s.Root,{shouldScaleBackground:s,...l})};eE.displayName="Drawer";let eA=ek._s.Trigger,eC=ek._s.Portal;ek._s.Close;let eR=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(ek._s.Overlay,{ref:s,className:(0,H.cn)("fixed inset-0 z-50 bg-black/80",l),...n})});eR.displayName=ek._s.Overlay.displayName;let eT=n.forwardRef((e,s)=>{let{className:l,children:n,...r}=e;return(0,t.jsxs)(eC,{children:[(0,t.jsx)(eR,{}),(0,t.jsxs)(ek._s.Content,{ref:s,className:(0,H.cn)("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",l),...r,children:[(0,t.jsx)("div",{className:"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted"}),n]})]})});eT.displayName="DrawerContent",n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(ek._s.Title,{ref:s,className:(0,H.cn)("text-lg font-semibold leading-none tracking-tight",l),...n})}).displayName=ek._s.Title.displayName,n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(ek._s.Description,{ref:s,className:(0,H.cn)("text-sm text-muted-foreground",l),...n})}).displayName=ek._s.Description.displayName;var eI=l(12607),eU=l(25262),eM=l(8782),eB=l(10964),eD=l(89463),eL=l(90304),ez=l(622),eG=l(20633),e_=l(7778),eP=l(99312),eF=l(92823),eH=l(90281);let eZ=e=>{if(null==e)return"N/A";let s=["B","KB","MB","GB"],l=e,t=0;for(;l>=1024&&t{if(null==e)return"N/A";let s=["bps","Kbps","Mbps","Gbps"],l=8*e,t=0;for(;l>=1e3&&t{let[e,s]=(0,n.useState)(null),[l,r]=(0,n.useState)(null),[a,d]=(0,n.useState)(!1),[o,c]=(0,n.useState)(null),[u,m]=(0,n.useState)(!1),[x,p]=(0,n.useState)(!1),[h,f]=(0,n.useState)(!1),[v,g]=(0,n.useState)(0),[j,N]=(0,n.useState)(!1),[w,b]=(0,n.useState)(!1),y=(0,n.useRef)(null),S=(0,n.useRef)(null),k=(0,n.useCallback)(()=>{s(null),r(null),c(null),m(!1),p(!1),f(!1),g(0),y.current=null},[]),E=(0,n.useCallback)(async()=>{try{let e=await fetch("/cgi-bin/experimental/keep_alive.sh?status=true"),s=await e.json();if(s.enabled){let e=new Date,l=60*e.getHours()+e.getMinutes(),[t,n]=s.start_time.split(":").map(Number),[r,i]=s.end_time.split(":").map(Number);b(l>=60*t+n&&l<=60*r+i)}else b(!1)}catch(e){console.error("Failed to check keep-alive schedule:",e),b(!1)}},[]);(0,n.useEffect)(()=>{E();let e=setInterval(E,6e4);return()=>clearInterval(e)},[E]),(0,n.useEffect)(()=>{if(u&&!x){N(!0);let e=setTimeout(()=>{N(!1)},1e4);return()=>clearTimeout(e)}},[u,x]),(0,n.useEffect)(()=>()=>{S.current&&S.current.abort()},[]);let A=(0,n.useCallback)(async()=>{if(!j&&!w)try{if(k(),f(!0),S.current&&S.current.abort(),!(await fetch("/cgi-bin/home/speedtest/start_speedtest.sh",{method:"GET"})).ok)throw Error("Failed to start speedtest");C()}catch(e){console.error("Speedtest start error:",e),c(e instanceof Error?"Failed to start speedtest: ".concat(e.message):"Failed to start speedtest"),f(!1)}},[j,w,k]),C=(0,n.useCallback)(()=>{S.current=new AbortController,d(!1),p(!0),f(!1);try{fetch("/cgi-bin/home/speedtest/speedtest_stream.sh",{method:"GET",signal:S.current.signal}).then(async e=>{var t;if(!e.ok)throw Error("Network response was not ok");d(!0);let n=null===(t=e.body)||void 0===t?void 0:t.getReader(),i=new TextDecoder;if(!n)throw Error("Unable to get reader from response body");let a="";for(;;){let{done:e,value:t}=await n.read();if(e)break;let d=i.decode(t,{stream:!0}),o=(a+=d).split("\n\n");for(let e of(a=o.pop()||"",o))if(e.startsWith("data: "))try{let t=JSON.parse(e.replace("data: ","").trim());switch(t.type){case"ping":r("ping"),g(t.ping.progress);break;case"download":case"upload":"ping"!==l&&r(t.type);break;case"result":m(!0),p(!1),n.cancel()}y.current=t,s(t)}catch(e){console.error("Parsing error:",e)}}}).catch(e=>{"AbortError"!==e.name&&(console.error("Fetch error:",e),c("Connection failed: ".concat(e instanceof Error?e.message:String(e))),p(!1))})}catch(e){console.error("Failed to initialize fetch:",e),c("Failed to connect to speedtest stream"),p(!1)}},[l]);return(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsx)(i.ZB,{children:"Network Speedtest"})}),(0,t.jsxs)(i.Wu,{className:"flex flex-col gap-6 p-4 items-center justify-center",children:[(0,t.jsxs)(eE,{children:[(0,t.jsx)(eA,{asChild:!0,children:(0,t.jsxs)("div",{className:"relative flex flex-col items-center justify-center",children:[(0,t.jsx)(eH.A,{color:"#5420ab",size:192,className:"-top-8 -left-8 absolute",style:{zIndex:1}}),(0,t.jsx)(D.A,{className:"size-32 ".concat(w?"text-gray-400 cursor-not-allowed":"text-primary cursor-pointer"," z-10"),onClick:A})]})}),(0,t.jsx)(eT,{children:(0,t.jsx)("div",{className:"lg:max-w-full max-w-sm mx-auto min-w-sm p-6 py-12",children:(()=>{var s,n,r,a,d,c,m,x,p,f,g;if(o)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-4",children:[(0,t.jsx)(eI.A,{className:"text-rose-600 lg:size-48 size-16 animate-pulse"}),(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Network Speedtest Failed"}),(0,t.jsxs)("p",{className:"text-sm text-gray-500",children:["Something went wrong while running the speedtest.",(0,t.jsx)("p",{className:"underline cursor-pointer ml-2",onClick:A,children:"Please try again."})]})]});if(h)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-4",children:[(0,t.jsx)(eU.A,{className:"text-primary lg:size-48 size-16 animate-pulse"}),(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Initiating Network Speedtest"}),(0,t.jsx)("p",{className:"text-sm text-gray-500 text-center",children:"Locating and establishing a connection to a server. Please wait..."})]});if("ping"===l)return(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center space-y-4",children:[(0,t.jsx)(eM.A,{className:"text-gray-600 size-16 animate-pulse"}),(0,t.jsx)("h3",{className:"text-xl font-semibold",children:"Calculating Ping Latency"}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2.5",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2.5 rounded-full",style:{width:"".concat(100*(v||0),"%")}})}),(0,t.jsx)("p",{className:"text-sm text-gray-500",children:(null==e?void 0:e.ping)?"Latency: ".concat(e.ping.latency.toFixed(2)," ms, \n Jitter: ").concat(e.ping.jitter.toFixed(2)," ms"):"Measuring network responsiveness..."})]});if(u)return(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4 w-full min-w-sm",children:[(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsxs)(i.ZB,{className:"flex items-center",children:[(0,t.jsx)(eB.A,{className:"mr-4 text-violet-600"})," Speedtest Result"]})}),(0,t.jsx)(i.Wu,{className:"lg:py-12 py-6 min-w-sm w-full",children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4 lg:gap-y-0 gap-y-8 gap-x-8",children:[(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(eD.A,{className:"text-green-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"font-semibold",children:"Download"})]}),(0,t.jsx)("h1",{className:"text-[3rem] font-semibold text-center antialiased leading-tight",children:eO(null==e?void 0:e.download.bandwidth)}),(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eL.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Latency"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(m=null==e?void 0:null===(a=e.download.latency)||void 0===a?void 0:null===(r=a.iqm)||void 0===r?void 0:r.toFixed(2))&&void 0!==m?m:"N/A"," ","ms"]})]})]}),(0,t.jsxs)("div",{className:"grid gap-1.5 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,t.jsx)(ez.A,{className:"text-violet-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"font-semibold",children:"Upload"})]}),(0,t.jsx)("h1",{className:"text-[3rem] font-semibold text-center antialiased leading-tight",children:eO(null==e?void 0:e.upload.bandwidth)}),(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eL.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Latency"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(x=null==e?void 0:null===(c=e.upload.latency)||void 0===c?void 0:null===(d=c.iqm)||void 0===d?void 0:d.toFixed(2))&&void 0!==x?x:"N/A"," ","ms"]})]})]})]})}),(0,t.jsxs)(i.wL,{className:"mt-4 grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eM.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Ping"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(p=null==e?void 0:e.ping.latency.toFixed(2))&&void 0!==p?p:"N/A"," ms"]})]}),(0,t.jsxs)("div",{className:"grid gap-0.5 lg:flex lg:items-center lg:space-x-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-x-2",children:[(0,t.jsx)(eG.A,{className:"text-gray-600 lg:size-6 size-4"}),(0,t.jsx)("p",{className:"text-foreground-muted text-sm text-center",children:"Jitter"})]}),(0,t.jsxs)("p",{className:"text-foreground-muted text-sm text-center",children:[null!==(f=null==e?void 0:e.ping.jitter.toFixed(2))&&void 0!==f?f:"N/A"," ms"]})]})]})]}),(0,t.jsxs)(i.Zp,{children:[(0,t.jsx)(i.aR,{children:(0,t.jsxs)(i.ZB,{className:"flex items-center",children:[(0,t.jsx)(e_.A,{className:"mr-4 text-blue-600"})," Connection & Server Details"]})}),(0,t.jsx)(i.Wu,{children:(0,t.jsxs)("div",{className:"grid gap-2",children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"ISP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.isp})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Internal IP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.interface.internalIp})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"External IP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.interface.externalIp})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Server Name:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.name})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Location:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.location})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Country:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.country})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 grid-flow-row gap-2 truncate",children:[(0,t.jsx)("p",{className:"font-medium",children:"Server IP:"}),(0,t.jsx)("p",{children:null==e?void 0:e.server.host})]}),(null==e?void 0:e.result.url)&&(0,t.jsxs)("div",{className:"flex items-center gap-x-2 mt-4",children:[(0,t.jsx)(eP.A,{className:"text-blue-600 size-4"}),(0,t.jsx)("a",{href:e.result.url,target:"_blank",rel:"noopener noreferrer",className:"font-medium text-blue-600 hover:underline",children:"View Full Result Online"})]})]})})]})]});if(!l||!e)return null;let j=e[l],N="download"===l;return(0,t.jsxs)(i.Zp,{className:"p-4 w-full",children:[(0,t.jsx)(i.aR,{children:(0,t.jsxs)(i.ZB,{className:"flex items-center",children:[N?(0,t.jsx)(eD.A,{className:"text-green-500 lg:size-6 size-4 mr-1"}):(0,t.jsx)(ez.A,{className:"text-violet-500 lg:size-6 size-4 mr-1"}),(0,t.jsxs)("p",{className:"ml-2",children:["Testing ",N?"Download":"Upload"," Speed"]})]})}),(0,t.jsx)(i.Wu,{children:(0,t.jsx)("div",{className:"grid place-items-center max-w-sm lg:max-w-full mx-auto w-full",children:(0,t.jsx)("h1",{className:"lg:text-[4rem] text-[3rem] font-semibold text-center",children:eO(j.bandwidth)})})}),(0,t.jsx)(i.wL,{children:(0,t.jsxs)("div",{className:"grid lg:grid-cols-3 grid-cols-1 grid-flow-row gap-4",children:[(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(eF.A,{className:"mr-2 text-yellow-600"}),"Bytes Transferred"]}),(0,t.jsx)("p",{className:"lg:text-md text-base text-muted font-semibold",children:eZ(j.bytes)})]}),(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(eB.A,{className:"mr-2 text-purple-600"}),"Elapsed Time"]}),(0,t.jsxs)("p",{className:"lg:text-md text-base text-muted font-semibold",children:[(j.elapsed/1e3).toFixed(2)," sec"]})]}),(0,t.jsxs)("div",{className:"grid gap-1 place-items-center",children:[(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(eM.A,{className:"mr-2 text-gray-600"}),"Latency (IQM)"]}),(0,t.jsxs)("p",{className:"lg:text-md text-base text-muted font-semibold",children:[null!==(g=null===(n=j.latency)||void 0===n?void 0:null===(s=n.iqm)||void 0===s?void 0:s.toFixed(2))&&void 0!==g?g:"N/A"," ms"]})]})]})})]})})()})})]}),(0,t.jsx)(i.BT,{children:w?"Speedtest is disabled during keep-alive schedule.":j?"Please wait 10 seconds before starting another test.":"Run a speed test to check your internet connection."})]})]})},eQ=()=>{let{toast:e}=(0,r.dj)(),{data:s,isLoading:l,refresh:i}=ej(),{dataConnectionState:a,isStateLoading:d,refresh:c}=eN(),{isRunningDiagnostics:u,runDiagnosticsData:m,startDiagnostics:x}=ey(),{bytesSent:v,bytesReceived:g,refresh:j}=eb(),N=async()=>{try{let s=await fetch("/cgi-bin/settings/force-rerun.sh"),l=await s.json();if("success"===l.status)e({title:"Data Refreshed",description:"Data and scripts has been refreshed successfully"});else if("info"===l.status)e({title:"Data Refreshed",description:"Data refreshed successfully, but no scripts to restart."});else throw Error("Failed to restart scripts")}catch(s){console.error("Error rerunning scripts:",s),e({variant:"destructive",title:"Script Restart Failed",description:"Failed to restart the required scripts"})}},w=async()=>{try{var l;let t=null==s?void 0:null===(l=s.simCard)||void 0===l?void 0:l.slot,n=encodeURIComponent("Slot 1"===t?"AT+QUIMSLOT=1":"AT+QUIMSLOT=2"),r=await fetch("/cgi-bin/at_command.sh?command=".concat(n));if(!r.ok)throw Error("HTTP error! status: ".concat(r.status));let i=await r.json();if(i.error)throw Error(i.error);e({title:"SIM Slot Changed",description:"The SIM slot has been changed successfully"}),setTimeout(async()=>{let e=encodeURIComponent("AT+COPS=0;+COPS=2"),s=await fetch("/cgi-bin/at_command.sh?command=".concat(e));if(!s.ok)throw Error("HTTP error! status: ".concat(s.status));let l=await s.json();if(l.error)throw Error(l.error)},3e3),setTimeout(b,3e3)}catch(s){console.error("Error changing SIM slot:",s),e({variant:"destructive",title:"SIM Slot Change Failed",description:"Failed to change the SIM slot"})}},b=(0,n.useCallback)(async()=>{try{await Promise.all([i(),c(),j()]),await N()}catch(s){console.error("Error refreshing data:",s),e({variant:"destructive",title:"Refresh Failed",description:"Failed to refresh the data"})}},[i,c,j,e]),[y,k]=(0,n.useState)([]),A=async()=>{try{await x()}catch(e){console.error("Error running diagnostics:",e)}};return(0,n.useEffect)(()=>{m&&console.log("Diagnostics data updated:",m)},[m]),(0,n.useEffect)(()=>{if(s&&s.currentBands){var e;let l=null===(e=s.currentBands.id)||void 0===e?void 0:e.map((e,l)=>{var t,n,r,i,a,d,o;return{id:e,bandNumber:(null===(t=s.currentBands.bandNumber)||void 0===t?void 0:t[l])||"N/A",earfcn:(null===(n=s.currentBands.earfcn)||void 0===n?void 0:n[l])||"N/A",bandwidth:(null===(r=s.currentBands.bandwidth)||void 0===r?void 0:r[l])||"N/A",pci:(null===(i=s.currentBands.pci)||void 0===i?void 0:i[l])||"N/A",rsrp:(null===(a=s.currentBands.rsrp)||void 0===a?void 0:a[l])||"N/A",rsrq:(null===(d=s.currentBands.rsrq)||void 0===d?void 0:d[l])||"N/A",sinr:(null===(o=s.currentBands.sinr)||void 0===o?void 0:o[l])||"N/A"}});l&&k(l)}},[s]),(0,t.jsxs)("div",{className:"grid xl:gap-y-12 gap-y-8 gap-4",children:[(0,t.jsxs)("div",{className:"grid gap-4",children:[(0,t.jsxs)("div",{className:"flex flex-row justify-between items-center",children:[(0,t.jsxs)("div",{className:"flex flex-row gap-2 items-center",children:[(0,t.jsx)("h1",{className:"xl:text-3xl text-base font-bold",children:"Connection Summary"}),(0,t.jsx)(U.$,{variant:"ghost",size:"icon",className:"text-sm",onClick:b,children:(0,t.jsx)(B.A,{className:"xl:size-6 size-5 text-blue-500",strokeWidth:3})})]}),(0,t.jsxs)("div",{className:"flex flex-row items-center gap-x-2",children:[(null==s?void 0:s.simCard.state)==="Not Inserted"&&(0,t.jsxs)(M.lG,{children:[(0,t.jsx)(M.zM,{children:(0,t.jsxs)(U.$,{variant:"destructive",children:[(0,t.jsx)(eS.fU4,{className:"xl:size-6 size-5"}),(0,t.jsx)("span",{className:"hidden md:block",children:"No SIM"})]})}),(0,t.jsxs)(M.Cf,{className:"max-w-xs md:max-w-lg",children:[(0,t.jsx)(M.c7,{children:(0,t.jsx)(M.L3,{children:"No SIM Detected"})}),(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsx)("div",{className:"flex items-center justify-center",children:(0,t.jsx)(eS.fU4,{className:"xl:size-14 md:size-12 size-6 text-red-500"})}),(0,t.jsx)("p",{className:"text-center",children:"There is no SIM card detected in the device. Please insert a SIM card or change the SIM card slot to use the device."})]}),(0,t.jsxs)("div",{className:"flex justify-end mt-4",children:[(0,t.jsx)(U.$,{variant:"secondary",onClick:w,className:"mr-2",children:"Change SIM Slot"}),(0,t.jsx)(M.HM,{asChild:!0,children:(0,t.jsx)(U.$,{children:"Close"})})]})]})]}),(0,t.jsxs)(M.lG,{children:[(0,t.jsx)(M.zM,{children:(0,t.jsxs)(U.$,{variant:"secondary",onClick:A,children:[(0,t.jsx)(D.A,{className:"xl:size-6 size-5"}),(0,t.jsx)("span",{className:"hidden md:block",children:"Run Diagnostics"})]})}),!u&&(0,t.jsxs)(M.Cf,{className:"max-w-xs md:max-w-lg",children:[(0,t.jsx)(M.c7,{children:(0,t.jsx)(M.L3,{children:"Diagnostics Result"})}),(0,t.jsx)(M.rr,{children:"This is the result of the diagnostic test ran on your device."}),(0,t.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Network Registration "}),(null==m?void 0:m.netRegistration)==="Registered"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"U-SIM State"}),(null==m?void 0:m.simState)==="READY"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Manual APN"}),(null==m?void 0:m.manualAPN)==="Enabled"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"WAN IP"}),(null==m?void 0:m.wanIP)==="Connected"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Cellular Signal"}),(null==m?void 0:m.cellSignal)==="Good"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Modem Temperature"}),(null==m?void 0:m.modemTemp)==="Normal"?(0,t.jsx)(L.A,{className:"text-green-500"}):(0,t.jsx)(z.A,{className:"text-red-500"})]}),(0,t.jsxs)("div",{className:"flex items-center justify-between mt-6",children:[(0,t.jsx)("h3",{className:"font-semibold",children:"Net Reject Cause"}),(null==m?void 0:m.netReject)==="None"?(0,t.jsxs)("div",{className:"flex space-x-2 items-center",children:[(0,t.jsx)(L.A,{className:"text-green-500"}),(0,t.jsx)("span",{children:"None"})]}):(0,t.jsxs)("div",{className:"flex space-x-2 items-center",children:[(0,t.jsx)(z.A,{className:"text-red-500"}),(0,t.jsx)("span",{children:null==m?void 0:m.netReject})]})]})]})]}),u&&(0,t.jsxs)(M.Cf,{className:"max-w-xs md:max-w-lg",children:[(0,t.jsx)(M.c7,{children:(0,t.jsx)(M.L3,{children:"Running Diagnostics"})}),(0,t.jsx)("div",{className:"flex items-center justify-center my-4",children:(0,t.jsx)(_(),{color:"#6D28D9"})}),(0,t.jsx)(M.rr,{className:"text-center",children:"Please wait while we run diagnostics on your device."})]})]})]})]}),(0,t.jsxs)("div",{className:"grid lg:grid-cols-2 grid-cols-1 grid-flow-row gap-4",children:[(0,t.jsx)("div",{children:(0,t.jsx)(S,{})}),(0,t.jsxs)("div",{className:"grid gap-2 lg:grid-cols-2 grid-cols-1 grid-flow-row",children:[(0,t.jsx)(E,{}),(0,t.jsx)(C,{}),(0,t.jsx)(eW,{}),(0,t.jsx)(I,{})]})]}),(0,t.jsxs)("div",{className:"grid 2xl:grid-cols-4 lg:grid-cols-2 grid-cols-1 gap-4",children:[(0,t.jsx)(o,{data:s,isLoading:l}),(0,t.jsx)(p,{data:s,isLoading:l,dataConnectionState:a,connectionStateLoading:d}),(0,t.jsx)(h,{data:s,isLoading:l,bytesSent:v,bytesReceived:g}),(0,t.jsx)(f,{data:s,isLoading:l})]})]}),(0,t.jsxs)("div",{className:"grid xl:gap-6 gap-4",children:[(0,t.jsx)("h1",{className:"xl:text-3xl text-base font-bold",children:"Current Active Bands"}),(0,t.jsx)(J,{bands:y,isLoading:l})]})]})}},45934:(e,s,l)=>{"use strict";l.d(s,{E:()=>a});var t=l(20475);l(20107);var n=l(29395),r=l(22250);let i=(0,n.F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function a(e){let{className:s,variant:l,...n}=e;return(0,t.jsx)("div",{className:(0,r.cn)(i({variant:l}),s),...n})}},42541:(e,s,l)=>{"use strict";l.d(s,{$:()=>o,r:()=>d});var t=l(20475),n=l(20107),r=l(61837),i=l(29395),a=l(22250);let d=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),o=n.forwardRef((e,s)=>{let{className:l,variant:n,size:i,asChild:o=!1,...c}=e,u=o?r.DX:"button";return(0,t.jsx)(u,{className:(0,a.cn)(d({variant:n,size:i,className:l})),ref:s,...c})});o.displayName="Button"},72167:(e,s,l)=>{"use strict";l.d(s,{BT:()=>o,Wu:()=>c,ZB:()=>d,Zp:()=>i,aR:()=>a,wL:()=>u});var t=l(20475),n=l(20107),r=l(22250);let i=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("rounded-xl border bg-card text-card-foreground shadow",l),...n})});i.displayName="Card";let a=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("flex flex-col space-y-1.5 p-6",l),...n})});a.displayName="CardHeader";let d=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("h3",{ref:s,className:(0,r.cn)("font-semibold leading-none tracking-tight",l),...n})});d.displayName="CardTitle";let o=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("p",{ref:s,className:(0,r.cn)("text-sm text-muted-foreground",l),...n})});o.displayName="CardDescription";let c=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("p-6 pt-0",l),...n})});c.displayName="CardContent";let u=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)("div",{ref:s,className:(0,r.cn)("flex items-center p-6 pt-0",l),...n})});u.displayName="CardFooter"},1307:(e,s,l)=>{"use strict";l.d(s,{II:()=>p,Nt:()=>h,at:()=>m});var t=l(20475),n=l(20107),r=l(81155),i=l(80982),a=l(58736),d=l(22250);let o={light:"",dark:".dark"},c=n.createContext(null);function u(){let e=n.useContext(c);if(!e)throw Error("useChart must be used within a ");return e}let m=n.forwardRef((e,s)=>{let{id:l,className:i,children:a,config:o,...u}=e,m=n.useId(),p="chart-".concat(l||m.replace(/:/g,""));return(0,t.jsx)(c.Provider,{value:{config:o},children:(0,t.jsxs)("div",{"data-chart":p,ref:s,className:(0,d.cn)("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",i),...u,children:[(0,t.jsx)(x,{id:p,config:o}),(0,t.jsx)(r.u,{children:a})]})})});m.displayName="Chart";let x=e=>{let{id:s,config:l}=e,n=Object.entries(l).filter(e=>{let[s,l]=e;return l.theme||l.color});return n.length?(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:Object.entries(o).map(e=>{let[l,t]=e;return"\n".concat(t," [data-chart=").concat(s,"] {\n").concat(n.map(e=>{var s;let[t,n]=e,r=(null===(s=n.theme)||void 0===s?void 0:s[l])||n.color;return r?" --color-".concat(t,": ").concat(r,";"):null}).join("\n"),"\n}\n")}).join("\n")}}):null},p=i.m,h=n.forwardRef((e,s)=>{let{active:l,payload:r,className:i,indicator:a="dot",hideLabel:o=!1,hideIndicator:c=!1,label:m,labelFormatter:x,labelClassName:p,formatter:h,color:v,nameKey:g,labelKey:j}=e,{config:N}=u(),w=n.useMemo(()=>{var e;if(o||!(null==r?void 0:r.length))return null;let[s]=r,l="".concat(j||s.dataKey||s.name||"value"),n=f(N,s,l),i=j||"string"!=typeof m?null==n?void 0:n.label:(null===(e=N[m])||void 0===e?void 0:e.label)||m;return x?(0,t.jsx)("div",{className:(0,d.cn)("font-medium",p),children:x(i,r)}):i?(0,t.jsx)("div",{className:(0,d.cn)("font-medium",p),children:i}):null},[m,x,r,o,p,N,j]);if(!l||!(null==r?void 0:r.length))return null;let b=1===r.length&&"dot"!==a;return(0,t.jsxs)("div",{ref:s,className:(0,d.cn)("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",i),children:[b?null:w,(0,t.jsx)("div",{className:"grid gap-1.5",children:r.map((e,s)=>{let l="".concat(g||e.name||e.dataKey||"value"),n=f(N,e,l),r=v||e.payload.fill||e.color;return(0,t.jsx)("div",{className:(0,d.cn)("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground","dot"===a&&"items-center"),children:h&&(null==e?void 0:e.value)!==void 0&&e.name?h(e.value,e.name,e,s,e.payload):(0,t.jsxs)(t.Fragment,{children:[(null==n?void 0:n.icon)?(0,t.jsx)(n.icon,{}):!c&&(0,t.jsx)("div",{className:(0,d.cn)("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":"dot"===a,"w-1":"line"===a,"w-0 border-[1.5px] border-dashed bg-transparent":"dashed"===a,"my-0.5":b&&"dashed"===a}),style:{"--color-bg":r,"--color-border":r}}),(0,t.jsxs)("div",{className:(0,d.cn)("flex flex-1 justify-between leading-none",b?"items-end":"items-center"),children:[(0,t.jsxs)("div",{className:"grid gap-1.5",children:[b?w:null,(0,t.jsx)("span",{className:"text-muted-foreground",children:(null==n?void 0:n.label)||e.name})]}),e.value&&(0,t.jsx)("span",{className:"font-mono font-medium tabular-nums text-foreground",children:e.value.toLocaleString()})]})]})},e.dataKey)})})]})});function f(e,s,l){if("object"!=typeof s||null===s)return;let t="payload"in s&&"object"==typeof s.payload&&null!==s.payload?s.payload:void 0,n=l;return l in s&&"string"==typeof s[l]?n=s[l]:t&&l in t&&"string"==typeof t[l]&&(n=t[l]),n in e?e[n]:e[l]}h.displayName="ChartTooltip",a.s,n.forwardRef((e,s)=>{let{className:l,hideIcon:n=!1,payload:r,verticalAlign:i="bottom",nameKey:a}=e,{config:o}=u();return(null==r?void 0:r.length)?(0,t.jsx)("div",{ref:s,className:(0,d.cn)("flex items-center justify-center gap-4","top"===i?"pb-3":"pt-3",l),children:r.map(e=>{let s="".concat(a||e.dataKey||"value"),l=f(o,e,s);return(0,t.jsxs)("div",{className:(0,d.cn)("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[(null==l?void 0:l.icon)&&!n?(0,t.jsx)(l.icon,{}):(0,t.jsx)("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:e.color}}),null==l?void 0:l.label]},e.value)})}):null}).displayName="ChartLegend"},93557:(e,s,l)=>{"use strict";l.d(s,{Cf:()=>x,HM:()=>u,L3:()=>h,c7:()=>p,lG:()=>d,rr:()=>f,zM:()=>o});var t=l(20475),n=l(20107),r=l(71827),i=l(7197),a=l(22250);let d=r.bL,o=r.l9,c=r.ZL,u=r.bm,m=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(r.hJ,{ref:s,className:(0,a.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",l),...n})});m.displayName=r.hJ.displayName;let x=n.forwardRef((e,s)=>{let{className:l,children:n,...d}=e;return(0,t.jsxs)(c,{children:[(0,t.jsx)(m,{}),(0,t.jsxs)(r.UC,{ref:s,className:(0,a.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",l),...d,children:[n,(0,t.jsxs)(r.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[(0,t.jsx)(i.MKb,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})});x.displayName=r.UC.displayName;let p=e=>{let{className:s,...l}=e;return(0,t.jsx)("div",{className:(0,a.cn)("flex flex-col space-y-1.5 text-center sm:text-left",s),...l})};p.displayName="DialogHeader";let h=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(r.hE,{ref:s,className:(0,a.cn)("text-lg font-semibold leading-none tracking-tight",l),...n})});h.displayName=r.hE.displayName;let f=n.forwardRef((e,s)=>{let{className:l,...n}=e;return(0,t.jsx)(r.VY,{ref:s,className:(0,a.cn)("text-sm text-muted-foreground",l),...n})});f.displayName=r.VY.displayName},36760:(e,s,l)=>{"use strict";l.d(s,{E:()=>r});var t=l(20475),n=l(22250);function r(e){let{className:s,...l}=e;return(0,t.jsx)("div",{className:(0,n.cn)("animate-pulse rounded-md bg-primary/10",s),...l})}},32857:(e,s,l)=>{"use strict";l.d(s,{dj:()=>m,oR:()=>u});var t=l(20107);let n=0,r=new Map,i=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},a=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:l}=s;return l?i(l):e.toasts.forEach(e=>{i(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===l||void 0===l?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},d=[],o={toasts:[]};function c(e){o=a(o,e),d.forEach(e=>{e(o)})}function u(e){let{...s}=e,l=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),t=()=>c({type:"DISMISS_TOAST",toastId:l});return c({type:"ADD_TOAST",toast:{...s,id:l,open:!0,onOpenChange:e=>{e||t()}}}),{id:l,dismiss:t,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:l}})}}function m(){let[e,s]=t.useState(o);return t.useEffect(()=>(d.push(s),()=>{let e=d.indexOf(s);e>-1&&d.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,s,l)=>{"use strict";l.d(s,{cn:()=>r});var t=l(64901),n=l(868);function r(){for(var e=arguments.length,s=Array(e),l=0;l{var s=s=>e(e.s=s);e.O(0,[9980,9649,7780,1617,5011,1827,1074,9107,191,6035,7358],()=>s(31710)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/layout-c44a86d95f813876.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/layout-c44a86d95f813876.js deleted file mode 100644 index 9175fb0..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/dashboard/layout-c44a86d95f813876.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1954],{99750:(e,t,a)=>{Promise.resolve().then(a.bind(a,92646))},92646:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>O});var s=a(20475),r=a(9477),o=a.n(r),n=a(19546),i=a(20107),d=a(16118);let l=e=>{let{children:t}=e,a=(0,d.useRouter)(),{isAuthenticated:r,checkAuth:o}=(0,n.A)();return((0,i.useEffect)(()=>{o()||a.push("/login")},[]),r)?(0,s.jsx)(s.Fragment,{children:t}):null};var c=a(39997);let u=(0,c.A)("RadioTower",[["path",{d:"M4.9 16.1C1 12.2 1 5.8 4.9 1.9",key:"s0qx1y"}],["path",{d:"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5",key:"1idnkw"}],["circle",{cx:"12",cy:"9",r:"2",key:"1092wv"}],["path",{d:"M16.2 4.8c2 2 2.26 5.11.8 7.47",key:"ojru2q"}],["path",{d:"M19.1 1.9a9.96 9.96 0 0 1 0 14.1",key:"rhi7fg"}],["path",{d:"M9.5 18h5",key:"mfy3pd"}],["path",{d:"m8 22 4-11 4 11",key:"25yftu"}]]),m=(0,c.A)("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]),f=(0,c.A)("UserRound",[["circle",{cx:"12",cy:"8",r:"5",key:"1hypcn"}],["path",{d:"M20 21a8 8 0 0 0-16 0",key:"rfgkzh"}]]),h=(0,c.A)("Power",[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]]);var p=a(42541),x=a(86118),g=a(76837);let y=(0,c.A)("Sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),b=(0,c.A)("Moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);var v=a(39524),j=a(71827),w=a(7197),N=a(29395),k=a(22250);let A=j.bL,R=j.l9,C=j.bm,T=j.ZL,S=i.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(j.hJ,{className:(0,k.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...r,ref:t})});S.displayName=j.hJ.displayName;let _=(0,N.F)("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),E=i.forwardRef((e,t)=>{let{side:a="right",className:r,children:o,...n}=e;return(0,s.jsxs)(T,{children:[(0,s.jsx)(S,{}),(0,s.jsxs)(j.UC,{ref:t,className:(0,k.cn)(_({side:a}),r),...n,children:[(0,s.jsxs)(j.bm,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[(0,s.jsx)(w.MKb,{className:"h-4 w-4"}),(0,s.jsx)("span",{className:"sr-only",children:"Close"})]}),o]})]})});E.displayName=j.UC.displayName,i.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(j.hE,{ref:t,className:(0,k.cn)("text-lg font-semibold text-foreground",a),...r})}).displayName=j.hE.displayName,i.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(j.VY,{ref:t,className:(0,k.cn)("text-sm text-muted-foreground",a),...r})}).displayName=j.VY.displayName;var D=a(32857);let O=e=>{let{children:t}=e,a=(0,d.usePathname)(),{logout:r}=(0,n.A)(),{setTheme:c}=(0,v.D)(),[j,w]=(0,i.useState)(!1),[N,k]=(0,i.useState)("192.168.224.1"),T=(0,D.dj)(),S=async e=>{try{let t=encodeURIComponent(e),a=await fetch("/cgi-bin/at_command.sh?command=".concat(t),{method:"GET",headers:{Accept:"application/json"}});if(!a.ok)throw Error("Failed to save settings");return a}catch(e){throw console.error("AT Command error:",e),e}},_=async()=>{try{w(!0),await S("AT+QPOWD=1"),T.toast({title:"Rebooting device",description:"Please wait for the device to restart. This may take up to ".concat(90," seconds."),duration:9e4}),setTimeout(()=>{T.toast({title:"Device is now active",description:"The device has been rebooted successfully."})},9e4),setTimeout(()=>{window.location.reload()},92e3)}catch(e){console.error("Reboot error:",e),T.toast({title:"Failed to reboot device",description:"Please try again.",variant:"destructive"})}finally{w(!1)}},O=async()=>{try{await S("AT+COPS=2"),T.toast({title:"Reconnecting to network",description:"Please wait for the device to reconnect."}),await new Promise(e=>setTimeout(e,2e3)),await S("AT+COPS=0"),T.toast({title:"Reconnected to network",description:"The device has been reconnected successfully."}),await new Promise(e=>setTimeout(e,3e3)),window.location.reload()}catch(e){T.toast({title:"Failed to reconnect to network",description:"Please try again.",variant:"destructive"})}(0,i.useEffect)(()=>{(async()=>{try{let e=await fetch("/cgi-bin/settings/get-ip.sh");if(!e.ok)throw Error("HTTP error! status: ".concat(e.status));let t=await e.json();k(t.br_lan_ip)}catch(e){console.error("Failed to fetch IP address:",e),T.toast({title:"Failed to fetch IP address",description:"Using default IP address",variant:"destructive"})}})()},[])};return(0,s.jsxs)("div",{className:"flex min-h-screen w-full flex-col",children:[(0,s.jsxs)("header",{className:"sticky top-0 flex h-16 items-center gap-4 border-b bg-background px-4 md:px-6",children:[(0,s.jsxs)("nav",{className:"hidden flex-col gap-6 text-lg font-medium md:flex md:flex-row md:items-center md:gap-5 md:text-base lg:gap-6",children:[(0,s.jsxs)(o(),{href:"/dashboard/home/",className:"flex items-center gap-2 text-lg font-semibold md:text-xl md:mr-8",children:[(0,s.jsx)(u,{className:"h-6 w-6"}),(0,s.jsx)("h1",{children:"QuecManager"})]}),(0,s.jsx)(o(),{href:"/dashboard/home/",className:"".concat("/dashboard/home/"===a?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Home"}),(0,s.jsx)(o(),{href:"/dashboard/cell-settings/basic-settings/",className:"".concat(a.includes("/dashboard/cell-settings/")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Cellular"}),(0,s.jsx)(o(),{href:"/dashboard/advanced-settings/connectivity",className:"".concat(a.includes("/dashboard/advanced-settings")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Advance"}),(0,s.jsx)(o(),{href:"/dashboard/experimental/quecwatch",className:"".concat(a.includes("/dashboard/experimental/")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Experimental"}),(0,s.jsx)(o(),{href:"/dashboard/about/",className:"".concat(a.includes("/dashboard/about/")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"About"})]}),(0,s.jsxs)(A,{children:[(0,s.jsx)(R,{asChild:!0,children:(0,s.jsxs)(p.$,{variant:"outline",size:"icon",className:"shrink-0 md:hidden",children:[(0,s.jsx)(m,{className:"h-5 w-5"}),(0,s.jsx)("span",{className:"sr-only",children:"Toggle navigation menu"})]})}),(0,s.jsx)(E,{side:"left",children:(0,s.jsxs)("nav",{className:"grid gap-6 text-lg font-medium",children:[(0,s.jsx)(C,{asChild:!0,children:(0,s.jsxs)(o(),{href:"/dashboard/home/",className:"flex items-center gap-2 text-lg font-semibold",children:[(0,s.jsx)(u,{className:"h-6 w-6"}),(0,s.jsx)("span",{children:"QuecManager"})]})}),(0,s.jsx)(C,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/home/",className:"".concat("/dashboard/home/"===a?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Home"})}),(0,s.jsx)(C,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/cell-settings/basic-settings/",className:"".concat(a.includes("/dashboard/cell-settings")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Cellular"})}),(0,s.jsx)(C,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/advanced-settings/connectivity",className:"".concat(a.includes("/dashboard/advanced-settings")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Advance"})}),(0,s.jsx)(C,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/experimental/",className:"".concat("/dashboard/experimental/"===a?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Experimental"})}),(0,s.jsx)(C,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/about/",className:"".concat("/dashboard/about/"===a?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"About"})}),(0,s.jsx)(C,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/settings/security",className:"".concat(a.includes("/dashboard/settings")?"text-foreground":"text-muted-foreground"," transition-colors hover:text-foreground"),children:"Settings"})})]})})]}),(0,s.jsxs)("div",{className:"flex w-full items-center gap-4 md:ml-auto md:gap-2 lg:gap-4",children:[(0,s.jsx)("form",{className:"ml-auto flex-1 sm:flex-initial",children:(0,s.jsxs)(x.rI,{children:[(0,s.jsx)(x.ty,{asChild:!0,children:(0,s.jsxs)(p.$,{variant:"outline",size:"icon",children:[(0,s.jsx)(y,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),(0,s.jsx)(b,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),(0,s.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}),(0,s.jsxs)(x.SQ,{align:"end",children:[(0,s.jsx)(x._2,{onClick:()=>c("light"),children:"Light"}),(0,s.jsx)(x._2,{onClick:()=>c("dark"),children:"Dark"}),(0,s.jsx)(x._2,{onClick:()=>c("system"),children:"System"})]})]})}),(0,s.jsxs)(x.rI,{children:[(0,s.jsx)(x.ty,{asChild:!0,children:(0,s.jsxs)(p.$,{variant:"secondary",size:"icon",className:"rounded-full",children:[(0,s.jsx)(f,{className:"h-5 w-5"}),(0,s.jsx)("span",{className:"sr-only",children:"Toggle user menu"})]})}),(0,s.jsxs)(x.SQ,{align:"end",children:[(0,s.jsx)(x.lp,{children:"Options"}),(0,s.jsx)(x.mB,{}),(0,s.jsx)(x._2,{asChild:!0,children:(0,s.jsx)(o(),{href:"/dashboard/settings/general",children:"Settings"})}),(0,s.jsx)(x._2,{asChild:!0,children:(0,s.jsx)("a",{href:"/cgi-bin/luci",target:"_blank",rel:"noreferrer noopener",children:"Luci"})}),(0,s.jsx)(x._2,{asChild:!0,children:(0,s.jsx)("a",{href:"https://github.com/iamromulan/quectel-rgmii-toolkit/discussions/new/choose",target:"_blank",children:"Support"})}),(0,s.jsx)(x.mB,{}),(0,s.jsx)(x._2,{onClick:O,children:"Reconnect"}),(0,s.jsx)(x._2,{asChild:!0,children:(0,s.jsxs)(g.Lt,{children:[(0,s.jsx)(g.tv,{asChild:!0,children:(0,s.jsx)("button",{className:"relative flex w-full cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground",children:"Reboot"})}),(0,s.jsxs)(g.EO,{children:[(0,s.jsxs)(g.wd,{children:[(0,s.jsx)(g.r7,{children:"Are you sure?"}),(0,s.jsx)(g.$v,{children:"This will reboot your device. The connection will be lost temporarily. Please wait for the page to reload."})]}),(0,s.jsxs)(g.ck,{children:[(0,s.jsx)(g.Zr,{children:"Cancel"}),(0,s.jsxs)(g.Rx,{onClick:_,disabled:j,children:[(0,s.jsx)(h,{className:"size-4"}),"Reboot Now"]})]})]})]})}),(0,s.jsx)(x.mB,{}),(0,s.jsx)(x._2,{onClick:r,children:"Logout"})]})]})]})]}),(0,s.jsx)("main",{className:"flex min-h-[calc(100vh_-_theme(spacing.16))] flex-1 flex-col gap-4 bg-muted/40 p-4 md:gap-8 md:p-10",children:(0,s.jsx)(l,{children:t})})]})}},76837:(e,t,a)=>{"use strict";a.d(t,{Lt:()=>D,Rx:()=>U,Zr:()=>V,EO:()=>I,$v:()=>F,ck:()=>M,wd:()=>z,r7:()=>L,tv:()=>O});var s=a(20475),r=a(20107),o=a(80938),n=a(74111),i=a(71827),d=a(94521),l=a(61837),c="AlertDialog",[u,m]=(0,o.A)(c,[i.Hs]),f=(0,i.Hs)(),h=e=>{let{__scopeAlertDialog:t,...a}=e,r=f(t);return(0,s.jsx)(i.bL,{...r,...a,modal:!0})};h.displayName=c;var p=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,o=f(a);return(0,s.jsx)(i.l9,{...o,...r,ref:t})});p.displayName="AlertDialogTrigger";var x=e=>{let{__scopeAlertDialog:t,...a}=e,r=f(t);return(0,s.jsx)(i.ZL,{...r,...a})};x.displayName="AlertDialogPortal";var g=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,o=f(a);return(0,s.jsx)(i.hJ,{...o,...r,ref:t})});g.displayName="AlertDialogOverlay";var y="AlertDialogContent",[b,v]=u(y),j=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,children:o,...c}=e,u=f(a),m=r.useRef(null),h=(0,n.s)(t,m),p=r.useRef(null);return(0,s.jsx)(i.G$,{contentName:y,titleName:w,docsSlug:"alert-dialog",children:(0,s.jsx)(b,{scope:a,cancelRef:p,children:(0,s.jsxs)(i.UC,{role:"alertdialog",...u,...c,ref:h,onOpenAutoFocus:(0,d.m)(c.onOpenAutoFocus,e=>{var t;e.preventDefault(),null===(t=p.current)||void 0===t||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,s.jsx)(l.xV,{children:o}),(0,s.jsx)(S,{contentRef:m})]})})})});j.displayName=y;var w="AlertDialogTitle",N=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,o=f(a);return(0,s.jsx)(i.hE,{...o,...r,ref:t})});N.displayName=w;var k="AlertDialogDescription",A=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,o=f(a);return(0,s.jsx)(i.VY,{...o,...r,ref:t})});A.displayName=k;var R=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,o=f(a);return(0,s.jsx)(i.bm,{...o,...r,ref:t})});R.displayName="AlertDialogAction";var C="AlertDialogCancel",T=r.forwardRef((e,t)=>{let{__scopeAlertDialog:a,...r}=e,{cancelRef:o}=v(C,a),d=f(a),l=(0,n.s)(t,o);return(0,s.jsx)(i.bm,{...d,...r,ref:l})});T.displayName=C;var S=e=>{let{contentRef:t}=e,a="`".concat(y,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(y,"` by passing a `").concat(k,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(y,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return r.useEffect(()=>{var e;document.getElementById(null===(e=t.current)||void 0===e?void 0:e.getAttribute("aria-describedby"))||console.warn(a)},[a,t]),null},_=a(22250),E=a(42541);let D=h,O=p,P=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(g,{className:(0,_.cn)("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...r,ref:t})});P.displayName=g.displayName;let I=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsxs)(x,{children:[(0,s.jsx)(P,{}),(0,s.jsx)(j,{ref:t,className:(0,_.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),...r})]})});I.displayName=j.displayName;let z=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,_.cn)("flex flex-col space-y-2 text-center sm:text-left",t),...a})};z.displayName="AlertDialogHeader";let M=e=>{let{className:t,...a}=e;return(0,s.jsx)("div",{className:(0,_.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};M.displayName="AlertDialogFooter";let L=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(N,{ref:t,className:(0,_.cn)("text-lg font-semibold",a),...r})});L.displayName=N.displayName;let F=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(A,{ref:t,className:(0,_.cn)("text-sm text-muted-foreground",a),...r})});F.displayName=A.displayName;let U=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(R,{ref:t,className:(0,_.cn)((0,E.r)(),a),...r})});U.displayName=R.displayName;let V=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(T,{ref:t,className:(0,_.cn)((0,E.r)({variant:"outline"}),"mt-2 sm:mt-0",a),...r})});V.displayName=T.displayName},42541:(e,t,a)=>{"use strict";a.d(t,{$:()=>l,r:()=>d});var s=a(20475),r=a(20107),o=a(61837),n=a(29395),i=a(22250);let d=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),l=r.forwardRef((e,t)=>{let{className:a,variant:r,size:n,asChild:l=!1,...c}=e,u=l?o.DX:"button";return(0,s.jsx)(u,{className:(0,i.cn)(d({variant:r,size:n,className:a})),ref:t,...c})});l.displayName="Button"},86118:(e,t,a)=>{"use strict";a.d(t,{SQ:()=>c,_2:()=>u,lp:()=>m,mB:()=>f,rI:()=>d,ty:()=>l});var s=a(20475),r=a(20107),o=a(33169),n=a(7197),i=a(22250);let d=o.bL,l=o.l9;o.YJ,o.ZL,o.Pb,o.z6,r.forwardRef((e,t)=>{let{className:a,inset:r,children:d,...l}=e;return(0,s.jsxs)(o.ZP,{ref:t,className:(0,i.cn)("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",r&&"pl-8",a),...l,children:[d,(0,s.jsx)(n.vKP,{className:"ml-auto h-4 w-4"})]})}).displayName=o.ZP.displayName,r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(o.G5,{ref:t,className:(0,i.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...r})}).displayName=o.G5.displayName;let c=r.forwardRef((e,t)=>{let{className:a,sideOffset:r=4,...n}=e;return(0,s.jsx)(o.ZL,{children:(0,s.jsx)(o.UC,{ref:t,sideOffset:r,className:(0,i.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",a),...n})})});c.displayName=o.UC.displayName;let u=r.forwardRef((e,t)=>{let{className:a,inset:r,...n}=e;return(0,s.jsx)(o.q7,{ref:t,className:(0,i.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",a),...n})});u.displayName=o.q7.displayName,r.forwardRef((e,t)=>{let{className:a,children:r,checked:d,...l}=e;return(0,s.jsxs)(o.H_,{ref:t,className:(0,i.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),checked:d,...l,children:[(0,s.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,s.jsx)(o.VF,{children:(0,s.jsx)(n.Srz,{className:"h-4 w-4"})})}),r]})}).displayName=o.H_.displayName,r.forwardRef((e,t)=>{let{className:a,children:r,...d}=e;return(0,s.jsxs)(o.hN,{ref:t,className:(0,i.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",a),...d,children:[(0,s.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,s.jsx)(o.VF,{children:(0,s.jsx)(n.RiX,{className:"h-4 w-4 fill-current"})})}),r]})}).displayName=o.hN.displayName;let m=r.forwardRef((e,t)=>{let{className:a,inset:r,...n}=e;return(0,s.jsx)(o.JU,{ref:t,className:(0,i.cn)("px-2 py-1.5 text-sm font-semibold",r&&"pl-8",a),...n})});m.displayName=o.JU.displayName;let f=r.forwardRef((e,t)=>{let{className:a,...r}=e;return(0,s.jsx)(o.wv,{ref:t,className:(0,i.cn)("-mx-1 my-1 h-px bg-muted",a),...r})});f.displayName=o.wv.displayName},19546:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var s=a(20107),r=a(16118);function o(){let[e,t]=(0,s.useState)(!1),[a,o]=(0,s.useState)(!0),n=(0,r.useRouter)();async function i(){try{let e=await fetch("/cgi-bin/heartbeat.sh",{method:"GET",headers:{"Cache-Control":"no-cache"}});if(!e.ok){d();return}(await e.json()).alive?o(!0):d()}catch(e){d()}}function d(){o(!1),c()}function l(e){let t={token:e,lastActivity:Date.now(),expiresAt:Date.now()+18e5};localStorage.setItem("session",JSON.stringify(t))}function c(){localStorage.removeItem("session"),t(!1),n.push("/login")}function u(){let e=function(){let e=function(){let e=localStorage.getItem("session");if(!e)return null;try{return JSON.parse(e)}catch(e){return null}}();if(!e)return!1;let t=Date.now();return t>e.expiresAt?(c(),!1):(t-e.lastActivity>3e5&&l(e.token),!0)}();return t(e),e}return(0,s.useEffect)(()=>{u();let e=setInterval(i,5e3);return()=>{clearInterval(e)}},[]),{isAuthenticated:e,isServerAlive:a,login:async function(e){let a=encodeURIComponent(e);try{let e=await fetch("/cgi-bin/auth.sh",{method:"POST",headers:{"Content-Type":"application/json"},body:"password=".concat(a)}),s=await e.json();if(console.log(s),"success"!==s.state)return!1;{let e=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";return Array.from(crypto.getRandomValues(new Uint8Array(e))).map(e=>t[e%t.length]).join("")}();return l(e),t(!0),n.push("/dashboard/home"),!0}}catch(e){return console.error("Login error:",e),!1}},logout:c,checkAuth:u}}},32857:(e,t,a)=>{"use strict";a.d(t,{dj:()=>m,oR:()=>u});var s=a(20107);let r=0,o=new Map,n=e=>{if(o.has(e))return;let t=setTimeout(()=>{o.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);o.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:a}=t;return a?n(a):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===a||void 0===a?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},d=[],l={toasts:[]};function c(e){l=i(l,e),d.forEach(e=>{e(l)})}function u(e){let{...t}=e,a=(r=(r+1)%Number.MAX_SAFE_INTEGER).toString(),s=()=>c({type:"DISMISS_TOAST",toastId:a});return c({type:"ADD_TOAST",toast:{...t,id:a,open:!0,onOpenChange:e=>{e||s()}}}),{id:a,dismiss:s,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:a}})}}function m(){let[e,t]=s.useState(l);return s.useEffect(()=>(d.push(t),()=>{let e=d.indexOf(t);e>-1&&d.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,a)=>{"use strict";a.d(t,{cn:()=>o});var s=a(64901),r=a(868);function o(){for(var e=arguments.length,t=Array(e),a=0;a{"use strict";a.d(t,{A:()=>d});var s=a(20107);let r=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),o=function(){for(var e=arguments.length,t=Array(e),a=0;a!!e&&a.indexOf(e)===t).join(" ")};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let i=(0,s.forwardRef)((e,t)=>{let{color:a="currentColor",size:r=24,strokeWidth:i=2,absoluteStrokeWidth:d,className:l="",children:c,iconNode:u,...m}=e;return(0,s.createElement)("svg",{ref:t,...n,width:r,height:r,stroke:a,strokeWidth:d?24*Number(i)/Number(r):i,className:o("lucide",l),...m},[...u.map(e=>{let[t,a]=e;return(0,s.createElement)(t,a)}),...Array.isArray(c)?c:[c]])}),d=(e,t)=>{let a=(0,s.forwardRef)((a,n)=>{let{className:d,...l}=a;return(0,s.createElement)(i,{ref:n,iconNode:t,className:o("lucide-".concat(r(e)),d),...l})});return a.displayName="".concat(e),a}},16118:(e,t,a)=>{"use strict";var s=a(65834);a.o(s,"usePathname")&&a.d(t,{usePathname:function(){return s.usePathname}}),a.o(s,"useRouter")&&a.d(t,{useRouter:function(){return s.useRouter}})}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,1617,4673,5011,9477,1827,9700,191,6035,7358],()=>t(99750)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/layout-c2a293729c29972e.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/layout-c2a293729c29972e.js deleted file mode 100644 index b265711..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/layout-c2a293729c29972e.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{49194:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,22670,23)),Promise.resolve().then(r.bind(r,74347)),Promise.resolve().then(r.bind(r,75276)),Promise.resolve().then(r.bind(r,85014))},74347:(e,t,r)=>{"use strict";r.d(t,{ThemeProvider:()=>a});var n=r(20475);r(20107);var o=r(39524);function a(e){let{children:t,...r}=e;return(0,n.jsx)(o.N,{...r,children:t})}},75276:(e,t,r)=>{"use strict";r.d(t,{Toaster:()=>es});var n=r(20475),o=r(32857),a=r(20107),s=r(7197),i=r(25642),l=r(94521),c=r(74111),d=r(67595),u=r(80938),m=r(15975),f=r(82412),p=r(62796),v=r(4589),h=r(85547),w=r(81255),y=r(58013),x=r(20232),g="ToastProvider",[E,T,b]=(0,d.N)("Toast"),[S,C]=(0,u.A)("Toast",[b]),[N,R]=S(g),j=e=>{let{__scopeToast:t,label:r="Notification",duration:o=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:l}=e,[c,d]=a.useState(null),[u,m]=a.useState(0),f=a.useRef(!1),p=a.useRef(!1);return r.trim()||console.error("Invalid prop `label` supplied to `".concat(g,"`. Expected non-empty `string`.")),(0,n.jsx)(E.Provider,{scope:t,children:(0,n.jsx)(N,{scope:t,label:r,duration:o,swipeDirection:s,swipeThreshold:i,toastCount:u,viewport:c,onViewportChange:d,onToastAdd:a.useCallback(()=>m(e=>e+1),[]),onToastRemove:a.useCallback(()=>m(e=>e-1),[]),isFocusedToastEscapeKeyDownRef:f,isClosePausedRef:p,children:l})})};j.displayName=g;var P="ToastViewport",A=["F8"],k="toast.viewportPause",I="toast.viewportResume",L=a.forwardRef((e,t)=>{let{__scopeToast:r,hotkey:o=A,label:s="Notifications ({hotkey})",...i}=e,l=R(P,r),d=T(r),u=a.useRef(null),f=a.useRef(null),p=a.useRef(null),h=a.useRef(null),w=(0,c.s)(t,h,l.onViewportChange),y=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),x=l.toastCount>0;a.useEffect(()=>{let e=e=>{var t;0!==o.length&&o.every(t=>e[t]||e.code===t)&&(null===(t=h.current)||void 0===t||t.focus())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[o]),a.useEffect(()=>{let e=u.current,t=h.current;if(x&&e&&t){let r=()=>{if(!l.isClosePausedRef.current){let e=new CustomEvent(k);t.dispatchEvent(e),l.isClosePausedRef.current=!0}},n=()=>{if(l.isClosePausedRef.current){let e=new CustomEvent(I);t.dispatchEvent(e),l.isClosePausedRef.current=!1}},o=t=>{e.contains(t.relatedTarget)||n()},a=()=>{e.contains(document.activeElement)||n()};return e.addEventListener("focusin",r),e.addEventListener("focusout",o),e.addEventListener("pointermove",r),e.addEventListener("pointerleave",a),window.addEventListener("blur",r),window.addEventListener("focus",n),()=>{e.removeEventListener("focusin",r),e.removeEventListener("focusout",o),e.removeEventListener("pointermove",r),e.removeEventListener("pointerleave",a),window.removeEventListener("blur",r),window.removeEventListener("focus",n)}}},[x,l.isClosePausedRef]);let g=a.useCallback(e=>{let{tabbingDirection:t}=e,r=d().map(e=>{let r=e.ref.current,n=[r,...function(e){let t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}(r)];return"forwards"===t?n:n.reverse()});return("forwards"===t?r.reverse():r).flat()},[d]);return a.useEffect(()=>{let e=h.current;if(e){let t=t=>{let r=t.altKey||t.ctrlKey||t.metaKey;if("Tab"===t.key&&!r){var n,o,a;let r=document.activeElement,s=t.shiftKey;if(t.target===e&&s){null===(n=f.current)||void 0===n||n.focus();return}let i=g({tabbingDirection:s?"backwards":"forwards"}),l=i.findIndex(e=>e===r);$(i.slice(l+1))?t.preventDefault():s?null===(o=f.current)||void 0===o||o.focus():null===(a=p.current)||void 0===a||a.focus()}};return e.addEventListener("keydown",t),()=>e.removeEventListener("keydown",t)}},[d,g]),(0,n.jsxs)(m.lg,{ref:u,role:"region","aria-label":s.replace("{hotkey}",y),tabIndex:-1,style:{pointerEvents:x?void 0:"none"},children:[x&&(0,n.jsx)(M,{ref:f,onFocusFromOutsideViewport:()=>{$(g({tabbingDirection:"forwards"}))}}),(0,n.jsx)(E.Slot,{scope:r,children:(0,n.jsx)(v.sG.ol,{tabIndex:-1,...i,ref:w})}),x&&(0,n.jsx)(M,{ref:p,onFocusFromOutsideViewport:()=>{$(g({tabbingDirection:"backwards"}))}})]})});L.displayName=P;var D="ToastFocusProxy",M=a.forwardRef((e,t)=>{let{__scopeToast:r,onFocusFromOutsideViewport:o,...a}=e,s=R(D,r);return(0,n.jsx)(x.s,{"aria-hidden":!0,tabIndex:0,...a,ref:t,style:{position:"fixed"},onFocus:e=>{var t;let r=e.relatedTarget;(null===(t=s.viewport)||void 0===t?void 0:t.contains(r))||o()}})});M.displayName=D;var O="Toast",_=a.forwardRef((e,t)=>{let{forceMount:r,open:o,defaultOpen:a,onOpenChange:s,...i}=e,[c=!0,d]=(0,w.i)({prop:o,defaultProp:a,onChange:s});return(0,n.jsx)(p.C,{present:r||c,children:(0,n.jsx)(V,{open:c,...i,ref:t,onClose:()=>d(!1),onPause:(0,h.c)(e.onPause),onResume:(0,h.c)(e.onResume),onSwipeStart:(0,l.m)(e.onSwipeStart,e=>{e.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:(0,l.m)(e.onSwipeMove,e=>{let{x:t,y:r}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","move"),e.currentTarget.style.setProperty("--radix-toast-swipe-move-x","".concat(t,"px")),e.currentTarget.style.setProperty("--radix-toast-swipe-move-y","".concat(r,"px"))}),onSwipeCancel:(0,l.m)(e.onSwipeCancel,e=>{e.currentTarget.setAttribute("data-swipe","cancel"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:(0,l.m)(e.onSwipeEnd,e=>{let{x:t,y:r}=e.detail.delta;e.currentTarget.setAttribute("data-swipe","end"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),e.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),e.currentTarget.style.setProperty("--radix-toast-swipe-end-x","".concat(t,"px")),e.currentTarget.style.setProperty("--radix-toast-swipe-end-y","".concat(r,"px")),d(!1)})})})});_.displayName=O;var[F,K]=S(O,{onClose(){}}),V=a.forwardRef((e,t)=>{let{__scopeToast:r,type:o="foreground",duration:s,open:d,onClose:u,onEscapeKeyDown:f,onPause:p,onResume:w,onSwipeStart:y,onSwipeMove:x,onSwipeCancel:g,onSwipeEnd:T,...b}=e,S=R(O,r),[C,N]=a.useState(null),j=(0,c.s)(t,e=>N(e)),P=a.useRef(null),A=a.useRef(null),L=s||S.duration,D=a.useRef(0),M=a.useRef(L),_=a.useRef(0),{onToastAdd:K,onToastRemove:V}=S,U=(0,h.c)(()=>{var e;(null==C?void 0:C.contains(document.activeElement))&&(null===(e=S.viewport)||void 0===e||e.focus()),u()}),X=a.useCallback(e=>{e&&e!==1/0&&(window.clearTimeout(_.current),D.current=new Date().getTime(),_.current=window.setTimeout(U,e))},[U]);a.useEffect(()=>{let e=S.viewport;if(e){let t=()=>{X(M.current),null==w||w()},r=()=>{let e=new Date().getTime()-D.current;M.current=M.current-e,window.clearTimeout(_.current),null==p||p()};return e.addEventListener(k,r),e.addEventListener(I,t),()=>{e.removeEventListener(k,r),e.removeEventListener(I,t)}}},[S.viewport,L,p,w,X]),a.useEffect(()=>{d&&!S.isClosePausedRef.current&&X(L)},[d,L,S.isClosePausedRef,X]),a.useEffect(()=>(K(),()=>V()),[K,V]);let z=a.useMemo(()=>C?function e(t){let r=[];return Array.from(t.childNodes).forEach(t=>{if(t.nodeType===t.TEXT_NODE&&t.textContent&&r.push(t.textContent),t.nodeType===t.ELEMENT_NODE){let n=t.ariaHidden||t.hidden||"none"===t.style.display,o=""===t.dataset.radixToastAnnounceExclude;if(!n){if(o){let e=t.dataset.radixToastAnnounceAlt;e&&r.push(e)}else r.push(...e(t))}}}),r}(C):null,[C]);return S.viewport?(0,n.jsxs)(n.Fragment,{children:[z&&(0,n.jsx)(G,{__scopeToast:r,role:"status","aria-live":"foreground"===o?"assertive":"polite","aria-atomic":!0,children:z}),(0,n.jsx)(F,{scope:r,onClose:U,children:i.createPortal((0,n.jsx)(E.ItemSlot,{scope:r,children:(0,n.jsx)(m.bL,{asChild:!0,onEscapeKeyDown:(0,l.m)(f,()=>{S.isFocusedToastEscapeKeyDownRef.current||U(),S.isFocusedToastEscapeKeyDownRef.current=!1}),children:(0,n.jsx)(v.sG.li,{role:"status","aria-live":"off","aria-atomic":!0,tabIndex:0,"data-state":d?"open":"closed","data-swipe-direction":S.swipeDirection,...b,ref:j,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:(0,l.m)(e.onKeyDown,e=>{"Escape"!==e.key||(null==f||f(e.nativeEvent),e.nativeEvent.defaultPrevented||(S.isFocusedToastEscapeKeyDownRef.current=!0,U()))}),onPointerDown:(0,l.m)(e.onPointerDown,e=>{0===e.button&&(P.current={x:e.clientX,y:e.clientY})}),onPointerMove:(0,l.m)(e.onPointerMove,e=>{if(!P.current)return;let t=e.clientX-P.current.x,r=e.clientY-P.current.y,n=!!A.current,o=["left","right"].includes(S.swipeDirection),a=["left","up"].includes(S.swipeDirection)?Math.min:Math.max,s=o?a(0,t):0,i=o?0:a(0,r),l="touch"===e.pointerType?10:2,c={x:s,y:i},d={originalEvent:e,delta:c};n?(A.current=c,Y("toast.swipeMove",x,d,{discrete:!1})):Z(c,S.swipeDirection,l)?(A.current=c,Y("toast.swipeStart",y,d,{discrete:!1}),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>l||Math.abs(r)>l)&&(P.current=null)}),onPointerUp:(0,l.m)(e.onPointerUp,e=>{let t=A.current,r=e.target;if(r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),A.current=null,P.current=null,t){let r=e.currentTarget,n={originalEvent:e,delta:t};Z(t,S.swipeDirection,S.swipeThreshold)?Y("toast.swipeEnd",T,n,{discrete:!0}):Y("toast.swipeCancel",g,n,{discrete:!0}),r.addEventListener("click",e=>e.preventDefault(),{once:!0})}})})})}),S.viewport)})]}):null}),G=e=>{let{__scopeToast:t,children:r,...o}=e,s=R(O,t),[i,l]=a.useState(!1),[c,d]=a.useState(!1);return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>{},t=(0,h.c)(e);(0,y.N)(()=>{let e=0,r=0;return e=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(e),window.cancelAnimationFrame(r)}},[t])}(()=>l(!0)),a.useEffect(()=>{let e=window.setTimeout(()=>d(!0),1e3);return()=>window.clearTimeout(e)},[]),c?null:(0,n.jsx)(f.Z,{asChild:!0,children:(0,n.jsx)(x.s,{...o,children:i&&(0,n.jsxs)(n.Fragment,{children:[s.label," ",r]})})})},U=a.forwardRef((e,t)=>{let{__scopeToast:r,...o}=e;return(0,n.jsx)(v.sG.div,{...o,ref:t})});U.displayName="ToastTitle";var X=a.forwardRef((e,t)=>{let{__scopeToast:r,...o}=e;return(0,n.jsx)(v.sG.div,{...o,ref:t})});X.displayName="ToastDescription";var z="ToastAction",q=a.forwardRef((e,t)=>{let{altText:r,...o}=e;return r.trim()?(0,n.jsx)(W,{altText:r,asChild:!0,children:(0,n.jsx)(J,{...o,ref:t})}):(console.error("Invalid prop `altText` supplied to `".concat(z,"`. Expected non-empty `string`.")),null)});q.displayName=z;var H="ToastClose",J=a.forwardRef((e,t)=>{let{__scopeToast:r,...o}=e,a=K(H,r);return(0,n.jsx)(W,{asChild:!0,children:(0,n.jsx)(v.sG.button,{type:"button",...o,ref:t,onClick:(0,l.m)(e.onClick,a.onClose)})})});J.displayName=H;var W=a.forwardRef((e,t)=>{let{__scopeToast:r,altText:o,...a}=e;return(0,n.jsx)(v.sG.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":o||void 0,...a,ref:t})});function Y(e,t,r,n){let{discrete:o}=n,a=r.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:r});t&&a.addEventListener(e,t,{once:!0}),o?(0,v.hO)(a,s):a.dispatchEvent(s)}var Z=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=Math.abs(e.x),o=Math.abs(e.y),a=n>o;return"left"===t||"right"===t?a&&n>r:!a&&o>r};function $(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}var Q=r(29395),B=r(22250);let ee=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,n.jsx)(L,{ref:t,className:(0,B.cn)("fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",r),...o})});ee.displayName=L.displayName;let et=(0,Q.F)("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),er=a.forwardRef((e,t)=>{let{className:r,variant:o,...a}=e;return(0,n.jsx)(_,{ref:t,className:(0,B.cn)(et({variant:o}),r),...a})});er.displayName=_.displayName,a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,n.jsx)(q,{ref:t,className:(0,B.cn)("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",r),...o})}).displayName=q.displayName;let en=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,n.jsx)(J,{ref:t,className:(0,B.cn)("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",r),"toast-close":"",...o,children:(0,n.jsx)(s.MKb,{className:"h-4 w-4"})})});en.displayName=J.displayName;let eo=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,n.jsx)(U,{ref:t,className:(0,B.cn)("text-sm font-semibold [&+div]:text-xs",r),...o})});eo.displayName=U.displayName;let ea=a.forwardRef((e,t)=>{let{className:r,...o}=e;return(0,n.jsx)(X,{ref:t,className:(0,B.cn)("text-sm opacity-90",r),...o})});function es(){let{toasts:e}=(0,o.dj)();return(0,n.jsxs)(j,{children:[e.map(function(e){let{id:t,title:r,description:o,action:a,...s}=e;return(0,n.jsxs)(er,{...s,children:[(0,n.jsxs)("div",{className:"grid gap-1",children:[r&&(0,n.jsx)(eo,{children:r}),o&&(0,n.jsx)(ea,{children:o})]}),a,(0,n.jsx)(en,{})]},t)}),(0,n.jsx)(ee,{})]})}ea.displayName=X.displayName},85014:(e,t,r)=>{"use strict";r.d(t,{TooltipProvider:()=>i,ZI:()=>d,k$:()=>c,m_:()=>l});var n=r(20475),o=r(20107),a=r(84623),s=r(22250);let i=a.Kq,l=a.bL,c=a.l9,d=o.forwardRef((e,t)=>{let{className:r,sideOffset:o=4,...i}=e;return(0,n.jsx)(a.UC,{ref:t,sideOffset:o,className:(0,s.cn)("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r),...i})});d.displayName=a.UC.displayName},32857:(e,t,r)=>{"use strict";r.d(t,{dj:()=>m,oR:()=>u});var n=r(20107);let o=0,a=new Map,s=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),d({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:r}=t;return r?s(r):e.toasts.forEach(e=>{s(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===r||void 0===r?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],c={toasts:[]};function d(e){c=i(c,e),l.forEach(e=>{e(c)})}function u(e){let{...t}=e,r=(o=(o+1)%Number.MAX_SAFE_INTEGER).toString(),n=()=>d({type:"DISMISS_TOAST",toastId:r});return d({type:"ADD_TOAST",toast:{...t,id:r,open:!0,onOpenChange:e=>{e||n()}}}),{id:r,dismiss:n,update:e=>d({type:"UPDATE_TOAST",toast:{...e,id:r}})}}function m(){let[e,t]=n.useState(c);return n.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>d({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>a});var n=r(64901),o=r(868);function a(){for(var e=arguments.length,t=Array(e),r=0;r{},67595:(e,t,r)=>{"use strict";r.d(t,{N:()=>l});var n=r(20107),o=r(81045),a=r(74111),s=r(61837),i=r(20475);function l(e){let t=e+"CollectionProvider",[r,l]=(0,o.A)(t),[c,d]=r(t,{collectionRef:{current:null},itemMap:new Map}),u=e=>{let{scope:t,children:r}=e,o=n.useRef(null),a=n.useRef(new Map).current;return(0,i.jsx)(c,{scope:t,itemMap:a,collectionRef:o,children:r})};u.displayName=t;let m=e+"CollectionSlot",f=n.forwardRef((e,t)=>{let{scope:r,children:n}=e,o=d(m,r),l=(0,a.s)(t,o.collectionRef);return(0,i.jsx)(s.DX,{ref:l,children:n})});f.displayName=m;let p=e+"CollectionItemSlot",v="data-radix-collection-item",h=n.forwardRef((e,t)=>{let{scope:r,children:o,...l}=e,c=n.useRef(null),u=(0,a.s)(t,c),m=d(p,r);return n.useEffect(()=>(m.itemMap.set(c,{ref:c,...l}),()=>void m.itemMap.delete(c))),(0,i.jsx)(s.DX,{[v]:"",ref:u,children:o})});return h.displayName=p,[{Provider:u,Slot:f,ItemSlot:h},function(t){let r=d(e+"CollectionConsumer",t);return n.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(v,"]")));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},l]}},39524:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,N:()=>d});var n=r(20107),o=["light","dark"],a="(prefers-color-scheme: dark)",s="undefined"==typeof window,i=n.createContext(void 0),l={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=n.useContext(i))?e:l},d=e=>n.useContext(i)?e.children:n.createElement(m,{...e}),u=["light","dark"],m=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:s=!0,enableColorScheme:l=!0,storageKey:c="theme",themes:d=u,defaultTheme:m=s?"system":"light",attribute:w="data-theme",value:y,children:x,nonce:g}=e,[E,T]=n.useState(()=>p(c,m)),[b,S]=n.useState(()=>p(c)),C=y?Object.values(y):d,N=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&s&&(t=h());let n=y?y[t]:t,a=r?v():null,i=document.documentElement;if("class"===w?(i.classList.remove(...C),n&&i.classList.add(n)):n?i.setAttribute(w,n):i.removeAttribute(w),l){let e=o.includes(m)?m:null,r=o.includes(t)?t:e;i.style.colorScheme=r}null==a||a()},[]),R=n.useCallback(e=>{let t="function"==typeof e?e(e):e;T(t);try{localStorage.setItem(c,t)}catch(e){}},[t]),j=n.useCallback(e=>{S(h(e)),"system"===E&&s&&!t&&N("system")},[E,t]);n.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(j),j(e),()=>e.removeListener(j)},[j]),n.useEffect(()=>{let e=e=>{e.key===c&&R(e.newValue||m)};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[R]),n.useEffect(()=>{N(null!=t?t:E)},[t,E]);let P=n.useMemo(()=>({theme:E,setTheme:R,forcedTheme:t,resolvedTheme:"system"===E?b:E,themes:s?[...d,"system"]:d,systemTheme:s?b:void 0}),[E,R,t,b,s,d]);return n.createElement(i.Provider,{value:P},n.createElement(f,{forcedTheme:t,disableTransitionOnChange:r,enableSystem:s,enableColorScheme:l,storageKey:c,themes:d,defaultTheme:m,attribute:w,value:y,children:x,attrs:C,nonce:g}),x)},f=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:s,enableSystem:i,enableColorScheme:l,defaultTheme:c,value:d,attrs:u,nonce:m}=e,f="system"===c,p="class"===s?"var d=document.documentElement,c=d.classList;".concat("c.remove(".concat(u.map(e=>"'".concat(e,"'")).join(","),")"),";"):"var d=document.documentElement,n='".concat(s,"',s='setAttribute';"),v=l?(o.includes(c)?c:null)?"if(e==='light'||e==='dark'||!e)d.style.colorScheme=e||'".concat(c,"'"):"if(e==='light'||e==='dark')d.style.colorScheme=e":"",h=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=d?d[e]:e,a=t?e+"|| ''":"'".concat(n,"'"),i="";return l&&r&&!t&&o.includes(e)&&(i+="d.style.colorScheme = '".concat(e,"';")),"class"===s?t||n?i+="c.add(".concat(a,")"):i+="null":n&&(i+="d[s](n,".concat(a,")")),i},w=t?"!function(){".concat(p).concat(h(t),"}()"):i?"!function(){try{".concat(p,"var e=localStorage.getItem('").concat(r,"');if('system'===e||(!e&&").concat(f,")){var t='").concat(a,"',m=window.matchMedia(t);if(m.media!==t||m.matches){").concat(h("dark"),"}else{").concat(h("light"),"}}else if(e){").concat(d?"var x=".concat(JSON.stringify(d),";"):"").concat(h(d?"x[e]":"e",!0),"}").concat(f?"":"else{"+h(c,!1,!1)+"}").concat(v,"}catch(e){}}()"):"!function(){try{".concat(p,"var e=localStorage.getItem('").concat(r,"');if(e){").concat(d?"var x=".concat(JSON.stringify(d),";"):"").concat(h(d?"x[e]":"e",!0),"}else{").concat(h(c,!1,!1),";}").concat(v,"}catch(t){}}();");return n.createElement("script",{nonce:m,dangerouslySetInnerHTML:{__html:w}})}),p=(e,t)=>{let r;if(!s){try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t}},v=()=>{let e=document.createElement("style");return e.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(e)},1)}},h=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")}},e=>{var t=t=>e(e.s=t);e.O(0,[5255,9980,7780,1617,4673,4623,191,6035,7358],()=>t(49194)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/login/page-7c06c9d8b0f6cc23.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/login/page-7c06c9d8b0f6cc23.js deleted file mode 100644 index 8cff9fd..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/login/page-7c06c9d8b0f6cc23.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{91662:(e,t,s)=>{Promise.resolve().then(s.bind(s,25274))},25274:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>f});var r=s(20475),n=s(20107),a=s(19546),o=s(14629),i=s(42541),l=s(64219),d=s(49153),c=s(32857),u=s(114);let f=()=>{let{toast:e}=(0,c.dj)(),[t,s]=(0,n.useState)(""),[f,h]=(0,n.useState)(""),{login:p}=(0,a.A)(),m=async e=>{e.preventDefault(),await p(t)||h("Invalid password")};return(0,r.jsxs)("div",{className:"w-full h-screen lg:grid lg:min-h-[600px] lg:grid-cols-2 gap-4 xl:min-h-[800px]",children:[(0,r.jsx)("div",{className:"flex items-center justify-center py-12",children:(0,r.jsxs)("div",{className:"mx-auto grid w-[350px] gap-12",children:[(0,r.jsxs)("div",{className:"grid gap-2 text-center",children:[(0,r.jsx)("h1",{className:"text-3xl font-bold",children:"Login to QuecManager"}),(0,r.jsx)("p",{className:"text-balance text-muted-foreground",children:"Enter your password to login"})]}),(0,r.jsxs)("form",{onSubmit:m,children:[(0,r.jsxs)("div",{className:"grid gap-8",children:[(0,r.jsxs)("div",{className:"grid gap-2",children:[(0,r.jsx)("div",{className:"flex items-center",children:(0,r.jsx)(d.J,{htmlFor:"password",children:"Password"})}),(0,r.jsx)(l.p,{id:"password",type:"password",required:!0,value:t,onChange:e=>s(e.target.value)}),(0,r.jsx)(i.$,{variant:"link",type:"button",className:"ml-auto inline-block text-sm underline text-white",onClick:()=>{e({variant:"destructive",title:"Forgot your password?",description:"Use the toolkit script to create a new password.",action:(0,r.jsx)(u.A,{})})},children:"Forgot your password?"})]}),(0,r.jsx)(i.$,{type:"submit",className:"w-full",children:"Login"})]}),f&&(0,r.jsx)("div",{className:"bg-rose-500 p-1 mt-2 rounded-md flex text-center justify-center items-center",children:(0,r.jsx)("p",{children:f})})]})]})}),(0,r.jsx)("div",{className:"hidden bg-muted lg:block",children:(0,r.jsx)("div",{className:"flex h-full w-full items-center justify-center",children:(0,r.jsx)(o.default,{src:"/login-logo.svg",alt:"Image",width:"1000",height:"1000",className:"h-[50%] w-[40%] object-contain"})})})]})}},114:(e,t,s)=>{"use strict";s.d(t,{A:()=>o});var r=s(20475),n=s(42541),a=s(7197);let o=()=>(0,r.jsx)(n.$,{asChild:!0,variant:"outline",className:"ml-2",children:(0,r.jsxs)("a",{href:"https://github.com/iamromulan/quectel-rgmii-toolkit/tree/development-SDXPINN",children:[(0,r.jsx)(a.ERf,{className:"w-4 h-4 mr-2"}),"Get there!"]})})},42541:(e,t,s)=>{"use strict";s.d(t,{$:()=>d,r:()=>l});var r=s(20475),n=s(20107),a=s(61837),o=s(29395),i=s(22250);let l=(0,o.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=n.forwardRef((e,t)=>{let{className:s,variant:n,size:o,asChild:d=!1,...c}=e,u=d?a.DX:"button";return(0,r.jsx)(u,{className:(0,i.cn)(l({variant:n,size:o,className:s})),ref:t,...c})});d.displayName="Button"},64219:(e,t,s)=>{"use strict";s.d(t,{p:()=>o});var r=s(20475),n=s(20107),a=s(22250);let o=n.forwardRef((e,t)=>{let{className:s,type:n,...o}=e;return(0,r.jsx)("input",{type:n,className:(0,a.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",s),ref:t,...o})});o.displayName="Input"},49153:(e,t,s)=>{"use strict";s.d(t,{J:()=>d});var r=s(20475),n=s(20107),a=s(73725),o=s(29395),i=s(22250);let l=(0,o.F)("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=n.forwardRef((e,t)=>{let{className:s,...n}=e;return(0,r.jsx)(a.b,{ref:t,className:(0,i.cn)(l(),s),...n})});d.displayName=a.b.displayName},19546:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});var r=s(20107),n=s(16118);function a(){let[e,t]=(0,r.useState)(!1),[s,a]=(0,r.useState)(!0),o=(0,n.useRouter)();async function i(){try{let e=await fetch("/cgi-bin/heartbeat.sh",{method:"GET",headers:{"Cache-Control":"no-cache"}});if(!e.ok){l();return}(await e.json()).alive?a(!0):l()}catch(e){l()}}function l(){a(!1),c()}function d(e){let t={token:e,lastActivity:Date.now(),expiresAt:Date.now()+18e5};localStorage.setItem("session",JSON.stringify(t))}function c(){localStorage.removeItem("session"),t(!1),o.push("/login")}function u(){let e=function(){let e=function(){let e=localStorage.getItem("session");if(!e)return null;try{return JSON.parse(e)}catch(e){return null}}();if(!e)return!1;let t=Date.now();return t>e.expiresAt?(c(),!1):(t-e.lastActivity>3e5&&d(e.token),!0)}();return t(e),e}return(0,r.useEffect)(()=>{u();let e=setInterval(i,5e3);return()=>{clearInterval(e)}},[]),{isAuthenticated:e,isServerAlive:s,login:async function(e){let s=encodeURIComponent(e);try{let e=await fetch("/cgi-bin/auth.sh",{method:"POST",headers:{"Content-Type":"application/json"},body:"password=".concat(s)}),r=await e.json();if(console.log(r),"success"!==r.state)return!1;{let e=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:32,t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";return Array.from(crypto.getRandomValues(new Uint8Array(e))).map(e=>t[e%t.length]).join("")}();return d(e),t(!0),o.push("/dashboard/home"),!0}}catch(e){return console.error("Login error:",e),!1}},logout:c,checkAuth:u}}},32857:(e,t,s)=>{"use strict";s.d(t,{dj:()=>f,oR:()=>u});var r=s(20107);let n=0,a=new Map,o=e=>{if(a.has(e))return;let t=setTimeout(()=>{a.delete(e),c({type:"REMOVE_TOAST",toastId:e})},1e6);a.set(e,t)},i=(e,t)=>{switch(t.type){case"ADD_TOAST":return{...e,toasts:[t.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===t.toast.id?{...e,...t.toast}:e)};case"DISMISS_TOAST":{let{toastId:s}=t;return s?o(s):e.toasts.forEach(e=>{o(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===s||void 0===s?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===t.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==t.toastId)}}},l=[],d={toasts:[]};function c(e){d=i(d,e),l.forEach(e=>{e(d)})}function u(e){let{...t}=e,s=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),r=()=>c({type:"DISMISS_TOAST",toastId:s});return c({type:"ADD_TOAST",toast:{...t,id:s,open:!0,onOpenChange:e=>{e||r()}}}),{id:s,dismiss:r,update:e=>c({type:"UPDATE_TOAST",toast:{...e,id:s}})}}function f(){let[e,t]=r.useState(d);return r.useEffect(()=>(l.push(t),()=>{let e=l.indexOf(t);e>-1&&l.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>c({type:"DISMISS_TOAST",toastId:e})}}},22250:(e,t,s)=>{"use strict";s.d(t,{cn:()=>a});var r=s(64901),n=s(868);function a(){for(var e=arguments.length,t=Array(e),s=0;s{var t=t=>e(e.s=t);e.O(0,[9980,7780,3320,191,6035,7358],()=>t(91662)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/page-7dcf49318718ab9d.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/page-7dcf49318718ab9d.js deleted file mode 100644 index 0b03e1d..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/app/page-7dcf49318718ab9d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8974],{47143:(e,t,r)=>{Promise.resolve().then(r.bind(r,69363))},69363:(e,t,r)=>{"use strict";r.d(t,{default:()=>R});var a=r(20475),n=r(20107),s=r(90805),l=r(17255),o=r(4538),i=r(41797),d=r(98456),c=(0,s.gu)({chartName:"BarChart",GraphicalChild:l.y,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:o.W},{axisType:"yAxis",AxisComp:i.h}],formatAxisMap:d.pr}),u=r(72167),m=r(36760),f=r(42541),x=r(9477),p=r.n(x),h=r(1307),v=r(76554),g=r(7197),N=r(39524),b=r(86118);function y(){let{setTheme:e}=(0,N.D)();return(0,a.jsxs)(b.rI,{children:[(0,a.jsx)(b.ty,{asChild:!0,children:(0,a.jsxs)(f.$,{variant:"outline",size:"icon",children:[(0,a.jsx)(g.gLX,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),(0,a.jsx)(g.rRK,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),(0,a.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}),(0,a.jsxs)(b.SQ,{align:"end",children:[(0,a.jsx)(b._2,{onClick:()=>e("light"),children:"Light"}),(0,a.jsx)(b._2,{onClick:()=>e("dark"),children:"Dark"}),(0,a.jsx)(b._2,{onClick:()=>e("system"),children:"System"})]})]})}let j={rsrp:{min:-140,max:-70},rsrq:{min:-20,max:-10},sinr:{min:0,max:20}},w=(e,t)=>{let r=j[e];return Math.min(Math.max(Math.round(10*((Math.max(Math.min(t,r.max),r.min)-r.min)/(r.max-r.min)*100))/10,0),100)},k=e=>{if(!e)return null;let t=e.map(Number).filter(e=>-32768!==e&&5!==e&&-140!==e);return 0===t.length?null:Math.round(t.reduce((e,t)=>e+t,0)/t.length)};function R(){var e,t,r;let[s,d]=(0,n.useState)({rsrp:null,rsrq:null,sinr:null,networkType:"",bands:null,networkName:""}),[x,N]=(0,n.useState)(!0),b=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=async()=>{try{let e=await fetch("/cgi-bin/fetch_data.sh?set=5"),t=await e.json();if(console.log(t),t){let e={rsrp:k(t[0].response.match(/-?\d+/g)),rsrq:k(t[1].response.match(/-?\d+/g)),sinr:k(t[2].response.match(/-?\d+/g)),networkType:"",bands:null,networkName:""};console.log(e);let r=t[3].response.match(/"LTE BAND \d+"|"NR5G BAND \d+"/g),a=null==r?void 0:r.some(e=>e.includes("LTE")),n=null==r?void 0:r.some(e=>e.includes("NR5G"));e.networkType=a&&n?"NR5G-NSA":a?"LTE":n?"NR5G-SA":"No Signal";let s=null==r?void 0:r.map(e=>e.includes("LTE")?"B".concat(e.match(/\d+/)):e.includes("NR5G")?"N".concat(e.split(" ")[2].replace(/"/g,"").trim()):void 0);e.bands=s?s.join(", "):"No Signal",e.networkName=t[4].response.split("\n")[1].split(":")[1].split(",")[1].replace(/"/g,"").trim()||"No Signal",d(e),b.current=e}}catch(e){console.error("Error fetching stats:",e)}finally{x&&N(!1)}};e();let t=setInterval(e,2e3);return()=>clearInterval(t)},[x]);let j=[{activity:"rsrp",value:null!==s.rsrp?w("rsrp",s.rsrp):0,label:null!==s.rsrp?"".concat(s.rsrp.toFixed(1)," dBm"):"No Signal",fill:"hsl(var(--chart-1))"},{activity:"rsrq",value:null!==s.rsrq?w("rsrq",s.rsrq):0,label:null!==s.rsrq?"".concat(s.rsrq.toFixed(1)," dB"):"No Signal",fill:"hsl(var(--chart-2))"},{activity:"sinr",value:null!==s.sinr?w("sinr",s.sinr):0,label:null!==s.sinr?"".concat(s.sinr.toFixed(1)," dB"):"No Signal",fill:"hsl(var(--chart-3))"}];return(0,a.jsxs)(u.Zp,{className:"xl:max-w-xl xl:w-[800px] max-w-sm",children:[(0,a.jsx)(u.aR,{children:(0,a.jsxs)("div",{className:"flex flex-row justify-between items-center",children:[(0,a.jsx)(u.ZB,{children:"QuecManager Quick Stats"}),(0,a.jsx)(y,{})]})}),(0,a.jsxs)(u.Wu,{className:"flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-row justify-evenly items-center w-full p-2 border-t border-b",children:[x?(0,a.jsx)(m.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{children:s.networkName}),(0,a.jsx)(v.w,{orientation:"vertical",className:"mx-2 h-10 w-px"}),x?(0,a.jsx)(m.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{children:s.networkType}),(0,a.jsx)(v.w,{orientation:"vertical",className:"mx-2 h-10 w-px"}),x?(0,a.jsx)(m.E,{className:"h-8 w-24"}):(0,a.jsx)("div",{children:s.bands})]}),(0,a.jsx)("div",{className:"flex gap-4 xl:p-4 p-2 pb-2",children:x?(0,a.jsx)(m.E,{className:"h-[140px] w-full"}):(0,a.jsx)(h.at,{config:{sinr:{label:"sinr",color:"hsl(var(--chart-1))"},rsrp:{label:"rsrp",color:"hsl(var(--chart-2))"},rsrq:{label:"rsrq",color:"hsl(var(--chart-3))"}},className:"h-[140px] w-full",children:(0,a.jsxs)(c,{margin:{left:0,right:0,top:0,bottom:10},data:j,layout:"vertical",barSize:32,barGap:2,children:[(0,a.jsx)(o.W,{type:"number",dataKey:"value",hide:!0}),(0,a.jsx)(i.h,{dataKey:"activity",type:"category",tickLine:!1,tickMargin:4,axisLine:!1,className:"uppercase"}),(0,a.jsx)(l.y,{dataKey:"value",radius:5})]})})})]}),(0,a.jsxs)(u.wL,{className:"flex flex-col gap-4",children:[(0,a.jsx)("div",{className:"flex flex-row border-t border-b xl:p-4 p-2 w-full",children:(0,a.jsxs)("div",{className:"flex w-full items-center gap-2",children:[(0,a.jsxs)("div",{className:"grid flex-1 auto-rows-min gap-0.5",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"RSRP"}),x?(0,a.jsx)(m.E,{className:"h-8 w-24"}):(0,a.jsxs)("div",{className:"flex items-baseline gap-1 xl:text-2xl text-md font-bold tabular-nums leading-none",children:[null===(e=s.rsrp)||void 0===e?void 0:e.toFixed(1),(0,a.jsx)("span",{className:"text-sm font-normal text-muted-foreground",children:"dBm"})]})]}),(0,a.jsx)(v.w,{orientation:"vertical",className:"mx-2 h-10 w-px"}),(0,a.jsxs)("div",{className:"grid flex-1 auto-rows-min gap-0.5",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"RSRQ"}),x?(0,a.jsx)(m.E,{className:"h-8 w-24"}):(0,a.jsxs)("div",{className:"flex items-baseline gap-1 xl:text-2xl text-md font-bold tabular-nums leading-none",children:[null===(t=s.rsrq)||void 0===t?void 0:t.toFixed(1),(0,a.jsx)("span",{className:"text-sm font-normal text-muted-foreground",children:"dB"})]})]}),(0,a.jsx)(v.w,{orientation:"vertical",className:"mx-2 h-10 w-px"}),(0,a.jsxs)("div",{className:"grid flex-1 auto-rows-min gap-0.5",children:[(0,a.jsx)("div",{className:"text-xs text-muted-foreground",children:"SINR"}),x?(0,a.jsx)(m.E,{className:"h-8 w-24"}):(0,a.jsxs)("div",{className:"flex items-baseline gap-1 xl:text-2xl text-md font-bold tabular-nums leading-none",children:[null===(r=s.sinr)||void 0===r?void 0:r.toFixed(1),(0,a.jsx)("span",{className:"text-sm font-normal text-muted-foreground",children:"dB"})]})]})]})}),(0,a.jsx)(f.$,{asChild:!0,children:(0,a.jsxs)(p(),{href:"/login",children:["Login to QuecManager",(0,a.jsx)(g.flY,{className:"w-4 h-4 ml-2"})]})})]})]})}},42541:(e,t,r)=>{"use strict";r.d(t,{$:()=>d,r:()=>i});var a=r(20475),n=r(20107),s=r(61837),l=r(29395),o=r(22250);let i=(0,l.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=n.forwardRef((e,t)=>{let{className:r,variant:n,size:l,asChild:d=!1,...c}=e,u=d?s.DX:"button";return(0,a.jsx)(u,{className:(0,o.cn)(i({variant:n,size:l,className:r})),ref:t,...c})});d.displayName="Button"},72167:(e,t,r)=>{"use strict";r.d(t,{BT:()=>d,Wu:()=>c,ZB:()=>i,Zp:()=>l,aR:()=>o,wL:()=>u});var a=r(20475),n=r(20107),s=r(22250);let l=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,s.cn)("rounded-xl border bg-card text-card-foreground shadow",r),...n})});l.displayName="Card";let o=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,s.cn)("flex flex-col space-y-1.5 p-6",r),...n})});o.displayName="CardHeader";let i=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)("h3",{ref:t,className:(0,s.cn)("font-semibold leading-none tracking-tight",r),...n})});i.displayName="CardTitle";let d=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)("p",{ref:t,className:(0,s.cn)("text-sm text-muted-foreground",r),...n})});d.displayName="CardDescription";let c=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,s.cn)("p-6 pt-0",r),...n})});c.displayName="CardContent";let u=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)("div",{ref:t,className:(0,s.cn)("flex items-center p-6 pt-0",r),...n})});u.displayName="CardFooter"},1307:(e,t,r)=>{"use strict";r.d(t,{II:()=>x,Nt:()=>p,at:()=>m});var a=r(20475),n=r(20107),s=r(81155),l=r(80982),o=r(58736),i=r(22250);let d={light:"",dark:".dark"},c=n.createContext(null);function u(){let e=n.useContext(c);if(!e)throw Error("useChart must be used within a ");return e}let m=n.forwardRef((e,t)=>{let{id:r,className:l,children:o,config:d,...u}=e,m=n.useId(),x="chart-".concat(r||m.replace(/:/g,""));return(0,a.jsx)(c.Provider,{value:{config:d},children:(0,a.jsxs)("div",{"data-chart":x,ref:t,className:(0,i.cn)("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",l),...u,children:[(0,a.jsx)(f,{id:x,config:d}),(0,a.jsx)(s.u,{children:o})]})})});m.displayName="Chart";let f=e=>{let{id:t,config:r}=e,n=Object.entries(r).filter(e=>{let[t,r]=e;return r.theme||r.color});return n.length?(0,a.jsx)("style",{dangerouslySetInnerHTML:{__html:Object.entries(d).map(e=>{let[r,a]=e;return"\n".concat(a," [data-chart=").concat(t,"] {\n").concat(n.map(e=>{var t;let[a,n]=e,s=(null===(t=n.theme)||void 0===t?void 0:t[r])||n.color;return s?" --color-".concat(a,": ").concat(s,";"):null}).join("\n"),"\n}\n")}).join("\n")}}):null},x=l.m,p=n.forwardRef((e,t)=>{let{active:r,payload:s,className:l,indicator:o="dot",hideLabel:d=!1,hideIndicator:c=!1,label:m,labelFormatter:f,labelClassName:x,formatter:p,color:v,nameKey:g,labelKey:N}=e,{config:b}=u(),y=n.useMemo(()=>{var e;if(d||!(null==s?void 0:s.length))return null;let[t]=s,r="".concat(N||t.dataKey||t.name||"value"),n=h(b,t,r),l=N||"string"!=typeof m?null==n?void 0:n.label:(null===(e=b[m])||void 0===e?void 0:e.label)||m;return f?(0,a.jsx)("div",{className:(0,i.cn)("font-medium",x),children:f(l,s)}):l?(0,a.jsx)("div",{className:(0,i.cn)("font-medium",x),children:l}):null},[m,f,s,d,x,b,N]);if(!r||!(null==s?void 0:s.length))return null;let j=1===s.length&&"dot"!==o;return(0,a.jsxs)("div",{ref:t,className:(0,i.cn)("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",l),children:[j?null:y,(0,a.jsx)("div",{className:"grid gap-1.5",children:s.map((e,t)=>{let r="".concat(g||e.name||e.dataKey||"value"),n=h(b,e,r),s=v||e.payload.fill||e.color;return(0,a.jsx)("div",{className:(0,i.cn)("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground","dot"===o&&"items-center"),children:p&&(null==e?void 0:e.value)!==void 0&&e.name?p(e.value,e.name,e,t,e.payload):(0,a.jsxs)(a.Fragment,{children:[(null==n?void 0:n.icon)?(0,a.jsx)(n.icon,{}):!c&&(0,a.jsx)("div",{className:(0,i.cn)("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":"dot"===o,"w-1":"line"===o,"w-0 border-[1.5px] border-dashed bg-transparent":"dashed"===o,"my-0.5":j&&"dashed"===o}),style:{"--color-bg":s,"--color-border":s}}),(0,a.jsxs)("div",{className:(0,i.cn)("flex flex-1 justify-between leading-none",j?"items-end":"items-center"),children:[(0,a.jsxs)("div",{className:"grid gap-1.5",children:[j?y:null,(0,a.jsx)("span",{className:"text-muted-foreground",children:(null==n?void 0:n.label)||e.name})]}),e.value&&(0,a.jsx)("span",{className:"font-mono font-medium tabular-nums text-foreground",children:e.value.toLocaleString()})]})]})},e.dataKey)})})]})});function h(e,t,r){if("object"!=typeof t||null===t)return;let a="payload"in t&&"object"==typeof t.payload&&null!==t.payload?t.payload:void 0,n=r;return r in t&&"string"==typeof t[r]?n=t[r]:a&&r in a&&"string"==typeof a[r]&&(n=a[r]),n in e?e[n]:e[r]}p.displayName="ChartTooltip",o.s,n.forwardRef((e,t)=>{let{className:r,hideIcon:n=!1,payload:s,verticalAlign:l="bottom",nameKey:o}=e,{config:d}=u();return(null==s?void 0:s.length)?(0,a.jsx)("div",{ref:t,className:(0,i.cn)("flex items-center justify-center gap-4","top"===l?"pb-3":"pt-3",r),children:s.map(e=>{let t="".concat(o||e.dataKey||"value"),r=h(d,e,t);return(0,a.jsxs)("div",{className:(0,i.cn)("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[(null==r?void 0:r.icon)&&!n?(0,a.jsx)(r.icon,{}):(0,a.jsx)("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:e.color}}),null==r?void 0:r.label]},e.value)})}):null}).displayName="ChartLegend"},86118:(e,t,r)=>{"use strict";r.d(t,{SQ:()=>c,_2:()=>u,lp:()=>m,mB:()=>f,rI:()=>i,ty:()=>d});var a=r(20475),n=r(20107),s=r(33169),l=r(7197),o=r(22250);let i=s.bL,d=s.l9;s.YJ,s.ZL,s.Pb,s.z6,n.forwardRef((e,t)=>{let{className:r,inset:n,children:i,...d}=e;return(0,a.jsxs)(s.ZP,{ref:t,className:(0,o.cn)("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",n&&"pl-8",r),...d,children:[i,(0,a.jsx)(l.vKP,{className:"ml-auto h-4 w-4"})]})}).displayName=s.ZP.displayName,n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)(s.G5,{ref:t,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r),...n})}).displayName=s.G5.displayName;let c=n.forwardRef((e,t)=>{let{className:r,sideOffset:n=4,...l}=e;return(0,a.jsx)(s.ZL,{children:(0,a.jsx)(s.UC,{ref:t,sideOffset:n,className:(0,o.cn)("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",r),...l})})});c.displayName=s.UC.displayName;let u=n.forwardRef((e,t)=>{let{className:r,inset:n,...l}=e;return(0,a.jsx)(s.q7,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n&&"pl-8",r),...l})});u.displayName=s.q7.displayName,n.forwardRef((e,t)=>{let{className:r,children:n,checked:i,...d}=e;return(0,a.jsxs)(s.H_,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r),checked:i,...d,children:[(0,a.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,a.jsx)(s.VF,{children:(0,a.jsx)(l.Srz,{className:"h-4 w-4"})})}),n]})}).displayName=s.H_.displayName,n.forwardRef((e,t)=>{let{className:r,children:n,...i}=e;return(0,a.jsxs)(s.hN,{ref:t,className:(0,o.cn)("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r),...i,children:[(0,a.jsx)("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,a.jsx)(s.VF,{children:(0,a.jsx)(l.RiX,{className:"h-4 w-4 fill-current"})})}),n]})}).displayName=s.hN.displayName;let m=n.forwardRef((e,t)=>{let{className:r,inset:n,...l}=e;return(0,a.jsx)(s.JU,{ref:t,className:(0,o.cn)("px-2 py-1.5 text-sm font-semibold",n&&"pl-8",r),...l})});m.displayName=s.JU.displayName;let f=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,a.jsx)(s.wv,{ref:t,className:(0,o.cn)("-mx-1 my-1 h-px bg-muted",r),...n})});f.displayName=s.wv.displayName},76554:(e,t,r)=>{"use strict";r.d(t,{w:()=>o});var a=r(20475),n=r(20107),s=r(78190),l=r(22250);let o=n.forwardRef((e,t)=>{let{className:r,orientation:n="horizontal",decorative:o=!0,...i}=e;return(0,a.jsx)(s.b,{ref:t,decorative:o,orientation:n,className:(0,l.cn)("shrink-0 bg-border","horizontal"===n?"h-[1px] w-full":"h-full w-[1px]",r),...i})});o.displayName=s.b.displayName},36760:(e,t,r)=>{"use strict";r.d(t,{E:()=>s});var a=r(20475),n=r(22250);function s(e){let{className:t,...r}=e;return(0,a.jsx)("div",{className:(0,n.cn)("animate-pulse rounded-md bg-primary/10",t),...r})}},22250:(e,t,r)=>{"use strict";r.d(t,{cn:()=>s});var a=r(64901),n=r(868);function s(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.d(t,{C:()=>l});var a=r(20107),n=r(74111),s=r(58013),l=e=>{let{present:t,children:r}=e,l=function(e){var t,r;let[n,l]=a.useState(),i=a.useRef({}),d=a.useRef(e),c=a.useRef("none"),[u,m]=(t=e?"mounted":"unmounted",r={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},a.useReducer((e,t)=>{let a=r[e][t];return null!=a?a:e},t));return a.useEffect(()=>{let e=o(i.current);c.current="mounted"===u?e:"none"},[u]),(0,s.N)(()=>{let t=i.current,r=d.current;if(r!==e){let a=c.current,n=o(t);e?m("MOUNT"):"none"===n||(null==t?void 0:t.display)==="none"?m("UNMOUNT"):r&&a!==n?m("ANIMATION_OUT"):m("UNMOUNT"),d.current=e}},[e,m]),(0,s.N)(()=>{if(n){var e;let t;let r=null!==(e=n.ownerDocument.defaultView)&&void 0!==e?e:window,a=e=>{let a=o(i.current).includes(e.animationName);if(e.target===n&&a&&(m("ANIMATION_END"),!d.current)){let e=n.style.animationFillMode;n.style.animationFillMode="forwards",t=r.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=e)})}},s=e=>{e.target===n&&(c.current=o(i.current))};return n.addEventListener("animationstart",s),n.addEventListener("animationcancel",a),n.addEventListener("animationend",a),()=>{r.clearTimeout(t),n.removeEventListener("animationstart",s),n.removeEventListener("animationcancel",a),n.removeEventListener("animationend",a)}}m("ANIMATION_END")},[n,m]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:a.useCallback(e=>{e&&(i.current=getComputedStyle(e)),l(e)},[])}}(t),i="function"==typeof r?r({present:l.isPresent}):a.Children.only(r),d=(0,n.s)(l.ref,function(e){var t,r;let a=null===(t=Object.getOwnPropertyDescriptor(e.props,"ref"))||void 0===t?void 0:t.get,n=a&&"isReactWarning"in a&&a.isReactWarning;return n?e.ref:(n=(a=null===(r=Object.getOwnPropertyDescriptor(e,"ref"))||void 0===r?void 0:r.get)&&"isReactWarning"in a&&a.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof r||l.isPresent?a.cloneElement(i,{ref:d}):null};function o(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},78190:(e,t,r)=>{"use strict";r.d(t,{b:()=>d});var a=r(20107),n=r(4589),s=r(20475),l="horizontal",o=["horizontal","vertical"],i=a.forwardRef((e,t)=>{let{decorative:r,orientation:a=l,...i}=e,d=o.includes(a)?a:l;return(0,s.jsx)(n.sG.div,{"data-orientation":d,...r?{role:"none"}:{"aria-orientation":"vertical"===d?d:void 0,role:"separator"},...i,ref:t})});i.displayName="Separator";var d=i}},e=>{var t=t=>e(e.s=t);e.O(0,[9980,7780,1617,4673,5011,9477,1074,9700,191,6035,7358],()=>t(47143)),_N_E=e.O()}]); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/b26ba64e-35819c41e676a9c4.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/b26ba64e-35819c41e676a9c4.js deleted file mode 100644 index d632842..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/chunks/b26ba64e-35819c41e676a9c4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[191],{71272:(e,n,t)=>{var r,l,a=t(86170),o=t(87803),i=t(20107),u=t(25642);function s(e){var n="https://react.dev/errors/"+e;if(1)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{M=!1,Error.prepareStackTrace=t}return(t=e?e.displayName||e.name:"")?O(t):""}function R(e){try{var n="";do n+=function(e){switch(e.tag){case 26:case 27:case 5:return O(e.type);case 16:return O("Lazy");case 13:return O("Suspense");case 19:return O("SuspenseList");case 0:case 15:return e=A(e.type,!1);case 11:return e=A(e.type.render,!1);case 1:return e=A(e.type,!0);default:return""}}(e),e=e.return;while(e);return n}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function I(e){var n=e,t=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do 0!=(4098&(n=e).flags)&&(t=n.return),e=n.return;while(e)}return 3===n.tag?t:null}function U(e){if(13===e.tag){var n=e.memoizedState;if(null===n&&null!==(e=e.alternate)&&(n=e.memoizedState),null!==n)return n.dehydrated}return null}function V(e){if(I(e)!==e)throw Error(s(188))}var j=Array.isArray,B=u.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q={pending:!1,data:null,method:null,action:null},$=[],W=-1;function H(e){return{current:e}}function q(e){0>W||(e.current=$[W],$[W]=null,W--)}function K(e,n){$[++W]=e.current,e.current=n}var Y=H(null),X=H(null),G=H(null),Z=H(null);function J(e,n){switch(K(G,n),K(X,e),K(Y,null),e=n.nodeType){case 9:case 11:n=(n=n.documentElement)&&(n=n.namespaceURI)?se(n):0;break;default:if(n=(e=8===e?n.parentNode:n).tagName,e=e.namespaceURI)n=sn(e=se(e),n);else switch(n){case"svg":n=1;break;case"math":n=2;break;default:n=0}}q(Y),K(Y,n)}function ee(){q(Y),q(X),q(G)}function en(e){null!==e.memoizedState&&K(Z,e);var n=Y.current,t=sn(n,e.type);n!==t&&(K(X,e),K(Y,t))}function et(e){X.current===e&&(q(Y),q(X)),Z.current===e&&(q(Z),sj._currentValue=Q)}var er=Object.prototype.hasOwnProperty,el=o.unstable_scheduleCallback,ea=o.unstable_cancelCallback,eo=o.unstable_shouldYield,ei=o.unstable_requestPaint,eu=o.unstable_now,es=o.unstable_getCurrentPriorityLevel,ec=o.unstable_ImmediatePriority,ef=o.unstable_UserBlockingPriority,ed=o.unstable_NormalPriority,ep=o.unstable_LowPriority,em=o.unstable_IdlePriority,eh=o.log,eg=o.unstable_setDisableYieldValue,ey=null,ev=null;function eb(e){if("function"==typeof eh&&eg(e),ev&&"function"==typeof ev.setStrictMode)try{ev.setStrictMode(ey,e)}catch(e){}}var ek=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(ew(e)/eS|0)|0},ew=Math.log,eS=Math.LN2,ex=128,eE=4194304;function eC(e){var n=42&e;if(0!==n)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194176&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ez(e,n){var t=e.pendingLanes;if(0===t)return 0;var r=0,l=e.suspendedLanes,a=e.pingedLanes,o=e.warmLanes;e=0!==e.finishedLanes;var i=0x7ffffff&t;return 0!==i?0!=(t=i&~l)?r=eC(t):0!=(a&=i)?r=eC(a):e||0!=(o=i&~o)&&(r=eC(o)):0!=(i=t&~l)?r=eC(i):0!==a?r=eC(a):e||0!=(o=t&~o)&&(r=eC(o)),0===r?0:0!==n&&n!==r&&0==(n&l)&&((l=r&-r)>=(o=n&-n)||32===l&&0!=(4194176&o))?n:r}function eP(e,n){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)}function eN(){var e=ex;return 0==(4194176&(ex<<=1))&&(ex=128),e}function eL(){var e=eE;return 0==(0x3c00000&(eE<<=1))&&(eE=4194304),e}function eT(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function e_(e,n){e.pendingLanes|=n,0x10000000!==n&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function eF(e,n,t){e.pendingLanes|=n,e.suspendedLanes&=~n;var r=31-ek(n);e.entangledLanes|=n,e.entanglements[r]=0x40000000|e.entanglements[r]|4194218&t}function eD(e,n){var t=e.entangledLanes|=n;for(e=e.entanglements;t;){var r=31-ek(t),l=1<=te),tr=!1;function tl(e,n){switch(e){case"keyup":return -1!==n9.indexOf(n.keyCode);case"keydown":return 229!==n.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ta(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var to=!1,ti={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function tu(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===n?!!ti[e.type]:"textarea"===n}function ts(e,n,t,r){nw?nS?nS.push(r):nS=[r]:nw=r,0<(n=uX(n,"onChange")).length&&(t=new nj("onChange","change",null,t,r),e.push({event:t,listeners:n}))}var tc=null,tf=null;function td(e){uB(e,0)}function tp(e){if(nn(eK(e)))return e}function tm(e,n){if("change"===e)return n}var th=!1;if(e1){if(e1){var tg="oninput"in document;if(!tg){var ty=document.createElement("div");ty.setAttribute("oninput","return;"),tg="function"==typeof ty.oninput}r=tg}else r=!1;th=r&&(!document.documentMode||9=n)return{node:r,offset:n-e};e=t}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=tz(r)}}function tN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var n=nt(e.document);n instanceof e.HTMLIFrameElement;){try{var t="string"==typeof n.contentWindow.location.href}catch(e){t=!1}if(t)e=n.contentWindow;else break;n=nt(e.document)}return n}function tL(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&("input"===n&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===n||"true"===e.contentEditable)}var tT=e1&&"documentMode"in document&&11>=document.documentMode,t_=null,tF=null,tD=null,tO=!1;function tM(e,n,t){var r=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;tO||null==t_||t_!==nt(r)||(r="selectionStart"in(r=t_)&&tL(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},tD&&tC(tD,r)||(tD=r,0<(r=uX(tF,"onSelect")).length&&(n=new nj("onSelect","select",null,n,t),e.push({event:n,listeners:r}),n.target=t_)))}function tA(e,n){var t={};return t[e.toLowerCase()]=n.toLowerCase(),t["Webkit"+e]="webkit"+n,t["Moz"+e]="moz"+n,t}var tR={animationend:tA("Animation","AnimationEnd"),animationiteration:tA("Animation","AnimationIteration"),animationstart:tA("Animation","AnimationStart"),transitionrun:tA("Transition","TransitionRun"),transitionstart:tA("Transition","TransitionStart"),transitioncancel:tA("Transition","TransitionCancel"),transitionend:tA("Transition","TransitionEnd")},tI={},tU={};function tV(e){if(tI[e])return tI[e];if(!tR[e])return e;var n,t=tR[e];for(n in t)if(t.hasOwnProperty(n)&&n in tU)return tI[e]=t[n];return e}e1&&(tU=document.createElement("div").style,"AnimationEvent"in window||(delete tR.animationend.animation,delete tR.animationiteration.animation,delete tR.animationstart.animation),"TransitionEvent"in window||delete tR.transitionend.transition);var tj=tV("animationend"),tB=tV("animationiteration"),tQ=tV("animationstart"),t$=tV("transitionrun"),tW=tV("transitionstart"),tH=tV("transitioncancel"),tq=tV("transitionend"),tK=new Map,tY="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll scrollEnd toggle touchMove waiting wheel".split(" ");function tX(e,n){tK.set(e,n),eJ(n,[e])}var tG=[],tZ=0,tJ=0;function t0(){for(var e=tZ,n=tJ=tZ=0;n>=o,l-=o,ro=1<<32-ek(n)+l|t<a?a:8;var o=F.T,i={};F.T=i,al(e,!1,n,t);try{var u=l(),s=F.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;ed?(p=f,f=null):p=f.sibling;var m=g(l,f,i[d],u);if(null===m){null===f&&(f=p);break}e&&f&&null===m.alternate&&n(l,f),o=a(m,o,d),null===c?s=m:c.sibling=m,c=m,f=p}if(d===i.length)return t(l,f),rm&&ru(l,d),s;if(null===f){for(;dp?(m=d,d=null):m=d.sibling;var b=g(l,d,v.value,u);if(null===b){null===d&&(d=m);break}e&&d&&null===b.alternate&&n(l,d),o=a(b,o,p),null===f?c=b:f.sibling=b,f=b,d=m}if(v.done)return t(l,d),rm&&ru(l,p),c;if(null===d){for(;!v.done;p++,v=i.next())null!==(v=h(l,v.value,u))&&(o=a(v,o,p),null===f?c=v:f.sibling=v,f=v);return rm&&ru(l,p),c}for(d=r(d);!v.done;p++,v=i.next())null!==(v=y(d,l,p,v.value,u))&&(e&&null!==v.alternate&&d.delete(null===v.key?p:v.key),o=a(v,o,p),null===f?c=v:f.sibling=v,f=v);return e&&d.forEach(function(e){return n(l,e)}),rm&&ru(l,p),c}(u,c,f=k.call(f),v)}if("function"==typeof f.then)return i(u,c,am(f),v);if(f.$$typeof===b)return i(u,c,og(u,f),v);ag(u,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(t(u,c.sibling),(v=l(c,f)).return=u):(t(u,c),(v=iy(f,u.mode,v)).return=u),o(u=v)):t(u,c)}(i,u,c,f);return ad=null,v}catch(e){if(e===rE||e===rz)throw e;var k=is(29,e,null,i.mode);return k.lanes=f,k.return=i,k}finally{}}}var ab=av(!0),ak=av(!1),aw=H(null),aS=null;function ax(e){var n=e.alternate;K(aP,1&aP.current),K(aw,e),null===aS&&(null===n||null!==rW.current?aS=e:null!==n.memoizedState&&(aS=e))}function aE(e){if(22===e.tag){if(K(aP,aP.current),K(aw,e),null===aS){var n=e.alternate;null!==n&&null!==n.memoizedState&&(aS=e)}}else aC(e)}function aC(){K(aP,aP.current),K(aw,aw.current)}function az(e){q(aw),aS===e&&(aS=null),q(aP)}var aP=H(0);function aN(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedState;if(null!==t&&(null===(t=t.dehydrated)||"$?"===t.data||sf(t)))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(0!=(128&n.flags))return n}else if(null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function aL(e,n,t,r){t=null==(t=t(r,n=e.memoizedState))?n:D({},n,t),e.memoizedState=t,0===e.lanes&&(e.updateQueue.baseState=t)}var aT={isMounted:function(e){return!!(e=e._reactInternals)&&I(e)===e},enqueueSetState:function(e,n,t){e=e._reactInternals;var r=i4(),l=ow(r);l.payload=n,null!=t&&(l.callback=t),null!==(n=oS(e,l,r))&&(i6(n,e,r),ox(n,e,r))},enqueueReplaceState:function(e,n,t){e=e._reactInternals;var r=i4(),l=ow(r);l.tag=1,l.payload=n,null!=t&&(l.callback=t),null!==(n=oS(e,l,r))&&(i6(n,e,r),ox(n,e,r))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var t=i4(),r=ow(t);r.tag=2,null!=n&&(r.callback=n),null!==(n=oS(e,r,t))&&(i6(n,e,t),ox(n,e,t))}};function a_(e,n,t,r,l,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!n.prototype||!n.prototype.isPureReactComponent||!tC(t,r)||!tC(l,a)}function aF(e,n,t,r){e=n.state,"function"==typeof n.componentWillReceiveProps&&n.componentWillReceiveProps(t,r),"function"==typeof n.UNSAFE_componentWillReceiveProps&&n.UNSAFE_componentWillReceiveProps(t,r),n.state!==e&&aT.enqueueReplaceState(n,n.state,null)}function aD(e,n){var t=n;if("ref"in n)for(var r in t={},n)"ref"!==r&&(t[r]=n[r]);if(e=e.defaultProps)for(var l in t===n&&(t=D({},t)),e)void 0===t[l]&&(t[l]=e[l]);return t}var aO="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if("object"==typeof a&&"function"==typeof a.emit){a.emit("uncaughtException",e);return}console.error(e)};function aM(e){aO(e)}function aA(e){console.error(e)}function aR(e){aO(e)}function aI(e,n){try{(0,e.onUncaughtError)(n.value,{componentStack:n.stack})}catch(e){setTimeout(function(){throw e})}}function aU(e,n,t){try{(0,e.onCaughtError)(t.value,{componentStack:t.stack,errorBoundary:1===n.tag?n.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function aV(e,n,t){return(t=ow(t)).tag=3,t.payload={element:null},t.callback=function(){aI(e,n)},t}function aj(e){return(e=ow(e)).tag=3,e}function aB(e,n,t,r){var l=t.type.getDerivedStateFromError;if("function"==typeof l){var a=r.value;e.payload=function(){return l(a)},e.callback=function(){aU(n,t,r)}}var o=t.stateNode;null!==o&&"function"==typeof o.componentDidCatch&&(e.callback=function(){aU(n,t,r),"function"!=typeof l&&(null===iY?iY=new Set([this]):iY.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var aQ=Error(s(461)),a$=!1;function aW(e,n,t,r){n.child=null===e?ak(n,null,t,r):ab(n,e.child,t,r)}function aH(e,n,t,r,l){t=t.render;var a=n.ref;if("ref"in r){var o={};for(var i in r)"ref"!==i&&(o[i]=r[i])}else o=r;return(om(n),r=ll(e,n,t,o,a,l),i=lu(),null===e||a$)?(rm&&i&&rc(n),n.flags|=1,aW(e,n,r,l),n.child):(ls(e,n,l),ot(e,n,l))}function aq(e,n,t,r,l){if(null===e){var a=t.type;return"function"!=typeof a||ic(a)||void 0!==a.defaultProps||null!==t.compare?((e=im(t.type,null,r,n,n.mode,l)).ref=n.ref,e.return=n,n.child=e):(n.tag=15,n.type=a,aK(e,n,a,r,l))}if(a=e.child,!or(e,l)){var o=a.memoizedProps;if((t=null!==(t=t.compare)?t:tC)(o,r)&&e.ref===n.ref)return ot(e,n,l)}return n.flags|=1,(e=id(a,r)).ref=n.ref,e.return=n,n.child=e}function aK(e,n,t,r,l){if(null!==e){var a=e.memoizedProps;if(tC(a,r)&&e.ref===n.ref){if(a$=!1,n.pendingProps=r=a,!or(e,l))return n.lanes=e.lanes,ot(e,n,l);0!=(131072&e.flags)&&(a$=!0)}}return aZ(e,n,t,r,l)}function aY(e,n,t){var r=n.pendingProps,l=r.children,a=0!=(2&n.stateNode._pendingVisibility),o=null!==e?e.memoizedState:null;if(aG(e,n),"hidden"===r.mode||a){if(0!=(128&n.flags)){if(r=null!==o?o.baseLanes|t:t,null!==e){for(a=0,l=n.child=e.child;null!==l;)a=a|l.lanes|l.childLanes,l=l.sibling;n.childLanes=a&~r}else n.childLanes=0,n.child=null;return aX(e,n,r,t)}if(0==(0x20000000&t))return n.lanes=n.childLanes=0x20000000,aX(e,n,null!==o?o.baseLanes|t:t,t);n.memoizedState={baseLanes:0,cachePool:null},null!==e&&rJ(n,null!==o?o.cachePool:null),null!==o?rq(n,o):rK(),aE(n)}else null!==o?(rJ(n,o.cachePool),rq(n,o),aC(n),n.memoizedState=null):(null!==e&&rJ(n,null),rK(),aC(n));return aW(e,n,l,t),n.child}function aX(e,n,t,r){var l=rZ();return l=null===l?null:{parent:rR._currentValue,pool:l},n.memoizedState={baseLanes:t,cachePool:l},null!==e&&rJ(n,null),rK(),aE(n),null!==e&&od(e,n,r,!0),null}function aG(e,n){var t=n.ref;if(null===t)null!==e&&null!==e.ref&&(n.flags|=2097664);else{if("function"!=typeof t&&"object"!=typeof t)throw Error(s(284));(null===e||e.ref!==t)&&(n.flags|=2097664)}}function aZ(e,n,t,r,l){return(om(n),t=ll(e,n,t,r,void 0,l),r=lu(),null===e||a$)?(rm&&r&&rc(n),n.flags|=1,aW(e,n,t,l),n.child):(ls(e,n,l),ot(e,n,l))}function aJ(e,n,t,r,l,a){return(om(n),n.updateQueue=null,t=lo(n,r,t,l),la(e),r=lu(),null===e||a$)?(rm&&r&&rc(n),n.flags|=1,aW(e,n,t,a),n.child):(ls(e,n,a),ot(e,n,a))}function a0(e,n,t,r,l){if(om(n),null===n.stateNode){var a=t8,o=t.contextType;"object"==typeof o&&null!==o&&(a=oh(o)),a=new t(r,a),n.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,a.updater=aT,n.stateNode=a,a._reactInternals=n,(a=n.stateNode).props=r,a.state=n.memoizedState,a.refs={},ob(n),o=t.contextType,a.context="object"==typeof o&&null!==o?oh(o):t8,a.state=n.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(aL(n,t,o,r),a.state=n.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(o=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),o!==a.state&&aT.enqueueReplaceState(a,a.state,null),oP(n,r,a,l),oz(),a.state=n.memoizedState),"function"==typeof a.componentDidMount&&(n.flags|=4194308),r=!0}else if(null===e){a=n.stateNode;var i=n.memoizedProps,u=aD(t,i);a.props=u;var s=a.context,c=t.contextType;o=t8,"object"==typeof c&&null!==c&&(o=oh(c));var f=t.getDerivedStateFromProps;c="function"==typeof f||"function"==typeof a.getSnapshotBeforeUpdate,i=n.pendingProps!==i,c||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(i||s!==o)&&aF(n,a,r,o),ov=!1;var d=n.memoizedState;a.state=d,oP(n,r,a,l),oz(),s=n.memoizedState,i||d!==s||ov?("function"==typeof f&&(aL(n,t,f,r),s=n.memoizedState),(u=ov||a_(n,t,u,r,d,s,o))?(c||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(n.flags|=4194308)):("function"==typeof a.componentDidMount&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=s),a.props=r,a.state=s,a.context=o,r=u):("function"==typeof a.componentDidMount&&(n.flags|=4194308),r=!1)}else{a=n.stateNode,ok(e,n),c=aD(t,o=n.memoizedProps),a.props=c,f=n.pendingProps,d=a.context,s=t.contextType,u=t8,"object"==typeof s&&null!==s&&(u=oh(s)),(s="function"==typeof(i=t.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(o!==f||d!==u)&&aF(n,a,r,u),ov=!1,d=n.memoizedState,a.state=d,oP(n,r,a,l),oz();var p=n.memoizedState;o!==f||d!==p||ov||null!==e&&null!==e.dependencies&&op(e.dependencies)?("function"==typeof i&&(aL(n,t,i,r),p=n.memoizedState),(c=ov||a_(n,t,c,r,d,p,u)||null!==e&&null!==e.dependencies&&op(e.dependencies))?(s||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,u)),"function"==typeof a.componentDidUpdate&&(n.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(n.flags|=1024)):("function"!=typeof a.componentDidUpdate||o===e.memoizedProps&&d===e.memoizedState||(n.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||o===e.memoizedProps&&d===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=p),a.props=r,a.state=p,a.context=u,r=c):("function"!=typeof a.componentDidUpdate||o===e.memoizedProps&&d===e.memoizedState||(n.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||o===e.memoizedProps&&d===e.memoizedState||(n.flags|=1024),r=!1)}return a=r,aG(e,n),r=0!=(128&n.flags),a||r?(a=n.stateNode,t=r&&"function"!=typeof t.getDerivedStateFromError?null:a.render(),n.flags|=1,null!==e&&r?(n.child=ab(n,e.child,null,l),n.child=ab(n,null,t,l)):aW(e,n,t,l),n.memoizedState=a.state,e=n.child):e=ot(e,n,l),e}function a1(e,n,t,r){return rS(),n.flags|=256,aW(e,n,t,r),n.child}var a2={dehydrated:null,treeContext:null,retryLane:0};function a4(e){return{baseLanes:e,cachePool:r0()}}function a3(e,n,t){return e=null!==e?e.childLanes&~t:0,n&&(e|=ij),e}function a6(e,n,t){var r,l=n.pendingProps,a=!1,o=0!=(128&n.flags);if((r=o)||(r=(null===e||null!==e.memoizedState)&&0!=(2&aP.current)),r&&(a=!0,n.flags&=-129),r=0!=(32&n.flags),n.flags&=-33,null===e){if(rm){if(a?ax(n):aC(n),rm){var i,u=rp;if(i=u){t:{for(i=u,u=rg;8!==i.nodeType;)if(!u||null===(i=sd(i.nextSibling))){u=null;break t}u=i}null!==u?(n.memoizedState={dehydrated:u,treeContext:null!==ra?{id:ro,overflow:ri}:null,retryLane:0x20000000},(i=is(18,null,null,0)).stateNode=u,i.return=n,n.child=i,rd=n,rp=null,i=!0):i=!1}i||rv(n)}if(null!==(u=n.memoizedState)&&null!==(u=u.dehydrated))return sf(u)?n.lanes=16:n.lanes=0x20000000,null;az(n)}return(u=l.children,l=l.fallback,a)?(aC(n),u=a5({mode:"hidden",children:u},a=n.mode),l=ih(l,a,t,null),u.return=n,l.return=n,u.sibling=l,n.child=u,(a=n.child).memoizedState=a4(t),a.childLanes=a3(e,r,t),n.memoizedState=a2,l):(ax(n),a8(n,u))}if(null!==(i=e.memoizedState)&&null!==(u=i.dehydrated)){if(o)256&n.flags?(ax(n),n.flags&=-257,n=a9(e,n,t)):null!==n.memoizedState?(aC(n),n.child=e.child,n.flags|=128,n=null):(aC(n),a=l.fallback,u=n.mode,l=a5({mode:"visible",children:l.children},u),a=ih(a,u,t,null),a.flags|=2,l.return=n,a.return=n,l.sibling=a,n.child=l,ab(n,e.child,null,t),(l=n.child).memoizedState=a4(t),l.childLanes=a3(e,r,t),n.memoizedState=a2,n=a);else if(ax(n),sf(u)){if(r=u.nextSibling&&u.nextSibling.dataset)var c=r.dgst;r=c,(l=Error(s(419))).stack="",l.digest=r,rx({value:l,source:null,stack:null}),n=a9(e,n,t)}else if(a$||od(e,n,t,!1),r=0!=(t&e.childLanes),a$||r){if(null!==(r=iN)){if(0!=(42&(l=t&-t)))l=1;else switch(l){case 2:l=1;break;case 8:l=4;break;case 32:l=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 0x1000000:case 0x2000000:l=64;break;case 0x10000000:l=0x8000000;break;default:l=0}if(0!==(l=0!=(l&(r.suspendedLanes|t))?0:l)&&l!==i.retryLane)throw i.retryLane=l,t4(e,l),i6(r,e,l),aQ}"$?"===u.data||uo(),n=a9(e,n,t)}else"$?"===u.data?(n.flags|=192,n.child=e.child,n=null):(e=i.treeContext,rp=sd(u.nextSibling),rd=n,rm=!0,rh=null,rg=!1,null!==e&&(rr[rl++]=ro,rr[rl++]=ri,rr[rl++]=ra,ro=e.id,ri=e.overflow,ra=n),n=a8(n,l.children),n.flags|=4096);return n}return a?(aC(n),a=l.fallback,u=n.mode,c=(i=e.child).sibling,(l=id(i,{mode:"hidden",children:l.children})).subtreeFlags=0x1e00000&i.subtreeFlags,null!==c?a=id(c,a):(a=ih(a,u,t,null),a.flags|=2),a.return=n,l.return=n,l.sibling=a,n.child=l,l=a,a=n.child,null===(u=e.child.memoizedState)?u=a4(t):(null!==(i=u.cachePool)?(c=rR._currentValue,i=i.parent!==c?{parent:c,pool:c}:i):i=r0(),u={baseLanes:u.baseLanes|t,cachePool:i}),a.memoizedState=u,a.childLanes=a3(e,r,t),n.memoizedState=a2,l):(ax(n),e=(t=e.child).sibling,(t=id(t,{mode:"visible",children:l.children})).return=n,t.sibling=null,null!==e&&(null===(r=n.deletions)?(n.deletions=[e],n.flags|=16):r.push(e)),n.child=t,n.memoizedState=null,t)}function a8(e,n){return(n=a5({mode:"visible",children:n},e.mode)).return=e,e.child=n}function a5(e,n){return ig(e,n,0,null)}function a9(e,n,t){return ab(n,e.child,null,t),e=a8(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function a7(e,n,t){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n),oc(e.return,n,t)}function oe(e,n,t,r,l){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:t,tailMode:l}:(a.isBackwards=n,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=t,a.tailMode=l)}function on(e,n,t){var r=n.pendingProps,l=r.revealOrder,a=r.tail;if(aW(e,n,r.children,t),0!=(2&(r=aP.current)))r=1&r|2,n.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=n.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&a7(e,t,n);else if(19===e.tag)a7(e,t,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===n)break;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch(K(aP,r),l){case"forwards":for(l=null,t=n.child;null!==t;)null!==(e=t.alternate)&&null===aN(e)&&(l=t),t=t.sibling;null===(t=l)?(l=n.child,n.child=null):(l=t.sibling,t.sibling=null),oe(n,!1,l,t,a);break;case"backwards":for(t=null,l=n.child,n.child=null;null!==l;){if(null!==(e=l.alternate)&&null===aN(e)){n.child=l;break}e=l.sibling,l.sibling=t,t=l,l=e}oe(n,!0,t,null,a);break;case"together":oe(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function ot(e,n,t){if(null!==e&&(n.dependencies=e.dependencies),iI|=n.lanes,0==(t&n.childLanes)&&(null===e||(od(e,n,t,!1),0==(t&n.childLanes))))return null;if(null!==e&&n.child!==e.child)throw Error(s(153));if(null!==n.child){for(t=id(e=n.child,e.pendingProps),n.child=t,t.return=n;null!==e.sibling;)e=e.sibling,(t=t.sibling=id(e,e.pendingProps)).return=n;t.sibling=null}return n.child}function or(e,n){return 0!=(e.lanes&n)||!!(null!==(e=e.dependencies)&&op(e))}function ol(e,n,t){if(null!==e){if(e.memoizedProps!==n.pendingProps)a$=!0;else{if(!or(e,t)&&0==(128&n.flags))return a$=!1,function(e,n,t){switch(n.tag){case 3:J(n,n.stateNode.containerInfo),ou(n,rR,e.memoizedState.cache),rS();break;case 27:case 5:en(n);break;case 4:J(n,n.stateNode.containerInfo);break;case 10:ou(n,n.type,n.memoizedProps.value);break;case 13:var r=n.memoizedState;if(null!==r){if(null!==r.dehydrated)return ax(n),n.flags|=128,null;if(0!=(t&n.child.childLanes))return a6(e,n,t);return ax(n),null!==(e=ot(e,n,t))?e.sibling:null}ax(n);break;case 19:var l=0!=(128&e.flags);if((r=0!=(t&n.childLanes))||(od(e,n,t,!1),r=0!=(t&n.childLanes)),l){if(r)return on(e,n,t);n.flags|=128}if(null!==(l=n.memoizedState)&&(l.rendering=null,l.tail=null,l.lastEffect=null),K(aP,aP.current),!r)return null;break;case 22:case 23:return n.lanes=0,aY(e,n,t);case 24:ou(n,rR,e.memoizedState.cache)}return ot(e,n,t)}(e,n,t);a$=0!=(131072&e.flags)}}else a$=!1,rm&&0!=(1048576&n.flags)&&rs(n,rt,n.index);switch(n.lanes=0,n.tag){case 16:e:{e=n.pendingProps;var r=n.elementType,l=r._init;if(r=l(r._payload),n.type=r,"function"==typeof r)ic(r)?(e=aD(r,e),n.tag=1,n=a0(null,n,r,e,t)):(n.tag=0,n=aZ(null,n,r,e,t));else{if(null!=r){if((l=r.$$typeof)===k){n.tag=11,n=aH(null,n,r,e,t);break e}if(l===x){n.tag=14,n=aq(null,n,r,e,t);break e}}throw Error(s(306,n=function e(n){if(null==n)return null;if("function"==typeof n)return n.$$typeof===_?null:n.displayName||n.name||null;if("string"==typeof n)return n;switch(n){case m:return"Fragment";case p:return"Portal";case g:return"Profiler";case h:return"StrictMode";case w:return"Suspense";case S:return"SuspenseList"}if("object"==typeof n)switch(n.$$typeof){case b:return(n.displayName||"Context")+".Provider";case v:return(n._context.displayName||"Context")+".Consumer";case k:var t=n.render;return(n=n.displayName)||(n=""!==(n=t.displayName||t.name||"")?"ForwardRef("+n+")":"ForwardRef"),n;case x:return null!==(t=n.displayName||null)?t:e(n.type)||"Memo";case E:t=n._payload,n=n._init;try{return e(n(t))}catch(e){}}return null}(r)||r,""))}}return n;case 0:return aZ(e,n,n.type,n.pendingProps,t);case 1:return l=aD(r=n.type,n.pendingProps),a0(e,n,r,l,t);case 3:e:{if(J(n,n.stateNode.containerInfo),null===e)throw Error(s(387));var a=n.pendingProps;r=(l=n.memoizedState).element,ok(e,n),oP(n,a,null,t);var o=n.memoizedState;if(ou(n,rR,a=o.cache),a!==l.cache&&of(n,[rR],t,!0),oz(),a=o.element,l.isDehydrated){if(l={element:a,isDehydrated:!1,cache:o.cache},n.updateQueue.baseState=l,n.memoizedState=l,256&n.flags){n=a1(e,n,a,t);break e}if(a!==r){rx(r=t9(Error(s(424)),n)),n=a1(e,n,a,t);break e}for(rp=sd(n.stateNode.containerInfo.firstChild),rd=n,rm=!0,rh=null,rg=!0,t=ak(n,null,a,t),n.child=t;t;)t.flags=-3&t.flags|4096,t=t.sibling}else{if(rS(),a===r){n=ot(e,n,t);break e}aW(e,n,a,t)}n=n.child}return n;case 26:return aG(e,n),null===e?(t=sw(n.type,null,n.pendingProps,null))?n.memoizedState=t:rm||(t=n.type,e=n.pendingProps,(r=u7(G.current).createElement(t))[eR]=n,r[eI]=e,u8(r,t,e),eX(r),n.stateNode=r):n.memoizedState=sw(n.type,e.memoizedProps,n.pendingProps,e.memoizedState),null;case 27:return en(n),null===e&&rm&&(r=n.stateNode=sm(n.type,n.pendingProps,G.current),rd=n,rg=!0,rp=sd(r.firstChild)),r=n.pendingProps.children,null!==e||rm?aW(e,n,r,t):n.child=ab(n,null,r,t),aG(e,n),n.child;case 5:return null===e&&rm&&((l=r=rp)&&(null!==(r=function(e,n,t,r){for(;1===e.nodeType;){if(e.nodeName.toLowerCase()!==n.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[e$])switch(n){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(l=e.getAttribute("rel"))&&e.hasAttribute("data-precedence")||l!==t.rel||e.getAttribute("href")!==(null==t.href?null:t.href)||e.getAttribute("crossorigin")!==(null==t.crossOrigin?null:t.crossOrigin)||e.getAttribute("title")!==(null==t.title?null:t.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((l=e.getAttribute("src"))!==(null==t.src?null:t.src)||e.getAttribute("type")!==(null==t.type?null:t.type)||e.getAttribute("crossorigin")!==(null==t.crossOrigin?null:t.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==n||"hidden"!==e.type)return e;var l=null==t.name?null:""+t.name;if("hidden"===t.type&&e.getAttribute("name")===l)return e}if(null===(e=sd(e.nextSibling)))break}return null}(r,n.type,n.pendingProps,rg))?(n.stateNode=r,rd=n,rp=sd(r.firstChild),rg=!1,l=!0):l=!1),l||rv(n)),en(n),l=n.type,a=n.pendingProps,o=null!==e?e.memoizedProps:null,r=a.children,st(l,a)?r=null:null!==o&&st(l,o)&&(n.flags|=32),null!==n.memoizedState&&(l=ll(e,n,li,null,null,t),sj._currentValue=l),aG(e,n),aW(e,n,r,t),n.child;case 6:return null===e&&rm&&((e=t=rp)&&(null!==(t=function(e,n,t){if(""===n)return null;for(;3!==e.nodeType;)if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!t||null===(e=sd(e.nextSibling)))return null;return e}(t,n.pendingProps,rg))?(n.stateNode=t,rd=n,rp=null,e=!0):e=!1),e||rv(n)),null;case 13:return a6(e,n,t);case 4:return J(n,n.stateNode.containerInfo),r=n.pendingProps,null===e?n.child=ab(n,null,r,t):aW(e,n,r,t),n.child;case 11:return aH(e,n,n.type,n.pendingProps,t);case 7:return aW(e,n,n.pendingProps,t),n.child;case 8:case 12:return aW(e,n,n.pendingProps.children,t),n.child;case 10:return r=n.pendingProps,ou(n,n.type,r.value),aW(e,n,r.children,t),n.child;case 9:return l=n.type._context,r=n.pendingProps.children,om(n),r=r(l=oh(l)),n.flags|=1,aW(e,n,r,t),n.child;case 14:return aq(e,n,n.type,n.pendingProps,t);case 15:return aK(e,n,n.type,n.pendingProps,t);case 19:return on(e,n,t);case 22:return aY(e,n,t);case 24:return om(n),r=oh(rR),null===e?(null===(l=rZ())&&(l=iN,a=rI(),l.pooledCache=a,a.refCount++,null!==a&&(l.pooledCacheLanes|=t),l=a),n.memoizedState={parent:r,cache:l},ob(n),ou(n,rR,l)):(0!=(e.lanes&t)&&(ok(e,n),oP(n,null,null,t),oz()),l=e.memoizedState,a=n.memoizedState,l.parent!==r?(l={parent:r,cache:r},n.memoizedState=l,0===n.lanes&&(n.memoizedState=n.updateQueue.baseState=l),ou(n,rR,r)):(ou(n,rR,r=a.cache),r!==l.cache&&of(n,[rR],t,!0))),aW(e,n,n.pendingProps.children,t),n.child;case 29:throw n.pendingProps}throw Error(s(156,n.tag))}var oa=H(null),oo=null,oi=null;function ou(e,n,t){K(oa,n._currentValue),n._currentValue=t}function os(e){e._currentValue=oa.current,q(oa)}function oc(e,n,t){for(;null!==e;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,null!==r&&(r.childLanes|=n)):null!==r&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===t)break;e=e.return}}function of(e,n,t,r){var l=e.child;for(null!==l&&(l.return=e);null!==l;){var a=l.dependencies;if(null!==a){var o=l.child;a=a.firstContext;e:for(;null!==a;){var i=a;a=l;for(var u=0;u title"))),u8(a,r,t),a[eR]=e,eX(a),r=a;break e;case"link":var o=sF("link","href",l).get(r+(t.href||""));if(o){for(var i=0;i<\/script>",e=e.removeChild(e.firstChild);break;case"select":e="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?e.multiple=!0:r.size&&(e.size=r.size);break;default:e="string"==typeof r.is?l.createElement(t,{is:r.is}):l.createElement(t)}}e[eR]=n,e[eI]=r;e:for(l=n.child;null!==l;){if(5===l.tag||6===l.tag)e.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===n)break;for(;null===l.sibling;){if(null===l.return||l.return===n)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(n.stateNode=e,u8(e,t,r),t){case"button":case"input":case"select":case"textarea":e=!!r.autoFocus;break;case"img":e=!0;break;default:e=!1}e&&ib(n)}}return ix(n),n.flags&=-0x1000001,null;case 6:if(e&&null!=n.stateNode)e.memoizedProps!==r&&ib(n);else{if("string"!=typeof r&&null===n.stateNode)throw Error(s(166));if(e=G.current,rw(n)){if(e=n.stateNode,t=n.memoizedProps,r=null,null!==(l=rd))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eR]=n,(e=!!(e.nodeValue===t||null!==r&&!0===r.suppressHydrationWarning||u2(e.nodeValue,t)))||rv(n)}else(e=u7(e).createTextNode(r))[eR]=n,n.stateNode=e}return ix(n),null;case 13:if(r=n.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rw(n),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(s(318));if(!(l=null!==(l=n.memoizedState)?l.dehydrated:null))throw Error(s(317));l[eR]=n}else rS(),0==(128&n.flags)&&(n.memoizedState=null),n.flags|=4;ix(n),l=!1}else null!==rh&&(i5(rh),rh=null),l=!0;if(!l){if(256&n.flags)return az(n),n;return az(n),null}}if(az(n),0!=(128&n.flags))return n.lanes=t,n;if(t=null!==r,e=null!==e&&null!==e.memoizedState,t){r=n.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool);var a=null;null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)}return t!==e&&t&&(n.child.flags|=8192),iw(n,n.updateQueue),ix(n),null;case 4:return ee(),null===e&&uH(n.stateNode.containerInfo),ix(n),null;case 10:return os(n.type),ix(n),null;case 19:if(q(aP),null===(l=n.memoizedState))return ix(n),null;if(r=0!=(128&n.flags),null===(a=l.rendering)){if(r)iS(l,!1);else{if(0!==iR||null!==e&&0!=(128&e.flags))for(e=n.child;null!==e;){if(null!==(a=aN(e))){for(n.flags|=128,iS(l,!1),e=a.updateQueue,n.updateQueue=e,iw(n,e),n.subtreeFlags=0,e=t,t=n.child;null!==t;)ip(t,e),t=t.sibling;return K(aP,1&aP.current|2),n.child}e=e.sibling}null!==l.tail&&eu()>iq&&(n.flags|=128,r=!0,iS(l,!1),n.lanes=4194304)}}else{if(!r){if(null!==(e=aN(a))){if(n.flags|=128,r=!0,e=e.updateQueue,n.updateQueue=e,iw(n,e),iS(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!rm)return ix(n),null}else 2*eu()-l.renderingStartTime>iq&&0x20000000!==t&&(n.flags|=128,r=!0,iS(l,!1),n.lanes=4194304)}l.isBackwards?(a.sibling=n.child,n.child=a):(null!==(e=l.last)?e.sibling=a:n.child=a,l.last=a)}if(null!==l.tail)return n=l.tail,l.rendering=n,l.tail=n.sibling,l.renderingStartTime=eu(),n.sibling=null,e=aP.current,K(aP,r?1&e|2:1&e),n;return ix(n),null;case 22:case 23:return az(n),rY(),r=null!==n.memoizedState,null!==e?null!==e.memoizedState!==r&&(n.flags|=8192):r&&(n.flags|=8192),r?0!=(0x20000000&t)&&0==(128&n.flags)&&(ix(n),6&n.subtreeFlags&&(n.flags|=8192)):ix(n),null!==(t=n.updateQueue)&&iw(n,t.retryQueue),t=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(t=e.memoizedState.cachePool.pool),r=null,null!==n.memoizedState&&null!==n.memoizedState.cachePool&&(r=n.memoizedState.cachePool.pool),r!==t&&(n.flags|=2048),null!==e&&q(rG),null;case 24:return t=null,null!==e&&(t=e.memoizedState.cache),n.memoizedState.cache!==t&&(n.flags|=2048),os(rR),ix(n),null;case 25:return null}throw Error(s(156,n.tag))}(n.alternate,n,iA);if(null!==t){iL=t;return}if(null!==(n=n.sibling)){iL=n;return}iL=n=e}while(null!==n);0===iR&&(iR=5)}function ud(e,n){do{var t=function(e,n){switch(rf(n),n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return os(rR),ee(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return et(n),null;case 13:if(az(n),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(s(340));rS()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return q(aP),null;case 4:return ee(),null;case 10:return os(n.type),null;case 22:case 23:return az(n),rY(),null!==e&&q(rG),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 24:return os(rR),null;default:return null}}(e.alternate,e);if(null!==t){t.flags&=32767,iL=t;return}if(null!==(t=e.return)&&(t.flags|=32768,t.subtreeFlags=0,t.deletions=null),!n&&null!==(e=e.sibling)){iL=e;return}iL=e=t}while(null!==e);iR=6,iL=null}function up(e,n,t,r,l,a,o,i,u,c,f){var d=F.T,p=B.p;try{B.p=2,F.T=null,function(e,n,t,r,l,a,o,i){do uh();while(null!==iG);if(0!=(6&iP))throw Error(s(327));var u,c=e.finishedWork;if(r=e.finishedLanes,null!==c){if(e.finishedWork=null,e.finishedLanes=0,c===e.current)throw Error(s(177));e.callbackNode=null,e.callbackPriority=0,e.cancelPendingCommit=null;var f=c.lanes|c.childLanes;if(function(e,n,t,r,l,a){var o=e.pendingLanes;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(t=o&~t;0r&&(l=r,r=a,a=l),l=tP(n,a);var o=tP(n,r);l&&o&&(1!==t.rangeCount||t.anchorNode!==l.node||t.anchorOffset!==l.offset||t.focusNode!==o.node||t.focusOffset!==o.offset)&&((e=e.createRange()).setStart(l.node,l.offset),t.removeAllRanges(),a>r?(t.addRange(e),t.extend(o.node,o.offset)):(e.setEnd(o.node,o.offset),t.addRange(e)))}}for(e=[],t=n;t=t.parentNode;)1===t.nodeType&&e.push({element:t,left:t.scrollLeft,top:t.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;nt?32:t,F.T=null,null===iG)var a=!1;else{t=i0,i0=null;var o=iG,i=iZ;if(iG=null,iZ=0,0!=(6&iP))throw Error(s(331));var u=iP;if(iP|=4,io(o.current),o9(o,o.current,i,t),iP=u,uT(0,!1),ev&&"function"==typeof ev.onPostCommitFiberRoot)try{ev.onPostCommitFiberRoot(ey,o)}catch(e){}a=!0}return a}finally{B.p=l,F.T=r,um(e,n)}}return!1}function ug(e,n,t){n=t9(t,n),n=aV(e.stateNode,n,2),null!==(e=oS(e,n,2))&&(e_(e,2),uL(e))}function uy(e,n,t){if(3===e.tag)ug(e,e,t);else for(;null!==n;){if(3===n.tag){ug(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===iY||!iY.has(r))){e=t9(t,e),null!==(r=oS(n,t=aj(2),2))&&(aB(t,r,n,e),e_(r,2),uL(r));break}}n=n.return}}function uv(e,n,t){var r=e.pingCache;if(null===r){r=e.pingCache=new iz;var l=new Set;r.set(n,l)}else void 0===(l=r.get(n))&&(l=new Set,r.set(n,l));l.has(t)||(iM=!0,l.add(t),e=ub.bind(null,e,n,t),n.then(e,e))}function ub(e,n,t){var r=e.pingCache;null!==r&&r.delete(n),e.pingedLanes|=e.suspendedLanes&t,e.warmLanes&=~t,iN===e&&(iT&t)===t&&(4===iR||3===iR&&(0x3c00000&iT)===iT&&300>eu()-iH?0==(2&iP)&&ut(e,0):iV|=t,iB===iT&&(iB=0)),uL(e)}function uk(e,n){0===n&&(n=eL()),null!==(e=t4(e,n))&&(e_(e,n),uL(e))}function uw(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),uk(e,t)}function uS(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(t=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(s(314))}null!==r&&r.delete(n),uk(e,t)}var ux=null,uE=null,uC=!1,uz=!1,uP=!1,uN=0;function uL(e){var n;e!==uE&&null===e.next&&(null===uE?ux=uE=e:uE=uE.next=e),uz=!0,uC||(uC=!0,n=u_,si(function(){0!=(6&iP)?el(ec,n):n()}))}function uT(e,n){if(!uP&&uz){uP=!0;do for(var t=!1,r=ux;null!==r;){if(!n){if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000055&(a=(1<<31-ek(42|e)+1)-1&(l&~(o&~i)))?0xc000055&a|1:a?2|a:0}0!==a&&(t=!0,uO(r,a))}else a=iT,0==(3&(a=ez(r,r===iN?a:0)))||eP(r,a)||(t=!0,uO(r,a))}r=r.next}while(t);uP=!1}}function u_(){uz=uC=!1;var e,n=0;0!==uN&&(((e=window.event)&&"popstate"===e.type?e===sr||(sr=e,0):(sr=null,1))||(n=uN),uN=0);for(var t=eu(),r=null,l=ux;null!==l;){var a=l.next,o=uF(l,t);0===o?(l.next=null,null===r?ux=a:r.next=a,null===a&&(uE=r)):(r=l,(0!==n||0!=(3&o))&&(uz=!0)),l=a}uT(n,!1)}function uF(e,n){for(var t=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title"):null)}function sO(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var sM=null;function sA(){}function sR(){if(this.count--,0===this.count){if(this.stylesheets)sU(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var sI=null;function sU(e,n){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sI=new Map,n.forEach(sV,e),sI=null,sR.call(e))}function sV(e,n){if(!(4&n.state.loading)){var t=sI.get(e);if(t)var r=t.get(null);else{t=new Map,sI.set(e,t);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={id:o,loaded:!1,exports:{}},i=!0;try{e[o].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.loaded=!0,a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var l=1/0,i=0;i=a)&&Object.keys(r.O).every(e=>r.O[e](o[d]))?o.splice(d--,1):(u=!1,a{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>"static/chunks/"+e+"."+({3993:"84dc2c07c5289739",4840:"58ad85f7ae0b4d74"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o]){e[o].push(n);return}if(void 0!==a)for(var l,u,d=document.getElementsByTagName("script"),c=0;c{l.onerror=l.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=f.bind(null,l.onerror),l.onload=f.bind(null,l.onload),u&&document.head.appendChild(l)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={8068:0,5255:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n){if(n)o.push(n[2]);else if(/^(5255|8068)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),l=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",l.name="ChunkLoadError",l.type=a,l.request=i,n[1](l)}},"chunk-"+t,t)}}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,l,u]=o,d=0;if(i.some(t=>0!==e[t])){for(n in l)r.o(l,n)&&(r.m[n]=l[n]);if(u)var c=u(r)}for(t&&t(o);d:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem * var(--tw-space-x-reverse));margin-left:calc(.375rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-t-\[10px\]{border-top-left-radius:10px;border-top-right-radius:10px}.border{border-width:1px}.border-2{border-width:2px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-border\/50{border-color:hsl(var(--border)/.5)}.border-destructive{border-color:hsl(var(--destructive))}.border-destructive\/50{border-color:hsl(var(--destructive)/.5)}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:rgba(0,0,0,.8)}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/40{background-color:hsl(var(--muted)/.4)}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-primary\/20{background-color:hsl(var(--primary)/.2)}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:transparent}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-0{padding-left:0;padding-right:0}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-2\.5{padding-left:.625rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-2{padding-right:.5rem}.pr-2\.5{padding-right:.625rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-\[family-name\:var\(--font-geist-sans\)\]{font-family:var(--font-geist-sans)}.font-euclid{font-family:Euclid-Circular-B,sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[3rem\]{font-size:3rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground)/.5)}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.text-muted{color:hsl(var(--muted))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-violet-500{--tw-text-opacity:1;color:rgb(139 92 246/var(--tw-text-opacity))}.text-violet-600{--tw-text-opacity:1;color:rgb(124 58 237/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.duration-100{animation-duration:.1s}.duration-200{animation-duration:.2s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}.text-balance{text-wrap:balance}.\[appearance\:textfield\]{appearance:textfield}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.even\:border-l:nth-child(2n){border-left-width:1px}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-emerald-800:hover{--tw-bg-opacity:1;background-color:rgb(6 95 70/var(--tw-bg-opacity))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\:bg-orange-800:hover{--tw-bg-opacity:1;background-color:rgb(154 52 18/var(--tw-bg-opacity))}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-rose-800:hover{--tw-bg-opacity:1;background-color:rgb(159 18 57/var(--tw-bg-opacity))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-purple-300:hover{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted)/.4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity))}.group.destructive .group-\[\.destructive\]\:hover\:border-destructive\/30:hover{border-color:hsl(var(--destructive)/.3)}.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive:hover{background-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:hover\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity))}.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus{--tw-ring-color:hsl(var(--destructive))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom],.data-\[side\=left\]\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\[side\=right\]\:translate-x-1[data-side=right],.data-\[side\=top\]\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end],.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[active\=true\]\:bg-muted\/50[data-active=true]{background-color:hsl(var(--muted)/.5)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=on\]\:bg-accent[data-state=on],.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[swipe\=end\]\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:fade-out-80[data-state=closed]{--tw-exit-opacity:0.8}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:slide-out-to-right-full[data-state=closed],.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.dark\:-rotate-90:is(.dark *){--tw-rotate:-90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-0:is(.dark *){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-0:is(.dark *){--tw-scale-x:0;--tw-scale-y:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}.dark\:hover\:bg-slate-900:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}@media (min-width:640px){.sm\:bottom-0{bottom:0}.sm\:right-0{right:0}.sm\:top-auto{top:auto}.sm\:mt-0{margin-top:0}.sm\:max-w-sm{max-width:24rem}.sm\:flex-initial{flex:0 1 auto}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:items-start{align-items:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:border-l{border-left-width:1px}.sm\:border-t-0{border-top-width:0}.sm\:p-20{padding:5rem}.sm\:p-6{padding:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.sm\:text-left{text-align:left}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.data-\[state\=open\]\:sm\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y:100%}}@media (min-width:768px){.md\:ml-auto{margin-left:auto}.md\:mr-8{margin-right:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:size-12{width:3rem;height:3rem}.md\:max-w-\[420px\]{max-width:420px}.md\:max-w-full{max-width:100%}.md\:max-w-lg{max-width:32rem}.md\:max-w-md{max-width:28rem}.md\:basis-1\/2{flex-basis:50%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:grid-cols-\[180px_1fr\]{grid-template-columns:180px 1fr}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-2{gap:.5rem}.md\:gap-5{gap:1.25rem}.md\:gap-8{gap:2rem}.md\:p-10{padding:2.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:size-48{width:12rem;height:12rem}.lg\:size-6{width:1.5rem;height:1.5rem}.lg\:h-10{height:2.5rem}.lg\:min-h-\[600px\]{min-height:600px}.lg\:max-w-full{max-width:100%}.lg\:basis-1\/3{flex-basis:33.333333%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:grid-cols-\[250px_1fr\]{grid-template-columns:250px 1fr}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:gap-6{gap:1.5rem}.lg\:gap-y-0{row-gap:0}.lg\:space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:py-12{padding-top:3rem;padding-bottom:3rem}.lg\:text-\[4rem\]{font-size:4rem}}@media (min-width:1280px){.xl\:size-14{width:3.5rem;height:3.5rem}.xl\:size-6{width:1.5rem;height:1.5rem}.xl\:min-h-\[800px\]{min-height:800px}.xl\:w-\[800px\]{width:800px}.xl\:max-w-xl{max-width:36rem}.xl\:gap-6{gap:1.5rem}.xl\:gap-y-12{row-gap:3rem}.xl\:p-4{padding:1rem}.xl\:text-2xl{font-size:1.5rem;line-height:2rem}.xl\:text-3xl{font-size:1.875rem;line-height:2.25rem}}@media (min-width:1536px){.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button,.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border)/.5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/ECtAeRdoEqstSdffrWqHu/_buildManifest.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/qotm3CpR_o7IBYNxhDC8F/_buildManifest.js similarity index 100% rename from ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/ECtAeRdoEqstSdffrWqHu/_buildManifest.js rename to ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/qotm3CpR_o7IBYNxhDC8F/_buildManifest.js diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/6pIr6VWQMh91espZ7GkRd/_ssgManifest.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/qotm3CpR_o7IBYNxhDC8F/_ssgManifest.js similarity index 100% rename from ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/6pIr6VWQMh91espZ7GkRd/_ssgManifest.js rename to ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/qotm3CpR_o7IBYNxhDC8F/_ssgManifest.js diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_buildManifest.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_buildManifest.js deleted file mode 100644 index f0881a1..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST=function(r,e,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:21,errorRate:1e-4,numBits:403,numHashes:14,bitArray:[0,1,1,0,1,e,0,r,r,e,e,e,e,e,e,r,e,e,e,e,r,r,e,e,r,r,e,r,r,r,r,e,r,r,e,e,r,r,r,r,r,e,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,r,r,e,e,e,e,r,r,r,e,r,r,r,e,e,e,e,r,e,r,e,r,e,r,e,e,e,e,r,r,r,e,r,e,e,r,r,e,r,e,e,e,r,r,r,r,e,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,r,r,e,r,e,e,e,e,e,e,r,r,e,r,r,e,r,r,r,e,r,e,r,e,e,r,e,e,r,r,r,r,e,r,r,r,e,e,e,e,r,e,e,e,r,e,e,r,e,r,r,e,e,e,e,r,e,e,r,e,r,r,e,r,e,r,r,e,e,r,e,e,e,r,r,e,r,r,e,e,e,e,r,r,e,r,e,e,e,r,e,r,r,e,r,e,r,r,r,e,e,r,r,r,e,e,e,r,e,e,r,r,r,e,r,e,r,r,e,e,r,r,e,e,r,r,r,e,r,e,e,r,r,e,e,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,e,r,r,r,r,r,e,e,r,e,e,e,r,r,r,r,r,e,e,e,r,r,e,r,r,r,e,r,e,e,e,e,r,r,r,e,r,e,e,r,e,r,r,r,e,r,r,e,r,e,r,r,e,r,r,r,r,e,r,r,e,e,r,e,e,r,r,r,r,e,r,r,e,r,r,e,r,r,e,r,r,e,r,e,r,r,e,e,r,e,r,e,e,r,e,e,e,e,r,r,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,e,e,r,e,e,e,r,e,r,r,r,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-f347b70a71a8047b.js"],sortedPages:["/_app","/_error"]}}(0,1,0),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_ssgManifest.js b/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_ssgManifest.js deleted file mode 100644 index 5b3ff59..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/_next/static/xSo-kZzzdrUmA11NkmU0c/_ssgManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_all_sh_unix.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_all_sh_unix.sh deleted file mode 100755 index 9364b93..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_all_sh_unix.sh +++ /dev/null @@ -1,10 +0,0 @@ -#/bin/bash - -# Check if the script is run as root. If not, rerun with sudo. -if [ "$(id -u)" -ne 0 ]; then - echo "Script is not running as root. Re-executing with sudo..." - exec sudo "$0" "$@" -fi - -find ./ -type f -name "*.sh" -exec dos2unix {} + -exit 0 diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_everythingINhere_exe.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_everythingINhere_exe.sh deleted file mode 100755 index 1eb2375..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/make_everythingINhere_exe.sh +++ /dev/null @@ -1,10 +0,0 @@ -#/bin/bash - -# Check if the script is run as root. If not, rerun with sudo. -if [ "$(id -u)" -ne 0 ]; then - echo "Script is not running as root. Re-executing with sudo..." - exec sudo "$0" "$@" -fi - -find ./ -type f -exec chmod +x {} \; -exit 0 diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_commands.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_commands.sh deleted file mode 100755 index 7081c71..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_commands.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -# Set content type for JSON response -echo "Content-Type: application/json" -echo "" - -# Check if the file exists -if [ -f "/etc/config/atcommands.user" ]; then - # Start JSON object - printf "{\n" - awk -F';' ' - BEGIN { first = 1 } - { - gsub(/\r/, "", $0) - if (!first) printf ",\n " - else printf " " - gsub(/"/, "\\\"", $1) - gsub(/"/, "\\\"", $2) - printf "\"%s\": \"%s\"", $1, $2 - first = 0 - } - ' /etc/config/atcommands.user - printf "\n}" -else - echo '{"error": "No Data"}' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_macs.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_macs.sh deleted file mode 100755 index e816718..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/fetch_macs.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -echo "Content-type: application/json" -echo "" - -# Create a temporary file to store the processed data -temp_file=$(mktemp) - -# Process ARP entries and store in temporary file -arp -a | while IFS= read -r line; do - if [ -n "$line" ]; then - # Extract hostname (or IP if hostname is "?"), IP, and MAC - hostname=$(echo "$line" | awk '{print $1}') - ip=$(echo "$line" | awk -F '[()]' '{print $2}') - mac=$(echo "$line" | awk '{print $4}') - - # Skip entries without valid MAC addresses - if [ "$mac" = "" ]; then - continue - fi - - # If hostname is "?", use the IP address instead - if [ "$hostname" = "?" ]; then - hostname="$ip" - fi - - # Store each entry in the temp file - echo "$hostname:$ip:$mac" >> "$temp_file" - fi -done - -# Initialize JSON array -echo -n "[" - -# Process the temporary file to create JSON -first=true -while IFS=: read -r hostname ip mac; do - if [ "$first" = true ]; then - first=false - else - echo -n "," - fi - echo -n "{\"hostname\":\"$hostname\",\"ip\":\"$ip\",\"mac\":\"$mac\"}" -done < "$temp_file" - -# Close the JSON array -echo "]" - -# Clean up -rm -f "$temp_file" \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/mtu.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/mtu.sh deleted file mode 100755 index 858b654..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/mtu.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/sh -echo "Content-type: application/json" -echo "" -mtu_firewall_file="/etc/firewall.user.mtu" -network_interface="rmnet_data0" -lan_utils_script="/etc/data/lanUtils.sh" - -get_current_mtu() { - ip link show "$network_interface" | grep -o "mtu [0-9]*" | cut -d' ' -f2 -} - -update_lanutils_mtu_config() { - local action="$1" - if [ "$action" = "add" ]; then - # Add the MTU firewall file line if not already present - if ! grep -q "local mtu_firewall_file=/etc/firewall.user.mtu" "$lan_utils_script"; then - sed -i '/local ttl_firewall_file=\/etc\/firewall.user.ttl/a local mtu_firewall_file=/etc/firewall.user.mtu' "$lan_utils_script" - fi - elif [ "$action" = "remove" ]; then - # Remove the MTU firewall file line if present - sed -i '/local mtu_firewall_file=\/etc\/firewall.user.mtu/d' "$lan_utils_script" - fi -} - -case "$REQUEST_METHOD" in - GET) - # Fetch current MTU - current_mtu=$(get_current_mtu) - current_mtu=${current_mtu:-1500} - - # Check if custom MTU is configured - if [ -f "$mtu_firewall_file" ]; then - echo "{\"isEnabled\": true, \"currentValue\": $current_mtu}" - else - echo "{\"isEnabled\": false, \"currentValue\": $current_mtu}" - fi - ;; - - POST) - read -r post_data - mtu_value=$(echo "$post_data" | sed 's/mtu=//') - - # Check for disable functionality - if [ "$mtu_value" = "disable" ]; then - # Remove the MTU configuration file - rm -f "$mtu_firewall_file" - - # Remove the MTU configuration line from lanUtils.sh - update_lanutils_mtu_config "remove" - - # Get the default MTU - default_mtu=$(get_current_mtu) - default_mtu=${default_mtu:-1500} - - echo "{\"success\": true, \"message\": \"MTU configuration disabled\", \"currentValue\": $default_mtu}" - exit 0 - fi - - # Validate MTU input - if ! [[ "$mtu_value" =~ ^[0-9]+$ ]]; then - echo "{\"success\": false, \"error\": \"Invalid MTU value\"}" - exit 1 - fi - - # Create firewall MTU configuration file with individual interface commands - > "$mtu_firewall_file" # Clear the file - for iface in $(ls /sys/class/net | grep '^rmnet_data'); do - echo "ip link set $iface mtu $mtu_value" >> "$mtu_firewall_file" - done - - # Immediately apply MTU change - for iface in $(ls /sys/class/net | grep '^rmnet_data'); do - ip link set "$iface" mtu "$mtu_value" - done - - # Add the MTU configuration line to lanUtils.sh - update_lanutils_mtu_config "add" - - # Run lanUtils.sh to update network configuration - if [ -f "$lan_utils_script" ]; then - . "$lan_utils_script" - fi - - echo "{\"success\": true, \"message\": \"MTU configuration updated to $mtu_value\", \"currentValue\": $mtu_value}" - ;; - - *) - echo "{\"success\": false, \"error\": \"Invalid request method\"}" - ;; -esac \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/ttl.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/ttl.sh deleted file mode 100755 index a344ce4..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/advance/ttl.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/sh - -echo "Content-type: application/json" -echo "" - -ttl_file="/etc/firewall.user.ttl" -lan_utils_script="/etc/data/lanUtils.sh" - -setup_persistent_config() { - if [ ! -f "$lan_utils_script" ]; then - echo "{\"success\": false, \"error\": \"lanUtils.sh not found\"}" - return 1 - fi - - # Backup the original script if not already done - if [ ! -f "${lan_utils_script}.bak" ]; then - cp "$lan_utils_script" "${lan_utils_script}.bak" - fi - - # Add the local ttl_firewall_file line if it's not already present - if ! grep -q "local ttl_firewall_file" "$lan_utils_script"; then - sed -i '/local tcpmss_firewall_filev6/a \ local ttl_firewall_file=/etc/firewall.user.ttl' "$lan_utils_script" - fi - - # Add the condition to include the ttl_firewall_file if it's not already present - if ! grep -q "if \[ -f \"\$ttl_firewall_file\" \]; then" "$lan_utils_script"; then - sed -i '/if \[ -f "\$tcpmss_firewall_filev6" \]; then/i \ if [ -f "\$ttl_firewall_file" ]; then\n cat \$ttl_firewall_file >> \$firewall_file\n fi' "$lan_utils_script" - fi -} - -clear_existing_rules() { - local current_ttl=$1 - if [ -n "$current_ttl" ]; then - iptables -t mangle -D POSTROUTING -o rmnet+ -j TTL --ttl-set "$current_ttl" 2>/dev/null - ip6tables -t mangle -D POSTROUTING -o rmnet+ -j HL --hl-set "$current_ttl" 2>/dev/null - fi -} - -case "$REQUEST_METHOD" in - GET) - # Ensure consistent JSON format for GET requests - if [ -s "$ttl_file" ]; then - ttl_value=$(grep 'iptables -t mangle -A POSTROUTING' "$ttl_file" | awk '{for(i=1;i<=NF;i++){if($i=="--ttl-set"){print $(i+1)}}}') - # Ensure ttl_value is a number, default to 0 if not - if ! [[ "$ttl_value" =~ ^[0-9]+$ ]]; then - ttl_value=0 - fi - echo "{\"isEnabled\": true, \"currentValue\": $ttl_value}" - else - echo "{\"isEnabled\": false, \"currentValue\": 0}" - fi - ;; - POST) - read -r post_data - ttl_value=$(echo "$post_data" | sed 's/ttl=//') - - # Ensure ttl_file exists - touch "$ttl_file" 2>/dev/null - if [ ! -f "$ttl_file" ]; then - echo "{\"success\": false, \"error\": \"Cannot create TTL file\"}" - exit 1 - fi - - # Setup persistent configuration - setup_persistent_config - - # Get current TTL value for cleanup - current_ttl=$(grep 'iptables -t mangle -A POSTROUTING' "$ttl_file" | awk '{for(i=1;i<=NF;i++){if($i=="--ttl-set"){print $(i+1)}}}') - - if ! [[ "$ttl_value" =~ ^[0-9]+$ ]]; then - echo "{\"success\": false, \"error\": \"Invalid TTL value\"}" - elif [ "$ttl_value" = "0" ]; then - clear_existing_rules "$current_ttl" - > "$ttl_file" - echo "{\"success\": true}" - else - # Clear existing rules - clear_existing_rules "$current_ttl" - - # Set new rules - echo "iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set $ttl_value" > "$ttl_file" - echo "ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set $ttl_value" >> "$ttl_file" - - # Apply the rules - iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set "$ttl_value" - ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set "$ttl_value" - - echo "{\"success\": true}" - fi - ;; - *) - echo "{\"success\": false, \"error\": \"Invalid request method\"}" - ;; -esac \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/at_queue_client.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/at_queue_client.sh deleted file mode 100755 index 139190b..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/at_queue_client.sh +++ /dev/null @@ -1,266 +0,0 @@ -#!/bin/sh -# AT Queue Client for OpenWRT -# Located in /www/cgi-bin/services/at_queue_client - -QUEUE_DIR="/tmp/at_queue" -RESULTS_DIR="$QUEUE_DIR/results" -QUEUE_MANAGER="/www/cgi-bin/services/at_queue_manager.sh" -POLL_INTERVAL=0.01 - -usage() { - echo "Usage: $0 [options] " - echo "Options:" - echo " -w Wait for command completion" - echo " -t Timeout in seconds (default: 240)" - echo " -h Show this help message" - exit 1 -} - -# Output JSON response -output_json() { - local content="$1" - local headers="${2:-1}" # Default to showing headers - echo "$content" -} - -# URL decode function -urldecode() { - local encoded="$1" - logger -t at_queue -p daemon.debug "urldecode: input='$encoded'" - - # Handle %2B -> + and %22 -> " conversions - local decoded="${encoded//%2B/+}" - decoded="${decoded//%22/\"}" - # Then handle other encoded characters - decoded=$(printf '%b' "${decoded//%/\\x}") - - logger -t at_queue -p daemon.debug "urldecode: output='$decoded'" - echo "$decoded" -} - -# Extract command ID from response with improved error handling -get_command_id() { - local response="$1" - echo "DEBUG: Raw response: '$response'" >&2 - - # Strip any headers from response - local json_response=$(echo "$response" | sed -n '/^{/,$p') - echo "DEBUG: JSON portion: '$json_response'" >&2 - - # Try to extract command_id using grep and sed instead of jsonfilter - local cmd_id=$(echo "$json_response" | grep -o '"command_id":"[^"]*"' | sed 's/"command_id":"//;s/"$//') - - if [ -n "$cmd_id" ]; then - echo "$cmd_id" - return 0 - fi - - # Fallback to jsonfilter if available - echo "DEBUG: Trying jsonfilter as fallback" >&2 - local cmd_id_jsonfilter=$(echo "$json_response" | jsonfilter -e '@.command_id' 2>/dev/null) - - if [ -n "$cmd_id_jsonfilter" ]; then - echo "$cmd_id_jsonfilter" - return 0 - fi - - echo "ERROR: Failed to extract command ID from response" >&2 - return 1 -} - -# Normalize AT command -normalize_at_command() { - local cmd="$1" - logger -t at_queue -p daemon.debug "normalize: input='$cmd'" - - # URL decode the command - cmd=$(urldecode "$cmd") - logger -t at_queue -p daemon.debug "normalize: after urldecode='$cmd'" - - # Remove any carriage returns or newlines - cmd=$(echo "$cmd" | tr -d '\r\n') - logger -t at_queue -p daemon.debug "normalize: after cleanup='$cmd'" - - # Trim leading/trailing whitespace while preserving quotes - cmd=$(echo "$cmd" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') - logger -t at_queue -p daemon.debug "normalize: final output='$cmd'" - - echo "$cmd" -} - -# Submit command with priority handling -submit_command() { - local cmd="$1" - local priority=10 - - # Set high priority for QSCAN commands for faster processing - if echo "$cmd" | grep -qi "AT+QSCAN"; then - priority=1 - fi - - # Submit using appropriate method - if [ "${SCRIPT_NAME}" != "" ]; then - # CGI mode - direct execution - local escaped_cmd=$(echo "$cmd" | sed 's/"/\\"/g') - QUERY_STRING="action=enqueue&command=${escaped_cmd}&priority=$priority" "$QUEUE_MANAGER" - else - # CLI mode - "$QUEUE_MANAGER" enqueue "$cmd" "$priority" - fi -} - -# Check if result exists with proper error handling -check_result() { - local cmd_id="$1" - local show_headers="${2:-1}" # Add parameter for header control - - if [ -f "$RESULTS_DIR/$cmd_id.json" ]; then - local result_content=$(cat "$RESULTS_DIR/$cmd_id.json") - if [ -z "$result_content" ]; then - logger -t at_queue -p daemon.error "Empty result file for command ID: $cmd_id" - local error_json="{\"error\":\"Empty result file\",\"command_id\":\"$cmd_id\"}" - output_json "$error_json" "$show_headers" - return 1 - fi - output_json "$result_content" "$show_headers" - return 0 - fi - local error_json="{\"error\":\"Result not found\",\"command_id\":\"$cmd_id\"}" - output_json "$error_json" "$show_headers" - return 1 -} - -# Wait for command completion with optimized polling and better error handling -wait_for_completion() { - local cmd_id="$1" - local timeout="$2" - local show_headers="${3:-1}" - local result_file="$RESULTS_DIR/$cmd_id.json" - - if [ -z "$cmd_id" ]; then - local error_json="{\"error\":\"Invalid command ID\"}" - output_json "$error_json" "$show_headers" - return 1 - fi - - # First quick check - if [ -f "$result_file" ]; then - output_json "$(cat "$result_file")" "$show_headers" - return 0 - fi - - # Wait with shorter polling interval - local start_time=$(date +%s) - local current_time - - while true; do - if [ -f "$result_file" ]; then - output_json "$(cat "$result_file")" "$show_headers" - return 0 - fi - - current_time=$(date +%s) - if [ $((current_time - start_time)) -ge "$timeout" ]; then - break - fi - - sleep $POLL_INTERVAL - done - - local error_json=$(cat << EOF -{ - "error": "Timeout waiting for completion", - "command_id": "$cmd_id", - "timeout": $timeout -} -EOF -) - output_json "$error_json" "$show_headers" - return 1 -} - -# CGI request handling -if [ "${SCRIPT_NAME}" != "" ]; then - # Output headers only once at the beginning - echo "Content-Type: application/json" - echo "" - - # Parse query string - eval $(echo "$QUERY_STRING" | sed 's/&/;/g') - - # Handle different actions - if [ -n "$command_id" ]; then - # Get result for specific command ID - check_result "$command_id" "0" # Don't show headers - elif [ -n "$command" ]; then - # URL decode and normalize the command - command=$(urldecode "$command") - command=$(normalize_at_command "$command") - - # Check if it's a valid AT command - if echo "$command" | grep -qi "^AT"; then - # Submit command and get response - response=$(submit_command "$command") - cmd_id=$(get_command_id "$response") - - if [ "$wait" = "1" ]; then - if [ -n "$cmd_id" ]; then - wait_for_completion "$cmd_id" "${timeout:-180}" "0" # Don't show headers - else - output_json "{\"error\":\"Failed to get command ID from response\",\"response\":\"$response\"}" "0" - fi - else - output_json "$response" "0" # Don't show headers - fi - else - output_json "{\"error\":\"Invalid AT command format\"}" "0" - fi - else - output_json "{\"error\":\"No command or command_id specified\"}" "0" - fi - exit 0 -fi - -# CLI processing -wait_mode=0 -timeout=180 - -while getopts "wt:h" opt; do - case $opt in - w) wait_mode=1 ;; - t) timeout="$OPTARG" ;; - h) usage ;; - ?) usage ;; - esac -done - -shift $((OPTIND-1)) - -if [ $# -eq 0 ]; then - usage -fi - -# Combine remaining arguments into AT command -command="$*" - -# Validate AT command format -if ! echo "$command" | grep -qi "^AT"; then - echo "Error: Command must start with 'AT'" - exit 1 -fi - -# Submit command and get response -response=$(submit_command "$command") -cmd_id=$(get_command_id "$response") - -if [ -z "$cmd_id" ]; then - echo "Error: Failed to get command ID" - echo "Response: $response" - exit 1 -fi - -if [ $wait_mode -eq 1 ]; then - wait_for_completion "$cmd_id" "$timeout" -else - echo "$response" -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/fetch_data.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/fetch_data.sh deleted file mode 100755 index 48c6551..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/at_cmd/fetch_data.sh +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/sh - -# Set content-type for JSON response -echo "Content-type: application/json" -echo "" - -# Define paths and constants to match queue system -QUEUE_DIR="/tmp/at_queue" -QUEUE_MANAGER="/www/cgi-bin/services/at_queue_manager" -LOCK_ID="FETCH_DATA_$(date +%s)_$$" -TOKEN_FILE="$QUEUE_DIR/token" - -# Logging function (minimized) -log_message() { - # Only log errors and critical info - if [ "$1" = "error" ] || [ "$1" = "crit" ]; then - logger -t at_queue -p "daemon.$1" "$2" - fi -} - -# Enhanced JSON string escaping function -escape_json() { - printf '%s' "$1" | awk ' - BEGIN { RS="\n"; ORS="\\n" } - { - gsub(/\\/, "\\\\") - gsub(/"/, "\\\"") - gsub(/\r/, "") - gsub(/\t/, "\\t") - gsub(/\f/, "\\f") - gsub(/\b/, "\\b") - print - } - ' | sed 's/\\n$//' -} - -# Acquire token directly (avoid CGI overhead) -acquire_token() { - local priority="${1:-10}" - local max_attempts=10 - local attempt=0 - - while [ $attempt -lt $max_attempts ]; do - # Check if token file exists - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Try again - sleep 0.1 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$LOCK_ID\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$LOCK_ID" ]; then - return 0 - fi - - sleep 0.1 - attempt=$((attempt + 1)) - done - - return 1 -} - -# Release token directly -release_token() { - # Only remove if it's our token - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$LOCK_ID" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - fi - fi -} - -# Direct AT command execution with minimal overhead -execute_at_command() { - local CMD="$1" - sms_tool at "$CMD" -t 3 2>/dev/null -} - -# Batch process all commands with a single token -process_all_commands() { - local commands="$1" - local priority="${2:-10}" - local first=1 - - # Acquire a single token for all commands - if ! acquire_token "$priority"; then - log_message "error" "Failed to acquire token for batch processing" - # Return all failed responses - printf '[' - first=1 - for cmd in $commands; do - [ $first -eq 0 ] && printf ',' - first=0 - ESCAPED_CMD=$(escape_json "$cmd") - printf '{"command":"%s","response":"Failed to acquire token","status":"error"}' "${ESCAPED_CMD}" - done - printf ']\n' - return 1 - fi - - # Process all commands with the single token - printf '[' - for cmd in $commands; do - [ $first -eq 0 ] && printf ',' - first=0 - - OUTPUT=$(execute_at_command "$cmd") - local CMD_STATUS=$? - - ESCAPED_CMD=$(escape_json "$cmd") - ESCAPED_OUTPUT=$(escape_json "$OUTPUT") - - if [ $CMD_STATUS -eq 0 ] && [ -n "$OUTPUT" ]; then - printf '{"command":"%s","response":"%s","status":"success"}' \ - "${ESCAPED_CMD}" \ - "${ESCAPED_OUTPUT}" - else - printf '{"command":"%s","response":"Command failed","status":"error"}' \ - "${ESCAPED_CMD}" - fi - done - printf ']\n' - - # Release token after all commands are done - release_token - return 0 -} - -# Main execution with timeout and proper cleanup -trap 'release_token; exit 1' INT TERM - -# Command sets -COMMAND_SET_1='AT+QUIMSLOT? AT+CNUM AT+COPS? AT+CIMI AT+ICCID AT+CGSN AT+CPIN? AT+CGDCONT? AT+CREG? AT+CFUN? AT+QENG="servingcell" AT+QTEMP AT+CGCONTRDP AT+QCAINFO AT+QRSRP AT+QMAP="WWAN" AT+C5GREG=2;+C5GREG? AT+CGREG=2;+CGREG? AT+QRSRQ AT+QSINR' -COMMAND_SET_2='AT+CGDCONT? AT+CGCONTRDP AT+QNWPREFCFG="mode_pref" AT+QNWPREFCFG="nr5g_disable_mode" AT+QUIMSLOT? AT+CFUN=?' -COMMAND_SET_3='AT+CGMI AT+CGMM AT+QGMR AT+CNUM AT+CIMI AT+ICCID AT+CGSN AT+QMAP="LANIP" AT+QMAP="WWAN" AT+QGETCAPABILITY' -COMMAND_SET_4='AT+QMAP="MPDN_RULE" AT+QMAP="DHCPV4DNS" AT+QCFG="usbnet"' -COMMAND_SET_5='AT+QRSRP AT+QRSRQ AT+QSINR AT+QCAINFO AT+QSPN' -COMMAND_SET_6='AT+CEREG=2;+CEREG? AT+C5GREG=2;+C5GREG? AT+CPIN? AT+CGDCONT? AT+CGCONTRDP AT+QMAP="WWAN" AT+QRSRP AT+QTEMP AT+QNETRC?' -COMMAND_SET_7='AT+QNWPREFCFG="policy_band" AT+QNWPREFCFG="lte_band";+QNWPREFCFG="nsa_nr5g_band";+QNWPREFCFG="nr5g_band"' -COMMAND_SET_8='AT+QNWLOCK="common/4g" AT+QNWLOCK="common/5g" AT+QNWLOCK="save_ctrl"' - -# Get command set from query string with validation -COMMAND_SET=$(echo "$QUERY_STRING" | grep -o 'set=[1-8]' | cut -d'=' -f2 | tr -cd '0-9') -if [ -z "$COMMAND_SET" ] || [ "$COMMAND_SET" -lt 1 ] || [ "$COMMAND_SET" -gt 8 ]; then - COMMAND_SET=1 -fi - -# Select the appropriate command set -case "$COMMAND_SET" in - 1) COMMANDS="$COMMAND_SET_1";; - 2) COMMANDS="$COMMAND_SET_2";; - 3) COMMANDS="$COMMAND_SET_3";; - 4) COMMANDS="$COMMAND_SET_4";; - 5) COMMANDS="$COMMAND_SET_5";; - 6) COMMANDS="$COMMAND_SET_6";; - 7) COMMANDS="$COMMAND_SET_7";; - 8) COMMANDS="$COMMAND_SET_8";; -esac - -# Set priority based on content -PRIORITY=10 -if echo "$COMMANDS" | grep -qi "AT+QSCAN"; then - PRIORITY=1 -fi - -# Process commands with timeout protection -( sleep 60; kill -TERM $$ 2>/dev/null ) & -TIMEOUT_PID=$! - -process_all_commands "$COMMANDS" "$PRIORITY" - -# Clean up -kill $TIMEOUT_PID 2>/dev/null -release_token \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/auth.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/auth.sh deleted file mode 100755 index dc53c38..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/auth.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh - -# Set Content-Type for CGI script -echo "Content-type: application/json" -echo "" - -# Read POST data -read -r POST_DATA - -# Debug log for generated hash -DEBUG_LOG="/tmp/auth.log" - -# Extract the password from POST data (URL encoded) -USER="root" -INPUT_PASSWORD=$(echo "$POST_DATA" | grep -o 'password=[^&]*' | cut -d= -f2-) - -# URL-decode the password while preserving most special characters -# First decode percent-encoded sequences -urldecode() { - local encoded="${1//+/ }" - printf '%b' "${encoded//%/\\x}" -} - -# Decode the password -INPUT_PASSWORD=$(urldecode "$INPUT_PASSWORD") - -# Basic validation to reject & and $ characters -if echo "$INPUT_PASSWORD" | grep -q '[&$]'; then - echo '{"state":"failed", "message":"Password contains forbidden characters (& or $)"}' - exit 1 -fi - -# Sanitize the password for shell usage -INPUT_PASSWORD=$(printf '%s' "$INPUT_PASSWORD" | sed 's/[\"]/\\&/g') - -# Extract the hashed password from /etc/shadow for the specified user -USER_SHADOW_ENTRY=$(grep "^$USER:" /etc/shadow) - -if [ -z "$USER_SHADOW_ENTRY" ]; then - echo '{"state":"failed", "message":"User not found"}' - exit 1 -fi - -# Extract the password hash (it's the second field, colon-separated) -USER_HASH=$(echo "$USER_SHADOW_ENTRY" | cut -d: -f2) - -# Extract the salt (MD5 uses the $1$ prefix followed by the salt) -SALT=$(echo "$USER_HASH" | cut -d'$' -f3) - -# Generate a hash from the input password using the same salt -# Use printf to avoid issues with special characters in echo -GENERATED_HASH=$(printf '%s' "$INPUT_PASSWORD" | openssl passwd -1 -salt "$SALT" -stdin) - -# Log generated hash for debugging -printf "Generated hash: %s\n" "$GENERATED_HASH" >> "$DEBUG_LOG" - -# Compare the generated hash with the one in the shadow file -if [ "$GENERATED_HASH" = "$USER_HASH" ]; then - echo '{"state":"success"}' -else - echo '{"state":"failed", "message":"Authentication failed"}' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-locking/get_cell_lock.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-locking/get_cell_lock.sh deleted file mode 100755 index 25cb373..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-locking/get_cell_lock.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/sh - -# Set headers for JSON response -echo "Content-type: application/json" -echo "" - -# Load UCI functions -. /lib/functions.sh - -# Function to safely get UCI value with default -get_uci_value() { - local value - config_get value cell_lock "$1" "$2" - echo "${value:-$2}" -} - -# Function to check if daemon is running -check_service_status() { - if [ -f "/var/run/cell_lock_scheduler.pid" ]; then - pid=$(cat /var/run/cell_lock_scheduler.pid 2>/dev/null) - if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - echo "running" - return - fi - fi - echo "stopped" -} - -# Function to get current status with proper JSON handling -get_current_status() { - local STATUS_FILE="/tmp/cell_lock_status.json" - local status="unknown" - local message="Status not available" - local active="0" - local locked="0" - local timestamp=$(date +%s) - - if [ -f "$STATUS_FILE" ]; then - # Try to extract values from status file - if grep -q "status" "$STATUS_FILE"; then - status=$(cat "$STATUS_FILE" | jsonfilter -e '@.status' 2>/dev/null) - # Extract message and remove any surrounding quotes - message=$(cat "$STATUS_FILE" | jsonfilter -e '@.message' 2>/dev/null | sed 's/^"//;s/"$//') - active=$(cat "$STATUS_FILE" | jsonfilter -e '@.active' 2>/dev/null) - locked=$(cat "$STATUS_FILE" | jsonfilter -e '@.locked' 2>/dev/null) - timestamp=$(cat "$STATUS_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - fi - fi - - # Escape quotes and special characters in message - message=$(echo "$message" | sed 's/\\/\\\\/g; s/"/\\"/g') - - # Return the status as a JSON object with properly quoted message - echo "{\"status\":\"$status\",\"message\":\"$message\",\"active\":$active,\"locked\":$locked,\"timestamp\":$timestamp}" -} - -# Load configuration -config_load quecmanager - -# Check if cell lock section exists -if ! uci -q get quecmanager.cell_lock >/dev/null; then - echo '{"status":"inactive","message":"Cell lock is not configured","enabled":false,"startTime":"","endTime":"","active":false,"locked":false}' - exit 0 -fi - -# Get service status -service_status=$(check_service_status) - -# Get current status -current_status=$(get_current_status) - -# Get configuration values -enabled=$(get_uci_value "enabled" "0") -start_time=$(get_uci_value "start_time" "") -end_time=$(get_uci_value "end_time" "") -active=$(get_uci_value "active" "0") -lte_params=$(get_uci_value "lte_params" "") -nr5g_params=$(get_uci_value "nr5g_params" "") -lte_persist=$(get_uci_value "lte_persist" "0") -nr5g_persist=$(get_uci_value "nr5g_persist" "0") - -# Convert numeric values to boolean for JSON -enabled_bool="false" -active_bool="false" -locked_bool="false" - -[ "$enabled" = "1" ] && enabled_bool="true" -[ "$active" = "1" ] && active_bool="true" - -# Get locked status from current_status -locked=$(echo "$current_status" | jsonfilter -e '@.locked' 2>/dev/null) -[ "$locked" = "1" ] && locked_bool="true" - -# Extract the message properly from current status -message_value=$(echo "$current_status" | jsonfilter -e '@.message' 2>/dev/null | sed 's/^"//;s/"$//') - -# Prepare JSON response in format expected by the component -cat <> "$LOG_FILE" - - # Debug logging - echo "[$timestamp] [$level] $message" >> "$DEBUG_FILE" - - # Log to system log - logger -t cell_lock -p "daemon.$level" "$message" -} - -# Log request details for debugging -log_request_info() { - echo "==== NEW REQUEST ====" >> "$DEBUG_FILE" - echo "METHOD: $REQUEST_METHOD" >> "$DEBUG_FILE" - echo "QUERY_STRING: $QUERY_STRING" >> "$DEBUG_FILE" - echo "CONTENT_LENGTH: $CONTENT_LENGTH" >> "$DEBUG_FILE" - echo "CONTENT_TYPE: $CONTENT_TYPE" >> "$DEBUG_FILE" -} - -# Function to validate time format (HH:MM) -validate_time_format() { - local time="$1" - local name="$2" - - if ! echo "$time" | grep -q '^[0-2][0-9]:[0-5][0-9]$'; then - echo "{\"status\":\"error\",\"message\":\"$name must be in format HH:MM (24-hour)\"}" - log_message "$name has invalid format: $time" "error" - return 1 - fi - - # Further validate hour (00-23) - local hour=$(echo "$time" | cut -d':' -f1) - if [ "$hour" -gt 23 ]; then - echo "{\"status\":\"error\",\"message\":\"Hour in $name must be between 00-23\"}" - log_message "$name has invalid hour: $hour" "error" - return 1 - fi - - return 0 -} - -# Log request info for debugging -log_request_info - -# Handle GET requests for status -if [ "$REQUEST_METHOD" = "GET" ]; then - log_message "Handling GET request" "debug" - - # Load UCI configuration - if [ -f "/etc/config/quecmanager" ]; then - ENABLED=$(uci -q get "$UCI_CONFIG.cell_lock.enabled" || echo "0") - START_TIME=$(uci -q get "$UCI_CONFIG.cell_lock.start_time" || echo "") - END_TIME=$(uci -q get "$UCI_CONFIG.cell_lock.end_time" || echo "") - ACTIVE=$(uci -q get "$UCI_CONFIG.cell_lock.active" || echo "0") - - # Convert to JSON boolean format - [ "$ENABLED" = "1" ] && ENABLED="true" || ENABLED="false" - [ "$ACTIVE" = "1" ] && ACTIVE="true" || ACTIVE="false" - - # Get current status from status file - STATUS="disabled" - MESSAGE="\"Scheduler is disabled\"" - - if [ -f "$STATUS_FILE" ]; then - STATUS=$(cat "$STATUS_FILE" | jsonfilter -e '@.status' 2>/dev/null) - MESSAGE=$(cat "$STATUS_FILE" | jsonfilter -e '@.message' 2>/dev/null) - if [ -n "$MESSAGE" ]; then - MESSAGE="\"$MESSAGE\"" - else - MESSAGE="\"Status not available\"" - fi - fi - - # Output JSON response - echo "{\"enabled\":$ENABLED,\"start_time\":\"$START_TIME\",\"end_time\":\"$END_TIME\",\"active\":$ACTIVE,\"status\":\"$STATUS\",\"message\":$MESSAGE}" - log_message "Returned status response" "debug" - else - echo "{\"enabled\":false,\"start_time\":\"\",\"end_time\":\"\",\"active\":false,\"status\":\"unknown\",\"message\":\"Configuration not found\"}" - log_message "No configuration found" "warn" - fi - exit 0 -fi - -# Handle POST requests for enabling/disabling scheduling -if [ "$REQUEST_METHOD" = "POST" ]; then - log_message "Handling POST request" "debug" - - # Read POST data - CONTENT_LENGTH=${CONTENT_LENGTH:-0} - if [ $CONTENT_LENGTH -gt 0 ]; then - POST_DATA=$(dd bs=1 count=$CONTENT_LENGTH 2>/dev/null) - echo "POST_DATA: $POST_DATA" >> "$DEBUG_FILE" - else - POST_DATA="" - echo "No POST_DATA (empty)" >> "$DEBUG_FILE" - fi - - # Try to parse JSON data - if [ -n "$POST_DATA" ] && command -v jsonfilter >/dev/null 2>&1; then - log_message "Attempting to parse JSON data" "debug" - - # Try to extract values from JSON - allow for differently named fields - ENABLED=$(echo "$POST_DATA" | jsonfilter -e '@.enabled' 2>/dev/null) - if [ -z "$ENABLED" ]; then - ENABLED=$(echo "$POST_DATA" | jsonfilter -e '@.enable' 2>/dev/null) - fi - - START_TIME=$(echo "$POST_DATA" | jsonfilter -e '@.startTime' 2>/dev/null) - if [ -z "$START_TIME" ]; then - START_TIME=$(echo "$POST_DATA" | jsonfilter -e '@.start_time' 2>/dev/null) - fi - - END_TIME=$(echo "$POST_DATA" | jsonfilter -e '@.endTime' 2>/dev/null) - if [ -z "$END_TIME" ]; then - END_TIME=$(echo "$POST_DATA" | jsonfilter -e '@.end_time' 2>/dev/null) - fi - - echo "Parsed JSON: enabled=$ENABLED, start=$START_TIME, end=$END_TIME" >> "$DEBUG_FILE" - - # Handle enable/disable logic - if [ "$ENABLED" = "true" ] || [ "$ENABLED" = "1" ]; then - # Validate times for enable request - if [ -z "$START_TIME" ] || [ -z "$END_TIME" ]; then - echo "{\"status\":\"error\",\"message\":\"Start time and end time are required\"}" - log_message "Missing start or end time" "error" - exit 1 - fi - - # Validate time formats - validate_time_format "$START_TIME" "Start time" || exit 1 - validate_time_format "$END_TIME" "End time" || exit 1 - - # Update configuration - log_message "Enabling scheduling with start=$START_TIME, end=$END_TIME" "info" - uci -q set "$UCI_CONFIG.cell_lock=scheduler" - uci set "$UCI_CONFIG.cell_lock.enabled=1" - uci set "$UCI_CONFIG.cell_lock.start_time=$START_TIME" - uci set "$UCI_CONFIG.cell_lock.end_time=$END_TIME" - uci commit "$UCI_CONFIG" - - # Ensure service is running - if [ -x "/etc/init.d/quecmanager_cell_locking" ]; then - /etc/init.d/quecmanager_cell_locking enable - /etc/init.d/quecmanager_cell_locking restart - log_message "Started scheduler service" "info" - else - log_message "Service script not found" "error" - echo "{\"status\":\"error\",\"message\":\"Service script not found\"}" - exit 1 - fi - - echo "{\"status\":\"success\",\"message\":\"Scheduling enabled\",\"startTime\":\"$START_TIME\",\"endTime\":\"$END_TIME\"}" - log_message "Successfully enabled scheduling" "info" - else - # Disable scheduling - log_message "Disabling scheduling" "info" - uci -q set "$UCI_CONFIG.cell_lock=scheduler" - uci set "$UCI_CONFIG.cell_lock.enabled=0" - uci commit "$UCI_CONFIG" - - # Stop service - if [ -x "/etc/init.d/quecmanager_cell_locking" ]; then - /etc/init.d/quecmanager_cell_locking stop - /etc/init.d/quecmanager_cell_locking disable - log_message "Stopped scheduler service" "info" - fi - - echo "{\"status\":\"success\",\"message\":\"Scheduling disabled\"}" - log_message "Successfully disabled scheduling" "info" - fi - else - log_message "Failed to parse JSON data or no JSON data received" "error" - echo "{\"status\":\"error\",\"message\":\"Invalid request or missing JSON data\"}" - fi - exit 0 -fi - -# If no valid method was handled -echo "{\"status\":\"error\",\"message\":\"Invalid request method\"}" -log_message "Invalid request method: $REQUEST_METHOD" "error" -exit 1 \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/delete-apn-profile.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/delete-apn-profile.sh deleted file mode 100755 index 8385338..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/delete-apn-profile.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/bin/sh - -echo "Content-type: application/json" -echo "" - -# Initialize error tracking -has_error=false -error_message="" - -# Function to append to error message -append_error() { - if [ -z "$error_message" ]; then - error_message="$1" - else - error_message="$error_message; $1" - fi - has_error=true -} - -# Function to log cleanup events -log_message() { - local level="$1" - local message="$2" - local LOG_DIR="/tmp/log/apnprofile" - local LOG_FILE="${LOG_DIR}/apnprofile.log" - - # Ensure log directory exists - mkdir -p "${LOG_DIR}" - - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "${timestamp} - [${level}] ${message}" >> "$LOG_FILE" - logger -t apnprofile "${level}: ${message}" -} - -log_message "INFO" "Starting APN Profile cleanup process" - -# Stop and disable the service -if [ -f "/etc/init.d/apnprofile-service" ]; then - if /etc/init.d/apnprofile-service stop; then - log_message "INFO" "APN Profile service stopped" - else - append_error "Failed to stop APN Profile service" - log_message "ERROR" "Failed to stop APN Profile service" - fi - - if /etc/init.d/apnprofile-service disable; then - log_message "INFO" "APN Profile service disabled" - else - append_error "Failed to disable APN Profile service" - log_message "ERROR" "Failed to disable APN Profile service" - fi - - # Remove the init.d script - if rm -f "/etc/init.d/apnprofile-service"; then - log_message "INFO" "Removed init.d script" - else - append_error "Failed to remove init.d script" - log_message "ERROR" "Failed to remove init.d script" - fi -fi - -# Remove service script -if [ -f "/www/cgi-bin/services/apnprofile.sh" ]; then - if rm -f "/www/cgi-bin/services/apnprofile.sh"; then - log_message "INFO" "Removed service script" - else - append_error "Failed to remove service script" - log_message "ERROR" "Failed to remove service script" - fi -fi - -# Remove symlinks in rc.d if they exist -for link in /etc/rc.d/S??apnprofile-service /etc/rc.d/K??apnprofile-service; do - if [ -L "$link" ]; then - if rm -f "$link"; then - log_message "INFO" "Removed rc.d symlink: $link" - else - append_error "Failed to remove rc.d symlink: $link" - log_message "ERROR" "Failed to remove rc.d symlink: $link" - fi - fi -done - -# Remove UCI configuration (only removes apn_profile section, leaves other sections intact) -if uci -q get quecmanager.apn_profile >/dev/null; then - if uci delete quecmanager.apn_profile && uci commit quecmanager; then - log_message "INFO" "Removed UCI configuration" - else - append_error "Failed to remove UCI configuration" - log_message "ERROR" "Failed to remove UCI configuration" - fi -fi - -# Kill any remaining processes -if pkill -f "/www/cgi-bin/services/apnprofile.sh"; then - log_message "INFO" "Killed remaining APN Profile processes" -fi - -# Clean up temporary files -for file in \ - "/tmp/at_pipe.txt" \ - "/var/run/apnprofile.pid" \ - "/tmp/apn_result.txt" \ - "/tmp/debug.log" \ - "/tmp/inputICCID.txt" \ - "/tmp/outputICCID.txt" \ - "/tmp/inputAPN.txt" \ - "/tmp/outputAPN.txt" -do - if [ -f "$file" ]; then - if rm -f "$file"; then - log_message "INFO" "Removed temporary file: $file" - else - append_error "Failed to remove temporary file: $file" - log_message "ERROR" "Failed to remove temporary file: $file" - fi - fi -done - -log_message "INFO" "APN Profile cleanup completed" - -# Return appropriate JSON response -if [ "$has_error" = true ]; then - echo "{\"status\": \"error\", \"message\": \"$error_message\"}" -else - echo "{\"status\": \"success\", \"message\": \"APN Profile service successfully removed\"}" -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/fetch-apn-profile.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/fetch-apn-profile.sh deleted file mode 100755 index 216bd2f..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/apn-profiles/fetch-apn-profile.sh +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/sh - -# Set headers for JSON response -echo "Content-type: application/json" -echo "" - -# Load UCI functions -. /lib/functions.sh - -# Function to safely get UCI value with default -get_uci_value() { - local value - config_get value apn_profile "$1" "$2" - echo "${value:-$2}" -} - -# Function to check if service is running -check_service_status() { - if [ -f "/var/run/apnprofile.pid" ]; then - pid=$(cat /var/run/apnprofile.pid) - if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - echo "running" - return - fi - fi - - # Double check using process search - if pgrep -f "/www/cgi-bin/services/apnprofile.sh" >/dev/null; then - echo "running" - return - fi - - echo "stopped" -} - -# Function to get last log entry -get_last_log() { - local LOG_FILE="/tmp/log/apnprofile/apnprofile.log" - if [ -f "$LOG_FILE" ]; then - tail -n 1 "$LOG_FILE" - else - echo "No log entries found" - fi -} - -# Function to check if init.d service is enabled -check_service_enabled() { - if [ -f "/etc/init.d/apnprofile-service" ]; then - if /etc/init.d/apnprofile-service enabled; then - echo "true" - return - fi - fi - echo "false" -} - -# Load QuecManager configuration -config_load quecmanager - -# Check if APN Profile section exists -if ! uci -q get quecmanager.apn_profile >/dev/null; then - echo '{"status": "inactive", "message": "APN Profile service is not configured"}' - exit 0 -fi - -# Get enabled status from UCI -enabled=$(get_uci_value "enabled" "0") - -if [ "$enabled" != "1" ]; then - echo '{"status": "inactive", "message": "APN Profile service is disabled"}' - exit 0 -fi - -# Check if service script exists -if [ ! -f "/www/cgi-bin/services/apnprofile.sh" ]; then - echo '{"status": "error", "message": "Service script is missing"}' - exit 0 -fi - -# Get service status information -service_status=$(check_service_status) -service_enabled=$(check_service_enabled) -last_log=$(get_last_log) - -# Fetch all configuration values from UCI -iccid_profile1=$(get_uci_value "iccid_profile1" "") -apn_profile1=$(get_uci_value "apn_profile1" "") -pdp_type1=$(get_uci_value "pdp_type1" "") -iccid_profile2=$(get_uci_value "iccid_profile2" "") -apn_profile2=$(get_uci_value "apn_profile2" "") -pdp_type2=$(get_uci_value "pdp_type2" "") - -# Function to check if profile data exists -validate_profile_data() { - local iccid="$1" - local apn="$2" - local pdp="$3" - - [ -n "$iccid" ] && [ -n "$apn" ] && [ -n "$pdp" ] -} - -# Build JSON response -cat <> "$LOG_FILE" - logger -t apnprofile "${level}: ${message}" -} - -# Create required directories -mkdir -p /www/cgi-bin/services -mkdir -p /etc/init.d - -# Function to create service script -create_service_script() { - cat > /www/cgi-bin/services/apnprofile.sh <<'EOL' -#!/bin/sh - -# Load UCI functions -. /lib/functions.sh - -# Define file paths -QUEUE_FILE="/tmp/at_pipe.txt" -LOG_DIR="/tmp/log/apnprofile" -LOG_FILE="${LOG_DIR}/apnprofile.log" -PID_FILE="/var/run/apnprofile.pid" -STATE_FILE="/tmp/apnprofile_state.json" - -mkdir -p "${LOG_DIR}" -[ ! -f "${QUEUE_FILE}" ] && touch "${QUEUE_FILE}" - -# Save PID -echo $$ > "${PID_FILE}" - -# Enhanced logging function -log_message() { - local level="$1" - local message="$2" - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "${timestamp} - [${level}] ${message}" >> "$LOG_FILE" - logger -t apnprofile "${level}: ${message}" -} - -# AT command handling with locking -handle_lock() { - local max_wait=30 - local wait_count=0 - - while [ -f "$QUEUE_FILE" ] && grep -q "AT_COMMAND" "$QUEUE_FILE" && [ $wait_count -lt $max_wait ]; do - sleep 1 - wait_count=$((wait_count + 1)) - done - - printf '{"command":"AT_COMMAND","pid":"%s","timestamp":"%s"}\n' "$$" "$(date '+%H:%M:%S')" >> "$QUEUE_FILE" -} - -# Execute AT command with retries -execute_at_command() { - local command="$1" - local result="" - local retry_count=0 - local max_retries=3 - - while [ $retry_count -lt $max_retries ]; do - handle_lock - result=$(sms_tool at "$command" -t 4 2>&1) - local status=$? - sed -i "/\"pid\":\"$$\"/d" "$QUEUE_FILE" - - if [ $status -eq 0 ] && [ -n "$result" ]; then - echo "$result" - return 0 - fi - - retry_count=$((retry_count + 1)) - [ $retry_count -lt $max_retries ] && sleep 2 - done - - return 1 -} - -# Get current ICCID -get_current_iccid() { - local result=$(execute_at_command "AT+ICCID") - if [ $? -eq 0 ] && echo "$result" | grep -q "+ICCID:"; then - echo "$result" | grep "+ICCID:" | cut -d' ' -f2 | tr -d '[:space:]' - return 0 - fi - return 1 -} - -# Set APN with error handling -set_apn() { - local pdp_type="$1" - local apn="$2" - - if [ -z "$pdp_type" ] || [ -z "$apn" ]; then - return 1 - fi - - if execute_at_command "AT+CGDCONT=1,\"$pdp_type\",\"$apn\";+COPS=2;+COPS=0"; then - return 0 - fi - return 1 -} - -# Function to get current configuration hash -get_config_hash() { - config_load quecmanager - local hash_input="" - - # Get Profile 1 - config_get ICCID_PROFILE1 apn_profile iccid_profile1 - config_get APN_PROFILE1 apn_profile apn_profile1 - config_get PDP_TYPE1 apn_profile pdp_type1 - - # Get Profile 2 - config_get ICCID_PROFILE2 apn_profile iccid_profile2 - config_get APN_PROFILE2 apn_profile apn_profile2 - config_get PDP_TYPE2 apn_profile pdp_type2 - - hash_input="${ICCID_PROFILE1}${APN_PROFILE1}${PDP_TYPE1}${ICCID_PROFILE2}${APN_PROFILE2}${PDP_TYPE2}" - echo "$hash_input" | md5sum | cut -d' ' -f1 -} - -# Function to read state file -read_state() { - if [ -f "$STATE_FILE" ]; then - cat "$STATE_FILE" - else - echo "{}" - fi -} - -# Function to write state file -write_state() { - local current_iccid="$1" - local config_hash="$2" - local status="$3" - - printf '{"iccid":"%s","config_hash":"%s","status":"%s","timestamp":"%s"}' \ - "$current_iccid" "$config_hash" "$status" "$(date '+%Y-%m-%d %H:%M:%S')" > "$STATE_FILE" -} - -# Main service loop -while true; do - # Get current state - current_state=$(read_state) - current_iccid=$(get_current_iccid) - config_hash=$(get_config_hash) - - # Extract values from current state - state_iccid=$(echo "$current_state" | sed -n 's/.*"iccid":"\([^"]*\)".*/\1/p') - state_hash=$(echo "$current_state" | sed -n 's/.*"config_hash":"\([^"]*\)".*/\1/p') - - needs_update=0 - - # Check if update is needed - if [ ! -f "$STATE_FILE" ]; then - log_message "INFO" "No state file found, will apply profile" - needs_update=1 - elif [ "$current_iccid" != "$state_iccid" ]; then - log_message "INFO" "ICCID changed from $state_iccid to $current_iccid" - needs_update=1 - elif [ "$config_hash" != "$state_hash" ]; then - log_message "INFO" "Configuration changed" - needs_update=1 - fi - - if [ $needs_update -eq 1 ] && [ -n "$current_iccid" ]; then - config_load quecmanager - - # Get Profile 1 - config_get ICCID_PROFILE1 apn_profile iccid_profile1 - config_get APN_PROFILE1 apn_profile apn_profile1 - config_get PDP_TYPE1 apn_profile pdp_type1 - - # Get Profile 2 - config_get ICCID_PROFILE2 apn_profile iccid_profile2 - config_get APN_PROFILE2 apn_profile apn_profile2 - config_get PDP_TYPE2 apn_profile pdp_type2 - - if [ "${current_iccid}" = "${ICCID_PROFILE1}" ]; then - if set_apn "$PDP_TYPE1" "$APN_PROFILE1"; then - log_message "INFO" "Successfully applied Profile 1" - write_state "$current_iccid" "$config_hash" "success" - else - log_message "ERROR" "Failed to apply Profile 1" - write_state "$current_iccid" "$config_hash" "error" - fi - elif [ -n "$ICCID_PROFILE2" ] && [ "${current_iccid}" = "${ICCID_PROFILE2}" ]; then - if set_apn "$PDP_TYPE2" "$APN_PROFILE2"; then - log_message "INFO" "Successfully applied Profile 2" - write_state "$current_iccid" "$config_hash" "success" - else - log_message "ERROR" "Failed to apply Profile 2" - write_state "$current_iccid" "$config_hash" "error" - fi - else - log_message "INFO" "No matching ICCID profile found" - write_state "$current_iccid" "$config_hash" "no_match" - fi - fi - - sleep 10 -done -EOL - - chmod 755 /www/cgi-bin/services/apnprofile.sh -} - -# Function to create init.d script -create_init_script() { - cat > /etc/init.d/apnprofile-service <<'EOL' -#!/bin/sh /etc/rc.common - -START=99 -STOP=10 -USE_PROCD=1 - -start_service() { - local enabled - - # Check if service is enabled in UCI - config_load quecmanager - config_get enabled apn_profile enabled '0' - - [ "$enabled" != "1" ] && return 0 - - procd_open_instance - procd_set_param command /www/cgi-bin/services/apnprofile.sh - procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_set_param nice 19 - procd_close_instance -} - -service_triggers() { - procd_add_reload_trigger "quecmanager" -} - -reload_service() { - stop - start -} -EOL - - chmod 755 /etc/init.d/apnprofile-service -} - -# Initialize UCI configuration -touch /etc/config/quecmanager - -# Remove existing APN profile section if it exists -uci -q delete quecmanager.apn_profile - -# Create new APN profile section -uci set quecmanager.apn_profile=service -uci set quecmanager.apn_profile.enabled=1 - -# Set Profile 1 configuration -uci set quecmanager.apn_profile.iccid_profile1="$iccidProfile1" -uci set quecmanager.apn_profile.apn_profile1="$apnProfile1" -uci set quecmanager.apn_profile.pdp_type1="$pdpType1" - -# Set Profile 2 configuration if provided -if [ -n "$iccidProfile2" ]; then - uci set quecmanager.apn_profile.iccid_profile2="$iccidProfile2" - uci set quecmanager.apn_profile.apn_profile2="$apnProfile2" - uci set quecmanager.apn_profile.pdp_type2="$pdpType2" -fi - -# Commit UCI changes -if ! uci commit quecmanager; then - log_message "ERROR" "Failed to save UCI configuration" - echo '{"status": "error", "message": "Failed to save UCI configuration"}' - exit 1 -fi - -log_message "INFO" "UCI configuration saved successfully" - -# Create service script if it doesn't exist -if [ ! -f "/www/cgi-bin/services/apnprofile.sh" ]; then - create_service_script - log_message "INFO" "Created service script" -fi - -# Create init.d script if it doesn't exist -if [ ! -f "/etc/init.d/apnprofile-service" ]; then - create_init_script - log_message "INFO" "Created init.d script" -fi - -# Enable and start the service -/etc/init.d/apnprofile-service enable -if /etc/init.d/apnprofile-service restart; then - log_message "INFO" "Service started successfully" - echo '{"status": "success", "message": "APN profiles saved and service started"}' -else - log_message "ERROR" "Failed to start service" - echo '{"status": "error", "message": "Failed to start service"}' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/delete-imei-profile.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/delete-imei-profile.sh deleted file mode 100755 index b6f4c76..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/delete-imei-profile.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/bin/sh - -echo "Content-type: application/json" -echo "" - -# Initialize error tracking -has_error=false -error_message="" - -# Function to append to error message -append_error() { - if [ -z "$error_message" ]; then - error_message="$1" - else - error_message="$error_message; $1" - fi - has_error=true -} - -# Function to log cleanup events -log_message() { - local level="$1" - local message="$2" - local LOG_DIR="/tmp/log/imeiprofile" - local LOG_FILE="${LOG_DIR}/imeiprofile.log" - - # Ensure log directory exists - mkdir -p "${LOG_DIR}" - - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "${timestamp} - [${level}] ${message}" >> "$LOG_FILE" - logger -t imeiprofile "${level}: ${message}" -} - -log_message "INFO" "Starting IMEI Profile cleanup process" - -# Stop and disable the service -if [ -f "/etc/init.d/imeiprofile-service" ]; then - if /etc/init.d/imeiprofile-service stop; then - log_message "INFO" "IMEI Profile service stopped" - else - append_error "Failed to stop IMEI Profile service" - log_message "ERROR" "Failed to stop IMEI Profile service" - fi - - if /etc/init.d/imeiprofile-service disable; then - log_message "INFO" "IMEI Profile service disabled" - else - append_error "Failed to disable IMEI Profile service" - log_message "ERROR" "Failed to disable IMEI Profile service" - fi - - # Remove the init.d script - if rm -f "/etc/init.d/imeiprofile-service"; then - log_message "INFO" "Removed init.d script" - else - append_error "Failed to remove init.d script" - log_message "ERROR" "Failed to remove init.d script" - fi -fi - -# Remove service script -if [ -f "/www/cgi-bin/services/imeiprofile.sh" ]; then - if rm -f "/www/cgi-bin/services/imeiprofile.sh"; then - log_message "INFO" "Removed service script" - else - append_error "Failed to remove service script" - log_message "ERROR" "Failed to remove service script" - fi -fi - -# Remove symlinks in rc.d if they exist -for link in /etc/rc.d/S??imeiprofile-service /etc/rc.d/K??imeiprofile-service; do - if [ -L "$link" ]; then - if rm -f "$link"; then - log_message "INFO" "Removed rc.d symlink: $link" - else - append_error "Failed to remove rc.d symlink: $link" - log_message "ERROR" "Failed to remove rc.d symlink: $link" - fi - fi -done - -# Remove UCI configuration -if uci -q get quecmanager.imei_profile >/dev/null; then - if uci delete quecmanager.imei_profile && uci commit quecmanager; then - log_message "INFO" "Removed UCI configuration" - else - append_error "Failed to remove UCI configuration" - log_message "ERROR" "Failed to remove UCI configuration" - fi -fi - -# Kill any remaining processes -if pkill -f "/www/cgi-bin/services/imeiprofile.sh"; then - log_message "INFO" "Killed remaining IMEI Profile processes" -fi - -# Clean up temporary files -for file in \ - "/tmp/at_pipe.txt" \ - "/var/run/imeiprofile.pid" \ - "/tmp/imei_result.txt" \ - "/tmp/debug.log" \ - "/tmp/inputICCID.txt" \ - "/tmp/outputICCID.txt" \ - "/tmp/inputIMEI.txt" \ - "/tmp/outputIMEI.txt" -do - if [ -f "$file" ]; then - if rm -f "$file"; then - log_message "INFO" "Removed temporary file: $file" - else - append_error "Failed to remove temporary file: $file" - log_message "ERROR" "Failed to remove temporary file: $file" - fi - fi -done - -log_message "INFO" "IMEI Profile cleanup completed" - -# Return appropriate JSON response -if [ "$has_error" = true ]; then - echo "{\"status\": \"error\", \"message\": \"$error_message\"}" -else - echo "{\"status\": \"success\", \"message\": \"IMEI Profile service successfully removed\"}" -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/fetch-imei-profile.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/fetch-imei-profile.sh deleted file mode 100755 index 25ebeb8..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/imei-profiles/fetch-imei-profile.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh - -# Set headers for JSON response -echo "Content-type: application/json" -echo "" - -# Load UCI functions -. /lib/functions.sh - -# Function to safely get UCI value with default -get_uci_value() { - local value - config_get value imei_profile "$1" "$2" - echo "${value:-$2}" -} - -# Function to check if service is running -check_service_status() { - if [ -f "/var/run/imeiprofile.pid" ]; then - pid=$(cat /var/run/imeiprofile.pid) - if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - echo "running" - return - fi - fi - - # Double check using process search - if pgrep -f "/www/cgi-bin/services/imeiprofile.sh" >/dev/null; then - echo "running" - return - fi - - echo "stopped" -} - -# Function to get last log entry -get_last_log() { - local LOG_FILE="/tmp/log/imeiprofile/imeiprofile.log" - if [ -f "$LOG_FILE" ]; then - tail -n 1 "$LOG_FILE" - else - echo "No log entries found" - fi -} - -# Function to check if init.d service is enabled -check_service_enabled() { - if [ -f "/etc/init.d/imeiprofile-service" ]; then - if /etc/init.d/imeiprofile-service enabled; then - echo "true" - return - fi - fi - echo "false" -} - -# Load QuecManager configuration -config_load quecmanager - -# Check if IMEI Profile section exists -if ! uci -q get quecmanager.imei_profile >/dev/null; then - echo '{"status": "inactive", "message": "IMEI Profile service is not configured"}' - exit 0 -fi - -# Get enabled status from UCI -enabled=$(get_uci_value "enabled" "0") - -if [ "$enabled" != "1" ]; then - echo '{"status": "inactive", "message": "IMEI Profile service is disabled"}' - exit 0 -fi - -# Check if service script exists -if [ ! -f "/www/cgi-bin/services/imeiprofile.sh" ]; then - echo '{"status": "error", "message": "Service script is missing"}' - exit 0 -fi - -# Get service status information -service_status=$(check_service_status) -service_enabled=$(check_service_enabled) -last_log=$(get_last_log) - -# Fetch configuration values from UCI -iccid_profile1=$(get_uci_value "iccid_profile1" "") -imei_profile1=$(get_uci_value "imei_profile1" "") -iccid_profile2=$(get_uci_value "iccid_profile2" "") -imei_profile2=$(get_uci_value "imei_profile2" "") - -# Function to check if profile data exists -validate_profile_data() { - local iccid="$1" - local imei="$2" - [ -n "$iccid" ] && [ -n "$imei" ] -} - -# Build JSON response -cat <> "$LOG_FILE" - logger -t imeiprofile "${level}: ${message}" -} - -# Create required directories -mkdir -p /www/cgi-bin/services - -# Function to create service script -create_service_script() { - cat > /www/cgi-bin/services/imeiprofile.sh <<'EOL' -#!/bin/sh - -# Load UCI functions -. /lib/functions.sh - -# Define file paths -QUEUE_FILE="/tmp/at_pipe.txt" -LOG_DIR="/tmp/log/imeiprofile" -LOG_FILE="${LOG_DIR}/imeiprofile.log" -PID_FILE="/var/run/imeiprofile.pid" - -mkdir -p "${LOG_DIR}" -[ ! -f "${QUEUE_FILE}" ] && touch "${QUEUE_FILE}" - -# Save PID -echo $$ > "${PID_FILE}" - -# Enhanced logging function -log_message() { - local level="$1" - local message="$2" - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "${timestamp} - [${level}] ${message}" >> "$LOG_FILE" - logger -t imeiprofile "${level}: ${message}" -} - -# AT command handling with locking -handle_lock() { - local max_wait=30 - local wait_count=0 - - while [ -f "$QUEUE_FILE" ] && grep -q "AT_COMMAND" "$QUEUE_FILE" && [ $wait_count -lt $max_wait ]; do - sleep 1 - wait_count=$((wait_count + 1)) - done - - printf '{"command":"AT_COMMAND","pid":"%s","timestamp":"%s"}\n' "$$" "$(date '+%H:%M:%S')" >> "$QUEUE_FILE" -} - -# Execute AT command with retries -execute_at_command() { - local command="$1" - local result="" - local retry_count=0 - local max_retries=3 - - while [ $retry_count -lt $max_retries ]; do - handle_lock - result=$(sms_tool at "$command" -t 4 2>&1) - local status=$? - sed -i "/\"pid\":\"$$\"/d" "$QUEUE_FILE" - - if [ $status -eq 0 ] && [ -n "$result" ]; then - echo "$result" - return 0 - fi - - retry_count=$((retry_count + 1)) - [ $retry_count -lt $max_retries ] && sleep 2 - done - - return 1 -} - -# Get current ICCID -get_current_iccid() { - local result=$(execute_at_command "AT+ICCID") - if [ $? -eq 0 ] && echo "$result" | grep -q "+ICCID:"; then - echo "$result" | grep "+ICCID:" | cut -d' ' -f2 | tr -d '[:space:]' - return 0 - fi - return 1 -} - -# Get current IMEI -get_current_imei() { - local result=$(execute_at_command "AT+CGSN") - if [ $? -eq 0 ]; then - echo "$result" | grep -v "AT+CGSN" | grep -v "OK" | tr -d '\r\n[:space:]' - return 0 - fi - return 1 -} - -# Set IMEI -set_imei() { - local imei="$1" - if execute_at_command "AT+EGMR=1,7,\"$imei\";+QPOWD=1"; then - return 0 - fi - return 1 -} - -# Function to safely get UCI value with default -get_uci_value() { - local value - config_get value imei_profile "$1" "$2" - echo "${value:-$2}" -} - -# Main service loop -while true; do - # Load current configuration - config_load quecmanager - - # Get Profile 1 - iccid_profile1=$(get_uci_value "iccid_profile1") - imei_profile1=$(get_uci_value "imei_profile1") - - # Get Profile 2 - iccid_profile2=$(get_uci_value "iccid_profile2") - imei_profile2=$(get_uci_value "imei_profile2") - - # Get current ICCID and IMEI - current_iccid=$(get_current_iccid) - current_imei=$(get_current_imei) - - if [ $? -eq 0 ] && [ -n "$current_iccid" ] && [ -n "$current_imei" ]; then - if [ "${current_iccid}" = "${iccid_profile1}" ]; then - if [ "${current_imei}" != "${imei_profile1}" ]; then - if set_imei "${imei_profile1}"; then - log_message "INFO" "Successfully applied Profile 1 IMEI" - else - log_message "ERROR" "Failed to apply Profile 1 IMEI" - fi - fi - elif [ -n "$iccid_profile2" ] && [ "${current_iccid}" = "${iccid_profile2}" ]; then - if [ "${current_imei}" != "${imei_profile2}" ]; then - if set_imei "${imei_profile2}"; then - log_message "INFO" "Successfully applied Profile 2 IMEI" - else - log_message "ERROR" "Failed to apply Profile 2 IMEI" - fi - fi - else - log_message "INFO" "No matching ICCID profile found" - fi - else - log_message "ERROR" "Failed to get current ICCID or IMEI" - fi - - sleep 30 -done -EOL - - chmod 755 /www/cgi-bin/services/imeiprofile.sh -} - -# Function to create init.d script -create_init_script() { - cat > /etc/init.d/imeiprofile-service <<'EOL' -#!/bin/sh /etc/rc.common - -START=99 -STOP=10 -USE_PROCD=1 - -start_service() { - local enabled - - # Check if service is enabled in UCI - config_load quecmanager - config_get enabled imei_profile enabled '0' - - [ "$enabled" != "1" ] && return 0 - - procd_open_instance - procd_set_param command /www/cgi-bin/services/imeiprofile.sh - procd_set_param respawn ${respawn_threshold:-3600} ${respawn_timeout:-5} ${respawn_retry:-5} - procd_set_param stdout 1 - procd_set_param stderr 1 - procd_set_param nice 19 - procd_close_instance -} - -service_triggers() { - procd_add_reload_trigger "quecmanager" -} - -reload_service() { - stop - start -} -EOL - - chmod 755 /etc/init.d/imeiprofile-service -} - -# Initialize UCI configuration -touch /etc/config/quecmanager - -# Remove existing IMEI profile section if it exists -uci -q delete quecmanager.imei_profile - -# Create new IMEI profile section -uci set quecmanager.imei_profile=service -uci set quecmanager.imei_profile.enabled=1 - -# Set Profile 1 configuration -uci set quecmanager.imei_profile.iccid_profile1="$iccidProfile1" -uci set quecmanager.imei_profile.imei_profile1="$imeiProfile1" - -# Set Profile 2 configuration if provided -if [ -n "$iccidProfile2" ]; then - uci set quecmanager.imei_profile.iccid_profile2="$iccidProfile2" - uci set quecmanager.imei_profile.imei_profile2="$imeiProfile2" -fi - -# Commit UCI changes -if ! uci commit quecmanager; then - log_message "ERROR" "Failed to save UCI configuration" - echo '{"status": "error", "message": "Failed to save UCI configuration"}' - exit 1 -fi - -log_message "INFO" "UCI configuration saved successfully" - -# Create service script if it doesn't exist -if [ ! -f "/www/cgi-bin/services/imeiprofile.sh" ]; then - create_service_script - log_message "INFO" "Created service script" -fi - -# Create init.d script if it doesn't exist -if [ ! -f "/etc/init.d/imeiprofile-service" ]; then - create_init_script - log_message "INFO" "Created init.d script" -fi - -# Enable and start the service -/etc/init.d/imeiprofile-service enable -if /etc/init.d/imeiprofile-service restart; then - log_message "INFO" "Service started successfully" - echo '{"status": "success", "message": "IMEI profiles saved and service started"}' -else - log_message "ERROR" "Failed to start service" - echo '{"status": "error", "message": "Failed to start service"}' -fi diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/scheduled_cell_locking.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/scheduled_cell_locking.sh deleted file mode 100755 index 86ad1b8..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/scheduled_cell_locking.sh +++ /dev/null @@ -1,262 +0,0 @@ -#!/bin/sh - -# Configuration -CONFIG_FILE="/etc/cell_lock_schedule.conf" -STATUS_FILE="/tmp/cell_lock_status" -CELL_LOCK_SCRIPT="/usr/bin/set_cell_lock.sh" -QUEUE_FILE="/tmp/at_pipe.txt" -LOG_FILE="/tmp/cell_lock.log" - -# Function to log messages -log_message() { - local level="$1" - local message="$2" - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "${timestamp} - [${level}] ${message}" >> "$LOG_FILE" - logger -t cell_lock "${level}: ${message}" -} - -# Function to handle AT command queue -handle_lock() { - log_message "DEBUG" "Checking queue file status before lock" - if [ ! -f "$QUEUE_FILE" ]; then - log_message "DEBUG" "Queue file does not exist, creating it" - touch "$QUEUE_FILE" - fi - - # Clean any stale entries - if grep -q "\"command\":\"AT_COMMAND\"" "$QUEUE_FILE"; then - local wait_count=0 - while [ $wait_count -lt 6 ]; do - if ! grep -q "\"command\":\"AT_COMMAND\"" "$QUEUE_FILE"; then - break - fi - sleep 1 - wait_count=$((wait_count + 1)) - done - [ $wait_count -eq 6 ] && sed -i "/\"command\":\"AT_COMMAND\"/d" "$QUEUE_FILE" - fi - - printf '{"command":"AT_COMMAND","pid":"%s","timestamp":"%s"}\n' \ - "$$" \ - "$(date '+%H:%M:%S')" >> "$QUEUE_FILE" -} - -# Function to execute AT command -execute_at_command() { - local command="$1" - local result="" - - log_message "DEBUG" "Executing AT command: ${command}" - handle_lock - - result=$(sms_tool at "$command" -t 4 2>&1) - local status=$? - - sed -i "/\"pid\":\"$$\"/d" "$QUEUE_FILE" - - if [ $status -ne 0 ]; then - log_message "ERROR" "Command failed with status $status: $command" - log_message "ERROR" "Command output: $result" - return 1 - fi - - log_message "DEBUG" "Command successful. Output: $result" - echo "$result" - return 0 -} - -# Function to create set_cell_lock.sh script -create_cell_lock_script() { - if [ ! -f "$CELL_LOCK_SCRIPT" ]; then - cat >"$CELL_LOCK_SCRIPT" <<'EOL' -#!/bin/sh - -ACTION=$1 -LTE_PARAMS=$2 -NR5G_PARAMS=$3 - -QUEUE_FILE="/tmp/at_pipe.txt" -LOG_FILE="/tmp/cell_lock.log" - -# Import common functions -. /etc/quecmanager/imei_profile/common_functions.sh || { - echo "Failed to import common functions" - exit 1 -} - -case "$ACTION" in - enable) - # Enable LTE lock if parameters exist - if [ -n "$LTE_PARAMS" ]; then - execute_at_command "AT+QNWLOCK=\"common/4g\",$LTE_PARAMS" - fi - - # Enable NR5G lock if parameters exist - if [ -n "$NR5G_PARAMS" ]; then - execute_at_command "AT+QNWLOCK=\"common/5g\",$NR5G_PARAMS" - fi - ;; - - disable) - # Disable LTE lock - execute_at_command "AT+QNWLOCK=\"common/4g\",0" - - # Disable NR5G lock - execute_at_command "AT+QNWLOCK=\"common/5g\",0" - ;; - - *) - log_message "ERROR" "Invalid action: $ACTION" - exit 1 - ;; -esac - -# Restart network registration to apply changes -execute_at_command "AT+COPS=2" -sleep 2 -execute_at_command "AT+COPS=0" -exit 0 -EOL - - chmod +x "$CELL_LOCK_SCRIPT" - log_message "INFO" "Created cell lock script at $CELL_LOCK_SCRIPT" - fi -} - -# Function to remove set_cell_lock.sh script -remove_cell_lock_script() { - if [ -f "$CELL_LOCK_SCRIPT" ]; then - rm "$CELL_LOCK_SCRIPT" - log_message "INFO" "Removed cell lock script" - fi -} - -# Function to urldecode -urldecode() { - echo -e "$(echo "$1" | sed 's/+/ /g;s/%\([0-9A-F][0-9A-F]\)/\\x\1/g')" -} - -# Function to convert HH:MM to cron format -convert_to_cron_time() { - echo "$1" | awk -F: '{print $2, $1}' -} - -# Function to save configuration -save_config() { - echo "START_TIME=$1" >"$CONFIG_FILE" - echo "END_TIME=$2" >>"$CONFIG_FILE" - echo "ENABLED=1" >>"$CONFIG_FILE" - log_message "INFO" "Saved configuration - Start: $1, End: $2" -} - -# Function to disable scheduling -disable_scheduling() { - if [ -f "$CONFIG_FILE" ]; then - sed -i 's/ENABLED=1/ENABLED=0/' "$CONFIG_FILE" - log_message "INFO" "Disabled scheduling" - fi - crontab -l | grep -v "set_cell_lock.sh" | crontab - - remove_cell_lock_script -} - -# Function to get current status -get_status() { - if [ -f "$CONFIG_FILE" ]; then - ENABLED=$(grep "ENABLED=" "$CONFIG_FILE" | cut -d'=' -f2) - START_TIME=$(grep "START_TIME=" "$CONFIG_FILE" | cut -d'=' -f2) - END_TIME=$(grep "END_TIME=" "$CONFIG_FILE" | cut -d'=' -f2) - - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"enabled\":$ENABLED,\"start_time\":\"$START_TIME\",\"end_time\":\"$END_TIME\"}" - else - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"enabled\":0,\"start_time\":\"\",\"end_time\":\"\"}" - fi -} - -# Handle POST requests -if [ "$REQUEST_METHOD" = "POST" ]; then - read -r POST_DATA - - if echo "$POST_DATA" | grep -q "disable=true"; then - disable_scheduling - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"status\":\"success\",\"message\":\"Scheduling disabled\"}" - exit 0 - fi - - START_TIME=$(echo "$POST_DATA" | grep -o 'start_time=[^&]*' | cut -d'=' -f2) - END_TIME=$(echo "$POST_DATA" | grep -o 'end_time=[^&]*' | cut -d'=' -f2) - - START_TIME=$(urldecode "$START_TIME") - END_TIME=$(urldecode "$END_TIME") - - if [ -z "$START_TIME" ] || [ -z "$END_TIME" ]; then - log_message "ERROR" "Missing start or end time" - echo "Status: 400 Bad Request" - echo "Content-Type: application/json" - echo "" - echo "{\"error\":\"Missing start or end time\"}" - exit 1 - fi - - create_cell_lock_script - - CRON_START=$(convert_to_cron_time "$START_TIME") - CRON_END=$(convert_to_cron_time "$END_TIME") - - save_config "$START_TIME" "$END_TIME" - - # Check current cell lock status and get parameters - LTE_STATUS=$(execute_at_command 'AT+QNWLOCK="common/4g"') - NR5G_STATUS=$(execute_at_command 'AT+QNWLOCK="common/5g"') - - LTE_PARAMS=$(echo "$LTE_STATUS" | grep -o '"common/4g",[^[:space:]]*' | cut -d',' -f2-) - NR5G_PARAMS=$(echo "$NR5G_STATUS" | grep -o '"common/5g",[^[:space:]]*' | cut -d',' -f2-) - - TEMP_CRON=$(mktemp) - - crontab -l 2>/dev/null | grep -v "set_cell_lock.sh" >"$TEMP_CRON" - - echo "$CRON_START * * * $CELL_LOCK_SCRIPT enable \"$LTE_PARAMS\" \"$NR5G_PARAMS\"" >>"$TEMP_CRON" - echo "$CRON_END * * * $CELL_LOCK_SCRIPT disable" >>"$TEMP_CRON" - - crontab "$TEMP_CRON" - rm "$TEMP_CRON" - - log_message "INFO" "Scheduling enabled with start time $START_TIME and end time $END_TIME" - - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"status\":\"success\",\"message\":\"Scheduling enabled\"}" - exit 0 -fi - -# Parse query string for GET requests -if [ "$REQUEST_METHOD" = "GET" ]; then - QUERY_STRING=$(echo "$QUERY_STRING" | sed 's/&/\n/g') - for param in $QUERY_STRING; do - case "$param" in - status=*) - get_status - exit 0 - ;; - esac - done -fi - -# If no valid request is made -log_message "ERROR" "Invalid request received" -echo "Status: 400 Bad Request" -echo "Content-Type: application/json" -echo "" -echo "{\"error\":\"Invalid request\"}" -exit 1 \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_delete.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_delete.sh deleted file mode 100755 index d2eb762..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_delete.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh - -# Set content type -printf "Content-Type: application/json\n\n" - -# URL decode function -urldecode() { - echo "$*" | sed 's/+/ /g;s/%\([0-9A-F][0-9A-F]\)/\\\\x\1/g' | xargs -0 printf '%b' -} - -# Extract indexes from query string -query=$(echo "$QUERY_STRING" | grep -o 'indexes=[^&]*' | cut -d= -f2) -indexes=$(urldecode "$query") - -# Function to output JSON response -send_json() { - printf '{"status":"%s","message":"%s"}\n' "$1" "$2" -} - -# Validate input -if [ -z "$indexes" ]; then - send_json "error" "No indexes provided" - exit 0 -fi - -# Initialize counters -success=0 -failure=0 - -# Process each index -echo "$indexes" | tr ',' '\n' | while read -r index; do - if [ -n "$index" ] && [ "$index" -eq "$index" ] 2>/dev/null; then - if sms_tool delete "$index" 2>/dev/null; then - success=$((success + 1)) - else - failure=$((failure + 1)) - fi - fi -done - -# Send response -if [ $success -gt 0 ]; then - if [ $failure -eq 0 ]; then - send_json "success" "Successfully deleted $success message(s)" - else - send_json "partial" "Deleted $success message(s), failed to delete $failure message(s)" - fi -else - send_json "error" "Failed to delete messages" -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_inbox.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_inbox.sh deleted file mode 100755 index 4d3e0ef..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_inbox.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -printf "Content-type: application/json\r\n\r\n" - -# Execute the command and return the JSON response -if command -v sms_tool > /dev/null 2>&1; then - sms_tool -j recv -else - printf '{"error": "sms_tool not found"}\n' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_send.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_send.sh deleted file mode 100755 index f405e20..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/cell-settings/sms/sms_send.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -echo "Content-Type: application/json" -echo "Cache-Control: no-cache" -echo "" - -# Function to URL decode the string -urldecode() { - local url_encoded="${1//+/ }" - printf '%b' "${url_encoded//%/\\x}" -} - -# Function to escape JSON string -escape_json() { - printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g; s/\n/\\n/g; s/\r/\\r/g; s/\t/\\t/g' -} - -# Read POST data -read -r QUERY_STRING - -# Extract phone and message from POST data -phone=$(echo "$QUERY_STRING" | grep -o 'phone=[^&]*' | cut -d= -f2) -message=$(echo "$QUERY_STRING" | grep -o 'message=[^&]*' | cut -d= -f2) - -# URL decode the message -decoded_message=$(urldecode "$message") - -# Validate inputs -if [ -z "$phone" ] || [ -z "$message" ]; then - echo '{"success":false,"error":"Phone number and message are required"}' - exit 0 -fi - -# Validate phone number (only numbers allowed) -if ! echo "$phone" | grep -q '^[0-9]\+$'; then - echo '{"success":false,"error":"Invalid phone number format"}' - exit 0 -fi - -# Try to send SMS and capture output -result=$(sms_tool send "$phone" "$decoded_message" 2>&1) -escaped_result=$(escape_json "$result") - -# Check if SMS was sent successfully by looking for "sms sent sucessfully" -if echo "$result" | grep -q "sms sent sucessfully"; then - # Extract the message ID if present - message_id=$(echo "$result" | grep -o '[0-9]*$') - echo "{\"success\":true,\"message\":\"SMS sent successfully\",\"messageId\":\"$message_id\",\"raw\":\"$escaped_result\"}" -elif echo "$result" | grep -q "sms not sent, code 350"; then - # Kill any hanging sms_tool process - pkill -f "sms_tool send" - echo '{"success":false,"error":"No prepaid credit available"}' -else - # Kill any hanging sms_tool process - pkill -f "sms_tool send" - echo "{\"success\":false,\"error\":\"Failed to send SMS\",\"raw\":\"$escaped_result\"}" -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan.sh deleted file mode 100755 index 7606a9f..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan.sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/sh - -# Set content type to JSON -echo "Content-type: application/json" -echo "" - -# Configuration -QUEUE_DIR="/tmp/at_queue" -RESULTS_DIR="$QUEUE_DIR/results" -TOKEN_FILE="$QUEUE_DIR/token" -RESULT_FILE="/tmp/qscan_result.json" -WORKER_SCRIPT="/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan_worker.sh" -PID_FILE="/tmp/cell_scan.pid" -SCAN_COMMAND="AT+QSCAN=3,1" -SCAN_TIMEOUT=200 -LOCK_ID="CELL_SCAN_$(date +%s)_$$" - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t at_queue -p "daemon.$level" "cell_scan: $1" -} - -# Function to output JSON response -output_json() { - local status="$1" - local message="$2" - log_message "Sending response: status=$status, message=$message" - printf '{"status":"%s","message":"%s"}\n' "$status" "$message" - exit 0 -} - -# Function to check if worker is running -check_worker_running() { - if [ -f "$PID_FILE" ]; then - pid=$(cat "$PID_FILE") - if kill -0 "$pid" 2>/dev/null; then - log_message "Worker process $pid is running" - return 0 - fi - log_message "Removing stale PID file for process $pid" - rm -f "$PID_FILE" - fi - return 1 -} - -# Enhanced JSON string escaping function -escape_json() { - printf '%s' "$1" | awk ' - BEGIN { RS="\n"; ORS="\\n" } - { - gsub(/\\/, "\\\\") - gsub(/"/, "\\\"") - gsub(/\r/, "") - gsub(/\t/, "\\t") - gsub(/\f/, "\\f") - gsub(/\b/, "\\b") - print - } - ' | sed 's/\\n$//' -} - -# Acquire token directly with high priority -acquire_token() { - local priority=1 # Highest priority for cell scan - local max_attempts=10 - local attempt=0 - - while [ $attempt -lt $max_attempts ]; do - # Check if token file exists - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "info" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Try again - higher priority token exists - log_message "Token held by $current_holder with priority $current_priority, retrying..." "debug" - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$LOCK_ID\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$LOCK_ID" ]; then - log_message "Successfully acquired token with priority $priority" "info" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Main execution -{ - # If scan is running, return running status - if check_worker_running; then - output_json "running" "Cell scan is in progress" - fi - - # Start new scan - rm -f "$RESULT_FILE" - log_message "Starting new cell scan" "info" - - # Ensure worker script is executable - chmod +x "$WORKER_SCRIPT" 2>/dev/null - - # Start worker script with proper parameters - log_message "Attempting to start worker script: $WORKER_SCRIPT" "info" - - # Check if worker script exists - if [ ! -f "$WORKER_SCRIPT" ]; then - log_message "Worker script not found: $WORKER_SCRIPT" "error" - output_json "error" "Worker script not found" - fi - - # Ensure QUEUE_DIR exists - mkdir -p "$QUEUE_DIR" "$RESULTS_DIR" - chmod 755 "$QUEUE_DIR" - chmod 755 "$RESULTS_DIR" - - # Start worker with debug logging - WORKER_PID=$ - (sh "$WORKER_SCRIPT" >/tmp/cell_scan_worker.log 2>&1) & - WORKER_PID=$! - log_message "Worker script started with PID $WORKER_PID" "info" - - # The worker process runs in the background and completes quickly - # We don't need to check if it's still running as it might finish before we check - log_message "Worker process $WORKER_PID started in background" "info" - - # Instead of checking if the process is running, check if it created the result file - sleep 2 - if [ -f "$RESULT_FILE" ]; then - log_message "Worker successfully created result file" "info" - else - log_message "Waiting for worker to create result file..." "info" - # If no result file yet, check for errors - if [ -f "/tmp/cell_scan_worker.log" ]; then - WORKER_LOG=$(cat "/tmp/cell_scan_worker.log" | head -20) - log_message "Worker log: $WORKER_LOG" "info" - fi - fi - output_json "running" "Started new cell scan" -} || { - # Error handler - log_message "Script failed with error" "error" - output_json "error" "Internal error occurred" -} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan_worker.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan_worker.sh deleted file mode 100755 index 56f803a..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/cell_scan_worker.sh +++ /dev/null @@ -1,323 +0,0 @@ -#!/bin/sh - -# Configuration -QUEUE_DIR="/tmp/at_queue" -RESULTS_DIR="$QUEUE_DIR/results" -TOKEN_FILE="$QUEUE_DIR/token" -RESULT_FILE="/tmp/qscan_result.json" -PID_FILE="/tmp/cell_scan.pid" -SCAN_COMMAND="AT+QSCAN=3,1" -SCAN_TIMEOUT=200 -LOCK_ID="CELL_SCAN_$(date +%s)_$$" - -# Enable shell debugging for better logging -set -x - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t at_queue -p "daemon.$level" "cell_scan_worker: $1" -} - -# Function to clean up stale temporary files -cleanup_stale_files() { - log_message "Cleaning up stale temporary files" "info" - - # Clean up old start_time files (older than 1 hour) - find "$QUEUE_DIR" -name "start_time.qscan_*" -type f -mmin +60 -delete 2>/dev/null - - # Clean up any start_time files that match our current process just in case - find "$QUEUE_DIR" -name "start_time.qscan_*_$" -type f -delete 2>/dev/null - - log_message "Stale file cleanup completed" "info" -} - -# Function to check directories and permissions -check_environment() { - log_message "Checking environment" "info" - - # Clean up stale files first - cleanup_stale_files - - # Check if directories exist, create if they don't - if [ ! -d "$QUEUE_DIR" ]; then - mkdir -p "$QUEUE_DIR" - log_message "Created queue directory: $QUEUE_DIR" "info" - fi - - if [ ! -d "$RESULTS_DIR" ]; then - mkdir -p "$RESULTS_DIR" - log_message "Created results directory: $RESULTS_DIR" "info" - fi - - # Check permissions - chmod 755 "$QUEUE_DIR" 2>/dev/null - chmod 755 "$RESULTS_DIR" 2>/dev/null - - # Check if sms_tool exists and is executable - if ! which sms_tool >/dev/null 2>&1; then - log_message "sms_tool not found in PATH" "error" - return 1 - fi - - # Test directory write permissions - if ! touch "$QUEUE_DIR/test_$$" 2>/dev/null; then - log_message "Cannot write to $QUEUE_DIR" "error" - return 1 - fi - rm -f "$QUEUE_DIR/test_$$" 2>/dev/null - - if ! touch "$RESULTS_DIR/test_$$" 2>/dev/null; then - log_message "Cannot write to $RESULTS_DIR" "error" - return 1 - fi - rm -f "$RESULTS_DIR/test_$$" 2>/dev/null - - log_message "Environment check passed" "info" - return 0 -} - -# Function to clean AT command output -clean_output() { - while IFS= read -r line; do - case "$line" in - "OK" | "" | *"ERROR"*) - continue - ;; - *) - printf '%s\n' "$line" - ;; - esac - done | sed 's/\r//g' | tr '\n' '\r' | sed 's/\r$//' | tr '\r' '\n' -} - -# Enhanced JSON string escaping function -escape_json() { - printf '%s' "$1" | awk ' - BEGIN { RS="\n"; ORS="\\n" } - { - gsub(/\\/, "\\\\") - gsub(/"/, "\\\"") - gsub(/\r/, "") - gsub(/\t/, "\\t") - gsub(/\f/, "\\f") - gsub(/\b/, "\\b") - print - } - ' | sed 's/\\n$//' -} - -# Function to check if scan is already running -check_running() { - if [ -f "$PID_FILE" ]; then - pid=$(cat "$PID_FILE") - if kill -0 "$pid" 2>/dev/null; then - log_message "Cell scan already running (PID: $pid)" "warn" - return 0 - fi - rm -f "$PID_FILE" - fi - return 1 -} - -# Acquire token directly with high priority -acquire_token() { - local priority=1 # Highest priority for cell scan - local max_attempts=10 - local attempt=0 - - while [ $attempt -lt $max_attempts ]; do - # Check if token file exists - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "info" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Try again - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$LOCK_ID\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$LOCK_ID" ]; then - log_message "Successfully acquired token with priority $priority" "info" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Release token directly -release_token() { - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$LOCK_ID" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - log_message "Released token" "info" - return 0 - fi - log_message "Token held by $current_holder, not by us ($LOCK_ID)" "warn" - fi - return 1 -} - -# Main execution -main() { - # Start logging - log_message "Worker script started" "info" - - # Check if already running - if check_running; then - log_message "Cell scan already running, exiting" "warn" - exit 1 - fi - - # Create PID file - echo "$$" > "$PID_FILE" - chmod 644 "$PID_FILE" 2>/dev/null - log_message "Created PID file: $$" "info" - - # Set up cleanup on exit - trap 'log_message "Cleaning up and exiting" "info"; release_token; rm -f "$PID_FILE"; exit' INT TERM EXIT - - # Acquire token for AT command execution - if ! acquire_token; then - log_message "Failed to acquire token, exiting" "error" - rm -f "$PID_FILE" - exit 1 - fi - - log_message "Token acquired, executing scan command: $SCAN_COMMAND" "info" - - # Execute scan with native timeout option (without relying on timeout command) - # Use the -t option of sms_tool instead of the timeout command - log_message "Executing command with timeout: $SCAN_TIMEOUT seconds" "info" - SCAN_OUTPUT=$(sms_tool at "$SCAN_COMMAND" -t $SCAN_TIMEOUT 2>&1 | clean_output) - SCAN_STATUS=$? - log_message "Command execution completed with status: $SCAN_STATUS" "info" - - # Process and store result - if [ $SCAN_STATUS -eq 0 ]; then - # Check if output contains valid scan data or error - if echo "$SCAN_OUTPUT" | grep -q "+QSCAN"; then - # Set timestamp - TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') - - # Valid scan data found - don't add the "Scan completed but no valid data" prefix - log_message "Scan completed with valid data" "info" - - # Create the result file with proper JSON formatting - printf '{"status":"success","timestamp":"%s","output":%s}\n' \ - "$TIMESTAMP" \ - "$(printf '%s' "$SCAN_OUTPUT" | sed 's/"/\\"/g' | jq -R -s '.')" > "$RESULT_FILE" - chmod 644 "$RESULT_FILE" 2>/dev/null - else - # No valid scan data, but command completed - log_message "Command completed but no valid scan data found: $SCAN_OUTPUT" "warn" - SCAN_OUTPUT="Scan completed but no valid data returned: $SCAN_OUTPUT" - - # Create a result file indicating partial success - printf '{"status":"partial","timestamp":"%s","output":%s}\n' \ - "$(date '+%Y-%m-%d %H:%M:%S')" \ - "$(printf '%s' "$SCAN_OUTPUT" | sed 's/"/\\"/g' | jq -R -s '.')" > "$RESULT_FILE" - chmod 644 "$RESULT_FILE" 2>/dev/null - fi - - # Generate a command ID for the AT queue results format - use actual PID instead of $ - local my_pid="$$" - local cmd_id="qscan_$(date +%s)_${my_pid}" - local end_time=$(date +%s) - local start_time=$end_time - local duration=0 - - # Store start time for future reference - echo "$start_time" > "$QUEUE_DIR/start_time.$cmd_id" - - log_message "Creating AT queue result with ID: $cmd_id" "info" - - # Create JSON response in the AT queue format - local response=$(cat << EOF -{ - "command": { - "id": "$cmd_id", - "text": "$SCAN_COMMAND", - "timestamp": "$(date -Iseconds)" - }, - "response": { - "status": "success", - "raw_output": "$(escape_json "$SCAN_OUTPUT")", - "completion_time": "$end_time", - "duration_ms": $duration - } -} -EOF -) - - # Save the response to the AT queue results directory - printf "%s" "$response" > "$RESULTS_DIR/$cmd_id.json" - chmod 644 "$RESULTS_DIR/$cmd_id.json" - - # Clean up temporary files - rm -f "$QUEUE_DIR/start_time.$cmd_id" - log_message "Cleaned up temporary files" "info" - - # Release the token - release_token - return 0 - else - log_message "Scan failed with status: $SCAN_STATUS" "error" - printf '{"status":"error","timestamp":"%s","message":"Scan failed"}\n' \ - "$(date '+%Y-%m-%d %H:%M:%S')" > "$RESULT_FILE" - chmod 644 "$RESULT_FILE" 2>/dev/null - - # Release the token - release_token - return 1 - fi -} - -# Execute main function with proper error handling -{ - log_message "Worker script started with PID $$" "info" - - # Check environment before proceeding - check_environment || { - log_message "Environment check failed, aborting" "error" - exit 1 - } - - # Execute main function - main || { - log_message "Main function failed with error $?" "error" - release_token - rm -f "$PID_FILE" - exit 1 - } -} 2>/tmp/cell_scan_worker_debug.log || { - log_message "Script failed with error" "error" - release_token - rm -f "$PID_FILE" - exit 1 -} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/check_scan.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/check_scan.sh deleted file mode 100755 index c1a5312..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/check_scan.sh +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/sh - -# Set content type to JSON -echo "Content-type: application/json" -echo "" - -# Configuration -QUEUE_DIR="/tmp/at_queue" -RESULTS_DIR="$QUEUE_DIR/results" -RESULT_FILE="/tmp/qscan_result.json" -PID_FILE="/tmp/cell_scan.pid" -TOKEN_FILE="$QUEUE_DIR/token" - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t at_queue -p "daemon.$level" "check_scan: $1" -} - -# Function to output JSON response -output_json() { - local status="$1" - local message="$2" - - if [ "$status" = "success" ] && [ -f "$RESULT_FILE" ]; then - # Return the contents of the result file - cat "$RESULT_FILE" - else - printf '{"status":"%s","message":"%s","timestamp":"","output":""}\n' "$status" "$message" - fi -} - -# Check for scan token holder -check_token_holder() { - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ -n "$current_holder" ] && echo "$current_holder" | grep -q "CELL_SCAN"; then - log_message "Cell scan token is active: $current_holder" "debug" - return 0 - fi - fi - return 1 -} - -# Check if a scan is already in progress -check_scan_progress() { - # First check PID file - if [ -f "$PID_FILE" ]; then - pid=$(cat "$PID_FILE") - if kill -0 "$pid" 2>/dev/null; then - log_message "Scan in progress (PID: $pid)" "info" - output_json "running" "Scan in progress" - exit 0 - else - log_message "Removing stale PID file" "warn" - rm -f "$PID_FILE" - fi - fi - - # Also check token holder - if check_token_holder; then - log_message "Scan in progress (Token active)" "info" - output_json "running" "Scan in progress (Token active)" - exit 0 - fi -} - -# Check for existing results -check_results() { - if [ -f "$RESULT_FILE" ]; then - # Check if the result file contains valid JSON data - local result_content=$(cat "$RESULT_FILE" 2>/dev/null) - if [ -n "$result_content" ] && echo "$result_content" | grep -q "status"; then - # Also check the results directory for AT command results - local cmd_id - cmd_id=$(echo "$result_content" | jsonfilter -e '@.command.id' 2>/dev/null) - - # Log the result we found - log_message "Found result file with command ID: $cmd_id" "info" - - # Check how old the result file is - local file_time=$(stat -c %Y "$RESULT_FILE" 2>/dev/null || echo "0") - local current_time=$(date +%s) - local age=$((current_time - file_time)) - - log_message "Result file age: $age seconds" "info" - - # If file_time is valid and result is less than 1 hour old - if [ $age -lt 3600 ]; then - log_message "Recent scan results available" "info" - output_json "success" "Scan results available" - exit 0 - else - log_message "Scan results too old, suggesting new scan" "info" - output_json "idle" "Previous scan results outdated" - exit 0 - fi - else - log_message "Result file exists but contains invalid data" "warn" - rm -f "$RESULT_FILE" # Remove invalid result file - output_json "idle" "Invalid previous scan results" - exit 0 - fi - fi -} - -# Main execution -{ - # First check if a scan is in progress - check_scan_progress - - # Then check for existing results - check_results - - # If no results and no running scan, indicate idle state - log_message "No active scan or recent results" "info" - output_json "idle" "No active scan" - exit 0 -} || { - # Error handler - log_message "Failed to check scan status" "error" - output_json "error" "Failed to check scan status" - exit 1 -} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/fetch_mccmnc.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/fetch_mccmnc.sh deleted file mode 100755 index 60ccd53..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/fetch_mccmnc.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -# Set content type to JSON -echo "Content-type: application/json" -echo "" - -# Configuration -JSON_FILE="/www/cgi-bin/quecmanager/mcc-mnc-list.json" - -# Function to log messages -log_message() { - logger -t fetch_mccmnc "$1" -} - -# Function to output JSON response -output_json() { - local status="$1" - local message="$2" - printf '{"status":"%s","message":"%s"}\n' "$status" "$message" - exit 1 -} - -# Main execution -{ - # Check if file exists - if [ ! -f "$JSON_FILE" ]; then - log_message "MCC-MNC list file not found" - output_json "error" "MCC-MNC list file not found" - fi - - # Read and output the file - cat "$JSON_FILE" 2>/dev/null || { - log_message "Failed to read MCC-MNC list file" - output_json "error" "Failed to read MCC-MNC list file" - } -} || { - # Error handler - log_message "Script failed with error" - output_json "error" "Internal error occurred" -} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/network_info.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/network_info.sh deleted file mode 100755 index 21e74b3..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/cell_scanner/network_info.sh +++ /dev/null @@ -1,311 +0,0 @@ -#!/bin/sh - -# Set content-type for JSON response -echo "Content-type: application/json" -echo "" - -# Define paths and constants to match queue system -QUEUE_DIR="/tmp/at_queue" -RESULTS_DIR="$QUEUE_DIR/results" -TOKEN_FILE="$QUEUE_DIR/token" -TEMP_FILE="/tmp/network_info_output.txt" -LOCK_ID="NETWORK_INFO_$(date +%s)_$$" -COMMAND_TIMEOUT=8 # Increased timeout -MAX_TOKEN_WAIT=10 -PRIORITY=5 # Medium-high priority (between cell scan and normal commands) - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t at_queue -p "daemon.$level" "network_info: $1" -} - -# Function to output JSON error -output_error() { - printf '{"status":"error","message":"%s","timestamp":"%s"}\n' "$1" "$(date '+%H:%M:%S')" - exit 1 -} - -# Enhanced JSON string escaping function -escape_json() { - printf '%s' "$1" | awk ' - BEGIN { RS="\n"; ORS="\\n" } - { - gsub(/\\/, "\\\\") - gsub(/"/, "\\\"") - gsub(/\r/, "") - gsub(/\t/, "\\t") - gsub(/\f/, "\\f") - gsub(/\b/, "\\b") - print - } - ' | sed 's/\\n$//' -} - -# Acquire token directly with medium-high priority -acquire_token() { - local priority="$PRIORITY" # Medium-high priority for network info - local max_attempts=$MAX_TOKEN_WAIT - local attempt=0 - - while [ $attempt -lt $max_attempts ]; do - # Check if token file exists - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "info" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Try again - higher priority token exists - log_message "Token held by $current_holder with priority $current_priority, retrying..." "debug" - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$LOCK_ID\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$LOCK_ID" ]; then - log_message "Successfully acquired token with priority $priority" "info" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Release token directly -release_token() { - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$LOCK_ID" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - log_message "Released token" "info" - return 0 - fi - log_message "Token held by $current_holder, not by us ($LOCK_ID)" "warn" - fi - return 1 -} - -# Function to execute AT command with direct output capture -execute_at_command() { - local CMD="$1" - local OUTPUT_FILE="$TEMP_FILE.cmd.$$" - - log_message "Executing command: $CMD" "debug" - - # Execute command and redirect output to file for reliable capture - sms_tool at "$CMD" -t $COMMAND_TIMEOUT > "$OUTPUT_FILE" 2>&1 - local EXIT_CODE=$? - - # Read the output regardless of exit code - if [ -f "$OUTPUT_FILE" ]; then - local OUTPUT=$(cat "$OUTPUT_FILE") - rm -f "$OUTPUT_FILE" - - if [ -n "$OUTPUT" ]; then - # We have some output - if echo "$OUTPUT" | grep -q "CME ERROR"; then - log_message "Command returned CME ERROR: $OUTPUT" "warn" - return 1 - elif echo "$OUTPUT" | grep -q "ERROR"; then - log_message "Command returned ERROR: $OUTPUT" "warn" - return 1 - else - # Command produced output that doesn't contain ERROR - log_message "Command executed successfully with output" "debug" - echo "$OUTPUT" - return 0 - fi - elif [ $EXIT_CODE -eq 0 ]; then - log_message "Command succeeded but returned empty output" "warn" - echo "Command returned empty output" - return 0 - else - log_message "Command failed with exit code $EXIT_CODE and no output" "error" - return 1 - fi - else - log_message "Failed to create output file" "error" - return 1 - fi -} - -# Function to check network mode from serving cell info -check_network_mode() { - local OUTPUT="$1" - - # Check for both LTE and NR5G-NSA (NSA mode) - if echo "$OUTPUT" | grep -q "\"LTE\"" && echo "$OUTPUT" | grep -q "\"NR5G-NSA\""; then - log_message "Detected network mode: NRLTE (NSA)" "info" - echo "NRLTE" - # Check for LTE only - elif echo "$OUTPUT" | grep -q "\"LTE\""; then - log_message "Detected network mode: LTE" "info" - echo "LTE" - # Check for NR5G-SA - elif echo "$OUTPUT" | grep -q "\"NR5G-SA\""; then - log_message "Detected network mode: NR5G (SA)" "info" - echo "NR5G" - else - log_message "Detected network mode: UNKNOWN from output: $OUTPUT" "warn" - echo "UNKNOWN" - fi -} - -# Function to check NR5G measurement info setting -check_nr5g_meas_info() { - local OUTPUT=$(execute_at_command "AT+QNWCFG=\"nr5g_meas_info\"") - local EXIT_CODE=$? - - if [ $EXIT_CODE -eq 0 ] && echo "$OUTPUT" | grep -q "\"nr5g_meas_info\",1"; then - log_message "NR5G measurement info is enabled" "debug" - return 0 - else - log_message "NR5G measurement info is disabled or check failed" "debug" - return 1 - fi -} - -# Function to create JSON output safely -format_output_json() { - local MODE="$1" - local SERVING_OUTPUT="$2" - local NEIGHBOR_OUTPUT="$3" - local MEAS_OUTPUT="$4" - - # Basic JSON structure - start - printf '{"status":"success","timestamp":"%s","mode":"%s"' "$(date '+%H:%M:%S')" "$MODE" - - # Add raw data section - printf ',"raw_data":{' - - # Add serving cell output (always present) - printf '"servingCell":%s' "$(printf '%s' "$SERVING_OUTPUT" | jq -R -s '.')" - - # Add neighbor cells output if available - if [ -n "$NEIGHBOR_OUTPUT" ]; then - printf ',"neighborCells":%s' "$(printf '%s' "$NEIGHBOR_OUTPUT" | jq -R -s '.')" - fi - - # Add measurement info output if available - if [ -n "$MEAS_OUTPUT" ]; then - printf ',"meas":%s' "$(printf '%s' "$MEAS_OUTPUT" | jq -R -s '.')" - fi - - # Close raw data section - printf '}' - - # Close the whole JSON object - printf '}\n' -} - -# Set up trap for cleanup -trap 'log_message "Script interrupted, cleaning up" "warn"; release_token; rm -f "$TEMP_FILE" "$TEMP_FILE.cmd."*; exit 1' INT TERM EXIT - -# Main execution -{ - # Ensure directories exist - mkdir -p "$QUEUE_DIR" "$RESULTS_DIR" - - log_message "Starting network info collection" "info" - - # Acquire token for AT command execution before any output - if ! acquire_token; then - output_error "Failed to acquire token for command processing" - fi - - # Get the serving cell information first - log_message "Getting serving cell information" "info" - SERVING_OUTPUT=$(execute_at_command "AT+QENG=\"servingcell\"") - EXIT_CODE=$? - - # Check if we got valid serving cell info - if [ $EXIT_CODE -ne 0 ] || [ -z "$SERVING_OUTPUT" ]; then - log_message "Failed to get serving cell information, output: $SERVING_OUTPUT" "error" - release_token - output_error "Failed to get serving cell information" - fi - - log_message "Successfully got serving cell information" "info" - - # Determine network mode from serving cell output - NETWORK_MODE=$(check_network_mode "$SERVING_OUTPUT") - - NEIGHBOR_OUTPUT="" - MEAS_OUTPUT="" - - case "$NETWORK_MODE" in - "NRLTE") - log_message "Processing NRLTE mode commands" "info" - NEIGHBOR_OUTPUT=$(execute_at_command "AT+QENG=\"neighbourcell\"") - - # Try to get measurement info - if ! check_nr5g_meas_info; then - log_message "Enabling NR5G measurement info" "info" - execute_at_command "AT+QNWCFG=\"nr5g_meas_info\",1" > /dev/null - sleep 1 # Give it time to take effect - fi - - log_message "Fetching NR5G measurement info" "info" - MEAS_OUTPUT=$(execute_at_command "AT+QNWCFG=\"nr5g_meas_info\"") - ;; - "LTE") - log_message "Processing LTE mode commands" "info" - NEIGHBOR_OUTPUT=$(execute_at_command "AT+QENG=\"neighbourcell\"") - ;; - "NR5G") - log_message "Processing NR5G mode commands" "info" - - # Try to get measurement info - if ! check_nr5g_meas_info; then - log_message "Enabling NR5G measurement info" "info" - execute_at_command "AT+QNWCFG=\"nr5g_meas_info\",1" > /dev/null - sleep 1 # Give it time to take effect - fi - - log_message "Fetching NR5G measurement info" "info" - MEAS_OUTPUT=$(execute_at_command "AT+QNWCFG=\"nr5g_meas_info\"") - ;; - *) - # Even if we don't recognize the mode, we'll still return the serving cell info - log_message "Unknown network mode, only returning serving cell info" "warn" - ;; - esac - - # Format and output JSON response - log_message "Formatting JSON response" "info" - format_output_json "$NETWORK_MODE" "$SERVING_OUTPUT" "$NEIGHBOR_OUTPUT" "$MEAS_OUTPUT" - - # Release token and clean up - release_token - rm -f "$TEMP_FILE" "$TEMP_FILE.cmd."* - - log_message "Network info collection completed" "info" - -} || { - # Error handler - log_message "Script failed with error" "error" - release_token - rm -f "$TEMP_FILE" "$TEMP_FILE.cmd."* - output_error "Internal error occurred" -} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/keep_alive.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/keep_alive.sh deleted file mode 100755 index e6af15b..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/keep_alive.sh +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/sh - -# Configuration -CONFIG_FILE="/etc/keep_alive_schedule.conf" -STATUS_FILE="/tmp/keep_alive_status" -SPEEDTEST_SCRIPT="/www/cgi-bin/home/speedtest/speedtest.sh" - -# Function to convert HH:MM to minutes since midnight -time_to_minutes() { - echo "$1" | awk -F: '{print $1 * 60 + $2}' -} - -# Function to validate time interval -validate_interval() { - START_TIME=$1 - END_TIME=$2 - INTERVAL_MINUTES=$3 - - # Convert times to minutes - START_MINUTES=$(time_to_minutes "$START_TIME") - END_MINUTES=$(time_to_minutes "$END_TIME") - - # Calculate duration between start and end time - if [ $END_MINUTES -lt $START_MINUTES ]; then - # Handle case where end time is on the next day - DURATION=$((1440 - START_MINUTES + END_MINUTES)) - else - DURATION=$((END_MINUTES - START_MINUTES)) - fi - - # Check if interval is longer than duration - if [ $INTERVAL_MINUTES -gt $DURATION ]; then - return 1 - fi - return 0 -} - -# Function to generate cron time expression -generate_cron_time() { - START_TIME=$1 - END_TIME=$2 - INTERVAL=$3 - - START_HOUR=$(echo "$START_TIME" | cut -d: -f1 | sed 's/^0//') - START_MIN=$(echo "$START_TIME" | cut -d: -f2) - END_HOUR=$(echo "$END_TIME" | cut -d: -f1 | sed 's/^0//') - END_MIN=$(echo "$END_TIME" | cut -d: -f2) - - # If end time is less than start time, it means we cross midnight - if [ $(time_to_minutes "$END_TIME") -lt $(time_to_minutes "$START_TIME") ]; then - # Create two cron entries for before and after midnight - echo "*/$INTERVAL $START_HOUR-23 * * * $SPEEDTEST_SCRIPT" - echo "*/$INTERVAL 0-$((END_HOUR - 1)) * * * $SPEEDTEST_SCRIPT" - else - echo "*/$INTERVAL $START_HOUR-$((END_HOUR - 1)) * * * $SPEEDTEST_SCRIPT" - fi -} - -# Function to urldecode -urldecode() { - echo -e "$(echo "$1" | sed 's/+/ /g;s/%\([0-9A-F][0-9A-F]\)/\\x\1/g')" -} - -# Function to save configuration -save_config() { - echo "START_TIME=$1" >"$CONFIG_FILE" - echo "END_TIME=$2" >>"$CONFIG_FILE" - echo "INTERVAL=$3" >>"$CONFIG_FILE" - echo "ENABLED=1" >>"$CONFIG_FILE" -} - -# Function to disable scheduling -disable_scheduling() { - if [ -f "$CONFIG_FILE" ]; then - sed -i 's/ENABLED=1/ENABLED=0/' "$CONFIG_FILE" - fi - # Remove any existing cron jobs - crontab -l | grep -v "$SPEEDTEST_SCRIPT" | crontab - -} - -# Function to get current status -get_status() { - if [ -f "$CONFIG_FILE" ]; then - ENABLED=$(grep "ENABLED=" "$CONFIG_FILE" | cut -d'=' -f2) - START_TIME=$(grep "START_TIME=" "$CONFIG_FILE" | cut -d'=' -f2) - END_TIME=$(grep "END_TIME=" "$CONFIG_FILE" | cut -d'=' -f2) - INTERVAL=$(grep "INTERVAL=" "$CONFIG_FILE" | cut -d'=' -f2) - - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"enabled\":$ENABLED,\"start_time\":\"$START_TIME\",\"end_time\":\"$END_TIME\",\"interval\":$INTERVAL}" - else - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"enabled\":0,\"start_time\":\"\",\"end_time\":\"\",\"interval\":0}" - fi -} - -# Handle POST requests -if [ "$REQUEST_METHOD" = "POST" ]; then - # Read POST data - read -r POST_DATA - - # Check if disabling is requested - echo "$POST_DATA" | grep -q "disable=true" - if [ $? -eq 0 ]; then - disable_scheduling - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"status\":\"success\",\"message\":\"Scheduling disabled\"}" - exit 0 - fi - - # Extract times and interval - START_TIME=$(echo "$POST_DATA" | grep -o 'start_time=[^&]*' | cut -d'=' -f2) - END_TIME=$(echo "$POST_DATA" | grep -o 'end_time=[^&]*' | cut -d'=' -f2) - INTERVAL=$(echo "$POST_DATA" | grep -o 'interval=[^&]*' | cut -d'=' -f2) - - # Decode times - START_TIME=$(urldecode "$START_TIME") - END_TIME=$(urldecode "$END_TIME") - INTERVAL=$(urldecode "$INTERVAL") - - # Validate times - if [ -z "$START_TIME" ] || [ -z "$END_TIME" ] || [ -z "$INTERVAL" ]; then - echo "Status: 400 Bad Request" - echo "Content-Type: application/json" - echo "" - echo "{\"error\":\"Missing start time, end time, or interval\"}" - exit 1 - fi - - # Validate interval is a number - if ! echo "$INTERVAL" | grep -q '^[0-9]\+$'; then - echo "Status: 400 Bad Request" - echo "Content-Type: application/json" - echo "" - echo "{\"error\":\"Interval must be a number in minutes\"}" - exit 1 - fi - - # Validate interval - if ! validate_interval "$START_TIME" "$END_TIME" "$INTERVAL"; then - echo "Status: 400 Bad Request" - echo "Content-Type: application/json" - echo "" - echo "{\"error\":\"Interval is longer than the time between start and end time\"}" - exit 1 - fi - - # Create temporary file for new crontab - TEMP_CRON=$(mktemp) - - # Get existing crontab entries (excluding our script) - crontab -l 2>/dev/null | grep -v "$SPEEDTEST_SCRIPT" >"$TEMP_CRON" - - # Generate and add cron entries - generate_cron_time "$START_TIME" "$END_TIME" "$INTERVAL" >>"$TEMP_CRON" - - # Install new crontab - crontab "$TEMP_CRON" - rm "$TEMP_CRON" - - # Save configuration - save_config "$START_TIME" "$END_TIME" "$INTERVAL" - - echo "Status: 200 OK" - echo "Content-Type: application/json" - echo "" - echo "{\"status\":\"success\",\"message\":\"Keep-alive scheduling enabled\"}" - exit 0 -fi - -# Parse query string for GET requests -if [ "$REQUEST_METHOD" = "GET" ]; then - QUERY_STRING=$(echo "$QUERY_STRING" | sed 's/&/\n/g') - for param in $QUERY_STRING; do - case "$param" in - status=*) - get_status - exit 0 - ;; - esac - done -fi - -# If no valid request is made -echo "Status: 400 Bad Request" -echo "Content-Type: application/json" -echo "" -echo "{\"error\":\"Invalid request\"}" -exit 1 \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/disable-quecwatch.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/disable-quecwatch.sh deleted file mode 100755 index 4180814..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/disable-quecwatch.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh - -# Set headers for JSON response -echo "Content-type: application/json" -echo "" - -# Disable the service in UCI -uci set quecmanager.quecwatch.enabled='0' - -if ! uci commit quecmanager; then - echo '{"status":"error","message":"Failed to update configuration"}' - exit 1 -fi - -# Function to log cleanup events -log_message() { - local level="$1" - local message="$2" - local LOG_DIR="/tmp/log/quecwatch" - local LOG_FILE="${LOG_DIR}/quecwatch.log" - - # Ensure log directory exists - mkdir -p "${LOG_DIR}" - - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - echo "${timestamp} - [${level}] ${message}" >> "$LOG_FILE" - logger -t quecwatch "${level}: ${message}" -} - -# Stop the service -if [ -x "/etc/init.d/quecwatch" ]; then - if ! /etc/init.d/quecwatch stop; then - log_message "ERROR" "Failed to stop service cleanly" - - # Force kill any remaining processes - if pkill -f "/www/cgi-bin/services/quecwatch.sh"; then - log_message "INFO" "Forced termination of QuecWatch processes" - fi - else - log_message "INFO" "Service stopped successfully" - fi - - # Disable the service - if ! /etc/init.d/quecwatch disable; then - log_message "WARN" "Failed to disable service" - else - log_message "INFO" "Service disabled successfully" - fi -fi - -# Clean up temporary files -for file in "/tmp/quecwatch_status.json" "/tmp/quecwatch_retry_count" "/var/run/quecwatch.pid"; do - if [ -f "$file" ]; then - if rm -f "$file"; then - log_message "INFO" "Removed temporary file: $file" - else - log_message "WARN" "Failed to remove temporary file: $file" - fi - fi -done - -# Return success -echo '{"status":"success","message":"QuecWatch disabled successfully"}' \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/enable-quecwatch.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/enable-quecwatch.sh deleted file mode 100755 index 13a7a10..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/enable-quecwatch.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/sh - -# Set content type to JSON -echo "Content-type: application/json" -echo "" - -# Read POST data -read -r POST_DATA - -# Function to extract value from JSON post data -extract_json_value() { - local key="$1" - local default="$2" - - # Try with jsonfilter - if command -v jsonfilter >/dev/null 2>&1; then - local value=$(echo "$POST_DATA" | jsonfilter -e "@.$key" 2>/dev/null) - [ -n "$value" ] && echo "$value" && return 0 - fi - - # Fallback to grep - local value=$(echo "$POST_DATA" | grep -o "\"$key\"[[:space:]]*:[[:space:]]*\"[^\"]*\"" | cut -d'"' -f4) - [ -n "$value" ] && echo "$value" && return 0 - - # Fallback to grep for numbers and booleans - local value=$(echo "$POST_DATA" | grep -o "\"$key\"[[:space:]]*:[[:space:]]*[0-9a-zA-Z]*" | cut -d':' -f2 | tr -d '[:space:]') - [ -n "$value" ] && echo "$value" && return 0 - - # Return default value - echo "$default" - return 0 -} - -# Extract parameters from POST data -ping_target=$(extract_json_value "pingTarget" "8.8.8.8") -ping_interval=$(extract_json_value "pingInterval" "60") -ping_failures=$(extract_json_value "pingFailures" "3") -max_retries=$(extract_json_value "maxRetries" "5") -connection_refresh=$(extract_json_value "connectionRefresh" "false") -auto_sim_failover=$(extract_json_value "autoSimFailover" "false") -sim_failover_schedule=$(extract_json_value "simFailoverSchedule" "0") - -# Validate numeric values -validate_number() { - local value="$1" - local min="$2" - local max="$3" - local name="$4" - - if ! echo "$value" | grep -q '^[0-9]\+$'; then - echo '{"status":"error","message":"'"$name must be a number"'"}' - exit 1 - fi - - if [ "$value" -lt "$min" ] || [ "$value" -gt "$max" ]; then - echo '{"status":"error","message":"'"$name must be between $min and $max"'"}' - exit 1 - fi -} - -# Validate boolean values -validate_boolean() { - local value="$1" - local name="$2" - - if [ "$value" != "true" ] && [ "$value" != "false" ]; then - echo '{"status":"error","message":"'"$name must be true or false"'"}' - exit 1 - fi -} - -# Validate parameters -validate_number "$ping_interval" 5 3600 "Ping interval" -validate_number "$ping_failures" 1 10 "Ping failures" -validate_number "$max_retries" 1 20 "Max retries" -validate_number "$sim_failover_schedule" 0 1440 "SIM failover schedule" -validate_boolean "$connection_refresh" "Connection refresh" -validate_boolean "$auto_sim_failover" "Auto SIM failover" - -# Function to setup UCI configuration -setup_uci_config() { - # Create section if it doesn't exist - touch /etc/config/quecmanager - - if ! uci -q get quecmanager.quecwatch >/dev/null; then - uci set quecmanager.quecwatch=service - fi - - # Set UCI values - uci set quecmanager.quecwatch.enabled='1' - uci set quecmanager.quecwatch.ping_target="$ping_target" - uci set quecmanager.quecwatch.ping_interval="$ping_interval" - uci set quecmanager.quecwatch.ping_failures="$ping_failures" - uci set quecmanager.quecwatch.max_retries="$max_retries" - uci set quecmanager.quecwatch.current_retries='0' - uci set quecmanager.quecwatch.connection_refresh="$connection_refresh" - uci set quecmanager.quecwatch.refresh_count='3' - uci set quecmanager.quecwatch.auto_sim_failover="$auto_sim_failover" - uci set quecmanager.quecwatch.sim_failover_schedule="$sim_failover_schedule" - - # Commit changes - if ! uci commit quecmanager; then - echo '{"status":"error","message":"Failed to save configuration"}' - exit 1 - fi - - return 0 -} - -# Setup configuration -if ! setup_uci_config; then - exit 1 -fi - -# Enable and start the service -if [ ! -f "/etc/init.d/quecwatch" ]; then - echo '{"status":"error","message":"QuecWatch service script not found"}' - exit 1 -fi - -# Make sure the service script is executable -chmod +x /etc/init.d/quecwatch - -# Enable the service -if ! /etc/init.d/quecwatch enable; then - echo '{"status":"error","message":"Failed to enable QuecWatch service"}' - exit 1 -fi - -# Start the service -if ! /etc/init.d/quecwatch start; then - echo '{"status":"error","message":"Failed to start QuecWatch service"}' - exit 1 -fi - -# Return success response -echo '{"status":"success","message":"QuecWatch enabled successfully"}' \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/fetch-quecwatch.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/fetch-quecwatch.sh deleted file mode 100755 index fa3e828..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/experimental/quecwatch/fetch-quecwatch.sh +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/sh - -# Set headers for JSON response -echo "Content-type: application/json" -echo "" - -# Load UCI functions -. /lib/functions.sh - -# Function to safely get UCI value with default -get_uci_value() { - local value - config_get value quecwatch "$1" "$2" - echo "${value:-$2}" -} - -# Function to format boolean for JSON -format_boolean() { - if [ "$1" = "1" ] || [ "$1" = "true" ]; then - echo "true" - else - echo "false" - fi -} - -# Function to check if service is running -check_service_status() { - if [ -f "/var/run/quecwatch.pid" ]; then - pid=$(cat /var/run/quecwatch.pid 2>/dev/null) - if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - echo "running" - return - fi - fi - echo "stopped" -} - -# Function to get last log entry -get_last_log() { - local LOG_FILE="/tmp/log/quecwatch/quecwatch.log" - if [ -f "$LOG_FILE" ]; then - tail -n 1 "$LOG_FILE" | sed 's/"/\\"/g' - else - echo "No log entries found" - fi -} - -# Function to get current status -get_current_status() { - local STATUS_FILE="/tmp/quecwatch_status.json" - local status="unknown" - local message="Status not available" - local retry="0" - local maxRetries="0" - local timestamp=$(date +%s) - - if [ -f "$STATUS_FILE" ]; then - # Try to extract values from status file - if grep -q "status" "$STATUS_FILE"; then - status=$(cat "$STATUS_FILE" | jsonfilter -e '@.status' 2>/dev/null) - message=$(cat "$STATUS_FILE" | jsonfilter -e '@.message' 2>/dev/null) - retry=$(cat "$STATUS_FILE" | jsonfilter -e '@.retry' 2>/dev/null) - maxRetries=$(cat "$STATUS_FILE" | jsonfilter -e '@.maxRetries' 2>/dev/null) - timestamp=$(cat "$STATUS_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - fi - fi - - # Use defaults if extraction failed - [ -z "$status" ] && status="unknown" - [ -z "$message" ] && message="Status not available" - [ -z "$retry" ] && retry="0" - [ -z "$maxRetries" ] && maxRetries="0" - [ -z "$timestamp" ] && timestamp=$(date +%s) - - echo "{\"status\":\"$status\",\"message\":\"$message\",\"retry\":$retry,\"maxRetries\":$maxRetries,\"timestamp\":$timestamp}" -} - -# Load QuecManager configuration -config_load quecmanager - -# Check if QuecWatch section exists -if ! uci -q get quecmanager.quecwatch >/dev/null; then - echo '{"status":"inactive","message":"QuecWatch is not configured"}' - exit 0 -fi - -# Get enabled status -enabled=$(get_uci_value "enabled" "0") - -# Get service status -service_status=$(check_service_status) - -# Get current status -current_status=$(get_current_status) - -# Get last log entry -last_log=$(get_last_log) - -# Fetch all configuration values -ping_target=$(get_uci_value "ping_target" "8.8.8.8") -ping_interval=$(get_uci_value "ping_interval" "60") -ping_failures=$(get_uci_value "ping_failures" "3") -max_retries=$(get_uci_value "max_retries" "5") -current_retries=$(get_uci_value "current_retries" "0") -connection_refresh=$(format_boolean $(get_uci_value "connection_refresh" "false")) -refresh_count=$(get_uci_value "refresh_count" "3") -auto_sim_failover=$(format_boolean $(get_uci_value "auto_sim_failover" "false")) -sim_failover_schedule=$(get_uci_value "sim_failover_schedule" "0") - -# Determine the overall status -status="inactive" -if [ "$enabled" = "1" ]; then - if [ "$service_status" = "running" ]; then - status="active" - else - status="error" - fi -fi - -# Prepare JSON response -cat <> "$LOG_FILE" - logger -t quecwatch "${level}: ${message}" -} - -# Reset retry counter -if uci -q get quecmanager.quecwatch >/dev/null; then - # Reset retry counter in UCI - uci set quecmanager.quecwatch.current_retries='0' - - # Make sure service is enabled - uci set quecmanager.quecwatch.enabled='1' - - # Commit changes - if uci commit quecmanager; then - log_message "INFO" "Retry counter reset to 0 and service enabled" - - # Also update the retry count file for immediate effect - echo "0" > "/tmp/quecwatch_retry_count" - chmod 644 "/tmp/quecwatch_retry_count" - - # Restart the service if it exists - if [ -x "/etc/init.d/quecwatch" ]; then - if /etc/init.d/quecwatch restart; then - log_message "INFO" "Service restarted successfully" - echo '{"status":"success","message":"Retry counter reset and service restarted successfully"}' - else - log_message "ERROR" "Failed to restart service" - echo '{"status":"warning","message":"Retry counter reset but failed to restart service"}' - fi - else - log_message "ERROR" "Service init script not found" - echo '{"status":"warning","message":"Retry counter reset but service init script not found"}' - fi - else - log_message "ERROR" "Failed to update configuration" - echo '{"status":"error","message":"Failed to update configuration"}' - fi -else - echo '{"status":"error","message":"QuecWatch configuration not found"}' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/heartbeat.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/heartbeat.sh deleted file mode 100755 index 3ee85ef..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/heartbeat.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -echo "Content-Type: application/json" -echo "Cache-Control: no-cache, no-store, must-revalidate" -echo "Pragma: no-cache" -echo "Expires: 0" -echo "" - -# Basic response indicating the server is up -echo '{"alive": true}' \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/check_net.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/check_net.sh deleted file mode 100755 index 3197a58..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/check_net.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -# Set the content type to JSON -echo "Content-Type: application/json" -echo "" - -# Ping 8.8.8.8 with 2 packets and capture the result -if ping -c 2 8.8.8.8 > /dev/null 2>&1; then - # Ping was successful - echo '{"connection": "ACTIVE"}' -else - # Ping failed - echo '{"connection": "INACTIVE"}' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_data_usage.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_data_usage.sh deleted file mode 100755 index 18f92f8..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_data_usage.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# Set content type to JSON -echo "Content-Type: application/json" -echo - -# Read the JSON file and get only the last entry using jq -jq 'last' /www/signal_graphs/data_usage.json \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_hw_details.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_hw_details.sh deleted file mode 100755 index 103cade..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_hw_details.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/bin/sh - -# Set common headers -echo "Content-Type: application/json" -echo "Access-Control-Allow-Origin: *" -echo "Cache-Control: no-cache, no-store, must-revalidate" -echo "" - -# Lock file path -LOCK_FILE="/tmp/hw_details.lock" -LOCK_TIMEOUT=10 # Maximum wait time in seconds - -# Function to acquire lock -acquire_lock() { - local start_time=$(date +%s) - while [ -e "$LOCK_FILE" ]; do - # Check if lock is stale (older than LOCK_TIMEOUT seconds) - if [ -f "$LOCK_FILE" ]; then - local lock_time=$(stat -c %Y "$LOCK_FILE" 2>/dev/null) - local current_time=$(date +%s) - if [ $((current_time - lock_time)) -gt $LOCK_TIMEOUT ]; then - rm -f "$LOCK_FILE" - break - fi - fi - - # Check if we've waited too long - if [ $(($(date +%s) - start_time)) -gt $LOCK_TIMEOUT ]; then - error_response "Timeout waiting for lock" - exit 1 - fi - - sleep 0.1 - done - - # Create lock file with current PID - echo $$ > "$LOCK_FILE" -} - -# Function to release lock -release_lock() { - rm -f "$LOCK_FILE" -} - -# Function to handle errors and return JSON -error_response() { - echo "{\"error\": \"$1\"}" - exit 1 -} - -# Function to cleanup on exit -cleanup() { - release_lock - exit $? -} - -# Set trap for cleanup -trap cleanup EXIT INT TERM - -# Function to get memory information -get_memory_info() { - free_output=$(free -b) - memory_info=$(echo "$free_output" | awk '/Mem:/ {print "{\"total\": " $2 ", \"used\": " $3 ", \"available\": " $7 "}"}') - echo "$memory_info" -} - -# Function to get ethernet information -get_ethernet_info() { - interface=${1:-eth0} - # Check if ethtool is installed - if ! which ethtool >/dev/null 2>&1; then - error_response "ethtool not found" - fi - - # Check if interface exists - if ! ip link show "$interface" >/dev/null 2>&1; then - error_response "Interface $interface not found" - fi - - # Run ethtool and capture output - ethtool_output=$(ethtool "$interface" 2>/dev/null) || error_response "Failed to get ethernet information" - - # Extract values using sed instead of grep -P - speed=$(echo "$ethtool_output" | sed -n 's/.*Speed: \([^[:space:]]*\).*/\1/p' || echo "Unknown") - link_status=$(echo "$ethtool_output" | sed -n 's/.*Link detected: \(yes\|no\).*/\1/p' || echo "unknown") - auto_negotiation=$(echo "$ethtool_output" | sed -n 's/.*Auto-negotiation: \(on\|off\).*/\1/p' || echo "unknown") - - # Output JSON - echo "{\"link_speed\":\"$speed\",\"link_status\":\"$link_status\",\"auto_negotiation\":\"$auto_negotiation\"}" -} - -# Main execution -# Acquire lock before proceeding -acquire_lock - -# Parse query string for type and interface -type=$(echo "$QUERY_STRING" | sed -n 's/.*type=\([^&]*\).*/\1/p') -interface=$(echo "$QUERY_STRING" | sed -n 's/.*interface=\([^&]*\).*/\1/p') - -# Default interface if not specified -[ -z "$interface" ] && interface="eth0" - -# Convert type to lowercase using tr -type=$(echo "$type" | tr '[:upper:]' '[:lower:]') - -# Check type parameter and call appropriate function -case "$type" in - "memory") - get_memory_info - ;; - "eth") - get_ethernet_info "$interface" - ;; - *) - error_response "Invalid type. Use 'memory' or 'eth'" - ;; -esac - -# Lock will be automatically released by the cleanup trap \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_signal_metrics.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_signal_metrics.sh deleted file mode 100755 index 17ac893..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/fetch_signal_metrics.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -# Ensure the script outputs proper CGI headers -echo "Content-Type: application/json" -echo "" - -# Directory where JSON files are stored (adjust as needed) -JSON_DIR="/www/signal_graphs/" - -# Function to safely read JSON file -read_json_file() { - local file="$1" - if [ -f "$file" ]; then - cat "$file" - else - echo "[]" # Return empty array if file doesn't exist - fi -} - -# Collect signal metrics from JSON files -RSRP=$(read_json_file "${JSON_DIR}/rsrp.json") -RSRQ=$(read_json_file "${JSON_DIR}/rsrq.json") -SINR=$(read_json_file "${JSON_DIR}/sinr.json") - -# Combine metrics into a single JSON object -printf '{ - "rsrp": %s, - "rsrq": %s, - "sinr": %s -}' "$RSRP" "$RSRQ" "$SINR" \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/ping_latency.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/ping_latency.sh deleted file mode 100755 index 0d07203..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/home/ping_latency.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# Set the content type to JSON -echo "Content-Type: application/json" -echo "" - -# Ping 8.8.8.8 with 5 packets and capture the full output -ping_result=$(ping -c 5 8.8.8.8) - -# Check if ping was successful -if [ $? -eq 0 ]; then - # Extract the average latency using awk - avg_latency=$(echo "$ping_result" | awk '/avg/ {split($4, a, "/"); print int(a[2])}') - - # If average latency was extracted, return it - if [ ! -z "$avg_latency" ]; then - echo "{\"connection\": \"ACTIVE\", \"latency\": $avg_latency}" - else - echo '{"connection": "ACTIVE", "latency": 0}' - fi -else - # Ping failed - echo '{"connection": "INACTIVE", "latency": 0}' -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/mcc-mnc-list.json b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/mcc-mnc-list.json deleted file mode 100755 index fa20e53..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/mcc-mnc-list.json +++ /dev/null @@ -1,37130 +0,0 @@ -[ - { - "type": "National", - "countryName": "Abkhazia", - "countryCode": "GE-AB", - "mcc": "289", - "mnc": "67", - "brand": "Aquafon", - "operator": "Aquafon JSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": "MCC is not listed by ITU; LTE band 20" - }, - { - "type": "National", - "countryName": "Abkhazia", - "countryCode": "GE-AB", - "mcc": "289", - "mnc": "88", - "brand": "A-Mobile", - "operator": "A-Mobile LLSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "MCC is not listed by ITU" - }, - { - "type": "National", - "countryName": "Albania", - "countryCode": "AL", - "mcc": "276", - "mnc": "01", - "brand": "ONE", - "operator": "One Telecommunications", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": "Former Telekom Albania" - }, - { - "type": "National", - "countryName": "Albania", - "countryCode": "AL", - "mcc": "276", - "mnc": "02", - "brand": "Vodafone", - "operator": "Vodafone Albania", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Albania", - "countryCode": "AL", - "mcc": "276", - "mnc": "03", - "brand": "ALBtelecom", - "operator": "Albtelecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Eagle Mobile" - }, - { - "type": "National", - "countryName": "Albania", - "countryCode": "AL", - "mcc": "276", - "mnc": "04", - "brand": "Plus Communication", - "operator": "Plus Communication", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Shut down Jan 2018; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Andorra", - "countryCode": "AD", - "mcc": "213", - "mnc": "03", - "brand": "Som, Mobiland", - "operator": "Andorra Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G", - "notes": "LTE band 20; former Servei de Telecommunicacions d'Andorra" - }, - { - "type": "National", - "countryName": "Armenia", - "countryCode": "AM", - "mcc": "283", - "mnc": "01", - "brand": "Beeline", - "operator": "Veon Armenia CJSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Armenia", - "countryCode": "AM", - "mcc": "283", - "mnc": "04", - "brand": "Karabakh Telecom", - "operator": "Karabakh Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 900", - "notes": null - }, - { - "type": "National", - "countryName": "Armenia", - "countryCode": "AM", - "mcc": "283", - "mnc": "05", - "brand": "VivaCell-MTS", - "operator": "K Telecom CJSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Armenia", - "countryCode": "AM", - "mcc": "283", - "mnc": "10", - "brand": "Ucom", - "operator": "Ucom LLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former Orange" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "01", - "brand": "A1.net", - "operator": "A1 Telekom Austria", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": "former A1 / Mobilkom / PTA" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "02", - "brand": null, - "operator": "A1 Telekom Austria", - "status": "Reserved", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "03", - "brand": "Magenta", - "operator": "T-Mobile Austria GmbH", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500", - "notes": "former Max.Mobil, T-Mobile; national roaming agreement with 232-10: uses Hutchison Drei UMTS where no own coverage" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "04", - "brand": "Magenta", - "operator": "T-Mobile Austria GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": "former T-Mobile" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "05", - "brand": "3", - "operator": "Hutchison Drei Austria", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "owned by Hutchison Drei Austria / former Orange Austria / One / Connect; GSM 900 / LTE 900 rarely used" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "06", - "brand": "Orange AT", - "operator": "Orange Austria GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "07", - "brand": "Hofer Telekom", - "operator": "T-Mobile Austria", - "status": "Operational", - "bands": "MVNO", - "notes": "former tele.ring" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "08", - "brand": "Lycamobile", - "operator": "Lycamobile Austria", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "09", - "brand": "Tele2Mobil", - "operator": "A1 Telekom Austria", - "status": "Operational", - "bands": "MVNO", - "notes": "division bought from Tele2 by A1 Telekom Austria; customers \"moved\" to bob (232-11)" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "10", - "brand": "3", - "operator": "Hutchison Drei Austria", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "national roaming agreement with 232-03: uses T-Mobile GSM where no own coverage" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "11", - "brand": "bob", - "operator": "A1 Telekom Austria", - "status": "Operational", - "bands": "MVNO", - "notes": "brand of A1 Telekom Austria" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "12", - "brand": "yesss!", - "operator": "A1 Telekom Austria", - "status": "Operational", - "bands": "MVNO", - "notes": "owned by A1 Telekom Austria / one-way national roaming agreement with 232-05" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "13", - "brand": "Magenta", - "operator": "T-Mobile Austria GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": "Former UPC Austria" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "14", - "brand": null, - "operator": "Hutchison Drei Austria", - "status": "Reserved", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "15", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile Austria", - "status": "Operational", - "bands": "MVNO", - "notes": "former Barablu Mobile Austria, uses A1" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "16", - "brand": null, - "operator": "Hutchison Drei Austria", - "status": "Reserved", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "17", - "brand": "spusu", - "operator": "MASS Response Service GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "18", - "brand": null, - "operator": "smartspace GmbH", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "19", - "brand": null, - "operator": "Hutchison Drei Austria", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Tele2 Telecommunication GmbH" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "20", - "brand": "m:tel", - "operator": "MTEL Austrija GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": "By Serbian Telecom" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "21", - "brand": null, - "operator": "Salzburg AG für Energie, Verkehr und Telekommunikation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "22", - "brand": null, - "operator": "Plintron Austria Limited", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "23", - "brand": "Magenta", - "operator": "T-Mobile Austria GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "24", - "brand": null, - "operator": "Smartel Services GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "25", - "brand": null, - "operator": "Holding Graz Kommunale Dienstleistungen GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "26", - "brand": null, - "operator": "LIWEST Kabelmedien GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "27", - "brand": null, - "operator": "TISMI B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "91", - "brand": "GSM-R A", - "operator": "ÖBB", - "status": "Operational", - "bands": "GSM-R", - "notes": "railways communication" - }, - { - "type": "National", - "countryName": "Austria", - "countryCode": "AT", - "mcc": "232", - "mnc": "92", - "brand": "ArgoNET", - "operator": "ArgoNET GmbH", - "status": "Operational", - "bands": "CDMA450 / LTE450", - "notes": "machine to machine communication for critical infrastructure" - }, - { - "type": "National", - "countryName": "Belarus", - "countryCode": "BY", - "mcc": "257", - "mnc": "01", - "brand": "A1", - "operator": "A1 Belarus", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100", - "notes": "Former velcom; LTE via beCloud" - }, - { - "type": "National", - "countryName": "Belarus", - "countryCode": "BY", - "mcc": "257", - "mnc": "02", - "brand": "MTS", - "operator": "Mobile TeleSystems", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100", - "notes": "LTE via beCloud" - }, - { - "type": "National", - "countryName": "Belarus", - "countryCode": "BY", - "mcc": "257", - "mnc": "03", - "brand": "DIALLOG", - "operator": "BelCel", - "status": "Not operational", - "bands": "CDMA 450", - "notes": "Closed on 21 January 2014" - }, - { - "type": "National", - "countryName": "Belarus", - "countryCode": "BY", - "mcc": "257", - "mnc": "04", - "brand": "life:)", - "operator": "Belarusian Telecommunications Network", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former BeST; LTE via beCloud" - }, - { - "type": "National", - "countryName": "Belarus", - "countryCode": "BY", - "mcc": "257", - "mnc": "05", - "brand": "byfly", - "operator": "Beltelecom", - "status": "Not operational", - "bands": "WiMAX 3500", - "notes": "Closed on 1 May 2017" - }, - { - "type": "National", - "countryName": "Belarus", - "countryCode": "BY", - "mcc": "257", - "mnc": "06", - "brand": "beCloud", - "operator": "Belorussian Cloud Technologies", - "status": "Operational", - "bands": "LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former Yota Bel; wholesale network used by MTS, life:), and A1" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "00", - "brand": "Proximus", - "operator": "Proximus SA", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Belgacom Mobile" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "01", - "brand": "Proximus", - "operator": "Proximus SA", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "Former Belgacom Mobile" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "02", - "brand": null, - "operator": "Infrabel", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "03", - "brand": "Citymesh Connect", - "operator": "Citymesh NV", - "status": "Operational", - "bands": "LTE 2600 / LTE 3500", - "notes": "MVNO and private network" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "04", - "brand": "MWingz", - "operator": "Proximus SA", - "status": "Planned", - "bands": "Unknown", - "notes": "Shared Proximus / Orange Belgium" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "05", - "brand": "Telenet", - "operator": "Telenet", - "status": "Operational", - "bands": "MVNO", - "notes": "Using Base's Network" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "06", - "brand": "Lycamobile", - "operator": "Lycamobile sprl", - "status": "Operational", - "bands": "MVNO", - "notes": "Using Telenet" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "07", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile Belgium nv", - "status": "Reserved", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "08", - "brand": "VOO", - "operator": "Nethys", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "09", - "brand": null, - "operator": "Proximus SA", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Voxbone" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "10", - "brand": "Orange Belgium", - "operator": "Orange S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Former Mobistar" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "11", - "brand": "L-mobi", - "operator": "L-Mobi Mobile", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "15", - "brand": null, - "operator": "Elephant Talk Communications Schweiz GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "16", - "brand": null, - "operator": "NextGen Mobile Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "20", - "brand": "Base", - "operator": "Telenet", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "22", - "brand": "Febo.mobi", - "operator": "FEBO Telecom", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "23", - "brand": null, - "operator": "Dust Mobile", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "25", - "brand": null, - "operator": "Dense Air Belgium SPRL", - "status": "Unknown", - "bands": "TD-LTE 2600", - "notes": "Former Voyacom" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "28", - "brand": null, - "operator": "BICS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "29", - "brand": null, - "operator": "TISMI", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "30", - "brand": "Mobile Vikings", - "operator": "Unleashed NV", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Proximus network" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "33", - "brand": null, - "operator": "Ericsson NV", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "34", - "brand": null, - "operator": "ONOFFAPP OÜ", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former Dense Air Belgium SPRL" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "40", - "brand": "JOIN", - "operator": "JOIN Experience (Belgium)", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "48", - "brand": null, - "operator": "Network Research Belgium", - "status": "Unknown", - "bands": "5G 3500", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "50", - "brand": null, - "operator": "IP Nexia", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "71", - "brand": null, - "operator": "test", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "72", - "brand": null, - "operator": "test", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "73", - "brand": null, - "operator": "test", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "74", - "brand": null, - "operator": "test", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "206", - "mnc": "99", - "brand": null, - "operator": "e-BO Enterprises", - "status": "Not operational", - "bands": "LTE?", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "270", - "mnc": "77", - "brand": null, - "operator": "Proximus Luxembourg S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Uses Luxembourg MCC" - }, - { - "type": "National", - "countryName": "Belgium", - "countryCode": "BE", - "mcc": "270", - "mnc": "99", - "brand": null, - "operator": "Orange Communications Luxembourg S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Uses Luxembourg MCC" - }, - { - "type": "National", - "countryName": "Bosnia and Herzegovina", - "countryCode": "BA", - "mcc": "218", - "mnc": "03", - "brand": "HT-ERONET", - "operator": "Public Enterprise Croatian Telecom Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Bosnia and Herzegovina", - "countryCode": "BA", - "mcc": "218", - "mnc": "05", - "brand": "m:tel", - "operator": "RS Telecommunications JSC Banja Luka", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": "GSM-MS1, Mobilna Srpske, Mobi's" - }, - { - "type": "National", - "countryName": "Bosnia and Herzegovina", - "countryCode": "BA", - "mcc": "218", - "mnc": "90", - "brand": "BH Mobile", - "operator": "BH Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": "GSMBiH" - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "01", - "brand": "A1 BG", - "operator": "A1 Bulgaria", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": "Former Citron, Mobiltel, M-Tel" - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "03", - "brand": "Vivacom", - "operator": "BTC", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 1800 / 5G 2100", - "notes": "Former Vivatel" - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "05", - "brand": "Yettel", - "operator": "Yettel Bulgaria", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": "Former Globul, Telenor" - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "07", - "brand": "НКЖИ", - "operator": "НАЦИОНАЛНА КОМПАНИЯ ЖЕЛЕЗОПЪТНА ИНФРАСТРУКТУРА", - "status": "Operational", - "bands": "GSM-R", - "notes": "(The Bulgarian) National Railway Infrastructure Company" - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "09", - "brand": null, - "operator": "COMPATEL LIMITED", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "11", - "brand": null, - "operator": "Bulsatcom", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Bulgaria", - "countryCode": "BG", - "mcc": "284", - "mnc": "13", - "brand": "Ти.ком", - "operator": "Ti.com JSC", - "status": "Operational", - "bands": "LTE 1800", - "notes": "Former Max Telecom" - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "01", - "brand": "HT HR", - "operator": "T-Hrvatski Telekom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 2100 / 5G 3500 / 5G 26000", - "notes": "Former CRONET,\nHTmobile" - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "02", - "brand": null, - "operator": "Telemach", - "status": "Operational", - "bands": "GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Former Tele2" - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "03", - "brand": null, - "operator": "ALTAVOX d.o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "04", - "brand": null, - "operator": "NTH Mobile d.o.o.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "10", - "brand": "A1 HR", - "operator": "A1 Hrvatska", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 700 / 5G 3500", - "notes": "Former Vipnet" - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "12", - "brand": null, - "operator": "TELE FOCUS d.o.o.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "20", - "brand": "T-Mobile HR", - "operator": "T-Hrvatski Telekom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "22", - "brand": "Mobile One", - "operator": "Mobile One Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Croatia", - "countryCode": "HR", - "mcc": "219", - "mnc": "30", - "brand": null, - "operator": "INNOVACOM OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Cyprus", - "countryCode": "CY", - "mcc": "280", - "mnc": "01", - "brand": "Cytamobile-Vodafone", - "operator": "Cyprus Telecommunications Authority", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Cyprus", - "countryCode": "CY", - "mcc": "280", - "mnc": "02", - "brand": "Cytamobile-Vodafone", - "operator": "Cyprus Telecommunications Authority", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Cyprus", - "countryCode": "CY", - "mcc": "280", - "mnc": "10", - "brand": "Epic", - "operator": "Monaco Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former MTN" - }, - { - "type": "National", - "countryName": "Cyprus", - "countryCode": "CY", - "mcc": "280", - "mnc": "20", - "brand": "PrimeTel", - "operator": "PrimeTel PLC", - "status": "Operational", - "bands": "UMTS 2100 / LTE 900 / LTE 1800", - "notes": "Originally MVNO, MNO since 2015. Uses Epic for 2G/3G roaming." - }, - { - "type": "National", - "countryName": "Cyprus", - "countryCode": "CY", - "mcc": "280", - "mnc": "22", - "brand": "lemontel", - "operator": "Lemontel Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Cyprus", - "countryCode": "CY", - "mcc": "280", - "mnc": "23", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile Cyprus Ltd.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "01", - "brand": "T-Mobile", - "operator": "T-Mobile Czech Republic", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100", - "notes": "Former Paegas; UMTS shut down Nov 2021" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "02", - "brand": "O2", - "operator": "O2 Czech Republic", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / TD-LTE 2600 / 5G 3500", - "notes": "Former Eurotel; CDMA 450 shut down June 2019; UMTS shut down Nov 2021" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "03", - "brand": "Vodafone", - "operator": "Vodafone Czech Republic", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 1800 / 5G 2100", - "notes": "Former Oskar; UMTS shut down Mar 2021" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "04", - "brand": null, - "operator": "Nordic Telecom Regional s.r.o.", - "status": "Operational", - "bands": "MVNO / LTE 410", - "notes": "Former U:fon, Air Telecom; CDMA 410 MHz shut down Dec 2017; LTE 410 for public safety services" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "05", - "brand": null, - "operator": "PODA a.s.", - "status": "Operational", - "bands": "TD-LTE 3700", - "notes": "Former TRAVEL TELEKOMMUNIKATION; fixed wireless" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "06", - "brand": null, - "operator": "Nordic Telecom 5G a.s.", - "status": "Operational", - "bands": "TD-LTE 3700", - "notes": "Former OSNO TELECOMUNICATION" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "07", - "brand": "T-Mobile", - "operator": "T-Mobile Czech Republic", - "status": "Operational", - "bands": "LTE 800", - "notes": "Former ASTELNET" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "08", - "brand": null, - "operator": "Compatel s.r.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "09", - "brand": "Unimobile", - "operator": "Uniphone, s.r.o.", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former Vectone/Mundio" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "11", - "brand": null, - "operator": "incrate s.r.o.", - "status": "Unknown", - "bands": "5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "98", - "brand": null, - "operator": "Správa železniční dopravní cesty, s.o.", - "status": "Operational", - "bands": "GSM-R 900", - "notes": "railways communication" - }, - { - "type": "National", - "countryName": "Czech Republic", - "countryCode": "CZ", - "mcc": "230", - "mnc": "99", - "brand": "Vodafone", - "operator": "Vodafone Czech Republic", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "R&D Centre at FEE, CTU (educational, experimental); licence expired Jul 2012" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "01", - "brand": "TDC", - "operator": "TDC A/S", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "02", - "brand": "Telenor", - "operator": "Telenor Denmark", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Former Sonofon; UMTS 2100 shutdown 2021, UMTS 900 to shut down 2022" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "03", - "brand": null, - "operator": "Syniverse Technologies", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former End2End / MIGway A/S / MACH Connectivity" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "04", - "brand": null, - "operator": "Nexcon.io ApS", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former NextGen Mobile Ltd T/A CardBoardFish" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "05", - "brand": "TetraNet", - "operator": "Dansk Beredskabskommunikation A/S", - "status": "Operational", - "bands": "TETRA", - "notes": "Former ApS KBUS 38 nr. 4418; owned by Motorola Solutions" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "06", - "brand": "3", - "operator": "Hi3G Denmark ApS", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700 / 5G 2100 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "07", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile (Denmark) Limited", - "status": "Not operational", - "bands": "MVNO", - "notes": "Former Barablu; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "08", - "brand": "Voxbone", - "operator": "Voxbone mobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Nordisk Mobiltelefon" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "09", - "brand": "SINE", - "operator": "Dansk Beredskabskommunikation A/S", - "status": "Operational", - "bands": "TETRA", - "notes": "Owned by Motorola Solutions" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "10", - "brand": "TDC", - "operator": "TDC A/S", - "status": "Operational", - "bands": "Unknown", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "11", - "brand": "SINE", - "operator": "Dansk Beredskabskommunikation A/S", - "status": "Operational", - "bands": "TETRA", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "12", - "brand": "Lycamobile", - "operator": "Lycamobile Denmark Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "13", - "brand": null, - "operator": "Compatel Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "14", - "brand": null, - "operator": "Monty UK Global Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "15", - "brand": "Net 1", - "operator": "Cibicom", - "status": "Operational", - "bands": "LTE 450", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "16", - "brand": null, - "operator": "Tismi B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "17", - "brand": null, - "operator": "Gotanet AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Naka AG" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "18", - "brand": null, - "operator": "Cubic Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "20", - "brand": "Telia", - "operator": "Telia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "23", - "brand": "GSM-R DK", - "operator": "Banedanmark", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "25", - "brand": "Viahub", - "operator": "SMS Provider Corp.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "28", - "brand": null, - "operator": "LINK Mobile A/S", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former CoolTEL ApS" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "30", - "brand": null, - "operator": "Interactive digital media GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Telia" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "40", - "brand": null, - "operator": "Ericsson Danmark A/S", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; former Sense Communications Denmark A/S; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "42", - "brand": "Wavely", - "operator": "Greenwave Mobile IoT ApS", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Brandtel ApS, Tel42 ApS" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "43", - "brand": null, - "operator": "MobiWeb Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "66", - "brand": null, - "operator": "TT-Netværket P/S", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / 5G 1800 / 5G 3500", - "notes": "Former Telia, now shared network Telia/Telenor" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "73", - "brand": "Onomondo", - "operator": "Onomondo ApS", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "77", - "brand": "Telenor", - "operator": "Telenor Denmark", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Former Tele2; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "88", - "brand": null, - "operator": "Cobira ApS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Denmark (Kingdom of Denmark)", - "countryCode": "DK", - "mcc": "238", - "mnc": "96", - "brand": "Telia", - "operator": "Telia Danmark", - "status": "Unknown", - "bands": "Unknown", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "01", - "brand": "Telia", - "operator": "Telia Eesti", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G", - "notes": "Former EMT" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "02", - "brand": "Elisa", - "operator": "Elisa Eesti", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "03", - "brand": "Tele2", - "operator": "Tele2 Eesti", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "04", - "brand": "Top Connect", - "operator": "OY Top Connect", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "05", - "brand": "CSC Telecom", - "operator": "CSC Telecom Estonia OÜ", - "status": "Operational", - "bands": "MVNO", - "notes": "Former AS Bravocom Mobiil" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "06", - "brand": null, - "operator": "Progroup Holding", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "07", - "brand": "Kou", - "operator": "Televõrgu AS", - "status": "Not operational", - "bands": "CDMA2000 450", - "notes": "Acquired by Tele 2 in 2012; shut down in January 2016" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "08", - "brand": "VIVEX", - "operator": "VIVEX OU", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "09", - "brand": null, - "operator": "Bravo Telecom", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "10", - "brand": null, - "operator": "Telcotrade OÜ", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "11", - "brand": null, - "operator": "UAB Raystorm Eesti filiaal", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "12", - "brand": null, - "operator": "Ntel Solutions OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "13", - "brand": null, - "operator": "Telia Eesti AS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "14", - "brand": null, - "operator": "Estonian Crafts OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "15", - "brand": null, - "operator": "Premium Net International S.R.L. Eesti filiaal", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "16", - "brand": "dzinga", - "operator": "SmartTel Plus OÜ", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "17", - "brand": null, - "operator": "Baltergo OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "18", - "brand": null, - "operator": "Cloud Communications OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "19", - "brand": null, - "operator": "OkTelecom OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "20", - "brand": null, - "operator": "DOTT Telecom OÜ", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "21", - "brand": null, - "operator": "Tismi B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "22", - "brand": null, - "operator": "M2MConnect OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "24", - "brand": null, - "operator": "Novametro OÜ", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "25", - "brand": null, - "operator": "Eurofed OÜ", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "26", - "brand": null, - "operator": "IT-Decision Telecom OÜ", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "28", - "brand": null, - "operator": "Nord Connect OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "29", - "brand": null, - "operator": "SkyTel OÜ", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Estonia", - "countryCode": "EE", - "mcc": "248", - "mnc": "71", - "brand": null, - "operator": "Siseministeerium (Ministry of Interior)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Faroe Islands (Kingdom of Denmark)", - "countryCode": "FO", - "mcc": "288", - "mnc": "01", - "brand": "Føroya Tele", - "operator": "Føroya Tele", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Faroe Islands (Kingdom of Denmark)", - "countryCode": "FO", - "mcc": "288", - "mnc": "02", - "brand": "Nema", - "operator": "Nema", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Former Kall, Vodafone, Hey; also uses MCC 274 MNC 02 (Iceland)" - }, - { - "type": "National", - "countryName": "Faroe Islands (Kingdom of Denmark)", - "countryCode": "FO", - "mcc": "288", - "mnc": "03", - "brand": "TOSA", - "operator": "Tosa Sp/F", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Former Edge Mobile; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "03", - "brand": "DNA", - "operator": "DNA Oy", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Former Telia" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "04", - "brand": "DNA", - "operator": "DNA Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Aina Oyj" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "05", - "brand": "Elisa", - "operator": "Elisa Oyj", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 3500", - "notes": "Former Radiolinja" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "06", - "brand": "Elisa", - "operator": "Elisa Oyj", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "07", - "brand": "Nokia", - "operator": "Nokia Solutions and Networks Oy", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600 / TD-LTE 2600", - "notes": "Test network in Espoo Leppävaara and Nokia HQ" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "08", - "brand": "Nokia", - "operator": "Nokia Solutions and Networks Oy", - "status": "Unknown", - "bands": "GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "09", - "brand": null, - "operator": "Nokia Solutions and Networks Oy", - "status": "Unknown", - "bands": "GSM 900", - "notes": "Former Finnet Group" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "10", - "brand": null, - "operator": "Traficom", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former TDC Oy Finland" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "11", - "brand": null, - "operator": "Traficom", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Vectone Mobile" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "12", - "brand": "DNA", - "operator": "DNA Oy", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "13", - "brand": "DNA", - "operator": "DNA Oy", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "14", - "brand": "Ålcom", - "operator": "Ålands Telekommunikation Ab", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "Former Ålands Mobiltelefon (ÅMT); coverage only in Åland" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "15", - "brand": null, - "operator": "Telit Wireless Solutions GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former educational network of Satakunta University of Applied Sciences" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "16", - "brand": null, - "operator": "Digita Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Tele2" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "17", - "brand": null, - "operator": "Liikennevirasto", - "status": "Operational", - "bands": "GSM-R", - "notes": "Finnish Transport Agency" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "19", - "brand": null, - "operator": "Nettia Oy", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "20", - "brand": null, - "operator": "Elisa Oyj", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Telia" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "21", - "brand": "Elisa- Saunalahti", - "operator": "Elisa Oyj", - "status": "Operational", - "bands": "MVNO", - "notes": "Internal MVNO-code of Elisa Oyj. Former Saunalahti Group Oyj" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "22", - "brand": null, - "operator": "EXFO Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former NetHawk Oyj; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "23", - "brand": null, - "operator": "EXFO Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former NetHawk Oyj; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "24", - "brand": null, - "operator": "Nord Connect UAB", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Tampere University of Technology foundation; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "25", - "brand": null, - "operator": "Fortum Power and Heat Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Datame Oy CDMA" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "26", - "brand": "Compatel", - "operator": "Compatel Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "27", - "brand": null, - "operator": "Teknologian tutkimuskeskus VTT Oy", - "status": "Unknown", - "bands": "LTE 450 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500 / 5G mmWave", - "notes": "VTT Technical Research Centre of Finland" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "28", - "brand": null, - "operator": "Teknologian tutkimuskeskus VTT Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "VTT Technical Research Centre of Finland" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "29", - "brand": null, - "operator": "Teknologian tutkimuskeskus VTT Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former SCNL Truphone, VTT Technical Research Centre of Finland; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "30", - "brand": null, - "operator": "Teknologian tutkimuskeskus VTT Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Mundio Mobile Oy, VTT Technical Research Centre of Finland; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "31", - "brand": null, - "operator": "Teknologian tutkimuskeskus VTT Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Ukko Mobile Oy, VTT Technical Research Centre of Finland" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "32", - "brand": "Voxbone", - "operator": "Voxbone SA", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "33", - "brand": "VIRVE", - "operator": "Suomen Turvallisuusverkko Oy", - "status": "Operational", - "bands": "TETRA", - "notes": "Finnish authorities radio network" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "34", - "brand": "Bittium Wireless", - "operator": "Bittium Wireless Oy", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "35", - "brand": null, - "operator": "Edzcom Oy", - "status": "Operational", - "bands": "LTE 450 / TD-LTE 2600", - "notes": "Former Ukkoverkot; data-only network" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "36", - "brand": "Telia / DNA", - "operator": "Telia Finland Oyj / Suomen Yhteisverkko Oy", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Joint mobile network in Northern and Eastern Finland areas" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "37", - "brand": "Tismi", - "operator": "Tismi BV", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "38", - "brand": null, - "operator": "Nokia Solutions and Networks Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "39", - "brand": null, - "operator": "Nokia Solutions and Networks Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "40", - "brand": null, - "operator": "Nokia Solutions and Networks Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Test network;" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "41", - "brand": null, - "operator": "Nokia Solutions and Networks Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "42", - "brand": null, - "operator": "SMS Provider Corp.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "43", - "brand": null, - "operator": "Telavox AB / Telavox Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "44", - "brand": null, - "operator": "Turun ammattikorkeakoulu Oy", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "45", - "brand": null, - "operator": "Suomen Turvallisuusverkko Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Public safety network" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "46", - "brand": null, - "operator": "Suomen Turvallisuusverkko Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Public safety network" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "47", - "brand": null, - "operator": "Suomen Turvallisuusverkko Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": "Public safety network" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "50", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "51", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Unknown", - "bands": "NB-IoT 700", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "52", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Unknown", - "bands": "5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "53", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "54", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "55", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "56", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "57", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "58", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "59", - "brand": null, - "operator": "Aalto-korkeakoulusäätiö sr", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "91", - "brand": "Telia", - "operator": "Telia Finland Oyj", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": "Former Sonera" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "92", - "brand": "Sonera", - "operator": "TeliaSonera Finland Oyj", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "95", - "brand": null, - "operator": "Säteilyturvakeskus", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Finland", - "countryCode": "FI", - "mcc": "244", - "mnc": "99", - "brand": null, - "operator": "Oy L M Ericsson Ab", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "01", - "brand": "Orange", - "operator": "Orange S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "02", - "brand": "Orange", - "operator": "Orange S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "Zones Blanches" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "03", - "brand": "MobiquiThings", - "operator": "MobiquiThings", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "04", - "brand": "Sisteer", - "operator": "Societe d'ingenierie systeme telecom et reseaux", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "05", - "brand": null, - "operator": "Globalstar Europe", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "06", - "brand": null, - "operator": "Globalstar Europe", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "07", - "brand": null, - "operator": "Globalstar Europe", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "08", - "brand": "SFR", - "operator": "Altice", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Completel" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "09", - "brand": "SFR", - "operator": "Altice", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "is launched for SFR outbound roaming services" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "10", - "brand": "SFR", - "operator": "Altice", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "MNC also used in Monaco" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "11", - "brand": "SFR", - "operator": "Altice", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Femtocells" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "12", - "brand": "Truphone", - "operator": "Truphone France", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Hewlett-Packard France" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "13", - "brand": "SFR", - "operator": "Altice", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": "Zones Blanches" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "14", - "brand": "SNCF Réseau", - "operator": "SNCF Réseau", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "15", - "brand": "Free", - "operator": "Free Mobile", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "Principal Network" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "16", - "brand": "Free", - "operator": "Free Mobile", - "status": "Operational", - "bands": "LTE 700 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "17", - "brand": "LEGOS", - "operator": "Local Exchange Global Operation Services", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "18", - "brand": "Voxbone", - "operator": "Voxbone mobile", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "19", - "brand": null, - "operator": "Haute-Garonne numérique", - "status": "Operational", - "bands": "LTE", - "notes": "Former Altitude Infrastructure; fixed wireless" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "20", - "brand": "Bouygues", - "operator": "Bouygues Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "MNC also used in Monaco" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "21", - "brand": "Bouygues", - "operator": "Bouygues Telecom", - "status": "Unknown", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / UMTS 900", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "22", - "brand": "Transatel Mobile", - "operator": "Transatel", - "status": "Unknown", - "bands": "MVNO", - "notes": "MVNE Uses Orange" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "23", - "brand": null, - "operator": "Syndicat mixte ouvert Charente Numérique", - "status": "Operational", - "bands": "TD-LTE", - "notes": "Former Omea Telecom (bought by SFR in 2014); fixed wireless" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "24", - "brand": "Sierra Wireless", - "operator": "Sierra Wireless", - "status": "Operational", - "bands": "MVNO", - "notes": "Former MobiquiThings" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "25", - "brand": "LycaMobile", - "operator": "LycaMobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Using Bouygues Telecom" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "26", - "brand": "NRJ Mobile", - "operator": "Bouygues Telecom - Distribution", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Euro-Information Telecom" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "27", - "brand": null, - "operator": "Coriolis Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Afone Using Altice SFR" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "28", - "brand": "AIF", - "operator": "Airmob Infra Full", - "status": "Operational", - "bands": "FULL MVNO", - "notes": "Using Orange Network" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "29", - "brand": null, - "operator": "Cubic télécom France", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Société International Mobile Communication" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "30", - "brand": null, - "operator": "Syma Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "31", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses SFR or RED" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "32", - "brand": "Orange", - "operator": "Orange S.A.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "33", - "brand": "Fibre64", - "operator": "Département des Pyrénées-Atlantiques", - "status": "Unknown", - "bands": "WiMAX", - "notes": "fixed wireless" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "34", - "brand": null, - "operator": "Cellhire France", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "35", - "brand": "Free", - "operator": "Free Mobile", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "36", - "brand": "Free", - "operator": "Free Mobile", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "37", - "brand": null, - "operator": "IP Directions", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "38", - "brand": null, - "operator": "Lebara France Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "39", - "brand": null, - "operator": "Netwo", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "500", - "brand": null, - "operator": "EDF", - "status": "Unknown", - "bands": "Unknown", - "notes": "MNC 50 formerly assigned to EDF" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "50144", - "brand": null, - "operator": "TotalEnergies Global Information Technology services", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "50164", - "brand": null, - "operator": "TotalEnergies Global Information Technology services", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "50168", - "brand": null, - "operator": "Butachimie", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "50169", - "brand": null, - "operator": "SNEF telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "50176", - "brand": null, - "operator": "Grand port fluvio-maritime de l'axe Seine", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "50194", - "brand": null, - "operator": "Société du Grand Paris", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "502", - "brand": null, - "operator": "EDF", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former General Electric Digital Services Europe" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "504", - "brand": null, - "operator": "Centre à l'énergie atomique et aux énergies alternatives", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "700", - "brand": null, - "operator": "Weaccess group", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "701", - "brand": null, - "operator": "GIP Vendée numérique", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "702", - "brand": null, - "operator": "17-Numerique", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "703", - "brand": null, - "operator": "Nivertel", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "704", - "brand": null, - "operator": "Axione Limousin", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "705", - "brand": null, - "operator": "Hautes-Pyrénées Numérique", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "706", - "brand": null, - "operator": "Tours Métropole Numérique", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "707", - "brand": null, - "operator": "Sartel THD", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "708", - "brand": null, - "operator": "Melis@ territoires ruraux", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "709", - "brand": null, - "operator": "Quimper communauté télécom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "710", - "brand": null, - "operator": "Losange", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "711", - "brand": null, - "operator": "Nomotech", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "712", - "brand": null, - "operator": "Syndicat Audois d'énergies et du Numérique", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "713", - "brand": null, - "operator": "SD NUM SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "714", - "brand": null, - "operator": "Département de l'Isère", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "86", - "brand": null, - "operator": "SEM@FOR77", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Nomotech" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "87", - "brand": null, - "operator": "Airbus defence and space SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former RATP" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "88", - "brand": "Bouygues", - "operator": "Bouygues Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "Zones Blanches" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "89", - "brand": null, - "operator": "Hub One", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Omer Telecom Ltd, Fondation b-com" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "90", - "brand": null, - "operator": "Images & Réseaux", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "91", - "brand": null, - "operator": "Orange S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "92", - "brand": "Com4Innov", - "operator": "Association Plate-forme Télécom", - "status": "Not operational", - "bands": "TD-LTE 2300 / LTE 2600", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "93", - "brand": null, - "operator": "Thales Communications & Security SAS", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former TDF; MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "94", - "brand": null, - "operator": "Halys", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "95", - "brand": null, - "operator": "Orange S.A.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "96", - "brand": null, - "operator": "Région Bourgogne-Franche-Comté", - "status": "Operational", - "bands": "LTE", - "notes": "Former Axione; fixed wireless" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "97", - "brand": null, - "operator": "Thales Communications & Security SAS", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "France", - "countryCode": "FR", - "mcc": "208", - "mnc": "98", - "brand": null, - "operator": "Société Air France", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "01", - "brand": "Geocell", - "operator": "Silknet", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "02", - "brand": "Magti", - "operator": "MagtiCom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "03", - "brand": "MagtiFix", - "operator": "MagtiCom", - "status": "Operational", - "bands": "CDMA 450", - "notes": "License until 2029" - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "04", - "brand": "Beeline", - "operator": "Mobitel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "05", - "brand": "S1", - "operator": "Silknet", - "status": "Operational", - "bands": "CDMA 800", - "notes": "former UTG" - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "06", - "brand": null, - "operator": "JSC Compatel", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "07", - "brand": "GlobalCell", - "operator": "GlobalCell", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "08", - "brand": "Silk LTE", - "operator": "Silknet", - "status": "Operational", - "bands": "LTE 2300", - "notes": "CDMA 850 shut down Nov 2019" - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "09", - "brand": null, - "operator": "Gmobile", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "10", - "brand": null, - "operator": "Premium Net International SRL", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "11", - "brand": null, - "operator": "Mobilive", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "12", - "brand": null, - "operator": "Telecom1 Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Datacomm" - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "13", - "brand": null, - "operator": "Asanet Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "14", - "brand": "DataCell", - "operator": "DataHouse Global", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "15", - "brand": null, - "operator": "Servicebox Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Georgia", - "countryCode": "GE", - "mcc": "282", - "mnc": "22", - "brand": "Myphone", - "operator": "Myphone Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "01", - "brand": "Telekom", - "operator": "Telekom Deutschland GmbH", - "status": "Operational", - "bands": "GSM 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500", - "notes": "Formerly D1 - DeTeMobil, D1-Telekom, T-D1, T-Mobile; UMTS shut down Jun 2021" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "02", - "brand": "Vodafone", - "operator": "Vodafone D2 GmbH", - "status": "Operational", - "bands": "GSM 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 3500", - "notes": "Former D2 Mannesmann; UMTS shut down Jun 2021" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "03", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Operational", - "bands": "GSM 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "Former E-Plus until 2014; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "04", - "brand": "Vodafone", - "operator": "Vodafone D2 GmbH", - "status": "Reserved", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "05", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Reserved", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100", - "notes": "Former E-Plus" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "06", - "brand": "Telekom", - "operator": "Telekom Deutschland GmbH", - "status": "Reserved", - "bands": "GSM 900 / LTE 800 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "07", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Merged with E-Plus Mobilfunk in 2014 and uses MNC 262-03 since 2016" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "08", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Reserved", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "09", - "brand": "Vodafone", - "operator": "Vodafone D2 GmbH", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 2600", - "notes": "Internal testing IOT" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "10", - "brand": null, - "operator": "DB Netz AG", - "status": "Operational", - "bands": "GSM-R", - "notes": "Former Arcor, Vodafone" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "11", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Reserved", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "12", - "brand": "Simquadrat", - "operator": "sipgate GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": "National roaming with O2 (former E-Plus)" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "13", - "brand": "BAAINBw", - "operator": "Bundesamt für Ausrüstung, Informationstechnik und Nutzung der Bundeswehr", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Mobilcom" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "14", - "brand": null, - "operator": "Lebara Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Group 3G UMTS" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "15", - "brand": "Airdata", - "operator": null, - "status": "Operational", - "bands": "TD-SCDMA", - "notes": "data only" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "16", - "brand": null, - "operator": "Telogic Germany GmbH", - "status": "Not operational", - "bands": "MVNO", - "notes": "formerly Vistream; bankruptcy in 2012; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "17", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former E-Plus; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "18", - "brand": null, - "operator": "NetCologne", - "status": "Operational", - "bands": "MVNO", - "notes": "CDMA 450 shut down" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "19", - "brand": "450connect", - "operator": "Alliander AG", - "status": "Operational", - "bands": "LTE 450", - "notes": "Former Inquam" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "20", - "brand": "Enreach", - "operator": "Enreach Germany GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses O2 (262-03)" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "21", - "brand": null, - "operator": "Multiconnect GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "22", - "brand": null, - "operator": "sipgate Wireless GmbH", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "23", - "brand": "1&1", - "operator": "Drillisch Online AG", - "status": "Operational", - "bands": "5G 3500 / MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "24", - "brand": null, - "operator": "TelcoVillage GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "25", - "brand": null, - "operator": "MTEL Deutschland GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "33", - "brand": "simquadrat", - "operator": "sipgate GmbH", - "status": "Not operational", - "bands": "MVNO", - "notes": "Uses O2 (former E-Plus) (262-03); MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "41", - "brand": null, - "operator": "First Telecom GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "42", - "brand": "CCC Event", - "operator": "Chaos Computer Club", - "status": "Temporary operational", - "bands": "GSM 1800", - "notes": "Used on events like Chaos Communication Congress" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "43", - "brand": "Lycamobile", - "operator": "Lycamobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Vodafone" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "60", - "brand": null, - "operator": "DB Telematik", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "70", - "brand": null, - "operator": "BDBOS", - "status": "Operational", - "bands": "Tetra", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "71", - "brand": null, - "operator": "GSMK", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "72", - "brand": null, - "operator": "Ericsson GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "73", - "brand": null, - "operator": "Nokia", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Xantaro Deutschland GmbH" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "74", - "brand": null, - "operator": "Ericsson GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Qualcomm MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "75", - "brand": null, - "operator": "Core Network Dynamics GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "76", - "brand": null, - "operator": "BDBOS", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Siemens" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "77", - "brand": "O2", - "operator": "Telefónica Germany GmbH & Co. oHG", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Former E-Plus; test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "78", - "brand": "Telekom", - "operator": "Telekom Deutschland GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "79", - "brand": null, - "operator": "ng4T GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "92", - "brand": null, - "operator": "Nash Technologies", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Germany", - "countryCode": "DE", - "mcc": "262", - "mnc": "98", - "brand": null, - "operator": "private networks", - "status": "Operational", - "bands": "5G 3500", - "notes": "non-public networks" - }, - { - "type": "National", - "countryName": "Gibraltar (United Kingdom)", - "countryCode": "GI", - "mcc": "266", - "mnc": "01", - "brand": "GibTel", - "operator": "Gibtelecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Gibraltar (United Kingdom)", - "countryCode": "GI", - "mcc": "266", - "mnc": "03", - "brand": "Gibfibrespeed", - "operator": "GibFibre Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Gibraltar (United Kingdom)", - "countryCode": "GI", - "mcc": "266", - "mnc": "06", - "brand": "CTS Mobile", - "operator": "CTS Gibraltar", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "licence withdrawn in February 2013" - }, - { - "type": "National", - "countryName": "Gibraltar (United Kingdom)", - "countryCode": "GI", - "mcc": "266", - "mnc": "09", - "brand": "Shine", - "operator": "Eazitelecom", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "shut down May 2016" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "01", - "brand": "Cosmote", - "operator": "COSMOTE - Mobile Telecommunications S.A.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 1800 / 5G 2100 / 5G 3500", - "notes": "UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "02", - "brand": "Cosmote", - "operator": "COSMOTE - Mobile Telecommunications S.A.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 1800 / 5G 2100 / 5G 3500", - "notes": "UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "03", - "brand": null, - "operator": "OTE", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "04", - "brand": null, - "operator": "OSE", - "status": "Unknown", - "bands": "GSM-R", - "notes": "Former EDISY" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "05", - "brand": "Vodafone", - "operator": "Vodafone Greece", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "former PanaFon" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "06", - "brand": null, - "operator": "Cosmoline", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "07", - "brand": null, - "operator": "AMD Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "09", - "brand": "NOVA", - "operator": "NOVA", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "former Q-Telecom, WIND Hellas; UMTS shut down Mar 2023" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "10", - "brand": "NOVA", - "operator": "NOVA", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "former Telestet, TIM, WIND Hellas; UMTS shut down Mar 2023" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "11", - "brand": null, - "operator": "interConnect", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "12", - "brand": null, - "operator": "Yuboto", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "13", - "brand": null, - "operator": "Compatel Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "14", - "brand": "Cyta Hellas", - "operator": "CYTA", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on Vodafone's network" - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "15", - "brand": null, - "operator": "BWS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Greece", - "countryCode": "GR", - "mcc": "202", - "mnc": "16", - "brand": null, - "operator": "Inter Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Greenland (Kingdom of Denmark)", - "countryCode": "GL", - "mcc": "290", - "mnc": "01", - "brand": "tusass", - "operator": "Tusass A/S", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / 5G", - "notes": "Former TELE Greenland; 5G for fixed wireless; UMTS to be shut down in 2023" - }, - { - "type": "National", - "countryName": "Greenland (Kingdom of Denmark)", - "countryCode": "GL", - "mcc": "290", - "mnc": "02", - "brand": "Nanoq Media", - "operator": "inu:it a/s", - "status": "Operational", - "bands": "TD-LTE 2500", - "notes": "Former Nuuk TV" - }, - { - "type": "National", - "countryName": "Greenland (Kingdom of Denmark)", - "countryCode": "GL", - "mcc": "290", - "mnc": "03", - "brand": null, - "operator": "GTV Greenland", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Guernsey (United Kingdom)", - "countryCode": "GG", - "mcc": "234", - "mnc": "03", - "brand": "Airtel-Vodafone", - "operator": "Guernsey Airtel Ltd", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Guernsey (United Kingdom)", - "countryCode": "GG", - "mcc": "234", - "mnc": "50", - "brand": "JT", - "operator": "JT Group Limited", - "status": "Operational", - "bands": "GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "former Wave Telecom" - }, - { - "type": "National", - "countryName": "Guernsey (United Kingdom)", - "countryCode": "GG", - "mcc": "234", - "mnc": "55", - "brand": "Sure Mobile", - "operator": "Sure (Guernsey) Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "former Cable & Wireless" - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "01", - "brand": "Yettel Hungary", - "operator": "Telenor Magyarország Zrt.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Former Pannon; MNC has not the same numerical value as the area code; UMTS shut down Mar 2023" - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "02", - "brand": null, - "operator": "MVM Net Ltd.", - "status": "Operational", - "bands": "LTE 450", - "notes": "For government use" - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "03", - "brand": "DIGI", - "operator": "DIGI Telecommunication Ltd.", - "status": "Operational", - "bands": "LTE 1800 / TD-LTE 3700", - "notes": null - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "04", - "brand": null, - "operator": "Invitech ICT Services Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "20", - "brand": "Yettel Hungary", - "operator": "Telenor Magyarország Zrt.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "30", - "brand": "Telekom", - "operator": "Magyar Telekom Plc", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "Former Westel; MNC has the same numerical value as the area code; UMTS shut down June 2022" - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "70", - "brand": "Vodafone", - "operator": "Vodafone Magyarország Zrt.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "MNC has the same numerical value as the area code; UMTS shut down Mar 2023" - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "71", - "brand": "upc", - "operator": "Vodafone Magyarország Zrt.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Hungary", - "countryCode": "HU", - "mcc": "216", - "mnc": "99", - "brand": "MAV GSM-R", - "operator": "Magyar Államvasutak", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "01", - "brand": "Síminn", - "operator": "Iceland Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": "Former Landssimi hf" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "02", - "brand": "Vodafone", - "operator": "Sýn", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": "Former Islandssimi ehf" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "03", - "brand": "Vodafone", - "operator": "Sýn", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Islandssimi ehf; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "04", - "brand": "Viking", - "operator": "IMC Island ehf", - "status": "Operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "05", - "brand": null, - "operator": "Halló Frjáls fjarskipti hf.", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "06", - "brand": null, - "operator": "Núll níu ehf", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "07", - "brand": "IceCell", - "operator": "IceCell ehf", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Network only partially built; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "08", - "brand": "On-waves", - "operator": "Iceland Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "On ferries and cruise ships" - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "11", - "brand": "Nova", - "operator": "Nova ehf", - "status": "Operational", - "bands": "UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "12", - "brand": "Tal", - "operator": "IP fjarskipti", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "16", - "brand": null, - "operator": "Tismi BV", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "22", - "brand": null, - "operator": "Landhelgisgæslan (Icelandic Coast Guard)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "31", - "brand": "Síminn", - "operator": "Iceland Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iceland", - "countryCode": "IS", - "mcc": "274", - "mnc": "91", - "brand": null, - "operator": "Neyðarlínan", - "status": "Operational", - "bands": "Tetra", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "01", - "brand": "Vodafone", - "operator": "Vodafone Ireland", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "02", - "brand": "3", - "operator": "Hutchison 3G Ireland limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Former Telefónica O2" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "03", - "brand": "Eir", - "operator": "Eir Group plc", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": "Former Meteor" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "04", - "brand": null, - "operator": "Access Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "05", - "brand": "3", - "operator": "Hutchison 3G Ireland limited", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "07", - "brand": "Eir", - "operator": "Eir Group plc", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Former eMobile" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "08", - "brand": "Eir", - "operator": "Eir Group plc", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "09", - "brand": null, - "operator": "Clever Communications Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "11", - "brand": "Tesco Mobile", - "operator": "Liffey Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses 3" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "13", - "brand": "Lycamobile", - "operator": "Lycamobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses 3" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "15", - "brand": "Virgin Mobile", - "operator": "UPC", - "status": "Operational", - "bands": "MVNO", - "notes": "Former upc" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "16", - "brand": "Carphone Warehouse", - "operator": "Carphone Warehouse", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "17", - "brand": "3", - "operator": "Hutchison 3G Ireland limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "18", - "brand": null, - "operator": "Cubic Telecom Limited", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "21", - "brand": null, - "operator": "Net Feasa Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Internet of things" - }, - { - "type": "National", - "countryName": "Ireland", - "countryCode": "IE", - "mcc": "272", - "mnc": "68", - "brand": null, - "operator": "Office of the Government Chief Information Officer", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Isle of Man (United Kingdom)", - "countryCode": "IM", - "mcc": "234", - "mnc": "18", - "brand": "Cloud 9 Mobile", - "operator": "Cloud 9 Mobile Communications PLC", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "Retired" - }, - { - "type": "National", - "countryName": "Isle of Man (United Kingdom)", - "countryCode": "IM", - "mcc": "234", - "mnc": "36", - "brand": "Sure Mobile", - "operator": "Sure Isle of Man Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": "Former Cable & Wireless" - }, - { - "type": "National", - "countryName": "Isle of Man (United Kingdom)", - "countryCode": "IM", - "mcc": "234", - "mnc": "58", - "brand": "Pronto GSM", - "operator": "Manx Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Isle of Man (United Kingdom)", - "countryCode": "IM", - "mcc": "234", - "mnc": "73", - "brand": null, - "operator": "Bluewave Communications Ltd.", - "status": "Operational", - "bands": "TD-LTE 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "01", - "brand": "TIM", - "operator": "Telecom Italia S.p.A.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2600", - "notes": "UMTS shut down in 2022" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "02", - "brand": "Elsacom", - "operator": null, - "status": "Not operational", - "bands": "Satellite (Globalstar)", - "notes": "Retired" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "04", - "brand": "Intermatica", - "operator": null, - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "05", - "brand": "Telespazio", - "operator": null, - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "06", - "brand": "Vodafone", - "operator": "Vodafone Italia S.p.A.", - "status": "Operational", - "bands": "Unknown", - "notes": "Unknown" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "07", - "brand": "Kena Mobile", - "operator": "Noverca", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses TIM Network" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "08", - "brand": "Fastweb", - "operator": "Fastweb S.p.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses TIM and WindTre Networks" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "10", - "brand": "Vodafone", - "operator": "Vodafone Italia S.p.A.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "30", - "brand": "RFI", - "operator": "Rete Ferroviaria Italiana", - "status": "Operational", - "bands": "GSM-R 900", - "notes": "Railways communication" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "33", - "brand": "Poste Mobile", - "operator": "Poste Mobile S.p.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "uses Wind Tre Network" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "34", - "brand": "BT Italia", - "operator": "BT Italia", - "status": "Operational", - "bands": "MVNO", - "notes": "uses TIM Network" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "35", - "brand": "Lycamobile", - "operator": "Lycamobile", - "status": "Operational", - "bands": "MVNO", - "notes": "uses Vodafone Network" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "36", - "brand": "Digi Mobil", - "operator": "Digi Italy S.r.l.", - "status": "Operational", - "bands": "MVNO", - "notes": "uses TIM Network" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "37", - "brand": "WINDTRE", - "operator": "Wind Tre", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former 3 Italia" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "38", - "brand": "LINKEM", - "operator": "OpNet S.p.A.", - "status": "Operational", - "bands": "TD-LTE 3500 / 5G 3500 / 5G 26000", - "notes": "spectrum shared with GO Internet" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "39", - "brand": "SMS Italia", - "operator": "SMS Italia S.r.l.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "41", - "brand": "GO internet", - "operator": "GO internet S.p.A.", - "status": "Operational", - "bands": "TD-LTE 3500 / 5G 3500", - "notes": "spectrum available only in Marche and Emilia-Romagna, roams on Linkem otherwise" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "43", - "brand": "TIM", - "operator": "Telecom Italia S.p.A.", - "status": "Operational", - "bands": "5G 700 / 5G 3500 / 5G 26000", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "47", - "brand": "Fastweb", - "operator": "Fastweb S.p.A.", - "status": "Operational", - "bands": "TD-LTE 3500 / 5G 3500 / 5G 26000", - "notes": "Former Tiscali, acquired by Fastweb in 2018" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "48", - "brand": "TIM", - "operator": "Telecom Italia S.p.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "49", - "brand": "Vianova", - "operator": "Welcome Italia S.p.A.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "50", - "brand": "Iliad", - "operator": "Iliad Italia", - "status": "Operational", - "bands": "UMTS 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "53", - "brand": "COOP Voce", - "operator": "COOP Voce", - "status": "Operational", - "bands": "MVNO", - "notes": "MNC used from Jan, 2020" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "54", - "brand": "Plintron", - "operator": null, - "status": "Operational", - "bands": "MVNO", - "notes": "Operates only as MVNE for Rabona, NoiTel and NT Mobile on Vodafone network" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "56", - "brand": "Spusu", - "operator": "Mass Response GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "77", - "brand": "IPSE 2000", - "operator": null, - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "Retired" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "88", - "brand": "WINDTRE", - "operator": "Wind Tre", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 1800 / 5G 2600 / 5G 3500", - "notes": "Former Wind" - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "98", - "brand": "BLU", - "operator": "BLU S.p.A.", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Italy", - "countryCode": "IT", - "mcc": "222", - "mnc": "99", - "brand": "WINDTRE", - "operator": "Wind Tre", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Former 3 Italia" - }, - { - "type": "National", - "countryName": "Jersey (United Kingdom)", - "countryCode": "JE", - "mcc": "234", - "mnc": "03", - "brand": "Airtel-Vodafone", - "operator": "Jersey Airtel Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Jersey (United Kingdom)", - "countryCode": "JE", - "mcc": "234", - "mnc": "28", - "brand": null, - "operator": "Marathon Telecom Limited", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "holds license but not network built" - }, - { - "type": "National", - "countryName": "Jersey (United Kingdom)", - "countryCode": "JE", - "mcc": "234", - "mnc": "50", - "brand": "JT", - "operator": "JT Group Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Jersey (United Kingdom)", - "countryCode": "JE", - "mcc": "234", - "mnc": "55", - "brand": "Sure Mobile", - "operator": "Sure (Jersey) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "former Cable & Wireless" - }, - { - "type": "National", - "countryName": "Kosovo", - "countryCode": "XK", - "mcc": "221", - "mnc": "01", - "brand": "Vala", - "operator": "Telecom of Kosovo J.S.C.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 1800", - "notes": "Previously the Monaco MCC/MNC 212-01 was used." - }, - { - "type": "National", - "countryName": "Kosovo", - "countryCode": "XK", - "mcc": "221", - "mnc": "02", - "brand": "IPKO", - "operator": "IPKO", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 1800", - "notes": "Previously the Slovenian MCC/MNC 293-41 was used. Used by MVNO D3 Mobile." - }, - { - "type": "National", - "countryName": "Kosovo", - "countryCode": "XK", - "mcc": "221", - "mnc": "06", - "brand": "Z Mobile", - "operator": "Dardaphone.Net LLC", - "status": "Operational", - "bands": "MVNO", - "notes": "Previously the Monaco MCC/MNC 212-01 was used." - }, - { - "type": "National", - "countryName": "Kosovo", - "countryCode": "XK", - "mcc": "221", - "mnc": "07", - "brand": "D3 Mobile", - "operator": "Dukagjini Telecommunications LLC", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "01", - "brand": "LMT", - "operator": "Latvian Mobile Telephone", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "02", - "brand": "Tele2", - "operator": "Tele2", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "03", - "brand": "TRIATEL", - "operator": "Telekom Baltija", - "status": "Operational", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "04", - "brand": null, - "operator": "Beta Telecom", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Lattelecom; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "05", - "brand": "Bite", - "operator": "Bite Latvija", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Bite's postpaid customers are still being assigned SIM cards with 246 02 MNC" - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "06", - "brand": null, - "operator": "SIA \"UNISTARS\"", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Rigatta" - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "07", - "brand": null, - "operator": "SIA \"MEGATEL\"", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Bite network; former Master Telecom" - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "08", - "brand": "VMT", - "operator": "SIA \"VENTAmobile\"", - "status": "Operational", - "bands": "MVNO", - "notes": "Former IZZI" - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "09", - "brand": "Xomobile", - "operator": "Camel Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Global Mobile Solutions" - }, - { - "type": "National", - "countryName": "Latvia", - "countryCode": "LV", - "mcc": "247", - "mnc": "10", - "brand": "LMT", - "operator": "Latvian Mobile Telephone", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "01", - "brand": "Swisscom", - "operator": "Swisscom Schweiz AG", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Also uses MCC 228 MNC 01 (Switzerland)" - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "02", - "brand": "7acht", - "operator": "Salt Liechtenstein AG", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Orange" - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "05", - "brand": "FL1", - "operator": "Telecom Liechtenstein AG", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800", - "notes": "Former Mobilkom" - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "06", - "brand": "Cubic Telecom", - "operator": "Cubic Telecom AG", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "07", - "brand": null, - "operator": "First Mobile AG", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "09", - "brand": null, - "operator": "EMnify GmbH", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "10", - "brand": null, - "operator": "Soracom LI Ltd.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "11", - "brand": null, - "operator": "DIMOCO Messaging AG", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Liechtenstein", - "countryCode": "LI", - "mcc": "295", - "mnc": "77", - "brand": "Alpmobil", - "operator": "Alpcom AG", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Bankruptcy in February 2012, former Tele2, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "01", - "brand": "Telia", - "operator": "Telia Lietuva", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500", - "notes": "Former Omnitel; UMTS 2100 shut down Dec 2020, UMTS 900 - Dec 2022" - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "02", - "brand": "BITĖ", - "operator": "UAB Bitė Lietuva", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "03", - "brand": "Tele2", - "operator": "UAB Tele2 (Tele2 AB, Sweden)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "(in Vodafone partnership)" - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "04", - "brand": null, - "operator": "LR vidaus reikalų ministerija (Ministry of the Interior)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "05", - "brand": "LitRail", - "operator": "Lietuvos geležinkeliai (Lithuanian Railways)", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "06", - "brand": "Mediafon", - "operator": "UAB Mediafon", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "07", - "brand": null, - "operator": "Compatel Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "08", - "brand": "MEZON", - "operator": "Lietuvos radijo ir televizijos centras", - "status": "Operational", - "bands": "WiMAX 3500 / TD-LTE 2300 / 5G 2300", - "notes": "acquired by Bitė" - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "09", - "brand": null, - "operator": "Interactive Digital Media GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "11", - "brand": null, - "operator": "DATASIM OU", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "12", - "brand": null, - "operator": "Nord connect OU", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "13", - "brand": null, - "operator": "Travel Communication SIA", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "14", - "brand": null, - "operator": "Tismi BV", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "15", - "brand": null, - "operator": "Esim telecom, UAB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lithuania", - "countryCode": "LT", - "mcc": "246", - "mnc": "16", - "brand": null, - "operator": "Annecto Telecom Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "01", - "brand": "POST", - "operator": "POST Luxembourg", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 700 / 5G 3500", - "notes": "Former LuxGSM (P&T Luxembourg)" - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "02", - "brand": null, - "operator": "MTX Connect S.a.r.l.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "05", - "brand": null, - "operator": "Luxembourg Online S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "07", - "brand": null, - "operator": "Bouygues Telecom S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "10", - "brand": null, - "operator": "Blue Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "71", - "brand": "CFL", - "operator": "Société Nationale des Chemins de Fer Luxembourgeois", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "77", - "brand": "Tango", - "operator": "Tango SA", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 700 / 5G 3500", - "notes": "MNC also used in Belgium; UMTS to shut down Jan 2024" - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "78", - "brand": null, - "operator": "Interactive digital media GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "79", - "brand": null, - "operator": "Mitto AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "80", - "brand": null, - "operator": "Syniverse Technologies S.à r.l.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "81", - "brand": null, - "operator": "E-Lux Mobile Telecommunication S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Luxembourg", - "countryCode": "LU", - "mcc": "270", - "mnc": "99", - "brand": "Orange", - "operator": "Orange S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 700 / 5G 3500", - "notes": "Former VOXmobile; MNC also used in Belgium" - }, - { - "type": "National", - "countryName": "Malta", - "countryCode": "MT", - "mcc": "278", - "mnc": "01", - "brand": "Epic", - "operator": "Epic", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / 5G", - "notes": "Former Vodafone; supports MVNOs Redtouch Fone and VFC Mobile" - }, - { - "type": "National", - "countryName": "Malta", - "countryCode": "MT", - "mcc": "278", - "mnc": "11", - "brand": null, - "operator": "YOM Ltd.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Malta", - "countryCode": "MT", - "mcc": "278", - "mnc": "21", - "brand": "GO", - "operator": "Mobile Communications Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G", - "notes": "Supports MVNO PING" - }, - { - "type": "National", - "countryName": "Malta", - "countryCode": "MT", - "mcc": "278", - "mnc": "30", - "brand": "GO", - "operator": "Mobile Communications Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Malta", - "countryCode": "MT", - "mcc": "278", - "mnc": "77", - "brand": "Melita", - "operator": "Melita", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 2100 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "255", - "mnc": "00", - "brand": "IDC", - "operator": "Interdnestrcom", - "status": "Operational", - "bands": "CDMA 800", - "notes": "Unofficially using Ukrainian MCC; CDMA 450 shut down Sep 2020" - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "01", - "brand": "Orange", - "operator": "Orange Moldova", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former Voxtel" - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "02", - "brand": "Moldcell", - "operator": "Moldcell", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "03", - "brand": "Moldtelecom", - "operator": "Moldtelecom", - "status": "Operational", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "04", - "brand": "Eventis", - "operator": "Eventis Telecom", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Bankruptcy - License suspended" - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "05", - "brand": "Moldtelecom", - "operator": "Moldtelecom", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800", - "notes": "Former Unité" - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "15", - "brand": "IDC", - "operator": "Interdnestrcom", - "status": "Operational", - "bands": "LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Moldova", - "countryCode": "MD", - "mcc": "259", - "mnc": "99", - "brand": "Moldtelecom", - "operator": "Moldtelecom", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Former Unité; used for Femtocell service only" - }, - { - "type": "National", - "countryName": "Monaco", - "countryCode": "MC", - "mcc": "212", - "mnc": "10", - "brand": "Office des Telephones", - "operator": "Monaco Telecom", - "status": "Operational", - "bands": "GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Used for the Vala network in Kosovo. The GSM Association lists the PTK (P&T Kosovo) website for this network." - }, - { - "type": "National", - "countryName": "Montenegro", - "countryCode": "ME", - "mcc": "297", - "mnc": "01", - "brand": "One", - "operator": "Telenor Montenegro", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G", - "notes": "Former ProMonte GSM" - }, - { - "type": "National", - "countryName": "Montenegro", - "countryCode": "ME", - "mcc": "297", - "mnc": "02", - "brand": "telekom.me", - "operator": "Crnogorski Telekom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Former MoNet" - }, - { - "type": "National", - "countryName": "Montenegro", - "countryCode": "ME", - "mcc": "297", - "mnc": "03", - "brand": "m:tel", - "operator": "m:tel Crna Gora", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": "Owned by Telekom Srbija" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "00", - "brand": null, - "operator": "Intovoice B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "01", - "brand": null, - "operator": "RadioAccess Network Services", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "02", - "brand": "Tele2", - "operator": "T-Mobile Netherlands B.V", - "status": "Operational", - "bands": "LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "03", - "brand": "Enreach", - "operator": "Enreach Netherlands B.V.", - "status": "Operational", - "bands": "MVNE", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "04", - "brand": "Vodafone", - "operator": "Vodafone Libertel B.V.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 1800", - "notes": "UMTS shut down February 2020" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "05", - "brand": null, - "operator": "Elephant Talk Communications Premium Rate Services", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "06", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile (Netherlands) Ltd", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "07", - "brand": "Teleena", - "operator": "Tata Communications MOVE B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "08", - "brand": "KPN", - "operator": "KPN Mobile The Netherlands B.V.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700", - "notes": "UMTS 2100 shut down Jan 2022" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "09", - "brand": "Lycamobile", - "operator": "Lycamobile Netherlands Limited", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "10", - "brand": "KPN", - "operator": "KPN B.V.", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "UMTS 2100 shut down Jan 2022" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "11", - "brand": null, - "operator": "Greenet Netwerk B.V", - "status": "Operational", - "bands": "LTE", - "notes": "Former VoipIT B.V., MNC withdrawn; private networks" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "12", - "brand": "Telfort", - "operator": "KPN Mobile The Netherlands B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": "Subbrand of KPN" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "13", - "brand": null, - "operator": "Unica Installatietechniek B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "14", - "brand": null, - "operator": "Venus & Mercury Telecom", - "status": "Unknown", - "bands": "5G", - "notes": "Former 6GMOBILE B.V." - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "15", - "brand": "Ziggo", - "operator": "Ziggo B.V.", - "status": "Operational", - "bands": "LTE 2600", - "notes": "business users only" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "16", - "brand": "T-Mobile (BEN)", - "operator": "T-Mobile Netherlands B.V", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "17", - "brand": null, - "operator": "Lebara Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Intercity Mobile Communications" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "18", - "brand": "Ziggo", - "operator": "Ziggo Services B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former UPC Netherlands" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "19", - "brand": null, - "operator": "Mixe Communication Solutions B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "20", - "brand": "T-Mobile", - "operator": "T-Mobile Netherlands B.V", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700", - "notes": "Former Orange Netherlands MCC/MNC" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "21", - "brand": null, - "operator": "ProRail B.V.", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "22", - "brand": null, - "operator": "Ministerie van Defensie", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "23", - "brand": null, - "operator": "KORE Wireless Nederland B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former ASPIDER Solutions, Wyless" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "24", - "brand": null, - "operator": "PM Factory B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "25", - "brand": null, - "operator": "CapX B.V.", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Private networks" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "26", - "brand": null, - "operator": "SpeakUp B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "27", - "brand": "L-mobi", - "operator": "L-Mobi Mobile B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Breezz Nederland B.V." - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "28", - "brand": null, - "operator": "Lancelot B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "29", - "brand": null, - "operator": "Tismi B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Private Mobile Ltd" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "30", - "brand": null, - "operator": "ASpider Solutions Nederland B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "32", - "brand": null, - "operator": "Cubic Telecom Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "33", - "brand": null, - "operator": "Truphone B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "60", - "brand": null, - "operator": "Nextgen Mobile Ltd", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "61", - "brand": null, - "operator": "Alcadis B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former BodyTrace Netherlands B.V." - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "62", - "brand": "RGTN", - "operator": "RGTN Wholesale Netherlands B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Voxbone; used for Signalling Connection Control Part and two-way SMS services" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "63", - "brand": null, - "operator": "Messagebird BV", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "64", - "brand": null, - "operator": "Zetacom B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "65", - "brand": null, - "operator": "AGMS Netherlands B.V.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "66", - "brand": null, - "operator": "Utility Connect B.V.", - "status": "Operational", - "bands": "CDMA 450", - "notes": "Subsidiary of Alliander; network operated by KPN" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "67", - "brand": null, - "operator": "Koning en Hartman B.V.", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Former RadioAccess B.V.; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "68", - "brand": null, - "operator": "Roamware (Netherlands) B.V.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "69", - "brand": null, - "operator": "KPN Mobile The Netherlands B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Netherlands (Kingdom of the Netherlands)", - "countryCode": "NL", - "mcc": "204", - "mnc": "91", - "brand": null, - "operator": "Enexis Netbeheer B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "01", - "brand": "Telekom.mk", - "operator": "Makedonski Telekom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 700 / 5G 3500", - "notes": "Former Mobimak" - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "02", - "brand": "one", - "operator": "one", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "Former Cosmofon, One (Telekom Slovenija Group)" - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "03", - "brand": "A1 MK", - "operator": "A1 Macedonia DOOEL", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": "Former VipOperator; merged with One in 2015 and renamed to one.vip; renamed to A1 MK in 2019" - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "04", - "brand": "Lycamobile", - "operator": "Lycamobile LLC", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses A1 network" - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "10", - "brand": null, - "operator": "WTI Macedonia", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "11", - "brand": null, - "operator": "MOBIK TELEKOMUNIKACII DOOEL Skopje", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "North Macedonia", - "countryCode": "MK", - "mcc": "294", - "mnc": "12", - "brand": null, - "operator": "MTEL DOOEL Skopje", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "01", - "brand": "Telenor", - "operator": "Telenor Norge AS", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "UMTS shut down 2021, GSM to shut down 2025" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "02", - "brand": "Telia", - "operator": "Telia Norge AS", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "Former NetCom; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "03", - "brand": null, - "operator": "Televerket AS", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "04", - "brand": "Tele2", - "operator": "Tele2 (Mobile Norway AS)", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "05", - "brand": "Telia", - "operator": "Telia Norge AS", - "status": "Not operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100", - "notes": "Former Tele2" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "06", - "brand": "ice", - "operator": "ICE Norge AS", - "status": "Operational", - "bands": "LTE 450", - "notes": "Former Nordisk Mobiltelefon; data services only" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "07", - "brand": "Phonero", - "operator": "Phonero AS", - "status": "Not operational", - "bands": "MVNO", - "notes": "Former Ventelo; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "08", - "brand": "Telia", - "operator": "Telia Norge AS", - "status": "Operational", - "bands": "MVNO", - "notes": "Former TDC" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "09", - "brand": "Com4", - "operator": "Com4 AS", - "status": "Operational", - "bands": "MVNO", - "notes": "Principally M2M services" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "10", - "brand": null, - "operator": "Norwegian Communications Authority", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "11", - "brand": "SystemNet", - "operator": "SystemNet AS", - "status": "Not operational", - "bands": "Test", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "12", - "brand": "Telenor", - "operator": "Telenor Norge AS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "14", - "brand": "ice", - "operator": "ICE Communication Norge AS", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2100", - "notes": "UMTS shut down Jan 2021" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "15", - "brand": null, - "operator": "eRate Norway AS", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "16", - "brand": null, - "operator": "Iristel Norway AS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "17", - "brand": "Telenor", - "operator": "Telenor Norge AS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "20", - "brand": null, - "operator": "Jernbaneverket AS", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "21", - "brand": null, - "operator": "Jernbaneverket AS", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "22", - "brand": null, - "operator": "Altibox AS", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Network Norway AS;" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "23", - "brand": "Lycamobile", - "operator": "Lyca Mobile Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "24", - "brand": null, - "operator": "Mobile Norway AS", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "25", - "brand": null, - "operator": "Forsvarets kompetansesenter KKIS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "70", - "brand": null, - "operator": "test networks", - "status": "Unknown", - "bands": "Unknown", - "notes": "Can be used without application" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "71", - "brand": null, - "operator": "private networks", - "status": "Unknown", - "bands": "5G 3700", - "notes": "Band n77" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "72", - "brand": null, - "operator": "private networks", - "status": "Unknown", - "bands": "5G 3700", - "notes": "Band n77" - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "73", - "brand": null, - "operator": "private networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "74", - "brand": null, - "operator": "private networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "75", - "brand": null, - "operator": "private networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "90", - "brand": null, - "operator": "Nokia Solutions and Networks Norge AS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Norway", - "countryCode": "NO", - "mcc": "242", - "mnc": "99", - "brand": null, - "operator": "TampNet AS", - "status": "Operational", - "bands": "LTE 800 / LTE 1800", - "notes": "Offshore" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "01", - "brand": "Plus", - "operator": "Polkomtel Sp. z o.o.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-5G 2500", - "notes": "LTE roaming with Aero 2" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "02", - "brand": "T-Mobile", - "operator": "T-Mobile Polska S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / LTE 2100 / 5G 2100", - "notes": "former Era; see MNC 260-34 for shared LTE network; UMTS 2100 shut down Oct 2021, UMTS 900 to shut down 2023" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "03", - "brand": "Orange", - "operator": "Orange Polska S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / 5G 2100", - "notes": "former Idea; see MNC 260-34 for shared LTE network; CDMA 450 shut down April 2017" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "04", - "brand": "Plus", - "operator": "Polkomtel Sp. z o.o.", - "status": "Not operational", - "bands": "Unknown", - "notes": "former CenterNet, Aero2" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "05", - "brand": "Orange", - "operator": "Orange Polska S.A.", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "not in use, using MNC 03" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "06", - "brand": "Play", - "operator": "P4 Sp. z o.o.", - "status": "Operational", - "bands": "GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100", - "notes": "Also roaming on Polkomtel and Orange 2G/3G network" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "07", - "brand": "Netia", - "operator": "Netia S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on Play (P4)" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "08", - "brand": null, - "operator": "EXATEL S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former E-Telko Sp. z o.o." - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "09", - "brand": "Lycamobile", - "operator": "Lycamobile Sp. z o.o.", - "status": "Operational", - "bands": "MVNO", - "notes": "On Polkomtel 2G/3G network" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "10", - "brand": "T-Mobile", - "operator": "T-Mobile Polska S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": "former Telefony Opalenickie S.A., Sferia; CDMA 800 shut down in 2014; LTE 800 leased to Aero 2;" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "11", - "brand": "Plus", - "operator": "Polkomtel Sp. z o.o.", - "status": "Operational", - "bands": "CDMA 420", - "notes": "Former Nordisk Polska" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "12", - "brand": "Cyfrowy Polsat", - "operator": "Cyfrowy Polsat S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on Polkomtel" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "13", - "brand": null, - "operator": "Move Telecom S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Sferia" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "14", - "brand": null, - "operator": "Telco Leaders Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Sferia" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "15", - "brand": "Plus", - "operator": "Polkomtel Sp. z o.o.", - "status": "Operational", - "bands": "LTE 1800", - "notes": "former CenterNet, Aero2 ; GSM 1800 shut down in 2010" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "16", - "brand": "Plus", - "operator": "Polkomtel Sp. z o.o.", - "status": "Operational", - "bands": "LTE 1800", - "notes": "former Mobyland, Aero2 ; GSM 1800 shut down in 2010" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "17", - "brand": "Plus", - "operator": "Polkomtel Sp. z o.o.", - "status": "Operational", - "bands": "UMTS 900 / TD-LTE 2600", - "notes": "Former Aero2" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "18", - "brand": "AMD Telecom", - "operator": "AMD Telecom S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "19", - "brand": null, - "operator": "SIA NetBalt", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former Teleena Holding BV" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "20", - "brand": null, - "operator": "TISMI B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Mobile.Net, Wysyłaj SMS Polska" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "21", - "brand": null, - "operator": "private networks", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Exteri until May 2014; now used for several private networks with 4-digit MNC 21xx" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "22", - "brand": null, - "operator": "Twilio Ireland Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Arcomm until Nov 2018" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "23", - "brand": null, - "operator": "PGE Systemy S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Amicomm" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "24", - "brand": null, - "operator": "IT Partners Telco Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": "former WideNet" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "25", - "brand": "TeleCube.PL", - "operator": "Claude ICT Poland Sp. z o.o.", - "status": "Operational", - "bands": "Unknown", - "notes": "Former Best Solutions & Technology Experience, Polskie Sieci Radiowe" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "26", - "brand": null, - "operator": "Vonage B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Advanced Technology & Experience (ATE) until 2016" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "27", - "brand": null, - "operator": "SIA Ntel Solutions", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Intertelcom" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "28", - "brand": null, - "operator": "CrossMobile Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former PhoneNet until 2016" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "29", - "brand": null, - "operator": "SMSWIZARD POLSKA Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Interfonica Sp. z o.o." - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "30", - "brand": null, - "operator": "HXG Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former GrandTel Sp. z o.o." - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "31", - "brand": "Phone IT", - "operator": "Phone IT Sp. z o.o.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "32", - "brand": null, - "operator": "Compatel Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "33", - "brand": "Truphone", - "operator": "Truphone Poland Sp. z o.o.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "34", - "brand": "NetWorkS!", - "operator": "T-Mobile Polska S.A.", - "status": "Operational", - "bands": "LTE 800 / LTE 2600", - "notes": "Shared network T-Mobile / Orange" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "35", - "brand": null, - "operator": "PKP Polskie Linie Kolejowe S.A.", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "36", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn May 2014" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "37", - "brand": null, - "operator": "NEXTGEN MOBILE LTD", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn Nov 2018" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "38", - "brand": null, - "operator": "CALLFREEDOM Sp. z o.o.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdawn Apr 2019" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "39", - "brand": "Voxbone", - "operator": "VOXBONE SA", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "40", - "brand": null, - "operator": "Interactive Digital Media GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "41", - "brand": null, - "operator": "EZ PHONE MOBILE Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "42", - "brand": null, - "operator": "MobiWeb Telecom Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "43", - "brand": null, - "operator": "Smart Idea International Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "44", - "brand": null, - "operator": "Rebtel Poland Sp. z o.o.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn Apr 2019" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "45", - "brand": "Virgin Mobile", - "operator": "P4 Sp. z o.o.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "46", - "brand": null, - "operator": "Terra Telekom Sp. z o.o.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "47", - "brand": null, - "operator": "SMShighway Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "48", - "brand": null, - "operator": "AGILE TELECOM S.P.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "49", - "brand": null, - "operator": "Messagebird B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "90", - "brand": null, - "operator": "Polska Spółka Gazownictwa Sp. z o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": "M2M" - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "97", - "brand": null, - "operator": "Politechnika Łódzka Uczelniane Centrum Informatyczne", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Poland", - "countryCode": "PL", - "mcc": "260", - "mnc": "98", - "brand": "Play", - "operator": "P4 Sp. z o.o.", - "status": "Not operational", - "bands": "LTE 1800", - "notes": "Test network" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "01", - "brand": "Vodafone", - "operator": "Vodafone Portugal", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "formerly Telecel (2001)" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "02", - "brand": null, - "operator": "Digi Portugal, Lda.", - "status": "Unknown", - "bands": "Unknown", - "notes": "formerly MEO" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "03", - "brand": "NOS", - "operator": "NOS Comunicações", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "formerly Optimus (2014)" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "04", - "brand": "LycaMobile", - "operator": "LycaMobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "05", - "brand": null, - "operator": "Oniway - Inforcomunicaçôes, S.A.", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "License withdrawn in 2003; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "06", - "brand": "MEO", - "operator": "MEO - Serviços de Comunicações e Multimédia, S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "formerly TMN (2014)" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "07", - "brand": null, - "operator": "Sumamovil Portugal, S.A.", - "status": "Unknown", - "bands": "MVNO", - "notes": "formerly Vectone/Mundio" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "08", - "brand": "MEO", - "operator": "MEO - Serviços de Comunicações e Multimédia, S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "11", - "brand": null, - "operator": "Compatel, Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "12", - "brand": null, - "operator": "Infraestruturas de Portugal, S.A.", - "status": "Operational", - "bands": "GSM-R", - "notes": "former Refer Telecom, IP Telecom - Serviços de Telecomunicações, S.A." - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "13", - "brand": null, - "operator": "G9Telecom, S.A.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "21", - "brand": "Zapp", - "operator": "Zapp Portugal", - "status": "Not operational", - "bands": "CDMA2000 450", - "notes": "Closed down in September 2011; MNC withdawn" - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "80", - "brand": "MEO", - "operator": "MEO - Serviços de Comunicações e Multimédia, S.A.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "91", - "brand": "Vodafone", - "operator": "Vodafone Portugal", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Portugal", - "countryCode": "PT", - "mcc": "268", - "mnc": "93", - "brand": "NOS", - "operator": "NOS Comunicações", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "01", - "brand": "Vodafone", - "operator": "Vodafone România", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / TD-LTE 2600 / 5G 3500", - "notes": "Formerly branded as Connex" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "02", - "brand": "Clicknet Mobile", - "operator": "Telekom Romania", - "status": "Not operational", - "bands": "CDMA 420", - "notes": "Licence expired on 1 January 2015, network shut down" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "03", - "brand": "Telekom", - "operator": "Telekom Romania", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Formerly branded as Cosmote" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "04", - "brand": "Cosmote/Zapp", - "operator": "Telekom Romania", - "status": "Not operational", - "bands": "CDMA 450", - "notes": "Licence expired on 24 March 2013, network shut down" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "05", - "brand": "Digi.Mobil", - "operator": "RCS&RDS", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 2100 / TD-LTE 2600 / 5G 3500", - "notes": "3G network to be shut down until end of H1 2023" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "06", - "brand": "Telekom", - "operator": "Telekom Romania", - "status": "Not operational", - "bands": "UMTS 900 / UMTS 2100", - "notes": "Former Zapp; network shut down Mar 2023" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "10", - "brand": "Orange", - "operator": "Orange România", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Formerly branded as Dialog" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "11", - "brand": null, - "operator": "Enigma-System", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "15", - "brand": "Idilis", - "operator": "Idilis", - "status": "Not operational", - "bands": "WiMAX / TD-LTE 2600", - "notes": "LTE license is sold to RCS&RDS" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "16", - "brand": "Lycamobile", - "operator": "Lycamobile Romania", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Telekom Networks" - }, - { - "type": "National", - "countryName": "Romania", - "countryCode": "RO", - "mcc": "226", - "mnc": "19", - "brand": "CFR", - "operator": "Căile Ferate Române", - "status": "Testing", - "bands": "GSM-R 900", - "notes": "Dedicated network for safety communication, not for public users." - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "01", - "brand": "MTS", - "operator": "Mobile TeleSystems", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 4700", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "02", - "brand": "MegaFon", - "operator": "MegaFon PJSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former North-West GSM" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "03", - "brand": "NCC", - "operator": "Nizhegorodskaya Cellular Communications", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Purchased by Tele2" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "04", - "brand": "Sibchallenge", - "operator": "Sibchallenge", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "05", - "brand": "ETK", - "operator": "Yeniseytelecom", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / CDMA 450", - "notes": "Purchased by Tele2" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "06", - "brand": "Skylink", - "operator": "CJSC Saratov System of Cellular Communications", - "status": "Not operational", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "07", - "brand": "SMARTS", - "operator": "Zao SMARTS", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "08", - "brand": "Vainah Telecom", - "operator": "CS \"VainahTelecom\"", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "09", - "brand": "Skylink", - "operator": "Khabarovsky Cellular Phone", - "status": "Operational", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "10", - "brand": "DTC", - "operator": "Dontelekom", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "11", - "brand": "Yota", - "operator": "Scartel", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "12", - "brand": "Baykalwestcom", - "operator": "Baykal Westcom / New Telephone Company / Far Eastern Cellular", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "12", - "brand": "Akos", - "operator": null, - "status": "Not operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "13", - "brand": "KUGSM", - "operator": "Kuban GSM", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "14", - "brand": "MegaFon", - "operator": "MegaFon OJSC", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / TD-LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "15", - "brand": "SMARTS", - "operator": "SMARTS Ufa, SMARTS Uljanovsk", - "status": "Not operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "16", - "brand": "Miatel", - "operator": "Miatel", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "17", - "brand": "Utel", - "operator": "JSC Uralsvyazinform", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Former Ermak RMS" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "18", - "brand": "Osnova Telecom", - "operator": null, - "status": "Not operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "19", - "brand": "INDIGO", - "operator": "INDIGO", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Since 19 December 2009 merged with Tele2" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "20", - "brand": "Tele2", - "operator": "Tele2", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 800 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "21", - "brand": "GlobalTel", - "operator": "JSC \"GlobalTel\"", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "22", - "brand": null, - "operator": "Vainakh Telecom", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "23", - "brand": "Thuraya", - "operator": "GTNT", - "status": "Operational", - "bands": "Satellite MVNO", - "notes": "Former Mobicom Novosibirsk" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "26", - "brand": "VTB Mobile", - "operator": "VTB Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "27", - "brand": "Letai", - "operator": "Tattelecom", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "28", - "brand": "Beeline", - "operator": "Beeline", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Former EXTEL" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "29", - "brand": "Iridium", - "operator": "Iridium Communications", - "status": "Operational", - "bands": "Satellite MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "32", - "brand": "Win Mobile", - "operator": "K-Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": "Unapproved use in Crimea only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "33", - "brand": "Sevmobile", - "operator": "Sevtelekom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Unapproved use in Crimea only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "34", - "brand": "Krymtelekom", - "operator": "Krymtelekom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Unapproved use in Crimea only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "35", - "brand": "MOTIV", - "operator": "EKATERINBURG-2000", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / TD-LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "38", - "brand": "Tambov GSM", - "operator": "Central Telecommunication Company", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "39", - "brand": "Rostelecom", - "operator": "ROSTELECOM", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / TD-LTE 2300 / LTE 2600", - "notes": "Tele2 code 250 20 is used since acquiring" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "40", - "brand": "VTC Mobile", - "operator": "Voentelecom", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "44", - "brand": null, - "operator": "Stavtelesot / North Caucasian GSM", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "45", - "brand": "Gazprombank Mobile", - "operator": "PJSC New Mobile Communications", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "50", - "brand": "SberMobile", - "operator": "Sberbank-Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "54", - "brand": "TTK", - "operator": "Tattelecom", - "status": "Not operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "59", - "brand": "WireFire", - "operator": "NetbyNet", - "status": "Operational", - "bands": "MVNO on Megafon base", - "notes": "Data only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "60", - "brand": "Volna mobile", - "operator": "KTK Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": "Unapproved use in Crimea only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "61", - "brand": "Intertelecom", - "operator": "Intertelecom", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Unapproved use in Crimea only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "62", - "brand": "Tinkoff Mobile", - "operator": "Tinkoff Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "91", - "brand": "Sonic Duo", - "operator": "Sonic Duo CJSC", - "status": "Not operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "92", - "brand": null, - "operator": "Primtelefon", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "93", - "brand": null, - "operator": "Telecom XXI", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "96", - "brand": "+7Telecom", - "operator": "K-Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": "Unapproved use in Zaporizhzhia and Kherson Oblast only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "97", - "brand": "Phoenix", - "operator": "State Unitary Enterprise of DPR \"Republican Telecommunications Operator\"", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "Unapproved use in Donetsk People's Republic only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "255", - "mnc": "98", - "brand": "MKS (ex. Lugacom)", - "operator": "OOO \"MKS\"", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "Unapproved use in Luhansk People's Republic only" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "99", - "brand": "Beeline", - "operator": "OJSC Vimpel-Communications", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "UMTS 2100 shut down in 2021" - }, - { - "type": "National", - "countryName": "Russian Federation", - "countryCode": "RU", - "mcc": "250", - "mnc": "811", - "brand": null, - "operator": "Votek Mobile", - "status": "Not operational", - "bands": "AMPS / DAMPS / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "San Marino", - "countryCode": "SM", - "mcc": "292", - "mnc": "01", - "brand": "PRIMA", - "operator": "San Marino Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "01", - "brand": "Yettel", - "operator": "Telenor Serbia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "Former Telenor, 063 MOBTEL Srbija GSM, Mobi 63" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "02", - "brand": "One", - "operator": "Telenor Montenegro", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Telenor, ProMonte GSM; moved to MCC 297 MNC 01 (Montenegro) on 11 November 2011" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "03", - "brand": "mt:s", - "operator": "Telekom Srbija", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / TETRA", - "notes": null - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "04", - "brand": "T-Mobile CG", - "operator": "T-Mobile Montenegro LLC", - "status": "Not operational", - "bands": "GSM", - "notes": "Former MoNet GSM; moved to MCC 297 MNC 02 (Montenegro)" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "05", - "brand": "A1 SRB", - "operator": "A1 Srbija d.o.o.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "Former Vip Mobile" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "07", - "brand": "Orion", - "operator": "Orion Telekom", - "status": "Not operational", - "bands": "CDMA 450", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "09", - "brand": "Vectone Mobile", - "operator": "MUNDIO MOBILE d.o.o.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "11", - "brand": "Globaltel", - "operator": "GLOBALTEL d.o.o.", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses A1" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "20", - "brand": "A1 SRB", - "operator": "A1 Srbija d.o.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Vip Mobile" - }, - { - "type": "National", - "countryName": "Serbia", - "countryCode": "RS", - "mcc": "220", - "mnc": "21", - "brand": null, - "operator": "Infrastruktura železnice Srbije a.d.", - "status": "Unknown", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "01", - "brand": "Orange", - "operator": "Orange Slovensko", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Former Globtel" - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "02", - "brand": "Telekom", - "operator": "Slovak Telekom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 3700 / 5G 2100", - "notes": "Former Eurotel / T-Mobile" - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "03", - "brand": "4ka", - "operator": "SWAN Mobile, a.s.", - "status": "Operational", - "bands": "LTE 1800 / TD-LTE 3500 / TD-LTE 3700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "04", - "brand": "Telekom", - "operator": "Slovak Telekom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Former T-Mobile" - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "05", - "brand": "Orange", - "operator": "Orange Slovensko", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "06", - "brand": "O2", - "operator": "O2 Slovakia", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / TD-LTE 3500 / TD-LTE 3700 / 5G 3500", - "notes": "Former Telefónica O2 Slovakia" - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "07", - "brand": "Orange", - "operator": "Orange Slovensko", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Towercom" - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "08", - "brand": "Unimobile", - "operator": "Uniphone, s.r.o.", - "status": "Testing", - "bands": "MVNO", - "notes": "Former IPfon, s.r.o." - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "09", - "brand": null, - "operator": "DSI DATA, a.s.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "10", - "brand": null, - "operator": "HMZ RÁDIOKOMUNIKÁCIE, spol. s r.o.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "50", - "brand": "Telekom", - "operator": "Slovak Telekom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Slovakia", - "countryCode": "SK", - "mcc": "231", - "mnc": "99", - "brand": "ŽSR", - "operator": "Železnice Slovenskej Republiky", - "status": "Operational", - "bands": "GSM-R", - "notes": "Railway communication and signalling" - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "10", - "brand": null, - "operator": "SŽ - Infrastruktura, d.o.o.", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "11", - "brand": null, - "operator": "BeeIN d.o.o.", - "status": "Unknown", - "bands": "5G 700", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "20", - "brand": null, - "operator": "COMPATEL Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "21", - "brand": null, - "operator": "NOVATEL d.o.o.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "22", - "brand": null, - "operator": "Mobile One Ltd.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "40", - "brand": "A1 SI", - "operator": "A1 Slovenija", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "Former Si.mobil" - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "41", - "brand": "Mobitel", - "operator": "Telekom Slovenije", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2600 / 5G 3600", - "notes": "Used by IPKO network" - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "64", - "brand": "T-2", - "operator": "T-2 d.o.o.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 2100 / 5G 3600", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "70", - "brand": "Telemach", - "operator": "Tušmobil d.o.o.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Slovenia", - "countryCode": "SI", - "mcc": "293", - "mnc": "86", - "brand": null, - "operator": "ELEKTRO GORENJSKA, d.d", - "status": "Unknown", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "01", - "brand": "Vodafone", - "operator": "Vodafone Spain", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "02", - "brand": "Fibracat", - "operator": "Fibracat Telecom SLU", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": "Some MVNO use this MNC (Fibracat, Altecom, Aircom, Anxanet, Netports)" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "03", - "brand": "Orange", - "operator": "Orange Espagne S.A.U", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "Also use MNC 33; Some MVNO use this MNC (Hualong, The Phone House Spain, CABLE movil, SUOP)" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "04", - "brand": "Yoigo", - "operator": "Xfera Moviles SA", - "status": "Operational", - "bands": "LTE 1800 / LTE 2100 / 5G 3500", - "notes": "Acquired by Grupo MÁSMÓVIL; used by MÁSMÓVIL, Yoigo, Pepephone, Euskaltel, móbilR, TeleCable and LlamaYa; roams on Orange always for 2G/3G and 4G where there is no Yoigo coverage" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "05", - "brand": "Movistar", - "operator": "Telefónica Móviles España", - "status": "Operational", - "bands": "MVNO", - "notes": "Used by resellers" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "06", - "brand": "Vodafone", - "operator": "Vodafone Spain", - "status": "Operational", - "bands": "MVNO", - "notes": "Used by resellers (e.g. Lowi - Vodafone's own low cost virtual operator, Lebara, Hits)" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "07", - "brand": "Movistar", - "operator": "Telefónica Móviles España", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500 / 5G 26000", - "notes": "Used by Movistar and O₂ Spain - Movistar's own low cost virtual operator; UMTS to shut down 2025" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "08", - "brand": "Euskaltel", - "operator": null, - "status": "Operational", - "bands": "MVNO", - "notes": "Acquired by Grupo MÁSMÓVIL; Some MVNO use this MNC (RACC)" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "09", - "brand": "Orange", - "operator": "Orange Espagne S.A.U", - "status": "Operational", - "bands": "MVNO", - "notes": "Used by resellers" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "10", - "brand": null, - "operator": "ZINNIA TELECOMUNICACIONES, S.L.U.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Operadora de Telecomunicaciones Opera SL" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "11", - "brand": null, - "operator": "TELECOM CASTILLA-LA MANCHA, S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Orange (Orange Espagne S.A.U)" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "12", - "brand": null, - "operator": "VENUS MOVIL, S.L. UNIPERSONAL", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Contacta Servicios Avanzados de Telecomunicaciones SL; SAC CONVERGENT AGGREGATION SERVICES" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "13", - "brand": null, - "operator": "SYMA MOBILE ESPAÑA, S.L.", - "status": "Not operational", - "bands": "MVNO", - "notes": "Former Incotel Ingeniera y Consultaria; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "14", - "brand": null, - "operator": "AVATEL MÓVIL, S.L.U.", - "status": "Operational", - "bands": "WiMAX", - "notes": "Former Incotel Servicioz Avanzados SL" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "15", - "brand": "BT", - "operator": "BT Group España Compañia de Servicios Globales de Telecomunicaciones S.A.U.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "16", - "brand": "TeleCable", - "operator": "R Cable y Telecomunicaciones Galicia S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "Acquired by Euskaltel" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "17", - "brand": "Móbil R", - "operator": "R Cable y Telecomunicaciones Galicia S.A.", - "status": "Operational", - "bands": "MVNO / 5G", - "notes": "Acquired by Euskaltel; 5G for fixed wireless" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "18", - "brand": "ONO", - "operator": "Vodafone Spain", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn; acquired by Vodafone" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "19", - "brand": "Simyo", - "operator": "Orange España Virtual Sl.", - "status": "Operational", - "bands": "MVNO", - "notes": "Acquired by Orange" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "20", - "brand": "Fonyou", - "operator": "Fonyou Telecom S.L.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "21", - "brand": "Jazztel", - "operator": "Orange Espagne S.A.U.", - "status": "Not operational", - "bands": "MVNO", - "notes": "Acquired by Orange in 2014; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "22", - "brand": "DIGI mobil", - "operator": "Best Spain Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "23", - "brand": null, - "operator": "Xfera Moviles S.A.U.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "24", - "brand": null, - "operator": "VODAFONE ESPAÑA, S.A.U.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Eroski Móvil España, acquired by Vodafone in Feb 2018; some MVNOs use this MNC (Orbitel, Vizzavi)" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "25", - "brand": null, - "operator": "Xfera Moviles S.A.U.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Lycamobile" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "26", - "brand": null, - "operator": "Lleida Networks Serveis Telemátics, SL", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "27", - "brand": "Truphone", - "operator": "SCN Truphone, S.L.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "28", - "brand": "Murcia4G", - "operator": "Consorcio de Telecomunicaciones Avanzadas, S.A.", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": "LTE band 38" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "29", - "brand": null, - "operator": "Xfera Moviles S.A.U.", - "status": "Operational", - "bands": "TD-LTE 3500", - "notes": "Former NEO-SKY 2002, S.A." - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "30", - "brand": null, - "operator": "Compatel Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "31", - "brand": null, - "operator": "Red Digital De Telecomunicaciones de las Islas Baleares, S.L.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "32", - "brand": "Tuenti", - "operator": "Telefónica Móviles España", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn, replaced by MNC 05" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "33", - "brand": null, - "operator": "Xfera Móviles, S.A.U.", - "status": "Not operational", - "bands": "WiMAX", - "notes": "Former Eurona Wireless Telecom; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "34", - "brand": null, - "operator": "Aire Networks del Mediterráneo, S.L.U.", - "status": "Operational", - "bands": "LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "35", - "brand": null, - "operator": "INGENIUM OUTSOURCING SERVICES, S.L.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "36", - "brand": null, - "operator": "ALAI OPERADOR DE TELECOMUNICACIONES, S.L", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former OPEN CABLE TELECOMUNICACIONES, S.L." - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "37", - "brand": null, - "operator": "Vodafone Spain", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "38", - "brand": null, - "operator": "Telefónica Móviles España, S.A.U.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "51", - "brand": "ADIF", - "operator": "Administrador de Infraestructuras Ferroviarias", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "700", - "brand": null, - "operator": "Iberdrola", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Spain", - "countryCode": "ES", - "mcc": "214", - "mnc": "701", - "brand": null, - "operator": "Endesa", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "01", - "brand": "Telia", - "operator": "Telia Sverige AB", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "02", - "brand": "3", - "operator": "HI3G Access AB", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 2600 / TD-5G 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "03", - "brand": "Net 1", - "operator": "Teracom AB", - "status": "Operational", - "bands": "LTE 450", - "notes": "Former Nordisk Mobiltelefon, Ice.net; CDMA 450 shut down" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "04", - "brand": "SWEDEN", - "operator": "3G Infrastructure Services AB", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Owned by Hi3G Access (3) and Telenor. Not available in major cities since the owners operate their own city networks." - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "05", - "brand": "Sweden 3G", - "operator": "Svenska UMTS-Nät AB", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Owned by Telia and Tele2. Available all over Sweden." - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "06", - "brand": "Telenor", - "operator": "Telenor Sverige AB", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Former Vodafone Sweden" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "07", - "brand": "Tele2", - "operator": "Tele2 Sverige AB", - "status": "Operational", - "bands": "UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "MOCN r6 network" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "08", - "brand": "Telenor", - "operator": "Telenor Sverige AB", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Merged with Tele2 into Net4Mobility" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "09", - "brand": "Com4", - "operator": "Communication for Devices in Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former djuice (Telenor MVNO)" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "10", - "brand": "Spring Mobil", - "operator": "Tele2 Sverige AB", - "status": "Operational", - "bands": null, - "notes": "Only used on femto- and nanocells" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "11", - "brand": null, - "operator": "ComHem AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Lindholmen Science Park AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "12", - "brand": "Lycamobile", - "operator": "Lycamobile Sweden Limited", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "13", - "brand": null, - "operator": "Bredband2 Företag AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltele Företag Sverige AB, A3 Företag AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "14", - "brand": null, - "operator": "Tele2 Sverige AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former TDC Sverige AB (MVNO)" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "15", - "brand": null, - "operator": "Sierra Wireless Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Wireless Maingate Nordic AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "16", - "brand": null, - "operator": "42 Telecom AB", - "status": "Operational", - "bands": "GSM", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "17", - "brand": "Gotanet", - "operator": "Götalandsnätet AB", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "18", - "brand": null, - "operator": "Generic Mobile Systems Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "19", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile (Sweden) Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO in Telia's network" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "20", - "brand": null, - "operator": "Sierra Wireless Messaging AB", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Wireless Maingate Messaging Services AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "21", - "brand": "MobiSir", - "operator": "Trafikverket ICT", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "22", - "brand": null, - "operator": "EuTel AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "23", - "brand": null, - "operator": "Infobip Limited (UK)", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "24", - "brand": "Sweden 2G", - "operator": "Net4Mobility HB", - "status": "Operational", - "bands": "GSM 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "LTE1800 only available in major cities; owned by Telenor and Tele2." - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "25", - "brand": null, - "operator": "Monty UK Global Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Digitel Mobile Srl" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "26", - "brand": null, - "operator": "Twilio Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Beepsend AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "27", - "brand": null, - "operator": "GlobeTouch AB", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Fogg Mobile AB; M2M services only" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "28", - "brand": null, - "operator": "LINK Mobile A/S", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former CoolTEL Aps; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "29", - "brand": null, - "operator": "Mercury International Carrier Services AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "30", - "brand": null, - "operator": "NextGen Mobile Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "31", - "brand": null, - "operator": "RebTel Network AB", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Mobimax AB; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "32", - "brand": null, - "operator": "Compatel Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "33", - "brand": null, - "operator": "Mobile Arts AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "34", - "brand": null, - "operator": "Trafikverket centralfunktion IT", - "status": "Unknown", - "bands": "Unknown", - "notes": "Formerly Tigo, Pro Net;" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "35", - "brand": null, - "operator": "42 Telecom LTD", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "36", - "brand": null, - "operator": "interactive digital media GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "37", - "brand": null, - "operator": "Sinch Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former CLX Networks AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "38", - "brand": "Voxbone", - "operator": "Voxbone mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "39", - "brand": null, - "operator": "Primlight AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former iCentrex Sweden AB, Borderlight AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "40", - "brand": null, - "operator": "Netmore Group AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former ReWiCom Scandinavia AB, North net connect AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "41", - "brand": null, - "operator": "Telenor Sverige AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Shyam Telecom UK" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "42", - "brand": null, - "operator": "Telenor Connexion AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "43", - "brand": null, - "operator": "MobiWeb Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "44", - "brand": null, - "operator": "Telenabler AB", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Limitless Mobile AB" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "45", - "brand": null, - "operator": "Spirius AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "46", - "brand": "Viahub", - "operator": "SMS Provider Corp.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "47", - "brand": null, - "operator": "Viatel Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "48", - "brand": null, - "operator": "Tismi BV", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "49", - "brand": null, - "operator": "Telia Sverige AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "60", - "brand": null, - "operator": "Västra Götalandsregionen", - "status": "Unknown", - "bands": "Unknown", - "notes": "Temporary assigned until 31 December 2026; former Telefonaktiebolaget LM Ericsson" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "61", - "brand": null, - "operator": "MessageBird B.V.", - "status": "Not operational", - "bands": "Unknown", - "notes": "temporary license until 3 November 2019" - }, - { - "type": "National", - "countryName": "Sweden", - "countryCode": "SE", - "mcc": "240", - "mnc": "63", - "brand": "FTS", - "operator": "Fink Telecom Services", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "01", - "brand": "Swisscom", - "operator": "Swisscom AG", - "status": "Operational", - "bands": "UMTS 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500", - "notes": "UMTS 2100 shut down Nov 2019, GSM April 2021; UMTS 900 shutdown planned for 2024" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "02", - "brand": "Sunrise", - "operator": "Sunrise UPC", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "GSM shut down Jan 2023" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "03", - "brand": "Salt", - "operator": "Salt Mobile SA", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500", - "notes": "Former Orange; GSM shut down June 2020" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "05", - "brand": null, - "operator": "Comfone AG", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Togewanet AG" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "06", - "brand": "SBB-CFF-FFS", - "operator": "SBB AG", - "status": "Operational", - "bands": "GSM-R 900", - "notes": "railways communication" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "07", - "brand": "IN&Phone", - "operator": "IN&Phone SA", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "MNC withdrawn, bankrupt in 2012" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "08", - "brand": "Tele4u", - "operator": "Sunrise Communications AG", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Former Tele2" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "09", - "brand": null, - "operator": "Comfone AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "10", - "brand": null, - "operator": "Stadt Polizei Zürich", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "11", - "brand": null, - "operator": "Swisscom Broadcast AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "12", - "brand": "Sunrise", - "operator": "Sunrise Communications AG", - "status": "Not operational", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "50", - "brand": null, - "operator": "3G Mobile AG", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "51", - "brand": null, - "operator": "relario AG", - "status": "Operational", - "bands": "MVNO", - "notes": "Former BebbiCell AG" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "52", - "brand": "Barablu", - "operator": "Barablu", - "status": "Not operational", - "bands": null, - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "53", - "brand": "upc cablecom", - "operator": "Sunrise UPC GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "54", - "brand": "Lycamobile", - "operator": "Lycamobile AG", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "55", - "brand": null, - "operator": "WeMobile SA", - "status": "Unknown", - "bands": null, - "notes": "SMS relay only" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "56", - "brand": null, - "operator": "SMSRelay AG", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "57", - "brand": null, - "operator": "Mitto AG", - "status": "Unknown", - "bands": null, - "notes": "SMS relay only" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "58", - "brand": "beeone", - "operator": "Beeone Communications SA", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "59", - "brand": "Vectone", - "operator": "Mundio Mobile Limited", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "60", - "brand": "Sunrise", - "operator": "Sunrise Communications AG", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former network sharing test with Salt Mobile" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "61", - "brand": null, - "operator": "Compatel Ltd.", - "status": "Not operational", - "bands": null, - "notes": "SMS relay only; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "62", - "brand": null, - "operator": "Telecom26 AG", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "63", - "brand": "FTS", - "operator": "Fink Telecom Services", - "status": "Operational", - "bands": "Unknown", - "notes": "SMS relay only" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "64", - "brand": null, - "operator": "Nth AG", - "status": "Operational", - "bands": "MVNO", - "notes": "Mobile payment solutions" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "65", - "brand": null, - "operator": "Nexphone AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "66", - "brand": null, - "operator": "Inovia Services SA", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "67", - "brand": null, - "operator": "Datatrade Managed AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "68", - "brand": null, - "operator": "Intellico AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "69", - "brand": null, - "operator": "MTEL Schweiz GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "70", - "brand": null, - "operator": "Tismi BV", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "98", - "brand": null, - "operator": "Etablissement Cantonal d'Assurance", - "status": "Unknown", - "bands": "Unknown", - "notes": "Pilot project" - }, - { - "type": "National", - "countryName": "Switzerland", - "countryCode": "CH", - "mcc": "228", - "mnc": "99", - "brand": null, - "operator": "Swisscom Broadcast AG", - "status": "Not operational", - "bands": null, - "notes": "Test network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Turkey", - "countryCode": "TR", - "mcc": "286", - "mnc": "01", - "brand": "Turkcell", - "operator": "Turkcell Iletisim Hizmetleri A.S.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Turkey", - "countryCode": "TR", - "mcc": "286", - "mnc": "02", - "brand": "Vodafone", - "operator": "Vodafone Turkey", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600", - "notes": "Formerly known as Telsim" - }, - { - "type": "National", - "countryName": "Turkey", - "countryCode": "TR", - "mcc": "286", - "mnc": "03", - "brand": "Türk Telekom", - "operator": "Türk Telekom", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / TD-LTE 2600", - "notes": "Former Aria, merged with Aycell to form Avea" - }, - { - "type": "National", - "countryName": "Turkey", - "countryCode": "TR", - "mcc": "286", - "mnc": "04", - "brand": "Aycell", - "operator": "Aycell", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged into Aria to form Avea" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "01", - "brand": "Vodafone", - "operator": "PRJSC \"VF Ukraine\"", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "Former UMC, MTS; CDMA 450 shut down June 2018" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "02", - "brand": "Kyivstar", - "operator": "PRJSC \"Kyivstar\"", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "Former Beeline, WellCOM, URS; taken over by Kyivstar" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "03", - "brand": "Kyivstar", - "operator": "PRJSC \"Kyivstar\"", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / TD-LTE 2300 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "04", - "brand": "Intertelecom", - "operator": "Intertelecom LLC", - "status": "Operational", - "bands": "CDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "05", - "brand": "Kyivstar", - "operator": "PRJSC \"Kyivstar\"", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Former Golden Telecom; taken over by Kyivstar; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "06", - "brand": "lifecell", - "operator": "lifecell LLC", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "Former life:) / Astelit" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "07", - "brand": "3Mob; Lycamobile", - "operator": "Trimob LLC", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Former Utel, GSM / UMTS roaming with Vodafone" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "08", - "brand": null, - "operator": "JSC Ukrtelecom", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC assigned in 2019 for 2 years" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "09", - "brand": null, - "operator": "PRJSC \"Farlep-Invest\"", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC assigned in 2019 for 2 years; part of Vega Telecommunications Group" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "10", - "brand": null, - "operator": "Atlantis Telecom LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "21", - "brand": "PEOPLEnet", - "operator": "PRJSC \"Telesystems of Ukraine\"", - "status": "Operational", - "bands": "CDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "23", - "brand": "CDMA Ukraine", - "operator": "Intertelecom LLC", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Taken over by Intertelecom; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "25", - "brand": "NEWTONE", - "operator": "PRJSC \"Telesystems of Ukraine\"", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Taken over by PEOPLEnet; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "701", - "brand": null, - "operator": "Ukrainian Special Systems", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ukraine", - "countryCode": "UA", - "mcc": "255", - "mnc": "99", - "brand": "Phoenix; MKS (ex. Lugacom)", - "operator": "State Unitary Enterprise of DPR \"Republican Telecommunications Operator\"; OOO \"MKS\"", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600", - "notes": "\"Donetsk People's Republic\" and \"Luhansk People's Republic\" only; MNC not officially assigned. Moved to Russia's MCC shortly after the annexation of Donetsk, Luhansk, Kherson and Zaporizhzhia oblasts." - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "00", - "brand": "BT", - "operator": "BT Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "01", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Previously Mapesbury Communications Ltd.; uses EE network" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "02", - "brand": "O2 (UK)", - "operator": "Telefónica Europe", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "03", - "brand": "Airtel-Vodafone", - "operator": "Jersey Airtel Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Guernsey, Jersey" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "04", - "brand": "FMS Solutions Ltd", - "operator": "FMS Solutions Ltd", - "status": "Reserved", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "05", - "brand": null, - "operator": "Spitfire Network Services Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former COLT Mobile Telecommunications Ltd." - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "06", - "brand": null, - "operator": "Internet Computer Bureau Limited", - "status": "Not operational", - "bands": null, - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "07", - "brand": "Vodafone UK", - "operator": "Vodafone", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Former Cable & Wireless Worldwide; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "08", - "brand": "BT OnePhone", - "operator": "BT OnePhone (UK) Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses the EE Network" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "09", - "brand": null, - "operator": "Tismi BV", - "status": "Unknown", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "10", - "brand": "O2 (UK)", - "operator": "Telefónica Europe", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "11", - "brand": "O2 (UK)", - "operator": "Telefónica Europe", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "12", - "brand": "Railtrack", - "operator": "Network Rail Infrastructure Ltd", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "13", - "brand": "Railtrack", - "operator": "Network Rail Infrastructure Ltd", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "14", - "brand": null, - "operator": "Link Mobility UK Ltd", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Former Hay Systems Ltd" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "15", - "brand": "Vodafone UK", - "operator": "Vodafone", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 900 / 5G 2100 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "16", - "brand": "Talk Talk", - "operator": "TalkTalk Communications Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Formerly Opal Tel Ltd; uses Vodafone network" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "17", - "brand": null, - "operator": "FleXtel Limited", - "status": "Not operational", - "bands": null, - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "18", - "brand": "Cloud9", - "operator": "Wireless Logic Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Isle of Man network shut down" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "19", - "brand": "PMN", - "operator": "Teleware plc", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Private GSM; roaming with Vodafone" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "20", - "brand": "3", - "operator": "Hutchison 3G UK Ltd", - "status": "Operational", - "bands": "UMTS 2100 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": "National roaming with Orange (UK)'s 2G network" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "21", - "brand": null, - "operator": "LogicStar Ltd", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "22", - "brand": null, - "operator": "Telesign Mobile Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Routo Telecommunications Limited" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "23", - "brand": null, - "operator": "Icron Network Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "24", - "brand": "Greenfone", - "operator": "Stour Marine Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Stour Marine network" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "25", - "brand": "Truphone", - "operator": "Truphone", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Vodafone network" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "26", - "brand": "Lycamobile", - "operator": "Lycamobile UK Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses O2 Network / Telefónica Europe" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "27", - "brand": "Teleena", - "operator": "Tata Communications Move UK Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "28", - "brand": null, - "operator": "Marathon Telecom Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Holds unused spectrum in Jersey" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "29", - "brand": "aql", - "operator": "(aq) Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "30", - "brand": "EE", - "operator": "EE", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / / 5G 3500", - "notes": "Previously owned by Deutsche Telekom; used by MVNOs Asda Mobile & Virgin Mobile" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "31", - "brand": "EE", - "operator": "EE", - "status": "Allocated", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "32", - "brand": "EE", - "operator": "EE", - "status": "Allocated", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "33", - "brand": "EE", - "operator": "EE", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / / 5G 3500", - "notes": "Previously owned by Orange S.A." - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "34", - "brand": "EE", - "operator": "EE", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / / 5G 3500", - "notes": "Previously owned by Orange S.A." - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "35", - "brand": null, - "operator": "JSC Ingenium (UK) Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "36", - "brand": "Sure Mobile", - "operator": "Sure Isle of Man Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": "Isle of Man; former Cable & Wireless" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "37", - "brand": null, - "operator": "Synectiv Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "38", - "brand": "Virgin Mobile", - "operator": "Virgin Media", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "39", - "brand": null, - "operator": "Gamma Telecom Holdings Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former SSE Energy Supply Limited" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "40", - "brand": null, - "operator": "Mass Response Service GmbH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "50", - "brand": "JT", - "operator": "JT Group Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Guernsey, Jersey; former Wave Telecom" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "51", - "brand": "Relish", - "operator": "UK Broadband Limited", - "status": "Operational", - "bands": "TD-LTE 3500 / TD-LTE 3700", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "52", - "brand": null, - "operator": "Shyam Telecom UK Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "53", - "brand": "Mobile-X", - "operator": "Tango Networks UK Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Limitless Mobile" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "54", - "brand": "iD Mobile", - "operator": "The Carphone Warehouse Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Three UK" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "55", - "brand": "Sure Mobile", - "operator": "Sure (Guernsey) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Guernsey, Jersey; former Cable & Wireless" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "56", - "brand": null, - "operator": "National Cyber Security Centre", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former CESG" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "57", - "brand": null, - "operator": "Sky UK Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "58", - "brand": "Pronto GSM", - "operator": "Manx Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "Isle of Man" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "59", - "brand": null, - "operator": "Limitless Mobile Ltd", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "70", - "brand": null, - "operator": "AMSUK Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "71", - "brand": null, - "operator": "Home Office", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "72", - "brand": "Hanhaa Mobile", - "operator": "Hanhaa Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "M2M applications" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "73", - "brand": null, - "operator": "Bluewave Communications Ltd", - "status": "Operational", - "bands": "TD-LTE 3500", - "notes": "Isle of Man" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "74", - "brand": null, - "operator": "Pareteum Europe B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "75", - "brand": null, - "operator": "Mass Response Service GmbH", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "76", - "brand": "BT", - "operator": "BT Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "77", - "brand": "Vodafone UK", - "operator": "Vodafone United Kingdom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "78", - "brand": "Airwave", - "operator": "Airwave Solutions Ltd", - "status": "Operational", - "bands": "TETRA", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "79", - "brand": "UKTL", - "operator": "UK Telecoms Lab", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "86", - "brand": null, - "operator": "EE", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "234", - "mnc": "88", - "brand": "telet", - "operator": "Telet Research (N.I.) Limited", - "status": "Operational", - "bands": "GSM 1800/LTE 1800/ LTE 2600/ 5G 2600/ 5G 3800", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "00", - "brand": "Vectone Mobile", - "operator": "Mundio Mobile Limited", - "status": "Unknown", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "01", - "brand": null, - "operator": "EE", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "02", - "brand": null, - "operator": "EE", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "03", - "brand": "Relish", - "operator": "UK Broadband Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "04", - "brand": null, - "operator": "University of Strathclyde", - "status": "Unknown", - "bands": "5G", - "notes": "for more info, see StrathSDR" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "06", - "brand": null, - "operator": "University of Strathclyde", - "status": "Unknown", - "bands": "5G", - "notes": "for more info, see StrathSDR" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "07", - "brand": null, - "operator": "University of Strathclyde", - "status": "Unknown", - "bands": "5G", - "notes": "for more info, see StrathSDR" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "08", - "brand": null, - "operator": "Spitfire Network Services Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "77", - "brand": "BT", - "operator": "BT Group", - "status": "Unknown", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "88", - "brand": "telet", - "operator": "Telet Research (N.I.) Limited", - "status": "Operational", - "bands": "LTE / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "91", - "brand": "Vodafone UK", - "operator": "Vodafone United Kingdom", - "status": "Unknown", - "bands": null, - "notes": "Spitfire Network Services Limited" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "92", - "brand": "Vodafone UK", - "operator": "Vodafone United Kingdom", - "status": "Not operational", - "bands": null, - "notes": "Former Cable & Wireless UK; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "94", - "brand": null, - "operator": "Hutchison 3G UK Ltd", - "status": "Unknown", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "United Kingdom", - "countryCode": "GB", - "mcc": "235", - "mnc": "95", - "brand": null, - "operator": "Network Rail Infrastructure Limited", - "status": "Test Network", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Anguilla (United Kingdom)", - "countryCode": "AI", - "mcc": "365", - "mnc": "010", - "brand": null, - "operator": "Digicel", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Anguilla (United Kingdom)", - "countryCode": "AI", - "mcc": "365", - "mnc": "840", - "brand": "FLOW", - "operator": "Cable & Wireless", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Antigua and Barbuda", - "countryCode": "AG", - "mcc": "344", - "mnc": "030", - "brand": "APUA", - "operator": "Antigua Public Utilities Authority", - "status": "Operational", - "bands": "GSM 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Antigua and Barbuda", - "countryCode": "AG", - "mcc": "344", - "mnc": "050", - "brand": "Digicel", - "operator": "Antigua Wireless Ventures Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1900 / UMTS 850 / LTE 700", - "notes": "LTE band 17" - }, - { - "type": "National", - "countryName": "Antigua and Barbuda", - "countryCode": "AG", - "mcc": "344", - "mnc": "920", - "brand": "FLOW", - "operator": "Cable & Wireless Caribbean Cellular (Antigua) Limited", - "status": "Operational", - "bands": "GSM 850 / GSM 1800 / GSM 1900 / UMTS 850 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Antigua and Barbuda", - "countryCode": "AG", - "mcc": "344", - "mnc": "930", - "brand": null, - "operator": "AT&T Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Aruba (Kingdom of the Netherlands)", - "countryCode": "AW", - "mcc": "363", - "mnc": "01", - "brand": "SETAR", - "operator": "Servicio di Telecomunicacion di Aruba", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / GSM 1900 / UMTS 2100 / LTE 1800 / TDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Aruba (Kingdom of the Netherlands)", - "countryCode": "AW", - "mcc": "363", - "mnc": "02", - "brand": "Digicel", - "operator": "Digicel Aruba", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Bahamas", - "countryCode": "BS", - "mcc": "364", - "mnc": "39", - "brand": "BTC", - "operator": "The Bahamas Telecommunications Company Ltd (BaTelCo)", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1700", - "notes": "LTE band 17 and 4" - }, - { - "type": "National", - "countryName": "Bahamas", - "countryCode": "BS", - "mcc": "364", - "mnc": "49", - "brand": "Aliv", - "operator": "Cable Bahamas Ltd", - "status": "Operational", - "bands": "UMTS 850 / LTE 700 / LTE 1700", - "notes": "Former NewCo2015; LTE bands 13 and 4; license also covers Band 2" - }, - { - "type": "National", - "countryName": "Barbados", - "countryCode": "BB", - "mcc": "342", - "mnc": "600", - "brand": "FLOW", - "operator": "LIME (formerly known as Cable & Wireless)", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / LTE 850 / LTE 1900", - "notes": "LTE bands 5 / 2" - }, - { - "type": "National", - "countryName": "Barbados", - "countryCode": "BB", - "mcc": "342", - "mnc": "646", - "brand": null, - "operator": "KW Telecommunications Inc.", - "status": "Not operational", - "bands": "LTE 700", - "notes": "LTE band 13" - }, - { - "type": "National", - "countryName": "Barbados", - "countryCode": "BB", - "mcc": "342", - "mnc": "750", - "brand": "Digicel", - "operator": "Digicel (Barbados) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1900", - "notes": "LTE bands 17 / 2" - }, - { - "type": "National", - "countryName": "Barbados", - "countryCode": "BB", - "mcc": "342", - "mnc": "800", - "brand": "Ozone", - "operator": "Ozone Wireless Inc.", - "status": "Not operational", - "bands": "LTE 700", - "notes": "LTE band 13; MNC withdrawn; shut down July 2019" - }, - { - "type": "National", - "countryName": "Barbados", - "countryCode": "BB", - "mcc": "342", - "mnc": "820", - "brand": null, - "operator": "Neptune Communications Inc.", - "status": "Not operational", - "bands": "LTE 700", - "notes": "LTE band 14; former Sunbeach Communications" - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "310", - "mnc": "59", - "brand": "Cellular One", - "operator": null, - "status": "Operational", - "bands": "CDMA", - "notes": "uses USA MCC" - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "338", - "mnc": "050", - "brand": "Digicel Bermuda", - "operator": null, - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700", - "notes": "uses Jamaica MCC" - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "00", - "brand": "One", - "operator": "Bermuda Digital Communications Ltd.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / LTE 700", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "007", - "brand": null, - "operator": "Paradise Mobile", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "01", - "brand": "Digicel Bermuda", - "operator": "Telecommunications (Bermuda & West Indies) Ltd", - "status": "Reserved", - "bands": "GSM 1900", - "notes": "uses Jamaica MNC/MCC (338-050)" - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "02", - "brand": "Mobility", - "operator": "M3 Wireless", - "status": "Not operational", - "bands": "GSM 1900 / UMTS", - "notes": "Merged with CellOne in 2011" - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "05", - "brand": null, - "operator": "Telecom Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "11", - "brand": null, - "operator": "Deltronics", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bermuda", - "countryCode": "BM", - "mcc": "350", - "mnc": "15", - "brand": null, - "operator": "FKB Net Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "British Virgin Islands (United Kingdom)", - "countryCode": "VG", - "mcc": "348", - "mnc": "170", - "brand": "FLOW", - "operator": "Cable & Wireless", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "British Virgin Islands (United Kingdom)", - "countryCode": "VG", - "mcc": "348", - "mnc": "370", - "brand": null, - "operator": "BVI Cable TV Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "British Virgin Islands (United Kingdom)", - "countryCode": "VG", - "mcc": "348", - "mnc": "570", - "brand": "CCT Boatphone", - "operator": "Caribbean Cellular Telephone", - "status": "Operational", - "bands": "GSM 900 / GSM 1900 / UMTS 850 / LTE 900 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "British Virgin Islands (United Kingdom)", - "countryCode": "VG", - "mcc": "348", - "mnc": "770", - "brand": "Digicel", - "operator": "Digicel (BVI) Limited", - "status": "Operational", - "bands": "GSM 1800 / GSM 1900 / UMTS 1900 / LTE 700 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "100", - "brand": "dotmobile", - "operator": "Data on Tap Inc.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "130", - "brand": "Xplore", - "operator": "Xplore Inc.", - "status": "Operational", - "bands": "TD-LTE 3500 / WiMAX / 5G 3500", - "notes": "Former Xplornet" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "131", - "brand": "Xplore", - "operator": "Xplore Inc.", - "status": "Operational", - "bands": "TD-LTE 3500 / WiMAX / 5G 3500", - "notes": "Former Xplornet" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "140", - "brand": "Fibernetics", - "operator": "Fibernetics Corp.", - "status": "Not operational", - "bands": "LTE 1900", - "notes": "Ontario" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "150", - "brand": null, - "operator": "Cogeco Connexion Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "151", - "brand": null, - "operator": "Cogeco Connexion Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "152", - "brand": null, - "operator": "Cogeco Connexion Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "220", - "brand": "Telus Mobility, Koodo Mobile, Public Mobile", - "operator": "Telus Mobility", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600 / 5G 1700 / 5G 3500", - "notes": "Used in IMSI to identify Telus subscribers on shared network 302-880" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "221", - "brand": "Telus", - "operator": "Telus Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "222", - "brand": "Telus", - "operator": "Telus Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "230", - "brand": null, - "operator": "ISP Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "250", - "brand": "ALO", - "operator": "ALO Mobile Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "270", - "brand": "EastLink", - "operator": "Bragg Communications", - "status": "Operational", - "bands": "UMTS 1700 / LTE 700 / LTE 1700 / 5G 600", - "notes": "Nova Scotia and PEI; LTE bands 13, 4" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "290", - "brand": "Airtel Wireless", - "operator": "Airtel Wireless", - "status": "Not operational", - "bands": "iDEN 900", - "notes": "Calgary, AB; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "300", - "brand": "ECOTEL", - "operator": "Ecotel inc.", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 2600", - "notes": "private LTE networks" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "310", - "brand": "ECOTEL", - "operator": "Ecotel inc.", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 2600", - "notes": "private LTE networks" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "320", - "brand": "Rogers Wireless", - "operator": "Rogers Communications", - "status": "Operational", - "bands": "UMTS 1700", - "notes": "Former Mobilicity" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "330", - "brand": null, - "operator": "Blue Canada Wireless Inc.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "340", - "brand": "Execulink", - "operator": "Execulink", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "350", - "brand": null, - "operator": "Naskapi Imuun Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former FIRST Networks" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "360", - "brand": "MiKe", - "operator": "Telus Mobility", - "status": "Not operational", - "bands": "iDEN 800", - "notes": "iDEN shut down January 2016" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "361", - "brand": "Telus", - "operator": "Telus Mobility", - "status": "Not operational", - "bands": "CDMA 800 / CDMA 1900", - "notes": "CDMA shut down 31 May 2017; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "370", - "brand": "Fido", - "operator": "Fido Solutions (Rogers Wireless)", - "status": "Operational", - "bands": "MVNO", - "notes": "former Microcell Telecommunications" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "380", - "brand": "Keewaytinook Mobile", - "operator": "Keewaytinook Okimakanak Mobile", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900", - "notes": "Former Dryden Mobility" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "390", - "brand": "DMTS", - "operator": "Dryden Mobility", - "status": "Not operational", - "bands": "Unknown", - "notes": "Acquired by Tbaytel in 2012; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "420", - "brand": "ABC", - "operator": "A.B.C. Allen Business Communications Ltd.", - "status": "Operational", - "bands": "TD-LTE 3500", - "notes": "British Columbia" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "480", - "brand": "Qiniq", - "operator": "SSi Connexions", - "status": "Operational", - "bands": "GSM 1900 / LTE 2600", - "notes": "Nunavut" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "490", - "brand": "Freedom Mobile", - "operator": "Shaw Communications", - "status": "Operational", - "bands": "UMTS 1700 / LTE 700 / LTE 1700 / LTE 2600", - "notes": "Former Wind Mobile; LTE bands 4, 7, 13, 66" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "491", - "brand": "Freedom Mobile", - "operator": "Shaw Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "500", - "brand": "Videotron", - "operator": "Videotron", - "status": "Operational", - "bands": "UMTS 1700 / LTE 700 / LTE 1700 / 5G 600 / 5G 1700 / 5G 2600", - "notes": "LTE bands 13, 4; 5G bands n71, n66, n7" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "510", - "brand": "Videotron", - "operator": "Videotron", - "status": "Operational", - "bands": "UMTS 1700 / LTE 700 / LTE 1700 / 5G 600 / 5G 1700 / 5G 2600", - "notes": "LTE bands 13, 4" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "520", - "brand": "Rogers (Vidéotron MOCN)", - "operator": "Videotron", - "status": "Operational", - "bands": "Unknown", - "notes": "Used by Vidéotron on Rogers RAN with MOCN" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "530", - "brand": "Keewaytinook Mobile", - "operator": "Keewaytinook Okimakanak Mobile", - "status": "Operational", - "bands": "GSM", - "notes": "Northwestern Ontario; also spelled Keewatinook Okimacinac" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "540", - "brand": null, - "operator": "Rovvr Communications Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "550", - "brand": null, - "operator": "Star Solutions International Inc.", - "status": "Unknown", - "bands": "LTE?", - "notes": "Private LTE" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "560", - "brand": "Lynx Mobility", - "operator": "Lynx Mobility", - "status": "Not operational", - "bands": "CDMA / GSM", - "notes": "Northern Quebec, Nunavut, Labrador; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "570", - "brand": null, - "operator": "Ligado Networks Corp.", - "status": "Unknown", - "bands": "Satellite", - "notes": "Former LightSquared" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "590", - "brand": "Quadro Mobility", - "operator": "Quadro Communications Co-op", - "status": "Operational", - "bands": "Unknown", - "notes": "Southwestern Ontario" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "600", - "brand": null, - "operator": "Iristel", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "610", - "brand": "Bell Mobility", - "operator": "Bell Mobility", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 1700 / 5G 3500", - "notes": "Used in IMSI to identify Bell subscribers on shared network 302-880; LTE bands 17, 29, 4, 2, 7" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "620", - "brand": "ICE Wireless", - "operator": "ICE Wireless", - "status": "Operational", - "bands": "UMTS 850 / GSM 1900 / LTE 850 / LTE 1900", - "notes": "Northern Canada" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "630", - "brand": "Aliant Mobility", - "operator": "Bell Aliant", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "640", - "brand": "Bell", - "operator": "Bell Mobility", - "status": "Not operational", - "bands": "CDMA 800 / CDMA 1900", - "notes": "CDMA shut down in April 2019" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "650", - "brand": "TBaytel", - "operator": "Thunder Bay Telephone", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "652", - "brand": null, - "operator": "BC Tel Mobility (Telus)", - "status": "Not operational", - "bands": "CDMA2000", - "notes": "CDMA shut down 31 May 2017; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "653", - "brand": "Telus", - "operator": "Telus Mobility", - "status": "Not operational", - "bands": "CDMA 800 / CDMA 1900", - "notes": "CDMA shut down 31 May 2017; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "655", - "brand": "MTS", - "operator": "Bell MTS", - "status": "Not operational", - "bands": "CDMA 800 / CDMA 1900", - "notes": "former Manitoba Telephone System; CDMA shut down 30 Apr 2019; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "656", - "brand": "TBay", - "operator": "Thunder Bay Telephone Mobility", - "status": "Not operational", - "bands": "CDMA", - "notes": "CDMA shut down 1 October 2014; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "657", - "brand": "Telus", - "operator": "Telus Mobility", - "status": "Not operational", - "bands": "CDMA 800 / CDMA 1900", - "notes": "CDMA shut down 31 May 2017; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "660", - "brand": "MTS", - "operator": "Bell MTS", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "670", - "brand": "CityTel Mobility", - "operator": "CityWest", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "680", - "brand": "SaskTel", - "operator": "SaskTel Mobility", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": "CDMA 850 shut down 5 July 2017" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "681", - "brand": "SaskTel", - "operator": "SaskTel Mobility", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "690", - "brand": "Bell", - "operator": "Bell Mobility", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "701", - "brand": null, - "operator": "MB Tel Mobility", - "status": "Not operational", - "bands": "CDMA2000", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "702", - "brand": null, - "operator": "MT&T Mobility (Aliant)", - "status": "Not operational", - "bands": "CDMA2000", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "703", - "brand": null, - "operator": "New Tel Mobility (Aliant)", - "status": "Not operational", - "bands": "CDMA2000", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "710", - "brand": "Globalstar", - "operator": null, - "status": "Operational", - "bands": "Satellite CDMA", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "720", - "brand": "Rogers Wireless", - "operator": "Rogers Communications", - "status": "Operational", - "bands": "UMTS 850 / LTE 600 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 600 / 5G 1700 / TD-5G 2600 / 5G 3500", - "notes": "former Rogers AT&T Wireless; LTE bands 2, 4, 5, 7, 12, 17, 25, 66, 71; 5G bands n38, n41, n66, n71, n78; GSM 1900 / UMTS 1900 was shut down 7 June 2021, GSM 850 was shut down on 31 Dec 2021" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "721", - "brand": "Rogers Wireless", - "operator": "Rogers Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "730", - "brand": "TerreStar Solutions", - "operator": "TerreStar Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "740", - "brand": "Shaw Telecom", - "operator": "Shaw Communications", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "750", - "brand": "SaskTel", - "operator": "SaskTel Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "760", - "brand": "Public Mobile", - "operator": "Telus Mobility", - "status": "Operational", - "bands": "MVNO", - "notes": "Acquired by Telus, CDMA network shut down 2014" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "770", - "brand": "TNW Wireless", - "operator": "TNW Wireless Inc.", - "status": "Operational", - "bands": "UMTS 850", - "notes": "Former Rural Com; national coverage based on iPCS technology and Wi-Nodes" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "780", - "brand": "SaskTel", - "operator": "SaskTel Mobility", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 600 / LTE 700 / LTE 850 / LTE 1700 / 5G 1700", - "notes": "Saskatchewan" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "781", - "brand": "SaskTel", - "operator": "SaskTel Mobility", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "790", - "brand": null, - "operator": "NetSet Communications", - "status": "Operational", - "bands": "WiMAX / TD-LTE 3500", - "notes": "Manitoba" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "820", - "brand": "Rogers Wireless", - "operator": "Rogers Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "848", - "brand": null, - "operator": "Vocom International Telecommunications, Inc", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "860", - "brand": "Telus", - "operator": "Telus Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "880", - "brand": "Bell / Telus / SaskTel", - "operator": "Shared Telus, Bell, and SaskTel", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "910", - "brand": null, - "operator": "Halton Regional Police Service", - "status": "Unknown", - "bands": "Unknown", - "notes": "Reserved" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "920", - "brand": "Rogers Wireless", - "operator": "Rogers Communications", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "940", - "brand": "Wightman Mobility", - "operator": "Wightman Telecom", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "990", - "brand": null, - "operator": "Ericsson Canada", - "status": "Unknown", - "bands": "Unknown", - "notes": "For testing" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "991", - "brand": null, - "operator": "Halton Regional Police Service", - "status": "Unknown", - "bands": "Unknown", - "notes": "For testing" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "996", - "brand": null, - "operator": "Powertech Labs", - "status": "Unknown", - "bands": "Unknown", - "notes": "For testing" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "997", - "brand": null, - "operator": "Powertech Labs", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Canada", - "countryCode": "CA", - "mcc": "302", - "mnc": "998", - "brand": null, - "operator": "Institut de Recherche d’Hydro-Québec", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Powertech Labs; for testing" - }, - { - "type": "National", - "countryName": "Cayman Islands (United Kingdom)", - "countryCode": "KY", - "mcc": "338", - "mnc": "05", - "brand": "Digicel", - "operator": "Digicel Cayman Ltd.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 700 / LTE 1800", - "notes": "LTE bands 13 / 3; GSM shut down July 2020" - }, - { - "type": "National", - "countryName": "Cayman Islands (United Kingdom)", - "countryCode": "KY", - "mcc": "346", - "mnc": "001", - "brand": "Logic", - "operator": "WestTel Ltd.", - "status": "Operational", - "bands": "LTE 2500", - "notes": "LTE band 41; fixed wireless access" - }, - { - "type": "National", - "countryName": "Cayman Islands (United Kingdom)", - "countryCode": "KY", - "mcc": "346", - "mnc": "140", - "brand": "FLOW", - "operator": "Cable & Wireless (Cayman Islands) Limited", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900", - "notes": "LTE bands 17 / 2" - }, - { - "type": "National", - "countryName": "Cayman Islands (United Kingdom)", - "countryCode": "KY", - "mcc": "346", - "mnc": "050", - "brand": "Digicel", - "operator": "Digicel Cayman Ltd.", - "status": "Reserved", - "bands": null, - "notes": "Uses Jamaica MCC" - }, - { - "type": "National", - "countryName": "Cuba", - "countryCode": "CU", - "mcc": "368", - "mnc": "01", - "brand": "CUBACEL", - "operator": "Empresa de Telecomunicaciones de Cuba, SA", - "status": "Operational", - "bands": "GSM 900 / GSM 850 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100", - "notes": "GSM 850 only available in limited areas (Havana, Varadero, Trinidad and Cayo Coco)" - }, - { - "type": "National", - "countryName": "Dominica", - "countryCode": "DM", - "mcc": "366", - "mnc": "020", - "brand": "Digicel", - "operator": "Digicel Group Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1900 / UMTS 900 / UMTS 1900 / LTE 700", - "notes": "Former Orange Dominica" - }, - { - "type": "National", - "countryName": "Dominica", - "countryCode": "DM", - "mcc": "366", - "mnc": "110", - "brand": "FLOW", - "operator": "Cable & Wireless", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Dominican Republic", - "countryCode": "DO", - "mcc": "370", - "mnc": "01", - "brand": "Altice", - "operator": "Altice Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / GSM 1900 / UMTS 900 / LTE 850 / LTE 900 / LTE 1700 / LTE 1900 / 5G 3500", - "notes": "Former Orange Dominicana" - }, - { - "type": "National", - "countryName": "Dominican Republic", - "countryCode": "DO", - "mcc": "370", - "mnc": "02", - "brand": "Claro", - "operator": "Compañía Dominicana de Teléfonos", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 3500", - "notes": "CDMA 1900 shut down in 2014" - }, - { - "type": "National", - "countryName": "Dominican Republic", - "countryCode": "DO", - "mcc": "370", - "mnc": "03", - "brand": "Altice", - "operator": "Altice Group", - "status": "Operational", - "bands": "AMPS / CDMA 850", - "notes": "Former Tricom, S.A, 1900 MHz spectrum returned to regulator" - }, - { - "type": "National", - "countryName": "Dominican Republic", - "countryCode": "DO", - "mcc": "370", - "mnc": "04", - "brand": "Viva", - "operator": "Trilogy Dominicana, S.A.", - "status": "Operational", - "bands": "CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 1700", - "notes": "Former Centennial Dominicana" - }, - { - "type": "National", - "countryName": "Dominican Republic", - "countryCode": "DO", - "mcc": "370", - "mnc": "05", - "brand": "Wind", - "operator": "WIND Telecom, S.A", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": "LTE band 38" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "01", - "brand": "Orange", - "operator": "Orange Caraïbe Mobiles", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Guadeloupe, French Guiana, Martinique, Saint Barthélemy, Saint Martin" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "02", - "brand": "SFR Caraïbe", - "operator": "Outremer Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Guadeloupe, French Guiana, Martinique; former Only" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "03", - "brand": "FLOW", - "operator": "UTS Caraïbe", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS / LTE 1800", - "notes": "Saint Barthélemy, Saint Martin; former Telcell" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "04", - "brand": "Free", - "operator": "Free Caraïbe", - "status": "Not operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "08", - "brand": "Dauphin", - "operator": "Dauphin Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS / LTE", - "notes": "Saint Barthélemy, Saint Martin" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "09", - "brand": "Free", - "operator": "Free Caraïbe", - "status": "Upcoming", - "bands": "UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "10", - "brand": null, - "operator": "Guadeloupe Téléphone Mobile", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "11", - "brand": null, - "operator": "Guyane Téléphone Mobile", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "12", - "brand": null, - "operator": "Martinique Téléphone Mobile", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "French Antilles (France)", - "countryCode": "BL/GF/GP/MF/MQ", - "mcc": "340", - "mnc": "20", - "brand": "Digicel", - "operator": "DIGICEL Antilles Française Guyane", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800", - "notes": "Guadeloupe, French Guiana, Martinique, Saint Barthélemy, Saint Martin; former Bouygues Telecom Caraïbes" - }, - { - "type": "National", - "countryName": "Grenada", - "countryCode": "GD", - "mcc": "352", - "mnc": "030", - "brand": "Digicel", - "operator": "Digicel Grenada Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1900", - "notes": "Also uses MCC 338 MNC 05 (Jamaica)" - }, - { - "type": "National", - "countryName": "Grenada", - "countryCode": "GD", - "mcc": "352", - "mnc": "110", - "brand": "FLOW", - "operator": "Cable & Wireless Grenada Ltd.", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "032", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "033", - "brand": null, - "operator": "Guam Telephone Authority", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "140", - "brand": "GTA Wireless", - "operator": "Teleguam Holdings, LLC", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 1700 / 5G 2500 / 5G 3500 / 5G 26000", - "notes": "Previously called Guam Telephone Authority mPulse" - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "370", - "brand": "Docomo", - "operator": "NTT DoCoMo Pacific", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / LTE 700 / 5G", - "notes": "Formerly HafaTEL, then Guamcell; CDMA 850 shut down in late 2010" - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "400", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 700", - "notes": "Former iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "470", - "brand": "Docomo", - "operator": "NTT DoCoMo Pacific", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "310", - "mnc": "480", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "iDEN", - "notes": "Former iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "311", - "mnc": "120", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "Unknown", - "notes": "Former iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "Guam (United States of America)", - "countryCode": "GU", - "mcc": "311", - "mnc": "250", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "Unknown", - "notes": "Former iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "Haiti", - "countryCode": "HT", - "mcc": "372", - "mnc": "01", - "brand": "Voila", - "operator": "Communication Cellulaire d'Haiti S.A.", - "status": "Not operational", - "bands": "GSM 850", - "notes": "Sold to Digicel in 2012" - }, - { - "type": "National", - "countryName": "Haiti", - "countryCode": "HT", - "mcc": "372", - "mnc": "02", - "brand": "Digicel", - "operator": "Unigestion Holding S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Haiti", - "countryCode": "HT", - "mcc": "372", - "mnc": "03", - "brand": "Natcom", - "operator": "NATCOM S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UTMS 2100 / LTE 800", - "notes": "60% owned by Viettel" - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "020", - "brand": "FLOW", - "operator": "LIME (Cable & Wireless)", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "040", - "brand": "Caricel", - "operator": "Symbiote Investment Limited", - "status": "Not operational", - "bands": "LTE", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "05", - "brand": "Digicel", - "operator": "Digicel (Jamaica) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1900 / UMTS 850 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "070", - "brand": "Claro", - "operator": "Oceanic Digital Jamaica Limited", - "status": "Not operational", - "bands": "GSM / UMTS / CDMA", - "notes": "shut down 2012" - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "080", - "brand": null, - "operator": "Rock Mobile Limited", - "status": "Unknown", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "110", - "brand": "FLOW", - "operator": "Cable & Wireless Communications", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Jamaica", - "countryCode": "JM", - "mcc": "338", - "mnc": "180", - "brand": "FLOW", - "operator": "Cable & Wireless Communications", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900", - "notes": "GSM shutdown started in 2022" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "001", - "brand": null, - "operator": "Comunicaciones Digitales Del Norte, S.A. de C.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "010", - "brand": "AT&T", - "operator": "AT&T Mexico", - "status": "Not operational", - "bands": "iDEN 800", - "notes": "Former Nextel; shut down 2017" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "020", - "brand": "Telcel", - "operator": "América Móvil", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 850 / LTE 1700 / LTE 2600 / 5G", - "notes": "former Radiomóvil Dipsa; GSM shut down Sep 2020" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "030", - "brand": "Movistar", - "operator": "Telefónica", - "status": "Operational", - "bands": "MVNO", - "notes": "former Pegaso PCS; MVNO on AT&T, own spectrum returned" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "040", - "brand": "Unefon", - "operator": "AT&T Mexico", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 1900", - "notes": "Shut down 2016" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "050", - "brand": "AT&T / Unefon", - "operator": "AT&T Mexico", - "status": "Operational", - "bands": "UMTS 850 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 1700 / LTE 2600 / TD-LTE 2600 / 5G 2600 / 5G 3500", - "notes": "Former Iusacell; GSM shut down 2019" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "060", - "brand": null, - "operator": "Servicios de Acceso Inalambrico, S.A. de C.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "066", - "brand": null, - "operator": "Telefonos de México, S.A.B. de C.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "070", - "brand": "Unefon", - "operator": "AT&T Mexico", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "080", - "brand": "Unefon", - "operator": "AT&T Mexico", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "090", - "brand": "AT&T", - "operator": "AT&T Mexico", - "status": "Operational", - "bands": "UMTS 1700 / LTE 850 / LTE 1700", - "notes": "Former Nextel" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "100", - "brand": null, - "operator": "Telecomunicaciones de México", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "110", - "brand": null, - "operator": "Maxcom Telecomunicaciones, S.A.B. de C.V.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "120", - "brand": null, - "operator": "Quickly Phone, S.A. de C.V.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "130", - "brand": null, - "operator": "ALESTRA SERVICIOS MÓVILES, S.A. DE C.V.", - "status": "Operational", - "bands": "Unknown", - "notes": "Division of Axtel" - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "140", - "brand": "Red Compartida", - "operator": "Altán Redes S.A.P.I. de C.V.", - "status": "Operational", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "150", - "brand": "Ultranet", - "operator": "Ultravisión, S.A. de C.V.", - "status": "Operational", - "bands": "LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "160", - "brand": null, - "operator": "Cablevisión Red, S.A. de C.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "170", - "brand": null, - "operator": "Oxio Mobile, S.A. de C.V.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "180", - "brand": "FreedomPop", - "operator": "FREEDOMPOP MÉXICO, S.A. DE C.V.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Mexico", - "countryCode": "MX", - "mcc": "334", - "mnc": "190", - "brand": "Viasat", - "operator": "VIASAT TECNOLOGÍA, S.A. DE C.V.", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "Montserrat (United Kingdom)", - "countryCode": "MS", - "mcc": "338", - "mnc": "05", - "brand": "Digicel", - "operator": "Digicel", - "status": "Operational", - "bands": "GSM 850", - "notes": "Uses Jamaica MCC" - }, - { - "type": "National", - "countryName": "Montserrat (United Kingdom)", - "countryCode": "MS", - "mcc": "354", - "mnc": "860", - "brand": "FLOW", - "operator": "Cable & Wireless", - "status": "Operational", - "bands": "GSM 850", - "notes": null - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "31", - "brand": null, - "operator": "Eutel N.V.", - "status": "Unknown", - "bands": "GSM", - "notes": "Sint Eustatius" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "33", - "brand": null, - "operator": "WICC N.V.", - "status": "Unknown", - "bands": "GSM", - "notes": null - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "51", - "brand": "Telcell", - "operator": "Telcell N.V.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800", - "notes": "Sint Maarten; GSM shut down Jan 2019" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "54", - "brand": "ECC", - "operator": "East Caribbean Cellular", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "59", - "brand": "FLOW", - "operator": "Liberty Latin America", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Bonaire, Saba, Sint Eustatius, Sint Maarten; former Radcomm N.V., UTS; shut down Sep 2017" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "60", - "brand": "FLOW", - "operator": "Liberty Latin America", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800", - "notes": "Bonaire, Saba, Sint Eustatius, Sint Maarten; former Radcomm N.V., UTS" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "63", - "brand": null, - "operator": "CSC N.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "68", - "brand": "Digicel", - "operator": "Curaçao Telecom N.V.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800", - "notes": "Curaçao" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "69", - "brand": "Digicel", - "operator": "Curaçao Telecom N.V.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Curaçao" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "74", - "brand": null, - "operator": "PCS N.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "76", - "brand": "Digicel", - "operator": "Antiliano Por N.V.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Bonaire" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "78", - "brand": "Telbo", - "operator": "Telefonia Bonairiano N.V.", - "status": "Operational", - "bands": "UMTS 900 / LTE 1800", - "notes": "Bonaire" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "91", - "brand": "FLOW", - "operator": "Liberty Latin America", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800", - "notes": "Curaçao; former Setel N.V., UTS" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "94", - "brand": "Bayòs", - "operator": "Bòbò Frus N.V.", - "status": "Operational", - "bands": "TDMA PCS", - "notes": "Mobile Solutions" - }, - { - "type": "National", - "countryName": "Former Netherlands Antilles (Kingdom of the Netherlands)", - "countryCode": "BQ/CW/SX", - "mcc": "362", - "mnc": "95", - "brand": "MIO", - "operator": "E.O.C.G. Wireless", - "status": "Not operational", - "bands": "CDMA2000 850", - "notes": "former GSM Caribbean N.V.; bankrupt in 2013" - }, - { - "type": "National", - "countryName": "Northern Mariana Islands (United States of America)", - "countryCode": "MP", - "mcc": "310", - "mnc": "110", - "brand": "IT&E Wireless", - "operator": "PTI Pacifica Inc.", - "status": "Operational", - "bands": "CDMA / GSM 850 / UMTS 1900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Northern Mariana Islands (United States of America)", - "countryCode": "MP", - "mcc": "310", - "mnc": "370", - "brand": "Docomo", - "operator": "NTT DoCoMo Pacific", - "status": "Operational", - "bands": "GSM 1900 / UMTS / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "310", - "mnc": "017", - "brand": "ProxTel", - "operator": "North Sight Communications Inc.", - "status": "Not operational", - "bands": "iDEN", - "notes": "US MCC; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "310", - "mnc": "260", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "GSM 1900 / LTE 600 / LTE 1900 / LTE 1700 / 5G 600 / 5G 2500", - "notes": "US MCC; UMTS shut down July 2022" - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "310", - "mnc": "280", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Former Centennial Puerto Rico; US MCC" - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "313", - "mnc": "510", - "brand": null, - "operator": "Puerto Rico Telecom Company", - "status": "Unknown", - "bands": "Unknown", - "notes": "Uses US MCC" - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "313", - "mnc": "790", - "brand": "Liberty", - "operator": "Liberty Cablevision of Puerto Rico LLC", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2300 / 5G 850", - "notes": "Uses US MCC; UMTS shut down Feb 2022" - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "330", - "mnc": "000", - "brand": "Open Mobile", - "operator": "PR Wireless", - "status": "Operational", - "bands": "CDMA 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "330", - "mnc": "110", - "brand": "Claro Puerto Rico", - "operator": "América Móvil", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Puerto Rico", - "countryCode": "PR", - "mcc": "330", - "mnc": "120", - "brand": "Open Mobile", - "operator": "PR Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Kitts and Nevis", - "countryCode": "KN", - "mcc": "356", - "mnc": "050", - "brand": "Digicel", - "operator": "Wireless Ventures (St Kitts-Nevis) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Kitts and Nevis", - "countryCode": "KN", - "mcc": "356", - "mnc": "070", - "brand": "FLOW", - "operator": "UTS", - "status": "Operational", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "Saint Kitts and Nevis", - "countryCode": "KN", - "mcc": "356", - "mnc": "110", - "brand": "FLOW", - "operator": "Cable & Wireless St. Kitts & Nevis Ltd", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Lucia", - "countryCode": "LC", - "mcc": "338", - "mnc": "05", - "brand": "Digicel", - "operator": "Digicel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / GSM 1900 / LTE 700", - "notes": "uses Jamaica MCC" - }, - { - "type": "National", - "countryName": "Saint Lucia", - "countryCode": "LC", - "mcc": "358", - "mnc": "110", - "brand": "FLOW", - "operator": "Cable & Wireless", - "status": "Operational", - "bands": "GSM 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Pierre and Miquelon (France)", - "countryCode": "PM", - "mcc": "308", - "mnc": "01", - "brand": "Ameris", - "operator": "St. Pierre-et-Miquelon Télécom", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Pierre and Miquelon (France)", - "countryCode": "PM", - "mcc": "308", - "mnc": "02", - "brand": "GLOBALTEL", - "operator": "GLOBALTEL", - "status": "Operational", - "bands": "GSM 900 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Pierre and Miquelon (France)", - "countryCode": "PM", - "mcc": "308", - "mnc": "03", - "brand": "Ameris", - "operator": "St. Pierre-et-Miquelon Télécom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Vincent and the Grenadines", - "countryCode": "VC", - "mcc": "360", - "mnc": "050", - "brand": "Digicel", - "operator": "Digicel (St. Vincent and the Grenadines) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / GSM 1900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Vincent and the Grenadines", - "countryCode": "VC", - "mcc": "360", - "mnc": "100", - "brand": "Cingular Wireless", - "operator": null, - "status": "Unknown", - "bands": "GSM 850", - "notes": null - }, - { - "type": "National", - "countryName": "Saint Vincent and the Grenadines", - "countryCode": "VC", - "mcc": "360", - "mnc": "110", - "brand": "FLOW", - "operator": "Cable & Wireless (St. Vincent & the Grenadines) Ltd", - "status": "Operational", - "bands": "GSM 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "01", - "brand": "bmobile", - "operator": "TSTT", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Withdrawn" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "12", - "brand": "bmobile", - "operator": "TSTT", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / TD-LTE 2500 / 5G 2500", - "notes": "LTE bands 2 / 4 / 28 / 41; band 41 used for FWA" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "13", - "brand": "Digicel", - "operator": "Digicel (Trinidad & Tobago) Limited", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900", - "notes": "Withdrawn" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "20", - "brand": "bmobile", - "operator": "TSTT", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Withdrawn" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "120", - "brand": "bmobile", - "operator": "TSTT", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Withdrawn" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "129", - "brand": "bmobile", - "operator": "TSTT", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900", - "notes": "Withdrawn" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "130", - "brand": "Digicel", - "operator": "Digicel (Trinidad & Tobago) Limited", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900", - "notes": "LTE bands 28 / 4 / 2" - }, - { - "type": "National", - "countryName": "Trinidad and Tobago", - "countryCode": "TT", - "mcc": "374", - "mnc": "140", - "brand": "Laqtel", - "operator": "LaqTel Ltd.", - "status": "Not operational", - "bands": "CDMA", - "notes": "Shut down 2008; Withdrawn" - }, - { - "type": "National", - "countryName": "Turks and Caicos Islands", - "countryCode": "TC", - "mcc": "338", - "mnc": "050", - "brand": "Digicel", - "operator": "Digicel (Turks & Caicos) Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1900 / LTE 700 / LTE 1700", - "notes": "uses Jamaica MCC" - }, - { - "type": "National", - "countryName": "Turks and Caicos Islands", - "countryCode": "TC", - "mcc": "376", - "mnc": "350", - "brand": "FLOW", - "operator": "Cable & Wireless West Indies Ltd (Turks & Caicos)", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Turks and Caicos Islands", - "countryCode": "TC", - "mcc": "376", - "mnc": "351", - "brand": "Digicel", - "operator": "Digicel (Turks & Caicos) Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Turks and Caicos Islands", - "countryCode": "TC", - "mcc": "376", - "mnc": "352", - "brand": "FLOW", - "operator": "Cable & Wireless West Indies Ltd (Turks & Caicos)", - "status": "Not operational", - "bands": "UMTS 850", - "notes": "Former IslandCom MNC withdrawn" - }, - { - "type": "National", - "countryName": "Turks and Caicos Islands", - "countryCode": "TC", - "mcc": "376", - "mnc": "360", - "brand": "Digicel", - "operator": "Digicel (Turks & Caicos) Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former IslandCom, Cable & Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "004", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "005", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "CDMA2000 850 / CDMA2000 1900", - "notes": "CDMA shut down Dec 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "006", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "010", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former MCI Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "012", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Operational", - "bands": "LTE 700 / LTE 1700 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "013", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former MobileTel, Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "014", - "brand": null, - "operator": null, - "status": "Not operational", - "bands": "Unknown", - "notes": "For testing; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "015", - "brand": "Southern LINC", - "operator": "Southern Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "016", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Not operational", - "bands": "CDMA2000 1900 / CDMA2000 1700", - "notes": "Former Cricket Wireless; shut down in September 2015" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "017", - "brand": "ProxTel", - "operator": "North Sight Communications Inc.", - "status": "Not operational", - "bands": "iDEN", - "notes": "Puerto Rico; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "020", - "brand": "Union Wireless", - "operator": "Union Telephone Company", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "030", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850", - "notes": "Former Centennial Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "032", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 700", - "notes": "Guam" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "033", - "brand": null, - "operator": "Guam Telephone Authority", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "034", - "brand": "Airpeak", - "operator": "Airpeak", - "status": "Operational", - "bands": "iDEN", - "notes": "Former Nevada Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "035", - "brand": "ETEX Wireless", - "operator": "ETEX Communications, LP", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "040", - "brand": "MTA", - "operator": "Matanuska Telephone Association, Inc.", - "status": "Not operational", - "bands": "CDMA", - "notes": "Formerly Concho Cellular Telephone Co.; then Alaska, shut down 2017; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "050", - "brand": "GCI", - "operator": "Alaska Communications", - "status": "Operational", - "bands": "CDMA", - "notes": "Former ACS Wireless Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "053", - "brand": "Virgin Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "054", - "brand": null, - "operator": "Alltel US", - "status": "Operational", - "bands": "Unknown", - "notes": "Uses Sprint's network" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "060", - "brand": null, - "operator": "Consolidated Telcom", - "status": "Not operational", - "bands": "1900", - "notes": "North Dakota; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "066", - "brand": "U.S. Cellular", - "operator": "U.S. Cellular", - "status": "Operational", - "bands": "GSM / CDMA", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "070", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850", - "notes": "Former Highland Cellular, Cingular" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "080", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Former Corr Wireless Communications LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "090", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Former Edge Wireless, Cingular, Cricket Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "100", - "brand": "Plateau Wireless", - "operator": "New Mexico RSA 4 East LP", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1700", - "notes": "Acquired by AT&T" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "110", - "brand": "IT&E Wireless", - "operator": "PTI Pacifica Inc.", - "status": "Operational", - "bands": "CDMA / GSM 850 / UMTS 1900 / LTE 700", - "notes": "Northern Mariana Islands" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "120", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "LTE 850 / LTE 1900", - "notes": "Former Sprint Corporation; CDMA shut down May 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "130", - "brand": "Carolina West Wireless", - "operator": "Carolina West Wireless", - "status": "Operational", - "bands": "CDMA2000 1900", - "notes": "North Carolina" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "140", - "brand": "GTA Wireless", - "operator": "Teleguam Holdings, LLC", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 1700", - "notes": "Previously called Guam Telephone Authority mPulse" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "150", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900", - "notes": "Originally BellSouth Mobility DCS, then Cingular Wireless, then Aio Wireless, then rebranded as the new GSM Cricket Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "160", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "GSM 1900", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "170", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Formerly Pacific Bell Wireless, then Cingular Wireless CA/NV known as \"Cingular Orange\"" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "180", - "brand": "West Central", - "operator": "West Central Wireless", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "190", - "brand": "GCI", - "operator": "Alaska Communications", - "status": "Operational", - "bands": "GSM 850", - "notes": "Dutch Harbor, Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "200", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "210", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Iowa" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "220", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Kansas / Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "230", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Utah" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "240", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "New Mexico / Texas / Arizona" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "250", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Hawaii" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "260", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "GSM 1900 / LTE 600 / LTE 700 / LTE 850 / LTE 1900 / LTE 1700 / LTE 2500 / 5G 600 / 5G 2500 / 5G 26000 / 5G 28000 / 5G 39000", - "notes": "Former Cook Inlet West Wireless, Voicestream; now universal USA code. Also used for Mint Mobile, Ting. UMTS shut down July 2022, GSM to shut down Apr 2024." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "270", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Formerly Powertel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "280", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Former Centennial Puerto Rico" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "290", - "brand": "nep", - "operator": "NEP Cellcorp Inc.", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Shut down 22 September 2015" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "300", - "brand": "Big Sky Mobile", - "operator": "iSmart Mobile, LLC", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Montana; former Get Mobile Inc., SmartCall, LLC; acquired by T-Mobile in 2017; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "310", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Formerly Aerial Communications" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "311", - "brand": null, - "operator": "Farmers Wireless", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "NE Alabama; acquired by AT&T in 2008" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "320", - "brand": "Cellular One", - "operator": "Smith Bagley, Inc.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS", - "notes": "Arizona / New Mexico" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "330", - "brand": null, - "operator": "Wireless Partners, LLC", - "status": "Unknown", - "bands": "LTE", - "notes": "Former AN Subsidiary LLC, AWCC, acquired by AT&T, CDMA shut down February 2015" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "340", - "brand": "Limitless Mobile", - "operator": "Limitless Mobile, LLC", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Kansas; Former High Plains Midwest LLC dba Westlink Communications, acquired by United Wireless in 2013" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "350", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "CDMA", - "notes": "Former Mohave Cellular L.P." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "360", - "brand": "Pioneer Cellular", - "operator": "Cellular Network Partnership", - "status": "Operational", - "bands": "CDMA", - "notes": "Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "370", - "brand": "Docomo", - "operator": "NTT DoCoMo Pacific", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / LTE 700", - "notes": "Guam, Northern Mariana Islands; former Guamcell" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "380", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900", - "notes": "Former AT&T Wireless Services, then Cingular Wireless (known as \"Cingular Blue\")" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "390", - "brand": "Cellular One of East Texas", - "operator": "TX-11 Acquisition, LLC", - "status": "Operational", - "bands": "GSM 850 / LTE 700 / CDMA", - "notes": "Former Yorkville Telephone Cooperative" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "400", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 700", - "notes": "Guam; former iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "410", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2300 / 5G 850 / 5G 3700 / 5G 39000", - "notes": "Formerly Cingular Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "420", - "brand": "Cincinnati Bell", - "operator": "Cincinnati Bell Wireless", - "status": "Not operational", - "bands": "GSM 1900 / UMTS 1700", - "notes": "Shut down 28 February 2015; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "430", - "brand": "GCI", - "operator": "GCI Communications Corp.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900", - "notes": "Former Alaska Digitel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "440", - "brand": null, - "operator": "Numerex", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Dobson / Cellular One; M2M only" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "450", - "brand": "Viaero", - "operator": "Viaero Wireless", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900", - "notes": "Formerly North East Cellular Inc., CellONE; Colorado / Kansas / Nebraska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "460", - "brand": "Conecto", - "operator": "NewCore Wireless LLC", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Simmetry / TMP Corporation (shut down 30 June 2012)" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "470", - "brand": null, - "operator": "NTT DoCoMo Pacific", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Guam Wireless, nTelos, Shentel, Sprint" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "480", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "iDEN", - "notes": "Guam; former Choice Phone LLC, iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "490", - "brand": null, - "operator": "T-Mobile", - "status": "Operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Former Triton PCS, SunCom" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "500", - "brand": "Alltel", - "operator": "Public Service Cellular Inc.", - "status": "Operational", - "bands": "CDMA2000 850 / CDMA2000 1900", - "notes": "Georgia" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "510", - "brand": "Cellcom", - "operator": "Nsight", - "status": "Unknown", - "bands": "Unknown", - "notes": "Formerly Airtel Wireless LLC (iDEN, Montana)" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "520", - "brand": "TNS", - "operator": "Transaction Network Services", - "status": "Unknown", - "bands": "Unknown", - "notes": "Formerly Verisign" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "530", - "brand": null, - "operator": "T-Mobile", - "status": "Unknown", - "bands": "Unknown", - "notes": "Formerly West Virginia Wireless, iWireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "540", - "brand": "Phoenix", - "operator": "Hilliary Communications", - "status": "Operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "550", - "brand": null, - "operator": "Syniverse Technologies", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Wireless Solutions International" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "560", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Not operational", - "bands": "GSM 850", - "notes": "Former Dobson Cellular, Cingular Wireless; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "570", - "brand": null, - "operator": "Broadpoint, LLC", - "status": "Operational", - "bands": "GSM 850 / LTE 700", - "notes": "Former TX-10, LLC and Central Louisiana Cellular, LLC (MTPCS) dba Cellular One; Montana network (former Chinook Wireless) shut down in 2014" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "580", - "brand": null, - "operator": "Inland Cellular Telephone Company", - "status": "Operational", - "bands": "CDMA2000", - "notes": "Former PCS One" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "590", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "GSM 850 / GSM 1900", - "notes": "Former Western Wireless Corporation, Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "591", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "592", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "593", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "594", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "595", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "596", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "597", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "598", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "599", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "600", - "brand": "Cellcom", - "operator": "NewCell Inc.", - "status": "Operational", - "bands": "CDMA 850 / CDMA 1900", - "notes": "Wisconsin; network to be shut down Dec 2023" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "610", - "brand": null, - "operator": "Mavenir Systems Inc", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Epic PCS, shut down 30 April 2015, sold to PTCI and United Wireless;" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "620", - "brand": "Cellcom", - "operator": "Nsighttel Wireless LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": "Formerly Coleman County Telecom" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "630", - "brand": "Choice Wireless", - "operator": "Commnet Wireless LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former miSpot / Agri-Valley Communications" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "640", - "brand": null, - "operator": "Numerex", - "status": "Operational", - "bands": "MVNO", - "notes": "M2M only; formerly Einstein PCS, AirFire / Airadigm, shut down 2 September 2014" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "650", - "brand": "Jasper", - "operator": "Jasper Technologies", - "status": "Operational", - "bands": "MVNO", - "notes": "M2M only" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "660", - "brand": "T-Mobile", - "operator": null, - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Formerly DigiPhone PCS / DigiPH" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "670", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Northstar" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "680", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Formerly Cellular One DCS, NPI Wireless, Cingular" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "690", - "brand": "Limitless Mobile", - "operator": "Limitless Mobile, LLC", - "status": "Operational", - "bands": "GSM 1900 / LTE 1900", - "notes": "Pennsylvania; former Conestoga Wireless, Keystone Wireless d/b/a Immix Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "700", - "brand": "Bigfoot Cellular", - "operator": "Cross Valiant Cellular Partnership", - "status": "Unknown", - "bands": "GSM", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "710", - "brand": "ASTAC", - "operator": "Arctic Slope Telephone Association Cooperative", - "status": "Operational", - "bands": "UMTS 850 / LTE", - "notes": "Alaska; GSM shut down January 2017" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "720", - "brand": null, - "operator": "Syniverse Technologies", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Wireless Solutions International" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "730", - "brand": "U.S. Cellular", - "operator": "U.S. Cellular", - "status": "Unknown", - "bands": "Unknown", - "notes": "Formerly Sea Mobile" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "740", - "brand": "Viaero", - "operator": "Viaero Wireless", - "status": "Operational", - "bands": "LTE 700 / LTE 1700 / LTE 1900", - "notes": "Former Telemetrix Technologies, Convey Communications Inc., Green Eagle Communications, Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "750", - "brand": "Appalachian Wireless", - "operator": "East Kentucky Network, LLC", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 1900", - "notes": "shut down Feb 2023" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "760", - "brand": null, - "operator": "Lynch 3G Communications Corporation", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "770", - "brand": null, - "operator": "T-Mobile", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former iWireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "780", - "brand": "Dispatch Direct", - "operator": "D. D. Inc.", - "status": "Not operational", - "bands": "iDEN", - "notes": "Former Airlink PCS, Connect Net Inc.; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "790", - "brand": "BLAZE", - "operator": "PinPoint Communications Inc.", - "status": "Not operational", - "bands": "GSM 1900 / UMTS / LTE", - "notes": "Nebraska; discontinued Dec 2019" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "800", - "brand": null, - "operator": "T-Mobile", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Formerly SOL Communications" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "810", - "brand": null, - "operator": "Pacific Lightwave Inc.", - "status": "Unknown", - "bands": "1900", - "notes": "Formerly Brazos Cellular Communications Ltd., LCFR LLC (owned by New Dimension Wireless);" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "820", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former South Canaan Cellular" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "830", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Not operational", - "bands": "WiMAX", - "notes": "Former Caprock Cellular (GSM, sold to AT&T in 2010), Clearwire, Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "840", - "brand": "telna Mobile", - "operator": "Telecom North America Mobile, Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": "Formerly Edge Mobile LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "850", - "brand": "Aeris", - "operator": "Aeris Communications, Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": "M2M only; is a Full MVNO despite marketing claims to the contrary" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "860", - "brand": "Five Star Wireless", - "operator": "TX RSA 15B2, LP", - "status": "Operational", - "bands": "CDMA", - "notes": "Owned by West Central Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "870", - "brand": "PACE", - "operator": "Kaplan Telephone Company", - "status": "Not operational", - "bands": "GSM 850", - "notes": "Louisiana; spectrum sold to AT&T in 2014; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "880", - "brand": "DTC Wireless", - "operator": "Advantage Cellular Systems, Inc.", - "status": "Operational", - "bands": "LTE", - "notes": "Tennessee; owned by DeKalb Telephone Cooperative; fixed wireless only, GSM 850 discontinued January 2017" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "890", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "GSM 850 / GSM 1900", - "notes": "Former Unicel / Rural Cellular Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "891", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "892", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "893", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "894", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "895", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "896", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "897", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "898", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "899", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "900", - "brand": "Mid-Rivers Wireless", - "operator": "Cable & Communications Corporation", - "status": "Operational", - "bands": "CDMA2000 850 / CDMA2000 1900", - "notes": "Montana; network to shut down 1 August 2019" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "910", - "brand": null, - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "GSM 850", - "notes": "Former First Cellular of Southern Illinois, Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "920", - "brand": null, - "operator": "James Valley Wireless, LLC", - "status": "Operational", - "bands": "CDMA", - "notes": "South Dakota; includes NVC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "930", - "brand": null, - "operator": "Copper Valley Wireless", - "status": "Operational", - "bands": "CDMA", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "940", - "brand": null, - "operator": "Tyntec Inc.", - "status": "Unknown", - "bands": "MVNO", - "notes": "Formerly Poka Lambro Telecommunications Ltd., Iris Wireless LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "950", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850", - "notes": "Former Texas RSA 1 d/b/a XIT Cellular" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "960", - "brand": "STRATA", - "operator": "UBET Wireless", - "status": "Operational", - "bands": "CDMA", - "notes": "Utah" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "970", - "brand": null, - "operator": "Globalstar", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "980", - "brand": "Peoples Telephone", - "operator": "Texas RSA 7B3", - "status": "Not operational", - "bands": "CDMA / LTE 700", - "notes": "Texas; spectrum sold to AT&T; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "310", - "mnc": "990", - "brand": "Evolve Broadband", - "operator": "Evolve Cellular Inc.", - "status": "Operational", - "bands": "LTE 700", - "notes": "LTE band 17; former Worldcall Interconnect Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "000", - "brand": "West Central Wireless", - "operator": "Mid-Tex Cellular Ltd.", - "status": "Operational", - "bands": "CDMA2000 850 / CDMA2000 1900", - "notes": "Texas" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "010", - "brand": "Chariton Valley", - "operator": "Chariton Valley Communications", - "status": "Not operational", - "bands": "CDMA2000 850 / CDMA2000 1900", - "notes": "Missouri; acquired by Verizon Wireless; CDMA shut down Dec 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "012", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "CDMA2000 850 / CDMA2000 1900", - "notes": "CDMA shut down Dec 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "020", - "brand": "Chariton Valley", - "operator": "Missouri RSA 5 Partnership", - "status": "Operational", - "bands": "GSM 850", - "notes": "Missouri; being acquired by Verizon Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "030", - "brand": "Indigo Wireless", - "operator": "Americell PA 3 Partnership", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850", - "notes": "Pennsylvania" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "040", - "brand": "Choice Wireless", - "operator": "Commnet Wireless", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / CDMA 2000 / UMTS", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "050", - "brand": null, - "operator": "Thumb Cellular LP", - "status": "Operational", - "bands": "CDMA2000 850", - "notes": "Michigan" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "060", - "brand": null, - "operator": "Space Data Corporation", - "status": "Operational", - "bands": "Unknown", - "notes": "Former Farmers Cellular Telephone Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "070", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 850", - "notes": "Former Easterbrooke Cellular Corporation, Wisconsin RSA #7 Limited Partnership" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "080", - "brand": "Pine Cellular", - "operator": "Pine Telephone Company", - "status": "Operational", - "bands": "GSM 850 / LTE", - "notes": "Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "090", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Former Siouxland PCS, Long Lines Wireless, acquired by AT&T Dec. 2013" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "100", - "brand": null, - "operator": "Nex-Tech Wireless", - "status": "Operational", - "bands": "CDMA2000", - "notes": "Kansas; former High Plains Wireless L.P." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "110", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former High Plains Wireless L.P., Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "120", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "Unknown", - "notes": "Guam; former Choice Phone LLC, iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "130", - "brand": null, - "operator": "Black & Veatch", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Cell One Amarillo (Amarillo License L.P.), Lightsquared; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "140", - "brand": "Bravado Wireless", - "operator": "Cross Telephone Company", - "status": "Operational", - "bands": "CDMA", - "notes": "Oklahoma; former MBO Wireless, Sprocket Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "150", - "brand": null, - "operator": "Wilkes Cellular", - "status": "Operational", - "bands": "GSM 850", - "notes": "Georgia" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "160", - "brand": null, - "operator": "Lightsquared L.P.", - "status": "Not operational", - "bands": "LTE", - "notes": "Former Endless Mountains Wireless (acquired by Dobson Cellular in 2005) MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "170", - "brand": null, - "operator": "Tampnet", - "status": "Operational", - "bands": "GSM 850 / LTE", - "notes": "Gulf of Mexico; former PetroCom, Broadpoint Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "180", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Not operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900", - "notes": "Former Pacific Telesis, Cingular Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "190", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Cellular Properties Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "200", - "brand": null, - "operator": "Dish Wireless", - "status": "Unknown", - "bands": "5G", - "notes": "Former ARINC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "210", - "brand": null, - "operator": "Telnyx LLC", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Farmers Cellular Telephone, Emery Telcom Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "220", - "brand": "U.S. Cellular", - "operator": "U.S. Cellular", - "status": "Operational", - "bands": "CDMA", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "230", - "brand": "C Spire", - "operator": "Cellular South Inc.", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / TD-LTE 2500", - "notes": "CDMA shut down May 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "240", - "brand": null, - "operator": "Cordova Wireless", - "status": "Operational", - "bands": "GSM / UMTS 850 / WiMAX", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "250", - "brand": "IT&E Wireless", - "operator": "IT&E Overseas, Inc", - "status": "Operational", - "bands": "Unknown", - "notes": "Guam; former iConnect, Wave Runner LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "260", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Not operational", - "bands": "WiMAX", - "notes": "Former CellularOne of San Luis Obispo (sold to AT&T in 2010, Clearwire, Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "270", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "271", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "272", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "273", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "274", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "275", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "276", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "277", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "278", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "279", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "280", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "281", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "282", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "283", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "284", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "285", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "286", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "287", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "288", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "289", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "290", - "brand": "BLAZE", - "operator": "PinPoint Communications Inc.", - "status": "Not operational", - "bands": "GSM 1900 / UMTS / LTE", - "notes": "Nebraska; discontinued Dec 2020; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "300", - "brand": null, - "operator": "Nexus Communications, Inc.", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Rutal Cellular Corporation; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "310", - "brand": "NMobile", - "operator": "Leaco Rural Telephone Company Inc.", - "status": "Not operational", - "bands": "CDMA2000", - "notes": "New Mexico; shut down June 2018" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "320", - "brand": "Choice Wireless", - "operator": "Commnet Wireless", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / CDMA 2000 / UMTS", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "330", - "brand": "Bug Tussel Wireless", - "operator": "Bug Tussel Wireless LLC", - "status": "Operational", - "bands": "GSM 1900 / LTE 1700 / WiMAX 3700", - "notes": "Wisconsin" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "340", - "brand": null, - "operator": "Illinois Valley Cellular", - "status": "Operational", - "bands": "CDMA2000 / LTE 850", - "notes": "Illinois" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "350", - "brand": "Nemont", - "operator": "Sagebrush Cellular, Inc.", - "status": "Operational", - "bands": "CDMA2000", - "notes": "Former Torrestar Networks Inc.; Montana" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "360", - "brand": null, - "operator": "Stelera Wireless", - "status": "Not operational", - "bands": "UMTS 1700", - "notes": "shut down 30 April 2013" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "370", - "brand": "GCI Wireless", - "operator": "General Communication Inc.", - "status": "Operational", - "bands": "LTE 1700", - "notes": "Former Alaska Communications" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "380", - "brand": null, - "operator": "New Dimension Wireless Ltd.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "390", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Midwest Wireless Holdings LLC, Alltel" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "400", - "brand": null, - "operator": null, - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Salmon PCS LLC, New Cingular Wireless PCS LLC; for testing" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "410", - "brand": "Chat Mobility", - "operator": "Iowa RSA No. 2 LP", - "status": "Operational", - "bands": "CDMA", - "notes": "Iowa" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "420", - "brand": "NorthwestCell", - "operator": "Northwest Missouri Cellular LP", - "status": "Operational", - "bands": "CDMA", - "notes": "Missouri" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "430", - "brand": "Chat Mobility", - "operator": "RSA 1 LP", - "status": "Unknown", - "bands": "CDMA", - "notes": "Former Cellular 29 Plus; acquired by Chat Mobility in 2009; Iowa" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "440", - "brand": null, - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "CDMA", - "notes": "Former Bluegrass Cellular; Kentucky" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "450", - "brand": "PTCI", - "operator": "Panhandle Telecommunication Systems Inc.", - "status": "Operational", - "bands": "GSM 1900 / LTE 700", - "notes": "Also known as Panhandle Telephone Cooperative, Inc.; Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "460", - "brand": null, - "operator": "Electric Imp Inc.", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Fisher Wireless Services Inc.; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "470", - "brand": "Viya", - "operator": "Vitelcom Cellular Inc.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / TD-LTE 2500", - "notes": "Former Innovative Wireless; US Virgin Islands" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "480", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": "C Block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "481", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "482", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "483", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "484", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "485", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "486", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "487", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "488", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "489", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "490", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "LTE 850 / LTE 1900 / TD-LTE 2500", - "notes": "Former Wirefree Partners LLC, acquired by Sprint in 2010; LTE bands 25, 26, 41" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "500", - "brand": null, - "operator": "Mosaic Telecom", - "status": "Not operational", - "bands": "UMTS / LTE 700 / LTE 1700", - "notes": "Former CTC Telecom Inc.; discontinued cellular service in 2016; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "510", - "brand": null, - "operator": "Ligado Networks", - "status": "Not operational", - "bands": "LTE", - "notes": "Former Benton-Lian Wireless, Lightsquared L.P." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "520", - "brand": null, - "operator": "Lightsquared L.P.", - "status": "Not operational", - "bands": "LTE", - "notes": "Former Crossroads Wireless Inc.; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "530", - "brand": "NewCore", - "operator": "NewCore Wireless LLC", - "status": "Operational", - "bands": "LTE 1900", - "notes": "Former Wireless Communications Venture" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "540", - "brand": null, - "operator": "Coeur Rochester, Inc", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Keystone Wireless, Proximiti Mobility" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "550", - "brand": "Choice Wireless", - "operator": "Commnet Wireless LLC", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / CDMA 2000 / UMTS", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "560", - "brand": "OTZ Cellular", - "operator": "OTZ Communications, Inc.", - "status": "Operational", - "bands": "GSM 850", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "570", - "brand": null, - "operator": "Mediacom", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former BendBroadband, shut down 25-July-2014;" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "580", - "brand": "U.S. Cellular", - "operator": "U.S. Cellular", - "status": "Operational", - "bands": "LTE 700 / LTE 850", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "590", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former California RSA No3 Ltd Partnership d/b/a Golden State Cellular, acquired by Verizon in 2014" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "600", - "brand": "Limitless Mobile", - "operator": "Limitless Mobile, LLC", - "status": "Operational", - "bands": "LTE 1900", - "notes": "Former Cox Wireless, shut down in 2012" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "610", - "brand": "SRT Communications", - "operator": "North Dakota Network Co.", - "status": "Not operational", - "bands": "CDMA", - "notes": "North Dakota; shut down in 2017" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "620", - "brand": null, - "operator": "TerreStar Networks, Inc.", - "status": "Not operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "630", - "brand": "C Spire", - "operator": "Cellular South Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Corr Wireless Communications" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "640", - "brand": "Rock Wireless", - "operator": "Standing Rock Telecommunications", - "status": "Operational", - "bands": "LTE 700", - "notes": "A Block; covering an American Indian reservation straddling remote parts of North and South Dakota" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "650", - "brand": "United Wireless", - "operator": "United Wireless", - "status": "Operational", - "bands": "CDMA / LTE 700 / WiMAX 3700", - "notes": "Kansas" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "660", - "brand": "Metro", - "operator": "Metro by T-Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Former MetroPCS; CDMA2000 1900 / CDMA2000 1700 shut down in 2015; LTE 1700 merged with T-Mobile US" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "670", - "brand": "Pine Belt Wireless", - "operator": "Pine Belt Cellular Inc.", - "status": "Operational", - "bands": "CDMA / LTE 700", - "notes": "Alabama" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "680", - "brand": null, - "operator": "GreenFly LLC", - "status": "Unknown", - "bands": "GSM 1900", - "notes": "Iowa" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "690", - "brand": null, - "operator": "TeleBEEPER of New Mexico", - "status": "Operational", - "bands": "paging", - "notes": "New Mexico; 850 MHz band never used" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "700", - "brand": null, - "operator": "Midwest Network Solutions Hub LLC", - "status": "Not operational", - "bands": "MVNO", - "notes": "Former TotalSolutions Telecom LLC, Aspenta International, Inc.; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "710", - "brand": null, - "operator": "Northeast Wireless Networks LLC", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "720", - "brand": null, - "operator": "MainePCS LLC", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Bankrupt in 2009" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "730", - "brand": null, - "operator": "Proximiti Mobility Inc.", - "status": "Not operational", - "bands": "GSM 850", - "notes": "Former Keystone Wireless; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "740", - "brand": null, - "operator": "Telalaska Cellular", - "status": "Operational", - "bands": "GSM 850 / LTE", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "750", - "brand": "ClearTalk", - "operator": "Flat Wireless LLC", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former NetAmerica Alliance; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "760", - "brand": null, - "operator": "Edigen Inc.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "770", - "brand": null, - "operator": "Altiostar Networks, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Geneseo Communications Services Inc., Radio Mobile Access Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "780", - "brand": "ASTCA", - "operator": "American Samoa Telecommunications Authority", - "status": "Operational", - "bands": "LTE 700", - "notes": "Former Cellular Network Partnership d/b/a Pioneer Cellular;" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "790", - "brand": null, - "operator": "Coleman County Telephone Cooperative, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Cellular Network Partnership d/b/a Pioneer Cellular" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "800", - "brand": null, - "operator": "Verizon Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": "Former Bluegrass Cellular; Kentucky" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "810", - "brand": null, - "operator": "Verizon Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": "Former Bluegrass Cellular; Kentucky" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "820", - "brand": null, - "operator": "Sonus Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Kineto Wireless Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "830", - "brand": null, - "operator": "Thumb Cellular LP", - "status": "Operational", - "bands": "LTE 700", - "notes": "Michigan" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "840", - "brand": "Cellcom", - "operator": "Nsight", - "status": "Operational", - "bands": "LTE 700 / 5G 600 / 5G 850", - "notes": "Wisconsin" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "850", - "brand": "Cellcom", - "operator": "Nsight", - "status": "Operational", - "bands": "LTE 700 / 5G 600 / 5G 850", - "notes": "Wisconsin" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "860", - "brand": "STRATA", - "operator": "Uintah Basin Electronic Telecommunications", - "status": "Operational", - "bands": "LTE 700", - "notes": "Utah" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "870", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "880", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "882", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "Unknown", - "notes": "Former Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "890", - "brand": null, - "operator": "Globecomm Network Services Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "900", - "brand": null, - "operator": "GigSky", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "910", - "brand": "MobileNation", - "operator": "SI Wireless LLC", - "status": "Not operational", - "bands": "CDMA / LTE", - "notes": "Tennessee; shut down Jan 2020; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "920", - "brand": "Chariton Valley", - "operator": "Missouri RSA 5 Partnership", - "status": "Unknown", - "bands": "Unknown", - "notes": "Missouri; being acquired by Verizon Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "930", - "brand": null, - "operator": "Cox Communications", - "status": "Unknown", - "bands": "Unknown 3500", - "notes": "Former Cablevision Systems Corporation, Syringa Wireless (shut down Dec 2015)" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "940", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Not operational", - "bands": "WiMAX", - "notes": "Former Clearwire, Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "950", - "brand": "ETC", - "operator": "Enhanced Telecommmunications Corp.", - "status": "Operational", - "bands": "CDMA / LTE 700", - "notes": "Former Sunman Telecommunications Corp.; Indiana; fixed broadband" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "960", - "brand": "Lycamobile", - "operator": "Lycamobile USA Inc.", - "status": "Not operational", - "bands": "MVNO", - "notes": "used T-Mobile; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "970", - "brand": "Big River Broadband", - "operator": "Big River Broadband, LLC", - "status": "Operational", - "bands": "LTE 1700", - "notes": "Utilizing 20 MHz in A block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "980", - "brand": null, - "operator": "LigTel Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "311", - "mnc": "990", - "brand": null, - "operator": "VTel Wireless", - "status": "Operational", - "bands": "LTE 700 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "010", - "brand": "Chariton Valley", - "operator": "Chariton Valley Communications Corporation, Inc", - "status": "Unknown", - "bands": "Unknown", - "notes": "Missouri; being acquired by Verizon Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "020", - "brand": null, - "operator": "Infrastructure Networks, LLC", - "status": "Operational", - "bands": "LTE 700", - "notes": "Focused on oil & gas industries" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "030", - "brand": "Bravado Wireless", - "operator": "Cross Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": "Oklahoma; former MBO Wireless, Sprocket Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "040", - "brand": null, - "operator": "Custer Telephone Co-op (CTCI)", - "status": "Operational", - "bands": "LTE 700", - "notes": "Idaho" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "050", - "brand": null, - "operator": "Fuego Wireless", - "status": "Not operational", - "bands": "LTE 700", - "notes": "fixed broadband; New Mexico; shut down in 2016, spectrum sold to AT&T and Infrastructure Networks; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "060", - "brand": null, - "operator": "CoverageCo", - "status": "Not operational", - "bands": "CDMA / GSM", - "notes": "Vermont MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "070", - "brand": null, - "operator": "Adams Networks Inc", - "status": "Not operational", - "bands": "LTE 700", - "notes": "C block fixed broadband; Illinois; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "080", - "brand": "SyncSouth", - "operator": "South Georgia Regional Information Technology Authority", - "status": "Operational", - "bands": "UMTS-TDD 700", - "notes": "LTE 700 planned" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "090", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Allied Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "100", - "brand": null, - "operator": "ClearSky Technologies, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "110", - "brand": null, - "operator": "Texas Energy Network LLC", - "status": "Not operational", - "bands": "LTE", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "120", - "brand": "Appalachian Wireless", - "operator": "East Kentucky Network, LLC", - "status": "Operational", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "130", - "brand": "Appalachian Wireless", - "operator": "East Kentucky Network, LLC", - "status": "Operational", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "140", - "brand": "Revol Wireless", - "operator": "Cleveland Unlimited, Inc.", - "status": "Not operational", - "bands": "CDMA", - "notes": "Shut down 2014, acquired by Sprint; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "150", - "brand": "NorthwestCell", - "operator": "Northwest Missouri Cellular LP", - "status": "Operational", - "bands": "LTE 700", - "notes": "Missouri" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "160", - "brand": "Chat Mobility", - "operator": "RSA1 Limited Partnership", - "status": "Operational", - "bands": "LTE 700", - "notes": "Iowa" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "170", - "brand": "Chat Mobility", - "operator": "Iowa RSA No. 2 LP", - "status": "Operational", - "bands": "LTE 700", - "notes": "Iowa" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "180", - "brand": null, - "operator": "Limitless Mobile LLC", - "status": "Operational", - "bands": "LTE 1900", - "notes": "Former Keystone Wireless LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "190", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "200", - "brand": null, - "operator": "Voyager Mobility LLC", - "status": "Not operational", - "bands": "MVNO", - "notes": "Shut down 2015; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "210", - "brand": null, - "operator": "Aspenta International, Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "220", - "brand": "Chariton Valley", - "operator": "Chariton Valley Communications Corporation, Inc.", - "status": "Operational", - "bands": "LTE 700", - "notes": "being acquired by Verizon Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "230", - "brand": "SRT Communications", - "operator": "North Dakota Network Co.", - "status": "Not operational", - "bands": "Unknown", - "notes": "North Dakota; shut down in 2017" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "240", - "brand": "Sprint", - "operator": "Sprint Corporation", - "status": "Not operational", - "bands": "Unknown", - "notes": "Former Clearwire; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "250", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "LTE 850 / LTE 1900 / TD-LTE 2500", - "notes": "Former Clearwire, Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "260", - "brand": null, - "operator": "WorldCell Solutions LLC", - "status": "Unknown", - "bands": "LTE 1900", - "notes": "Former NewCore, Central LTE Holdings" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "270", - "brand": "Pioneer Cellular", - "operator": "Cellular Network Partnership", - "status": "Operational", - "bands": "LTE 700", - "notes": "Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "280", - "brand": "Pioneer Cellular", - "operator": "Cellular Network Partnership", - "status": "Operational", - "bands": "LTE 700", - "notes": "Oklahoma" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "290", - "brand": "STRATA", - "operator": "Uintah Basin Electronic Telecommunications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "300", - "brand": "telna Mobile", - "operator": "Telecom North America Mobile, Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "310", - "brand": null, - "operator": "Clear Stream Communications, LLC", - "status": "Operational", - "bands": "LTE 700", - "notes": "North Carolina; owned by Carolina West Wireless, Wilkes Communications" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "320", - "brand": null, - "operator": "RTC Communications LLC", - "status": "Operational", - "bands": "LTE 700", - "notes": "Indiana; former S and R Communications LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "330", - "brand": "Nemont", - "operator": "Nemont Communications, Inc.", - "status": "Operational", - "bands": "LTE 700", - "notes": "Montana" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "340", - "brand": "MTA", - "operator": "Matanuska Telephone Association, Inc.", - "status": "Not operational", - "bands": "LTE 700", - "notes": "Alaska; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "350", - "brand": null, - "operator": "Triangle Communication System Inc.", - "status": "Operational", - "bands": "LTE 700", - "notes": "Montana; being acquired by Verizon Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "360", - "brand": null, - "operator": "Wes-Tex Telecommunications, Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Texas" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "370", - "brand": "Choice Wireless", - "operator": "Commnet Wireless", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "380", - "brand": null, - "operator": "Copper Valley Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "390", - "brand": "FTC Wireless", - "operator": "FTC Communications LLC", - "status": "Operational", - "bands": "UMTS / LTE", - "notes": "South Carolina; owned by Farmers Telephone Cooperative" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "400", - "brand": "Mid-Rivers Wireless", - "operator": "Mid-Rivers Telephone Cooperative", - "status": "Operational", - "bands": "LTE 700", - "notes": "Montana; network to shut down 1 August 2019" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "410", - "brand": null, - "operator": "Eltopia Communications, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "420", - "brand": null, - "operator": "Nex-Tech Wireless", - "status": "Operational", - "bands": "LTE 700 / 5G 600", - "notes": "Kansas" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "430", - "brand": null, - "operator": "Silver Star Communications", - "status": "Operational", - "bands": "LTE 700", - "notes": "Wyoming; fixed wireless, CDMA shut down Dec 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "440", - "brand": null, - "operator": "Kajeet, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Consolidated Telcom" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "450", - "brand": null, - "operator": "Cable & Communications Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "460", - "brand": null, - "operator": "Ketchikan Public Utilities (KPU)", - "status": "Operational", - "bands": "LTE 700", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "470", - "brand": "Carolina West Wireless", - "operator": "Carolina West Wireless", - "status": "Operational", - "bands": "LTE 700", - "notes": "North Carolina" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "480", - "brand": "Nemont", - "operator": "Sagebrush Cellular, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "490", - "brand": null, - "operator": "TrustComm, Inc.", - "status": "Not operational", - "bands": "Satellite", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "500", - "brand": null, - "operator": "AB Spectrum LLC", - "status": "Not operational", - "bands": "LTE 700", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "510", - "brand": null, - "operator": "WUE Inc.", - "status": "Unknown", - "bands": "LTE", - "notes": "Nevada; CDMA shut down" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "520", - "brand": null, - "operator": "ANIN", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "530", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "Unknown", - "notes": "Former Sprint Corporation" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "540", - "brand": null, - "operator": "Broadband In Hand LLC", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "550", - "brand": null, - "operator": "Great Plains Communications, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "560", - "brand": null, - "operator": "NHLT Inc.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "570", - "brand": "Blue Wireless", - "operator": "Buffalo-Lake Erie Wireless Systems Co., LLC", - "status": "Not operational", - "bands": "CDMA / LTE", - "notes": "shut down July 2020" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "580", - "brand": null, - "operator": "Google LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Shuttle Wireless Solutions Inc., Bingham McCutchen LLP, Morgan, Lewis & Bockius" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "590", - "brand": "NMU", - "operator": "Northern Michigan University", - "status": "Operational", - "bands": "LTE 2600", - "notes": "EBS Band (LTE band 7)" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "600", - "brand": "Nemont", - "operator": "Sagebrush Cellular, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "610", - "brand": null, - "operator": "ShawnTech Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former nTelos" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "620", - "brand": null, - "operator": "GlobeTouch Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Fogg Mobile, Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "630", - "brand": null, - "operator": "NetGenuity, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "640", - "brand": "Nemont", - "operator": "Sagebrush Cellular, Inc.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "650", - "brand": null, - "operator": "Brightlink", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former 365 Wireless LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "660", - "brand": "nTelos", - "operator": "nTelos Wireless", - "status": "Not operational", - "bands": "LTE 1900", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "670", - "brand": "FirstNet", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "680", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "690", - "brand": null, - "operator": "TGS, LLC", - "status": "Operational", - "bands": "MVNO/MVNE", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "700", - "brand": null, - "operator": "Wireless Partners, LLC", - "status": "Operational", - "bands": "LTE 700", - "notes": "Maine" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "710", - "brand": null, - "operator": "Great North Woods Wireless LLC", - "status": "Operational", - "bands": "LTE", - "notes": "New Hampshire; former Wireless Partners, LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "720", - "brand": "Southern LINC", - "operator": "Southern Communications Services", - "status": "Operational", - "bands": "LTE 850", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "730", - "brand": null, - "operator": "Triangle Communication System Inc.", - "status": "Not operational", - "bands": "CDMA", - "notes": "Montana; acquired by Verizon Wireless; CDMA shut down Dec 2022" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "740", - "brand": "Locus Telecommunications", - "operator": "KDDI America, Inc.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "750", - "brand": null, - "operator": "Artemis Networks LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "760", - "brand": "ASTAC", - "operator": "Arctic Slope Telephone Association Cooperative", - "status": "Unknown", - "bands": "Unknown", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "770", - "brand": "Verizon", - "operator": "Verizon Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "780", - "brand": null, - "operator": "Redzone Wireless", - "status": "Operational", - "bands": "TD-LTE 2500", - "notes": "LTE band 41; Maine" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "790", - "brand": null, - "operator": "Gila Electronics", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "800", - "brand": null, - "operator": "Cirrus Core Networks", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "810", - "brand": "BBCP", - "operator": "Bristol Bay Telephone Cooperative", - "status": "Operational", - "bands": "CDMA / LTE", - "notes": "Alaska" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "820", - "brand": null, - "operator": "Santel Communications Cooperative, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "South Dakota" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "830", - "brand": null, - "operator": "Kings County Office of Education", - "status": "Operational", - "bands": "WiMAX", - "notes": "California" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "840", - "brand": null, - "operator": "South Georgia Regional Information Technology Authority", - "status": "Unknown", - "bands": "Unknown", - "notes": "Georgia" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "850", - "brand": null, - "operator": "Onvoy Spectrum, LLC", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former Emergency Networks LLC" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "860", - "brand": "ClearTalk", - "operator": "Flat Wireless, LLC", - "status": "Not operational", - "bands": "CDMA / LTE 1900 / LTE 1700", - "notes": "Texas; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "870", - "brand": null, - "operator": "GigSky Mobile, LLC", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "880", - "brand": null, - "operator": "Albemarle County Public Schools", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "890", - "brand": null, - "operator": "Circle Gx", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "900", - "brand": "ClearTalk", - "operator": "Flat West Wireless, LLC", - "status": "Operational", - "bands": "CDMA / LTE 1900 / LTE 1700", - "notes": "Arizona, California" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "910", - "brand": "Appalachian Wireless", - "operator": "East Kentucky Network, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "920", - "brand": null, - "operator": "Northeast Wireless Networks LLC", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "930", - "brand": null, - "operator": "Hewlett-Packard Communication Services, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "940", - "brand": null, - "operator": "Webformix", - "status": "Operational", - "bands": "Unknown", - "notes": "Oregon" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "950", - "brand": null, - "operator": "Custer Telephone Co-op (CTCI)", - "status": "Operational", - "bands": "CDMA", - "notes": "Idaho" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "960", - "brand": null, - "operator": "M&A Technology, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "970", - "brand": null, - "operator": "IOSAZ Intellectual Property LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "980", - "brand": null, - "operator": "Mark Twain Communications Company", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "312", - "mnc": "990", - "brand": "Premier Broadband", - "operator": "Premier Holdings LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "000", - "brand": null, - "operator": "Tennessee Wireless", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "010", - "brand": "Bravado Wireless", - "operator": "Cross Wireless LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Sprocket Wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "020", - "brand": "CTC Wireless", - "operator": "Cambridge Telephone Company Inc.", - "status": "Operational", - "bands": "CDMA", - "notes": "Idaho" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "030", - "brand": null, - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Snake River PCS" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "040", - "brand": "NNTC Wireless", - "operator": "Nucla-Naturita Telephone Company", - "status": "Operational", - "bands": "CDMA", - "notes": "Colorado" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "050", - "brand": "Breakaway Wireless", - "operator": "Manti Tele Communications Company, Inc.", - "status": "Not operational", - "bands": "CDMA", - "notes": "Utah; shut down 2018; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "060", - "brand": null, - "operator": "Country Wireless", - "status": "Operational", - "bands": "Unknown", - "notes": "Wisconsin" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "061", - "brand": null, - "operator": "Country Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "070", - "brand": null, - "operator": "Midwest Network Solutions Hub LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "080", - "brand": null, - "operator": "Speedwavz LLP", - "status": "Operational", - "bands": "Unknown", - "notes": "Ohio" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "090", - "brand": null, - "operator": "Vivint Wireless, Inc.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "100", - "brand": "FirstNet", - "operator": "AT&T FirstNet", - "status": "Operational", - "bands": "LTE 700", - "notes": "D Block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "110", - "brand": "FirstNet", - "operator": "AT&T FirstNet", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "120", - "brand": "FirstNet", - "operator": "AT&T FirstNet", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "130", - "brand": "FirstNet", - "operator": "AT&T FirstNet", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "140", - "brand": "FirstNet", - "operator": "AT&T FirstNet", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "150", - "brand": "FirstNet", - "operator": "700 MHz Public Safety Broadband", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "160", - "brand": "FirstNet", - "operator": "700 MHz Public Safety Broadband", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "170", - "brand": "FirstNet", - "operator": "700 MHz Public Safety Broadband", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "180", - "brand": "FirstNet", - "operator": "700 MHz Public Safety Broadband", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "190", - "brand": "FirstNet", - "operator": "700 MHz Public Safety Broadband", - "status": "Unknown", - "bands": "LTE", - "notes": "D Block for future use" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "200", - "brand": null, - "operator": "Mercury Network Corporation", - "status": "Operational", - "bands": "Unknown", - "notes": "Michigan" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "210", - "brand": "AT&T", - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "220", - "brand": null, - "operator": "Custer Telephone Co-op (CTCI)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "230", - "brand": null, - "operator": "Velocity Communications Inc.", - "status": "Unknown", - "bands": "LTE", - "notes": "Montana" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "240", - "brand": "Peak Internet", - "operator": "Fundamental Holdings, Corp.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Colorado" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "250", - "brand": null, - "operator": "Imperial County Office of Education", - "status": "Unknown", - "bands": "LTE", - "notes": "California" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "260", - "brand": null, - "operator": "Expeto Wireless Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "270", - "brand": null, - "operator": "Blackstar Management", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "280", - "brand": null, - "operator": "King Street Wireless, LP", - "status": "Unknown", - "bands": "LTE 700", - "notes": "Fixed wireless; mobile service through U.S. Cellular" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "290", - "brand": null, - "operator": "Gulf Coast Broadband LLC", - "status": "Unknown", - "bands": "LTE", - "notes": "Fixed wireless; Louisiana" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "300", - "brand": null, - "operator": "Cambio WiFi of Delmarva, LLC", - "status": "Operational", - "bands": "LTE", - "notes": "Maryland" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "310", - "brand": null, - "operator": "CAL.NET, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "320", - "brand": null, - "operator": "Paladin Wireless", - "status": "Unknown", - "bands": "LTE 3500", - "notes": "Fixed wireless; Georgia" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "330", - "brand": null, - "operator": "CenturyTel Broadband Services LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "340", - "brand": "Dish", - "operator": "Dish Wireless", - "status": "Operational", - "bands": "5G 600 / 5G 1700", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "350", - "brand": "Dish", - "operator": "Dish Wireless", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "360", - "brand": "Dish", - "operator": "Dish Wireless", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "370", - "brand": null, - "operator": "Red Truck Wireless, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "380", - "brand": null, - "operator": "OptimERA Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "390", - "brand": null, - "operator": "Altice USA Wireless, Inc.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "400", - "brand": null, - "operator": "Texoma Communications, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "410", - "brand": null, - "operator": "pdvWireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "420", - "brand": null, - "operator": "Hudson Valley Wireless", - "status": "Unknown", - "bands": "LTE 3500", - "notes": "CBRS fixed wireless; New York" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "440", - "brand": null, - "operator": "Arvig Enterprises, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": "Minnesota" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "450", - "brand": null, - "operator": "Spectrum Wireless Holdings, LLC", - "status": "Unknown", - "bands": "Unknown 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "460", - "brand": "Mobi", - "operator": "Mobi, Inc.", - "status": "Operational", - "bands": "LTE / CBRS", - "notes": "Hawaiʻi;CDMA network sold to Verizon in 2014" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "470", - "brand": null, - "operator": "San Diego Gas & Electric Company", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "480", - "brand": null, - "operator": "Ready Wireless, LLC", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "490", - "brand": null, - "operator": "Puloli, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "500", - "brand": null, - "operator": "Shelcomm, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "510", - "brand": "Claro", - "operator": "Puerto Rico Telephone Company", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "520", - "brand": null, - "operator": "Florida Broadband, Inc.", - "status": "Operational", - "bands": "Unknown", - "notes": "Fixed wireless; Florida" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "540", - "brand": null, - "operator": "Nokia Innovations US LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "550", - "brand": null, - "operator": "Mile High Networks LLC", - "status": "Operational", - "bands": "Unknown", - "notes": "Fixed wireless; Arizona" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "560", - "brand": null, - "operator": "Transit Wireless LLC", - "status": "Operational", - "bands": "Unknown", - "notes": "Network for MTA / NYCTA" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "570", - "brand": "Pioneer Cellular", - "operator": "Cellular Network Partnership", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "580", - "brand": null, - "operator": "Telecall Telecommunications Corp.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "590", - "brand": "Southern LINC", - "operator": "Southern Communications Services, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "600", - "brand": null, - "operator": "ST Engineering iDirect", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "610", - "brand": null, - "operator": "Crystal Automation Systems, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "620", - "brand": null, - "operator": "OmniProphis Corporation", - "status": "Unknown", - "bands": "Unknown 1700", - "notes": "Former Screened Images, Inc." - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "630", - "brand": null, - "operator": "LICT Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "640", - "brand": null, - "operator": "Geoverse LLC", - "status": "Unknown", - "bands": "LTE 3500", - "notes": "private networks" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "650", - "brand": null, - "operator": "Chevron USA, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "660", - "brand": null, - "operator": "Hudson Valley Wireless", - "status": "Unknown", - "bands": "LTE 3500", - "notes": "CBRS fixed wireless; New York" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "670", - "brand": null, - "operator": "Hudson Valley Wireless", - "status": "Unknown", - "bands": "LTE 3500", - "notes": "CBRS fixed wireless; New York" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "680", - "brand": null, - "operator": "Hudson Valley Wireless", - "status": "Unknown", - "bands": "LTE 3500", - "notes": "CBRS fixed wireless; New York" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "690", - "brand": null, - "operator": "Shenandoah Cable Television, LLC", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "700", - "brand": null, - "operator": "Ameren Services Company", - "status": "Unknown", - "bands": "800", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "710", - "brand": null, - "operator": "Extent Systems", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "720", - "brand": null, - "operator": "1st Point Communications, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "730", - "brand": null, - "operator": "TruAccess Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "740", - "brand": null, - "operator": "RTO Wireless, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "750", - "brand": "ZipLink", - "operator": "CellTex Networks, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "760", - "brand": null, - "operator": "Hologram, Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "770", - "brand": null, - "operator": "Tango Networks", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "780", - "brand": null, - "operator": "Windstream Holdings", - "status": "Unknown", - "bands": "Unknown 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "790", - "brand": "Liberty", - "operator": "Liberty Cablevision of Puerto Rico LLC", - "status": "Not operational", - "bands": "UMTS 850 / UMTS 1900 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2300 / 5G 850", - "notes": "Puerto Rico; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "800", - "brand": null, - "operator": "Wireless Technologies of Nebraska", - "status": "Not operational", - "bands": "Unknown", - "notes": "Nebraska, Iowa; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "810", - "brand": null, - "operator": "Watch Communications", - "status": "Operational", - "bands": "LTE 3500", - "notes": "Illinois, Indiana, Kentucky & Ohio;" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "820", - "brand": null, - "operator": "Inland Cellular Telephone Company", - "status": "Not operational", - "bands": "LTE", - "notes": "Washington; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "830", - "brand": null, - "operator": "360 Communications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "840", - "brand": null, - "operator": "CellBlox Acquisitions", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "850", - "brand": null, - "operator": "Softcom Internet Communications, Inc", - "status": "Operational", - "bands": "LTE", - "notes": "California" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "860", - "brand": "Nextlink", - "operator": "AMG Technology Investment Group", - "status": "Operational", - "bands": "Unknown 3500", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "870", - "brand": null, - "operator": "ElektraFi LLC", - "status": "Operational", - "bands": "5G 3500", - "notes": "Texas" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "880", - "brand": null, - "operator": "Shuttle wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "890", - "brand": "TCOE", - "operator": "Tulare County Office of Education", - "status": "Operational", - "bands": "Unknown", - "notes": "California" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "900", - "brand": null, - "operator": "Tribal Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "910", - "brand": null, - "operator": "San Diego Gas & Electric", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "920", - "brand": null, - "operator": "JCI", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "930", - "brand": "Rock Wireless", - "operator": "Standing Rock Telecom", - "status": "Operational", - "bands": "LTE 2500", - "notes": "North Dakota" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "940", - "brand": null, - "operator": "Motorola Solutions", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "950", - "brand": null, - "operator": "Cheyenne and Arapaho Development Group", - "status": "Unknown", - "bands": "2500", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "960", - "brand": null, - "operator": "Townes 5G, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "970", - "brand": null, - "operator": "Tycrhron", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "980", - "brand": null, - "operator": "Next Generation Application LLC", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "313", - "mnc": "990", - "brand": null, - "operator": "Ericsson US", - "status": "Unknown", - "bands": "Unknown", - "notes": "EEC/ATL Private Networks" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "010", - "brand": null, - "operator": "Boingo Wireless Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "020", - "brand": null, - "operator": "Spectrum Wireless Holdings, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "030", - "brand": null, - "operator": "Baicells Technologies North America Inc.", - "status": "Unknown", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "060", - "brand": null, - "operator": "Texas A&M University", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "070", - "brand": null, - "operator": "Texas A&M University", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "080", - "brand": null, - "operator": "Texas A&M University", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "090", - "brand": null, - "operator": "Southern LINC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "100 - 190", - "brand": null, - "operator": "Reserved for Public Safety", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "200", - "brand": null, - "operator": "XF Wireless Investments, LLC", - "status": "Unknown", - "bands": "Unknown 3500", - "notes": "Owned by Comcast" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "210", - "brand": null, - "operator": "Telecom Resource Center", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "220", - "brand": null, - "operator": "Securus Technologies", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "230", - "brand": null, - "operator": "Trace-Tek LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": "Use in correctional institutions" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "240", - "brand": null, - "operator": "XF Wireless Investments, LLC", - "status": "Unknown", - "bands": "Unknown 3500", - "notes": "Owned by Comcast" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "260", - "brand": null, - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "270", - "brand": null, - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "280", - "brand": null, - "operator": "AT&T Mobility", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "290", - "brand": null, - "operator": "Wave", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "300", - "brand": null, - "operator": "Southern California Edison", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "310", - "brand": null, - "operator": "Terranet", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "320", - "brand": null, - "operator": "Agri-Valley Communications, Inc", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "330", - "brand": null, - "operator": "FreedomFi", - "status": "Unknown", - "bands": "TD-LTE 3500", - "notes": "CBRS" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "314", - "mnc": "340", - "brand": "e/marconi", - "operator": "E-Marconi LLC", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "315", - "mnc": "010", - "brand": "CBRS", - "operator": "Citizens Broadband Radio Service", - "status": "Unknown", - "bands": "TD-LTE 3500", - "notes": "LTE band 48" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "316", - "mnc": "010", - "brand": "Nextel", - "operator": "Nextel Communications", - "status": "Not operational", - "bands": "iDEN 800", - "notes": "Merged with Sprint forming Sprint Nextel; iDEN network shut down June 2013; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States of America", - "countryCode": "US", - "mcc": "316", - "mnc": "011", - "brand": "Southern LINC", - "operator": "Southern Communications Services", - "status": "Not operational", - "bands": "iDEN 800", - "notes": "shut down 2019; MNC withdrawn" - }, - { - "type": "National", - "countryName": "United States Virgin Islands (United States of America)", - "countryCode": "VI", - "mcc": "310", - "mnc": "120", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "LTE 850 / LTE 1900", - "notes": "Former Sprint Corporation; CDMA shut down May 2022" - }, - { - "type": "National", - "countryName": "United States Virgin Islands (United States of America)", - "countryCode": "VI", - "mcc": "310", - "mnc": "260", - "brand": "T-Mobile", - "operator": "T-Mobile US", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 700 / LTE 1900 / LTE 1700 / 5G 600", - "notes": "Former Cook Inlet West Wireless, Voicestream; now universal USA code. Also used for Ting." - }, - { - "type": "National", - "countryName": "United States Virgin Islands (United States of America)", - "countryCode": "VI", - "mcc": "310", - "mnc": "410", - "brand": "Liberty", - "operator": "Liberty", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / 5G 850", - "notes": "Formerly AT&T Mobility, Cingular Wireless" - }, - { - "type": "National", - "countryName": "United States Virgin Islands (United States of America)", - "countryCode": "VI", - "mcc": "311", - "mnc": "470", - "brand": "Viya", - "operator": "Vitelcom Cellular Inc.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / TD-LTE 2500", - "notes": "Former Innovative Wireless; US Virgin Islands" - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "01", - "brand": "AWCC", - "operator": "Afghan Wireless Communication Company", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "20", - "brand": "Roshan", - "operator": "Telecom Development Company Afghanistan Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "40", - "brand": "MTN", - "operator": "MTN Group Afghanistan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "50", - "brand": "Etisalat", - "operator": "Etisalat Afghanistan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "55", - "brand": "WASEL", - "operator": "WASEL Afghanistan", - "status": "Operational", - "bands": "CDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "80", - "brand": "Salaam", - "operator": "Afghan Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Afghanistan", - "countryCode": "AF", - "mcc": "412", - "mnc": "88", - "brand": "Salaam", - "operator": "Afghan Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Azerbaijan", - "countryCode": "AZ", - "mcc": "400", - "mnc": "01", - "brand": "Azercell", - "operator": null, - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Azerbaijan", - "countryCode": "AZ", - "mcc": "400", - "mnc": "02", - "brand": "Bakcell", - "operator": null, - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Azerbaijan", - "countryCode": "AZ", - "mcc": "400", - "mnc": "03", - "brand": "FONEX", - "operator": "CATEL", - "status": "Operational", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Azerbaijan", - "countryCode": "AZ", - "mcc": "400", - "mnc": "04", - "brand": "Nar Mobile", - "operator": "Azerfon", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Azerbaijan", - "countryCode": "AZ", - "mcc": "400", - "mnc": "05", - "brand": null, - "operator": "Special State Protection Service of the Republic of Azerbaijan", - "status": "Unknown", - "bands": "TETRA?", - "notes": null - }, - { - "type": "National", - "countryName": "Azerbaijan", - "countryCode": "AZ", - "mcc": "400", - "mnc": "06", - "brand": "Naxtel", - "operator": "Nakhtel LLC", - "status": "Operational", - "bands": "CDMA 800 / LTE 800 / LTE 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "01", - "brand": "Batelco", - "operator": "Bahrain Telecommunications Company", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800 / 5G 3500", - "notes": "GSM shut down Nov 2021" - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "02", - "brand": "zain BH", - "operator": "Zain Bahrain", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "03", - "brand": null, - "operator": "Civil Aviation Authority", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "04", - "brand": "stc", - "operator": "Stc Bahrain", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500", - "notes": "Former VIVA" - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "05", - "brand": "Batelco", - "operator": "Bahrain Telecommunications Company", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Royal Court use only" - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "06", - "brand": "stc", - "operator": "Stc Bahrain", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bahrain", - "countryCode": "BH", - "mcc": "426", - "mnc": "07", - "brand": null, - "operator": "TAIF", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "01", - "brand": "Grameenphone", - "operator": "Grameenphone Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "02", - "brand": "Robi", - "operator": "Axiata Bangladesh Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100", - "notes": "Formerly Aktel" - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "03", - "brand": "Banglalink", - "operator": "Banglalink Digital Communications Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": "VEON" - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "04", - "brand": "TeleTalk", - "operator": "Teletalk Bangladesh Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "05", - "brand": "Citycell", - "operator": "Pacific Bangladesh Telecom Limited", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Shutdown by Bangladesh Telecommunication Regulatory Commission in 2016" - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "07", - "brand": "Airtel", - "operator": "Bharti Airtel Bangladesh Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Formerly Warid Telcom, later Airtel. Currently merged with Robi keeping brand name Airtel" - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "09", - "brand": "ollo", - "operator": "Bangladesh Internet Exchange Limited (BIEL)", - "status": "Not operational", - "bands": "LTE 800 / LTE 2600 / WiMAX 3500", - "notes": "shut down 2019" - }, - { - "type": "National", - "countryName": "Bangladesh", - "countryCode": "BD", - "mcc": "470", - "mnc": "10", - "brand": "Banglalion", - "operator": "Banglalion Communications Ltd.", - "status": "Operational", - "bands": "TD-LTE 2600 / WiMAX 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Bhutan", - "countryCode": "BT", - "mcc": "402", - "mnc": "11", - "brand": "B-Mobile", - "operator": "Bhutan Telecom Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 850 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Bhutan", - "countryCode": "BT", - "mcc": "402", - "mnc": "17", - "brand": "B-Mobile", - "operator": "Bhutan Telecom Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Bhutan", - "countryCode": "BT", - "mcc": "402", - "mnc": "77", - "brand": "TashiCell", - "operator": "Tashi InfoComm Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "01", - "brand": "Cellcard", - "operator": "CamGSM / The Royal Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Mobitel" - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "02", - "brand": "Smart", - "operator": "Smart Axiata Co. Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "03", - "brand": "qb", - "operator": "Cambodia Advance Communications Co. Ltd", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "aka CADCOMMS" - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "04", - "brand": "qb", - "operator": "Cambodia Advance Communications Co. Ltd", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "aka CADCOMMS" - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "05", - "brand": "Smart", - "operator": "Smart Axiata Co. Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "06", - "brand": "Smart", - "operator": "Smart Axiata Co. Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "08", - "brand": "Metfone", - "operator": "Viettel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "09", - "brand": "Metfone", - "operator": "Viettel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Beeline" - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "11", - "brand": "SEATEL", - "operator": "SEATEL Cambodia", - "status": "Operational", - "bands": "LTE 850 / LTE 2600", - "notes": "Former Excell CDMA shut down 27 June 2015" - }, - { - "type": "National", - "countryName": "Cambodia", - "countryCode": "KH", - "mcc": "456", - "mnc": "18", - "brand": "Cellcard", - "operator": "The Royal Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Mfone" - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "00", - "brand": "China Mobile", - "operator": "China Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500 / 5G 700 / 5G 2500", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "01", - "brand": "China Unicom", - "operator": "China Unicom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 2100 / 5G 3500", - "notes": "CDMA network sold to China Telecom" - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "02", - "brand": "China Mobile", - "operator": "China Mobile", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "03", - "brand": "China Telecom", - "operator": "China Telecom", - "status": "Operational", - "bands": "CDMA2000 800", - "notes": "EV-DO" - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "04", - "brand": "China Mobile", - "operator": "Global Star Satellite", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "05", - "brand": "China Telecom", - "operator": "China Telecom", - "status": "Not operational", - "bands": "CDMA2000 800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "06", - "brand": "China Unicom", - "operator": "China Unicom", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "07", - "brand": "China Mobile", - "operator": "China Mobile", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "08", - "brand": "China Mobile", - "operator": "China Mobile", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "09", - "brand": "China Unicom", - "operator": "China Unicom", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "11", - "brand": "China Telecom", - "operator": "China Telecom", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "15", - "brand": "China Broadnet", - "operator": "China Broadnet", - "status": "Operational", - "bands": "LTE 1800 / LTE 900 / TD-LTE 1900 / TD-LTE 2300 / 5G 700 / 5G 2500", - "notes": "4th carrier of China. Shared frequencies with China Mobile" - }, - { - "type": "National", - "countryName": "China", - "countryCode": "CN", - "mcc": "460", - "mnc": "20", - "brand": "China Tietong", - "operator": "China Tietong", - "status": "Operational", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "00", - "brand": "1O1O / One2Free / New World Mobility / SUNMobile", - "operator": "CSL Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "01", - "brand": null, - "operator": "CITIC Telecom 1616", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on CSL network; network code operational only at land borders and Airport to attract inbound roamers to join 454-00" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "02", - "brand": null, - "operator": "CSL Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Network code operational only at land borders and Airport to attract inbound roamers to join 454-00" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "03", - "brand": "3", - "operator": "Hutchison Telecom", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "04", - "brand": "3 (2G)", - "operator": "Hutchison Telecom", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Shut down Sep 2021" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "05", - "brand": "3 (CDMA)", - "operator": "Hutchison Telecom", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Shut down Nov 2008" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "06", - "brand": "SmarTone", - "operator": "SmarTone Mobile Communications Limited", - "status": "Operational", - "bands": "UMTS 850 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": "GSM shut down Oct 2022" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "07", - "brand": "China Unicom", - "operator": "China Unicom (Hong Kong) Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on 3 Hong Kong Mobile network code operational only at land borders and Airport to attract inbound roamers to join 454-16 or 454-19" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "08", - "brand": "Truphone", - "operator": "Truphone Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Trident" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "09", - "brand": null, - "operator": "China Motion Telecom", - "status": "Not operational", - "bands": "MVNO", - "notes": "MVNO on CSL network; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "10", - "brand": "New World Mobility", - "operator": "CSL Limited", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Signal Combined with 454-00" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "11", - "brand": null, - "operator": "China-Hong Kong Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on PCCW Mobile and Hutchison Telecom networks" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "12", - "brand": "CMCC HK", - "operator": "China Mobile Hong Kong Company Limited", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / TD-SCDMA 2000 / LTE 900 /LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 3500", - "notes": "Formerly Peoples" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "13", - "brand": "CMCC HK", - "operator": "China Mobile Hong Kong Company Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO on PCCW Mobile (3G)" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "14", - "brand": null, - "operator": "Hutchison Telecom", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Only at land borders and Airport to attract inbound roamers; shut down Sep 2021" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "15", - "brand": null, - "operator": "SmarTone Mobile Communications Limited", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Only at land borders and Airport to attract inbound roamers; shut down Oct 2022" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "16", - "brand": "PCCW Mobile (2G)", - "operator": "PCCW", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Formerly SUNDAY" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "17", - "brand": null, - "operator": "SmarTone Mobile Communications Limited", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Only at land borders and Airport to attract inbound roamers; shut down Oct 2022" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "18", - "brand": null, - "operator": "CSL Limited", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "19", - "brand": "PCCW Mobile (3G)", - "operator": "PCCW-HKT", - "status": "Operational", - "bands": "UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "20", - "brand": "PCCW Mobile (4G)", - "operator": "PCCW-HKT", - "status": "Operational", - "bands": "LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "21", - "brand": null, - "operator": "21Vianet Mobile Ltd.", - "status": "Not operational", - "bands": "MVNO", - "notes": "Closed on 1 February 2019" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "22", - "brand": null, - "operator": "263 Mobile Communications (HongKong) Limited", - "status": "Operational", - "bands": "MVNO", - "notes": "Formerly P Plus Communications, Delcom (HK) Ltd" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "23", - "brand": "Lycamobile", - "operator": "Lycamobile Hong Kong Ltd", - "status": "Not operational", - "bands": "MVNO", - "notes": "Closed on 27 April 2018; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "24", - "brand": null, - "operator": "Multibyte Info Technology Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "25", - "brand": null, - "operator": "Hong Kong Government", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "26", - "brand": null, - "operator": "Hong Kong Government", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "29", - "brand": "PCCW Mobile (CDMA)", - "operator": "PCCW-HKT", - "status": "Operational", - "bands": "CDMA 800", - "notes": "CDMA2000 1xEV-DO Rev A network for inbound roamers, with limited coverage" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "30", - "brand": "CMCC HK", - "operator": "China Mobile Hong Kong Company Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former China Data Enterprises Ltd" - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "31", - "brand": "CTExcel", - "operator": "China Telecom Global Limited", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "32", - "brand": null, - "operator": "Hong Kong Broadband Network Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "35", - "brand": null, - "operator": "Webbing Hong Kong Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Hong Kong", - "countryCode": "HK", - "mcc": "454", - "mnc": "36", - "brand": null, - "operator": "Easco Telecommunications Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "01", - "brand": "Vi India", - "operator": "Haryana", - "status": "Operational", - "bands": "GSM 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "02", - "brand": "AirTel", - "operator": "Punjab", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "03", - "brand": "AirTel", - "operator": "Himachal Pradesh", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "04", - "brand": "Vi India", - "operator": "Delhi & NCR", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "05", - "brand": "Vi India", - "operator": "Gujarat", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Hutch, Fascel, Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "07", - "brand": "Vi India", - "operator": "Andhra Pradesh and Telangana", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "09", - "brand": "Reliance", - "operator": "Assam", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "10", - "brand": "AirTel", - "operator": "Delhi & NCR", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "11", - "brand": "Vi India", - "operator": "Delhi & NCR", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "12", - "brand": "Vi India", - "operator": "Haryana", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Escotel, IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "13", - "brand": "Vi India", - "operator": "Andhra Pradesh and Telangana", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "14", - "brand": "Vi India", - "operator": "Punjab", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Spice, IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "15", - "brand": "Vi India", - "operator": "Uttar Pradesh (East)", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "16", - "brand": "Airtel", - "operator": "North East", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": "Former Hexacom" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "17", - "brand": "AIRCEL", - "operator": "West Bengal", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "18", - "brand": "Reliance", - "operator": "Himachal Pradesh", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "19", - "brand": "Vi India", - "operator": "Kerala", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE-2300 / TD-LTE 2500", - "notes": "Former Escotel, IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "20", - "brand": "Vi India", - "operator": "Mumbai", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Hutchison Maxtouch, Orange, Hutch, Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "21", - "brand": "Loop Mobile", - "operator": "Mumbai", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Former BPL Mobile; licence expired 2014" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "22", - "brand": "Vi India", - "operator": "Maharashtra & Goa", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "23", - "brand": "Reliance", - "operator": "West Bengal", - "status": "Not operational", - "bands": "LTE", - "notes": "Reliance Telecom" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "24", - "brand": "Vi India", - "operator": "Gujarat", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "25", - "brand": "AIRCEL", - "operator": "Bihar", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "27", - "brand": "Vi India", - "operator": "Maharashtra & Goa", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "28", - "brand": "AIRCEL", - "operator": "Odisha", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "29", - "brand": "AIRCEL", - "operator": "Assam", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "30", - "brand": "Vi India", - "operator": "Kolkata", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India, Command, Hutch" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "31", - "brand": "AirTel", - "operator": "Kolkata", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "34", - "brand": "BSNL Mobile", - "operator": "Haryana", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "35", - "brand": "Aircel", - "operator": "Himachal Pradesh", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "36", - "brand": "Reliance", - "operator": "Bihar & Jharkhand", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "37", - "brand": "Aircel", - "operator": "Jammu & Kashmir", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "38", - "brand": "BSNL Mobile", - "operator": "Assam", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "40", - "brand": "AirTel", - "operator": "Chennai", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "41", - "brand": "Aircel", - "operator": "Chennai", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Former RPG; bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "42", - "brand": "Aircel", - "operator": "Tamil Nadu", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "43", - "brand": "Vi India", - "operator": "Tamil Nadu", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "44", - "brand": "Vi India", - "operator": "Karnataka", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100", - "notes": "Former Spice, IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "45", - "brand": "Airtel", - "operator": "Karnataka", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "46", - "brand": "Vi India", - "operator": "Kerala", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE-2300 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "48", - "brand": "Dishnet Wireless", - "operator": "Unknown", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "49", - "brand": "Airtel", - "operator": "Andhra Pradesh and Telangana", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "50", - "brand": "Reliance", - "operator": "North East", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "51", - "brand": "BSNL Mobile", - "operator": "Himachal Pradesh", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "52", - "brand": "Reliance", - "operator": "Odisha", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "53", - "brand": "BSNL Mobile", - "operator": "Punjab", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "54", - "brand": "BSNL Mobile", - "operator": "Uttar Pradesh (West)", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "55", - "brand": "BSNL Mobile", - "operator": "Uttar Pradesh (East)", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "56", - "brand": "Vi India", - "operator": "Uttar Pradesh (West)", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "57", - "brand": "BSNL Mobile", - "operator": "Gujarat", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "58", - "brand": "BSNL Mobile", - "operator": "Madhya Pradesh & Chhattisgarh", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "59", - "brand": "BSNL Mobile", - "operator": "Rajasthan", - "status": "Operational", - "bands": "CDMA 850 / GSM 900 / UMTS 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "60", - "brand": "Vi India", - "operator": "Rajasthan", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "62", - "brand": "BSNL Mobile", - "operator": "Jammu & Kashmir", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "64", - "brand": "BSNL Mobile", - "operator": "Chennai", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "66", - "brand": "BSNL Mobile", - "operator": "Maharashtra & Goa", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "67", - "brand": "Reliance", - "operator": "Madhya Pradesh & Chhattisgarh", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "68", - "brand": "MTNL", - "operator": "Delhi & NCR", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "To be merged with BSNL" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "69", - "brand": "MTNL", - "operator": "Mumbai", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "To be merged with BSNL" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "70", - "brand": "AirTel", - "operator": "Rajasthan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "71", - "brand": "BSNL Mobile", - "operator": "Karnataka (Bangalore)", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "72", - "brand": "BSNL Mobile", - "operator": "Kerala", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "73", - "brand": "BSNL Mobile", - "operator": "Andhra Pradesh and Telangana", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "74", - "brand": "BSNL Mobile", - "operator": "West Bengal", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "75", - "brand": "BSNL Mobile", - "operator": "Bihar", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "76", - "brand": "BSNL Mobile", - "operator": "Odisha", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "77", - "brand": "BSNL Mobile", - "operator": "North East", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "78", - "brand": "Vi India", - "operator": "Madhya Pradesh & Chattishgarh", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "79", - "brand": "BSNL Mobile", - "operator": "Andaman Nicobar", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "80", - "brand": "BSNL Mobile", - "operator": "Tamil Nadu", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "81", - "brand": "BSNL Mobile", - "operator": "Kolkata", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": "Former CellOne" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "82", - "brand": "Vi India", - "operator": "Himachal Pradesh", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "83", - "brand": "Reliance", - "operator": "Kolkata", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "84", - "brand": "Vi India", - "operator": "Chennai", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "85", - "brand": "Reliance", - "operator": "West Bengal", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "86", - "brand": "Vi India", - "operator": "Karnataka", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "87", - "brand": "Vi India", - "operator": "Rajasthan", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "88", - "brand": "Vi India", - "operator": "Punjab", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "89", - "brand": "Vi India", - "operator": "Uttar Pradesh (East)", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "90", - "brand": "AirTel", - "operator": "Maharashtra", - "status": "Operational", - "bands": "GSM 1800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "91", - "brand": "AIRCEL", - "operator": "Kolkata", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "92", - "brand": "AirTel", - "operator": "Mumbai", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "93", - "brand": "AirTel", - "operator": "Madhya Pradesh", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "94", - "brand": "AirTel", - "operator": "Tamil Nadu", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "95", - "brand": "AirTel", - "operator": "Kerala", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "96", - "brand": "AirTel", - "operator": "Haryana", - "status": "Operational", - "bands": "GSM 1800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "97", - "brand": "AirTel", - "operator": "Uttar Pradesh (West)", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "404", - "mnc": "98", - "brand": "AirTel", - "operator": "Gujarat", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "01", - "brand": "Reliance", - "operator": "Andhra Pradesh and Telangana", - "status": "Not operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "025", - "brand": "TATA DOCOMO", - "operator": "Andhra Pradesh and Telangana", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "026", - "brand": "TATA DOCOMO", - "operator": "Assam", - "status": "Not operational", - "bands": "CDMA 850", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "027", - "brand": "TATA DOCOMO", - "operator": "Bihar/Jharkhand", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "028", - "brand": "TATA DOCOMO", - "operator": "Chennai", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "029", - "brand": "TATA DOCOMO", - "operator": "Delhi", - "status": "Not operational", - "bands": "CDMA 850", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "03", - "brand": "Reliance", - "operator": "Bihar", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "030", - "brand": "TATA DOCOMO", - "operator": "Gujarat", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "031", - "brand": "TATA DOCOMO", - "operator": "Haryana", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "032", - "brand": "TATA DOCOMO", - "operator": "Himachal Pradesh", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "033", - "brand": "TATA DOCOMO", - "operator": "Jammu & Kashmir", - "status": "Not operational", - "bands": "CDMA 850", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "034", - "brand": "TATA DOCOMO", - "operator": "Karnataka", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "035", - "brand": "TATA DOCOMO", - "operator": "Kerala", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "036", - "brand": "TATA DOCOMO", - "operator": "Kolkata", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "037", - "brand": "TATA DOCOMO", - "operator": "Maharashtra & Goa", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "038", - "brand": "TATA DOCOMO", - "operator": "Madhya Pradesh", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "039", - "brand": "TATA DOCOMO", - "operator": "Mumbai", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "04", - "brand": "Reliance", - "operator": "Chennai", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "041", - "brand": "TATA DOCOMO", - "operator": "Odisha", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "042", - "brand": "TATA DOCOMO", - "operator": "Punjab", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "043", - "brand": "TATA DOCOMO", - "operator": "Rajasthan", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "044", - "brand": "TATA DOCOMO", - "operator": "Tamil Nadu including Chennai", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "045", - "brand": "TATA DOCOMO", - "operator": "Uttar Pradesh (East)", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "046", - "brand": "TATA DOCOMO", - "operator": "Uttar Pradesh (West) & Uttarakhand", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800 / UMTS 2100", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "047", - "brand": "TATA DOCOMO", - "operator": "West Bengal", - "status": "Not operational", - "bands": "CDMA 850 / GSM 1800", - "notes": "Merged with Airtel in 2019" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "05", - "brand": "Reliance", - "operator": "Delhi & NCR", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "06", - "brand": "Reliance", - "operator": "Gujarat", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "07", - "brand": "Reliance", - "operator": "Haryana", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "08", - "brand": "Reliance", - "operator": "Himachal Pradesh", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "09", - "brand": "Reliance", - "operator": "Jammu & Kashmir", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "10", - "brand": "Reliance", - "operator": "Karnataka", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "11", - "brand": "Reliance", - "operator": "Kerala", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "12", - "brand": "Reliance", - "operator": "Kolkata", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "13", - "brand": "Reliance", - "operator": "Maharashtra & Goa", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "14", - "brand": "Reliance", - "operator": "Madhya Pradesh", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "15", - "brand": "Reliance", - "operator": "Mumbai", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "17", - "brand": "Reliance", - "operator": "Odisha", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "18", - "brand": "Reliance", - "operator": "Punjab", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "19", - "brand": "Reliance", - "operator": "Rajasthan", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "20", - "brand": "Reliance", - "operator": "Tamil Nadu", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "21", - "brand": "Reliance", - "operator": "Uttar Pradesh (East)", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "22", - "brand": "Reliance", - "operator": "Uttar Pradesh (West)", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "23", - "brand": "Reliance", - "operator": "West Bengal", - "status": "Operational", - "bands": "LTE", - "notes": "Data-only as of 2020" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "51", - "brand": "AirTel", - "operator": "West Bengal", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "52", - "brand": "AirTel", - "operator": "Bihar & Jharkhand", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "53", - "brand": "AirTel", - "operator": "Odisha", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "54", - "brand": "AirTel", - "operator": "Uttar Pradesh (East)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "55", - "brand": "Airtel", - "operator": "Jammu & Kashmir", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "56", - "brand": "AirTel", - "operator": "Assam", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "66", - "brand": "Vi India", - "operator": "Uttar Pradesh (West)", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "67", - "brand": "Vi India", - "operator": "West Bengal", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "70", - "brand": "Vi India", - "operator": "Bihar & Jharkhand", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "750", - "brand": "Vi India", - "operator": "Jammu & Kashmir", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "751", - "brand": "Vi India", - "operator": "Assam", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "752", - "brand": "Vi India", - "operator": "Bihar & Jharkhand", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "753", - "brand": "Vi India", - "operator": "Odisha", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "754", - "brand": "Vi India", - "operator": "Himachal Pradesh", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "755", - "brand": "Vi India", - "operator": "North East", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "756", - "brand": "Vi India", - "operator": "Madhya Pradesh & Chhattisgarh", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500", - "notes": "Former Vodafone India" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "799", - "brand": "Vi India", - "operator": "Mumbai", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "800", - "brand": "AIRCEL", - "operator": "Delhi & NCR", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "801", - "brand": "AIRCEL", - "operator": "Andhra Pradesh and Telangana", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "802", - "brand": "AIRCEL", - "operator": "Gujarat", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "803", - "brand": "AIRCEL", - "operator": "Karnataka", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "804", - "brand": "AIRCEL", - "operator": "Maharashtra & Goa", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "805", - "brand": "AIRCEL", - "operator": "Mumbai", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "806", - "brand": "AIRCEL", - "operator": "Rajasthan", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "807", - "brand": "AIRCEL", - "operator": "Haryana", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "808", - "brand": "AIRCEL", - "operator": "Madhya Pradesh", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "809", - "brand": "AIRCEL", - "operator": "Kerala", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "810", - "brand": "AIRCEL", - "operator": "Uttar Pradesh (East)", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "811", - "brand": "AIRCEL", - "operator": "Uttar Pradesh (West)", - "status": "Not operational", - "bands": "GSM", - "notes": "Bankrupt in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "812", - "brand": "AIRCEL", - "operator": "Punjab", - "status": "Not operational", - "bands": "GSM", - "notes": "License cancelled by Supreme Court" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "819", - "brand": "Uninor", - "operator": "Andhra Pradesh and Telangana", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "818", - "brand": "Uninor", - "operator": "Uttar Pradesh (West)", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "820", - "brand": "Uninor", - "operator": "Karnataka", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "821", - "brand": "Uninor", - "operator": "Kerala", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "822", - "brand": "Uninor", - "operator": "Kolkata", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "824", - "brand": "Videocon Telecom", - "operator": "Assam", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Shut down in 2016" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "827", - "brand": "Videocon Telecom", - "operator": "Gujarat", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Shut down in 2016" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "834", - "brand": "Videocon Telecom", - "operator": "Madhya Pradesh", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Shut down in 2016" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "844", - "brand": "Uninor", - "operator": "Delhi & NCR", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "840", - "brand": "Jio", - "operator": "West Bengal", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "845", - "brand": "Vi India", - "operator": "Assam", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "846", - "brand": "Vi India", - "operator": "Jammu & Kashmir", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "847", - "brand": "Vi India", - "operator": "Karnataka", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "848", - "brand": "Vi India", - "operator": "Kolkata", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "849", - "brand": "Vi India", - "operator": "North East", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "850", - "brand": "Vi India", - "operator": "Odisha", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "851", - "brand": "Vi India", - "operator": "Punjab", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "852", - "brand": "Vi India", - "operator": "Tamil Nadu", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "853", - "brand": "Vi India", - "operator": "West Bengal", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "854", - "brand": "Jio", - "operator": "Andhra Pradesh", - "status": "Operational", - "bands": "LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "855", - "brand": "Jio", - "operator": "Assam", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "856", - "brand": "Jio", - "operator": "Bihar", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "857", - "brand": "Jio", - "operator": "Gujarat", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "858", - "brand": "Jio", - "operator": "Haryana", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "859", - "brand": "Jio", - "operator": "Himachal Pradesh", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "860", - "brand": "Jio", - "operator": "Jammu & Kashmir", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "861", - "brand": "Jio", - "operator": "Karnataka", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "862", - "brand": "Jio", - "operator": "Kerala", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "863", - "brand": "Jio", - "operator": "Madhya Pradesh", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "864", - "brand": "Jio", - "operator": "Maharashtra", - "status": "Operational", - "bands": "LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "865", - "brand": "Jio", - "operator": "North East", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "866", - "brand": "Jio", - "operator": "Odisha", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "867", - "brand": "Jio", - "operator": "Punjab", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "868", - "brand": "Jio", - "operator": "Rajasthan", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "869", - "brand": "Jio", - "operator": "Tamil Nadu (incl. Chennai)", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "870", - "brand": "Jio", - "operator": "Uttar Pradesh (West)", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "871", - "brand": "Jio", - "operator": "Uttar Pradesh (East)", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "872", - "brand": "Jio", - "operator": "Delhi", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "873", - "brand": "Jio", - "operator": "Kolkata", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "874", - "brand": "Jio", - "operator": "Mumbai", - "status": "Operational", - "bands": "LTE 850 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "875", - "brand": "Uninor", - "operator": "Assam", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "880", - "brand": "Uninor", - "operator": "West Bengal", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "881", - "brand": "S Tel", - "operator": "Assam", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "License cancelled in 2012" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "908", - "brand": "Vi India", - "operator": "Andhra Pradesh and Telangana", - "status": "Operational", - "bands": "GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "909", - "brand": "Vi India", - "operator": "Delhi", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "910", - "brand": "Vi India", - "operator": "Haryana", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500", - "notes": "Former IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "911", - "brand": "Vi India", - "operator": "Maharashtra", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500", - "notes": "Former SPICE IDEA" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "912", - "brand": "Etisalat DB (cheers)", - "operator": "Andhra Pradesh and Telangana", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "License cancelled in 2012" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "913", - "brand": "Etisalat DB (cheers)", - "operator": "Delhi & NCR", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "License cancelled in 2012" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "914", - "brand": "Etisalat DB (cheers)", - "operator": "Gujarat", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "License cancelled in 2012" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "917", - "brand": "Etisalat DB (cheers)", - "operator": "Kerala", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "License cancelled in 2012" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "927", - "brand": "Uninor", - "operator": "Gujarat", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "India", - "countryCode": "IN", - "mcc": "405", - "mnc": "929", - "brand": "Uninor", - "operator": "Maharashtra", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Airtel in 2018" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "01", - "brand": null, - "operator": "Kish Cell Pars", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "02", - "brand": "ApTel, AzarTel", - "operator": "Negin Ertebatat Ava", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "03", - "brand": null, - "operator": "Parsian Hamrah Lotus", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "04", - "brand": null, - "operator": "TOSE E FANAVARI ERTEBATAT NOVIN HAMRAH", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "05", - "brand": "Smart Comm", - "operator": "Hamrah Hooshmand Ayandeh", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "06", - "brand": "Arian-Tel", - "operator": "Ertebatat-e Arian Tel Co.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "07", - "brand": null, - "operator": "Hooshmand Amin Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "08", - "brand": "Shatel Mobile", - "operator": "Shatel Group", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "09", - "brand": "HiWEB", - "operator": "Dadeh Dostar asr Novin PJSC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "10", - "brand": "Samantel", - "operator": "Samantel Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "11", - "brand": "IR-TCI (Hamrah-e-Avval)", - "operator": "Mobile Communications Company of Iran (MCI)", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "12", - "brand": "Avacell (HiWEB)", - "operator": "Dadeh Dostar asr Novin PJSC", - "status": "Operational", - "bands": "LTE 800 / TD-LTE 2600", - "notes": "Mostly in rural and remote areas" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "13", - "brand": "HiWEB", - "operator": "Dadeh Dostar asr Novin PJSC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "14", - "brand": "TKC/KFZO", - "operator": "Kish Free Zone Organization", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "19", - "brand": "Espadan", - "operator": "Mobile Telecommunications Company of Esfahan", - "status": "Not operational", - "bands": "GSM 900", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "20", - "brand": "RighTel", - "operator": "Social Security Investment Co.", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "21", - "brand": "RighTel", - "operator": "Social Security Investment Co.", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "32", - "brand": "Taliya", - "operator": "Telecommunication Company of Iran (TCI)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Roaming TKC & TCI" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "35", - "brand": "MTN Irancell", - "operator": "MTN Irancell Telecommunications Services Company", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 3500 / TD-LTE 2300 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "40", - "brand": "Mobinnet", - "operator": "Ertebatat Mobinnet", - "status": "Operational", - "bands": "WiMAX / LTE 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "44", - "brand": "Mobinnet", - "operator": "Ertebatat Mobinnet", - "status": "Operational", - "bands": "WiMAX / LTE 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "45", - "brand": "Zi-Tel", - "operator": "Farabord Dadeh Haye Iranian Co.", - "status": "Operational", - "bands": "TD-LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "46", - "brand": "HiWEB", - "operator": "Dadeh Dostar asr Novin PJSC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "49", - "brand": null, - "operator": "Gostaresh Ertebatat Mabna", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "50", - "brand": "Shatel Mobile", - "operator": "Shatel Group", - "status": "Operational", - "bands": "TD-LTE 2600 MHz", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "51", - "brand": null, - "operator": "Pishgaman Tose'e Ertebatat", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "52", - "brand": null, - "operator": "Asiatech", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "70", - "brand": "MTCE", - "operator": "Telecommunication Company of Iran (TCI)", - "status": "Operational", - "bands": "GSM 900", - "notes": "Mostly in rural and remote areas (WLL)" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "71", - "brand": "KOOHE NOOR", - "operator": "ERTEBATAT KOOHE NOOR", - "status": "Operational", - "bands": "GSM 900", - "notes": "Mostly in rural and remote areas (WLL)" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "90", - "brand": "Iraphone", - "operator": "IRAPHONE GHESHM of Iran", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Mobile Phone" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "93", - "brand": "Iraphone", - "operator": "Iraphone", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Mostly in rural and remote areas" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "93", - "brand": "Farzanegan Pars", - "operator": "Farzanegan Pars", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Fixed Communication Provider (FCP)" - }, - { - "type": "National", - "countryName": "Iran", - "countryCode": "IR", - "mcc": "432", - "mnc": "99", - "brand": "TCI", - "operator": "TCI of Iran and Rightel", - "status": "Operational", - "bands": "GSM 850 / GSM 1900", - "notes": "Roaming IR70 & TCI & RIGHTEL (GSM WLL)" - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "00", - "brand": "Asia Cell", - "operator": "Asia Cell Telecommunications Company", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "05", - "brand": "Asia Cell", - "operator": "Asia Cell Telecommunications Company", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "08", - "brand": "SanaTel", - "operator": null, - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "20", - "brand": "Zain", - "operator": "Zain Iraq", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former MTC Atheer" - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "30", - "brand": "Zain", - "operator": "Zain Iraq", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Orascom Telecom (Iraqna)" - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "40", - "brand": "Korek", - "operator": "Telecom Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "45", - "brand": "Mobitel", - "operator": "Mobitel Co. Ltd.", - "status": "Operational", - "bands": "UMTS", - "notes": null - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "62", - "brand": "Itisaluna", - "operator": "Itisaluna Wireless CO.", - "status": "Operational", - "bands": "CDMA 800 / CDMA 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Iraq", - "countryCode": "IQ", - "mcc": "418", - "mnc": "92", - "brand": "Omnnea", - "operator": "Omnnea Wireless", - "status": "Operational", - "bands": "CDMA", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "01", - "brand": "Partner", - "operator": "Partner Communications Company Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / 5G 2600 / 5G 3500", - "notes": "Former Orange (until 2016)" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "02", - "brand": "Cellcom", - "operator": "Cellcom Israel Ltd.", - "status": "Operational", - "bands": "GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "03", - "brand": "Pelephone", - "operator": "Pelephone Communications Ltd.", - "status": "Operational", - "bands": "UMTS 850 / UMTS 2100 / LTE 1800 / 5G 2600 / 5G 3500", - "notes": "CDMA 850 shut down July 2017" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "04", - "brand": null, - "operator": "Globalsim Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "05", - "brand": "Jawwal", - "operator": "Palestine Cellular Communications Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Covering the Palestinian territories" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "06", - "brand": "Wataniya Mobile", - "operator": "Wataniya Palestine Ltd. (Ooredoo)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Covering the Palestinian territories" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "07", - "brand": "Hot Mobile", - "operator": "Hot Mobile Ltd.", - "status": "Operational", - "bands": "iDEN 800 / UMTS 2100 / LTE 1800 / LTE 2100 / 5G 2600 / 5G 3500", - "notes": "Former Mirs Communications; uses Pelephone network for roaming" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "08", - "brand": "Golan Telecom", - "operator": "Golan Telecom Ltd.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800", - "notes": "Acquired by Cellcom in Aug 2020" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "09", - "brand": "We4G", - "operator": "Marathon 018 Xphone Ltd.", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "10", - "brand": "Partner", - "operator": "Partner Communications Company Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": "Former Orange (until 2016)" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "11", - "brand": null, - "operator": "365 Telecom", - "status": "Not operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "12", - "brand": "x2one", - "operator": "Widely Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": "Former Free Telecom" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "13", - "brand": null, - "operator": "Ituran Cellular Communications", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "14", - "brand": "Youphone", - "operator": "Alon Cellular Ltd.", - "status": "Not operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "15", - "brand": "Home Cellular", - "operator": "Home Cellular Ltd.", - "status": "Not operational", - "bands": "MVNO", - "notes": "MVNO (Cellcom)" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "16", - "brand": "Rami Levy", - "operator": "Rami Levy Communications Ltd.", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO (Pelephone)" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "17", - "brand": "Sipme", - "operator": "Gale Phone", - "status": "Not operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "18", - "brand": "Cellact Communications", - "operator": "Cellact Communications Ltd.", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO (Pelephone)" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "19", - "brand": "019 Mobile", - "operator": "019 Communication Services Ltd. / TELZAR", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "20", - "brand": "Bezeq", - "operator": "Bezeq The Israeli Telecommunication Corp Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "21", - "brand": "Bezeq International", - "operator": "B.I.P. Communications Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "22", - "brand": null, - "operator": "Maskyoo Telephonia Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "23", - "brand": null, - "operator": "Beezz Communication Solutions Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "24", - "brand": "012 Mobile", - "operator": "Partner Communications Company Ltd.", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO (Partner)" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "25", - "brand": "IMOD", - "operator": "Israel Ministry of Defense", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "26", - "brand": "Annatel", - "operator": "LB Annatel Ltd.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "27", - "brand": null, - "operator": "BITIT Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "28", - "brand": null, - "operator": "PHI Networks", - "status": "Unknown", - "bands": "LTE 1800 / 5G 2600 / 5G 3500", - "notes": "Joint venture between Partner Communications Company and Hot Mobile" - }, - { - "type": "National", - "countryName": "Israel", - "countryCode": "IL", - "mcc": "425", - "mnc": "29", - "brand": null, - "operator": "CG Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": "Joint venture between Cellcom, Golan Telecom and Exphone" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "00", - "brand": "Y!Mobile", - "operator": "SoftBank Corp.", - "status": "Operational", - "bands": "UMTS 1800", - "notes": "band 3; UMTS to shut down Jan 2024" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "01", - "brand": null, - "operator": "KDDI Corporation", - "status": "Operational", - "bands": "TD-LTE 2500", - "notes": "band 41; WiMAX 2500 shut down 31 Mar 2020; former UQ Communications" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "02", - "brand": null, - "operator": "Hanshin Cable Engineering Co., Ltd.", - "status": "Unknown", - "bands": "WiMAX 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "03", - "brand": "IIJmio", - "operator": "Internet Initiative Japan Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "04", - "brand": null, - "operator": "Japan Radio Company, Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "05", - "brand": null, - "operator": "Wireless City Planning Inc.", - "status": "Operational", - "bands": "TD-LTE 2500", - "notes": "band 41; owned by SoftBank" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "06", - "brand": null, - "operator": "SAKURA Internet Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "07", - "brand": null, - "operator": "closip, Inc.", - "status": "Unknown", - "bands": "MVNO", - "notes": "Former LTE-X" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "08", - "brand": null, - "operator": "Panasonic Connect Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "09", - "brand": null, - "operator": "Marubeni Network Solutions Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "10", - "brand": "NTT docomo", - "operator": "NTT DoCoMo, Inc.", - "status": "Operational", - "bands": "UMTS 850 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500 / 5G 3500 / 5G 4700 / 5G 28000", - "notes": "bands 1, 3, 19, 21, 28, 42; UMTS to shut down Mar 2026" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "11", - "brand": "Rakuten Mobile", - "operator": "Rakuten Mobile Network, Inc.", - "status": "Operational", - "bands": "LTE 1800 / 5G 3700", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "12", - "brand": null, - "operator": "Cable media waiwai Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "13", - "brand": null, - "operator": "NTT Communications Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "14", - "brand": null, - "operator": "Grape One Co., Ltd.", - "status": "Unknown", - "bands": "5G", - "notes": "Private 5G networks" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "15", - "brand": null, - "operator": "BB Backbone Corp.", - "status": "Unknown", - "bands": "LTE", - "notes": "Private LTE networks" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "16", - "brand": null, - "operator": "Nokia Innovations Japan G.K.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "17", - "brand": null, - "operator": "Osaka Gas Business Create Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "18", - "brand": null, - "operator": "Kintetsu Cable Network Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "19", - "brand": null, - "operator": "NEC Networks & System Integration Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "20", - "brand": "SoftBank", - "operator": "SoftBank Corp.", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700 / 5G 28000", - "notes": "bands 1, 3, 8, 11, 28, 41, 42; UMTS to shut down Jan 2024" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "21", - "brand": "SoftBank", - "operator": "SoftBank Corp.", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700 / 5G 28000", - "notes": "bands 1, 3, 8, 11, 28, 41, 42; UMTS to shut down Jan 2024" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "22", - "brand": null, - "operator": "JTOWER Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "23", - "brand": null, - "operator": "Fujitsu Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "50", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000", - "notes": "bands 1, 3, 11, 18, 28, 41, 42" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "51", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000", - "notes": "bands 1, 3, 11, 18, 28, 41, 42" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "52", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000", - "notes": "bands 1, 3, 11, 18, 28, 41, 42" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "53", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Operational", - "bands": "LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000", - "notes": "bands 1, 3, 11, 18, 28, 41, 42" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "54", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "70", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "71", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "72", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "73", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "74", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "75", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "76", - "brand": "au", - "operator": "KDDI Corporation", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022, MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "440", - "mnc": "78", - "brand": "au", - "operator": "Okinawa Cellular Telephone", - "status": "Not operational", - "bands": "CDMA 850 / CDMA 2000", - "notes": "CDMA shut down 31 Mar 2022" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "00", - "brand": null, - "operator": "Wireless City Planning Inc.", - "status": "Operational", - "bands": "TD-LTE 2500", - "notes": "band 41; owned by SoftBank" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "01", - "brand": "SoftBank", - "operator": "SoftBank Corp.", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700", - "notes": "bands 1, 3, 8, 11, 28, 41, 42; UMTS to shut down Jan 2024" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "10", - "brand": "UQ WiMAX", - "operator": "UQ Communications Inc.", - "status": "Not operational", - "bands": "TD-LTE 2500", - "notes": "band 41; WiMAX 2500 shut down 31 Mar 2020; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "200", - "brand": null, - "operator": "Soracom Inc.", - "status": "Operational", - "bands": "MVNO", - "notes": "IoT" - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "201", - "brand": null, - "operator": "Aurens Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "202", - "brand": null, - "operator": "Sony Wireless Communications Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "203", - "brand": null, - "operator": "Gujo City", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "204", - "brand": null, - "operator": "Wicom Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "205", - "brand": null, - "operator": "Katch Network Inc.", - "status": "Operational", - "bands": "5G 4700", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "206", - "brand": null, - "operator": "Mitsubishi Electric Corp.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "207", - "brand": null, - "operator": "Mitsui Knowledge Industry Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "208", - "brand": null, - "operator": "Chudenko Corp.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "209", - "brand": null, - "operator": "Cable Television Toyama Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "210", - "brand": null, - "operator": "Nippon Telegraph and Telephone East Corp.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "211", - "brand": null, - "operator": "Starcat Cable Network Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "212", - "brand": null, - "operator": "I-TEC Solutions Co., Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Japan", - "countryCode": "JP", - "mcc": "441", - "mnc": "91", - "brand": null, - "operator": "Tokyo Organising Committee of the Olympic and Paralympic Games", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Jordan", - "countryCode": "JO", - "mcc": "416", - "mnc": "01", - "brand": "zain JO", - "operator": "Jordan Mobile Telephone Services", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Former Fastlink" - }, - { - "type": "National", - "countryName": "Jordan", - "countryCode": "JO", - "mcc": "416", - "mnc": "02", - "brand": "XPress Telecom", - "operator": "XPress Telecom", - "status": "Not operational", - "bands": "iDEN 800", - "notes": "Shut down in 2010" - }, - { - "type": "National", - "countryName": "Jordan", - "countryCode": "JO", - "mcc": "416", - "mnc": "03", - "brand": "Umniah", - "operator": "Umniah Mobile Company", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800 / LTE 3500", - "notes": "GSM shut down 2022" - }, - { - "type": "National", - "countryName": "Jordan", - "countryCode": "JO", - "mcc": "416", - "mnc": "77", - "brand": "Orange", - "operator": "Petra Jordanian Mobile Telecommunications Company (MobileCom)", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Kazakhstan", - "countryCode": "KZ", - "mcc": "401", - "mnc": "01", - "brand": "Beeline", - "operator": "KaR-Tel LLP", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Kazakhstan", - "countryCode": "KZ", - "mcc": "401", - "mnc": "02", - "brand": "Kcell", - "operator": "Kcell JSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Kazakhstan", - "countryCode": "KZ", - "mcc": "401", - "mnc": "07", - "brand": "Altel", - "operator": "Altel", - "status": "Operational", - "bands": "UMTS 850 / GSM 1800 / LTE 1800", - "notes": "CDMA 800 closed 1 July 2015; acquired by Tele2" - }, - { - "type": "National", - "countryName": "Kazakhstan", - "countryCode": "KZ", - "mcc": "401", - "mnc": "08", - "brand": "Kazakhtelecom", - "operator": null, - "status": "Operational", - "bands": "CDMA 450 / CDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Kazakhstan", - "countryCode": "KZ", - "mcc": "401", - "mnc": "77", - "brand": "Tele2.kz", - "operator": "MTS", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / 5G", - "notes": "Called Mobile Telecom Service before its acquisition by Tele2" - }, - { - "type": "National", - "countryName": "North Korea", - "countryCode": "KP", - "mcc": "467", - "mnc": "05", - "brand": "Koryolink", - "operator": "Cheo Technology Jv Company", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "for foreigners" - }, - { - "type": "National", - "countryName": "North Korea", - "countryCode": "KP", - "mcc": "467", - "mnc": "06", - "brand": "Kang Song NET", - "operator": "Korea Posts and Telecommunications Corporation", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "for DPRK citizens. Government owned." - }, - { - "type": "National", - "countryName": "North Korea", - "countryCode": "KP", - "mcc": "467", - "mnc": "193", - "brand": "SunNet", - "operator": "Korea Posts and Telecommunications Corporation", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "01", - "brand": null, - "operator": "Globalstar Asia Pacific", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "02", - "brand": "KT", - "operator": "KT", - "status": "Operational", - "bands": "5G 3500", - "notes": "former Hansol PCS (CDMA 1800), merged with KT in 2002" - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "03", - "brand": "Power 017", - "operator": "Shinsegi Telecom, Inc.", - "status": "Not operational", - "bands": "CDMA 850", - "notes": "Merged with SK Telecom in 2002; MNC withdrawn" - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "04", - "brand": "KT", - "operator": "KT", - "status": "Operational", - "bands": "LTE 1800", - "notes": "NB-IoT network (LTE Cat NB1); former CDMA 1800" - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "05", - "brand": "SKTelecom", - "operator": "SK Telecom", - "status": "Operational", - "bands": "UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000", - "notes": "CDMA 850 shut down June 2020" - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "06", - "brand": "LG U+", - "operator": "LG Telecom", - "status": "Operational", - "bands": "LTE 850 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": "CDMA 1800 shut down June 2021" - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "07", - "brand": "KT", - "operator": "KT", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "08", - "brand": "olleh", - "operator": "KT", - "status": "Operational", - "bands": "UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "11", - "brand": "Tplus", - "operator": "Korea Cable Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": "MVNO of SK Telecom" - }, - { - "type": "National", - "countryName": "South Korea", - "countryCode": "KR", - "mcc": "450", - "mnc": "12", - "brand": "SKTelecom", - "operator": "SK Telecom", - "status": "Operational", - "bands": "LTE 850 / LTE 1800", - "notes": "IoT network (LTE Cat M1)" - }, - { - "type": "National", - "countryName": "Kuwait", - "countryCode": "KW", - "mcc": "419", - "mnc": "02", - "brand": "zain KW", - "operator": "Zain Kuwait", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Kuwait", - "countryCode": "KW", - "mcc": "419", - "mnc": "03", - "brand": "Ooredoo", - "operator": "National Mobile Telecommunications", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Kuwait", - "countryCode": "KW", - "mcc": "419", - "mnc": "04", - "brand": "STC", - "operator": "Saudi Telecom Company", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2100 / 5G 3500", - "notes": "Former VIVA" - }, - { - "type": "National", - "countryName": "Kyrgyzstan", - "countryCode": "KG", - "mcc": "437", - "mnc": "01", - "brand": "Beeline", - "operator": "Sky Mobile LLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": "Former Bitel" - }, - { - "type": "National", - "countryName": "Kyrgyzstan", - "countryCode": "KG", - "mcc": "437", - "mnc": "03", - "brand": null, - "operator": "7 Mobile", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Fonex/Aktel" - }, - { - "type": "National", - "countryName": "Kyrgyzstan", - "countryCode": "KG", - "mcc": "437", - "mnc": "05", - "brand": "MegaCom", - "operator": "Alfa Telecom CJSC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Kyrgyzstan", - "countryCode": "KG", - "mcc": "437", - "mnc": "09", - "brand": "O!", - "operator": "NurTelecom LLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Kyrgyzstan", - "countryCode": "KG", - "mcc": "437", - "mnc": "10", - "brand": null, - "operator": "Saima Telecom", - "status": "Operational", - "bands": "LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Kyrgyzstan", - "countryCode": "KG", - "mcc": "437", - "mnc": "11", - "brand": null, - "operator": "iTel", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Laos", - "countryCode": "LA", - "mcc": "457", - "mnc": "01", - "brand": "LaoTel", - "operator": "Lao Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Laos", - "countryCode": "LA", - "mcc": "457", - "mnc": "02", - "brand": "ETL", - "operator": "Enterprise of Telecommunications Lao", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Laos", - "countryCode": "LA", - "mcc": "457", - "mnc": "03", - "brand": "Unitel", - "operator": "Star Telecom Co., Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Lao-Asia Telecom Company (LAT); owned by Viettel" - }, - { - "type": "National", - "countryName": "Laos", - "countryCode": "LA", - "mcc": "457", - "mnc": "07", - "brand": "Best", - "operator": "Best Telecom Co., Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Laos", - "countryCode": "LA", - "mcc": "457", - "mnc": "08", - "brand": "TPLUS", - "operator": "TPLUS Digital Sole Co., Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Millicom (Tigo), VimpelCom (Beeline)" - }, - { - "type": "National", - "countryName": "Lebanon", - "countryCode": "LB", - "mcc": "415", - "mnc": "01", - "brand": "Alfa", - "operator": "MIC 1", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Lebanon", - "countryCode": "LB", - "mcc": "415", - "mnc": "03", - "brand": "Touch", - "operator": "MIC 2", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Lebanon", - "countryCode": "LB", - "mcc": "415", - "mnc": "05", - "brand": "Ogero Mobile", - "operator": "Ogero Telecom", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "00", - "brand": "SmarTone", - "operator": "Smartone – Comunicações Móveis, S.A.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800", - "notes": "GSM shut down 1 Aug 2019" - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "01", - "brand": "CTM", - "operator": "Companhia de Telecomunicações de Macau, S.A.R.L.", - "status": "Operational", - "bands": "LTE 1800 / 5G 3500", - "notes": "GSM shut down 1 Aug 2019" - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "02", - "brand": "China Telecom", - "operator": "China Telecom (Macau) Company Limited", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Shut down 2010" - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "03", - "brand": "3", - "operator": "Hutchison Telephone (Macau), Limitada", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "GSM shut down 1 Aug 2019" - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "04", - "brand": "CTM", - "operator": "Companhia de Telecomunicações de Macau, S.A.R.L.", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "GSM shut down 1 Aug 2019" - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "05", - "brand": "3", - "operator": "Hutchison Telephone (Macau), Limitada", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "06", - "brand": "SmarTone", - "operator": "Smartone – Comunicações Móveis, S.A.", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "GSM shut down 1 Aug 2019" - }, - { - "type": "National", - "countryName": "Macau (People's Republic of China)", - "countryCode": "MO", - "mcc": "455", - "mnc": "07", - "brand": "China Telecom", - "operator": "China Telecom (Macau) Limitada", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Maldives", - "countryCode": "MV", - "mcc": "472", - "mnc": "01", - "brand": "Dhiraagu", - "operator": "Dhivehi Raajjeyge Gulhun", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Maldives", - "countryCode": "MV", - "mcc": "472", - "mnc": "02", - "brand": "Ooredoo", - "operator": "Ooredoo Maldives", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G", - "notes": "Former Wataniya Telecom" - }, - { - "type": "National", - "countryName": "Mongolia", - "countryCode": "MN", - "mcc": "428", - "mnc": "88", - "brand": "Unitel", - "operator": "Unitel LLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Mongolia", - "countryCode": "MN", - "mcc": "428", - "mnc": "91", - "brand": "Skytel", - "operator": "Skytel LLC", - "status": "Operational", - "bands": "CDMA 850 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Mongolia", - "countryCode": "MN", - "mcc": "428", - "mnc": "98", - "brand": "G-Mobile", - "operator": "G-Mobile LLC", - "status": "Operational", - "bands": "CDMA 450 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Mongolia", - "countryCode": "MN", - "mcc": "428", - "mnc": "99", - "brand": "Mobicom", - "operator": "Mobicom Corporation", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 700 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "00", - "brand": "MPT", - "operator": "Myanmar Posts and Telecommunications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "01", - "brand": "MPT", - "operator": "Myanmar Posts and Telecommunications", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "02", - "brand": "MPT", - "operator": "Myanmar Posts and Telecommunications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "03", - "brand": "CDMA800", - "operator": "Myanmar Economic Corporation", - "status": "Operational", - "bands": "CDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "04", - "brand": "MPT", - "operator": "Myanmar Posts and Telecommunications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "05", - "brand": "Ooredoo", - "operator": "Ooredoo Myanmar", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "06", - "brand": "Telenor", - "operator": "Telenor Myanmar", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "09", - "brand": "Mytel", - "operator": "Myanmar National Tele & Communication Co., Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "20", - "brand": "ACS", - "operator": "Amara Communication Co., Ltd", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "21", - "brand": "ACS", - "operator": "Amara Communication Co., Ltd", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "22", - "brand": null, - "operator": "Fortune Telecom Co., Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Myanmar", - "countryCode": "MM", - "mcc": "414", - "mnc": "23", - "brand": null, - "operator": "Global Technology Co., Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Nepal", - "countryCode": "NP", - "mcc": "429", - "mnc": "01", - "brand": "Namaste / NT Mobile / Sky Phone", - "operator": "Nepal Telecom (NDCL)", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "WiMAX 2300, CDMA 850 shut down in 2021" - }, - { - "type": "National", - "countryName": "Nepal", - "countryCode": "NP", - "mcc": "429", - "mnc": "02", - "brand": "Ncell", - "operator": "Ncell Pvt. Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Nepal", - "countryCode": "NP", - "mcc": "429", - "mnc": "03", - "brand": "UTL", - "operator": "United Telecom Limited", - "status": "Operational", - "bands": "CDMA2000 800", - "notes": null - }, - { - "type": "National", - "countryName": "Nepal", - "countryCode": "NP", - "mcc": "429", - "mnc": "04", - "brand": "SmartCell", - "operator": "Smart Telecom Pvt. Ltd. (STPL)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Oman", - "countryCode": "OM", - "mcc": "422", - "mnc": "02", - "brand": "Omantel", - "operator": "Oman Telecommunications Company", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / TD-LTE 2300 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Oman", - "countryCode": "OM", - "mcc": "422", - "mnc": "03", - "brand": "Ooredoo", - "operator": "Omani Qatari Telecommunications Company SAOC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / TD-LTE 2300 / 5G 3500", - "notes": "Former Nawras" - }, - { - "type": "National", - "countryName": "Oman", - "countryCode": "OM", - "mcc": "422", - "mnc": "04", - "brand": "Omantel", - "operator": "Oman Telecommunications Company", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Oman", - "countryCode": "OM", - "mcc": "422", - "mnc": "06", - "brand": "Vodafone", - "operator": "Oman Future Telecommunications Company SAOC", - "status": "Operational", - "bands": "5G 700", - "notes": null - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "01", - "brand": "Jazz", - "operator": "Mobilink-PMCL", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800", - "notes": "Former Mobilink" - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "02", - "brand": "3G EVO / CharJi 4G", - "operator": "PTCL", - "status": "Operational", - "bands": "CDMA2000 1900 / TD-LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "03", - "brand": "Ufone", - "operator": "Pakistan Telecommunication Mobile Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "04", - "brand": "Zong", - "operator": "China Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": "Former Paktel" - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "05", - "brand": "SCO Mobile", - "operator": "SCO Mobile Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "06", - "brand": "Telenor", - "operator": "Telenor Pakistan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 850 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "07", - "brand": "Jazz", - "operator": "WaridTel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Warid Pakistan" - }, - { - "type": "National", - "countryName": "Pakistan", - "countryCode": "PK", - "mcc": "410", - "mnc": "08", - "brand": "SCO Mobile", - "operator": "SCO Mobile Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Palestine", - "countryCode": "PS", - "mcc": "425", - "mnc": "05", - "brand": "Jawwal", - "operator": "Palestine Cellular Communications, Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Palestine", - "countryCode": "PS", - "mcc": "425", - "mnc": "06", - "brand": "Ooredoo", - "operator": "Ooredoo Palestine", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Wataniya" - }, - { - "type": "National", - "countryName": "Qatar", - "countryCode": "QA", - "mcc": "427", - "mnc": "01", - "brand": "Ooredoo", - "operator": "Ooredoo", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "Former Qtel (Qatar Telecom)" - }, - { - "type": "National", - "countryName": "Qatar", - "countryCode": "QA", - "mcc": "427", - "mnc": "02", - "brand": "Vodafone", - "operator": "Vodafone Qatar", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Qatar", - "countryCode": "QA", - "mcc": "427", - "mnc": "05", - "brand": "Ministry of Interior", - "operator": "Ministry of Interior", - "status": "Operational", - "bands": "TETRA 380", - "notes": null - }, - { - "type": "National", - "countryName": "Qatar", - "countryCode": "QA", - "mcc": "427", - "mnc": "06", - "brand": "Ministry of Interior", - "operator": "Ministry of Interior", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Saudi Arabia", - "countryCode": "SA", - "mcc": "420", - "mnc": "01", - "brand": "Al Jawal (STC )", - "operator": "Saudi Telecom Company", - "status": "Operational", - "bands": "GSM 900 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500", - "notes": "UMTS shut down 2022" - }, - { - "type": "National", - "countryName": "Saudi Arabia", - "countryCode": "SA", - "mcc": "420", - "mnc": "03", - "brand": "Mobily", - "operator": "Etihad Etisalat Company", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Saudi Arabia", - "countryCode": "SA", - "mcc": "420", - "mnc": "04", - "brand": "Zain SA", - "operator": "Zain Saudi Arabia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500 / 5G 2500 / 5G 3500", - "notes": "Active September 2008" - }, - { - "type": "National", - "countryName": "Saudi Arabia", - "countryCode": "SA", - "mcc": "420", - "mnc": "05", - "brand": "Virgin Mobile", - "operator": "Virgin Mobile Saudi Arabia", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Al Jawal network" - }, - { - "type": "National", - "countryName": "Saudi Arabia", - "countryCode": "SA", - "mcc": "420", - "mnc": "06", - "brand": "Lebara Mobile", - "operator": "Lebara Mobile", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Saudi Arabia", - "countryCode": "SA", - "mcc": "420", - "mnc": "21", - "brand": "RGSM", - "operator": "Saudi Railways GSM", - "status": "Operational", - "bands": "GSM-R 900", - "notes": null - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "01", - "brand": "SLTMobitel", - "operator": "Mobitel (Pvt) Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "02", - "brand": "Dialog", - "operator": "Dialog Axiata PLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former MTN" - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "03", - "brand": "Hutch", - "operator": "Hutchison Telecommunications Lanka (Pvt) Ltd", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Etisalat; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "04", - "brand": "Lanka Bell", - "operator": "Lanka Bell Ltd", - "status": "Operational", - "bands": "CDMA / WiMAX / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "05", - "brand": "Airtel", - "operator": "Bharti Airtel Lanka (Pvt) Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 850 / LTE 2100 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "08", - "brand": "Hutch", - "operator": "Hutchison Telecommunications Lanka (Pvt) Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "09", - "brand": "Hutch", - "operator": "Hutchison Telecommunications Lanka (Pvt) Ltd", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "11", - "brand": "Dialog", - "operator": "Dialog Broadband Networks (Pvt) Ltd", - "status": "Operational", - "bands": "CDMA / WiMAX / TD-LTE 2300", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "Sri Lanka", - "countryCode": "LK", - "mcc": "413", - "mnc": "12", - "brand": "SLTMobitel", - "operator": "Sri Lanka Telecom PLC", - "status": "Operational", - "bands": "TD-LTE 2600", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "Syria", - "countryCode": "SY", - "mcc": "417", - "mnc": "01", - "brand": "Syriatel", - "operator": "Syriatel Mobile Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Syria", - "countryCode": "SY", - "mcc": "417", - "mnc": "02", - "brand": "MTN", - "operator": "MTN Syria", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Spacetel" - }, - { - "type": "National", - "countryName": "Syria", - "countryCode": "SY", - "mcc": "417", - "mnc": "03", - "brand": null, - "operator": "Wafa Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Syria", - "countryCode": "SY", - "mcc": "417", - "mnc": "09", - "brand": null, - "operator": "Syrian Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "01", - "brand": "FarEasTone", - "operator": "Far EasTone Telecommunications Co Ltd", - "status": "Operational", - "bands": "LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "LTE band 28;" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "02", - "brand": "FarEasTone", - "operator": "Far EasTone Telecommunications Co Ltd", - "status": "Not operational", - "bands": "GSM 900", - "notes": "GSM shut down July 2017" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "03", - "brand": "FarEasTone", - "operator": "Far EasTone Telecommunications Co Ltd", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "UMTS shut down Dec 2018" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "05", - "brand": "Gt", - "operator": "Asia Pacific Telecom", - "status": "Operational", - "bands": "LTE 700 / LTE 900 / TD-LTE 2600 / 5G 3500 / 5G 28000", - "notes": "LTE bands 28 / 8 / 41; CDMA 850 MHz shut down Dec 2017" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "06", - "brand": "FarEasTone", - "operator": "Far EasTone Telecommunications Co Ltd", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Former KG Telecom until 2004" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "07", - "brand": "FarEasTone", - "operator": "Far EasTone Telecommunications Co Ltd", - "status": "Not operational", - "bands": "WiMAX 2600", - "notes": "Shut down in 2015" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "09", - "brand": "VMAX", - "operator": "Vmax Telecom", - "status": "Operational", - "bands": "WiMAX 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "10", - "brand": "G1", - "operator": "Global Mobile Corp.", - "status": "Operational", - "bands": "WiMAX 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "11", - "brand": "Chunghwa LDM", - "operator": "LDTA/Chunghwa Telecom", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Also known as \"Long Distance & Mobile Business Group\"" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "12", - "brand": null, - "operator": "Ambit Microsystems", - "status": "Operational", - "bands": "LTE 700 / LTE 900", - "notes": "Subsidiary of Foxconn; LTE band 28" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "56", - "brand": "FITEL", - "operator": "First International Telecom", - "status": "Not operational", - "bands": "WiMAX 2600 / PHS", - "notes": "Bankruptcy in 2014" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "68", - "brand": null, - "operator": "Tatung InfoComm", - "status": "Not operational", - "bands": "WiMAX 2600", - "notes": "License expired in 2014" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "88", - "brand": "FarEasTone", - "operator": "Far EasTone Telecommunications Co Ltd", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Former KG Telecom until 2004, KG Telecom brand used until 2009" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "89", - "brand": "T Star", - "operator": "Taiwan Star Telecom", - "status": "Operational", - "bands": "LTE 900 / LTE 2600 / 5G 3500", - "notes": "UMTS shut down Dec 2018" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "90", - "brand": "T Star", - "operator": "Taiwan Star Telecom", - "status": "Unknown", - "bands": "LTE 900", - "notes": null - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "92", - "brand": "Chunghwa", - "operator": "Chunghwa Telecom", - "status": "Operational", - "bands": "LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "GSM shut down July 2017; UMTS shut down Dec 2018" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "93", - "brand": "MobiTai", - "operator": "Mobitai Communications", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Acquired by Taiwan Mobile in 2004, MobiTai brand used until 2008" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "97", - "brand": "Taiwan Mobile", - "operator": "Taiwan Mobile Co. Ltd", - "status": "Operational", - "bands": "LTE 700 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": "LTE band 28; GSM shut down July 2017; UMTS shut down Dec 2018" - }, - { - "type": "National", - "countryName": "Taiwan", - "countryCode": "TW", - "mcc": "466", - "mnc": "99", - "brand": "TransAsia", - "operator": "TransAsia Telecoms", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Acquired by Taiwan Mobile in 2002, TransAsia brand used until 2008" - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "01", - "brand": "Tcell", - "operator": "JV Somoncom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "02", - "brand": "Tcell", - "operator": "Indigo Tajikistan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "03", - "brand": "MegaFon", - "operator": "TT Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "04", - "brand": "Babilon-M", - "operator": "Babilon-Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "05", - "brand": "ZET-Mobile", - "operator": "Tacom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2100", - "notes": "Former Beeline" - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "10", - "brand": "Babilon-T", - "operator": "Babilon-T", - "status": "Operational", - "bands": "TD-LTE 2300 / WiMAX", - "notes": null - }, - { - "type": "National", - "countryName": "Tajikistan", - "countryCode": "TJ", - "mcc": "436", - "mnc": "12", - "brand": "Tcell", - "operator": "Indigo", - "status": "Unknown", - "bands": "UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Turkmenistan", - "countryCode": "TM", - "mcc": "438", - "mnc": "01", - "brand": "MTS", - "operator": "MTS Turkmenistan", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Forced to shut down 2017" - }, - { - "type": "National", - "countryName": "Turkmenistan", - "countryCode": "TM", - "mcc": "438", - "mnc": "02", - "brand": "TM-Cell", - "operator": "Altyn Asyr", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Turkmenistan", - "countryCode": "TM", - "mcc": "438", - "mnc": "03", - "brand": "AGTS CDMA", - "operator": "AŞTU", - "status": "Operational", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "United Arab Emirates", - "countryCode": "AE", - "mcc": "424", - "mnc": "02", - "brand": "Etisalat", - "operator": "Emirates Telecom Corp", - "status": "Operational", - "bands": "LTE 800 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": "GSM shut down Dec 2022" - }, - { - "type": "National", - "countryName": "United Arab Emirates", - "countryCode": "AE", - "mcc": "424", - "mnc": "03", - "brand": "du", - "operator": "Emirates Integrated Telecommunications Company", - "status": "Operational", - "bands": "UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500 / 5G 26000", - "notes": "GSM shut down Dec 2022" - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "01", - "brand": null, - "operator": "Buztel", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "02", - "brand": null, - "operator": "Uzmacom", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "03", - "brand": "UzMobile", - "operator": "Uzbektelekom", - "status": "Operational", - "bands": "CDMA 450", - "notes": "EVDO Rev A" - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "04", - "brand": "Beeline", - "operator": "Unitel LLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": "Former Daewoo Unitel" - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "05", - "brand": "Ucell", - "operator": "Coscom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "06", - "brand": "Perfectum Mobile", - "operator": "RUBICON WIRELESS COMMUNICATION", - "status": "Operational", - "bands": "CDMA 800", - "notes": null - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "07", - "brand": "Mobiuz", - "operator": "Universal Mobile Systems (UMS)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "08", - "brand": "UzMobile", - "operator": "Uzbektelekom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Uzbekistan", - "countryCode": "UZ", - "mcc": "434", - "mnc": "09", - "brand": "EVO", - "operator": "OOO «Super iMAX»", - "status": "Operational", - "bands": "WiMAX / LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "01", - "brand": "MobiFone", - "operator": "Vietnam Mobile Telecom Services Company", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "02", - "brand": "Vinaphone", - "operator": "Vietnam Telecom Services Company", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "03", - "brand": "S-Fone", - "operator": "S-Telecom", - "status": "Not operational", - "bands": "CDMA2000 800", - "notes": "License revoked; MNC withdawn" - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "04", - "brand": "Viettel Mobile", - "operator": "Viettel Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "05", - "brand": "Vietnamobile", - "operator": "Hanoi Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "06", - "brand": "EVNTelecom", - "operator": "EVN Telecom", - "status": "Not operational", - "bands": "CDMA2000 450", - "notes": "License revoked; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "07", - "brand": "Gmobile", - "operator": "GTEL Mobile JSC", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Former Beeline" - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "08", - "brand": "I-Telecom", - "operator": "Indochina Telecom", - "status": "Operational", - "bands": "WiMAX", - "notes": "Former EVNTelecom" - }, - { - "type": "National", - "countryName": "Vietnam", - "countryCode": "VN", - "mcc": "452", - "mnc": "09", - "brand": "REDDI", - "operator": "MOBICAST JSC", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Vinaphone" - }, - { - "type": "National", - "countryName": "Yemen", - "countryCode": "YE", - "mcc": "421", - "mnc": "01", - "brand": "SabaFon", - "operator": "SabaFon", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Yemen", - "countryCode": "YE", - "mcc": "421", - "mnc": "02", - "brand": "YOU", - "operator": "Yemen Oman United Telecom", - "status": "Operational", - "bands": "GSM 900 / LTE", - "notes": "Former Spacetel, MTN" - }, - { - "type": "National", - "countryName": "Yemen", - "countryCode": "YE", - "mcc": "421", - "mnc": "03", - "brand": "Yemen Mobile", - "operator": "Yemen Mobile", - "status": "Operational", - "bands": "CDMA 850", - "notes": null - }, - { - "type": "National", - "countryName": "Yemen", - "countryCode": "YE", - "mcc": "421", - "mnc": "04", - "brand": "Y", - "operator": "HiTS-UNITEL", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Yemen", - "countryCode": "YE", - "mcc": "421", - "mnc": "10", - "brand": "Yemen-4G", - "operator": "PTC/Yemen-Telecom", - "status": "Operational", - "bands": "700/1800/2600", - "notes": null - }, - { - "type": "National", - "countryName": "Yemen", - "countryCode": "YE", - "mcc": "421", - "mnc": "11", - "brand": "Yemen Mobile", - "operator": "Yemen Mobile", - "status": "Operational", - "bands": "LTE 3", - "notes": null - }, - { - "type": "National", - "countryName": "American Samoa (United States of America)", - "countryCode": "AS", - "mcc": "311", - "mnc": "780", - "brand": "ASTCA", - "operator": "American Samoa Telecommunications", - "status": "Operational", - "bands": "LTE 700", - "notes": "Uses United States MCC" - }, - { - "type": "National", - "countryName": "American Samoa (United States of America)", - "countryCode": "AS", - "mcc": "544", - "mnc": "11", - "brand": "Bluesky", - "operator": "Bluesky", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "01", - "brand": "Telstra", - "operator": "Telstra Corporation Limited", - "status": "Operational", - "bands": "UMTS 850 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 850 / 5G 3500 / 5G 28000", - "notes": "LTE bands 28 / 8 / 3 / 1 / 7; GSM shut down 1 December 2016; UMTS 2100 shut down 25 March 2019" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "02", - "brand": "Optus", - "operator": "Singtel Optus Pty Ltd", - "status": "Operational", - "bands": "UMTS 900 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 900 / 5G 1800 / 5G 2100 / TD-5G 2300 / 5G 3500 / 5G 28000", - "notes": "LTE bands 28 / 3 / 1 / 7; GSM shut down Aug 2017, UMTS 2100 – May 2022, UMTS 900 – Sep 2024" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "03", - "brand": "Vodafone", - "operator": "Vodafone Hutchison Australia Pty Ltd", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / 5G 700 / 5G 3500", - "notes": "LTE bands 5 / 3 / 1; GSM shut down 30 April 2018" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "04", - "brand": null, - "operator": "Department of Defence", - "status": "Operational", - "bands": "Unknown", - "notes": "Private network" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "05", - "brand": "Ozitel", - "operator": null, - "status": "Not operational", - "bands": null, - "notes": "Brand was taken over by Telstra." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "06", - "brand": "3", - "operator": "Vodafone Hutchison Australia Pty Ltd", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "Vodafone Hutchison Australia and Telstra ended their network sharing agreement on 31 August 2012. The 3TELSTRA network was shut down on this date." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "07", - "brand": "Vodafone", - "operator": "Vodafone Network Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "08", - "brand": "One.Tel", - "operator": "One.Tel Limited", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Brand was dissolved." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "09", - "brand": "Airnet", - "operator": null, - "status": "Not operational", - "bands": null, - "notes": "No longer provide mobile services." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "10", - "brand": "Norfolk Is.", - "operator": "Norfolk Telecom", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "11", - "brand": "Telstra", - "operator": "Telstra Corporation Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "12", - "brand": "3", - "operator": "Vodafone Hutchison Australia Pty Ltd", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": "See MNC 06" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "13", - "brand": "RailCorp", - "operator": "Railcorp, Transport for NSW", - "status": "Operational", - "bands": "GSM-R 1800", - "notes": "For use by Sydney Trains Digital Train Radio System" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "14", - "brand": "AAPT", - "operator": "TPG Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": "Wholesale from Vodafone Hutchison Australia" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "15", - "brand": "3GIS", - "operator": null, - "status": "Not operational", - "bands": null, - "notes": "Taken over by Vodafone." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "16", - "brand": "VicTrack", - "operator": "Victorian Rail Track", - "status": "Operational", - "bands": "GSM-R 1800", - "notes": "Digital Train Radio System" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "17", - "brand": null, - "operator": "Optus", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": "Former Vivid Wireless Pty. Ltd." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "18", - "brand": "Pactel", - "operator": "Pactel International Pty Ltd", - "status": "Not operational", - "bands": null, - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "19", - "brand": "Lycamobile", - "operator": "Lycamobile Pty Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "20", - "brand": null, - "operator": "Ausgrid Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "21", - "brand": null, - "operator": "Queensland Rail Limited", - "status": "Unknown", - "bands": "GSM-R 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "22", - "brand": null, - "operator": "iiNet Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "23", - "brand": null, - "operator": "Challenge Networks Pty Ltd", - "status": "Operational", - "bands": "LTE 1800 / LTE 2100", - "notes": "Private networks, primarily for mining industry" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "24", - "brand": null, - "operator": "Advanced Communications Technologies Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "25", - "brand": null, - "operator": "Pilbara Iron Company Services Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "26", - "brand": null, - "operator": "Dialogue Communications Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "27", - "brand": null, - "operator": "Nexium Telecommunications", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "28", - "brand": null, - "operator": "RCOM International Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "30", - "brand": null, - "operator": "Compatel Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "31", - "brand": null, - "operator": "BHP", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "32", - "brand": null, - "operator": "Thales Australia", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "33", - "brand": null, - "operator": "CLX Networks Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "34", - "brand": null, - "operator": "Santos Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "35", - "brand": null, - "operator": "MessageBird Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "36", - "brand": "Optus", - "operator": "Optus Mobile Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "37", - "brand": null, - "operator": "Yancoal Australia Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "38", - "brand": "Truphone", - "operator": "Truphone Pty Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": "Formerly Crazy John's" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "39", - "brand": "Telstra", - "operator": "Telstra Corporation Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "40", - "brand": null, - "operator": "CITIC Pacific Mining", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "41", - "brand": null, - "operator": "Aqura Technologies Pty", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former OTOC" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "42", - "brand": "GEMCO", - "operator": "Groote Eylandt Mining Company Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "43", - "brand": null, - "operator": "Arrow Energy Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "44", - "brand": null, - "operator": "Roy Hill Iron Ore Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "45", - "brand": null, - "operator": "Clermont Coal Operations Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "46", - "brand": null, - "operator": "AngloGold Ashanti Australia Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "47", - "brand": null, - "operator": "Woodside Energy Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "48", - "brand": null, - "operator": "Titan ICT Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "49", - "brand": null, - "operator": "Field Solutions Group Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "50", - "brand": null, - "operator": "Pivotel Group Pty Ltd", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "51", - "brand": null, - "operator": "Fortescue Metals Group", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "52", - "brand": null, - "operator": "OptiTel Australia", - "status": "Operational", - "bands": "LTE 1800 / LTE 2100 / 5G 1800 / 5G 2100", - "notes": "Research, development, and operation; Northern Territory" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "53", - "brand": null, - "operator": "Shell Australia Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "54", - "brand": null, - "operator": "Nokia Solutions and Networks Australia Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "61", - "brand": "CommTel NS", - "operator": "Commtel Network Solutions Pty Ltd", - "status": "Implement / Design", - "bands": "LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "62", - "brand": "NBN", - "operator": "National Broadband Network Co.", - "status": "Operational", - "bands": "TD-LTE 2300 / TD-LTE 3500", - "notes": "LTE band 40 / 42" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "68", - "brand": "NBN", - "operator": "National Broadband Network Co.", - "status": "Operational", - "bands": "TD-LTE 2300 / TD-LTE 3500", - "notes": "LTE band 40 / 42" - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "71", - "brand": "Telstra", - "operator": "Telstra Corporation Limited", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "72", - "brand": "Telstra", - "operator": "Telstra Corporation Limited", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "88", - "brand": null, - "operator": "Pivotel Group Pty Ltd", - "status": "Operational", - "bands": "Satellite", - "notes": "Former Localstar Holding Pty. Ltd." - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "90", - "brand": "Optus", - "operator": "Singtel Optus Proprietary Ltd", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Australia", - "countryCode": "AU/CC/CX", - "mcc": "505", - "mnc": "99", - "brand": "One.Tel", - "operator": "One.Tel", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Brand was dissolved. Rail operators purchased 1800 spectrum." - }, - { - "type": "National", - "countryName": "Brunei", - "countryCode": "BN", - "mcc": "528", - "mnc": "01", - "brand": "TelBru", - "operator": "Telekom Brunei Berhad", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Jabatan Telekom Brunei" - }, - { - "type": "National", - "countryName": "Brunei", - "countryCode": "BN", - "mcc": "528", - "mnc": "02", - "brand": "PCSB", - "operator": "Progresif Cellular Sdn Bhd", - "status": "Operational", - "bands": "UMTS 2100", - "notes": "Former B-Mobile" - }, - { - "type": "National", - "countryName": "Brunei", - "countryCode": "BN", - "mcc": "528", - "mnc": "03", - "brand": "UNN", - "operator": "Unified National Networks Sdn Bhd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Brunei", - "countryCode": "BN", - "mcc": "528", - "mnc": "11", - "brand": "DST", - "operator": "Data Stream Technology Sdn Bhd", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800", - "notes": "GSM shut down June 2021" - }, - { - "type": "National", - "countryName": "Cook Islands (Pacific Ocean)", - "countryCode": "CK", - "mcc": "548", - "mnc": "01", - "brand": "Vodafone", - "operator": "Telecom Cook Islands", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 700 / LTE 1800", - "notes": "Former Bluesky; LTE bands 20 / 3" - }, - { - "type": "National", - "countryName": "East Timor", - "countryCode": "TL", - "mcc": "514", - "mnc": "01", - "brand": "Telkomcel", - "operator": "PT Telekomunikasi Indonesia International", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "East Timor", - "countryCode": "TL", - "mcc": "514", - "mnc": "02", - "brand": "TT", - "operator": "Timor Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "East Timor", - "countryCode": "TL", - "mcc": "514", - "mnc": "03", - "brand": "Telemor", - "operator": "Viettel Timor-Leste", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Fiji", - "countryCode": "FJ", - "mcc": "542", - "mnc": "01", - "brand": "Vodafone", - "operator": "Vodafone Fiji", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Fiji", - "countryCode": "FJ", - "mcc": "542", - "mnc": "02", - "brand": "Digicel", - "operator": "Digicel Fiji", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / WiMAX", - "notes": null - }, - { - "type": "National", - "countryName": "Fiji", - "countryCode": "FJ", - "mcc": "542", - "mnc": "03", - "brand": "TFL", - "operator": "Telecom Fiji Ltd", - "status": "Operational", - "bands": "CDMA2000 850 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "French Polynesia (France)", - "countryCode": "PF", - "mcc": "547", - "mnc": "05", - "brand": "Ora", - "operator": "VITI", - "status": "Operational", - "bands": "WiMAX / LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "French Polynesia (France)", - "countryCode": "PF", - "mcc": "547", - "mnc": "10", - "brand": null, - "operator": "Mara Telecom", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Bankrupt in 2013" - }, - { - "type": "National", - "countryName": "French Polynesia (France)", - "countryCode": "PF", - "mcc": "547", - "mnc": "15", - "brand": "Vodafone", - "operator": "Pacific Mobile Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "French Polynesia (France)", - "countryCode": "PF", - "mcc": "547", - "mnc": "20", - "brand": "Vini", - "operator": "Onati S.A.S.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "00", - "brand": "PSN", - "operator": "PT Pasifik Satelit Nusantara", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "01", - "brand": "Indosat Ooredoo Hutchison", - "operator": "PT Indosat Tbk", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / 5G 1800", - "notes": "Former PT Satelindo; UMTS shut down Dec 2022" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "03", - "brand": "StarOne", - "operator": "PT Indosat Tbk", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Shut down on 30 June 2015" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "07", - "brand": "TelkomFlexi", - "operator": "PT Telkom Indonesia Tbk", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Network shut down end of 2015" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "08", - "brand": "AXIS", - "operator": "PT Natrindo Telepon Seluler", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "Merged with XL (MNC 11), MNC 08 no longer used" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "09", - "brand": "Smartfren", - "operator": "PT Smartfren Telecom", - "status": "Operational", - "bands": "LTE 850 / TD-LTE 2300", - "notes": "CDMA 1900 shut down December 2016, CDMA 850 shut down November 2017" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "10", - "brand": "Telkomsel", - "operator": "PT Telekomunikasi Selular", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / TD-LTE 2300 / 5G 2300", - "notes": "UMTS shut down Dec 2022" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "11", - "brand": "XL", - "operator": "PT XL Axiata Tbk", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / 5G 1800 / 5G 2100", - "notes": "UMTS shut down on 31 March 2022" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "20", - "brand": "TELKOMMobile", - "operator": "PT Telkom Indonesia Tbk", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Merged with Telkomsel" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "21", - "brand": "Indosat Ooredoo Hutchison", - "operator": "PT Indosat Tbk", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Former Indosat-M3; merged with Indosat (MNC 01)" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "27", - "brand": "Net 1", - "operator": "PT Net Satu Indonesia", - "status": "Not operational", - "bands": "LTE 450", - "notes": "Former Ceria, Sampoerna Telekomunikasi; CDMA 450 shut down 2017; license revoked on 30 November 2021" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "28", - "brand": "Fren/Hepi", - "operator": "PT Mobile-8 Telecom", - "status": "Operational", - "bands": "LTE 850 / TD-LTE 2300", - "notes": "Merged with SMART (MNC 09), CDMA 850 shut down November 2017" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "78", - "brand": "Hinet", - "operator": "PT Berca Hardayaperkasa", - "status": "Not operational", - "bands": "TD-LTE 2300", - "notes": "Shut down on 16 November 2022" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "88", - "brand": "BOLT! 4G LTE", - "operator": "PT Internux", - "status": "Not operational", - "bands": "TD-LTE 2300", - "notes": "Shut down on 28 December 2018" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "89", - "brand": "3", - "operator": "PT Hutchison 3 Indonesia", - "status": "Operational", - "bands": "GSM 1800 / LTE 1800", - "notes": "Merged with Indosat (MNC 01); UMTS shut down Dec 2022" - }, - { - "type": "National", - "countryName": "Indonesia", - "countryCode": "ID", - "mcc": "510", - "mnc": "99", - "brand": "Esia", - "operator": "PT Bakrie Telecom", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Merged with Smartfren (MNC 09)" - }, - { - "type": "National", - "countryName": "Kiribati", - "countryCode": "KI", - "mcc": "545", - "mnc": "01", - "brand": "Kiribati - ATH", - "operator": "Amalgamated Telecom Holdings Kiribati Limited", - "status": "Operational", - "bands": "UMTS 900 / LTE 1800", - "notes": "Former Telecom Services Kiribati Ltd (TSKL)" - }, - { - "type": "National", - "countryName": "Kiribati", - "countryCode": "KI", - "mcc": "545", - "mnc": "02", - "brand": null, - "operator": "OceanLink", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kiribati", - "countryCode": "KI", - "mcc": "545", - "mnc": "09", - "brand": "Kiribati - Frigate Net", - "operator": "Amalgamated Telecom Holdings Kiribati Limited", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "01", - "brand": "ATUR 450", - "operator": "Telekom Malaysia Bhd", - "status": "Not operational", - "bands": "CDMA2000 450", - "notes": null - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "10", - "brand": null, - "operator": "Celcom, DiGi, Maxis, Tune Talk, U Mobile, Unifi, XOX, Yes", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": "Former Celcom" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "11", - "brand": "TM Homeline", - "operator": "Telekom Malaysia Bhd", - "status": "Operational", - "bands": "CDMA2000 850 / LTE 850", - "notes": null - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "12", - "brand": "Maxis", - "operator": "Maxis Communications Berhad", - "status": "Operational", - "bands": "GSM 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Used by MVNO Kartu As; LTE 2600 in co-operation with REDtone; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "13", - "brand": "Celcom", - "operator": "Celcom Axiata Berhad", - "status": "Operational", - "bands": "GSM 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Former Emartel, TMTouch; LTE 2600 in co-operation with Altel; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "14", - "brand": null, - "operator": "Telekom Malaysia Berhad for PSTN SMS", - "status": "Unknown", - "bands": null, - "notes": null - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "150", - "brand": "Tune Talk", - "operator": "Tune Talk Sdn Bhd", - "status": "Operational", - "bands": "MVNO", - "notes": "uses Celcom" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "151", - "brand": "SalamFone", - "operator": "Baraka Telecom Sdn Bhd", - "status": "Not operational", - "bands": "MVNO", - "notes": "(MVNO)-MAXIS, previously using DiGi; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "152", - "brand": "Yes", - "operator": "YTL Communications Sdn Bhd", - "status": "Operational", - "bands": "TD-LTE 2300 / TD-LTE 2600 / 5G 700 / 5G 3500 / 5G 28000", - "notes": "WiMAX shut down 2019; 5G provided by Digital Nasional Berhad" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "153", - "brand": "unifi", - "operator": "Webe Digital Sdn Bhd", - "status": "Operational", - "bands": "WiMAX 2300 / LTE 850 / TD-LTE 2300 / 5G 700 / 5G 3500 / 5G 28000", - "notes": "Former Packet One Networks; subsidiary of Telekom Malaysia; 5G provided by Digital Nasional Berhad" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "154", - "brand": "Tron", - "operator": "Talk Focus Sdn Bhd", - "status": "Not operational", - "bands": "MVNO", - "notes": "Uses Digi, shut down on 17 Jan 2019" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "155", - "brand": "Clixster", - "operator": "Clixster Mobile Sdn Bhd", - "status": "Not operational", - "bands": "MVNO", - "notes": "Uses Digi; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "156", - "brand": "Altel", - "operator": "Altel Communications Sdn Bhd", - "status": "Operational", - "bands": "MVNO", - "notes": "Using Celcom; LTE 2600 band licensed to Celcom" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "157", - "brand": "Telin", - "operator": "Telekomunikasi Indonesia International (M) Sdn Bhd", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses U Mobile" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "16", - "brand": "DiGi", - "operator": "DiGi Telecommunications", - "status": "Operational", - "bands": "GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "LTE 2600 coverage limited to certain areas in the Klang Valley at the moment; former Mutiara Telecom; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "17", - "brand": "Maxis", - "operator": "Maxis Communications Berhad", - "status": "Operational", - "bands": "GSM 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Former TimeCel, Adam017; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "18", - "brand": "U Mobile", - "operator": "U Mobile Sdn Bhd", - "status": "Operational", - "bands": "LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Domestic Roaming with Maxis, also for GSM; former Mobikom; UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "19", - "brand": "Celcom", - "operator": "Celcom Axiata Berhad", - "status": "Operational", - "bands": "GSM 900 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "UMTS shut down Dec 2021" - }, - { - "type": "National", - "countryName": "Malaysia", - "countryCode": "MY", - "mcc": "502", - "mnc": "20", - "brand": "Electcoms", - "operator": "Electcoms Berhad", - "status": "Not operational", - "bands": "DMR", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Marshall Islands", - "countryCode": "MH", - "mcc": "551", - "mnc": "01", - "brand": null, - "operator": "Marshall Islands National Telecommunications Authority (MINTA)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Federated States of Micronesia", - "countryCode": "FM", - "mcc": "550", - "mnc": "01", - "brand": null, - "operator": "FSMTC", - "status": "Operational", - "bands": "GSM 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Nauru", - "countryCode": "NR", - "mcc": "536", - "mnc": "02", - "brand": "Digicel", - "operator": "Digicel (Nauru) Corporation", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Also uses MCC 542 MNC 02 (Fiji)" - }, - { - "type": "National", - "countryName": "New Caledonia (France)", - "countryCode": "NC", - "mcc": "546", - "mnc": "01", - "brand": "Mobilis", - "operator": "OPT New Caledonia", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "00", - "brand": "Telecom", - "operator": "Spark New Zealand", - "status": "Not operational", - "bands": "AMPS 800 / TDMA 800", - "notes": "Shut down on 31 March 2007" - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "01", - "brand": "Vodafone", - "operator": "Vodafone New Zealand", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "02", - "brand": "Telecom", - "operator": "Spark New Zealand", - "status": "Not operational", - "bands": "CDMA2000 800", - "notes": "Shut down on 31 July 2012" - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "03", - "brand": "Woosh", - "operator": "Woosh Wireless", - "status": "Not operational", - "bands": "UMTS-TDD 2000", - "notes": "Wireless broadband only" - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "04", - "brand": "TelstraClear", - "operator": "TelstraClear", - "status": "Not operational", - "bands": "UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "05", - "brand": "Spark", - "operator": "Spark New Zealand", - "status": "Operational", - "bands": "UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 2600 / 5G 3500", - "notes": "Formerly Telecom New Zealand" - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "06", - "brand": null, - "operator": "FX Networks", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "07", - "brand": null, - "operator": "Dense Air New Zealand", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Bluereach Limited" - }, - { - "type": "National", - "countryName": "New Zealand", - "countryCode": "NZ", - "mcc": "530", - "mnc": "24", - "brand": "2degrees", - "operator": "2degrees", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / 5G 3500", - "notes": "GSM shut down on 15 March 2018" - }, - { - "type": "National", - "countryName": "Niue", - "countryCode": "NU", - "mcc": "555", - "mnc": "01", - "brand": "Telecom Niue", - "operator": "Telecom Niue", - "status": "Operational", - "bands": "GSM 900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Norfolk Island", - "countryCode": "NF", - "mcc": "505", - "mnc": "10", - "brand": "Norfolk Telecom", - "operator": "Norfolk Telecom", - "status": "Operational", - "bands": "GSM 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Palau", - "countryCode": "PW", - "mcc": "552", - "mnc": "01", - "brand": "PNCC", - "operator": "Palau National Communications Corp.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Palau", - "countryCode": "PW", - "mcc": "552", - "mnc": "02", - "brand": "PT Waves", - "operator": "Palau Equipment Company Inc.", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Palau", - "countryCode": "PW", - "mcc": "552", - "mnc": "80", - "brand": "Palau Mobile", - "operator": "Palau Mobile Corporation", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Service shutdown in 2014" - }, - { - "type": "National", - "countryName": "Palau", - "countryCode": "PW", - "mcc": "552", - "mnc": "99", - "brand": "PMCI", - "operator": "Palau Mobile Communications Inc.", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Papua New Guinea", - "countryCode": "PG", - "mcc": "537", - "mnc": "01", - "brand": "bmobile", - "operator": "Bemobile Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 900", - "notes": null - }, - { - "type": "National", - "countryName": "Papua New Guinea", - "countryCode": "PG", - "mcc": "537", - "mnc": "02", - "brand": "citifon", - "operator": "Telikom PNG Ltd.", - "status": "Operational", - "bands": "CDMA2000 450 / LTE 700", - "notes": "Formerly Greencom; LTE band 28" - }, - { - "type": "National", - "countryName": "Papua New Guinea", - "countryCode": "PG", - "mcc": "537", - "mnc": "03", - "brand": "Digicel", - "operator": "Digicel PNG", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Papua New Guinea", - "countryCode": "PG", - "mcc": "537", - "mnc": "04", - "brand": null, - "operator": "Digitec Communication Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "01", - "brand": "Islacom", - "operator": "Globe Telecom via Innove Communications", - "status": "Not operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "02", - "brand": "Globe", - "operator": "Globe Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "03", - "brand": "SMART", - "operator": "PLDT via Smart Communications", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500", - "notes": "Formerly PilTel" - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "05", - "brand": "Sun Cellular", - "operator": "Digital Telecommunications Philippines", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "Uses SMART for LTE roaming" - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "11", - "brand": null, - "operator": "PLDT via ACeS Philippines", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "18", - "brand": "Cure", - "operator": "PLDT via Smart's Connectivity Unlimited Resources Enterprise", - "status": "Not operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Formerly ümobile, then Red Mobile; shut down 2012" - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "24", - "brand": "ABS-CBN Mobile", - "operator": "ABS-CBN Convergence with Globe Telecom", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "66", - "brand": "DITO", - "operator": "Dito Telecommunity Corp.", - "status": "Operational", - "bands": "LTE 700 / LTE 2100 / TD-LTE 2500 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Philippines", - "countryCode": "PH", - "mcc": "515", - "mnc": "88", - "brand": null, - "operator": "Next Mobile Inc.", - "status": "Operational", - "bands": "iDEN", - "notes": "Former Nextel Philippines" - }, - { - "type": "National", - "countryName": "Samoa", - "countryCode": "WS", - "mcc": "549", - "mnc": "00", - "brand": "Digicel", - "operator": "Digicel Pacific Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Samoa", - "countryCode": "WS", - "mcc": "549", - "mnc": "01", - "brand": "Digicel", - "operator": "Digicel Pacific Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Former Telecom Samoa Cellular Ltd." - }, - { - "type": "National", - "countryName": "Samoa", - "countryCode": "WS", - "mcc": "549", - "mnc": "27", - "brand": "Vodafone", - "operator": "Vodafone Samoa Ltd.", - "status": "Operational", - "bands": "GSM 900 / LTE 700 / LTE 1800", - "notes": "Former Samoatel Ltd., Bluesky Samoa" - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "01", - "brand": "SingTel", - "operator": "Singapore Telecom", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500 / 5G 28000", - "notes": "GSM shut down on 1 April 2017" - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "02", - "brand": "SingTel-G18", - "operator": "Singapore Telecom", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "GSM shut down on 1 April 2017" - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "03", - "brand": "M1", - "operator": "M1 Limited", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500", - "notes": "GSM shut down on 1 April 2017" - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "05", - "brand": "StarHub", - "operator": "StarHub Mobile", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2500 / 5G 2100 / 5G 3500", - "notes": "GSM shut down on 1 April 2017" - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "06", - "brand": "StarHub", - "operator": "StarHub Mobile", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "07", - "brand": "SingTel", - "operator": "Singapore Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "08", - "brand": "StarHub", - "operator": "StarHub Mobile", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "09", - "brand": "Circles.Life", - "operator": "Liberty Wireless Pte Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "10", - "brand": "SIMBA", - "operator": "SIMBA Telecom Pte Ltd", - "status": "Operational", - "bands": "LTE 900 / TD-LTE 2300 / TD-LTE 2500", - "notes": "Former TPG Telecom" - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "11", - "brand": "M1", - "operator": "M1 Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Singapore", - "countryCode": "SG", - "mcc": "525", - "mnc": "12", - "brand": "Grid", - "operator": "GRID Communications Pte Ltd.", - "status": "Operational", - "bands": "iDEN 800", - "notes": "Digital Trunked Radio Network" - }, - { - "type": "National", - "countryName": "Solomon Islands", - "countryCode": "SB", - "mcc": "540", - "mnc": "01", - "brand": "BREEZE", - "operator": "Our Telekom", - "status": "Operational", - "bands": "GSM 900 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800", - "notes": "Former Solomon Telekom Co Ltd" - }, - { - "type": "National", - "countryName": "Solomon Islands", - "countryCode": "SB", - "mcc": "540", - "mnc": "02", - "brand": "BeMobile", - "operator": "BMobile (SI) Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "00", - "brand": "TrueMove H / my by NT", - "operator": "National Telecom Public Company Limited", - "status": "Operational", - "bands": "UMTS 850", - "notes": "Former Hutch Thailand, CAT Telecom; inbound roaming for TrueMove H" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "01", - "brand": "AIS", - "operator": "Advanced Info Service", - "status": "Operational", - "bands": "GSM 900", - "notes": "UMTS 900 shut down in 2013" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "02", - "brand": "NT Mobile", - "operator": "National Telecom Public Company Limited", - "status": "Operational", - "bands": "UMTS 850", - "notes": "Former CAT Telecom; CDMA shut down in April 2013" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "03", - "brand": "AIS", - "operator": "Advanced Wireless Network Company Ltd.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "04", - "brand": "TrueMove H", - "operator": "True Move H Universal Communication Company Ltd.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2500", - "notes": "UMTS roaming with network 520-00" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "05", - "brand": "dtac", - "operator": "DTAC TriNet Company Ltd.", - "status": "Operational", - "bands": "UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / 5G 700", - "notes": "LTE 2300 roaming with 520-47" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "09", - "brand": null, - "operator": "Royal Thai Police", - "status": "Operational", - "bands": "LTE 850", - "notes": "LTE band 26" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "15", - "brand": "AIS-T / NT Mobile", - "operator": "National Telecom Public Company Limited", - "status": "Operational", - "bands": "UMTS 2100 / LTE 2100", - "notes": "Former Thaimobile 1900, ACT Mobile, TOT Public Company Limited; used for NT Mobile, AIS-T and MVNO" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "17", - "brand": "NT Mobile", - "operator": "National Telecom Public Company Limited", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": "Former TOT Public Company Limited; LTE band 40; for NT Mobile and MVNO except dtac-T uses 520-47, UMTS 850 uses 520-02" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "18", - "brand": "dtac", - "operator": "Total Access Communications Public Company Ltd.", - "status": "Operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "20", - "brand": "ACeS", - "operator": "ACeS", - "status": "Unknown", - "bands": "Satellite", - "notes": null - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "23", - "brand": "AIS GSM 1800", - "operator": "Digital Phone Company Ltd.", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Owned by AIS; network shut down in October 2019" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "25", - "brand": "WE PCT", - "operator": "True Corporation", - "status": "Not operational", - "bands": "PHS 1900", - "notes": "In Bangkok area" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "47", - "brand": "dtac-T", - "operator": "National Telecom Public Company Limited", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": "Former TOT Public Company Limited; LTE band 40; for dtac only" - }, - { - "type": "National", - "countryName": "Thailand", - "countryCode": "TH", - "mcc": "520", - "mnc": "99", - "brand": "TrueMove", - "operator": "True Corporation", - "status": "Operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Tokelau", - "countryCode": "TK", - "mcc": "554", - "mnc": "01", - "brand": null, - "operator": "Teletok", - "status": "Operational", - "bands": "LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Tonga", - "countryCode": "TO", - "mcc": "539", - "mnc": "01", - "brand": "U-Call", - "operator": "Tonga Communications Corporation", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Tonga", - "countryCode": "TO", - "mcc": "539", - "mnc": "43", - "brand": null, - "operator": "Shoreline Communication", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Tonga", - "countryCode": "TO", - "mcc": "539", - "mnc": "88", - "brand": "Digicel", - "operator": "Digicel (Tonga) Limited", - "status": "Operational", - "bands": "GSM 900 / LTE 700 / LTE 1800", - "notes": "Former TonFon; LTE bands 28 / 3" - }, - { - "type": "National", - "countryName": "Tuvalu", - "countryCode": "TV", - "mcc": "553", - "mnc": "01", - "brand": "TTC", - "operator": "Tuvalu Telecom", - "status": "Operational", - "bands": "UMTS 900 / LTE 850", - "notes": "GSM shutdown in 2015" - }, - { - "type": "National", - "countryName": "Vanuatu", - "countryCode": "VU", - "mcc": "541", - "mnc": "00", - "brand": "AIL", - "operator": "ACeS International (AIL)", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Vanuatu", - "countryCode": "VU", - "mcc": "541", - "mnc": "01", - "brand": "SMILE", - "operator": "Telecom Vanuatu Ltd", - "status": "Operational", - "bands": "GSM 900 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Vanuatu", - "countryCode": "VU", - "mcc": "541", - "mnc": "05", - "brand": "Digicel", - "operator": "Digicel Vanuatu Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Vanuatu", - "countryCode": "VU", - "mcc": "541", - "mnc": "07", - "brand": "WanTok", - "operator": "WanTok Vanuatu Ltd", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": "LTE band 40" - }, - { - "type": "National", - "countryName": "Wallis and Futuna", - "countryCode": "WF", - "mcc": "543", - "mnc": "01", - "brand": "Manuia", - "operator": "Service des Postes et Télécommunications des Îles Wallis et Futuna (SPT)", - "status": "Operational", - "bands": "UMTS 900 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Algeria", - "countryCode": "DZ", - "mcc": "603", - "mnc": "01", - "brand": "Mobilis", - "operator": "Algérie Télécom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Algeria", - "countryCode": "DZ", - "mcc": "603", - "mnc": "02", - "brand": "Djezzy", - "operator": "Optimum Telecom Algérie Spa", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Orascom Telecom" - }, - { - "type": "National", - "countryName": "Algeria", - "countryCode": "DZ", - "mcc": "603", - "mnc": "03", - "brand": "Ooredoo", - "operator": "Wataniya Telecom Algérie", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Nedjma" - }, - { - "type": "National", - "countryName": "Algeria", - "countryCode": "DZ", - "mcc": "603", - "mnc": "07", - "brand": "AT", - "operator": "Algérie Télécom", - "status": "Operational", - "bands": "CDMA 1900", - "notes": "Wireless Local Loop" - }, - { - "type": "National", - "countryName": "Algeria", - "countryCode": "DZ", - "mcc": "603", - "mnc": "09", - "brand": "AT", - "operator": "Algérie Télécom", - "status": "Operational", - "bands": "LTE", - "notes": "Fixed Wireless Broadband" - }, - { - "type": "National", - "countryName": "Algeria", - "countryCode": "DZ", - "mcc": "603", - "mnc": "21", - "brand": "ANESRIF", - "operator": "Anesrif", - "status": "Ongoing", - "bands": "GSM-R", - "notes": null - }, - { - "type": "National", - "countryName": "Angola", - "countryCode": "AO", - "mcc": "631", - "mnc": "02", - "brand": "UNITEL", - "operator": "UNITEL S.a.r.l.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Angola", - "countryCode": "AO", - "mcc": "631", - "mnc": "04", - "brand": "MOVICEL", - "operator": "MOVICEL Telecommunications S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 1800", - "notes": "CDMA shut down March 2016" - }, - { - "type": "National", - "countryName": "Angola", - "countryCode": "AO", - "mcc": "631", - "mnc": "05", - "brand": null, - "operator": "Africell", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Benin", - "countryCode": "BJ", - "mcc": "616", - "mnc": "01", - "brand": null, - "operator": "Benin Telecoms Mobile", - "status": "Operational", - "bands": "LTE 1800 / CDMA / WiMAX", - "notes": "Brands are:- Telecoms (LTE), Kanakoo (CDMA / WiMAX); Libercom GSM shut down 2018" - }, - { - "type": "National", - "countryName": "Benin", - "countryCode": "BJ", - "mcc": "616", - "mnc": "02", - "brand": "Moov", - "operator": "Telecel Benin", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "EtiSalat / Atlantique Telecom / Moov" - }, - { - "type": "National", - "countryName": "Benin", - "countryCode": "BJ", - "mcc": "616", - "mnc": "03", - "brand": "MTN", - "operator": "Spacetel Benin", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": "Former BeninCell, Areeba" - }, - { - "type": "National", - "countryName": "Benin", - "countryCode": "BJ", - "mcc": "616", - "mnc": "04", - "brand": "BBCOM", - "operator": "Bell Benin Communications", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Benin", - "countryCode": "BJ", - "mcc": "616", - "mnc": "05", - "brand": "Glo", - "operator": "Glo Communication Benin", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Licence revoked in 2017" - }, - { - "type": "National", - "countryName": "Botswana", - "countryCode": "BW", - "mcc": "652", - "mnc": "01", - "brand": "Mascom", - "operator": "Mascom Wireless (Pty) Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Botswana", - "countryCode": "BW", - "mcc": "652", - "mnc": "02", - "brand": "Orange", - "operator": "Orange (Botswana) Pty Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE / 5G", - "notes": "formerly Vista Cellular" - }, - { - "type": "National", - "countryName": "Botswana", - "countryCode": "BW", - "mcc": "652", - "mnc": "04", - "brand": "beMobile", - "operator": "Botswana Telecommunications Corporation", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Burkina Faso", - "countryCode": "BF", - "mcc": "613", - "mnc": "01", - "brand": "Telmob", - "operator": "Onatel", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Burkina Faso", - "countryCode": "BF", - "mcc": "613", - "mnc": "02", - "brand": "Orange", - "operator": "Orange Burkina Faso", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Previously Zain/Celtel, Airtel" - }, - { - "type": "National", - "countryName": "Burkina Faso", - "countryCode": "BF", - "mcc": "613", - "mnc": "03", - "brand": "Telecel Faso", - "operator": "Telecel Faso SA", - "status": "Operational", - "bands": "GSM 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Burundi", - "countryCode": "BI", - "mcc": "642", - "mnc": "01", - "brand": "econet Leo", - "operator": "Econet Wireless Burundi PLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Spacetel" - }, - { - "type": "National", - "countryName": "Burundi", - "countryCode": "BI", - "mcc": "642", - "mnc": "02", - "brand": "Tempo", - "operator": "VTEL MEA", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Former Safaris; not related to Africell; suspended in 2015; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Burundi", - "countryCode": "BI", - "mcc": "642", - "mnc": "03", - "brand": "Onatel", - "operator": "Onatel", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Burundi", - "countryCode": "BI", - "mcc": "642", - "mnc": "07", - "brand": "Smart Mobile", - "operator": "LACELL SU", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "suspended in 2022" - }, - { - "type": "National", - "countryName": "Burundi", - "countryCode": "BI", - "mcc": "642", - "mnc": "08", - "brand": "Lumitel", - "operator": "Viettel Burundi", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": "Formerly HiTs Telecom" - }, - { - "type": "National", - "countryName": "Burundi", - "countryCode": "BI", - "mcc": "642", - "mnc": "82", - "brand": "econet Leo", - "operator": "Econet Wireless Burundi PLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Formerly Telecel, then U-COM Burundi" - }, - { - "type": "National", - "countryName": "Cameroon", - "countryCode": "CM", - "mcc": "624", - "mnc": "01", - "brand": "MTN Cameroon", - "operator": "Mobile Telephone Network Cameroon Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Cameroon", - "countryCode": "CM", - "mcc": "624", - "mnc": "02", - "brand": "Orange", - "operator": "Orange Cameroun S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Cameroon", - "countryCode": "CM", - "mcc": "624", - "mnc": "03", - "brand": "Camtel", - "operator": "Camtel", - "status": "Operational", - "bands": "CDMA / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Cameroon", - "countryCode": "CM", - "mcc": "624", - "mnc": "04", - "brand": "Nexttel", - "operator": "Viettel Cameroun", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Cape Verde", - "countryCode": "CV", - "mcc": "625", - "mnc": "01", - "brand": "CVMOVEL", - "operator": "CVMóvel, S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Cape Verde", - "countryCode": "CV", - "mcc": "625", - "mnc": "02", - "brand": "T+", - "operator": "UNITEL T+ TELECOMUNICACÕES, S.A.", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Central African Republic", - "countryCode": "CF", - "mcc": "623", - "mnc": "01", - "brand": "Moov", - "operator": "Atlantique Telecom Centrafrique SA", - "status": "Operational", - "bands": "GSM 900", - "notes": "Former Centrafrique Telecom Plus, Etisalat" - }, - { - "type": "National", - "countryName": "Central African Republic", - "countryCode": "CF", - "mcc": "623", - "mnc": "02", - "brand": "TC", - "operator": "Telecel Centrafrique", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Central African Republic", - "countryCode": "CF", - "mcc": "623", - "mnc": "03", - "brand": "Orange", - "operator": "Orange RCA", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / WiMAX", - "notes": null - }, - { - "type": "National", - "countryName": "Central African Republic", - "countryCode": "CF", - "mcc": "623", - "mnc": "04", - "brand": "Azur", - "operator": "Azur RCA", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Former Nationlink Telecom RCA" - }, - { - "type": "National", - "countryName": "Chad", - "countryCode": "TD", - "mcc": "622", - "mnc": "01", - "brand": "Airtel", - "operator": "Bharti Airtel SA", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Chad", - "countryCode": "TD", - "mcc": "622", - "mnc": "02", - "brand": "Tawali", - "operator": "SotelTchad", - "status": "Operational", - "bands": "CDMA2000", - "notes": "semi-fixed line; formerly Tchad Mobile / Orascom Telecom GSM 900 - defunct in 2004" - }, - { - "type": "National", - "countryName": "Chad", - "countryCode": "TD", - "mcc": "622", - "mnc": "03", - "brand": "Tigo", - "operator": "Millicom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Chad", - "countryCode": "TD", - "mcc": "622", - "mnc": "07", - "brand": "Salam", - "operator": "SotelTchad", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Comoros", - "countryCode": "KM", - "mcc": "654", - "mnc": "01", - "brand": "HURI", - "operator": "Comores Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 900", - "notes": null - }, - { - "type": "National", - "countryName": "Comoros", - "countryCode": "KM", - "mcc": "654", - "mnc": "02", - "brand": "TELCO SA", - "operator": "Telecom Malagasy (Telma)", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Congo", - "countryCode": "CG", - "mcc": "629", - "mnc": "01", - "brand": "Airtel", - "operator": "Celtel Congo", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2600", - "notes": "Former Zain and Celtel brand" - }, - { - "type": "National", - "countryName": "Congo", - "countryCode": "CG", - "mcc": "629", - "mnc": "07", - "brand": "Airtel", - "operator": "Warid Telecom", - "status": "Operational", - "bands": "GSM 900", - "notes": "Acquired by Airtel in 2014" - }, - { - "type": "National", - "countryName": "Congo", - "countryCode": "CG", - "mcc": "629", - "mnc": "10", - "brand": "Libertis Telecom", - "operator": "MTN CONGO S.A", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "01", - "brand": "Vodacom", - "operator": "Vodacom Congo RDC sprl", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / TD-LTE 3500 / WiMAX 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "02", - "brand": "Airtel", - "operator": "Airtel sprl", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "05", - "brand": "Supercell", - "operator": "Supercell SPRL", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "86", - "brand": "Orange RDC", - "operator": "Orange RDC sarl", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / TD-LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "88", - "brand": "YTT", - "operator": "Yozma Timeturns sprl", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Planned" - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "89", - "brand": "Orange RDC", - "operator": "Orange RDC sarl", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former OASIS, Tigo; acquired by Orange 2016" - }, - { - "type": "National", - "countryName": "Democratic Republic of the Congo", - "countryCode": "CD", - "mcc": "630", - "mnc": "90", - "brand": "Africell", - "operator": "Africell RDC sprl", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Djibouti", - "countryCode": "DJ", - "mcc": "638", - "mnc": "01", - "brand": "Evatis", - "operator": "Djibouti Telecom SA", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Egypt", - "countryCode": "EG", - "mcc": "602", - "mnc": "01", - "brand": "Orange", - "operator": "Orange Egypt", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Mobinil" - }, - { - "type": "National", - "countryName": "Egypt", - "countryCode": "EG", - "mcc": "602", - "mnc": "02", - "brand": "Vodafone", - "operator": "Vodafone Egypt", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Egypt", - "countryCode": "EG", - "mcc": "602", - "mnc": "03", - "brand": "Etisalat", - "operator": "Etisalat Egypt", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Egypt", - "countryCode": "EG", - "mcc": "602", - "mnc": "04", - "brand": "WE", - "operator": "Telecom Egypt", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Equatorial Guinea", - "countryCode": "GQ", - "mcc": "627", - "mnc": "01", - "brand": "Orange GQ", - "operator": "GETESA", - "status": "Operational", - "bands": "GSM 900 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Equatorial Guinea", - "countryCode": "GQ", - "mcc": "627", - "mnc": "03", - "brand": "Muni", - "operator": "Green Com S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE", - "notes": "Former HiTS" - }, - { - "type": "National", - "countryName": "Eritrea", - "countryCode": "ER", - "mcc": "657", - "mnc": "01", - "brand": "Eritel", - "operator": "Eritrea Telecommunications Services Corporation", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Eswatini", - "countryCode": "SZ", - "mcc": "653", - "mnc": "01", - "brand": null, - "operator": "SPTC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Eswatini", - "countryCode": "SZ", - "mcc": "653", - "mnc": "02", - "brand": null, - "operator": "Eswatini Mobile Limited", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Eswatini", - "countryCode": "SZ", - "mcc": "653", - "mnc": "10", - "brand": "MTN Eswatini", - "operator": "MTN Eswatini Limited", - "status": "Operational", - "bands": "GSM 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Ethiopia", - "countryCode": "ET", - "mcc": "636", - "mnc": "01", - "brand": "MTN", - "operator": "Ethio Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "French Departments and Territories in the Indian Ocean (France)", - "countryCode": "YT/RE", - "mcc": "647", - "mnc": "00", - "brand": "Orange", - "operator": "Orange La Réunion", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": "Mayotte, Réunion" - }, - { - "type": "National", - "countryName": "French Departments and Territories in the Indian Ocean (France)", - "countryCode": "YT/RE", - "mcc": "647", - "mnc": "01", - "brand": "Maoré Mobile", - "operator": "BJT Partners", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 1800", - "notes": "Mayotte" - }, - { - "type": "National", - "countryName": "French Departments and Territories in the Indian Ocean (France)", - "countryCode": "YT/RE", - "mcc": "647", - "mnc": "02", - "brand": "Only", - "operator": "Telco OI", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Mayotte" - }, - { - "type": "National", - "countryName": "French Departments and Territories in the Indian Ocean (France)", - "countryCode": "YT/RE", - "mcc": "647", - "mnc": "03", - "brand": "Free", - "operator": "Telco OI", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "Réunion\nFormer Only" - }, - { - "type": "National", - "countryName": "French Departments and Territories in the Indian Ocean (France)", - "countryCode": "YT/RE", - "mcc": "647", - "mnc": "04", - "brand": "Zeop", - "operator": "Zeop mobile", - "status": "Unknown", - "bands": "LTE 1800 / LTE 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "French Departments and Territories in the Indian Ocean (France)", - "countryCode": "YT/RE", - "mcc": "647", - "mnc": "10", - "brand": "SFR Réunion", - "operator": "Société Réunionnaise du Radiotéléphone", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Mayotte, Réunion; LTE bands 20 / 3 / 7" - }, - { - "type": "National", - "countryName": "Gabon", - "countryCode": "GA", - "mcc": "628", - "mnc": "01", - "brand": "Libertis", - "operator": "Gabon Telecom S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Gabon", - "countryCode": "GA", - "mcc": "628", - "mnc": "02", - "brand": "Moov", - "operator": "Gabon Telecom S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former Atlantique Télécom (Etisalat Group), merged with Gabon Telecom in 2016" - }, - { - "type": "National", - "countryName": "Gabon", - "countryCode": "GA", - "mcc": "628", - "mnc": "03", - "brand": "Airtel", - "operator": "Airtel Gabon S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Gabon", - "countryCode": "GA", - "mcc": "628", - "mnc": "04", - "brand": "Azur", - "operator": "USAN Gabon S.A.", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "Shut down 2018" - }, - { - "type": "National", - "countryName": "Gabon", - "countryCode": "GA", - "mcc": "628", - "mnc": "05", - "brand": "RAG", - "operator": "Réseau de l’Administration Gabonaise", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Gambia", - "countryCode": "GM", - "mcc": "607", - "mnc": "01", - "brand": "Gamcel", - "operator": "Gamcel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Gambia", - "countryCode": "GM", - "mcc": "607", - "mnc": "02", - "brand": "Africell", - "operator": "Africell", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Gambia", - "countryCode": "GM", - "mcc": "607", - "mnc": "03", - "brand": "Comium", - "operator": "Comium", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Gambia", - "countryCode": "GM", - "mcc": "607", - "mnc": "04", - "brand": "QCell", - "operator": "QCell Gambia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Gambia", - "countryCode": "GM", - "mcc": "607", - "mnc": "05", - "brand": null, - "operator": "Gamtel-Ecowan", - "status": "Unknown", - "bands": "WiMAX / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Gambia", - "countryCode": "GM", - "mcc": "607", - "mnc": "06", - "brand": null, - "operator": "NETPAGE", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "01", - "brand": "MTN", - "operator": "MTN Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600", - "notes": "former spacefon" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "02", - "brand": "Vodafone", - "operator": "Vodafone Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": "former Onetouch, Ghana Telecom" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "03", - "brand": "AirtelTigo", - "operator": "Millicom Ghana", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "former MOBITEL, Tigo" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "04", - "brand": "Expresso", - "operator": "Kasapa / Hutchison Telecom", - "status": "Operational", - "bands": "CDMA2000 850", - "notes": "former Kasapa" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "05", - "brand": null, - "operator": "National Security", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "06", - "brand": "AirtelTigo", - "operator": "Airtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "former Zain, Airtel" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "07", - "brand": "Globacom", - "operator": "Globacom Group", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "08", - "brand": "Surfline", - "operator": "Surfline Communications Ltd", - "status": "Not operational", - "bands": "LTE 2600", - "notes": "LTE band 7; shut down Oct 2018" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "09", - "brand": "NITA", - "operator": "National Information Technology Agency", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "10", - "brand": "Blu", - "operator": "Blu Telecommunications", - "status": "Operational", - "bands": "TD-LTE 2500", - "notes": "LTE band 41" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "11", - "brand": null, - "operator": "Netafrique Dot Com Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "12", - "brand": null, - "operator": "BTL", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "13", - "brand": null, - "operator": "Goldkey", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "14", - "brand": "busy", - "operator": "BusyInternet", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "15", - "brand": null, - "operator": "Lebara", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "16", - "brand": null, - "operator": "Telesol", - "status": "Operational", - "bands": "LTE 1800", - "notes": "data only" - }, - { - "type": "National", - "countryName": "Ghana", - "countryCode": "GH", - "mcc": "620", - "mnc": "17", - "brand": null, - "operator": "iBurst Africa", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea", - "countryCode": "GN", - "mcc": "611", - "mnc": "01", - "brand": "Orange", - "operator": "Orange S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE", - "notes": "former Spacetel" - }, - { - "type": "National", - "countryName": "Guinea", - "countryCode": "GN", - "mcc": "611", - "mnc": "02", - "brand": "Sotelgui", - "operator": "Sotelgui Lagui", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea", - "countryCode": "GN", - "mcc": "611", - "mnc": "03", - "brand": "Intercel", - "operator": "Intercel Guinée", - "status": "Not operational", - "bands": "GSM 900", - "notes": "former Telecel; license revoked Oct 2018" - }, - { - "type": "National", - "countryName": "Guinea", - "countryCode": "GN", - "mcc": "611", - "mnc": "04", - "brand": "MTN", - "operator": "Areeba Guinea", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea", - "countryCode": "GN", - "mcc": "611", - "mnc": "05", - "brand": "Cellcom", - "operator": "Cellcom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea-Bissau", - "countryCode": "GW", - "mcc": "632", - "mnc": "01", - "brand": "Guinetel", - "operator": "Guinétel S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea-Bissau", - "countryCode": "GW", - "mcc": "632", - "mnc": "02", - "brand": "MTN Areeba", - "operator": "Spacetel Guiné-Bissau S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea-Bissau", - "countryCode": "GW", - "mcc": "632", - "mnc": "03", - "brand": "Orange", - "operator": null, - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Guinea-Bissau", - "countryCode": "GW", - "mcc": "632", - "mnc": "07", - "brand": "Guinetel", - "operator": "Guinétel S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "01", - "brand": null, - "operator": "Cora de Comstar", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "02", - "brand": "Moov", - "operator": "Atlantique Cellulaire", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "03", - "brand": "Orange", - "operator": "Orange", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "04", - "brand": "KoZ", - "operator": "Comium Ivory Coast Inc", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "05", - "brand": "MTN", - "operator": "Loteny Telecom", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "06", - "brand": "GreenN", - "operator": "Oricel", - "status": "Operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "07", - "brand": "café", - "operator": "Aircomm", - "status": "Operational", - "bands": "GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Ivory Coast", - "countryCode": "CI", - "mcc": "612", - "mnc": "18", - "brand": null, - "operator": "YooMee", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "01", - "brand": "Safaricom", - "operator": "Safaricom Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "02", - "brand": "Safaricom", - "operator": "Safaricom Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "03", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800", - "notes": "Former Celtel, then Zain" - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "04", - "brand": null, - "operator": "Mobile Pay Kenya Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "05", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Econet Wireless, Essar Telecom; network sold to Safaricom in 2014, subscribers moved to Airtel" - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "06", - "brand": null, - "operator": "Finserve Africa Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "07", - "brand": "Telkom", - "operator": "Telkom Kenya", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": "Former Orange Kenya; CDMA 850 MHz shut down in Mar 2015" - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "08", - "brand": null, - "operator": "Wetribe Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Sema Mobile Services Ltd (MVNO)" - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "09", - "brand": null, - "operator": "Homeland Media Group Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "10", - "brand": "Faiba 4G", - "operator": "Jamii Telecommunications Limited", - "status": "Operational", - "bands": "LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "11", - "brand": null, - "operator": "Jambo Telcoms Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former WiAfrica Kenya Ltd." - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "12", - "brand": null, - "operator": "Infura Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "13", - "brand": null, - "operator": "Hidiga Investments Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Kenya", - "countryCode": "KE", - "mcc": "639", - "mnc": "14", - "brand": null, - "operator": "NRG Media Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Lesotho", - "countryCode": "LS", - "mcc": "651", - "mnc": "01", - "brand": "Vodacom", - "operator": "Vodacom Lesotho (Pty) Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Lesotho", - "countryCode": "LS", - "mcc": "651", - "mnc": "02", - "brand": "Econet Telecom", - "operator": "Econet Ezi-cel", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Lesotho", - "countryCode": "LS", - "mcc": "651", - "mnc": "10", - "brand": "Vodacom", - "operator": "Vodacom Lesotho (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Liberia", - "countryCode": "LR", - "mcc": "618", - "mnc": "01", - "brand": "Lonestar Cell MTN", - "operator": "Lonestar Communications Corporation", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Liberia", - "countryCode": "LR", - "mcc": "618", - "mnc": "02", - "brand": "Libercell", - "operator": "Atlantic Wireless (Liberia) Inc.", - "status": "Not operational", - "bands": "Unknown", - "notes": "Shut down in 2012" - }, - { - "type": "National", - "countryName": "Liberia", - "countryCode": "LR", - "mcc": "618", - "mnc": "04", - "brand": "Novafone", - "operator": "Novafone Inc.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Comium" - }, - { - "type": "National", - "countryName": "Liberia", - "countryCode": "LR", - "mcc": "618", - "mnc": "07", - "brand": "Orange LBR", - "operator": "Orange Liberia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Cellcom" - }, - { - "type": "National", - "countryName": "Liberia", - "countryCode": "LR", - "mcc": "618", - "mnc": "20", - "brand": "LIBTELCO", - "operator": "Liberia Telecommunications Corporation", - "status": "Operational", - "bands": "CDMA2000", - "notes": null - }, - { - "type": "National", - "countryName": "Libya", - "countryCode": "LY", - "mcc": "606", - "mnc": "00", - "brand": "Libyana", - "operator": "Libyana", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Libya", - "countryCode": "LY", - "mcc": "606", - "mnc": "01", - "brand": "Madar", - "operator": "Al-Madar Al-Jadeed", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Libya", - "countryCode": "LY", - "mcc": "606", - "mnc": "02", - "brand": "Al-Jeel Phone", - "operator": "Al-Jeel Al-Jadeed", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Al-Madar" - }, - { - "type": "National", - "countryName": "Libya", - "countryCode": "LY", - "mcc": "606", - "mnc": "03", - "brand": "Libya Phone", - "operator": "Libya Telecom & Technology (LTT)", - "status": "Operational", - "bands": "MVNO / LTE 800", - "notes": "Uses Libyana; LTE for fixed wireless broadband" - }, - { - "type": "National", - "countryName": "Libya", - "countryCode": "LY", - "mcc": "606", - "mnc": "06", - "brand": "Hatef Libya", - "operator": "Hatef Libya", - "status": "Operational", - "bands": "CDMA2000", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "Madagascar", - "countryCode": "MG", - "mcc": "646", - "mnc": "01", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": "Former Celtel (Zain), Madacom" - }, - { - "type": "National", - "countryName": "Madagascar", - "countryCode": "MG", - "mcc": "646", - "mnc": "02", - "brand": "Orange", - "operator": "Orange Madagascar S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Madagascar", - "countryCode": "MG", - "mcc": "646", - "mnc": "03", - "brand": "Sacel", - "operator": "Sacel Madagascar S.A.", - "status": "Not operational", - "bands": "GSM 900", - "notes": "license withdrawn in 2001" - }, - { - "type": "National", - "countryName": "Madagascar", - "countryCode": "MG", - "mcc": "646", - "mnc": "04", - "brand": "Telma", - "operator": "Telma Mobile S.A.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Madagascar", - "countryCode": "MG", - "mcc": "646", - "mnc": "05", - "brand": "BIP / blueline", - "operator": "Gulfsat Madagascar S.A.", - "status": "Operational", - "bands": "LTE 2100 / TD-LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Malawi", - "countryCode": "MW", - "mcc": "650", - "mnc": "01", - "brand": "TNM", - "operator": "Telecom Network Malawi", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / TD-LTE 2500", - "notes": null - }, - { - "type": "National", - "countryName": "Malawi", - "countryCode": "MW", - "mcc": "650", - "mnc": "02", - "brand": "Access", - "operator": "Access Communications Ltd", - "status": "Operational", - "bands": "CDMA / LTE 850", - "notes": null - }, - { - "type": "National", - "countryName": "Malawi", - "countryCode": "MW", - "mcc": "650", - "mnc": "03", - "brand": "MTL", - "operator": "Malawi Telecommunications Limited", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Malawi", - "countryCode": "MW", - "mcc": "650", - "mnc": "10", - "brand": "Airtel", - "operator": "Airtel Malawi Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800", - "notes": "Former Celtel (Zain)" - }, - { - "type": "National", - "countryName": "Mali", - "countryCode": "ML", - "mcc": "610", - "mnc": "01", - "brand": "Malitel", - "operator": "Malitel SA", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Mali", - "countryCode": "ML", - "mcc": "610", - "mnc": "02", - "brand": "Orange", - "operator": "Orange Mali SA", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Mali", - "countryCode": "ML", - "mcc": "610", - "mnc": "03", - "brand": "Telecel", - "operator": "Alpha Telecommunication Mali S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Mauritania", - "countryCode": "MR", - "mcc": "609", - "mnc": "01", - "brand": "Mattel", - "operator": "Mattel", - "status": "Operational", - "bands": "GSM 900 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Mauritania", - "countryCode": "MR", - "mcc": "609", - "mnc": "02", - "brand": "Chinguitel", - "operator": "Chinguitel", - "status": "Operational", - "bands": "CDMA / GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Mauritania", - "countryCode": "MR", - "mcc": "609", - "mnc": "10", - "brand": "Moov", - "operator": "Mauritel Mobiles", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Mauritius", - "countryCode": "MU", - "mcc": "617", - "mnc": "01", - "brand": "my.t", - "operator": "Cellplus Mobile Communications Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500", - "notes": "Former Orange" - }, - { - "type": "National", - "countryName": "Mauritius", - "countryCode": "MU", - "mcc": "617", - "mnc": "02", - "brand": "MOKOZE / AZU", - "operator": "Mahanagar Telephone Mauritius Limited (MTML)", - "status": "Operational", - "bands": "CDMA2000", - "notes": null - }, - { - "type": "National", - "countryName": "Mauritius", - "countryCode": "MU", - "mcc": "617", - "mnc": "03", - "brand": "CHILI", - "operator": "Mahanagar Telephone Mauritius Limited (MTML)", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Mauritius", - "countryCode": "MU", - "mcc": "617", - "mnc": "10", - "brand": "Emtel", - "operator": "Emtel Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "00", - "brand": "Orange Morocco", - "operator": "Médi Télécom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "Former Méditel" - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "01", - "brand": "IAM", - "operator": "Ittissalat Al-Maghrib (Maroc Telecom)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "02", - "brand": "INWI", - "operator": "Wana Corporate", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "04", - "brand": null, - "operator": "Al Houria Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "05", - "brand": "INWI", - "operator": "Wana Corporate", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "06", - "brand": "IAM", - "operator": "Ittissalat Al-Maghrib (Maroc Telecom)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Morocco", - "countryCode": "MA", - "mcc": "604", - "mnc": "99", - "brand": null, - "operator": "Al Houria Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Mozambique", - "countryCode": "MZ", - "mcc": "643", - "mnc": "01", - "brand": "mCel", - "operator": "Mocambique Celular S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Mozambique", - "countryCode": "MZ", - "mcc": "643", - "mnc": "03", - "brand": "Movitel", - "operator": "Movitel, SA", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Mozambique", - "countryCode": "MZ", - "mcc": "643", - "mnc": "04", - "brand": "Vodacom", - "operator": "Vodacom Mozambique, S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "01", - "brand": "MTC", - "operator": "MTC Namibia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "02", - "brand": "switch", - "operator": "Telecom Namibia", - "status": "Operational", - "bands": "CDMA2000 800", - "notes": null - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "03", - "brand": "TN Mobile", - "operator": "Telecom Namibia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / TD-LTE 2600", - "notes": "former Cell One" - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "04", - "brand": null, - "operator": "Paratus Telecommunications (Pty)", - "status": "Operational", - "bands": "WiMAX 2500 / TD-LTE", - "notes": "former ITN/WTN" - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "05", - "brand": null, - "operator": "Demshi Investments CC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "06", - "brand": null, - "operator": "MTN Namibia", - "status": "Operational", - "bands": "LTE", - "notes": "LTE fixed wireless, MVNO" - }, - { - "type": "National", - "countryName": "Namibia", - "countryCode": "NA", - "mcc": "649", - "mnc": "07", - "brand": null, - "operator": "Capricorn Connect", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Niger", - "countryCode": "NE", - "mcc": "614", - "mnc": "01", - "brand": "SahelCom", - "operator": "La Société Sahélienne de Télécommunications (SahelCom)", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Niger", - "countryCode": "NE", - "mcc": "614", - "mnc": "02", - "brand": "Airtel", - "operator": "Bharti Airtel Limited", - "status": "Operational", - "bands": "GSM 900 / LTE", - "notes": "formerly Zain, Celtel" - }, - { - "type": "National", - "countryName": "Niger", - "countryCode": "NE", - "mcc": "614", - "mnc": "03", - "brand": "Moov", - "operator": "Atlantique Telecom (subsidiary of Etisalat)", - "status": "Operational", - "bands": "GSM 900", - "notes": "Former Telecel" - }, - { - "type": "National", - "countryName": "Niger", - "countryCode": "NE", - "mcc": "614", - "mnc": "04", - "brand": "Orange", - "operator": "Orange Niger", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "00", - "brand": null, - "operator": "Capcom", - "status": "Not operational", - "bands": "LTE 1900", - "notes": "Former Starcomms, MultiLinks, and MTS First Wireless" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "20", - "brand": "Airtel", - "operator": "Bharti Airtel Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Former Zain, V-Mobile" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "22", - "brand": "InterC", - "operator": "InterC Network Ltd.", - "status": "Operational", - "bands": "LTE 800", - "notes": "Former Intercellular; LTE band 20" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "24", - "brand": null, - "operator": "Spectranet", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "25", - "brand": "Visafone", - "operator": "Visafone Communications Ltd.", - "status": "Not operational", - "bands": "CDMA2000 800 / CDMA2000 1900", - "notes": "Acquired by MTN" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "26", - "brand": null, - "operator": "Swift", - "status": "Operational", - "bands": "TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "27", - "brand": "Smile", - "operator": "Smile Communications Nigeria", - "status": "Operational", - "bands": "LTE 800", - "notes": "LTE band 20" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "30", - "brand": "MTN", - "operator": "MTN Nigeria Communications Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 3500 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "40", - "brand": "Ntel", - "operator": "Nigerian Mobile Telecommunications Limited", - "status": "Operational", - "bands": "LTE 900 / LTE 1800", - "notes": "Former M-Tel; LTE bands 8 / 3" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "50", - "brand": "Glo", - "operator": "Globacom Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Nigeria", - "countryCode": "NG", - "mcc": "621", - "mnc": "60", - "brand": "9mobile", - "operator": "Emerging Markets Telecommunication Services Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": "Until 2017, Etisalat" - }, - { - "type": "National", - "countryName": "Rwanda", - "countryCode": "RW", - "mcc": "635", - "mnc": "10", - "brand": "MTN", - "operator": "MTN Rwandacell SARL", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Rwanda", - "countryCode": "RW", - "mcc": "635", - "mnc": "11", - "brand": "Rwandatel", - "operator": "Rwandatel S.A.", - "status": "Not operational", - "bands": "CDMA", - "notes": "Licence revoked in April 2011" - }, - { - "type": "National", - "countryName": "Rwanda", - "countryCode": "RW", - "mcc": "635", - "mnc": "12", - "brand": "Rwandatel", - "operator": "Rwandatel S.A.", - "status": "Not operational", - "bands": "GSM", - "notes": "Licence revoked in April 2011" - }, - { - "type": "National", - "countryName": "Rwanda", - "countryCode": "RW", - "mcc": "635", - "mnc": "13", - "brand": "Airtel", - "operator": "Airtel RWANDA", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former Tigo" - }, - { - "type": "National", - "countryName": "Rwanda", - "countryCode": "RW", - "mcc": "635", - "mnc": "14", - "brand": "Airtel", - "operator": "Airtel RWANDA", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Merged with Tigo; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Rwanda", - "countryCode": "RW", - "mcc": "635", - "mnc": "17", - "brand": "Olleh", - "operator": "Olleh Rwanda Networks", - "status": "Operational", - "bands": "LTE 800 / LTE 1800", - "notes": "LTE band 20 / 3; wholesale network used by Airtel, MTN, Tigo" - }, - { - "type": "National", - "countryName": "Saint Helena, Ascension and Tristan da Cunha", - "countryCode": "SH", - "mcc": "658", - "mnc": "01", - "brand": "Sure", - "operator": "Sure South Atlantic Ltd.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "São Tomé and Príncipe", - "countryCode": "ST", - "mcc": "626", - "mnc": "01", - "brand": "CSTmovel", - "operator": "Companhia Santomense de Telecomunicações", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "São Tomé and Príncipe", - "countryCode": "ST", - "mcc": "626", - "mnc": "02", - "brand": "Unitel STP", - "operator": "Unitel São Tomé and Príncipe", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Senegal", - "countryCode": "SN", - "mcc": "608", - "mnc": "01", - "brand": "Orange", - "operator": "Sonatel", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Senegal", - "countryCode": "SN", - "mcc": "608", - "mnc": "02", - "brand": "Free", - "operator": "Saga Africa Holdings Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "Former Hello, Tigo" - }, - { - "type": "National", - "countryName": "Senegal", - "countryCode": "SN", - "mcc": "608", - "mnc": "03", - "brand": "Expresso", - "operator": "Expresso Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Senegal", - "countryCode": "SN", - "mcc": "608", - "mnc": "04", - "brand": null, - "operator": "CSU-SA", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Seychelles", - "countryCode": "SC", - "mcc": "633", - "mnc": "01", - "brand": "Cable & Wireless", - "operator": "Cable & Wireless Seychelles", - "status": "Operational", - "bands": "GSM 900 / UMTS / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Seychelles", - "countryCode": "SC", - "mcc": "633", - "mnc": "02", - "brand": "Mediatech", - "operator": "Mediatech International", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "License and MNC withdrawn" - }, - { - "type": "National", - "countryName": "Seychelles", - "countryCode": "SC", - "mcc": "633", - "mnc": "05", - "brand": null, - "operator": "Intelvision Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Seychelles", - "countryCode": "SC", - "mcc": "633", - "mnc": "10", - "brand": "Airtel", - "operator": "Telecom Seychelles Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "01", - "brand": "Orange", - "operator": "Orange SL Limited", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE", - "notes": "Former Zain, Celtel, Bharti Airtel" - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "02", - "brand": "Africell", - "operator": "Lintel Sierra Leone Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Millicom, Tigo" - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "03", - "brand": "Africell", - "operator": "Lintel Sierra Leone Limited", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "04", - "brand": "Comium", - "operator": "Comium (Sierra Leone) Ltd.", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "05", - "brand": "Africell", - "operator": "Lintel Sierra Leone Limited", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "06", - "brand": "SierraTel", - "operator": "Sierra Leone Telephony", - "status": "Operational", - "bands": "CDMA 800 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "07", - "brand": null, - "operator": "Qcell Sierra Leone", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "09", - "brand": "Smart Mobile", - "operator": "InterGroup Telecom SL", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "25", - "brand": "Mobitel", - "operator": "Mobitel", - "status": "Reserved", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "40", - "brand": null, - "operator": "Datatel (SL) Ltd.", - "status": "Unknown", - "bands": "GSM", - "notes": null - }, - { - "type": "National", - "countryName": "Sierra Leone", - "countryCode": "SL", - "mcc": "619", - "mnc": "50", - "brand": null, - "operator": "Datatel (SL) Ltd.", - "status": "Unknown", - "bands": "CDMA", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "01", - "brand": "Telesom", - "operator": "Telesom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "04", - "brand": "Somafone", - "operator": "Somafone FZLLC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "10", - "brand": "Nationlink", - "operator": "NationLink Telecom", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "20", - "brand": "SOMNET", - "operator": "SOMNET", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": "Uncertain bands" - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "50", - "brand": "Hormuud", - "operator": "Hormuud Telecom Somalia Inc", - "status": "Operational", - "bands": "GSM 900 / UMTS", - "notes": "Uncertain MNC number, maybe (also) 25" - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "30", - "brand": "Golis", - "operator": "Golis Telecom Somalia", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "57", - "brand": "UNITEL", - "operator": "UNITEL S.a.r.l.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "60", - "brand": "Nationlink", - "operator": "Nationlink Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "67", - "brand": "Horntel Group", - "operator": "HTG Group Somalia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "70", - "brand": null, - "operator": "Onkod Telecom Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "71", - "brand": "Somtel", - "operator": "Somtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Somalia", - "countryCode": "SO", - "mcc": "637", - "mnc": "82", - "brand": "Telcom", - "operator": "Telcom Somalia", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / CDMA2000 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "01", - "brand": "Vodacom", - "operator": "Vodacom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 5200 / LTE 5800 / 5G 700 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "02", - "brand": "Telkom", - "operator": "Telkom SA SOC Ltd", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / TD-LTE 2300 / 5G 3500", - "notes": "Formerly Telkom Mobile, 8ta" - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "03", - "brand": "Telkom", - "operator": "Telkom SA SOC Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "04", - "brand": null, - "operator": "Sasol (Pty) Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "05", - "brand": null, - "operator": "Telkom SA Ltd", - "status": "Unknown", - "bands": "Unknown 3G", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "06", - "brand": null, - "operator": "Sentech (Pty) Ltd", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "07", - "brand": "Cell C", - "operator": "Cell C (Pty) Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "10", - "brand": "MTN", - "operator": "MTN Group", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500 / 5G 28000", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "11", - "brand": null, - "operator": "South African Police Service Gauteng", - "status": "Not operational", - "bands": "TETRA 410", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "12", - "brand": "MTN", - "operator": "MTN Group", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "13", - "brand": "Neotel", - "operator": "Neotel Pty Ltd", - "status": "Not operational", - "bands": "CDMA 800", - "notes": "Shut down May 2019" - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "14", - "brand": "Neotel", - "operator": "Neotel Pty Ltd", - "status": "Operational", - "bands": "LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "16", - "brand": null, - "operator": "Phoenix System Integration (Pty) Ltd", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "17", - "brand": null, - "operator": "Sishen Iron Ore Company (Ltd) Pty", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "19", - "brand": "rain", - "operator": "Wireless Business Solutions (Pty) Ltd", - "status": "Operational", - "bands": "LTE 1800 / TD-LTE 2600 / TD-5G 2600", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "21", - "brand": null, - "operator": "Cape Town Metropolitan Council", - "status": "Not operational", - "bands": "TETRA 410", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "24", - "brand": null, - "operator": "SMSPortal (Pty) Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "25", - "brand": null, - "operator": "Wirels Connect", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "27", - "brand": null, - "operator": "A to Z Vaal Industrial Supplies Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "28", - "brand": null, - "operator": "Hymax Talking Solutions (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "30", - "brand": null, - "operator": "Bokamoso Consortium", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "31", - "brand": null, - "operator": "Karabo Telecoms (Pty) Ltd.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "32", - "brand": null, - "operator": "Ilizwi Telecommunications", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "33", - "brand": null, - "operator": "Thinta Thinta Telecommunications Pty Ltd", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "34", - "brand": null, - "operator": "Bokone Telecoms Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "35", - "brand": null, - "operator": "Kingdom Communications Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "36", - "brand": null, - "operator": "Amatole Telecommunications Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "38", - "brand": "rain", - "operator": "Wireless Business Solutions (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former iBurst" - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "41", - "brand": null, - "operator": "South African Police Service", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "46", - "brand": null, - "operator": "SMS Cellular Services (Pty) Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "50", - "brand": null, - "operator": "Ericsson South Africa (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "51", - "brand": null, - "operator": "Integrat (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "53", - "brand": "Lycamobile", - "operator": "Lycamobile (Pty) Ltd", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "65", - "brand": null, - "operator": "Vodacom Pty Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "73", - "brand": "rain", - "operator": "Wireless Business Solutions (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former iBurst" - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "74", - "brand": "rain", - "operator": "Wireless Business Solutions (Pty) Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former iBurst" - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "75", - "brand": "ACSA", - "operator": "Airports Company South Africa", - "status": "Not operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "76", - "brand": null, - "operator": "Comsol Networks (Pty) Ltd", - "status": "Operational", - "bands": "WiMAX / 28000", - "notes": null - }, - { - "type": "National", - "countryName": "South Africa", - "countryCode": "ZA", - "mcc": "655", - "mnc": "77", - "brand": "Umoja Connect", - "operator": "One Telecom (Pty) Ltd", - "status": "Unknown", - "bands": "5G", - "notes": null - }, - { - "type": "National", - "countryName": "South Sudan", - "countryCode": "SS", - "mcc": "659", - "mnc": "02", - "brand": "MTN", - "operator": "MTN South Sudan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "South Sudan", - "countryCode": "SS", - "mcc": "659", - "mnc": "03", - "brand": "Gemtel", - "operator": "Gemtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800", - "notes": null - }, - { - "type": "National", - "countryName": "South Sudan", - "countryCode": "SS", - "mcc": "659", - "mnc": "04", - "brand": "Vivacell", - "operator": "Network of the World (NOW)", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800", - "notes": "shut down Mar 2018" - }, - { - "type": "National", - "countryName": "South Sudan", - "countryCode": "SS", - "mcc": "659", - "mnc": "06", - "brand": "Zain", - "operator": "Zain South Sudan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "South Sudan", - "countryCode": "SS", - "mcc": "659", - "mnc": "07", - "brand": "Sudani", - "operator": "Sudani", - "status": "Operational", - "bands": "CDMA", - "notes": null - }, - { - "type": "National", - "countryName": "Sudan", - "countryCode": "SD", - "mcc": "634", - "mnc": "01", - "brand": "Zain SD", - "operator": "Zain Group - Sudan", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800", - "notes": "Former, Mobitel" - }, - { - "type": "National", - "countryName": "Sudan", - "countryCode": "SD", - "mcc": "634", - "mnc": "02", - "brand": "MTN", - "operator": "MTN Sudan", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Sudan", - "countryCode": "SD", - "mcc": "634", - "mnc": "03", - "brand": "MTN", - "operator": "MTN Sudan", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Sudan", - "countryCode": "SD", - "mcc": "634", - "mnc": "05", - "brand": "canar", - "operator": "Canar Telecom", - "status": "Operational", - "bands": "CDMA2000 450", - "notes": null - }, - { - "type": "National", - "countryName": "Sudan", - "countryCode": "SD", - "mcc": "634", - "mnc": "07", - "brand": "Sudani One", - "operator": "Sudatel Group", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / CDMA2000 800", - "notes": null - }, - { - "type": "National", - "countryName": "Sudan", - "countryCode": "SD", - "mcc": "634", - "mnc": "09", - "brand": "khartoum INC", - "operator": "NEC", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "01", - "brand": null, - "operator": "Shared Network Tanzania Limited", - "status": "Not operational", - "bands": "UMTS 900", - "notes": "Former Rural NetCo Limited; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "02", - "brand": "tiGO", - "operator": "MIC Tanzania Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 2500", - "notes": "Former Mobitel and Buzz" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "03", - "brand": "Zantel", - "operator": "Zanzibar Telecom Ltd", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "04", - "brand": "Vodacom", - "operator": "Vodacom Tanzania Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 700 / 5G 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "05", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 2100", - "notes": "Former Celtel (Zain); LTE bands 28 / 1" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "06", - "brand": null, - "operator": "WIA Company Limited", - "status": "Operational", - "bands": "WiMAX / LTE", - "notes": "Former Sasatel (Dovetel); fixed wireless" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "07", - "brand": "TTCL Mobile", - "operator": "Tanzania Telecommunication Company LTD (TTCL)", - "status": "Operational", - "bands": "CDMA 800 / UMTS 2100 / LTE 1800 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "08", - "brand": "Smart", - "operator": "Benson Informatics Limited", - "status": "Not operational", - "bands": "TD-LTE 2300", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "09", - "brand": "Halotel", - "operator": "Viettel Tanzania Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Former ExcellentCom Tanzania Limited (Hits)" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "11", - "brand": "SmileCom", - "operator": "Smile Telecoms Holdings Ltd.", - "status": "Operational", - "bands": "LTE 800", - "notes": null - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "12", - "brand": null, - "operator": "MyCell Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "13", - "brand": "Cootel", - "operator": "Wiafrica Tanzania Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Tanzania", - "countryCode": "TZ", - "mcc": "640", - "mnc": "14", - "brand": null, - "operator": "MO Mobile Holding Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Togo", - "countryCode": "TG", - "mcc": "615", - "mnc": "01", - "brand": "Togo Cell", - "operator": "Togo Telecom", - "status": "Operational", - "bands": "GSM 900 / LTE / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Togo", - "countryCode": "TG", - "mcc": "615", - "mnc": "03", - "brand": "Moov", - "operator": "Moov Togo", - "status": "Operational", - "bands": "GSM 900 / LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Tunisia", - "countryCode": "TN", - "mcc": "605", - "mnc": "01", - "brand": "Orange", - "operator": "Orange Tunisie", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Tunisia", - "countryCode": "TN", - "mcc": "605", - "mnc": "02", - "brand": "Tunicell", - "operator": "Tunisie Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Tunisia", - "countryCode": "TN", - "mcc": "605", - "mnc": "03", - "brand": "Ooredoo", - "operator": "Ooredoo Tunisiana", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800", - "notes": "former Orascom Telecom Tunisie" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "01", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": "Former Zain, Celtel" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "04", - "brand": null, - "operator": "Tangerine Uganda Limited", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "06", - "brand": "Vodafone", - "operator": "Afrimax Uganda", - "status": "Not operational", - "bands": "TD-LTE 2600", - "notes": "shut down May 2018; MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "10", - "brand": "MTN", - "operator": "MTN Uganda", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 2600", - "notes": "LTE band 7" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "11", - "brand": "Uganda Telecom", - "operator": "Uganda Telecom Ltd.", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "14", - "brand": "Africell", - "operator": "Africell Uganda", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS / LTE 800", - "notes": "Former Orange, HiTS Telecom; LTE band 20" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "16", - "brand": null, - "operator": "SimbaNET Uganda Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "18", - "brand": "Smart", - "operator": "Suretelecom Uganda Ltd.", - "status": "Not operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "20", - "brand": null, - "operator": "Hamilton Telecom Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "22", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS", - "notes": "Former Warid Telecom" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "26", - "brand": "Lycamobile", - "operator": "Lycamobile Network Services Uganda Limited", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "30", - "brand": null, - "operator": "Anupam Global Soft Uganda Limited", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "33", - "brand": "Smile", - "operator": "Smile Communications Uganda Limited", - "status": "Operational", - "bands": "LTE 800", - "notes": "LTE band 20" - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "40", - "brand": null, - "operator": "Civil Aviation Authority (CAA)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "44", - "brand": "K2", - "operator": "K2 Telecom Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Uganda", - "countryCode": "UG", - "mcc": "641", - "mnc": "66", - "brand": "i-Tel", - "operator": "i-Tel Ltd", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Zambia", - "countryCode": "ZM", - "mcc": "645", - "mnc": "01", - "brand": "Airtel", - "operator": "Bharti Airtel", - "status": "Operational", - "bands": "GSM 900 / UMTS 900 / UMTS 2100 / LTE 900", - "notes": "Former Celtel (Zain)" - }, - { - "type": "National", - "countryName": "Zambia", - "countryCode": "ZM", - "mcc": "645", - "mnc": "02", - "brand": "MTN", - "operator": "MTN Group", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 1800 / 5G 2600", - "notes": "Former Telecel" - }, - { - "type": "National", - "countryName": "Zambia", - "countryCode": "ZM", - "mcc": "645", - "mnc": "03", - "brand": "ZAMTEL", - "operator": "Zambia Telecommunications Company Ltd", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / TD-LTE 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Zambia", - "countryCode": "ZM", - "mcc": "645", - "mnc": "07", - "brand": null, - "operator": "Liquid Telecom Zambia Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Zimbabwe", - "countryCode": "ZW", - "mcc": "648", - "mnc": "01", - "brand": "Net*One", - "operator": "Net*One Cellular (Pvt) Ltd", - "status": "Operational", - "bands": "GSM 900 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Zimbabwe", - "countryCode": "ZW", - "mcc": "648", - "mnc": "03", - "brand": "Telecel", - "operator": "Telecel Zimbabwe (PVT) Ltd", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Zimbabwe", - "countryCode": "ZW", - "mcc": "648", - "mnc": "04", - "brand": "Econet", - "operator": "Econet Wireless", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "010", - "brand": "Movistar", - "operator": "Telefónica Móviles Argentina S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "020", - "brand": "Nextel", - "operator": "NII Holdings", - "status": "Not operational", - "bands": "iDEN 800", - "notes": "Shut down June 2019" - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "034", - "brand": "Personal", - "operator": "Telecom Personal S.A.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "040", - "brand": "Globalstar", - "operator": "TE.SA.M Argentina S.A.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "070", - "brand": "Movistar", - "operator": "Telefónica Móviles Argentina S.A.", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Also uses or had used MNC 07" - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "310", - "brand": "Claro", - "operator": "AMX Argentina S.A.", - "status": "Operational", - "bands": "GSM 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "320", - "brand": "Claro", - "operator": "AMX Argentina S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "330", - "brand": "Claro", - "operator": "AMX Argentina S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "341", - "brand": "Personal", - "operator": "Telecom Personal S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600 / 5G 2600", - "notes": "LTE bands 28 / 4 / 7" - }, - { - "type": "National", - "countryName": "Argentina", - "countryCode": "AR", - "mcc": "722", - "mnc": "350", - "brand": "PORT-HABLE", - "operator": "Hutchison Telecommunications Argentina S.A.", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Acquired by Claro" - }, - { - "type": "National", - "countryName": "Belize", - "countryCode": "BZ", - "mcc": "702", - "mnc": "67", - "brand": "DigiCell", - "operator": "Belize Telemedia Limited (BTL)", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1900", - "notes": "LTE bands 17 / 2" - }, - { - "type": "National", - "countryName": "Belize", - "countryCode": "BZ", - "mcc": "702", - "mnc": "68", - "brand": "INTELCO", - "operator": "International Telecommunications Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Belize", - "countryCode": "BZ", - "mcc": "702", - "mnc": "69", - "brand": "SMART", - "operator": "Speednet Communications Limited", - "status": "Operational", - "bands": "CDMA2000 850 / UMTS 850 / LTE 700", - "notes": "LTE band 13" - }, - { - "type": "National", - "countryName": "Belize", - "countryCode": "BZ", - "mcc": "702", - "mnc": "99", - "brand": "SMART", - "operator": "Speednet Communications Limited", - "status": "Operational", - "bands": "CDMA2000 850", - "notes": null - }, - { - "type": "National", - "countryName": "Bolivia", - "countryCode": "BO", - "mcc": "736", - "mnc": "01", - "brand": "Viva", - "operator": "Nuevatel PCS De Bolivia SA", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Bolivia", - "countryCode": "BO", - "mcc": "736", - "mnc": "02", - "brand": "Entel", - "operator": "Entel SA", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Bolivia", - "countryCode": "BO", - "mcc": "736", - "mnc": "03", - "brand": "Tigo", - "operator": "Telefónica Celular De Bolivia S.A", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 700", - "notes": "Aka. Telecel Bolivia" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "00", - "brand": "Nextel", - "operator": "NII Holdings, Inc.", - "status": "Not operational", - "bands": "iDEN 850", - "notes": "Defunct since March 2018" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "01", - "brand": null, - "operator": "SISTEER DO BRASIL TELECOMUNICAÇÔES", - "status": "Unknown", - "bands": "MVNO", - "notes": "Through Vivo S.A. network" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "02", - "brand": "TIM", - "operator": "Telecom Italia Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "03", - "brand": "TIM", - "operator": "Telecom Italia Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "04", - "brand": "TIM", - "operator": "Telecom Italia Mobile", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "05", - "brand": "Claro", - "operator": "Claro", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "06", - "brand": "Vivo", - "operator": "Telefônica Brasil S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "10", - "brand": "Vivo", - "operator": "Telefônica Brasil S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "11", - "brand": "Vivo", - "operator": "Telefônica Brasil S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "12", - "brand": "Claro", - "operator": "Claro", - "status": "Unknown", - "bands": "Unknown", - "notes": "Unknown" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "15", - "brand": "Sercomtel", - "operator": "Sercomtel Celular", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "16", - "brand": "Brasil Telecom GSM", - "operator": "Brasil Telecom GSM", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100", - "notes": "acquired by Oi, MNC used for existing Brasil Telecom SIM Cards only" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "17", - "brand": "Surf Telecom", - "operator": "Correios Celula", - "status": "Operational", - "bands": "MVNO", - "notes": "Through TIM network" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "18", - "brand": "datora", - "operator": "Datora (Vodafone)", - "status": "Operational", - "bands": "MVNO", - "notes": "Through TIM network" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "21", - "brand": "LIGUE", - "operator": "Ligue Telecom", - "status": "Operational", - "bands": "LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "23", - "brand": "Vivo", - "operator": "Telefônica Brasil S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800 / LTE 2600", - "notes": "formerly used by the acquired Telemig Celular" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "24", - "brand": null, - "operator": "Amazonia Celular", - "status": "Unknown", - "bands": "Unknown", - "notes": "acquired by Oi" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "28", - "brand": "No name", - "operator": null, - "status": "Operational", - "bands": "Unknown", - "notes": "Used for RanSharing control and roaming between Vivo and Claro" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "29", - "brand": "Unifique", - "operator": "Unifique Telecomunicações S/A", - "status": "Operational", - "bands": "5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "30", - "brand": "Oi", - "operator": "TNL PCS Oi", - "status": "Not operational", - "bands": "Unknown", - "notes": "Liquidated Apr 2022" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "31", - "brand": "Oi", - "operator": "TNL PCS Oi", - "status": "Not operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100", - "notes": "Liquidated Apr 2022" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "32", - "brand": "Algar Telecom", - "operator": "Algar Telecom S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / 5G 2300", - "notes": "LTE bands 28 / 3" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "33", - "brand": "Algar Telecom", - "operator": "Algar Telecom S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / 5G 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "34", - "brand": "Algar Telecom", - "operator": "Algar Telecom S.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / 5G 2300", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "35", - "brand": null, - "operator": "Telcom Telecomunicações", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "36", - "brand": null, - "operator": "Options Telecomunicações", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "37", - "brand": "aeiou", - "operator": "Unicel", - "status": "Not operational", - "bands": "Unknown", - "notes": "Bankruptcy in 2011" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "38", - "brand": "Claro", - "operator": "Claro", - "status": "Operational", - "bands": "GSM 1900", - "notes": "Inherited from the old Vesper's WLL licenses. In use for fixed wireless phones." - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "39", - "brand": "Nextel", - "operator": "NII Holdings, Inc.", - "status": "Operational", - "bands": "UMTS 2100 / LTE 1800 / LTE 2100", - "notes": null - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "54", - "brand": "Conecta", - "operator": "PORTO SEGURO TELECOMUNICAÇÔES", - "status": "Operational", - "bands": "MVNO", - "notes": "Through TIM network" - }, - { - "type": "National", - "countryName": "Brazil", - "countryCode": "BR", - "mcc": "724", - "mnc": "99", - "brand": "Local", - "operator": null, - "status": "Operational", - "bands": "Unknown", - "notes": "Used for RanSharing control and roaming between TIM and Oi" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "01", - "brand": "entel", - "operator": "Entel Telefonía Móvil S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 700 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "02", - "brand": "Movistar", - "operator": "Telefónica Móvil de Chile", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 2600 / 5G 3500", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "03", - "brand": "CLARO CL", - "operator": "Claro Chile S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 700 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "04", - "brand": "WOM", - "operator": "Novator Partners", - "status": "Operational", - "bands": "iDEN 800", - "notes": "Former Nextel" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "05", - "brand": null, - "operator": "Multikom S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "06", - "brand": "Telsur", - "operator": "Blue Two Chile S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "07", - "brand": "Movistar", - "operator": "Telefónica Móvil de Chile", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "08", - "brand": "VTR Móvil", - "operator": "VTR S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Movistar" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "09", - "brand": "WOM", - "operator": "Novator Partners", - "status": "Operational", - "bands": "UMTS 1700 / LTE 1700 / 5G 3500", - "notes": "Former Nextel; roaming with entel and Claro networks (GSM / UMTS)" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "10", - "brand": "entel", - "operator": "Entel Telefonía Móvil S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "11", - "brand": null, - "operator": "Celupago S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "12", - "brand": "Colo-Colo MóvilWanderers Móvil", - "operator": "Telestar Móvil S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Movistar" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "13", - "brand": "Virgin Mobile", - "operator": "Tribe Mobile Chile SPA", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Movistar" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "14", - "brand": null, - "operator": "Netline Telefónica Móvil Ltda", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "15", - "brand": null, - "operator": "Cibeles Telecom S.A.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "16", - "brand": null, - "operator": "Nomade Telecomunicaciones S.A.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "17", - "brand": null, - "operator": "COMPATEL Chile Limitada", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "18", - "brand": null, - "operator": "Empresas Bunker S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "19", - "brand": "móvil Falabella", - "operator": "Sociedad Falabella Móvil SPA", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses entel" - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "20", - "brand": null, - "operator": "Inversiones Santa Fe Limitada", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "22", - "brand": null, - "operator": "Cellplus SpA", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "23", - "brand": null, - "operator": "Claro Servicios Empresariales S. A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "26", - "brand": null, - "operator": "WILL S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "27", - "brand": null, - "operator": "Cibeles Telecom S.A.", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "National", - "countryName": "Chile", - "countryCode": "CL", - "mcc": "730", - "mnc": "99", - "brand": "Will", - "operator": "WILL Telefonía", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900", - "notes": "Wireless local loop" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "001", - "brand": "Movistar", - "operator": "Colombia Telecomunicaciones S.A. ESP", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "002", - "brand": "Edatel", - "operator": "Edatel S.A. ESP", - "status": "Unknown", - "bands": "Unknown", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "003", - "brand": null, - "operator": "LLEIDA S.A.S.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "004", - "brand": null, - "operator": "COMPATEL COLOMBIA SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "020", - "brand": "Tigo", - "operator": "Une EPM Telecomunicaciones S.A. E.S.P.", - "status": "Operational", - "bands": "LTE 2600", - "notes": "Former Une-EPM; Former Emtelsa; merged with Tigo" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "099", - "brand": "EMCALI", - "operator": "Empresas Municipales de Cali", - "status": "Operational", - "bands": "GSM 900", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "100", - "brand": "Claro", - "operator": "Comunicacion Celular S.A. (Comcel)", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "101", - "brand": "Claro", - "operator": "Comunicacion Celular S.A. (Comcel)", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600", - "notes": "GSM to shut down Feb 2023" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "102", - "brand": null, - "operator": "Bellsouth Colombia", - "status": "Not operational", - "bands": "GSM 850 / GSM 1900 / CDMA 850", - "notes": "MNC withdrawn; network acquired by Movistar" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "103", - "brand": "Tigo", - "operator": "Colombia Móvil S.A. ESP", - "status": "Operational", - "bands": "UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600", - "notes": "GSM shut down Nov 2022" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "111", - "brand": "Tigo", - "operator": "Colombia Móvil S.A. ESP", - "status": "Operational", - "bands": "UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600", - "notes": "GSM shut down Nov 2022" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "123", - "brand": "Movistar", - "operator": "Colombia Telecomunicaciones S.A. ESP", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 850 / LTE 1700 / LTE 1900", - "notes": "CDMA shut down" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "124", - "brand": "Movistar", - "operator": "Colombia Telecomunicaciones S.A. ESP", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "130", - "brand": "AVANTEL", - "operator": "Avantel S.A.S", - "status": "Operational", - "bands": "UMTS 1700 / LTE 1700", - "notes": "owned by Novator Partners; iDEN shut down in 2021" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "142", - "brand": null, - "operator": "Une EPM Telecomunicaciones S.A. E.S.P.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "154", - "brand": "Virgin Mobile", - "operator": "Virgin Mobile Colombia S.A.S.", - "status": "Operational", - "bands": "MVNO", - "notes": "Uses Movistar" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "165", - "brand": null, - "operator": "Colombia Móvil S.A. ESP", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "176", - "brand": null, - "operator": "DirecTV Colombia Ltda", - "status": "Operational", - "bands": "LTE 2600 / TD-5G 2600", - "notes": "Fixed wireless; acquired by Movistar" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "187", - "brand": "eTb", - "operator": "Empresa de Telecomunicaciones de Bogotá S.A. ESP", - "status": "Operational", - "bands": "LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "199", - "brand": null, - "operator": "SUMA Movil SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "208", - "brand": null, - "operator": "UFF Movil SAS", - "status": "Not operational", - "bands": "LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "210", - "brand": null, - "operator": "Hablame Colombia SAS ESP", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "220", - "brand": null, - "operator": "Libre Tecnologias SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "230", - "brand": null, - "operator": "Setroc Mobile Group SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "240", - "brand": null, - "operator": "Logistica Flash Colombia SAS", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "250", - "brand": null, - "operator": "Plintron Colombia SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "360", - "brand": "WOM", - "operator": "Partners Telecom Colombia SAS", - "status": "Operational", - "bands": "LTE 700 / LTE 2600", - "notes": "owned by Novator Partners" - }, - { - "type": "National", - "countryName": "Colombia", - "countryCode": "CO", - "mcc": "732", - "mnc": "666", - "brand": "Claro", - "operator": "Comunicacion Celular S.A. (Comcel)", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Costa Rica", - "countryCode": "CR", - "mcc": "712", - "mnc": "01", - "brand": "Kölbi ICE", - "operator": "Instituto Costarricense de Electricidad", - "status": "Operational", - "bands": "GSM 1800 / UMTS 850 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Costa Rica", - "countryCode": "CR", - "mcc": "712", - "mnc": "02", - "brand": "Kölbi ICE", - "operator": "Instituto Costarricense de Electricidad", - "status": "Operational", - "bands": "GSM 1800 / UMTS 850 / LTE 1800 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Costa Rica", - "countryCode": "CR", - "mcc": "712", - "mnc": "03", - "brand": "Claro", - "operator": "Claro CR Telecomunicaciones (Aló)", - "status": "Operational", - "bands": "GSM 1800 / UMTS 2100 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Costa Rica", - "countryCode": "CR", - "mcc": "712", - "mnc": "04", - "brand": "Liberty", - "operator": "Liberty Latin America", - "status": "Operational", - "bands": "GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800", - "notes": "Former Telefónica Móviles Costa Rica" - }, - { - "type": "National", - "countryName": "Costa Rica", - "countryCode": "CR", - "mcc": "712", - "mnc": "20", - "brand": "fullmóvil", - "operator": "Virtualis S.A.", - "status": "Not operational", - "bands": "MVNO", - "notes": "Closed on 6 February 2019" - }, - { - "type": "National", - "countryName": "Ecuador", - "countryCode": "EC", - "mcc": "740", - "mnc": "00", - "brand": "Movistar", - "operator": "Otecel S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 1900", - "notes": "Former BellSouth" - }, - { - "type": "National", - "countryName": "Ecuador", - "countryCode": "EC", - "mcc": "740", - "mnc": "01", - "brand": "Claro", - "operator": "CONECEL S.A.", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 1700", - "notes": "Former Porta" - }, - { - "type": "National", - "countryName": "Ecuador", - "countryCode": "EC", - "mcc": "740", - "mnc": "02", - "brand": "CNT Mobile", - "operator": "Corporación Nacional de Telecomunicaciones (CNT EP)", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 1700", - "notes": "Former Alegro / Telecsa; CDMA 1900 shut down in 2014" - }, - { - "type": "National", - "countryName": "Ecuador", - "countryCode": "EC", - "mcc": "740", - "mnc": "03", - "brand": "Tuenti", - "operator": "Otecel S.A.", - "status": "Operational", - "bands": "MVNO", - "notes": "Runs on Movistar's Network" - }, - { - "type": "National", - "countryName": "El Salvador", - "countryCode": "SV", - "mcc": "706", - "mnc": "01", - "brand": "Claro", - "operator": "CTE Telecom Personal, S.A. de C.V.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900", - "notes": "owned by América Móvil" - }, - { - "type": "National", - "countryName": "El Salvador", - "countryCode": "SV", - "mcc": "706", - "mnc": "02", - "brand": "Digicel", - "operator": "Digicel, S.A. de C.V.", - "status": "Operational", - "bands": "GSM 900 / UMTS 900", - "notes": null - }, - { - "type": "National", - "countryName": "El Salvador", - "countryCode": "SV", - "mcc": "706", - "mnc": "03", - "brand": "Tigo", - "operator": "Telemovil El Salvador S.A.", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / LTE 850 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "El Salvador", - "countryCode": "SV", - "mcc": "706", - "mnc": "04", - "brand": "Movistar", - "operator": "Telefónica Móviles El Salvador", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "El Salvador", - "countryCode": "SV", - "mcc": "706", - "mnc": "05", - "brand": "RED", - "operator": "INTELFON, S.A. de C.V.", - "status": "Operational", - "bands": "iDEN", - "notes": null - }, - { - "type": "National", - "countryName": "Falkland Islands (United Kingdom)", - "countryCode": "FK", - "mcc": "750", - "mnc": "001", - "brand": "Sure", - "operator": "Sure South Atlantic Ltd.", - "status": "Operational", - "bands": "GSM 900 / LTE 1800 / WiMAX 2400 / WiMAX 3500", - "notes": "formerly Cable & Wireless Communications Touch" - }, - { - "type": "National", - "countryName": "French Guiana (France)", - "countryCode": "GF", - "mcc": "340", - "mnc": "01", - "brand": "Orange", - "operator": "Orange Caraïbe Mobiles", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": "French Antilles MCC" - }, - { - "type": "National", - "countryName": "French Guiana (France)", - "countryCode": "GF", - "mcc": "340", - "mnc": "02", - "brand": "SFR Caraïbe", - "operator": "Outremer Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600", - "notes": "French Antilles MCC; former Only" - }, - { - "type": "National", - "countryName": "French Guiana (France)", - "countryCode": "GF", - "mcc": "340", - "mnc": "11", - "brand": null, - "operator": "Guyane Téléphone Mobile", - "status": "Not operational", - "bands": "Unknown", - "notes": "French Antilles MCC; MNC withdrawn" - }, - { - "type": "National", - "countryName": "French Guiana (France)", - "countryCode": "GF", - "mcc": "340", - "mnc": "20", - "brand": "Digicel", - "operator": "DIGICEL Antilles Française Guyane", - "status": "Operational", - "bands": "GSM 900 / UMTS 2100 / LTE 800", - "notes": "French Antilles MCC; former Bouygues Telecom Caraïbes" - }, - { - "type": "National", - "countryName": "French Guiana (France)", - "countryCode": "GF", - "mcc": "742", - "mnc": "04", - "brand": "Free", - "operator": "Free Caraïbe", - "status": "Unknown", - "bands": "UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600", - "notes": null - }, - { - "type": "National", - "countryName": "Guatemala", - "countryCode": "GT", - "mcc": "704", - "mnc": "01", - "brand": "Claro", - "operator": "Telecomunicaciones de Guatemala, S.A.", - "status": "Operational", - "bands": "CDMA 1900 / GSM 900 / UMTS 1900 / LTE 1900 / 5G 3500", - "notes": "former Servicios de Comunicaciones Personales Inalambricas (SERCOM)" - }, - { - "type": "National", - "countryName": "Guatemala", - "countryCode": "GT", - "mcc": "704", - "mnc": "02", - "brand": "Tigo", - "operator": "Millicom / Local partners", - "status": "Operational", - "bands": "TDMA 800 / GSM 850 / UMTS 850 / LTE 850 / 5G 3500", - "notes": "former COMCEL" - }, - { - "type": "National", - "countryName": "Guatemala", - "countryCode": "GT", - "mcc": "704", - "mnc": "03", - "brand": "Claro", - "operator": "Telecomunicaciones de Guatemala, S.A.", - "status": "Operational", - "bands": "CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 1900", - "notes": "former Movistar" - }, - { - "type": "National", - "countryName": "Guatemala", - "countryCode": "GT", - "mcc": "704", - "mnc": "?", - "brand": "digicel", - "operator": "Digicel Group", - "status": "Reserved", - "bands": "GSM 900", - "notes": null - }, - { - "type": "National", - "countryName": "Guatemala", - "countryCode": "GT", - "mcc": "704", - "mnc": "?", - "brand": "RED/INTELFON", - "operator": "INTELFON Guatemala", - "status": "Operational", - "bands": "iDEN 800", - "notes": "INTELFON GUATEMALA owned by INTELFON El Salvador" - }, - { - "type": "National", - "countryName": "Guyana", - "countryCode": "GY", - "mcc": "738", - "mnc": "00", - "brand": "E-Networks", - "operator": "E-Networks Inc.", - "status": "Operational", - "bands": "WiMAX / LTE 700 / 5G", - "notes": "Fixed wireless" - }, - { - "type": "National", - "countryName": "Guyana", - "countryCode": "GY", - "mcc": "738", - "mnc": "01", - "brand": "Digicel", - "operator": "U-Mobile (Cellular) Inc.", - "status": "Operational", - "bands": "GSM 900 / UMTS 850 / LTE 700", - "notes": null - }, - { - "type": "National", - "countryName": "Guyana", - "countryCode": "GY", - "mcc": "738", - "mnc": "002", - "brand": "GT&T Cellink Plus", - "operator": "Guyana Telephone & Telegraph Co.", - "status": "Operational", - "bands": "GSM 900 / UMTS 850 / LTE 700", - "notes": "LTE band 28" - }, - { - "type": "National", - "countryName": "Guyana", - "countryCode": "GY", - "mcc": "738", - "mnc": "003", - "brand": null, - "operator": "Quark Communications Inc.", - "status": "Operational", - "bands": "TD-LTE", - "notes": null - }, - { - "type": "National", - "countryName": "Guyana", - "countryCode": "GY", - "mcc": "738", - "mnc": "040", - "brand": "E-Networks", - "operator": "E-Networks Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Guyana", - "countryCode": "GY", - "mcc": "738", - "mnc": "05", - "brand": null, - "operator": "eGovernment Unit, Ministry of the Presidency", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Honduras", - "countryCode": "HN", - "mcc": "708", - "mnc": "001", - "brand": "Claro", - "operator": "Servicios de Comunicaciones de Honduras S.A. de C.V.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Honduras", - "countryCode": "HN", - "mcc": "708", - "mnc": "002", - "brand": "Tigo", - "operator": "Celtel", - "status": "Operational", - "bands": "CDMA 850 / GSM 850 / UMTS 850 / LTE 1700", - "notes": "also uses or has used MNC 02" - }, - { - "type": "National", - "countryName": "Honduras", - "countryCode": "HN", - "mcc": "708", - "mnc": "030", - "brand": "Hondutel", - "operator": "Empresa Hondureña de Telecomunicaciones", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Honduras", - "countryCode": "HN", - "mcc": "708", - "mnc": "040", - "brand": "Digicel", - "operator": "Digicel de Honduras", - "status": "Not operational", - "bands": "GSM 1900", - "notes": "Sold to Claro in 2011" - }, - { - "type": "National", - "countryName": "Nicaragua", - "countryCode": "NI", - "mcc": "710", - "mnc": "21", - "brand": "Claro", - "operator": "Empresa Nicaragüense de Telecomunicaciones, S.A. (ENITEL) (América Móvil)", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Nicaragua", - "countryCode": "NI", - "mcc": "710", - "mnc": "300", - "brand": "Tigo", - "operator": "Telefonía Celular de Nicaragua, S.A.", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 1900", - "notes": "Former Movistar; CDMA 800, TDMA 800, and NAMPS 800 have been shut down" - }, - { - "type": "National", - "countryName": "Nicaragua", - "countryCode": "NI", - "mcc": "710", - "mnc": "73", - "brand": "Claro", - "operator": "Servicios de Comunicaciones S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850", - "notes": "Former SERCOM (Merged with ENITEL in 2004 and became Claro in 2009)" - }, - { - "type": "National", - "countryName": "Panama", - "countryCode": "PA", - "mcc": "714", - "mnc": "01", - "brand": "Cable & Wireless", - "operator": "Cable & Wireless Panama S.A.", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / LTE 700 / LTE 1900", - "notes": "LTE band 28 / 2" - }, - { - "type": "National", - "countryName": "Panama", - "countryCode": "PA", - "mcc": "714", - "mnc": "02", - "brand": "Tigo", - "operator": "Grupo de Comunicaciones Digitales, S.A.", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900", - "notes": "Former Movistar, Bell South Corp. (BSC); CDMA 800, TDMA 800 and NAMPS 800 are closed." - }, - { - "type": "National", - "countryName": "Panama", - "countryCode": "PA", - "mcc": "714", - "mnc": "020", - "brand": "Tigo", - "operator": "Grupo de Comunicaciones Digitales, S.A.", - "status": "Operational", - "bands": "GSM 850 / LTE 700", - "notes": "Former Movistar" - }, - { - "type": "National", - "countryName": "Panama", - "countryCode": "PA", - "mcc": "714", - "mnc": "03", - "brand": "Claro", - "operator": "América Móvil", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 700 / LTE 1900", - "notes": "Being acquired by C&W; LTE bands 28 / 2" - }, - { - "type": "National", - "countryName": "Panama", - "countryCode": "PA", - "mcc": "714", - "mnc": "04", - "brand": "Digicel", - "operator": "Digicel Group", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 700 / LTE 1900", - "notes": "LTE bands 28 / 2" - }, - { - "type": "National", - "countryName": "Panama", - "countryCode": "PA", - "mcc": "714", - "mnc": "05", - "brand": "Cable & Wireless", - "operator": "Cable & Wireless Panama S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Paraguay", - "countryCode": "PY", - "mcc": "744", - "mnc": "01", - "brand": "VOX", - "operator": "Hola Paraguay S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 900 / UMTS 1900 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Paraguay", - "countryCode": "PY", - "mcc": "744", - "mnc": "02", - "brand": "Claro", - "operator": "AMX Paraguay S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 1700", - "notes": "Former Hutchison, Port Hable, CTI Móvil" - }, - { - "type": "National", - "countryName": "Paraguay", - "countryCode": "PY", - "mcc": "744", - "mnc": "03", - "brand": null, - "operator": "Compañia Privada de Comunicaciones S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Paraguay", - "countryCode": "PY", - "mcc": "744", - "mnc": "04", - "brand": "Tigo", - "operator": "Telefónica Celular Del Paraguay S.A. (Telecel)", - "status": "Operational", - "bands": "GSM 850 / UMTS 850 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Paraguay", - "countryCode": "PY", - "mcc": "744", - "mnc": "05", - "brand": "Personal", - "operator": "Núcleo S.A. (TIM)", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900", - "notes": null - }, - { - "type": "National", - "countryName": "Paraguay", - "countryCode": "PY", - "mcc": "744", - "mnc": "06", - "brand": "Copaco", - "operator": "Copaco S.A.", - "status": "Operational", - "bands": "GSM 1800 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Peru", - "countryCode": "PE", - "mcc": "716", - "mnc": "06", - "brand": "Movistar", - "operator": "Telefónica del Perú S.A.A.", - "status": "Operational", - "bands": "CDMA2000 850 / GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700", - "notes": null - }, - { - "type": "National", - "countryName": "Peru", - "countryCode": "PE", - "mcc": "716", - "mnc": "07", - "brand": "Entel", - "operator": "Entel Perú S.A.", - "status": "Operational", - "bands": "iDEN", - "notes": "Former Nextel" - }, - { - "type": "National", - "countryName": "Peru", - "countryCode": "PE", - "mcc": "716", - "mnc": "10", - "brand": "Claro", - "operator": "América Móvil Perú", - "status": "Operational", - "bands": "GSM 1900 / UMTS 850 / LTE 700 / LTE 1900 / TD-LTE 3500 / 5G 3500 / 5G 39000", - "notes": "Former TIM" - }, - { - "type": "National", - "countryName": "Peru", - "countryCode": "PE", - "mcc": "716", - "mnc": "15", - "brand": "Bitel", - "operator": "Viettel Peru S.A.C.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 900", - "notes": null - }, - { - "type": "National", - "countryName": "Peru", - "countryCode": "PE", - "mcc": "716", - "mnc": "17", - "brand": "Entel", - "operator": "Entel Perú S.A.", - "status": "Operational", - "bands": "UMTS 1900 / LTE 1700 / TD-LTE 2300 / 5G 3500", - "notes": "Former Nextel" - }, - { - "type": "National", - "countryName": "Suriname", - "countryCode": "SR", - "mcc": "746", - "mnc": "02", - "brand": "Telesur", - "operator": "Telecommunications Company Suriname (Telesur)", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / 5G 3700", - "notes": "LTE bands 28, 3" - }, - { - "type": "National", - "countryName": "Suriname", - "countryCode": "SR", - "mcc": "746", - "mnc": "03", - "brand": "Digicel", - "operator": "Digicel Group Limited", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 850 / LTE 1800", - "notes": null - }, - { - "type": "National", - "countryName": "Suriname", - "countryCode": "SR", - "mcc": "746", - "mnc": "04", - "brand": "Digicel", - "operator": "Digicel Group Limited", - "status": "Not operational", - "bands": "GSM 900 / UMTS", - "notes": "Former Uniqa (Intelsur N.V. / UTS N.V.); MNC withdrawn" - }, - { - "type": "National", - "countryName": "Suriname", - "countryCode": "SR", - "mcc": "746", - "mnc": "05", - "brand": "Telesur", - "operator": "Telecommunications Company Suriname (Telesur)", - "status": "Unknown", - "bands": "CDMA 450", - "notes": null - }, - { - "type": "National", - "countryName": "Uruguay", - "countryCode": "UY", - "mcc": "748", - "mnc": "00", - "brand": "Antel", - "operator": "Administración Nacional de Telecomunicaciones", - "status": "Not operational", - "bands": "TDMA", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uruguay", - "countryCode": "UY", - "mcc": "748", - "mnc": "01", - "brand": "Antel", - "operator": "Administración Nacional de Telecomunicaciones", - "status": "Operational", - "bands": "GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1700 / 5G 28000", - "notes": "Former brand Ancel; LTE bands 28 / 4" - }, - { - "type": "National", - "countryName": "Uruguay", - "countryCode": "UY", - "mcc": "748", - "mnc": "03", - "brand": "Antel", - "operator": "Administración Nacional de Telecomunicaciones", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "National", - "countryName": "Uruguay", - "countryCode": "UY", - "mcc": "748", - "mnc": "07", - "brand": "Movistar", - "operator": "Telefónica Móviles Uruguay", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 850 / LTE 1900", - "notes": "Former Movicom" - }, - { - "type": "National", - "countryName": "Uruguay", - "countryCode": "UY", - "mcc": "748", - "mnc": "10", - "brand": "Claro", - "operator": "AM Wireless Uruguay S.A.", - "status": "Operational", - "bands": "GSM 1900 / UMTS 1900 / LTE 1700", - "notes": "Former CTI Móvil" - }, - { - "type": "National", - "countryName": "Uruguay", - "countryCode": "UY", - "mcc": "748", - "mnc": "15", - "brand": null, - "operator": "ENALUR S.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "National", - "countryName": "Venezuela", - "countryCode": "VE", - "mcc": "734", - "mnc": "01", - "brand": "Digitel", - "operator": "Corporacion Digitel C.A.", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Formerly INFONET" - }, - { - "type": "National", - "countryName": "Venezuela", - "countryCode": "VE", - "mcc": "734", - "mnc": "02", - "brand": "Digitel GSM", - "operator": "Corporacion Digitel C.A.", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 900 / LTE 1800", - "notes": "DIGITEL-DIGICEL-INFONET Merger" - }, - { - "type": "National", - "countryName": "Venezuela", - "countryCode": "VE", - "mcc": "734", - "mnc": "03", - "brand": "DirecTV", - "operator": "Galaxy Entertainment de Venezuela C.A.", - "status": "Unknown", - "bands": "LTE 2600", - "notes": "Formerly DIGICEL" - }, - { - "type": "National", - "countryName": "Venezuela", - "countryCode": "VE", - "mcc": "734", - "mnc": "04", - "brand": "Movistar", - "operator": "Telefónica Móviles Venezuela", - "status": "Operational", - "bands": "GSM 850 / GSM 1900 / UMTS 1900 / LTE 1700", - "notes": "CDMA 850 shut down March 2014" - }, - { - "type": "National", - "countryName": "Venezuela", - "countryCode": "VE", - "mcc": "734", - "mnc": "06", - "brand": "Movilnet", - "operator": "Telecomunicaciones Movilnet", - "status": "Operational", - "bands": "GSM 850 / UMTS 1900 / LTE 1700", - "notes": "CDMA 850 shut down Oct 2020" - }, - { - "type": "Test", - "countryName": null, - "countryCode": null, - "mcc": "001", - "mnc": "01", - "brand": "TEST", - "operator": "Test network", - "status": "Operational", - "bands": "any", - "notes": null - }, - { - "type": "Test", - "countryName": null, - "countryCode": null, - "mcc": "001", - "mnc": "001", - "brand": "TEST", - "operator": "Test network", - "status": "Operational", - "bands": "any", - "notes": null - }, - { - "type": "Test", - "countryName": null, - "countryCode": null, - "mcc": "999", - "mnc": "99", - "brand": null, - "operator": "Internal use", - "status": "Operational", - "bands": "any", - "notes": "Internal use in private networks, no roaming" - }, - { - "type": "Test", - "countryName": null, - "countryCode": null, - "mcc": "999", - "mnc": "999", - "brand": null, - "operator": "Internal use", - "status": "Operational", - "bands": "any", - "notes": "Internal use in private networks, no roaming" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "01", - "brand": "ICO", - "operator": "ICO Satellite Management", - "status": "Not operational", - "bands": "Satellite", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "02", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: Sense Communications International" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "03", - "brand": "Iridium", - "operator": null, - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "04", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Satellite", - "notes": "Formerly: Globalstar" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "05", - "brand": null, - "operator": "Thuraya RMSS Network", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "06", - "brand": null, - "operator": "Thuraya Satellite Telecommunications Company", - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "07", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: Ellipso" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "08", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: GSM, reserved for station identification where the mobile does not have a subscription IMSI" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "09", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: Tele1 Europe" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "10", - "brand": "ACeS", - "operator": null, - "status": "Not operational", - "bands": "Satellite", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "11", - "brand": "Inmarsat", - "operator": null, - "status": "Operational", - "bands": "Satellite", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "12", - "brand": "Telenor", - "operator": "Telenor Maritime AS", - "status": "Operational", - "bands": "GSM 1800 / LTE 800", - "notes": "Maritime; formerly Maritime Communications Partner (MCP)" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "13", - "brand": "GSM.AQ", - "operator": "BebbiCell AG", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Antarctica +88234 Network; formerly Global Networks Switzerland Inc.; MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "14", - "brand": "AeroMobile", - "operator": "AeroMobile AS", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Air" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "15", - "brand": "OnAir", - "operator": "OnAir Switzerland Sarl", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Air" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "16", - "brand": "Cisco Jasper", - "operator": "Cisco Systems, Inc.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "17", - "brand": "Navitas", - "operator": "JT Group Limited", - "status": "Not operational", - "bands": "GSM 1800", - "notes": "Maritime; shut down in 2009" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "18", - "brand": "Cellular at Sea", - "operator": "AT&T Mobility", - "status": "Operational", - "bands": "GSM 900 / GSM 1900 / CDMA2000 1900 / UMTS 1900 / LTE 700", - "notes": "Maritime" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "19", - "brand": "Epic Maritime", - "operator": "Monaco Telecom", - "status": "Operational", - "bands": "GSM 900 / GSM 1800 / UMTS 2100", - "notes": "Maritime" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "20", - "brand": null, - "operator": "Intermatica", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "21", - "brand": null, - "operator": "Wins Limited", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Maritime; formerly Seanet Maritime Communications" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "22", - "brand": null, - "operator": "MediaLincc Ltd", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "23", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: Beeline" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "24", - "brand": "iNum", - "operator": "Voxbone", - "status": "Unknown", - "bands": "Unknown", - "notes": "+883 iNum" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "25", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: In & phone" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "26", - "brand": "TIM@sea", - "operator": "Telecom Italia Mobile", - "status": "Operational", - "bands": "GSM 1800 / GSM 1900", - "notes": "Maritime" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "27", - "brand": "OnMarine", - "operator": "Monaco Telecom", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Maritime" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "28", - "brand": "Vodafone", - "operator": "GDSP (Vodafone's Global Data Service Platform)", - "status": "Operational", - "bands": "Roaming SIM", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "29", - "brand": "Telenor", - "operator": null, - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "30", - "brand": null, - "operator": "Unassigned", - "status": "Returned spare", - "bands": "Unknown", - "notes": "Formerly: Terrestar Networks" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "31", - "brand": "Orange", - "operator": "Orange S.A.", - "status": "Operational", - "bands": "GSM 900", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "32", - "brand": "Sky High", - "operator": "MegaFon", - "status": "Not operational", - "bands": "GSM 900", - "notes": "Air (Aeroflot); MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "33", - "brand": null, - "operator": "Smart Communications", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "34", - "brand": null, - "operator": "tyntec GmbH", - "status": "Unknown", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "35", - "brand": null, - "operator": "Globecomm Network Services", - "status": "Operational", - "bands": "GSM 850", - "notes": "Maritime" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "36", - "brand": null, - "operator": "Azerfon", - "status": "Operational", - "bands": "GSM 1800", - "notes": "Air" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "37", - "brand": null, - "operator": "Transatel", - "status": "Operational", - "bands": "MVNO", - "notes": "Global SIM for Data Mobile Broadband and M2M" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "38", - "brand": null, - "operator": "Multiregional TransitTelecom (MTT)", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "39", - "brand": null, - "operator": "MTX Connect Ltd", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "40", - "brand": "1NCE", - "operator": "Deutsche Telekom AG", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "41", - "brand": null, - "operator": "One Network B.V.", - "status": "Operational", - "bands": "MVNO", - "notes": "Former BodyTrace Netherlands B.V." - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "42", - "brand": null, - "operator": "IMC Island Ehf", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former DCN Hub ehf; MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "43", - "brand": null, - "operator": "EMnify GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "44", - "brand": null, - "operator": "AT&T Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "45", - "brand": null, - "operator": "Advanced Wireless Network Company Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": "subsidiary of Advanced Info Service" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "46", - "brand": null, - "operator": "Telecom26 AG", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "47", - "brand": null, - "operator": "Ooredoo", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "48", - "brand": "Com4", - "operator": "Communication for Devices in Sweden AB", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "49", - "brand": "Zain", - "operator": "Mobile Telecommunications Company K.S.C.P.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "50", - "brand": null, - "operator": "EchoStar Mobile", - "status": "Unknown", - "bands": "Satellite", - "notes": "Also listed as Sawatch Limited" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "51", - "brand": null, - "operator": "VisionNG", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "52", - "brand": null, - "operator": "Manx Telecom Trading Ltd.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "53", - "brand": "European Aviation Network", - "operator": "Inmarsat Ltd.", - "status": "Operational", - "bands": "LTE 2100", - "notes": "Former Deutsche Telekom; LTE band 65; ground-based network for aircraft" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "54", - "brand": null, - "operator": "Teleena Holding B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "55", - "brand": null, - "operator": "Beezz Communication Solutions Ltd.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "56", - "brand": "ETSI", - "operator": "European Telecommunications Standards Institute", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "57", - "brand": null, - "operator": "SAP", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "58", - "brand": "BICS", - "operator": "Belgacom ICS SA", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "59", - "brand": null, - "operator": "MessageBird B.V.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "60", - "brand": null, - "operator": "OneWeb", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "61", - "brand": null, - "operator": "MTN Management Services", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "62", - "brand": null, - "operator": "Twilio Inc.", - "status": "Operational", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "63", - "brand": null, - "operator": "GloTel B.V.", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "64", - "brand": null, - "operator": "Syniverse Technologies, LLC", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "65", - "brand": null, - "operator": "Plintron Global Technology Solutions Pty Ltd", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "66", - "brand": null, - "operator": "Limitless Mobile LLC", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "67", - "brand": null, - "operator": "1NCE GmbH", - "status": "Operational", - "bands": "MVNO", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "68", - "brand": null, - "operator": "Maersk Line A/S", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "69", - "brand": null, - "operator": "Legos", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "70", - "brand": null, - "operator": "Clementvale Baltic OÜ", - "status": "Not operational", - "bands": "MVNO", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "71", - "brand": null, - "operator": "Tampnet AS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "72", - "brand": null, - "operator": "Tele2 Sverige Aktiebolag", - "status": "Unknown", - "bands": "Unknown", - "notes": "Former Tele2 IoT" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "73", - "brand": null, - "operator": "Cubic Telecom Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "74", - "brand": null, - "operator": "Etisalat", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "75", - "brand": null, - "operator": "Podsystem Ltd.", - "status": "Operational", - "bands": "MVNO", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "76", - "brand": null, - "operator": "A1 Telekom Austria AG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "77", - "brand": null, - "operator": "Bouygues Telecom", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "78", - "brand": null, - "operator": "Telecom Italia Sparkle S.p.A.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "79", - "brand": null, - "operator": "Nokia Corporation", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "80", - "brand": null, - "operator": "Flo Live Limited", - "status": "Unknown", - "bands": "MVNO", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "81", - "brand": null, - "operator": "Airnity SAS", - "status": "Unknown", - "bands": "MVNO", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "82", - "brand": null, - "operator": "Eseye Limited", - "status": "Unknown", - "bands": "MVNO", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "83", - "brand": null, - "operator": "iBasis Netherlands BV", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "84", - "brand": null, - "operator": "Telefónica Móviles España, S.A. Unipersonal", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "85", - "brand": null, - "operator": "Telefónica Germany GmbH & Co. OHG", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "86", - "brand": null, - "operator": "BJT Partners SAS", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "87", - "brand": null, - "operator": "Cisco Systems, Inc.", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "88", - "brand": null, - "operator": "UN Office for the Coordination of Humanitarian Affairs (OCHA)", - "status": "Not operational", - "bands": "Unknown", - "notes": "MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "89", - "brand": null, - "operator": "DIDWW Ireland Limited", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "90", - "brand": null, - "operator": "Truphone Limited", - "status": "Operational", - "bands": "MVNO", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "91", - "brand": null, - "operator": "World Mobile Group Limited", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "92", - "brand": null, - "operator": "Phonegroup SA", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "93", - "brand": null, - "operator": "SkyFive AG", - "status": "Unknown", - "bands": "Unknown", - "notes": "split off from Nokia; ground-based networks for aircraft" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "94", - "brand": null, - "operator": "Intelsat US LLC", - "status": "Unknown", - "bands": "Satellite", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "95", - "brand": null, - "operator": "HMD Global Oy", - "status": "Unknown", - "bands": "Unknown", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "96", - "brand": null, - "operator": "KORE Wireless", - "status": "Unknown", - "bands": "Unknown", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "901", - "mnc": "97", - "brand": null, - "operator": "Satelio IoT Services S.L.", - "status": "Unknown", - "bands": "Satellite", - "notes": "IoT solutions" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "902", - "mnc": "01", - "brand": null, - "operator": "MulteFire Alliance", - "status": "Operational", - "bands": "LTE", - "notes": null - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "991", - "mnc": "01", - "brand": null, - "operator": "World's Global Telecom", - "status": "Not operational", - "bands": "Unknown", - "notes": "temporarily assigned until 15 January 2021" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "991", - "mnc": "02", - "brand": "5G Croco", - "operator": "Orange S.A.", - "status": "Not operational", - "bands": "5G", - "notes": "temporarily assigned until 6 August 2022" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "991", - "mnc": "03", - "brand": null, - "operator": "Halys SAS", - "status": "Not operational", - "bands": "Unknown", - "notes": "temporary assignment for trial until 5 April 2022; MNC withdrawn" - }, - { - "type": "International", - "countryName": null, - "countryCode": null, - "mcc": "995", - "mnc": "01", - "brand": "FonePlus", - "operator": "Sure (Diego Garcia) Ltd", - "status": "Operational", - "bands": "GSM 900", - "notes": "There appears to be no officially assigned MCC" - } -] \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/check_status.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/check_status.sh deleted file mode 100755 index 409b011..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/check_status.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -# Location: /www/cgi-bin/quecmanager/profiles/check_status.cgi - -# Set content type to JSON -echo "Content-type: application/json" -echo "" - -# Configuration -STATUS_FILE="/tmp/quecprofiles_status.json" -TRACK_FILE="/tmp/quecprofiles_active" - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t quecprofiles -p "daemon.$level" "status_check: $1" -} - -# Function to output default "idle" JSON -output_idle_json() { - cat <>/tmp/list_profiles_error.log -} - -# Function to output JSON error response -output_error() { - local message="$1" - echo "{\"status\":\"error\",\"message\":\"$message\",\"profiles\":[]}" - log_message "$message" "error" - exit 1 -} - -# Function to sanitize string for JSON -sanitize_for_json() { - echo "$1" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed 's/\t/\\t/g' | tr -d '\r\n' -} - -# Check if UCI command exists -if ! which uci >/dev/null 2>&1; then - output_error "UCI command not found" -fi - -# Function to extract profiles from UCI config -get_profiles() { - log_message "Fetching profiles from UCI config" - - # Check if UCI config exists - if [ ! -f /etc/config/quecprofiles ]; then - log_message "No profiles config found" "warn" - echo "{\"status\":\"success\",\"profiles\":[]}" - return 0 - fi - - # Start JSON output - local json_output="" - local first=1 - local count=0 - - # Get all profile indices - make sure this succeeds - local indices=$(uci -q show quecprofiles | grep -o '@profile\[[0-9]*\]' | sort -u) - - # Debug output - echo "Found indices: $indices" >>/tmp/list_profiles_error.log - - if [ -z "$indices" ]; then - log_message "No profile indices found" "warn" - echo "{\"status\":\"success\",\"profiles\":[]}" - return 0 - fi - - # Process each profile - for idx in $indices; do - log_message "Processing profile index: $idx" - - # Try different UCI get approaches - local name - name=$(uci -q get "quecprofiles.$idx.name" 2>/dev/null) - if [ -z "$name" ]; then - log_message "Failed to get name for $idx, trying alternative method" "warn" - local section=${idx#@profile[} - section=${section%]} - name=$(uci -q get "quecprofiles.@profile[$section].name" 2>/dev/null) - fi - - # Get profile details - local iccid=$(uci -q get "quecprofiles.$idx.iccid" 2>/dev/null) - local imei=$(uci -q get "quecprofiles.$idx.imei" 2>/dev/null) - local apn=$(uci -q get "quecprofiles.$idx.apn" 2>/dev/null) - local pdp_type=$(uci -q get "quecprofiles.$idx.pdp_type" 2>/dev/null) - local lte_bands=$(uci -q get "quecprofiles.$idx.lte_bands" 2>/dev/null) - local sa_nr5g_bands=$(uci -q get "quecprofiles.$idx.sa_nr5g_bands" 2>/dev/null) - local nsa_nr5g_bands=$(uci -q get "quecprofiles.$idx.nsa_nr5g_bands" 2>/dev/null) - local network_type=$(uci -q get "quecprofiles.$idx.network_type" 2>/dev/null) - local ttl=$(uci -q get "quecprofiles.$idx.ttl" 2>/dev/null) - - # Debug output - log_message "Retrieved for $idx: name=$name, iccid=$iccid, apn=$apn" - - # Skip if missing required fields - if [ -z "$name" ] || [ -z "$iccid" ] || [ -z "$apn" ]; then - log_message "Skipping invalid profile: $idx (missing required fields)" "warn" - continue - fi - - # Sanitize all values to ensure valid JSON - name=$(sanitize_for_json "$name") - iccid=$(sanitize_for_json "$iccid") - imei=$(sanitize_for_json "${imei:-""}") - apn=$(sanitize_for_json "$apn") - pdp_type=$(sanitize_for_json "${pdp_type:-"IPV4V6"}") - lte_bands=$(sanitize_for_json "${lte_bands:-""}") - sa_nr5g_bands=$(sanitize_for_json "${sa_nr5g_bands:-""}") - nsa_nr5g_bands=$(sanitize_for_json "${nsa_nr5g_bands:-""}") - network_type=$(sanitize_for_json "${network_type:-"LTE"}") - ttl=$(sanitize_for_json "${ttl:-0}") - - # Create profile JSON - local profile_json="{" - profile_json="${profile_json}\"name\":\"${name}\"," - profile_json="${profile_json}\"iccid\":\"${iccid}\"," - profile_json="${profile_json}\"imei\":\"${imei}\"," - profile_json="${profile_json}\"apn\":\"${apn}\"," - profile_json="${profile_json}\"pdp_type\":\"${pdp_type}\"," - profile_json="${profile_json}\"lte_bands\":\"${lte_bands}\"," - profile_json="${profile_json}\"sa_nr5g_bands\":\"${sa_nr5g_bands}\"," - profile_json="${profile_json}\"nsa_nr5g_bands\":\"${nsa_nr5g_bands}\"," - profile_json="${profile_json}\"network_type\":\"${network_type}\"," - profile_json="${profile_json}\"ttl\":\"${ttl}\"" - profile_json="${profile_json}}" - - # Add comma if not first - if [ $first -eq 0 ]; then - json_output="${json_output}," - else - first=0 - fi - - # Add profile to output - json_output="${json_output}${profile_json}" - count=$((count+1)) - done - - # Complete the JSON response - local response="{\"status\":\"success\",\"profiles\":[${json_output}]}" - - # Save the response for debugging - echo "$response" > /tmp/list_profiles_response.json - - echo "$response" - log_message "Found and returned $count profiles" - return 0 -} - -# Start fresh error log -echo "=== List Profiles Run $(date) ===" > /tmp/list_profiles_error.log - -# Main execution -{ - get_profiles -} || { - # Error handler - output_error "Failed to retrieve profiles" -} \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_create.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_create.sh deleted file mode 100755 index ec4aef9..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_create.sh +++ /dev/null @@ -1,355 +0,0 @@ -#!/bin/sh -# Location: /www/cgi-bin/quecmanager/profiles/quec_profile_create.sh - -# Set content type to JSON -echo -n "" -echo "Content-type: application/json" -echo "" - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t quecprofiles -p "daemon.$level" "create: $1" -} - -# Function to output JSON response -output_json() { - local status="$1" - local message="$2" - local data="${3:-{}}" - - printf '{"status":"%s","message":"%s","data":%s}\n' "$status" "$message" "$data" - exit 0 -} - -# Function to sanitize input -sanitize() { - echo "$1" | tr -d '\r\n' | sed 's/[^a-zA-Z0-9,.:_-]//g' -} - -# Function to validate ICCID (simple check) -validate_iccid() { - local iccid="$1" - if [ -z "$iccid" ] || [ ${#iccid} -lt 10 ] || [ ${#iccid} -gt 20 ]; then - return 1 - fi - # Check that it's only digits - if ! echo "$iccid" | grep -q '^[0-9]\+$'; then - return 1 - fi - return 0 -} - -# Function to validate IMEI (simple check) -validate_imei() { - local imei="$1" - if [ -z "$imei" ]; then - return 0 # IMEI is optional - fi - if [ ${#imei} -ne 15 ] || ! echo "$imei" | grep -q '^[0-9]\+$'; then - return 1 - fi - return 0 -} - -# Function to validate band list -validate_bands() { - local bands="$1" - if [ -z "$bands" ]; then - return 0 # Empty is valid - fi - # Check format (comma-separated numbers) - if ! echo "$bands" | grep -q '^[0-9]\+\(,[0-9]\+\)*$'; then - return 1 - fi - return 0 -} - -# Function to validate network type -validate_network_type() { - local net_type="$1" - case "$net_type" in - "LTE" | "NR5G" | "LTE:NR5G") - return 0 - ;; - *) - return 1 - ;; - esac -} - -# Function to validate PDP type -validate_pdp_type() { - local pdp_type="$1" - case "$pdp_type" in - "IP" | "IPV6" | "IPV4V6") - return 0 - ;; - *) - return 1 - ;; - esac -} - -# Add function to validate TTL -validate_ttl() { - local ttl="$1" - if [ -z "$ttl" ]; then - return 0 # Empty is valid (will be treated as 0/disabled) - fi - # Check that TTL is a number between 0 and 255 - if ! echo "$ttl" | grep -q '^[0-9]\+$' || [ "$ttl" -gt 255 ]; then - return 1 - fi - return 0 -} - -# Function to check if a profile with the same name or ICCID already exists -check_duplicate_profile() { - local name="$1" - local iccid="$2" - - # Check for duplicate name - local existing_name=$(uci -q show quecprofiles | grep ".name='$name'" | head -n 1) - if [ -n "$existing_name" ]; then - return 1 - fi - - # Check for duplicate ICCID - local existing_iccid=$(uci -q show quecprofiles | grep ".iccid='$iccid'" | head -n 1) - if [ -n "$existing_iccid" ]; then - return 2 - fi - - return 0 -} - -# Function to create new profile -create_profile() { - local name="$1" - local iccid="$2" - local imei="$3" - local apn="$4" - local pdp_type="$5" - local lte_bands="$6" - local sa_nr5g_bands="$7" - local nsa_nr5g_bands="$8" - local network_type="$9" - local ttl="${10}" - - # Generate a unique ID for the profile - local profile_id="profile_$(date +%s)_$(head -c 4 /dev/urandom | hexdump -e '"%x"')" - - # Add to UCI config - uci -q batch </etc/config/quecprofiles </dev/null) - - # Debug log - log_message "Received POST data: $POST_DATA" "debug" - - # Parse JSON with jsonfilter if available - if command -v jsonfilter >/dev/null 2>&1; then - name=$(echo "$POST_DATA" | jsonfilter -e '@.name' 2>/dev/null) - iccid=$(echo "$POST_DATA" | jsonfilter -e '@.iccid' 2>/dev/null) - imei=$(echo "$POST_DATA" | jsonfilter -e '@.imei' 2>/dev/null) - apn=$(echo "$POST_DATA" | jsonfilter -e '@.apn' 2>/dev/null) - pdp_type=$(echo "$POST_DATA" | jsonfilter -e '@.pdp_type' 2>/dev/null) - lte_bands=$(echo "$POST_DATA" | jsonfilter -e '@.lte_bands' 2>/dev/null) - sa_nr5g_bands=$(echo "$POST_DATA" | jsonfilter -e '@.sa_nr5g_bands' 2>/dev/null) - nsa_nr5g_bands=$(echo "$POST_DATA" | jsonfilter -e '@.nsa_nr5g_bands' 2>/dev/null) - network_type=$(echo "$POST_DATA" | jsonfilter -e '@.network_type' 2>/dev/null) - ttl=$(echo "$POST_DATA" | jsonfilter -e '@.ttl' 2>/dev/null) - - log_message "Parsed JSON data for profile: $name" "debug" - else - # If jsonfilter is not available, try basic parsing - # This is less reliable but might work for simple cases - name=$(echo "$POST_DATA" | grep -o '"name":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - iccid=$(echo "$POST_DATA" | grep -o '"iccid":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - imei=$(echo "$POST_DATA" | grep -o '"imei":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - apn=$(echo "$POST_DATA" | grep -o '"apn":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - pdp_type=$(echo "$POST_DATA" | grep -o '"pdp_type":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - lte_bands=$(echo "$POST_DATA" | grep -o '"lte_bands":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - sa_nr5g_bands=$(echo "$POST_DATA" | grep -o '"sa_nr5g_bands":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - nsa_nr5g_bands=$(echo "$POST_DATA" | grep -o '"nsa_nr5g_bands":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - network_type=$(echo "$POST_DATA" | grep -o '"network_type":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - ttl=$(echo "$POST_DATA" | grep -o '"ttl":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - - log_message "Basic parsing for profile: $name" "warn" - fi - else - log_message "No content length specified" "error" - output_json "error" "No data received" - fi -else - # URL parameters for GET requests (less secure, but supported for testing) - name=$(echo "$QUERY_STRING" | grep -o 'name=[^&]*' | cut -d'=' -f2) - iccid=$(echo "$QUERY_STRING" | grep -o 'iccid=[^&]*' | cut -d'=' -f2) - imei=$(echo "$QUERY_STRING" | grep -o 'imei=[^&]*' | cut -d'=' -f2) - apn=$(echo "$QUERY_STRING" | grep -o 'apn=[^&]*' | cut -d'=' -f2) - pdp_type=$(echo "$QUERY_STRING" | grep -o 'pdp_type=[^&]*' | cut -d'=' -f2) - lte_bands=$(echo "$QUERY_STRING" | grep -o 'lte_bands=[^&]*' | cut -d'=' -f2) - sa_nr5g_bands=$(echo "$QUERY_STRING" | grep -o 'sa_nr5g_bands=[^&]*' | cut -d'=' -f2) - nsa_nr5g_bands=$(echo "$QUERY_STRING" | grep -o 'nsa_nr5g_bands=[^&]*' | cut -d'=' -f2) - network_type=$(echo "$QUERY_STRING" | grep -o 'network_type=[^&]*' | cut -d'=' -f2) - ttl=$(echo "$QUERY_STRING" | grep -o 'ttl=[^&]*' | cut -d'=' -f2) - - # URL decode values - name=$(echo "$name" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - iccid=$(echo "$iccid" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - imei=$(echo "$imei" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - apn=$(echo "$apn" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - pdp_type=$(echo "$pdp_type" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - lte_bands=$(echo "$lte_bands" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - sa_nr5g_bands=$(echo "$sa_nr5g_bands" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - nsa_nr5g_bands=$(echo "$nsa_nr5g_bands" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - network_type=$(echo "$network_type" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - ttl=$(echo "$ttl" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - - log_message "Using URL parameters" "warn" -fi - -# Sanitize inputs -name=$(sanitize "${name:-}") -iccid=$(sanitize "${iccid:-}") -imei=$(sanitize "${imei:-}") -apn=$(sanitize "${apn:-}") -pdp_type=$(sanitize "${pdp_type:-IP}") -lte_bands=$(sanitize "${lte_bands:-}") -sa_nr5g_bands=$(sanitize "${sa_nr5g_bands:-}") -nsa_nr5g_bands=$(sanitize "${nsa_nr5g_bands:-}") -network_type=$(sanitize "${network_type:-LTE}") -ttl=$(sanitize "${ttl:-0}") # Default to 0 (disabled) - -# Output debug info -log_message "Creating profile: $name, ICCID: $iccid, IMEI: $imei, APN: $apn" "debug" - -# Validate required inputs -if [ -z "$name" ]; then - log_message "Profile name is missing" "error" - output_json "error" "Profile name is required" -fi - -if [ -z "$iccid" ]; then - log_message "ICCID is missing" "error" - output_json "error" "ICCID is required" -fi - -if [ -z "$apn" ]; then - log_message "APN is missing" "error" - output_json "error" "APN is required" -fi - -# Validate input formats -if ! validate_iccid "$iccid"; then - log_message "Invalid ICCID format: $iccid" "error" - output_json "error" "Invalid ICCID format. It should be 10-20 digits." -fi - -if ! validate_imei "$imei"; then - log_message "Invalid IMEI format: $imei" "error" - output_json "error" "Invalid IMEI format. It should be exactly 15 digits." -fi - -if ! validate_bands "$lte_bands"; then - log_message "Invalid LTE bands format: $lte_bands" "error" - output_json "error" "Invalid LTE bands format. Use comma-separated numbers (e.g., 1,3,7)" -fi - -if ! validate_bands "$sa_nr5g_bands"; then - log_message "Invalid SA NR5G bands format: $sa_nr5g_bands" "error" - output_json "error" "Invalid SA NR5G bands format. Use comma-separated numbers (e.g., 41,78)" -fi - -if ! validate_bands "$nsa_nr5g_bands"; then - log_message "Invalid NSA NR5G bands format: $nsa_nr5g_bands" "error" - output_json "error" "Invalid NSA NR5G bands format. Use comma-separated numbers (e.g., 1,79)" -fi - -if ! validate_network_type "$network_type"; then - log_message "Invalid network type: $network_type" "error" - output_json "error" "Invalid network type. Use 'LTE', 'NR5G', or 'LTE:NR5G'" -fi - -if ! validate_pdp_type "$pdp_type"; then - log_message "Invalid PDP type: $pdp_type" "error" - output_json "error" "Invalid PDP type. Use 'IP', 'IPV6', or 'IPV4V6'" -fi - -if ! validate_ttl "$ttl"; then - log_message "Invalid TTL value: $ttl" "error" - output_json "error" "Invalid TTL value. It should be a number between 0 and 255." -fi - -# Check for duplicates -check_duplicate_profile "$name" "$iccid" -dup_status=$? -if [ $dup_status -eq 1 ]; then - log_message "Duplicate profile name: $name" "error" - output_json "error" "A profile with this name already exists" -elif [ $dup_status -eq 2 ]; then - log_message "Duplicate ICCID: $iccid" "error" - output_json "error" "A profile with this ICCID already exists" -fi - -# Create the profile -if create_profile "$name" "$iccid" "$imei" "$apn" "$pdp_type" "$lte_bands" "$sa_nr5g_bands" "$nsa_nr5g_bands" "$network_type" "$ttl"; then - # Trigger immediate profile application - touch "/tmp/quecprofiles_check" - chmod 644 "/tmp/quecprofiles_check" - log_message "Triggered immediate profile check after creation" "info" - - # Create profile data JSON for return - WITHOUT outer curly braces - profile_data="\"name\":\"$name\",\"iccid\":\"$iccid\",\"imei\":\"$imei\",\"apn\":\"$apn\",\"pdp_type\":\"$pdp_type\",\"lte_bands\":\"$lte_bands\",\"sa_nr5g_bands\":\"$sa_nr5g_bands\",\"nsa_nr5g_bands\":\"$nsa_nr5g_bands\",\"network_type\":\"$network_type\",\"ttl\":\"$ttl\"" - - # Wrap the data field in curly braces inside output_json - output_json "success" "Profile created successfully" "{$profile_data}" -else - output_json "error" "Failed to create profile. Please check system logs." -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_delete.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_delete.sh deleted file mode 100755 index 95c6e6c..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_delete.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh -# Location: /www/cgi-bin/quecmanager/profiles/quec_profile_delete.sh - -# Set content type to JSON -echo -n "" -echo "Content-type: application/json" -echo "" - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t quecprofiles -p "daemon.$level" "delete: $1" -} - -# Function to output JSON response -output_json() { - local status="$1" - local message="$2" - local data="${3:-{}}" - - printf '{"status":"%s","message":"%s","data":%s}\n' "$status" "$message" "$data" - exit 0 -} - -# Function to sanitize input -sanitize() { - echo "$1" | tr -d '\r\n' | sed 's/[^a-zA-Z0-9,.:_-]//g' -} - -# Function to find profile by ICCID -find_profile_by_iccid() { - local iccid="$1" - # Get all profile indices - local profile_indices=$(uci show quecprofiles | grep -o '@profile\[[0-9]\+\]' | sort -u) - - for profile_index in $profile_indices; do - local current_iccid=$(uci -q get quecprofiles.$profile_index.iccid) - if [ "$current_iccid" = "$iccid" ]; then - echo "$profile_index" - return 0 - fi - done - - return 1 -} - -# Function to delete a profile -delete_profile() { - local profile_index="$1" - local profile_name=$(uci -q get quecprofiles.$profile_index.name) - - # Delete the profile from UCI config - uci -q batch </dev/null) - - # Debug log - log_message "Received POST data: $POST_DATA" "debug" - - # Parse JSON with jsonfilter if available - if command -v jsonfilter >/dev/null 2>&1; then - iccid=$(echo "$POST_DATA" | jsonfilter -e '@.iccid' 2>/dev/null) - else - # If jsonfilter is not available, try basic parsing - iccid=$(echo "$POST_DATA" | grep -o '"iccid":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - fi - else - log_message "No content length specified" "error" - output_json "error" "No data received" - fi -elif [ -n "$QUERY_STRING" ]; then - # URL parameters for GET or DELETE requests - iccid=$(echo "$QUERY_STRING" | grep -o 'iccid=[^&]*' | cut -d'=' -f2) - - # URL decode value - iccid=$(echo "$iccid" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - - log_message "Using URL parameter: iccid=$iccid" "debug" -fi - -# Sanitize input -iccid=$(sanitize "${iccid:-}") - -# Validate ICCID -if [ -z "$iccid" ]; then - log_message "ICCID is missing" "error" - output_json "error" "ICCID is required to identify the profile" -fi - -# Find profile to delete -profile_index=$(find_profile_by_iccid "$iccid") -if [ $? -ne 0 ]; then - log_message "Profile with ICCID $iccid not found" "error" - output_json "error" "Profile not found" -fi - -# Get profile info for response -profile_name=$(uci -q get quecprofiles.$profile_index.name) - -# Delete the profile -if delete_profile "$profile_index"; then - log_message "Profile deleted successfully: $profile_name" "info" - output_json "success" "Profile deleted successfully" "{\"iccid\":\"$iccid\",\"name\":\"$profile_name\"}" -else - log_message "Failed to delete profile: $profile_name" "error" - output_json "error" "Failed to delete profile. Please check system logs." -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_edit.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_edit.sh deleted file mode 100755 index c56b85f..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/profiles/quec_profile_edit.sh +++ /dev/null @@ -1,392 +0,0 @@ -#!/bin/sh -# Location: /www/cgi-bin/quecmanager/profiles/quec_profile_edit.sh - -# Set content type to JSON -echo -n "" -echo "Content-type: application/json" -echo "" - -# Configuration -CHECK_TRIGGER="/tmp/quecprofiles_check" -APPLIED_FLAG="/tmp/quecprofiles_applied" - -# Function to log messages -log_message() { - local level="${2:-info}" - logger -t quecprofiles -p "daemon.$level" "edit: $1" - echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] edit: $1" >>/tmp/quec_profile_edit.log -} - -# Function to output JSON response -output_json() { - local status="$1" - local message="$2" - local data="${3:-{}}" - - # Debug log to file only - echo "Generating JSON response: status=$status, message=$message" >>/tmp/quec_profile_debug.log - echo "Data payload: $data" >>/tmp/quec_profile_debug.log - - # Use printf for consistent output without newlines or extra characters - printf '{"status":"%s","message":"%s","data":%s}' "$status" "$message" "$data" - - # Add debug marker at end of JSON - echo "" >>/tmp/quec_profile_debug.log - echo "JSON response generated at $(date)" >>/tmp/quec_profile_debug.log - - exit 0 -} - -# Function to sanitize input -sanitize() { - echo "$1" | tr -d '\r\n' | sed 's/[^a-zA-Z0-9,.:_-]//g' -} - -# Function to validate ICCID (simple check) -validate_iccid() { - local iccid="$1" - if [ -z "$iccid" ] || [ ${#iccid} -lt 10 ] || [ ${#iccid} -gt 20 ]; then - return 1 - fi - # Check that it's only digits - if ! echo "$iccid" | grep -q '^[0-9]\+$'; then - return 1 - fi - return 0 -} - -# Function to validate IMEI (simple check) -validate_imei() { - local imei="$1" - if [ -z "$imei" ]; then - return 0 # IMEI is optional - fi - if [ ${#imei} -ne 15 ] || ! echo "$imei" | grep -q '^[0-9]\+$'; then - return 1 - fi - return 0 -} - -# Function to validate band list -validate_bands() { - local bands="$1" - if [ -z "$bands" ]; then - return 0 # Empty is valid - fi - # Check format (comma-separated numbers) - if ! echo "$bands" | grep -q '^[0-9]\+\(,[0-9]\+\)*$'; then - return 1 - fi - return 0 -} - -# Function to validate network type -validate_network_type() { - local net_type="$1" - case "$net_type" in - "LTE" | "NR5G" | "LTE:NR5G") - return 0 - ;; - *) - return 1 - ;; - esac -} - -# Function to validate PDP type -validate_pdp_type() { - local pdp_type="$1" - case "$pdp_type" in - "IP" | "IPV6" | "IPV4V6") - return 0 - ;; - *) - return 1 - ;; - esac -} - -validate_ttl() { - local ttl="$1" - if [ -z "$ttl" ]; then - return 0 # Empty is valid (will be treated as 0/disabled) - fi - # Check that TTL is a number between 0 and 255 - if ! echo "$ttl" | grep -q '^[0-9]\+$' || [ "$ttl" -gt 255 ]; then - return 1 - fi - return 0 -} - -# Function to check if a profile with given ICCID exists -find_profile_by_iccid() { - local iccid="$1" - # Get all profile indices - local profile_indices=$(uci show quecprofiles | grep -o '@profile\[[0-9]\+\]' | sort -u) - - for profile_index in $profile_indices; do - local current_iccid=$(uci -q get quecprofiles.$profile_index.iccid) - if [ "$current_iccid" = "$iccid" ]; then - echo "$profile_index" - return 0 - fi - done - - return 1 -} - -# Function to check for duplicate name (excluding current profile) -check_duplicate_name() { - local name="$1" - local current_iccid="$2" - - local profile_indices=$(uci show quecprofiles | grep -o '@profile\[[0-9]\+\]' | sort -u) - - for profile_index in $profile_indices; do - local iccid=$(uci -q get quecprofiles.$profile_index.iccid) - local profile_name=$(uci -q get quecprofiles.$profile_index.name) - - # Skip the current profile we're editing - if [ "$iccid" = "$current_iccid" ]; then - continue - fi - - if [ "$profile_name" = "$name" ]; then - return 0 # Found duplicate - fi - done - - return 1 # No duplicate -} - -# Function to update an existing profile -update_profile() { - local profile_index="$1" - local name="$2" - local imei="$3" - local apn="$4" - local pdp_type="$5" - local lte_bands="$6" - local sa_nr5g_bands="$7" - local nsa_nr5g_bands="$8" - local network_type="$9" - local ttl="${10}" - - # Update the profile in UCI config - uci -q batch </dev/null) - - # Debug log - log_message "Received POST data: $POST_DATA" "debug" - - # Parse JSON with jsonfilter if available - if command -v jsonfilter >/dev/null 2>&1; then - iccid=$(echo "$POST_DATA" | jsonfilter -e '@.iccid' 2>/dev/null) - name=$(echo "$POST_DATA" | jsonfilter -e '@.name' 2>/dev/null) - imei=$(echo "$POST_DATA" | jsonfilter -e '@.imei' 2>/dev/null) - apn=$(echo "$POST_DATA" | jsonfilter -e '@.apn' 2>/dev/null) - pdp_type=$(echo "$POST_DATA" | jsonfilter -e '@.pdp_type' 2>/dev/null) - lte_bands=$(echo "$POST_DATA" | jsonfilter -e '@.lte_bands' 2>/dev/null) - sa_nr5g_bands=$(echo "$POST_DATA" | jsonfilter -e '@.sa_nr5g_bands' 2>/dev/null) - nsa_nr5g_bands=$(echo "$POST_DATA" | jsonfilter -e '@.nsa_nr5g_bands' 2>/dev/null) - network_type=$(echo "$POST_DATA" | jsonfilter -e '@.network_type' 2>/dev/null) - ttl=$(echo "$POST_DATA" | jsonfilter -e '@.ttl' 2>/dev/null) - - log_message "Parsed JSON data for profile: $name" "debug" - else - # If jsonfilter is not available, try basic parsing - # This is less reliable but might work for simple cases - iccid=$(echo "$POST_DATA" | grep -o '"iccid":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - name=$(echo "$POST_DATA" | grep -o '"name":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - imei=$(echo "$POST_DATA" | grep -o '"imei":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - apn=$(echo "$POST_DATA" | grep -o '"apn":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - pdp_type=$(echo "$POST_DATA" | grep -o '"pdp_type":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - lte_bands=$(echo "$POST_DATA" | grep -o '"lte_bands":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - sa_nr5g_bands=$(echo "$POST_DATA" | grep -o '"sa_nr5g_bands":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - nsa_nr5g_bands=$(echo "$POST_DATA" | grep -o '"nsa_nr5g_bands":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - network_type=$(echo "$POST_DATA" | grep -o '"network_type":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - ttl=$(echo "$POST_DATA" | grep -o '"ttl":"[^"]*"' | head -1 | cut -d':' -f2 | tr -d '"') - - log_message "Basic parsing for profile: $name" "warn" - fi - else - log_message "No content length specified" "error" - output_json "error" "No data received" - fi -else - # URL parameters for GET requests (less secure, but supported for testing) - iccid=$(echo "$QUERY_STRING" | grep -o 'iccid=[^&]*' | cut -d'=' -f2) - name=$(echo "$QUERY_STRING" | grep -o 'name=[^&]*' | cut -d'=' -f2) - imei=$(echo "$QUERY_STRING" | grep -o 'imei=[^&]*' | cut -d'=' -f2) - apn=$(echo "$QUERY_STRING" | grep -o 'apn=[^&]*' | cut -d'=' -f2) - pdp_type=$(echo "$QUERY_STRING" | grep -o 'pdp_type=[^&]*' | cut -d'=' -f2) - lte_bands=$(echo "$QUERY_STRING" | grep -o 'lte_bands=[^&]*' | cut -d'=' -f2) - sa_nr5g_bands=$(echo "$QUERY_STRING" | grep -o 'sa_nr5g_bands=[^&]*' | cut -d'=' -f2) - nsa_nr5g_bands=$(echo "$QUERY_STRING" | grep -o 'nsa_nr5g_bands=[^&]*' | cut -d'=' -f2) - network_type=$(echo "$QUERY_STRING" | grep -o 'network_type=[^&]*' | cut -d'=' -f2) - ttl=$(echo "$QUERY_STRING" | grep -o 'ttl=[^&]*' | cut -d'=' -f2) - - # URL decode values - iccid=$(echo "$iccid" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - name=$(echo "$name" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - imei=$(echo "$imei" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - apn=$(echo "$apn" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - pdp_type=$(echo "$pdp_type" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - lte_bands=$(echo "$lte_bands" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - sa_nr5g_bands=$(echo "$sa_nr5g_bands" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - nsa_nr5g_bands=$(echo "$nsa_nr5g_bands" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - network_type=$(echo "$network_type" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - ttl=$(echo "$ttl" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;' | xargs -0 printf "%b") - - log_message "Using URL parameters" "warn" -fi - -# Sanitize inputs -iccid=$(sanitize "${iccid:-}") -name=$(sanitize "${name:-}") -imei=$(sanitize "${imei:-}") -apn=$(sanitize "${apn:-}") -pdp_type=$(sanitize "${pdp_type:-IP}") -lte_bands=$(sanitize "${lte_bands:-}") -sa_nr5g_bands=$(sanitize "${sa_nr5g_bands:-}") -nsa_nr5g_bands=$(sanitize "${nsa_nr5g_bands:-}") -network_type=$(sanitize "${network_type:-LTE}") -ttl=$(sanitize "${ttl:-0}") # Default to 0 (disabled) - -# Output debug info -log_message "Editing profile: $name, ICCID: $iccid, IMEI: $imei, APN: $apn" "debug" - -# Validate required inputs -if [ -z "$iccid" ]; then - log_message "ICCID is missing" "error" - output_json "error" "ICCID is required to identify the profile" -fi - -if [ -z "$name" ]; then - log_message "Profile name is missing" "error" - output_json "error" "Profile name is required" -fi - -if [ -z "$apn" ]; then - log_message "APN is missing" "error" - output_json "error" "APN is required" -fi - -# Validate input formats -if ! validate_iccid "$iccid"; then - log_message "Invalid ICCID format: $iccid" "error" - output_json "error" "Invalid ICCID format. It should be 10-20 digits." -fi - -if ! validate_imei "$imei"; then - log_message "Invalid IMEI format: $imei" "error" - output_json "error" "Invalid IMEI format. It should be exactly 15 digits." -fi - -if ! validate_bands "$lte_bands"; then - log_message "Invalid LTE bands format: $lte_bands" "error" - output_json "error" "Invalid LTE bands format. Use comma-separated numbers (e.g., 1,3,7)" -fi - -if ! validate_bands "$sa_nr5g_bands"; then - log_message "Invalid SA NR5G bands format: $sa_nr5g_bands" "error" - output_json "error" "Invalid SA NR5G bands format. Use comma-separated numbers (e.g., 41,78)" -fi - -if ! validate_bands "$nsa_nr5g_bands"; then - log_message "Invalid NSA NR5G bands format: $nsa_nr5g_bands" "error" - output_json "error" "Invalid NSA NR5G bands format. Use comma-separated numbers (e.g., 1,79)" -fi - -if ! validate_network_type "$network_type"; then - log_message "Invalid network type: $network_type" "error" - output_json "error" "Invalid network type. Use 'LTE', 'NR5G', or 'LTE:NR5G'" -fi - -if ! validate_pdp_type "$pdp_type"; then - log_message "Invalid PDP type: $pdp_type" "error" - output_json "error" "Invalid PDP type. Use 'IP', 'IPV6', or 'IPV4V6'" -fi - -if ! validate_ttl "$ttl"; then - log_message "Invalid TTL value: $ttl" "error" - output_json "error" "Invalid TTL value. It should be a number between 0 and 255." -fi - -# Find profile to edit -profile_index=$(find_profile_by_iccid "$iccid") -if [ $? -ne 0 ]; then - log_message "Profile with ICCID $iccid not found" "error" - output_json "error" "Profile not found" -fi - -# Check for duplicate name -if check_duplicate_name "$name" "$iccid"; then - log_message "Duplicate profile name: $name" "error" - output_json "error" "A profile with this name already exists" -fi - -# Update profile -if update_profile "$profile_index" "$name" "$imei" "$apn" "$pdp_type" "$lte_bands" "$nr5g_bands" "$network_type"; then - # Trigger immediate profile application - touch "/tmp/quecprofiles_check" - chmod 644 "/tmp/quecprofiles_check" - log_message "Triggered immediate profile check after update" "info" - - # Create a clean JSON response with properly escaped quotes - printf '{"status":"success","message":"Profile updated successfully","data":{"name":"%s","iccid":"%s","imei":"%s","apn":"%s","pdp_type":"%s","lte_bands":"%s","nr5g_bands":"%s","network_type":"%s"}}' \ - "$name" "$iccid" "$imei" "$apn" "$pdp_type" "$lte_bands" "$nr5g_bands" "$network_type" - - log_message "Profile updated successfully: $name" "info" - - # Note: The conditional trigger is replaced with the direct trigger above -else - printf '{"status":"error","message":"Failed to update profile. Please check system logs."}' - log_message "Failed to update profile: $name" "error" -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/device-uptime.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/device-uptime.sh deleted file mode 100755 index 4150da0..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/device-uptime.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -# Set content type for JSON response -echo "Content-type: application/json" -echo "" - -# Get system uptime in seconds from /proc/uptime -read uptime idle < /proc/uptime -uptime=${uptime%.*} # Remove decimal part - -# Calculate days, hours, minutes, seconds -days=$((uptime/86400)) -hours=$(((uptime%86400)/3600)) -minutes=$(((uptime%3600)/60)) -seconds=$((uptime%60)) - -# Format uptime string -uptime_str="" -[ $days -gt 0 ] && uptime_str="${days}d " -[ $hours -gt 0 ] && uptime_str="${uptime_str}${hours}h " -[ $minutes -gt 0 ] && uptime_str="${uptime_str}${minutes}m " -uptime_str="${uptime_str}${seconds}s" - -# Create and output JSON response -cat << EOF -{ - "status": "success", - "timestamp": "$(date -Iseconds)", - "uptime": { - "total_seconds": $uptime, - "days": $days, - "hours": $hours, - "minutes": $minutes, - "seconds": $seconds, - "formatted": "${uptime_str}" - } -} -EOF \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/force-rerun.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/force-rerun.sh deleted file mode 100755 index 97ed7a8..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/quecmanager/settings/force-rerun.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh - -# Send CGI headers first -echo "Content-Type: application/json" -echo "Cache-Control: no-cache" -echo - -# Initialize variables for file paths -APN_SCRIPT="/etc/quecmanager/apn_profile/apnProfiles.sh" -IMEI_SCRIPT="/etc/quecmanager/imei_profile/imeiProfiles.sh" - -# Function to output JSON -output_json() { - local status="$1" - local message="$2" - echo "{\"status\": \"$status\", \"message\": \"$message\"}" -} - -# Function to execute script if it exists -execute_if_exists() { - local script_path="$1" - - if [ -f "$script_path" ] && [ -x "$script_path" ]; then - $script_path >/dev/null 2>&1 - return $? - fi - return 2 -} - -# Main execution -main() { - scripts_executed=0 - has_error=0 - - # Try to execute APN script - execute_if_exists "$APN_SCRIPT" - apn_result=$? - if [ $apn_result -eq 0 ]; then - scripts_executed=$(($scripts_executed + 1)) - elif [ $apn_result -eq 1 ]; then - has_error=1 - fi - - # Try to execute IMEI script - execute_if_exists "$IMEI_SCRIPT" - imei_result=$? - if [ $imei_result -eq 0 ]; then - scripts_executed=$(($scripts_executed + 1)) - elif [ $imei_result -eq 1 ]; then - has_error=1 - fi - - # Output appropriate message based on results - if [ $scripts_executed -eq 0 ]; then - output_json "info" "No scripts to restart" - elif [ $has_error -eq 1 ]; then - output_json "error" "Error executing one or more scripts" - else - output_json "success" "Scripts restarted successfully" - fi -} - -# Run main function -main \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/at_queue_manager.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/at_queue_manager.sh deleted file mode 100755 index aa9aee3..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/at_queue_manager.sh +++ /dev/null @@ -1,672 +0,0 @@ -#!/bin/sh -# AT Queue Manager for OpenWRT with Preemption Support and Token System -# Located in /www/cgi-bin/services/at_queue_manager - -# Constants -QUEUE_DIR="/tmp/at_queue" -QUEUE_FILE="$QUEUE_DIR/queue" -ACTIVE_FILE="$QUEUE_DIR/active" -RESULTS_DIR="$QUEUE_DIR/results" -LOCK_DIR="$QUEUE_DIR/lock" -TOKEN_FILE="$QUEUE_DIR/token" -MAX_TIMEOUT=240 -CLEANUP_INTERVAL=300 # 5 minutes in seconds -RESULTS_MAX_AGE=3600 # 1 hour in seconds -POLL_INTERVAL=0.01 -PREEMPTION_THRESHOLD=2 # 3 seconds threshold for preemption -TOKEN_TIMEOUT=30 # seconds before token expires - -# Utility function for JSON escaping -escape_json() { - printf '%s' "$1" | awk ' - BEGIN { RS="\n"; ORS="\\n" } - { - gsub(/\\/, "\\\\") - gsub(/"/, "\\\"") - gsub(/\r/, "") - gsub(/\t/, "\\t") - gsub(/\f/, "\\f") - gsub(/\b/, "\\b") - print - } - ' | sed 's/\\n$//' -} - -# Exclusive lock functions -acquire_lock() { - local timeout=10 - local attempt=0 - - while [ $attempt -lt $timeout ]; do - if mkdir "$LOCK_DIR" 2>/dev/null; then - logger -t at_queue -p daemon.debug "Lock acquired" - return 0 - fi - - sleep 0.1 - attempt=$((attempt + 1)) - done - - logger -t at_queue -p daemon.error "Failed to acquire lock after $timeout attempts" - return 1 -} - -release_lock() { - if [ -d "$LOCK_DIR" ]; then - rmdir "$LOCK_DIR" 2>/dev/null - logger -t at_queue -p daemon.debug "Lock released" - return 0 - fi - - logger -t at_queue -p daemon.error "Lock directory doesn't exist" - return 1 -} - -# Ensure required directories exist -init_queue_system() { - mkdir -p "$QUEUE_DIR" "$RESULTS_DIR" - touch "$QUEUE_FILE" - chmod 755 "$QUEUE_DIR" - chmod 644 "$QUEUE_FILE" - chmod 755 "$RESULTS_DIR" - logger -t at_queue -p daemon.info "Queue system initialized" -} - -# Cleanup old results and tracking files -cleanup_old_results() { - local current_time=$(date +%s) - - # Clean up old execution tracking files - find "$QUEUE_DIR" -name "pid.*" -type f -mmin +60 -delete 2>/dev/null - find "$QUEUE_DIR" -name "*.exit" -type f -mmin +60 -delete 2>/dev/null - find "$QUEUE_DIR" -name "start_time.*" -type f -mmin +60 -delete 2>/dev/null - logger -t at_queue -p daemon.debug "Cleaned up old tracking files" - - # Use find with -delete and basic timestamp check for OpenWRT - find "$RESULTS_DIR" -name "*.json" -type f -mmin +60 -delete 2>/dev/null || { - # Fallback method if find fails - for file in "$RESULTS_DIR"/*.json; do - [ -f "$file" ] || continue - local file_time=$(stat -c %Y "$file") - if [ $((current_time - file_time)) -gt $RESULTS_MAX_AGE ]; then - rm -f "$file" - fi - done - } - - # Check for expired token - if [ -f "$TOKEN_FILE" ]; then - local token_time=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp') - if [ $((current_time - token_time)) -gt $TOKEN_TIMEOUT ]; then - local token_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id') - logger -t at_queue -p daemon.warn "Removing expired token from $token_holder" - rm -f "$TOKEN_FILE" - fi - fi - - logger -t at_queue -p daemon.info "Cleanup: Removed files older than 1 hour" -} - -# Generate unique command ID -generate_command_id() { - echo "$(date +%s)_$(head -c 8 /dev/urandom | hexdump -v -e '1/1 "%02x"')" -} - -# Start tracking command execution time -start_execution_tracking() { - local cmd_id="$1" - local pid="$2" - local start_time=$(date +%s) - - echo "$start_time" > "$QUEUE_DIR/start_time.$cmd_id" - echo "$pid" > "$QUEUE_DIR/pid.$cmd_id" - chmod 644 "$QUEUE_DIR/start_time.$cmd_id" - chmod 644 "$QUEUE_DIR/pid.$cmd_id" - logger -t at_queue -p daemon.debug "Started tracking command $cmd_id (PID: $pid)" -} - -# Check if running command should be preempted -should_preempt() { - local current_cmd_id="$1" - local new_priority="$2" - - if [ ! -f "$QUEUE_DIR/start_time.$current_cmd_id" ]; then - logger -t at_queue -p daemon.debug "No start time found for $current_cmd_id" - return 1 - fi - - local start_time=$(cat "$QUEUE_DIR/start_time.$current_cmd_id") - local current_time=$(date +%s) - local execution_time=$((current_time - start_time)) - - # Get current command's priority - local current_priority - if [ -f "$ACTIVE_FILE" ]; then - current_priority=$(cat "$ACTIVE_FILE" | jsonfilter -e '@.priority') - else - logger -t at_queue -p daemon.debug "No active command found" - return 1 - fi - - if [ $execution_time -gt $PREEMPTION_THRESHOLD ] && [ $new_priority -lt $current_priority ]; then - logger -t at_queue -p daemon.info "Command $current_cmd_id (priority $current_priority) running for ${execution_time}s is eligible for preemption by priority $new_priority" - return 0 - fi - - logger -t at_queue -p daemon.debug "Command $current_cmd_id not eligible for preemption (time: ${execution_time}s, current priority: $current_priority, new priority: $new_priority)" - return 1 -} - -# Handle command preemption -preempt_command() { - local cmd_id="$1" - local pid_file="$QUEUE_DIR/pid.$cmd_id" - - if [ -f "$pid_file" ]; then - local pid=$(cat "$pid_file") - logger -t at_queue -p daemon.info "Preempting command $cmd_id (PID: $pid)" - - # Send SIGTERM first - kill -TERM $pid 2>/dev/null - - # Brief wait for graceful termination - sleep 0.1 - - # Force kill if still running - if kill -0 $pid 2>/dev/null; then - kill -KILL $pid 2>/dev/null - logger -t at_queue -p daemon.warn "Forced termination of command $cmd_id" - fi - - # Record preemption result - write_preemption_result "$cmd_id" - - # Cleanup command files - rm -f "$pid_file" "$QUEUE_DIR/start_time.$cmd_id" "$QUEUE_DIR/$cmd_id.exit" - [ -f "$ACTIVE_FILE" ] && rm -f "$ACTIVE_FILE" - - logger -t at_queue -p daemon.info "Command $cmd_id preemption complete" - return 0 - fi - - logger -t at_queue -p daemon.warn "No PID file found for command $cmd_id" - return 1 -} - -# Record result for preempted command -write_preemption_result() { - local cmd_id="$1" - local end_time=$(date +%s%3N) - local start_time - - if [ -f "$QUEUE_DIR/start_time.$cmd_id" ]; then - start_time=$(cat "$QUEUE_DIR/start_time.$cmd_id")000 - else - start_time=$end_time - fi - - local duration=$((end_time - start_time)) - local command_text=$(cat "$ACTIVE_FILE" | jsonfilter -e '@.command') - - local response=$(cat << EOF -{ - "command": { - "id": "$cmd_id", - "text": "$(escape_json "$command_text")", - "timestamp": "$(date -Iseconds)" - }, - "response": { - "status": "preempted", - "raw_output": "Command preempted by higher priority task", - "completion_time": "$end_time", - "duration_ms": $duration - } -} -EOF -) - - printf "%s" "$response" > "$RESULTS_DIR/$cmd_id.json" - chmod 644 "$RESULTS_DIR/$cmd_id.json" - logger -t at_queue -p daemon.info "Recorded preemption result for command $cmd_id (duration: ${duration}ms)" -} - -# Request a token for direct sms_tool execution -request_token() { - local requestor_id="$1" - local priority="${2:-10}" - local timeout="${3:-10}" - - # Acquire lock first - if ! acquire_lock; then - logger -t at_queue -p daemon.error "Failed to acquire lock for token request" - echo "{\"error\":\"Could not acquire lock\",\"status\":\"denied\"}" - return 1 - fi - - # Check if token file exists (someone else has the token) - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id') - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority') - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp') - local current_time=$(date +%s) - - # Check for expired token (> TOKEN_TIMEOUT seconds old) - if [ $((current_time - timestamp)) -gt $TOKEN_TIMEOUT ]; then - logger -t at_queue -p daemon.warn "Found expired token from $current_holder, releasing" - rm -f "$TOKEN_FILE" - # Check for priority preemption - elif [ $priority -lt $current_priority ]; then - logger -t at_queue -p daemon.info "Preempting token from $current_holder (priority: $current_priority) for $requestor_id (priority: $priority)" - rm -f "$TOKEN_FILE" - else - # Token in use and cannot be preempted - release_lock - echo "{\"status\":\"denied\",\"holder\":\"$current_holder\",\"priority\":$current_priority}" - return 1 - fi - fi - - # Also check if there's an active command from the queue - if [ -f "$ACTIVE_FILE" ]; then - local active_id=$(cat "$ACTIVE_FILE" | jsonfilter -e '@.id') - local active_priority=$(cat "$ACTIVE_FILE" | jsonfilter -e '@.priority') - - # Only preempt if priority is higher - if [ $priority -ge $active_priority ]; then - release_lock - echo "{\"status\":\"denied\",\"holder\":\"$active_id\",\"priority\":$active_priority}" - return 1 - fi - - logger -t at_queue -p daemon.info "Direct execution with higher priority than active queue command" - fi - - # Grant token - local token_data="{\"id\":\"$requestor_id\",\"priority\":$priority,\"timestamp\":$(date +%s)}" - echo "$token_data" > "$TOKEN_FILE" - chmod 644 "$TOKEN_FILE" - - release_lock - echo "{\"status\":\"granted\",\"id\":\"$requestor_id\",\"timeout\":$timeout}" - return 0 -} - -# Release a previously acquired token -release_token() { - local requestor_id="$1" - - if ! acquire_lock; then - logger -t at_queue -p daemon.error "Failed to acquire lock for token release" - return 1 - fi - - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id') - - if [ "$current_holder" = "$requestor_id" ]; then - rm -f "$TOKEN_FILE" - logger -t at_queue -p daemon.debug "Token released by $requestor_id" - release_lock - echo "{\"status\":\"released\"}" - return 0 - else - logger -t at_queue -p daemon.warn "Token release attempted by $requestor_id but held by $current_holder" - fi - else - logger -t at_queue -p daemon.warn "Token release attempted but no token exists" - fi - - release_lock - echo "{\"status\":\"not_found\"}" - return 1 -} - -# Add command to queue with preemption support -enqueue_command() { - local cmd="$1" - local priority="${2:-10}" - local cmd_id=$(generate_command_id) - local timestamp=$(date -Iseconds) - - # Ensure queue directory exists - [ ! -d "$QUEUE_DIR" ] && init_queue_system - - logger -t at_queue -p daemon.info "Enqueuing command: $cmd (priority: $priority, id: $cmd_id)" - - # Acquire lock for queue modification - if ! acquire_lock; then - logger -t at_queue -p daemon.error "Failed to acquire lock for enqueuing command" - echo "{\"error\":\"Queue lock acquisition failed\",\"command\":\"$cmd\"}" - return 1 - fi - - # Check for active command that can be preempted - if [ -f "$ACTIVE_FILE" ]; then - local active_cmd_id=$(cat "$ACTIVE_FILE" | jsonfilter -e '@.id') - if should_preempt "$active_cmd_id" "$priority"; then - preempt_command "$active_cmd_id" - fi - fi - - # Create command entry - local entry="{\"id\":\"$cmd_id\",\"command\":\"$(escape_json "$cmd")\",\"priority\":$priority,\"timestamp\":\"$timestamp\"}" - - if [ "$priority" = "1" ]; then - # High priority - prepend to queue - local temp_file=$(mktemp) - echo "$entry" > "$temp_file" - cat "$QUEUE_FILE" >> "$temp_file" - mv "$temp_file" "$QUEUE_FILE" - chmod 644 "$QUEUE_FILE" - logger -t at_queue -p daemon.info "Added high priority command to front of queue" - else - # Normal priority - append to queue - echo "$entry" >> "$QUEUE_FILE" - logger -t at_queue -p daemon.info "Added normal priority command to end of queue" - fi - - # Release lock - release_lock - - echo "{\"command_id\":\"$cmd_id\",\"status\":\"queued\"}" -} - -# Get next command from queue -dequeue_command() { - if [ ! -s "$QUEUE_FILE" ]; then - return 1 - fi - - # Acquire lock - if ! acquire_lock; then - logger -t at_queue -p daemon.error "Failed to acquire lock for dequeuing command" - return 1 - fi - - local cmd_entry=$(head -n 1 "$QUEUE_FILE") - local temp_file=$(mktemp) - tail -n +2 "$QUEUE_FILE" > "$temp_file" - mv "$temp_file" "$QUEUE_FILE" - chmod 644 "$QUEUE_FILE" - - echo "$cmd_entry" > "$ACTIVE_FILE" - chmod 644 "$ACTIVE_FILE" - - # Release lock - release_lock - - logger -t at_queue -p daemon.debug "Dequeued command: $(echo "$cmd_entry" | jsonfilter -e '@.command')" - echo "$cmd_entry" -} - -# Clean and format AT command output -clean_output() { - local output="$1" - - # First format AT command responses for readability - output=$(echo "$output" | sed -E ' - # Add newline after AT commands - s/(AT\+[A-Z0-9]+[^ ]*) +/\1\n/g - # Add newline before +RESPONSE lines - s/ +(\+[A-Z0-9]+:)/\n\1/g - # Add newline before OK/ERROR - s/ +(OK|ERROR)$/\n\1/g - ') - - # Then escape the formatted output for JSON - output=$(escape_json "$output") - - echo "$output" -} - -# Execute AT command with optimized timeout handling -execute_with_timeout() { - local command="$1" - local timeout="$2" - local cmd_id="$3" - local output_file=$(mktemp) - - # Start command in background with immediate output - (sms_tool -D at "$command" > "$output_file" 2>&1; echo $? > "$QUEUE_DIR/$cmd_id.exit") & - local pid=$! - - # Start execution tracking - start_execution_tracking "$cmd_id" "$pid" - - logger -t at_queue -p daemon.debug "Started command execution: $command (PID: $pid)" - - # Wait for completion with shorter polling interval - local start_time=$(date +%s) - local elapsed=0 - - while [ $elapsed -lt "$timeout" ]; do - if [ -f "$QUEUE_DIR/$cmd_id.exit" ]; then - local exit_code=$(cat "$QUEUE_DIR/$cmd_id.exit") - local output=$(cat "$output_file") - - # Cleanup - rm -f "$QUEUE_DIR/pid.$cmd_id" "$QUEUE_DIR/$cmd_id.exit" "$output_file" "$QUEUE_DIR/start_time.$cmd_id" - - logger -t at_queue -p daemon.debug "Command completed with exit code $exit_code" - echo "$output" - return $exit_code - fi - - elapsed=$(($(date +%s) - start_time)) - sleep $POLL_INTERVAL - done - - # Handle timeout - if [ -f "$QUEUE_DIR/pid.$cmd_id" ]; then - local pid=$(cat "$QUEUE_DIR/pid.$cmd_id") - kill $pid 2>/dev/null - sleep 0.1 - # Force kill if still running - if kill -0 $pid 2>/dev/null; then - kill -KILL $pid 2>/dev/null - fi - - local partial_output=$(cat "$output_file" 2>/dev/null || echo "") - - # Cleanup - rm -f "$QUEUE_DIR/pid.$cmd_id" "$QUEUE_DIR/$cmd_id.exit" "$output_file" "$QUEUE_DIR/start_time.$cmd_id" - - logger -t at_queue -p daemon.warn "Command timed out after $timeout seconds" - echo "${partial_output:-Command timed out after $timeout seconds}" - fi - - return 124 -} - -# Execute AT command and handle response -execute_command() { - local cmd_entry="$1" - local cmd_id=$(echo "$cmd_entry" | jsonfilter -e '@.id') - local cmd_text=$(echo "$cmd_entry" | jsonfilter -e '@.command') - local priority=$(echo "$cmd_entry" | jsonfilter -e '@.priority') - - local start_time=$(date +%s%3N) - - logger -t at_queue -p daemon.info "Executing command $cmd_id: $cmd_text (priority: $priority)" - - # Execute command with timeout - local result=$(execute_with_timeout "$cmd_text" $MAX_TIMEOUT "$cmd_id") - local exit_code=$? - local end_time=$(date +%s%3N) - local duration=$((end_time - start_time)) - - # Determine status and log level - local status="error" - local log_level="error" - - if [ $exit_code -eq 124 ]; then - status="timeout" - logger -t at_queue -p daemon.error "Command $cmd_id timed out after ${duration}ms" - elif echo "$result" | grep -q "OK"; then - status="success" - log_level="info" - logger -t at_queue -p daemon.info "Command $cmd_id completed successfully in ${duration}ms" - elif echo "$result" | grep -q "CME ERROR"; then - status="cme_error" - logger -t at_queue -p daemon.error "Command $cmd_id failed with CME ERROR in ${duration}ms" - else - logger -t at_queue -p daemon.error "Command $cmd_id failed with general error in ${duration}ms" - fi - - # Clean and escape the output - local clean_result=$(clean_output "$result") - - # Create JSON response - local response=$(cat << EOF -{ - "command": { - "id": "$cmd_id", - "text": "$(escape_json "$cmd_text")", - "timestamp": "$(date -Iseconds)" - }, - "response": { - "status": "$status", - "raw_output": "$clean_result", - "completion_time": "$end_time", - "duration_ms": $duration - } -} -EOF -) - - # Acquire lock for writing result - if ! acquire_lock; then - logger -t at_queue -p daemon.error "Failed to acquire lock for writing result" - else - # Save response - printf "%s" "$response" > "$RESULTS_DIR/$cmd_id.json" - chmod 644 "$RESULTS_DIR/$cmd_id.json" - - # Clean up active file - rm -f "$ACTIVE_FILE" - - # Release lock - release_lock - fi - - echo "$response" -} - -# Main queue processing function -process_queue() { - init_queue_system - local last_cleanup=$(date +%s) - local last_log=$(date +%s) # Add a timestamp for less frequent logging - - # Make sure the lock directory doesn't exist at startup - [ -d "$LOCK_DIR" ] && rmdir "$LOCK_DIR" 2>/dev/null - - logger -t at_queue -p daemon.info "Started queue processing daemon" - - while true; do - # Quick cleanup check - local current_time=$(date +%s) - if [ $((current_time - last_cleanup)) -ge $CLEANUP_INTERVAL ]; then - cleanup_old_results - last_cleanup=$current_time - fi - - # Skip processing if token is granted to someone - if [ -f "$TOKEN_FILE" ]; then - local token_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id') - local token_time=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp') - local current_time=$(date +%s) - - # Check for expired token - if [ $((current_time - token_time)) -gt $TOKEN_TIMEOUT ]; then - logger -t at_queue -p daemon.warn "Removing expired token from $token_holder" - rm -f "$TOKEN_FILE" - else - # Log pause status only every 5 seconds to reduce log spam - if [ $((current_time - last_log)) -ge 5 ]; then - logger -t at_queue -p daemon.debug "Queue processing paused, token held by $token_holder" - last_log=$current_time - fi - sleep $POLL_INTERVAL - continue - fi - fi - - # Process queue if not empty and no active command - if [ -s "$QUEUE_FILE" ] && [ ! -f "$ACTIVE_FILE" ]; then - local cmd_entry=$(dequeue_command) - if [ -n "$cmd_entry" ]; then - execute_command "$cmd_entry" - fi - fi - - sleep $POLL_INTERVAL - done -} - -# CGI command handling -if [ "${SCRIPT_NAME}" != "" ]; then - # Output headers - if [ "$HTTP_HEADERS" != "0" ]; then - echo "Content-Type: application/json" - echo "" - fi - - # Parse query string for CGI mode - eval $(echo "$QUERY_STRING" | sed 's/&/;/g') - - case "$action" in - "enqueue") - if [ -n "$command" ]; then - logger -t at_queue -p daemon.info "CGI: Received enqueue request for command: $command" - enqueue_command "$command" "$priority" - else - logger -t at_queue -p daemon.error "CGI: Empty command received" - echo "{\"error\":\"No command specified\"}" - fi - ;; - "status") - if [ -f "$ACTIVE_FILE" ]; then - logger -t at_queue -p daemon.debug "CGI: Status request - queue active" - cat "$ACTIVE_FILE" - else - logger -t at_queue -p daemon.debug "CGI: Status request - queue idle" - echo "{\"status\":\"idle\"}" - fi - ;; - "request_token") - if [ -n "$id" ]; then - logger -t at_queue -p daemon.info "Token request from $id (priority: ${priority:-10})" - request_token "$id" "${priority:-10}" "${timeout:-10}" - else - logger -t at_queue -p daemon.error "Token request missing ID" - echo "{\"error\":\"No requestor ID specified\",\"status\":\"denied\"}" - fi - ;; - "release_token") - if [ -n "$id" ]; then - logger -t at_queue -p daemon.info "Token release from $id" - release_token "$id" - else - logger -t at_queue -p daemon.error "Token release missing ID" - echo "{\"error\":\"No requestor ID specified\",\"status\":\"denied\"}" - fi - ;; - *) - logger -t at_queue -p daemon.error "CGI: Invalid action received: $action" - echo "{\"error\":\"Invalid action\"}" - ;; - esac - exit 0 -fi - -# CLI command handling -if [ "$1" = "enqueue" ] && [ -n "$2" ]; then - enqueue_command "$2" "${3:-10}" - exit $? -fi - -# If not run as CGI, start queue processing -if [ "${SCRIPT_NAME}" = "" ] && [ -z "$1" ]; then - process_queue -fi \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/log_signal_metrics.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/log_signal_metrics.sh deleted file mode 100755 index 6646134..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/log_signal_metrics.sh +++ /dev/null @@ -1,198 +0,0 @@ -#!/bin/sh -# Configuration -LOGDIR="/www/signal_graphs" -MAX_ENTRIES=10 -INTERVAL=60 -QUEUE_DIR="/tmp/at_queue" -TOKEN_FILE="$QUEUE_DIR/token" -LOCK_FILE="/tmp/signal_metrics.lock" -METRICS_PID_FILE="/tmp/signal_metrics.pid" -MAX_TOKEN_WAIT=5 # seconds to wait for token acquisition - -# Ensure required directories exist -mkdir -p "$LOGDIR" "$QUEUE_DIR" - -# Check if another instance is running -check_running() { - if [ -f "$METRICS_PID_FILE" ]; then - pid=$(cat "$METRICS_PID_FILE") - if kill -0 "$pid" 2>/dev/null; then - return 0 - fi - rm -f "$METRICS_PID_FILE" 2>/dev/null - fi - return 1 -} - -# Acquire token directly (minimized version) -acquire_token() { - local metrics_id="METRICS_$(date +%s)_$$" - local priority=20 # Lowest priority for metrics - local max_attempts=20 - local attempt=0 - - while [ $attempt -lt $max_attempts ]; do - # Check if token exists - if [ -f "$TOKEN_FILE" ]; then - # Check current token - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Wait and try again - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token - echo "{\"id\":\"$metrics_id\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got it - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$metrics_id" ]; then - echo "$metrics_id" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - return 1 -} - -# Release token directly -release_token() { - local metrics_id="$1" - - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$metrics_id" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - fi - fi -} - -# Execute AT command directly -execute_at_command() { - local CMD="$1" - sms_tool at "$CMD" -t 3 2>/dev/null -} - -# Process all metrics commands with a single token -process_all_metrics() { - # Try to get token - local metrics_id=$(acquire_token) - if [ -z "$metrics_id" ]; then - logger -t at_queue -p daemon.warn "Could not acquire token for metrics - will try again later" - return 1 - fi - - logger -t at_queue -p daemon.info "Processing all metrics with token $metrics_id" - - # Execute all metrics commands with the single token - local timestamp=$(date "+%Y-%m-%d %H:%M:%S") - - # RSRP - local rsrp_output=$(execute_at_command "AT+QRSRP") - if [ -n "$rsrp_output" ] && echo "$rsrp_output" | grep -q "QRSRP"; then - local logfile="$LOGDIR/rsrp.json" - [ ! -s "$logfile" ] && echo "[]" > "$logfile" - - local temp_file="${logfile}.tmp.$$" - jq --arg dt "$timestamp" \ - --arg out "$rsrp_output" \ - '. + [{"datetime": $dt, "output": $out}] | .[-'"$MAX_ENTRIES"':]' \ - "$logfile" > "$temp_file" 2>/dev/null && mv "$temp_file" "$logfile" - chmod 644 "$logfile" - fi - - sleep 0.5 - - # RSRQ - local rsrq_output=$(execute_at_command "AT+QRSRQ") - if [ -n "$rsrq_output" ] && echo "$rsrq_output" | grep -q "QRSRQ"; then - local logfile="$LOGDIR/rsrq.json" - [ ! -s "$logfile" ] && echo "[]" > "$logfile" - - local temp_file="${logfile}.tmp.$$" - jq --arg dt "$timestamp" \ - --arg out "$rsrq_output" \ - '. + [{"datetime": $dt, "output": $out}] | .[-'"$MAX_ENTRIES"':]' \ - "$logfile" > "$temp_file" 2>/dev/null && mv "$temp_file" "$logfile" - chmod 644 "$logfile" - fi - - sleep 0.5 - - # SINR - local sinr_output=$(execute_at_command "AT+QSINR") - if [ -n "$sinr_output" ] && echo "$sinr_output" | grep -q "QSINR"; then - local logfile="$LOGDIR/sinr.json" - [ ! -s "$logfile" ] && echo "[]" > "$logfile" - - local temp_file="${logfile}.tmp.$$" - jq --arg dt "$timestamp" \ - --arg out "$sinr_output" \ - '. + [{"datetime": $dt, "output": $out}] | .[-'"$MAX_ENTRIES"':]' \ - "$logfile" > "$temp_file" 2>/dev/null && mv "$temp_file" "$logfile" - chmod 644 "$logfile" - fi - - sleep 0.5 - - # Data usage - local usage_output=$(execute_at_command "AT+QGDCNT?;+QGDNRCNT?") - if [ -n "$usage_output" ] && echo "$usage_output" | grep -q "QGDCNT\|QGDNRCNT"; then - local logfile="$LOGDIR/data_usage.json" - [ ! -s "$logfile" ] && echo "[]" > "$logfile" - - local temp_file="${logfile}.tmp.$$" - jq --arg dt "$timestamp" \ - --arg out "$usage_output" \ - '. + [{"datetime": $dt, "output": $out}] | .[-'"$MAX_ENTRIES"':]' \ - "$logfile" > "$temp_file" 2>/dev/null && mv "$temp_file" "$logfile" - chmod 644 "$logfile" - fi - - # Release token - release_token "$metrics_id" - logger -t at_queue -p daemon.info "Metrics processing completed" - return 0 -} - -# Main continuous logging function with proper locking -start_continuous_logging() { - # Check if already running - if check_running; then - logger -t at_queue -p daemon.error "Signal metrics logging already running" - exit 1 - fi - - # Store PID - echo "$$" > "$METRICS_PID_FILE" - chmod 644 "$METRICS_PID_FILE" - - sleep 20 # Initial delay to allow system startup - logger -t at_queue -p daemon.info "Starting continuous signal metrics logging (PID: $$)" - - trap 'logger -t at_queue -p daemon.info "Stopping signal metrics logging"; rm -f "$METRICS_PID_FILE"; exit 0' INT TERM - - while true; do - process_all_metrics - sleep "$INTERVAL" - done -} - -# Start the continuous logging -start_continuous_logging \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quec_profile_daemon.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quec_profile_daemon.sh deleted file mode 100755 index 90bf2e6..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quec_profile_daemon.sh +++ /dev/null @@ -1,1045 +0,0 @@ -#!/bin/sh -# Updated QuecProfiles daemon with enhanced SA/NSA NR5G band management and TTL support -# Including profile application functions and fixed comparison logic - -# Configuration -QUEUE_DIR="/tmp/at_queue" -TOKEN_FILE="$QUEUE_DIR/token" -TRACK_FILE="/tmp/quecprofiles_active" -CHECK_TRIGGER="/tmp/quecprofiles_check" -STATUS_FILE="/tmp/quecprofiles_status.json" -APPLIED_FLAG="/tmp/quecprofiles_applied" -DEBUG_LOG="/tmp/quecprofiles_debug.log" -DETAILED_LOG="/tmp/quecprofiles_detailed.log" -DEFAULT_CHECK_INTERVAL=60 # Default check interval in seconds -COMMAND_TIMEOUT=10 # Default timeout for AT commands in seconds -QUEUE_PRIORITY=3 # Medium-high priority (1 is highest for cell scan) -MAX_TOKEN_WAIT=15 # Maximum seconds to wait for token acquisition - -# Initialize log file -echo "$(date) - Starting QuecProfiles daemon with SA/NSA NR5G and TTL support (PID: $$)" >"$DEBUG_LOG" -echo "$(date) - Starting QuecProfiles daemon with SA/NSA NR5G and TTL support (PID: $$)" >"$DETAILED_LOG" -chmod 644 "$DEBUG_LOG" "$DETAILED_LOG" - -# Function to log messages -log_message() { - local message="$1" - local level="${2:-info}" - local timestamp=$(date "+%Y-%m-%d %H:%M:%S") - - # Log to system log - logger -t quecprofiles_daemon -p "daemon.$level" "$message" - - # Log to debug file - echo "[$timestamp] [$level] $message" >>"$DEBUG_LOG" - - # For detailed logs or errors - if [ "$level" = "error" ] || [ "$level" = "debug" ]; then - echo "[$timestamp] [$level] $message" >>"$DETAILED_LOG" - fi -} - -# Function to update track file with status - IMPROVED VERSION -update_track() { - local status="$1" - local message="$2" - local profile="${3:-unknown}" - local progress="${4:-0}" - - # Create JSON status - cat >"$STATUS_FILE" <"$TRACK_FILE" - chmod 644 "$TRACK_FILE" - fi - - log_message "Status updated: $status - $message ($progress%)" -} - -# Function to find profile by ICCID in UCI -find_profile_by_iccid() { - local iccid="$1" - local profile_indices - - log_message "Looking for profile with ICCID: $iccid" "info" - - # Get all profile indices - profile_indices=$(uci show quecprofiles | grep -o '@profile\[[0-9]\+\]' | sort -u) - - # Exit early if no profiles found - if [ -z "$profile_indices" ]; then - log_message "No profiles configured in the system" "info" - return 1 - fi - - for profile_index in $profile_indices; do - local current_iccid=$(uci -q get quecprofiles.$profile_index.iccid) - if [ "$current_iccid" = "$iccid" ]; then - log_message "Found matching profile: $profile_index" "info" - echo "$profile_index" - return 0 - fi - done - - log_message "No matching profile found for ICCID: $iccid" "info" - return 1 -} - -# Function to normalize and compare values - handles format differences -compare_values() { - local current="$1" - local desired="$2" - local type="$3" - - # Skip empty values - if [ -z "$desired" ]; then - log_message "Desired value for $type is empty, skipping comparison" "debug" - return 1 # No change needed - fi - - # Normalize values for comparison - local norm_current - local norm_desired - - # Different normalization based on type - case "$type" in - "apn") - # APN comparison is case-insensitive - norm_current=$(echo "$current" | tr '[:upper:]' '[:lower:]') - norm_desired=$(echo "$desired" | tr '[:upper:]' '[:lower:]') - ;; - "mode") - # Network mode - normalize format and sort parts - norm_current=$(echo "$current" | tr '[:upper:]' '[:lower:]' | tr ':' ',' | tr -d ' ' | tr ',' '\n' | sort | tr '\n' ',' | sed 's/,$//') - norm_desired=$(echo "$desired" | tr '[:upper:]' '[:lower:]' | tr ':' ',' | tr -d ' ' | tr ',' '\n' | sort | tr '\n' ',' | sed 's/,$//') - ;; - "bands") - # Bands - sort numbers for consistent comparison - norm_current=$(echo "$current" | tr ',' '\n' | sort -n | tr '\n' ',' | sed 's/,$//') - norm_desired=$(echo "$desired" | tr ',' '\n' | sort -n | tr '\n' ',' | sed 's/,$//') - ;; - *) - # Default comparison - norm_current="$current" - norm_desired="$desired" - ;; - esac - - log_message "Comparing $type - Current: '$norm_current', Desired: '$norm_desired'" "debug" - - # Check if values are equivalent after normalization - if [ "$norm_current" = "$norm_desired" ]; then - log_message "$type values match after normalization" "debug" - return 1 # No change needed - else - log_message "$type values differ after normalization - change needed" "debug" - return 0 # Change needed - fi -} - -# Function to check if profile is already applied -is_profile_applied() { - local iccid="$1" - local profile_name="$2" - - # Check if applied flag exists and matches current profile - if [ -f "$APPLIED_FLAG" ]; then - local applied_data=$(cat "$APPLIED_FLAG" 2>/dev/null) - local applied_iccid=$(echo "$applied_data" | cut -d':' -f1) - local applied_name=$(echo "$applied_data" | cut -d':' -f2) - local applied_time=$(echo "$applied_data" | cut -d':' -f3) - - # Check if the applied profile matches current one - if [ "$applied_iccid" = "$iccid" ] && [ "$applied_name" = "$profile_name" ]; then - log_message "Profile '$profile_name' already applied at $(date -d @$applied_time)" "info" - return 0 # Profile already applied - fi - fi - - # No matching applied profile found - return 1 -} - -# Function to mark profile as applied -mark_profile_applied() { - local iccid="$1" - local profile_name="$2" - - # Save profile application data - echo "$iccid:$profile_name:$(date +%s)" >"$APPLIED_FLAG" - chmod 644 "$APPLIED_FLAG" - log_message "Marked profile '$profile_name' as applied for ICCID $iccid" "info" -} - -# Enhanced JSON string escaping function -escape_json() { - printf '%s' "$1" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr -d '\n' | sed 's/\r//g' -} - -# Function to acquire token directly with retries -acquire_token() { - local lock_id="QUECPROFILES_$(date +%s)_$$" - local priority="$QUEUE_PRIORITY" - local max_attempts=$MAX_TOKEN_WAIT - local attempt=0 - - log_message "Attempting to acquire AT queue token with priority $priority" "debug" - - while [ $attempt -lt $max_attempts ]; do - # Check if token file exists - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - log_message "Found expired token from $current_holder, removing" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Try again - higher priority token exists - log_message "Token held by $current_holder with priority $current_priority, retrying..." "debug" - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$lock_id\",\"priority\":$priority,\"timestamp\":$(date +%s)}" >"$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$lock_id" ]; then - log_message "Successfully acquired token with ID $lock_id" "debug" - echo "$lock_id" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Function to release token -release_token() { - local lock_id="$1" - - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$lock_id" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - log_message "Released token $lock_id" "debug" - return 0 - fi - log_message "Token held by $current_holder, not by us ($lock_id)" "warn" - else - log_message "Token file doesn't exist, nothing to release" "debug" - fi - return 1 -} - -# Function to execute AT command with proper error handling -execute_at_command() { - local cmd="$1" - local timeout="${2:-$COMMAND_TIMEOUT}" - local token_id="$3" - - if [ -z "$token_id" ]; then - log_message "No valid token provided for command: $cmd" "error" - return 1 - fi - - log_message "Executing AT command: $cmd (timeout: ${timeout}s)" "debug" - - # Execute the command with proper timeout - local output="" - local status=1 - - # Check if sms_tool exists - if which sms_tool >/dev/null 2>&1; then - output=$(sms_tool at "$cmd" -t "$timeout" 2>&1) - status=$? - log_message "AT command executed, status: $status" "debug" - else - log_message "sms_tool not found, cannot execute AT command" "error" - return 1 - fi - - # Log command output for debugging - echo "Command: $cmd" >>"$DETAILED_LOG" - echo "Output: $output" >>"$DETAILED_LOG" - echo "Status: $status" >>"$DETAILED_LOG" - - if [ $status -ne 0 ]; then - log_message "AT command failed: $cmd (exit code: $status)" "error" - return 1 - fi - - echo "$output" - return 0 -} - -# Function to fetch all modem data at once with a single token -fetch_modem_data() { - local token_id="" - local result=1 - local modem_data="" - - log_message "Fetching all modem data at once" "info" - - # Define commands to execute - local COMMANDS="AT+ICCID AT+CGDCONT? AT+QNWPREFCFG=\"mode_pref\" AT+QNWPREFCFG=\"lte_band\" AT+QNWPREFCFG=\"nsa_nr5g_band\" AT+QNWPREFCFG=\"nr5g_band\" AT+CGSN" - - # Get token - token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for fetching modem data" "error" - return 1 - fi - - # Execute each command and combine outputs - for cmd in $COMMANDS; do - log_message "Executing command: $cmd" "debug" - local output=$(execute_at_command "$cmd" 5 "$token_id") - local status=$? - - if [ $status -eq 0 ]; then - # Append to modem_data - modem_data="${modem_data}====COMMAND_START:${cmd}====\n${output}\n====COMMAND_END====\n\n" - else - log_message "Command failed: $cmd" "warn" - fi - done - - # Release token - release_token "$token_id" - - if [ -n "$modem_data" ]; then - # Save output to DETAILED_LOG for debugging - echo -e "MODEM DATA:\n$modem_data" >>"$DETAILED_LOG" - echo "$modem_data" - return 0 - else - log_message "No modem data fetched" "error" - return 1 - fi -} - -# Function to extract ICCID from modem data -extract_iccid() { - local modem_data="$1" - local iccid="" - - # Extract section containing ICCID command response - local iccid_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+ICCID====/,/====COMMAND_END====/p') - - # Try to extract ICCID (look for 10-20 digit number) - iccid=$(echo "$iccid_section" | grep -o '[0-9]\{10,20\}' | head -n 1) - - if [ -z "$iccid" ]; then - log_message "Failed to extract ICCID from modem data" "error" - return 1 - fi - - log_message "Extracted ICCID: $iccid" "info" - echo "$iccid" - return 0 -} - -# Function to extract APN from modem data -extract_apn() { - local modem_data="$1" - local apn="" - - # Extract section containing CGDCONT command response - local apn_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+CGDCONT?====/,/====COMMAND_END====/p') - - # Try to extract APN from the response - look for context 1 - apn=$(echo "$apn_section" | grep -o '+CGDCONT: 1,[^,]*,"[^"]*"' | cut -d'"' -f2) - - if [ -z "$apn" ]; then - # Try alternative pattern - apn=$(echo "$apn_section" | grep -o '+CGDCONT: 1,[^,]*,[^,]*' | cut -d',' -f3 | tr -d '"') - - if [ -z "$apn" ]; then - log_message "Failed to extract APN from modem data" "error" - return 1 - fi - fi - - log_message "Extracted APN: $apn" "info" - echo "$apn" - return 0 -} - -# Function to extract network mode from modem data -extract_network_mode() { - local modem_data="$1" - local mode="" - - # Extract section containing mode_pref command response - local mode_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+QNWPREFCFG="mode_pref"====/,/====COMMAND_END====/p') - - # Try to extract mode from the response - mode=$(echo "$mode_section" | grep -o '+QNWPREFCFG:.*' | cut -d'"' -f3) - - if [ -z "$mode" ]; then - log_message "Failed to extract network mode from modem data" "error" - return 1 - fi - - # Clean up the value - remove leading comma if present - mode=$(echo "$mode" | sed 's/^,//') - - log_message "Extracted network mode: $mode" "info" - echo "$mode" - return 0 -} - -# Function to extract LTE bands from modem data -extract_lte_bands() { - local modem_data="$1" - local bands="" - - # Extract section containing lte_band command response - local bands_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+QNWPREFCFG="lte_band"====/,/====COMMAND_END====/p') - - # Try to extract bands from the response - bands=$(echo "$bands_section" | grep -o '+QNWPREFCFG:.*' | cut -d'"' -f3) - - if [ -z "$bands" ]; then - log_message "Failed to extract LTE bands from modem data" "error" - return 1 - fi - - # Convert colon-separated to comma-separated and remove leading comma if present - bands=$(echo "$bands" | tr ':' ',' | sed 's/^,//') - - log_message "Extracted LTE bands: $bands" "info" - echo "$bands" - return 0 -} - -# Updated: Function to extract both SA and NSA NR5G bands from modem data -extract_nr5g_bands() { - local modem_data="$1" - local bands_type="$2" # "sa" or "nsa" - - local section_type="" - if [ "$bands_type" = "sa" ]; then - section_type="nr5g_band" - else - section_type="nsa_nr5g_band" - fi - - # Extract sections containing NR5G band command responses - local bands_section=$(echo -e "$modem_data" | sed -n "/====COMMAND_START:AT+QNWPREFCFG=\"$section_type\"====/,/====COMMAND_END====/p") - - # Try to extract bands - local bands=$(echo "$bands_section" | grep -o '+QNWPREFCFG:.*' | cut -d'"' -f3) - - if [ -n "$bands" ]; then - # Clean up the value - convert colon-separated to comma-separated and remove leading comma - bands=$(echo "$bands" | tr ':' ',' | sed 's/^,//') - log_message "Extracted $bands_type NR5G bands: $bands" "info" - echo "$bands" - return 0 - fi - - log_message "Failed to extract $bands_type NR5G bands from modem data" "warn" - return 1 -} - -# Function to extract IMEI from modem data -extract_imei() { - local modem_data="$1" - local imei="" - - # Extract section containing CGSN command response - local imei_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+CGSN====/,/====COMMAND_END====/p') - - # Try to extract IMEI (look for 15 digit number) - imei=$(echo "$imei_section" | grep -o '[0-9]\{15\}' | head -n 1) - - if [ -z "$imei" ]; then - log_message "Failed to extract IMEI from modem data" "error" - return 1 - fi - - log_message "Extracted IMEI: $imei" "info" - echo "$imei" - return 0 -} - -# Function to setup TTL configuration persistence -setup_ttl_persistence() { - if [ ! -f "/etc/data/lanUtils.sh" ]; then - log_message "lanUtils.sh not found, TTL changes might not persist across reboots" "warn" - return 1 - fi - - # Backup the original script if not already done - if [ ! -f "/etc/data/lanUtils.sh.bak" ]; then - cp "/etc/data/lanUtils.sh" "/etc/data/lanUtils.sh.bak" - fi - - # Add the local ttl_firewall_file line if it's not already present - if ! grep -q "local ttl_firewall_file" "/etc/data/lanUtils.sh"; then - sed -i '/local tcpmss_firewall_filev6/a \ local ttl_firewall_file=/etc/firewall.user.ttl' "/etc/data/lanUtils.sh" - fi - - # Add the condition to include the ttl_firewall_file if it's not already present - if ! grep -q "if \[ -f \"\$ttl_firewall_file\" \]; then" "/etc/data/lanUtils.sh"; then - sed -i '/if \[ -f "\$tcpmss_firewall_filev6" \]; then/i \ if [ -f "\$ttl_firewall_file" ]; then\n cat \$ttl_firewall_file >> \$firewall_file\n fi' "/etc/data/lanUtils.sh" - fi - - log_message "TTL persistence setup completed" "info" - return 0 -} - -# Function to apply TTL settings -apply_ttl_settings() { - local ttl="$1" - local current_ttl="$2" - local token_id="$3" - local profile_name="$4" - - # If TTL is not set, default to 0 (disabled) - ttl="${ttl:-0}" - current_ttl="${current_ttl:-0}" - - # Check if change is needed - if [ "$ttl" = "$current_ttl" ]; then - log_message "TTL already set to $ttl, no change needed" "debug" - return 0 - fi - - update_track "applying" "Setting TTL from '$current_ttl' to '$ttl'" "$profile_name" "85" - log_message "Changing TTL from '$current_ttl' to '$ttl'" "info" - - # Create TTL file directory if it doesn't exist - mkdir -p /etc - - if [ "$ttl" = "0" ]; then - # Clear existing rules - iptables -t mangle -D POSTROUTING -o rmnet+ -j TTL --ttl-set "$current_ttl" 2>/dev/null - ip6tables -t mangle -D POSTROUTING -o rmnet+ -j HL --hl-set "$current_ttl" 2>/dev/null - >"/etc/firewall.user.ttl" - log_message "TTL settings cleared" "info" - else - # Clear existing rules - if [ "$current_ttl" != "0" ]; then - iptables -t mangle -D POSTROUTING -o rmnet+ -j TTL --ttl-set "$current_ttl" 2>/dev/null - ip6tables -t mangle -D POSTROUTING -o rmnet+ -j HL --hl-set "$current_ttl" 2>/dev/null - fi - - # Set new rules - echo "iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set $ttl" >"/etc/firewall.user.ttl" - echo "ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set $ttl" >>"/etc/firewall.user.ttl" - - # Apply the rules - iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set "$ttl" - ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set "$ttl" - - log_message "TTL changed successfully to $ttl" "info" - fi - - # Setup persistence - setup_ttl_persistence - - return 0 -} - -# Function to get current TTL value -get_current_ttl() { - local current_ttl=0 - - if [ -f "/etc/firewall.user.ttl" ]; then - current_ttl=$(grep 'iptables -t mangle -A POSTROUTING' "/etc/firewall.user.ttl" | awk '{for(i=1;i<=NF;i++){if($i=="--ttl-set"){print $(i+1)}}}') - if ! [[ "$current_ttl" =~ ^[0-9]+$ ]]; then - current_ttl=0 - fi - fi - - log_message "Current TTL value: $current_ttl" "debug" - echo "$current_ttl" - return 0 -} - -# Updated function to apply profile settings with separate SA/NSA NR5G bands and TTL support -apply_profile_settings() { - local profile_name="$1" - local network_type="$2" - local lte_bands="$3" - local sa_nr5g_bands="$4" - local nsa_nr5g_bands="$5" - local apn="$6" - local pdp_type="$7" - local imei="$8" - local ttl="$9" - local current_apn="${10}" - local current_mode="${11}" - local current_lte_bands="${12}" - local current_sa_nr5g_bands="${13}" - local current_nsa_nr5g_bands="${14}" - local current_imei="${15}" - local iccid="${16}" - - # Set TTL to 0 (disabled) if not specified - ttl="${ttl:-0}" - - log_message "Applying profile '$profile_name' with settings:" "info" - log_message "- Network type: $network_type" "info" - log_message "- LTE bands: $lte_bands" "info" - log_message "- SA NR5G bands: $sa_nr5g_bands" "info" - log_message "- NSA NR5G bands: $nsa_nr5g_bands" "info" - log_message "- APN: $apn ($pdp_type)" "info" - log_message "- IMEI: $imei" "info" - log_message "- TTL: $ttl" "info" - - # Check if any changes are needed using improved comparison - local needs_apn_change=0 - local needs_mode_change=0 - local needs_lte_bands_change=0 - local needs_sa_nr5g_bands_change=0 - local needs_nsa_nr5g_bands_change=0 - local needs_imei_change=0 - local needs_ttl_change=0 - local changes_needed=0 - local requires_reboot=0 - - # Use normalized comparison - compare_values "$current_apn" "$apn" "apn" && needs_apn_change=1 && changes_needed=1 - compare_values "$current_mode" "$network_type" "mode" && needs_mode_change=1 && changes_needed=1 - compare_values "$current_lte_bands" "$lte_bands" "bands" && needs_lte_bands_change=1 && changes_needed=1 - compare_values "$current_sa_nr5g_bands" "$sa_nr5g_bands" "bands" && needs_sa_nr5g_bands_change=1 && changes_needed=1 - compare_values "$current_nsa_nr5g_bands" "$nsa_nr5g_bands" "bands" && needs_nsa_nr5g_bands_change=1 && changes_needed=1 - - # Get current TTL value - local current_ttl=$(get_current_ttl) - - # Compare TTL values - if [ "$current_ttl" != "$ttl" ]; then - needs_ttl_change=1 - changes_needed=1 - fi - - # IMEI is a special case - only change if explicitly specified - if [ -n "$imei" ]; then - compare_values "$current_imei" "$imei" "imei" && needs_imei_change=1 && changes_needed=1 && requires_reboot=1 - fi - - if [ $changes_needed -eq 0 ]; then - log_message "No changes needed for profile '$profile_name', settings already correct" "info" - mark_profile_applied "$iccid" "$profile_name" - update_track "success" "Profile already correctly applied" "$profile_name" "100" - return 0 - fi - - # Get token for applying settings - local token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for applying profile settings" "error" - update_track "error" "Failed to acquire token" "$profile_name" "0" - return 1 - fi - - local apply_success=1 - local changes_made=0 - - # Apply APN change first (most important) - if [ $needs_apn_change -eq 1 ]; then - update_track "applying" "Setting APN from '$current_apn' to '$apn'" "$profile_name" "20" - log_message "Changing APN from '$current_apn' to '$apn' ($pdp_type)" "info" - - # Set APN using AT command - local apn_cmd="AT+CGDCONT=1,\"$pdp_type\",\"$apn\"" - local output=$(execute_at_command "$apn_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "APN changed successfully to $apn ($pdp_type)" "info" - - # Verify APN setting - fetch APN again to confirm - local verify_output=$(execute_at_command "AT+CGDCONT?" 5 "$token_id") - if echo "$verify_output" | grep -q "\"$apn\""; then - log_message "APN change verified successfully" "info" - update_track "applying" "APN set successfully" "$profile_name" "30" - else - log_message "APN change could not be verified, continuing anyway" "warn" - fi - else - log_message "Failed to change APN to $apn" "error" - update_track "error" "Failed to set APN" "$profile_name" "20" - apply_success=0 - fi - fi - - # Apply network mode change - if [ $needs_mode_change -eq 1 ] && [ $apply_success -eq 1 ]; then - update_track "applying" "Setting network mode from '$current_mode' to '$network_type'" "$profile_name" "40" - log_message "Changing network mode from '$current_mode' to '$network_type'" "info" - - # Format network mode for AT command (may already be in correct format) - local mode_cmd="AT+QNWPREFCFG=\"mode_pref\",$network_type" - local output=$(execute_at_command "$mode_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "Network mode changed successfully to $network_type" "info" - update_track "applying" "Network mode set successfully" "$profile_name" "50" - - # If mode includes NR5G, ensure it's enabled - if echo "$network_type" | grep -q "NR5G"; then - log_message "Ensuring NR5G is enabled" "debug" - local nr5g_cmd="AT+QNWPREFCFG=\"nr5g_disable_mode\",0" - execute_at_command "$nr5g_cmd" 5 "$token_id" - fi - else - log_message "Failed to change network mode to $network_type" "error" - update_track "applying" "Failed to set network mode, continuing" "$profile_name" "45" - fi - fi - - # Apply LTE bands change - if [ $needs_lte_bands_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$lte_bands" ]; then - update_track "applying" "Setting LTE bands from '$current_lte_bands' to '$lte_bands'" "$profile_name" "60" - log_message "Changing LTE bands from '$current_lte_bands' to '$lte_bands'" "info" - - # Convert comma-separated to colon-separated for AT command - local bands_formatted=$(echo "$lte_bands" | tr ',' ':') - local bands_cmd="AT+QNWPREFCFG=\"lte_band\",$bands_formatted" - local output=$(execute_at_command "$bands_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "LTE bands changed successfully to $lte_bands" "info" - update_track "applying" "LTE bands set successfully" "$profile_name" "70" - else - log_message "Failed to change LTE bands to $lte_bands" "error" - update_track "applying" "Failed to set LTE bands, continuing" "$profile_name" "65" - fi - fi - - # Apply NSA NR5G bands change - if [ $needs_nsa_nr5g_bands_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$nsa_nr5g_bands" ]; then - update_track "applying" "Setting NSA NR5G bands from '$current_nsa_nr5g_bands' to '$nsa_nr5g_bands'" "$profile_name" "75" - log_message "Changing NSA NR5G bands from '$current_nsa_nr5g_bands' to '$nsa_nr5g_bands'" "info" - - # Convert comma-separated to colon-separated for AT command - local bands_formatted=$(echo "$nsa_nr5g_bands" | tr ',' ':') - local nsa_cmd="AT+QNWPREFCFG=\"nsa_nr5g_band\",$bands_formatted" - local output=$(execute_at_command "$nsa_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "NSA NR5G bands changed successfully to $nsa_nr5g_bands" "info" - update_track "applying" "NSA NR5G bands set successfully" "$profile_name" "80" - else - log_message "Failed to change NSA NR5G bands to $nsa_nr5g_bands" "error" - update_track "applying" "Failed to set NSA NR5G bands, continuing" "$profile_name" "75" - fi - fi - - # Apply SA NR5G bands change - if [ $needs_sa_nr5g_bands_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$sa_nr5g_bands" ]; then - update_track "applying" "Setting SA NR5G bands from '$current_sa_nr5g_bands' to '$sa_nr5g_bands'" "$profile_name" "85" - log_message "Changing SA NR5G bands from '$current_sa_nr5g_bands' to '$sa_nr5g_bands'" "info" - - # Convert comma-separated to colon-separated for AT command - local bands_formatted=$(echo "$sa_nr5g_bands" | tr ',' ':') - local sa_cmd="AT+QNWPREFCFG=\"nr5g_band\",$bands_formatted" - local output=$(execute_at_command "$sa_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "SA NR5G bands changed successfully to $sa_nr5g_bands" "info" - update_track "applying" "SA NR5G bands set successfully" "$profile_name" "90" - else - log_message "Failed to change SA NR5G bands to $sa_nr5g_bands" "error" - update_track "applying" "Failed to set SA NR5G bands, continuing" "$profile_name" "85" - fi - fi - - # Apply TTL change if needed - if [ $needs_ttl_change -eq 1 ] && [ $apply_success -eq 1 ]; then - apply_ttl_settings "$ttl" "$current_ttl" "$token_id" "$profile_name" - if [ $? -eq 0 ]; then - changes_made=1 - log_message "TTL settings applied successfully" "info" - fi - fi - - # Apply IMEI change (requires reboot) - if [ $needs_imei_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$imei" ]; then - update_track "applying" "Setting IMEI from '$current_imei' to '$imei'" "$profile_name" "95" - log_message "Changing IMEI from '$current_imei' to '$imei'" "info" - - local imei_cmd="AT+EGMR=1,7,\"$imei\"" - local output=$(execute_at_command "$imei_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - requires_reboot=1 - log_message "IMEI changed successfully to $imei (device will reboot)" "info" - update_track "rebooting" "IMEI changed, device will reboot" "$profile_name" "95" - else - log_message "Failed to change IMEI to $imei" "error" - update_track "applying" "Failed to set IMEI, continuing" "$profile_name" "90" - requires_reboot=0 - fi - fi - - # Release token - release_token "$token_id" - - # Mark profile as applied if changes were made - if [ $changes_made -eq 1 ]; then - mark_profile_applied "$iccid" "$profile_name" - fi - - # If IMEI was changed, need to reboot - if [ $requires_reboot -eq 1 ]; then - log_message "IMEI change requires reboot, scheduling reboot..." "info" - update_track "rebooting" "Device is rebooting to apply IMEI change" "$profile_name" "100" - sleep 2 - reboot & - return 0 - fi - - # Force network reset if changes were made but no reboot required - if [ $changes_made -eq 1 ] && [ $requires_reboot -eq 0 ]; then - log_message "Changes applied, resetting network connection to apply changes" "info" - update_track "applying" "Resetting network connection" "$profile_name" "95" - - # Get a new token for network reset - token_id=$(acquire_token) - if [ -n "$token_id" ]; then - # Force PDP context reconnection - note: errors here are common and non-fatal - log_message "Forcing network reconnection" "info" - execute_at_command "AT+COPS=2" 5 "$token_id" || true - sleep 2 - execute_at_command "AT+COPS=0" 5 "$token_id" || true - sleep 1 - - # Release token - release_token "$token_id" - fi - fi - - # Check if any changes were made - if [ $changes_made -eq 0 ]; then - log_message "Profile '$profile_name' already applied correctly, no changes needed" "info" - update_track "success" "Profile already correctly applied" "$profile_name" "100" - else - log_message "Successfully applied profile '$profile_name'" "info" - update_track "success" "Profile applied successfully" "$profile_name" "100" - fi - - return 0 -} - -# Check profile function with updated SA/NSA bands and TTL support -check_profile() { - local forced="${1:-0}" - - log_message "Performing profile check (forced=$forced)" "info" - - # Get all modem data at once with a single token - local modem_data="" - modem_data=$(fetch_modem_data) - if [ $? -ne 0 ]; then - log_message "Failed to fetch modem data, will retry later" "error" - update_track "error" "Could not communicate with modem. Will retry later." "unknown" "0" - return 1 - fi - - # Extract ICCID from modem data - local current_iccid="" - current_iccid=$(extract_iccid "$modem_data") - if [ $? -ne 0 ]; then - log_message "Failed to extract ICCID from modem data, will retry later" "error" - update_track "error" "Could not detect SIM card. Please check that a SIM is inserted." "unknown" "0" - return 1 - fi - - log_message "Current ICCID: $current_iccid" "info" - - # Find profile for current ICCID - local profile_index="" - profile_index=$(find_profile_by_iccid "$current_iccid") - local profile_result=$? - - # CRITICAL FIX: Early return if no profile is found - if [ $profile_result -ne 0 ]; then - log_message "No profile found for ICCID $current_iccid, nothing to apply" "info" - update_track "idle" "No profile exists for current SIM card. Create a profile to configure network settings." "$current_iccid" "0" - return 0 - fi - - # Only continue if we found a valid profile - log_message "Found valid profile index: $profile_index" "debug" - - # Get profile details - local profile_name=$(uci -q get quecprofiles.$profile_index.name) - local network_type=$(uci -q get quecprofiles.$profile_index.network_type) - local lte_bands=$(uci -q get quecprofiles.$profile_index.lte_bands) - local sa_nr5g_bands=$(uci -q get quecprofiles.$profile_index.sa_nr5g_bands) - local nsa_nr5g_bands=$(uci -q get quecprofiles.$profile_index.nsa_nr5g_bands) - local apn=$(uci -q get quecprofiles.$profile_index.apn) - local pdp_type=$(uci -q get quecprofiles.$profile_index.pdp_type) - local imei=$(uci -q get quecprofiles.$profile_index.imei) - local ttl=$(uci -q get quecprofiles.$profile_index.ttl) - - # Default pdp_type to "IP" if not specified - pdp_type="${pdp_type:-IP}" - # Default TTL to 0 (disabled) if not specified - ttl="${ttl:-0}" - - # For backward compatibility - check if old nr5g_bands exists but new fields don't - local nr5g_bands=$(uci -q get quecprofiles.$profile_index.nr5g_bands) - if [ -n "$nr5g_bands" ] && [ -z "$sa_nr5g_bands" ] && [ -z "$nsa_nr5g_bands" ]; then - sa_nr5g_bands=$nr5g_bands - nsa_nr5g_bands=$nr5g_bands - log_message "Migrating legacy nr5g_bands for profile $profile_name" "info" - fi - - log_message "Found profile: $profile_name for ICCID: $current_iccid" "info" - log_message "Profile settings: network_type=$network_type, lte_bands=$lte_bands, sa_nr5g_bands=$sa_nr5g_bands, nsa_nr5g_bands=$nsa_nr5g_bands, apn=$apn, pdp_type=$pdp_type, imei=$imei, ttl=$ttl" "info" - - # Check if APN is configured - it's the minimum required setting - if [ -z "$apn" ]; then - log_message "Profile has no APN configured, cannot apply" "error" - update_track "error" "Profile \"$profile_name\" is missing the required APN setting. Please edit the profile and add an APN." "$profile_name" "0" - return 1 - fi - - # Check if profile is already applied (unless forced) - if [ "$forced" != "1" ] && is_profile_applied "$current_iccid" "$profile_name"; then - log_message "Profile '$profile_name' is already applied, skipping" "info" - update_track "success" "Profile already applied (from flag)" "$profile_name" "100" - return 0 - fi - - # Apply profile if forced or if autoswitch is enabled - local enable_autoswitch - enable_autoswitch=$(uci -q get quecprofiles.settings.enable_autoswitch) - enable_autoswitch="${enable_autoswitch:-1}" # Default to enabled - - if [ "$forced" = "1" ] || [ "$enable_autoswitch" = "1" ]; then - log_message "Applying profile settings..." "info" - update_track "applying" "Applying profile settings" "$profile_name" "10" - - # Extract current modem settings for comparison - local current_apn="" - local current_mode="" - local current_lte_bands="" - local current_sa_nr5g_bands="" - local current_nsa_nr5g_bands="" - local current_imei="" - - current_apn=$(extract_apn "$modem_data") - current_mode=$(extract_network_mode "$modem_data") - current_lte_bands=$(extract_lte_bands "$modem_data") - current_sa_nr5g_bands=$(extract_nr5g_bands "$modem_data" "sa") - current_nsa_nr5g_bands=$(extract_nr5g_bands "$modem_data" "nsa") - current_imei=$(extract_imei "$modem_data") - - # Apply profile settings with the new parameters - apply_profile_settings "$profile_name" "$network_type" "$lte_bands" "$sa_nr5g_bands" "$nsa_nr5g_bands" \ - "$apn" "$pdp_type" "$imei" "$ttl" "$current_apn" "$current_mode" "$current_lte_bands" \ - "$current_sa_nr5g_bands" "$current_nsa_nr5g_bands" "$current_imei" "$current_iccid" - return $? - else - log_message "Automatic profile switching is disabled, not applying profile" "info" - update_track "idle" "Automatic profile switching is disabled" "$profile_name" "0" - return 0 - fi -} - -# Main function -main() { - log_message "QuecProfiles daemon starting with SA/NSA NR5G and TTL support (PID: $$)" "info" - - # Clear status files at startup - rm -f "$TRACK_FILE" "$CHECK_TRIGGER" - update_track "idle" "Daemon started" "none" "0" - - # Get check interval from UCI - local check_interval - check_interval=$(uci -q get quecprofiles.settings.check_interval) - check_interval="${check_interval:-$DEFAULT_CHECK_INTERVAL}" - - # Check autoswitch setting - local enable_autoswitch - enable_autoswitch=$(uci -q get quecprofiles.settings.enable_autoswitch) - enable_autoswitch="${enable_autoswitch:-1}" # Default to enabled - - log_message "Daemon configured with check_interval=$check_interval seconds, enable_autoswitch=$enable_autoswitch" "info" - - # Add a startup delay - log_message "Waiting 10 seconds before initial check..." "info" - sleep 10 - - # Main loop - while true; do - # Check if there's a manual check request - if [ -f "$CHECK_TRIGGER" ]; then - log_message "Manual check triggered" "info" - rm -f "$CHECK_TRIGGER" - check_profile 1 # Forced check - elif [ "$enable_autoswitch" -eq 1 ]; then - # Perform regular check - check_profile 0 # Regular check - else - log_message "Automatic profile switching is disabled" "info" - update_track "idle" "Automatic profile switching is disabled" "none" "0" - fi - - # Sleep for the check interval - log_message "Sleeping for $check_interval seconds" "info" - - # Break the sleep into smaller intervals to check for triggers - sleep_counter=0 - while [ $sleep_counter -lt $check_interval ]; do - sleep 5 - sleep_counter=$((sleep_counter + 5)) - - # Check for manual trigger during sleep - if [ -f "$CHECK_TRIGGER" ]; then - log_message "Manual check triggered during sleep" "info" - break - fi - done - done -} - -# Set up trap handlers for clean shutdown -trap 'log_message "Received SIGTERM, exiting"; update_track "idle" "Daemon stopped" "none" "0"; exit 0' TERM -trap 'log_message "Received SIGINT, exiting"; update_track "idle" "Daemon stopped" "none" "0"; exit 0' INT - -# Start the main function -main \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecprofile.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecprofile.sh deleted file mode 100755 index 90bf2e6..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecprofile.sh +++ /dev/null @@ -1,1045 +0,0 @@ -#!/bin/sh -# Updated QuecProfiles daemon with enhanced SA/NSA NR5G band management and TTL support -# Including profile application functions and fixed comparison logic - -# Configuration -QUEUE_DIR="/tmp/at_queue" -TOKEN_FILE="$QUEUE_DIR/token" -TRACK_FILE="/tmp/quecprofiles_active" -CHECK_TRIGGER="/tmp/quecprofiles_check" -STATUS_FILE="/tmp/quecprofiles_status.json" -APPLIED_FLAG="/tmp/quecprofiles_applied" -DEBUG_LOG="/tmp/quecprofiles_debug.log" -DETAILED_LOG="/tmp/quecprofiles_detailed.log" -DEFAULT_CHECK_INTERVAL=60 # Default check interval in seconds -COMMAND_TIMEOUT=10 # Default timeout for AT commands in seconds -QUEUE_PRIORITY=3 # Medium-high priority (1 is highest for cell scan) -MAX_TOKEN_WAIT=15 # Maximum seconds to wait for token acquisition - -# Initialize log file -echo "$(date) - Starting QuecProfiles daemon with SA/NSA NR5G and TTL support (PID: $$)" >"$DEBUG_LOG" -echo "$(date) - Starting QuecProfiles daemon with SA/NSA NR5G and TTL support (PID: $$)" >"$DETAILED_LOG" -chmod 644 "$DEBUG_LOG" "$DETAILED_LOG" - -# Function to log messages -log_message() { - local message="$1" - local level="${2:-info}" - local timestamp=$(date "+%Y-%m-%d %H:%M:%S") - - # Log to system log - logger -t quecprofiles_daemon -p "daemon.$level" "$message" - - # Log to debug file - echo "[$timestamp] [$level] $message" >>"$DEBUG_LOG" - - # For detailed logs or errors - if [ "$level" = "error" ] || [ "$level" = "debug" ]; then - echo "[$timestamp] [$level] $message" >>"$DETAILED_LOG" - fi -} - -# Function to update track file with status - IMPROVED VERSION -update_track() { - local status="$1" - local message="$2" - local profile="${3:-unknown}" - local progress="${4:-0}" - - # Create JSON status - cat >"$STATUS_FILE" <"$TRACK_FILE" - chmod 644 "$TRACK_FILE" - fi - - log_message "Status updated: $status - $message ($progress%)" -} - -# Function to find profile by ICCID in UCI -find_profile_by_iccid() { - local iccid="$1" - local profile_indices - - log_message "Looking for profile with ICCID: $iccid" "info" - - # Get all profile indices - profile_indices=$(uci show quecprofiles | grep -o '@profile\[[0-9]\+\]' | sort -u) - - # Exit early if no profiles found - if [ -z "$profile_indices" ]; then - log_message "No profiles configured in the system" "info" - return 1 - fi - - for profile_index in $profile_indices; do - local current_iccid=$(uci -q get quecprofiles.$profile_index.iccid) - if [ "$current_iccid" = "$iccid" ]; then - log_message "Found matching profile: $profile_index" "info" - echo "$profile_index" - return 0 - fi - done - - log_message "No matching profile found for ICCID: $iccid" "info" - return 1 -} - -# Function to normalize and compare values - handles format differences -compare_values() { - local current="$1" - local desired="$2" - local type="$3" - - # Skip empty values - if [ -z "$desired" ]; then - log_message "Desired value for $type is empty, skipping comparison" "debug" - return 1 # No change needed - fi - - # Normalize values for comparison - local norm_current - local norm_desired - - # Different normalization based on type - case "$type" in - "apn") - # APN comparison is case-insensitive - norm_current=$(echo "$current" | tr '[:upper:]' '[:lower:]') - norm_desired=$(echo "$desired" | tr '[:upper:]' '[:lower:]') - ;; - "mode") - # Network mode - normalize format and sort parts - norm_current=$(echo "$current" | tr '[:upper:]' '[:lower:]' | tr ':' ',' | tr -d ' ' | tr ',' '\n' | sort | tr '\n' ',' | sed 's/,$//') - norm_desired=$(echo "$desired" | tr '[:upper:]' '[:lower:]' | tr ':' ',' | tr -d ' ' | tr ',' '\n' | sort | tr '\n' ',' | sed 's/,$//') - ;; - "bands") - # Bands - sort numbers for consistent comparison - norm_current=$(echo "$current" | tr ',' '\n' | sort -n | tr '\n' ',' | sed 's/,$//') - norm_desired=$(echo "$desired" | tr ',' '\n' | sort -n | tr '\n' ',' | sed 's/,$//') - ;; - *) - # Default comparison - norm_current="$current" - norm_desired="$desired" - ;; - esac - - log_message "Comparing $type - Current: '$norm_current', Desired: '$norm_desired'" "debug" - - # Check if values are equivalent after normalization - if [ "$norm_current" = "$norm_desired" ]; then - log_message "$type values match after normalization" "debug" - return 1 # No change needed - else - log_message "$type values differ after normalization - change needed" "debug" - return 0 # Change needed - fi -} - -# Function to check if profile is already applied -is_profile_applied() { - local iccid="$1" - local profile_name="$2" - - # Check if applied flag exists and matches current profile - if [ -f "$APPLIED_FLAG" ]; then - local applied_data=$(cat "$APPLIED_FLAG" 2>/dev/null) - local applied_iccid=$(echo "$applied_data" | cut -d':' -f1) - local applied_name=$(echo "$applied_data" | cut -d':' -f2) - local applied_time=$(echo "$applied_data" | cut -d':' -f3) - - # Check if the applied profile matches current one - if [ "$applied_iccid" = "$iccid" ] && [ "$applied_name" = "$profile_name" ]; then - log_message "Profile '$profile_name' already applied at $(date -d @$applied_time)" "info" - return 0 # Profile already applied - fi - fi - - # No matching applied profile found - return 1 -} - -# Function to mark profile as applied -mark_profile_applied() { - local iccid="$1" - local profile_name="$2" - - # Save profile application data - echo "$iccid:$profile_name:$(date +%s)" >"$APPLIED_FLAG" - chmod 644 "$APPLIED_FLAG" - log_message "Marked profile '$profile_name' as applied for ICCID $iccid" "info" -} - -# Enhanced JSON string escaping function -escape_json() { - printf '%s' "$1" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | tr -d '\n' | sed 's/\r//g' -} - -# Function to acquire token directly with retries -acquire_token() { - local lock_id="QUECPROFILES_$(date +%s)_$$" - local priority="$QUEUE_PRIORITY" - local max_attempts=$MAX_TOKEN_WAIT - local attempt=0 - - log_message "Attempting to acquire AT queue token with priority $priority" "debug" - - while [ $attempt -lt $max_attempts ]; do - # Check if token file exists - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - log_message "Found expired token from $current_holder, removing" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Try again - higher priority token exists - log_message "Token held by $current_holder with priority $current_priority, retrying..." "debug" - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$lock_id\",\"priority\":$priority,\"timestamp\":$(date +%s)}" >"$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$lock_id" ]; then - log_message "Successfully acquired token with ID $lock_id" "debug" - echo "$lock_id" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Function to release token -release_token() { - local lock_id="$1" - - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$lock_id" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - log_message "Released token $lock_id" "debug" - return 0 - fi - log_message "Token held by $current_holder, not by us ($lock_id)" "warn" - else - log_message "Token file doesn't exist, nothing to release" "debug" - fi - return 1 -} - -# Function to execute AT command with proper error handling -execute_at_command() { - local cmd="$1" - local timeout="${2:-$COMMAND_TIMEOUT}" - local token_id="$3" - - if [ -z "$token_id" ]; then - log_message "No valid token provided for command: $cmd" "error" - return 1 - fi - - log_message "Executing AT command: $cmd (timeout: ${timeout}s)" "debug" - - # Execute the command with proper timeout - local output="" - local status=1 - - # Check if sms_tool exists - if which sms_tool >/dev/null 2>&1; then - output=$(sms_tool at "$cmd" -t "$timeout" 2>&1) - status=$? - log_message "AT command executed, status: $status" "debug" - else - log_message "sms_tool not found, cannot execute AT command" "error" - return 1 - fi - - # Log command output for debugging - echo "Command: $cmd" >>"$DETAILED_LOG" - echo "Output: $output" >>"$DETAILED_LOG" - echo "Status: $status" >>"$DETAILED_LOG" - - if [ $status -ne 0 ]; then - log_message "AT command failed: $cmd (exit code: $status)" "error" - return 1 - fi - - echo "$output" - return 0 -} - -# Function to fetch all modem data at once with a single token -fetch_modem_data() { - local token_id="" - local result=1 - local modem_data="" - - log_message "Fetching all modem data at once" "info" - - # Define commands to execute - local COMMANDS="AT+ICCID AT+CGDCONT? AT+QNWPREFCFG=\"mode_pref\" AT+QNWPREFCFG=\"lte_band\" AT+QNWPREFCFG=\"nsa_nr5g_band\" AT+QNWPREFCFG=\"nr5g_band\" AT+CGSN" - - # Get token - token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for fetching modem data" "error" - return 1 - fi - - # Execute each command and combine outputs - for cmd in $COMMANDS; do - log_message "Executing command: $cmd" "debug" - local output=$(execute_at_command "$cmd" 5 "$token_id") - local status=$? - - if [ $status -eq 0 ]; then - # Append to modem_data - modem_data="${modem_data}====COMMAND_START:${cmd}====\n${output}\n====COMMAND_END====\n\n" - else - log_message "Command failed: $cmd" "warn" - fi - done - - # Release token - release_token "$token_id" - - if [ -n "$modem_data" ]; then - # Save output to DETAILED_LOG for debugging - echo -e "MODEM DATA:\n$modem_data" >>"$DETAILED_LOG" - echo "$modem_data" - return 0 - else - log_message "No modem data fetched" "error" - return 1 - fi -} - -# Function to extract ICCID from modem data -extract_iccid() { - local modem_data="$1" - local iccid="" - - # Extract section containing ICCID command response - local iccid_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+ICCID====/,/====COMMAND_END====/p') - - # Try to extract ICCID (look for 10-20 digit number) - iccid=$(echo "$iccid_section" | grep -o '[0-9]\{10,20\}' | head -n 1) - - if [ -z "$iccid" ]; then - log_message "Failed to extract ICCID from modem data" "error" - return 1 - fi - - log_message "Extracted ICCID: $iccid" "info" - echo "$iccid" - return 0 -} - -# Function to extract APN from modem data -extract_apn() { - local modem_data="$1" - local apn="" - - # Extract section containing CGDCONT command response - local apn_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+CGDCONT?====/,/====COMMAND_END====/p') - - # Try to extract APN from the response - look for context 1 - apn=$(echo "$apn_section" | grep -o '+CGDCONT: 1,[^,]*,"[^"]*"' | cut -d'"' -f2) - - if [ -z "$apn" ]; then - # Try alternative pattern - apn=$(echo "$apn_section" | grep -o '+CGDCONT: 1,[^,]*,[^,]*' | cut -d',' -f3 | tr -d '"') - - if [ -z "$apn" ]; then - log_message "Failed to extract APN from modem data" "error" - return 1 - fi - fi - - log_message "Extracted APN: $apn" "info" - echo "$apn" - return 0 -} - -# Function to extract network mode from modem data -extract_network_mode() { - local modem_data="$1" - local mode="" - - # Extract section containing mode_pref command response - local mode_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+QNWPREFCFG="mode_pref"====/,/====COMMAND_END====/p') - - # Try to extract mode from the response - mode=$(echo "$mode_section" | grep -o '+QNWPREFCFG:.*' | cut -d'"' -f3) - - if [ -z "$mode" ]; then - log_message "Failed to extract network mode from modem data" "error" - return 1 - fi - - # Clean up the value - remove leading comma if present - mode=$(echo "$mode" | sed 's/^,//') - - log_message "Extracted network mode: $mode" "info" - echo "$mode" - return 0 -} - -# Function to extract LTE bands from modem data -extract_lte_bands() { - local modem_data="$1" - local bands="" - - # Extract section containing lte_band command response - local bands_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+QNWPREFCFG="lte_band"====/,/====COMMAND_END====/p') - - # Try to extract bands from the response - bands=$(echo "$bands_section" | grep -o '+QNWPREFCFG:.*' | cut -d'"' -f3) - - if [ -z "$bands" ]; then - log_message "Failed to extract LTE bands from modem data" "error" - return 1 - fi - - # Convert colon-separated to comma-separated and remove leading comma if present - bands=$(echo "$bands" | tr ':' ',' | sed 's/^,//') - - log_message "Extracted LTE bands: $bands" "info" - echo "$bands" - return 0 -} - -# Updated: Function to extract both SA and NSA NR5G bands from modem data -extract_nr5g_bands() { - local modem_data="$1" - local bands_type="$2" # "sa" or "nsa" - - local section_type="" - if [ "$bands_type" = "sa" ]; then - section_type="nr5g_band" - else - section_type="nsa_nr5g_band" - fi - - # Extract sections containing NR5G band command responses - local bands_section=$(echo -e "$modem_data" | sed -n "/====COMMAND_START:AT+QNWPREFCFG=\"$section_type\"====/,/====COMMAND_END====/p") - - # Try to extract bands - local bands=$(echo "$bands_section" | grep -o '+QNWPREFCFG:.*' | cut -d'"' -f3) - - if [ -n "$bands" ]; then - # Clean up the value - convert colon-separated to comma-separated and remove leading comma - bands=$(echo "$bands" | tr ':' ',' | sed 's/^,//') - log_message "Extracted $bands_type NR5G bands: $bands" "info" - echo "$bands" - return 0 - fi - - log_message "Failed to extract $bands_type NR5G bands from modem data" "warn" - return 1 -} - -# Function to extract IMEI from modem data -extract_imei() { - local modem_data="$1" - local imei="" - - # Extract section containing CGSN command response - local imei_section=$(echo -e "$modem_data" | sed -n '/====COMMAND_START:AT+CGSN====/,/====COMMAND_END====/p') - - # Try to extract IMEI (look for 15 digit number) - imei=$(echo "$imei_section" | grep -o '[0-9]\{15\}' | head -n 1) - - if [ -z "$imei" ]; then - log_message "Failed to extract IMEI from modem data" "error" - return 1 - fi - - log_message "Extracted IMEI: $imei" "info" - echo "$imei" - return 0 -} - -# Function to setup TTL configuration persistence -setup_ttl_persistence() { - if [ ! -f "/etc/data/lanUtils.sh" ]; then - log_message "lanUtils.sh not found, TTL changes might not persist across reboots" "warn" - return 1 - fi - - # Backup the original script if not already done - if [ ! -f "/etc/data/lanUtils.sh.bak" ]; then - cp "/etc/data/lanUtils.sh" "/etc/data/lanUtils.sh.bak" - fi - - # Add the local ttl_firewall_file line if it's not already present - if ! grep -q "local ttl_firewall_file" "/etc/data/lanUtils.sh"; then - sed -i '/local tcpmss_firewall_filev6/a \ local ttl_firewall_file=/etc/firewall.user.ttl' "/etc/data/lanUtils.sh" - fi - - # Add the condition to include the ttl_firewall_file if it's not already present - if ! grep -q "if \[ -f \"\$ttl_firewall_file\" \]; then" "/etc/data/lanUtils.sh"; then - sed -i '/if \[ -f "\$tcpmss_firewall_filev6" \]; then/i \ if [ -f "\$ttl_firewall_file" ]; then\n cat \$ttl_firewall_file >> \$firewall_file\n fi' "/etc/data/lanUtils.sh" - fi - - log_message "TTL persistence setup completed" "info" - return 0 -} - -# Function to apply TTL settings -apply_ttl_settings() { - local ttl="$1" - local current_ttl="$2" - local token_id="$3" - local profile_name="$4" - - # If TTL is not set, default to 0 (disabled) - ttl="${ttl:-0}" - current_ttl="${current_ttl:-0}" - - # Check if change is needed - if [ "$ttl" = "$current_ttl" ]; then - log_message "TTL already set to $ttl, no change needed" "debug" - return 0 - fi - - update_track "applying" "Setting TTL from '$current_ttl' to '$ttl'" "$profile_name" "85" - log_message "Changing TTL from '$current_ttl' to '$ttl'" "info" - - # Create TTL file directory if it doesn't exist - mkdir -p /etc - - if [ "$ttl" = "0" ]; then - # Clear existing rules - iptables -t mangle -D POSTROUTING -o rmnet+ -j TTL --ttl-set "$current_ttl" 2>/dev/null - ip6tables -t mangle -D POSTROUTING -o rmnet+ -j HL --hl-set "$current_ttl" 2>/dev/null - >"/etc/firewall.user.ttl" - log_message "TTL settings cleared" "info" - else - # Clear existing rules - if [ "$current_ttl" != "0" ]; then - iptables -t mangle -D POSTROUTING -o rmnet+ -j TTL --ttl-set "$current_ttl" 2>/dev/null - ip6tables -t mangle -D POSTROUTING -o rmnet+ -j HL --hl-set "$current_ttl" 2>/dev/null - fi - - # Set new rules - echo "iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set $ttl" >"/etc/firewall.user.ttl" - echo "ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set $ttl" >>"/etc/firewall.user.ttl" - - # Apply the rules - iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set "$ttl" - ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set "$ttl" - - log_message "TTL changed successfully to $ttl" "info" - fi - - # Setup persistence - setup_ttl_persistence - - return 0 -} - -# Function to get current TTL value -get_current_ttl() { - local current_ttl=0 - - if [ -f "/etc/firewall.user.ttl" ]; then - current_ttl=$(grep 'iptables -t mangle -A POSTROUTING' "/etc/firewall.user.ttl" | awk '{for(i=1;i<=NF;i++){if($i=="--ttl-set"){print $(i+1)}}}') - if ! [[ "$current_ttl" =~ ^[0-9]+$ ]]; then - current_ttl=0 - fi - fi - - log_message "Current TTL value: $current_ttl" "debug" - echo "$current_ttl" - return 0 -} - -# Updated function to apply profile settings with separate SA/NSA NR5G bands and TTL support -apply_profile_settings() { - local profile_name="$1" - local network_type="$2" - local lte_bands="$3" - local sa_nr5g_bands="$4" - local nsa_nr5g_bands="$5" - local apn="$6" - local pdp_type="$7" - local imei="$8" - local ttl="$9" - local current_apn="${10}" - local current_mode="${11}" - local current_lte_bands="${12}" - local current_sa_nr5g_bands="${13}" - local current_nsa_nr5g_bands="${14}" - local current_imei="${15}" - local iccid="${16}" - - # Set TTL to 0 (disabled) if not specified - ttl="${ttl:-0}" - - log_message "Applying profile '$profile_name' with settings:" "info" - log_message "- Network type: $network_type" "info" - log_message "- LTE bands: $lte_bands" "info" - log_message "- SA NR5G bands: $sa_nr5g_bands" "info" - log_message "- NSA NR5G bands: $nsa_nr5g_bands" "info" - log_message "- APN: $apn ($pdp_type)" "info" - log_message "- IMEI: $imei" "info" - log_message "- TTL: $ttl" "info" - - # Check if any changes are needed using improved comparison - local needs_apn_change=0 - local needs_mode_change=0 - local needs_lte_bands_change=0 - local needs_sa_nr5g_bands_change=0 - local needs_nsa_nr5g_bands_change=0 - local needs_imei_change=0 - local needs_ttl_change=0 - local changes_needed=0 - local requires_reboot=0 - - # Use normalized comparison - compare_values "$current_apn" "$apn" "apn" && needs_apn_change=1 && changes_needed=1 - compare_values "$current_mode" "$network_type" "mode" && needs_mode_change=1 && changes_needed=1 - compare_values "$current_lte_bands" "$lte_bands" "bands" && needs_lte_bands_change=1 && changes_needed=1 - compare_values "$current_sa_nr5g_bands" "$sa_nr5g_bands" "bands" && needs_sa_nr5g_bands_change=1 && changes_needed=1 - compare_values "$current_nsa_nr5g_bands" "$nsa_nr5g_bands" "bands" && needs_nsa_nr5g_bands_change=1 && changes_needed=1 - - # Get current TTL value - local current_ttl=$(get_current_ttl) - - # Compare TTL values - if [ "$current_ttl" != "$ttl" ]; then - needs_ttl_change=1 - changes_needed=1 - fi - - # IMEI is a special case - only change if explicitly specified - if [ -n "$imei" ]; then - compare_values "$current_imei" "$imei" "imei" && needs_imei_change=1 && changes_needed=1 && requires_reboot=1 - fi - - if [ $changes_needed -eq 0 ]; then - log_message "No changes needed for profile '$profile_name', settings already correct" "info" - mark_profile_applied "$iccid" "$profile_name" - update_track "success" "Profile already correctly applied" "$profile_name" "100" - return 0 - fi - - # Get token for applying settings - local token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for applying profile settings" "error" - update_track "error" "Failed to acquire token" "$profile_name" "0" - return 1 - fi - - local apply_success=1 - local changes_made=0 - - # Apply APN change first (most important) - if [ $needs_apn_change -eq 1 ]; then - update_track "applying" "Setting APN from '$current_apn' to '$apn'" "$profile_name" "20" - log_message "Changing APN from '$current_apn' to '$apn' ($pdp_type)" "info" - - # Set APN using AT command - local apn_cmd="AT+CGDCONT=1,\"$pdp_type\",\"$apn\"" - local output=$(execute_at_command "$apn_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "APN changed successfully to $apn ($pdp_type)" "info" - - # Verify APN setting - fetch APN again to confirm - local verify_output=$(execute_at_command "AT+CGDCONT?" 5 "$token_id") - if echo "$verify_output" | grep -q "\"$apn\""; then - log_message "APN change verified successfully" "info" - update_track "applying" "APN set successfully" "$profile_name" "30" - else - log_message "APN change could not be verified, continuing anyway" "warn" - fi - else - log_message "Failed to change APN to $apn" "error" - update_track "error" "Failed to set APN" "$profile_name" "20" - apply_success=0 - fi - fi - - # Apply network mode change - if [ $needs_mode_change -eq 1 ] && [ $apply_success -eq 1 ]; then - update_track "applying" "Setting network mode from '$current_mode' to '$network_type'" "$profile_name" "40" - log_message "Changing network mode from '$current_mode' to '$network_type'" "info" - - # Format network mode for AT command (may already be in correct format) - local mode_cmd="AT+QNWPREFCFG=\"mode_pref\",$network_type" - local output=$(execute_at_command "$mode_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "Network mode changed successfully to $network_type" "info" - update_track "applying" "Network mode set successfully" "$profile_name" "50" - - # If mode includes NR5G, ensure it's enabled - if echo "$network_type" | grep -q "NR5G"; then - log_message "Ensuring NR5G is enabled" "debug" - local nr5g_cmd="AT+QNWPREFCFG=\"nr5g_disable_mode\",0" - execute_at_command "$nr5g_cmd" 5 "$token_id" - fi - else - log_message "Failed to change network mode to $network_type" "error" - update_track "applying" "Failed to set network mode, continuing" "$profile_name" "45" - fi - fi - - # Apply LTE bands change - if [ $needs_lte_bands_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$lte_bands" ]; then - update_track "applying" "Setting LTE bands from '$current_lte_bands' to '$lte_bands'" "$profile_name" "60" - log_message "Changing LTE bands from '$current_lte_bands' to '$lte_bands'" "info" - - # Convert comma-separated to colon-separated for AT command - local bands_formatted=$(echo "$lte_bands" | tr ',' ':') - local bands_cmd="AT+QNWPREFCFG=\"lte_band\",$bands_formatted" - local output=$(execute_at_command "$bands_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "LTE bands changed successfully to $lte_bands" "info" - update_track "applying" "LTE bands set successfully" "$profile_name" "70" - else - log_message "Failed to change LTE bands to $lte_bands" "error" - update_track "applying" "Failed to set LTE bands, continuing" "$profile_name" "65" - fi - fi - - # Apply NSA NR5G bands change - if [ $needs_nsa_nr5g_bands_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$nsa_nr5g_bands" ]; then - update_track "applying" "Setting NSA NR5G bands from '$current_nsa_nr5g_bands' to '$nsa_nr5g_bands'" "$profile_name" "75" - log_message "Changing NSA NR5G bands from '$current_nsa_nr5g_bands' to '$nsa_nr5g_bands'" "info" - - # Convert comma-separated to colon-separated for AT command - local bands_formatted=$(echo "$nsa_nr5g_bands" | tr ',' ':') - local nsa_cmd="AT+QNWPREFCFG=\"nsa_nr5g_band\",$bands_formatted" - local output=$(execute_at_command "$nsa_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "NSA NR5G bands changed successfully to $nsa_nr5g_bands" "info" - update_track "applying" "NSA NR5G bands set successfully" "$profile_name" "80" - else - log_message "Failed to change NSA NR5G bands to $nsa_nr5g_bands" "error" - update_track "applying" "Failed to set NSA NR5G bands, continuing" "$profile_name" "75" - fi - fi - - # Apply SA NR5G bands change - if [ $needs_sa_nr5g_bands_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$sa_nr5g_bands" ]; then - update_track "applying" "Setting SA NR5G bands from '$current_sa_nr5g_bands' to '$sa_nr5g_bands'" "$profile_name" "85" - log_message "Changing SA NR5G bands from '$current_sa_nr5g_bands' to '$sa_nr5g_bands'" "info" - - # Convert comma-separated to colon-separated for AT command - local bands_formatted=$(echo "$sa_nr5g_bands" | tr ',' ':') - local sa_cmd="AT+QNWPREFCFG=\"nr5g_band\",$bands_formatted" - local output=$(execute_at_command "$sa_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - log_message "SA NR5G bands changed successfully to $sa_nr5g_bands" "info" - update_track "applying" "SA NR5G bands set successfully" "$profile_name" "90" - else - log_message "Failed to change SA NR5G bands to $sa_nr5g_bands" "error" - update_track "applying" "Failed to set SA NR5G bands, continuing" "$profile_name" "85" - fi - fi - - # Apply TTL change if needed - if [ $needs_ttl_change -eq 1 ] && [ $apply_success -eq 1 ]; then - apply_ttl_settings "$ttl" "$current_ttl" "$token_id" "$profile_name" - if [ $? -eq 0 ]; then - changes_made=1 - log_message "TTL settings applied successfully" "info" - fi - fi - - # Apply IMEI change (requires reboot) - if [ $needs_imei_change -eq 1 ] && [ $apply_success -eq 1 ] && [ -n "$imei" ]; then - update_track "applying" "Setting IMEI from '$current_imei' to '$imei'" "$profile_name" "95" - log_message "Changing IMEI from '$current_imei' to '$imei'" "info" - - local imei_cmd="AT+EGMR=1,7,\"$imei\"" - local output=$(execute_at_command "$imei_cmd" 10 "$token_id") - - if [ $? -eq 0 ]; then - changes_made=1 - requires_reboot=1 - log_message "IMEI changed successfully to $imei (device will reboot)" "info" - update_track "rebooting" "IMEI changed, device will reboot" "$profile_name" "95" - else - log_message "Failed to change IMEI to $imei" "error" - update_track "applying" "Failed to set IMEI, continuing" "$profile_name" "90" - requires_reboot=0 - fi - fi - - # Release token - release_token "$token_id" - - # Mark profile as applied if changes were made - if [ $changes_made -eq 1 ]; then - mark_profile_applied "$iccid" "$profile_name" - fi - - # If IMEI was changed, need to reboot - if [ $requires_reboot -eq 1 ]; then - log_message "IMEI change requires reboot, scheduling reboot..." "info" - update_track "rebooting" "Device is rebooting to apply IMEI change" "$profile_name" "100" - sleep 2 - reboot & - return 0 - fi - - # Force network reset if changes were made but no reboot required - if [ $changes_made -eq 1 ] && [ $requires_reboot -eq 0 ]; then - log_message "Changes applied, resetting network connection to apply changes" "info" - update_track "applying" "Resetting network connection" "$profile_name" "95" - - # Get a new token for network reset - token_id=$(acquire_token) - if [ -n "$token_id" ]; then - # Force PDP context reconnection - note: errors here are common and non-fatal - log_message "Forcing network reconnection" "info" - execute_at_command "AT+COPS=2" 5 "$token_id" || true - sleep 2 - execute_at_command "AT+COPS=0" 5 "$token_id" || true - sleep 1 - - # Release token - release_token "$token_id" - fi - fi - - # Check if any changes were made - if [ $changes_made -eq 0 ]; then - log_message "Profile '$profile_name' already applied correctly, no changes needed" "info" - update_track "success" "Profile already correctly applied" "$profile_name" "100" - else - log_message "Successfully applied profile '$profile_name'" "info" - update_track "success" "Profile applied successfully" "$profile_name" "100" - fi - - return 0 -} - -# Check profile function with updated SA/NSA bands and TTL support -check_profile() { - local forced="${1:-0}" - - log_message "Performing profile check (forced=$forced)" "info" - - # Get all modem data at once with a single token - local modem_data="" - modem_data=$(fetch_modem_data) - if [ $? -ne 0 ]; then - log_message "Failed to fetch modem data, will retry later" "error" - update_track "error" "Could not communicate with modem. Will retry later." "unknown" "0" - return 1 - fi - - # Extract ICCID from modem data - local current_iccid="" - current_iccid=$(extract_iccid "$modem_data") - if [ $? -ne 0 ]; then - log_message "Failed to extract ICCID from modem data, will retry later" "error" - update_track "error" "Could not detect SIM card. Please check that a SIM is inserted." "unknown" "0" - return 1 - fi - - log_message "Current ICCID: $current_iccid" "info" - - # Find profile for current ICCID - local profile_index="" - profile_index=$(find_profile_by_iccid "$current_iccid") - local profile_result=$? - - # CRITICAL FIX: Early return if no profile is found - if [ $profile_result -ne 0 ]; then - log_message "No profile found for ICCID $current_iccid, nothing to apply" "info" - update_track "idle" "No profile exists for current SIM card. Create a profile to configure network settings." "$current_iccid" "0" - return 0 - fi - - # Only continue if we found a valid profile - log_message "Found valid profile index: $profile_index" "debug" - - # Get profile details - local profile_name=$(uci -q get quecprofiles.$profile_index.name) - local network_type=$(uci -q get quecprofiles.$profile_index.network_type) - local lte_bands=$(uci -q get quecprofiles.$profile_index.lte_bands) - local sa_nr5g_bands=$(uci -q get quecprofiles.$profile_index.sa_nr5g_bands) - local nsa_nr5g_bands=$(uci -q get quecprofiles.$profile_index.nsa_nr5g_bands) - local apn=$(uci -q get quecprofiles.$profile_index.apn) - local pdp_type=$(uci -q get quecprofiles.$profile_index.pdp_type) - local imei=$(uci -q get quecprofiles.$profile_index.imei) - local ttl=$(uci -q get quecprofiles.$profile_index.ttl) - - # Default pdp_type to "IP" if not specified - pdp_type="${pdp_type:-IP}" - # Default TTL to 0 (disabled) if not specified - ttl="${ttl:-0}" - - # For backward compatibility - check if old nr5g_bands exists but new fields don't - local nr5g_bands=$(uci -q get quecprofiles.$profile_index.nr5g_bands) - if [ -n "$nr5g_bands" ] && [ -z "$sa_nr5g_bands" ] && [ -z "$nsa_nr5g_bands" ]; then - sa_nr5g_bands=$nr5g_bands - nsa_nr5g_bands=$nr5g_bands - log_message "Migrating legacy nr5g_bands for profile $profile_name" "info" - fi - - log_message "Found profile: $profile_name for ICCID: $current_iccid" "info" - log_message "Profile settings: network_type=$network_type, lte_bands=$lte_bands, sa_nr5g_bands=$sa_nr5g_bands, nsa_nr5g_bands=$nsa_nr5g_bands, apn=$apn, pdp_type=$pdp_type, imei=$imei, ttl=$ttl" "info" - - # Check if APN is configured - it's the minimum required setting - if [ -z "$apn" ]; then - log_message "Profile has no APN configured, cannot apply" "error" - update_track "error" "Profile \"$profile_name\" is missing the required APN setting. Please edit the profile and add an APN." "$profile_name" "0" - return 1 - fi - - # Check if profile is already applied (unless forced) - if [ "$forced" != "1" ] && is_profile_applied "$current_iccid" "$profile_name"; then - log_message "Profile '$profile_name' is already applied, skipping" "info" - update_track "success" "Profile already applied (from flag)" "$profile_name" "100" - return 0 - fi - - # Apply profile if forced or if autoswitch is enabled - local enable_autoswitch - enable_autoswitch=$(uci -q get quecprofiles.settings.enable_autoswitch) - enable_autoswitch="${enable_autoswitch:-1}" # Default to enabled - - if [ "$forced" = "1" ] || [ "$enable_autoswitch" = "1" ]; then - log_message "Applying profile settings..." "info" - update_track "applying" "Applying profile settings" "$profile_name" "10" - - # Extract current modem settings for comparison - local current_apn="" - local current_mode="" - local current_lte_bands="" - local current_sa_nr5g_bands="" - local current_nsa_nr5g_bands="" - local current_imei="" - - current_apn=$(extract_apn "$modem_data") - current_mode=$(extract_network_mode "$modem_data") - current_lte_bands=$(extract_lte_bands "$modem_data") - current_sa_nr5g_bands=$(extract_nr5g_bands "$modem_data" "sa") - current_nsa_nr5g_bands=$(extract_nr5g_bands "$modem_data" "nsa") - current_imei=$(extract_imei "$modem_data") - - # Apply profile settings with the new parameters - apply_profile_settings "$profile_name" "$network_type" "$lte_bands" "$sa_nr5g_bands" "$nsa_nr5g_bands" \ - "$apn" "$pdp_type" "$imei" "$ttl" "$current_apn" "$current_mode" "$current_lte_bands" \ - "$current_sa_nr5g_bands" "$current_nsa_nr5g_bands" "$current_imei" "$current_iccid" - return $? - else - log_message "Automatic profile switching is disabled, not applying profile" "info" - update_track "idle" "Automatic profile switching is disabled" "$profile_name" "0" - return 0 - fi -} - -# Main function -main() { - log_message "QuecProfiles daemon starting with SA/NSA NR5G and TTL support (PID: $$)" "info" - - # Clear status files at startup - rm -f "$TRACK_FILE" "$CHECK_TRIGGER" - update_track "idle" "Daemon started" "none" "0" - - # Get check interval from UCI - local check_interval - check_interval=$(uci -q get quecprofiles.settings.check_interval) - check_interval="${check_interval:-$DEFAULT_CHECK_INTERVAL}" - - # Check autoswitch setting - local enable_autoswitch - enable_autoswitch=$(uci -q get quecprofiles.settings.enable_autoswitch) - enable_autoswitch="${enable_autoswitch:-1}" # Default to enabled - - log_message "Daemon configured with check_interval=$check_interval seconds, enable_autoswitch=$enable_autoswitch" "info" - - # Add a startup delay - log_message "Waiting 10 seconds before initial check..." "info" - sleep 10 - - # Main loop - while true; do - # Check if there's a manual check request - if [ -f "$CHECK_TRIGGER" ]; then - log_message "Manual check triggered" "info" - rm -f "$CHECK_TRIGGER" - check_profile 1 # Forced check - elif [ "$enable_autoswitch" -eq 1 ]; then - # Perform regular check - check_profile 0 # Regular check - else - log_message "Automatic profile switching is disabled" "info" - update_track "idle" "Automatic profile switching is disabled" "none" "0" - fi - - # Sleep for the check interval - log_message "Sleeping for $check_interval seconds" "info" - - # Break the sleep into smaller intervals to check for triggers - sleep_counter=0 - while [ $sleep_counter -lt $check_interval ]; do - sleep 5 - sleep_counter=$((sleep_counter + 5)) - - # Check for manual trigger during sleep - if [ -f "$CHECK_TRIGGER" ]; then - log_message "Manual check triggered during sleep" "info" - break - fi - done - done -} - -# Set up trap handlers for clean shutdown -trap 'log_message "Received SIGTERM, exiting"; update_track "idle" "Daemon stopped" "none" "0"; exit 0' TERM -trap 'log_message "Received SIGINT, exiting"; update_track "idle" "Daemon stopped" "none" "0"; exit 0' INT - -# Start the main function -main \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecwatch.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecwatch.sh deleted file mode 100755 index da3c43f..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/quecwatch.sh +++ /dev/null @@ -1,544 +0,0 @@ -#!/bin/sh - -# QuecWatch Daemon -# Monitors cellular connectivity and performs recovery actions - -# Load UCI configuration functions -. /lib/functions.sh - -# Configuration -QUEUE_DIR="/tmp/at_queue" -TOKEN_FILE="$QUEUE_DIR/token" -LOG_DIR="/tmp/log/quecwatch" -LOG_FILE="$LOG_DIR/quecwatch.log" -PID_FILE="/var/run/quecwatch.pid" -STATUS_FILE="/tmp/quecwatch_status.json" -RETRY_COUNT_FILE="/tmp/quecwatch_retry_count" -UCI_CONFIG="quecmanager" -MAX_TOKEN_WAIT=10 # Maximum seconds to wait for token acquisition -TOKEN_PRIORITY=15 # Medium priority (between profiles and metrics) - -# Ensure directories exist -mkdir -p "$LOG_DIR" "$QUEUE_DIR" - -# Store PID -echo "$$" > "$PID_FILE" -chmod 644 "$PID_FILE" - -# Function to log messages -log_message() { - local level="${2:-info}" - local message="$1" - local timestamp=$(date "+%Y-%m-%d %H:%M:%S") - - # Log to file - echo "[$timestamp] [$level] $message" >> "$LOG_FILE" - - # Log to system log - logger -t quecwatch -p "daemon.$level" "$message" -} - -# Function to update status -update_status() { - local status="$1" - local message="$2" - local retry="${3:-$CURRENT_RETRIES}" - local max="${4:-$MAX_RETRIES}" - - # Create JSON status - cat > "$STATUS_FILE" </dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - log_message "Found expired token from $current_holder, removing" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Check if the token is held by a QuecProfile or cell scan - if echo "$current_holder" | grep -q "CELL_SCAN"; then - log_message "Token held by cell scan (priority: $current_priority), waiting..." "debug" - elif echo "$current_holder" | grep -q "QUECPROFILES"; then - log_message "Token held by profile application (priority: $current_priority), waiting..." "debug" - else - log_message "Token held by $current_holder with priority $current_priority, retrying..." "debug" - fi - - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$requestor_id\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$requestor_id" ]; then - log_message "Successfully acquired token with ID $requestor_id" "debug" - echo "$requestor_id" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Function to release token -release_token() { - local requestor_id="$1" - - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$requestor_id" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - log_message "Released token $requestor_id" "debug" - return 0 - fi - log_message "Token held by $current_holder, not by us ($requestor_id)" "warn" - else - log_message "Token file doesn't exist, nothing to release" "debug" - fi - return 1 -} - -# Function to execute AT command with token -execute_at_command() { - local cmd="$1" - local timeout="${2:-5}" - local token_id="$3" - - if [ -z "$token_id" ]; then - log_message "No valid token provided for command: $cmd" "error" - return 1 - fi - - log_message "Executing AT command: $cmd (timeout: ${timeout}s)" "debug" - - # Execute the command with proper timeout - local output - local status=1 - - output=$(sms_tool at "$cmd" -t "$timeout" 2>&1) - status=$? - - if [ $status -ne 0 ]; then - log_message "AT command failed: $cmd (exit code: $status)" "error" - return 1 - fi - - echo "$output" - return 0 -} - -# Function to check internet connectivity -check_internet() { - local ping_target - local ping_count=3 - - # Get ping target from UCI - config_load "$UCI_CONFIG" - config_get ping_target quecwatch ping_target - - if [ -z "$ping_target" ]; then - log_message "No ping target configured" "error" - return 1 - fi - - log_message "Checking internet connectivity to $ping_target" "debug" - - if ping -c $ping_count "$ping_target" > /dev/null 2>&1; then - log_message "Internet connectivity check successful" "debug" - return 0 - else - log_message "Internet connectivity check failed" "warn" - return 1 - fi -} - -# Function to get current SIM slot -get_current_sim() { - local token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for SIM slot check" "error" - return 1 - fi - - log_message "Checking current SIM slot" "debug" - - local result=$(execute_at_command "AT+QUIMSLOT?" 5 "$token_id") - local status=$? - - # Release token - release_token "$token_id" - - if [ $status -eq 0 ] && [ -n "$result" ]; then - # Extract SIM slot number from response - local current_sim=$(echo "$result" | grep -o '+QUIMSLOT: [0-9]' | cut -d' ' -f2) - - if [ -n "$current_sim" ]; then - log_message "Current SIM slot: $current_sim" "debug" - echo "$current_sim" - return 0 - fi - fi - - log_message "Failed to get current SIM slot" "error" - return 1 -} - -# Function to switch SIM card -switch_sim_card() { - local current_sim - local target_sim - local token_id - - log_message "Starting SIM card switch operation" "info" - - # Get current SIM slot - current_sim=$(get_current_sim) - if [ $? -ne 0 ]; then - log_message "Failed to get current SIM slot, cannot switch" "error" - return 1 - fi - - # Determine target SIM - if [ "$current_sim" = "1" ]; then - target_sim=2 - else - target_sim=1 - fi - - log_message "Attempting to switch from SIM $current_sim to SIM $target_sim" "info" - - # Get token for AT commands - token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for SIM switch" "error" - return 1 - fi - - # Detach from network - log_message "Detaching from network" "debug" - execute_at_command "AT+COPS=2" 10 "$token_id" - sleep 2 - - # Switch SIM slot - log_message "Switching to SIM slot $target_sim" "debug" - local switch_result=$(execute_at_command "AT+QUIMSLOT=$target_sim" 10 "$token_id") - local switch_status=$? - - # If switch failed, return error - if [ $switch_status -ne 0 ]; then - log_message "Failed to switch to SIM $target_sim" "error" - release_token "$token_id" - return 1 - fi - - sleep 5 - - # Reattach to network - log_message "Reattaching to network" "debug" - execute_at_command "AT+COPS=0" 10 "$token_id" - - # Release token - release_token "$token_id" - - # Verify switch - sleep 10 - local new_sim=$(get_current_sim) - if [ "$new_sim" = "$target_sim" ]; then - log_message "Successfully switched to SIM $target_sim" "info" - return 0 - else - log_message "Failed to verify SIM switch, current SIM is $new_sim" "error" - return 1 - fi -} - -# Function to perform connection recovery -perform_connection_recovery() { - local token_id - - log_message "Starting connection recovery" "info" - - # Get token for AT commands - token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for connection recovery" "error" - return 1 - fi - - # Detach from network - log_message "Detaching from network" "debug" - execute_at_command "AT+COPS=2" 10 "$token_id" - sleep 2 - - # Reattach to network - log_message "Reattaching to network" "debug" - execute_at_command "AT+COPS=0" 15 "$token_id" - - # Release token - release_token "$token_id" - - # Verify recovery - sleep 10 - if check_internet; then - log_message "Connection recovery successful" "info" - return 0 - else - log_message "Connection recovery failed" "error" - return 1 - fi -} - -# Load configuration -load_config() { - # Initialize variables - PING_TARGET="" - PING_INTERVAL=60 - PING_FAILURES=3 - MAX_RETRIES=5 - CURRENT_RETRIES=0 - CONNECTION_REFRESH=0 - REFRESH_COUNT=3 - AUTO_SIM_FAILOVER=0 - SIM_FAILOVER_SCHEDULE=0 - - # Load from UCI - config_load "$UCI_CONFIG" - - # Get settings with defaults - config_get PING_TARGET quecwatch ping_target - config_get PING_INTERVAL quecwatch ping_interval 60 - config_get PING_FAILURES quecwatch ping_failures 3 - config_get MAX_RETRIES quecwatch max_retries 5 - config_get CURRENT_RETRIES quecwatch current_retries 0 - config_get_bool CONNECTION_REFRESH quecwatch connection_refresh 0 - config_get REFRESH_COUNT quecwatch refresh_count 3 - config_get_bool AUTO_SIM_FAILOVER quecwatch auto_sim_failover 0 - config_get SIM_FAILOVER_SCHEDULE quecwatch sim_failover_schedule 0 - - # Validate required settings - if [ -z "$PING_TARGET" ]; then - log_message "No ping target configured, using default (8.8.8.8)" "warn" - PING_TARGET="8.8.8.8" - uci set "$UCI_CONFIG.quecwatch.ping_target=$PING_TARGET" - uci commit "$UCI_CONFIG" - fi - - # Load persisted retry count if available - if [ -f "$RETRY_COUNT_FILE" ]; then - CURRENT_RETRIES=$(cat "$RETRY_COUNT_FILE") - fi - - log_message "Configuration loaded: ping_target=$PING_TARGET, interval=$PING_INTERVAL, failures=$PING_FAILURES, max_retries=$MAX_RETRIES, current_retries=$CURRENT_RETRIES" "info" -} - -# Save retry count to both UCI and file -save_retry_count() { - local count=$1 - - # Update UCI - uci set "$UCI_CONFIG.quecwatch.current_retries=$count" - uci commit "$UCI_CONFIG" - - # Update file for crash recovery - echo "$count" > "$RETRY_COUNT_FILE" - chmod 644 "$RETRY_COUNT_FILE" - - log_message "Updated retry count to $count" "debug" -} - -# Main monitoring function -main() { - log_message "QuecWatch daemon starting (PID: $$)" "info" - - # Load configuration - load_config - - # Initial status update - update_status "active" "Monitoring started" - - # Track consecutive failures - local failure_count=0 - - # For scheduled SIM failover - local sim_failover_interval=0 - local initial_sim="" - - # If auto SIM failover is enabled, store initial SIM slot - if [ "$AUTO_SIM_FAILOVER" -eq 1 ]; then - initial_sim=$(get_current_sim) - if [ -n "$initial_sim" ]; then - log_message "Auto SIM failover enabled, initial SIM slot: $initial_sim" "info" - fi - fi - - # Main monitoring loop - while true; do - log_message "Starting monitoring cycle" "debug" - - # Check internet connectivity - if ! check_internet; then - failure_count=$((failure_count + 1)) - log_message "Connectivity check failed ($failure_count/$PING_FAILURES)" "warn" - - # Update status - update_status "warning" "Connection check failed: $failure_count/$PING_FAILURES failures" - - # Check if failure threshold is reached - if [ $failure_count -ge $PING_FAILURES ]; then - # Reset failure counter - failure_count=0 - - # Increment retry counter - CURRENT_RETRIES=$((CURRENT_RETRIES + 1)) - save_retry_count $CURRENT_RETRIES - - log_message "Failure threshold reached. Current retry: $CURRENT_RETRIES/$MAX_RETRIES" "warn" - update_status "error" "Connection lost, attempt $CURRENT_RETRIES/$MAX_RETRIES to recover" - - # Check if max retries reached - if [ $CURRENT_RETRIES -ge $MAX_RETRIES ]; then - log_message "Maximum retries reached" "error" - - # Try SIM failover if enabled - if [ "$AUTO_SIM_FAILOVER" -eq 1 ]; then - log_message "Attempting SIM failover" "info" - update_status "failover" "Maximum retries reached, attempting SIM failover" - - if switch_sim_card && check_internet; then - log_message "SIM failover successful, connection restored" "info" - update_status "recovered" "Connection restored via SIM failover" - - # Reset retry counter - CURRENT_RETRIES=0 - save_retry_count $CURRENT_RETRIES - else - log_message "SIM failover failed, system will reboot" "error" - update_status "rebooting" "SIM failover failed, system will reboot" - - # Wait briefly and reboot - sleep 5 - reboot - fi - else - log_message "Auto SIM failover disabled, system will reboot" "error" - update_status "rebooting" "Maximum retries reached, system will reboot" - - # Wait briefly and reboot - sleep 5 - reboot - fi - else - # Try connection recovery - log_message "Attempting connection recovery" "info" - update_status "recovering" "Attempting to restore connection" - - if perform_connection_recovery; then - log_message "Connection recovery successful" "info" - update_status "recovered" "Connection restored" - - # Reset retry counter - CURRENT_RETRIES=0 - save_retry_count $CURRENT_RETRIES - fi - fi - fi - else - # Connection is good - if [ $failure_count -gt 0 ] || [ $CURRENT_RETRIES -gt 0 ]; then - log_message "Connection restored" "info" - update_status "stable" "Connection restored" - - # Reset counters - failure_count=0 - CURRENT_RETRIES=0 - save_retry_count $CURRENT_RETRIES - fi - - # Scheduled SIM failover check - if [ "$AUTO_SIM_FAILOVER" -eq 1 ] && [ "$SIM_FAILOVER_SCHEDULE" -gt 0 ] && [ -n "$initial_sim" ]; then - # Get current SIM to check if we're on the backup - local current_sim=$(get_current_sim) - - # If we're on backup SIM, check if it's time to try primary again - if [ -n "$current_sim" ] && [ "$current_sim" != "$initial_sim" ]; then - sim_failover_interval=$((sim_failover_interval + 1)) - - # Check if we've reached the scheduled time - if [ $((sim_failover_interval * PING_INTERVAL)) -ge $((SIM_FAILOVER_SCHEDULE * 60)) ]; then - log_message "Scheduled check: attempting to switch back to primary SIM $initial_sim" "info" - update_status "switchback" "Attempting to switch back to primary SIM" - - # Try switching back - if switch_sim_card && check_internet; then - log_message "Successfully switched back to primary SIM" "info" - update_status "stable" "Successfully switched back to primary SIM" - else - log_message "Failed to switch back to primary SIM, staying on backup" "warn" - update_status "stable" "Staying on backup SIM - primary SIM check failed" - - # Switch back to backup SIM - current_sim=$(get_current_sim) - if [ -n "$current_sim" ] && [ "$current_sim" = "$initial_sim" ]; then - switch_sim_card - fi - fi - - # Reset failover interval - sim_failover_interval=0 - fi - fi - fi - fi - - # Sleep for the configured interval - sleep $PING_INTERVAL - done -} - -# Set up trap for clean shutdown -trap 'log_message "Received signal, exiting" "info"; update_status "stopped" "Daemon stopped"; rm -f "$PID_FILE"; exit 0' INT TERM - -# Start the main function -main \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/scheduled_cell_locking.sh b/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/scheduled_cell_locking.sh deleted file mode 100755 index d08175c..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/cgi-bin/services/scheduled_cell_locking.sh +++ /dev/null @@ -1,429 +0,0 @@ -#!/bin/sh - -# Cell Lock Scheduler Daemon -# Monitors schedule and applies/restores cell locks as needed - -# Load UCI configuration functions -. /lib/functions.sh - -# Configuration -QUEUE_DIR="/tmp/at_queue" -TOKEN_FILE="$QUEUE_DIR/token" -LOG_DIR="/tmp/log/cell_lock" -LOG_FILE="$LOG_DIR/cell_lock.log" -PID_FILE="/var/run/cell_lock_scheduler.pid" -STATUS_FILE="/tmp/cell_lock_status.json" -UCI_CONFIG="quecmanager" -CHECK_INTERVAL=60 # Check schedule every minute -MAX_TOKEN_WAIT=15 # Maximum seconds to wait for token acquisition -TOKEN_PRIORITY=5 # Higher priority than QuecWatch (which is 15) - -# Ensure directories exist -mkdir -p "$LOG_DIR" "$QUEUE_DIR" - -# Store PID -echo "$$" > "$PID_FILE" -chmod 644 "$PID_FILE" - -# Function to log messages -log_message() { - local level="${2:-info}" - local message="$1" - local timestamp=$(date "+%Y-%m-%d %H:%M:%S") - - # Log to file - echo "[$timestamp] [$level] $message" >> "$LOG_FILE" - - # Log to system log - logger -t cell_lock -p "daemon.$level" "$message" -} - -# Function to update status -update_status() { - local status="$1" - local message="$2" - local active="${3:-0}" - local locked="${4:-0}" - - # Create JSON status - cat > "$STATUS_FILE" </dev/null) - local current_priority=$(cat "$TOKEN_FILE" | jsonfilter -e '@.priority' 2>/dev/null) - local timestamp=$(cat "$TOKEN_FILE" | jsonfilter -e '@.timestamp' 2>/dev/null) - local current_time=$(date +%s) - - # Check for expired token (> 30 seconds old) - if [ $((current_time - timestamp)) -gt 30 ] || [ -z "$current_holder" ]; then - # Remove expired token - log_message "Found expired token from $current_holder, removing" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - elif [ $priority -lt $current_priority ]; then - # Preempt lower priority token - log_message "Preempting token from $current_holder (priority: $current_priority)" "debug" - rm -f "$TOKEN_FILE" 2>/dev/null - else - # Check if the token is held by a cell scan - if echo "$current_holder" | grep -q "CELL_SCAN"; then - log_message "Token held by cell scan (priority: $current_priority), waiting..." "debug" - else - log_message "Token held by $current_holder with priority $current_priority, retrying..." "debug" - fi - - sleep 0.5 - attempt=$((attempt + 1)) - continue - fi - fi - - # Try to create token file - echo "{\"id\":\"$requestor_id\",\"priority\":$priority,\"timestamp\":$(date +%s)}" > "$TOKEN_FILE" 2>/dev/null - chmod 644 "$TOKEN_FILE" 2>/dev/null - - # Verify we got the token - local holder=$(cat "$TOKEN_FILE" 2>/dev/null | jsonfilter -e '@.id' 2>/dev/null) - if [ "$holder" = "$requestor_id" ]; then - log_message "Successfully acquired token with ID $requestor_id" "debug" - echo "$requestor_id" - return 0 - fi - - sleep 0.5 - attempt=$((attempt + 1)) - done - - log_message "Failed to acquire token after $max_attempts attempts" "error" - return 1 -} - -# Function to release token -release_token() { - local requestor_id="$1" - - if [ -f "$TOKEN_FILE" ]; then - local current_holder=$(cat "$TOKEN_FILE" | jsonfilter -e '@.id' 2>/dev/null) - if [ "$current_holder" = "$requestor_id" ]; then - rm -f "$TOKEN_FILE" 2>/dev/null - log_message "Released token $requestor_id" "debug" - return 0 - fi - log_message "Token held by $current_holder, not by us ($requestor_id)" "warn" - else - log_message "Token file doesn't exist, nothing to release" "debug" - fi - return 1 -} - -# Function to execute AT command with token -execute_at_command() { - local cmd="$1" - local timeout="${2:-10}" - local token_id="$3" - - if [ -z "$token_id" ]; then - log_message "No valid token provided for command: $cmd" "error" - return 1 - fi - - log_message "Executing AT command: $cmd (timeout: ${timeout}s)" "debug" - - # Execute the command with proper timeout - local output - local status=1 - - output=$(sms_tool at "$cmd" -t "$timeout" 2>&1) - status=$? - - if [ $status -ne 0 ]; then - log_message "AT command failed: $cmd (exit code: $status)" "error" - return 1 - fi - - echo "$output" - return 0 -} - -# Function to check current lock status -check_lock_status() { - local token_id="$1" - - log_message "Checking current cell lock status" "debug" - - # Check LTE lock status - local lte_status=$(execute_at_command 'AT+QNWLOCK="common/4g"' 5 "$token_id") - local nr5g_status=$(execute_at_command 'AT+QNWLOCK="common/5g"' 5 "$token_id") - - # Check if any lock is active - if echo "$lte_status" | grep -q '"common/4g",0'; then - if echo "$nr5g_status" | grep -q '"common/5g",0'; then - log_message "No active cell locks detected" "debug" - return 1 - fi - fi - - log_message "Active cell locks detected" "debug" - return 0 -} - -# Function to get current lock parameters and save to UCI -store_current_lock_params() { - local token_id="$1" - - log_message "Storing current lock parameters" "debug" - - # Get LTE lock status - local lte_status=$(execute_at_command 'AT+QNWLOCK="common/4g"' 5 "$token_id") - if [ $? -eq 0 ]; then - # Extract parameters - local lte_params=$(echo "$lte_status" | grep -o '"common/4g",[^[:space:]]*' | cut -d',' -f2-) - - # Save to UCI - uci set "$UCI_CONFIG.cell_lock.lte_params='$lte_params'" - log_message "Stored LTE parameters: $lte_params" "debug" - fi - - # Get NR5G lock status - local nr5g_status=$(execute_at_command 'AT+QNWLOCK="common/5g"' 5 "$token_id") - if [ $? -eq 0 ]; then - # Extract parameters - local nr5g_params=$(echo "$nr5g_status" | grep -o '"common/5g",[^[:space:]]*' | cut -d',' -f2-) - - # Save to UCI - uci set "$UCI_CONFIG.cell_lock.nr5g_params='$nr5g_params'" - log_message "Stored NR5G parameters: $nr5g_params" "debug" - fi - - # Get persist settings - local persist_status=$(execute_at_command 'AT+QNWLOCK="save_ctrl"' 5 "$token_id") - if [ $? -eq 0 ]; then - # Extract parameters (LTE persist is at index 1, NR5G persist is at index 2) - local persist_params=$(echo "$persist_status" | grep -o '"save_ctrl",[^[:space:]]*' | cut -d',' -f2-) - local lte_persist=$(echo "$persist_params" | cut -d',' -f1) - local nr5g_persist=$(echo "$persist_params" | cut -d',' -f2) - - # Save to UCI - uci set "$UCI_CONFIG.cell_lock.lte_persist='$lte_persist'" - uci set "$UCI_CONFIG.cell_lock.nr5g_persist='$nr5g_persist'" - log_message "Stored persist settings: LTE=$lte_persist, NR5G=$nr5g_persist" "debug" - fi - - # Commit changes - uci commit "$UCI_CONFIG" - return 0 -} - -# Function to check if time is in range -is_time_in_range() { - local current_time_minutes=$1 - local start_time_minutes=$2 - local end_time_minutes=$3 - - # Handle case where end time is on the next day - if [ $end_time_minutes -lt $start_time_minutes ]; then - if [ $current_time_minutes -ge $start_time_minutes ] || [ $current_time_minutes -lt $end_time_minutes ]; then - return 0 - fi - else - if [ $current_time_minutes -ge $start_time_minutes ] && [ $current_time_minutes -lt $end_time_minutes ]; then - return 0 - fi - fi - - return 1 -} - -# Function to convert HH:MM to minutes -time_to_minutes() { - local time="$1" - local hours=$(echo "$time" | cut -d':' -f1) - local minutes=$(echo "$time" | cut -d':' -f2) - - echo $((hours * 60 + minutes)) -} - -# Function to check schedule and manage cell locks -check_schedule() { - local enabled - local start_time - local end_time - local current_active - - # Get current scheduler state from UCI - config_load "$UCI_CONFIG" - config_get_bool enabled cell_lock enabled 0 - - if [ "$enabled" -ne 1 ]; then - log_message "Cell lock scheduler is disabled" "debug" - update_status "disabled" "Scheduler is disabled" 0 0 - return 0 - fi - - # Get schedule from UCI - config_get start_time cell_lock start_time - config_get end_time cell_lock end_time - config_get current_active cell_lock active 0 - - if [ -z "$start_time" ] || [ -z "$end_time" ]; then - log_message "Missing start or end time in configuration" "error" - update_status "error" "Missing schedule configuration" 0 0 - return 1 - } - - # Get current time - local current_time=$(date "+%H:%M") - - # Convert times to minutes for comparison - local current_minutes=$(time_to_minutes "$current_time") - local start_minutes=$(time_to_minutes "$start_time") - local end_minutes=$(time_to_minutes "$end_time") - - # Get token for AT commands - local token_id=$(acquire_token) - if [ -z "$token_id" ]; then - log_message "Failed to acquire token for checking schedule" "error" - update_status "error" "Failed to acquire token for checking schedule" 0 0 - return 1 - } - - # Check if any cell lock is currently active - local lock_active=0 - check_lock_status "$token_id" && lock_active=1 - - # Check if current time is in the scheduled range - if is_time_in_range "$current_minutes" "$start_minutes" "$end_minutes"; then - # We're in the active window - if [ "$current_active" -ne 1 ]; then - # We just entered the window, need to save current state - log_message "Entering scheduled window" "info" - - # Store current lock parameters if a lock is active - if [ $lock_active -eq 1 ]; then - log_message "Storing current cell lock parameters" "info" - store_current_lock_params "$token_id" - else - log_message "No active cell locks to store" "info" - update_status "inactive" "Schedule active but no cell locks configured" 1 0 - release_token "$token_id" - return 0 - } - - # Update status - uci set "$UCI_CONFIG.cell_lock.active=1" - uci commit "$UCI_CONFIG" - update_status "active" "Cell lock scheduler is active" 1 $lock_active - else - update_status "active" "Cell lock scheduler is active" 1 $lock_active - } - else - # We're outside the active window - if [ "$current_active" -eq 1 ]; then - # We just exited the window - log_message "Exiting scheduled window" "info" - - # Update status - uci set "$UCI_CONFIG.cell_lock.active=0" - uci commit "$UCI_CONFIG" - update_status "inactive" "Outside scheduled hours" 0 $lock_active - } else { - update_status "inactive" "Outside scheduled hours" 0 $lock_active - } - fi - - # Release token - release_token "$token_id" - - return 0 -} - -# Main function -main() { - log_message "Cell lock scheduler daemon starting (PID: $$)" "info" - - # Ensure UCI section exists - if ! uci -q get "$UCI_CONFIG.cell_lock" >/dev/null; then - uci set "$UCI_CONFIG.cell_lock=scheduler" - uci set "$UCI_CONFIG.cell_lock.enabled=0" - uci set "$UCI_CONFIG.cell_lock.active=0" - uci commit "$UCI_CONFIG" - log_message "Created cell lock UCI configuration" "info" - fi - - # Initialize status - update_status "starting" "Cell lock scheduler daemon starting" 0 0 - - # Get token and check if any locks are active - local token_id=$(acquire_token) - if [ -n "$token_id" ]; then - local lock_active=0 - check_lock_status "$token_id" && lock_active=1 - release_token "$token_id" - - # Update status based on current state - local enabled=$(uci -q get "$UCI_CONFIG.cell_lock.enabled") - if [ "$enabled" = "1" ]; then - # Get schedule from UCI - local start_time=$(uci -q get "$UCI_CONFIG.cell_lock.start_time") - local end_time=$(uci -q get "$UCI_CONFIG.cell_lock.end_time") - - if [ -n "$start_time" ] && [ -n "$end_time" ]; then - # Check if we're currently in the schedule window - local current_time=$(date "+%H:%M") - local current_minutes=$(time_to_minutes "$current_time") - local start_minutes=$(time_to_minutes "$start_time") - local end_minutes=$(time_to_minutes "$end_time") - - if is_time_in_range "$current_minutes" "$start_minutes" "$end_minutes"; then - update_status "active" "Cell lock scheduler is active" 1 $lock_active - uci set "$UCI_CONFIG.cell_lock.active=1" - uci commit "$UCI_CONFIG" - } else { - update_status "inactive" "Cell lock scheduler is enabled but outside scheduled hours" 0 $lock_active - uci set "$UCI_CONFIG.cell_lock.active=0" - uci commit "$UCI_CONFIG" - } - } else { - update_status "error" "Missing schedule configuration" 0 $lock_active - } - } else { - update_status "disabled" "Cell lock scheduler is disabled" 0 $lock_active - } - } else { - log_message "Failed to acquire token for initial status check" "error" - } - - # Main monitoring loop - while true; do - check_schedule - sleep $CHECK_INTERVAL - done -} - -# Set up trap for clean shutdown -trap 'log_message "Received signal, exiting" "info"; update_status "stopped" "Daemon stopped" 0 0; rm -f "$PID_FILE"; exit 0' INT TERM - -# Start the main function -main \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.html index 3a92e78..437dcdb 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.html @@ -1 +1 @@ -QuecManager
            \ No newline at end of file +QuecManager
              \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.txt index 8743ced..9dc935d 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/about/index.txt @@ -7,13 +7,13 @@ 7:I[92907,[],"ClientSegmentRoot"] 8:I[96609,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/chunks/7780-d44d1f6d676771d4.js","8885","static/chunks/8885-1b9ab3cbb10cf437.js","7563","static/chunks/7563-33b7de2a93dcbe27.js","9464","static/chunks/9464-f5c3c85ad60907ac.js","9477","static/chunks/9477-215fa25b7251af44.js","6357","static/chunks/6357-9bebe3918fcef1e5.js","1976","static/chunks/1976-1b4abe798e14d132.js","4767","static/chunks/4767-88886265e4e59e78.js","1954","static/chunks/app/dashboard/layout-f75cf0913690a50a.js"],"default"] a:I[5329,[],"ClientPageRoot"] -b:I[51228,["7780","static/chunks/7780-d44d1f6d676771d4.js","9679","static/chunks/9679-e42f7aaecc29c6da.js","6655","static/chunks/app/dashboard/about/page-1f3a1d3da213686b.js"],"default"] +b:I[51228,["7780","static/chunks/7780-d44d1f6d676771d4.js","9679","static/chunks/9679-e42f7aaecc29c6da.js","6655","static/chunks/app/dashboard/about/page-5431674c006b4771.js"],"default"] e:I[99165,[],"OutletBoundary"] 10:I[99165,[],"MetadataBoundary"] 12:I[99165,[],"ViewportBoundary"] 14:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","about",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["about",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["about",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","about","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":"$Lf"}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","m-_o3e5PnDMLoACkl0m7O",{"children":[["$","$L10",null,{"children":"$L11"}],["$","$L12",null,{"children":"$L13"}],null]}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","about",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["about",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["about",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","about","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":"$Lf"}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","PDmVS6HziR7larkvRPv3o",{"children":[["$","$L10",null,{"children":"$L11"}],["$","$L12",null,{"children":"$L13"}],null]}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} 9:{} c:{} d:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.html index 12e62d7..cc6e5bb 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.html @@ -1 +1 @@ -QuecManager
                \ No newline at end of file +QuecManager
                  \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.txt index e1a3749..368f729 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/at-terminal/index.txt @@ -8,13 +8,13 @@ 8:I[96609,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/chunks/7780-d44d1f6d676771d4.js","8885","static/chunks/8885-1b9ab3cbb10cf437.js","7563","static/chunks/7563-33b7de2a93dcbe27.js","9464","static/chunks/9464-f5c3c85ad60907ac.js","9477","static/chunks/9477-215fa25b7251af44.js","6357","static/chunks/6357-9bebe3918fcef1e5.js","1976","static/chunks/1976-1b4abe798e14d132.js","4767","static/chunks/4767-88886265e4e59e78.js","1954","static/chunks/app/dashboard/layout-f75cf0913690a50a.js"],"default"] a:I[74627,["9477","static/chunks/9477-215fa25b7251af44.js","4277","static/chunks/app/dashboard/advanced-settings/layout-e0d745ff6aef0894.js"],"default"] c:I[5329,[],"ClientPageRoot"] -d:I[92040,["7780","static/chunks/7780-d44d1f6d676771d4.js","8885","static/chunks/8885-1b9ab3cbb10cf437.js","9464","static/chunks/9464-f5c3c85ad60907ac.js","6357","static/chunks/6357-9bebe3918fcef1e5.js","9679","static/chunks/9679-e42f7aaecc29c6da.js","8757","static/chunks/app/dashboard/advanced-settings/at-terminal/page-1bb7b7081b0d04a2.js"],"default"] +d:I[92040,["7780","static/chunks/7780-d44d1f6d676771d4.js","8885","static/chunks/8885-1b9ab3cbb10cf437.js","9464","static/chunks/9464-f5c3c85ad60907ac.js","6357","static/chunks/6357-9bebe3918fcef1e5.js","9679","static/chunks/9679-e42f7aaecc29c6da.js","8757","static/chunks/app/dashboard/advanced-settings/at-terminal/page-32774eecfd12c3bb.js"],"default"] 10:I[99165,[],"OutletBoundary"] 12:I[99165,[],"MetadataBoundary"] 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","advanced-settings","at-terminal",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["at-terminal",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["at-terminal",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","at-terminal","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","W_2IpmeYkw0A8UHYcirYq",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","advanced-settings","at-terminal",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["at-terminal",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["at-terminal",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","at-terminal","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","VDGZ0deBrkXF01PhXLIoT",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.html index 908ebe9..6badfac 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.html @@ -1 +1 @@ -QuecManager
                    \ No newline at end of file +QuecManager
                      \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.txt index ae95dc4..b46db51 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/connectivity/index.txt @@ -14,7 +14,7 @@ d:I[39966,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","advanced-settings","connectivity",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["connectivity",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["connectivity",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","connectivity","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","QtzBo-coT87OdgaC_tm9C",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","advanced-settings","connectivity",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["connectivity",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["connectivity",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","connectivity","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","JVBLkkDalNvp2INolIu45",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.html index 3ab4cb3..485a961 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.html @@ -1 +1 @@ -QuecManager
                        \ No newline at end of file +QuecManager
                          \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.txt index 180bf7c..25840cf 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/mtu/index.txt @@ -14,7 +14,7 @@ d:I[34819,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","advanced-settings","mtu",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["mtu",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["mtu",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","mtu","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","kB6NL3lOaPHFFVC0ef4_c",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","advanced-settings","mtu",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["mtu",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["mtu",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","mtu","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","fHrmeuzrdoAg_xVcXUsJ6",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.html index 4bb552e..59688bd 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.html @@ -1 +1 @@ -QuecManager
                            \ No newline at end of file +QuecManager
                              \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.txt index dfecd41..7ecd471 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/advanced-settings/ttl-settings/index.txt @@ -14,7 +14,7 @@ d:I[83143,["7780","static/chunks/7780-d44d1f6d676771d4.js","1630","static/chunks 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","advanced-settings","ttl-settings",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["ttl-settings",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["ttl-settings",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","ttl-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","XWyfrWb4Ak5-fdau1xMuM",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","advanced-settings","ttl-settings",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["advanced-settings",{"children":["ttl-settings",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["advanced-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["ttl-settings",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","advanced-settings","children","ttl-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","fk1QdtZPaf1xO4zszFYO1",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.html index ae06816..85c103c 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.html @@ -1 +1 @@ -QuecManager
                                \ No newline at end of file +QuecManager
                                  \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.txt index 6367125..b42b0de 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/band-locking/index.txt @@ -14,7 +14,7 @@ d:I[75808,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","cell-settings","band-locking",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["band-locking",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["band-locking",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","band-locking","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","-knKQNAuMA9cGWfqgwjND",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","cell-settings","band-locking",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["band-locking",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["band-locking",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","band-locking","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","77yT73EgK64yUE3vu-zVO",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.html index 5ebb1da..d84a478 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.html @@ -1 +1 @@ -QuecManager
                                    \ No newline at end of file +QuecManager
                                      \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.txt index 00d6093..a9c794c 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/basic-settings/index.txt @@ -14,7 +14,7 @@ d:I[46142,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","cell-settings","basic-settings",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["basic-settings",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["basic-settings",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","basic-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","P14j90tJamtYieIntGbWZ",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","cell-settings","basic-settings",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["basic-settings",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["basic-settings",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","basic-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","AA7T8FeewAEYFVMTxB4SC",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.html index 6b8f811..84aa1f5 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.html @@ -1 +1 @@ -QuecManager
                                        \ No newline at end of file +QuecManager
                                          \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.txt index 9e792e9..18616ad 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/cell-locking/index.txt @@ -14,7 +14,7 @@ d:I[19496,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","cell-settings","cell-locking",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["cell-locking",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["cell-locking",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","cell-locking","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Gsrzqe8cu_FmLUz4ZnW0O",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","cell-settings","cell-locking",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["cell-locking",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["cell-locking",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","cell-locking","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Nm_EeSsLfFQqzyK5FQDz4",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.html index 539c574..358fb0b 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.html @@ -1 +1 @@ -QuecManager
                                            \ No newline at end of file +QuecManager
                                              \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.txt index ad98884..65ccb68 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/imei-mangling/index.txt @@ -14,7 +14,7 @@ d:I[70231,["7780","static/chunks/7780-d44d1f6d676771d4.js","8885","static/chunks 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","cell-settings","imei-mangling",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["imei-mangling",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["imei-mangling",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","imei-mangling","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Kb-HXAnUqSRxGRbX6f6vG",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","cell-settings","imei-mangling",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["imei-mangling",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["imei-mangling",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","imei-mangling","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","BFa-iowPTeQj-EL3aOjWN",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.html index 117593d..18d2b02 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.html @@ -1 +1 @@ -QuecManager
                                                \ No newline at end of file +QuecManager
                                                  \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.txt index d15d2b4..1430b80 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/cell-settings/sms/index.txt @@ -14,7 +14,7 @@ d:I[33776,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","cell-settings","sms",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["sms",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["sms",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","sms","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","XlGWzxp0TQgBQwYlZRmJx",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","cell-settings","sms",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["cell-settings",{"children":["sms",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["cell-settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["sms",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","cell-settings","children","sms","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","b6JqCd3SEToLUsxsrf6Mr",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.html index 0bb4a37..9be5f2d 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.html @@ -1 +1 @@ -QuecManager
                                                    \ No newline at end of file +QuecManager
                                                      \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.txt index f27d711..80bd3cf 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/cell-scanner/index.txt @@ -14,7 +14,7 @@ d:I[37277,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","2101","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","experimental","cell-scanner",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["cell-scanner",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["cell-scanner",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","cell-scanner","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","LBBZu3daLInU3f4Gk0dmb",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","experimental","cell-scanner",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["cell-scanner",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["cell-scanner",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","cell-scanner","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","p7Ofw1MxvEXuodTLwVYxu",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.html deleted file mode 100644 index acb8a28..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.html +++ /dev/null @@ -1 +0,0 @@ -QuecManager
                                                        \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.txt deleted file mode 100644 index 0fd8f71..0000000 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/index.txt +++ /dev/null @@ -1,20 +0,0 @@ -1:"$Sreact.fragment" -2:I[74347,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/chunks/7780-304b82dcfd6e5323.js","1617","static/chunks/1617-2875c5bbab102cf8.js","4673","static/chunks/4673-858d1306ab77aa0c.js","4623","static/chunks/4623-3adb8e9629e6d4f2.js","7177","static/chunks/app/layout-c2a293729c29972e.js"],"ThemeProvider"] -3:I[85014,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/chunks/7780-304b82dcfd6e5323.js","1617","static/chunks/1617-2875c5bbab102cf8.js","4673","static/chunks/4673-858d1306ab77aa0c.js","4623","static/chunks/4623-3adb8e9629e6d4f2.js","7177","static/chunks/app/layout-c2a293729c29972e.js"],"TooltipProvider"] -4:I[24900,[],""] -5:I[81570,[],""] -6:I[75276,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/chunks/7780-304b82dcfd6e5323.js","1617","static/chunks/1617-2875c5bbab102cf8.js","4673","static/chunks/4673-858d1306ab77aa0c.js","4623","static/chunks/4623-3adb8e9629e6d4f2.js","7177","static/chunks/app/layout-c2a293729c29972e.js"],"Toaster"] -7:I[92907,[],"ClientSegmentRoot"] -8:I[92646,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/chunks/7780-304b82dcfd6e5323.js","1617","static/chunks/1617-2875c5bbab102cf8.js","4673","static/chunks/4673-858d1306ab77aa0c.js","5011","static/chunks/5011-c111b606b30e72ad.js","9477","static/chunks/9477-215fa25b7251af44.js","1827","static/chunks/1827-82545ba38805ede6.js","9700","static/chunks/9700-86092c9639feaee7.js","1954","static/chunks/app/dashboard/layout-c44a86d95f813876.js"],"default"] -a:I[31753,["9477","static/chunks/9477-215fa25b7251af44.js","3075","static/chunks/app/dashboard/experimental/layout-3c6ab898e54410a1.js"],"default"] -c:I[99165,[],"OutletBoundary"] -e:I[99165,[],"MetadataBoundary"] -10:I[99165,[],"ViewportBoundary"] -12:I[25339,[],""] -:HL["/_next/static/css/1f29e3e90e8ebc37.css","style"] -0:{"P":null,"b":"6pIr6VWQMh91espZ7GkRd","p":"","c":["","dashboard","experimental",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1f29e3e90e8ebc37.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":" font-euclid antialiased","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","div",null,{"ref":"$undefined","className":"rounded-xl border bg-card text-card-foreground shadow","children":[["$","div",null,{"ref":"$undefined","className":"flex flex-col space-y-1.5 p-6","children":[["$","h3",null,{"ref":"$undefined","className":"font-semibold leading-none tracking-tight","children":"Experimental"}],["$","p",null,{"ref":"$undefined","className":"text-sm text-muted-foreground","children":"This is an experimental page."}]]}],["$","div",null,{"ref":"$undefined","className":"p-6 pt-0","children":["$","p",null,{"children":"Whoops! Theres nothing here yet..."}]}]]}],null,["$","$Lc",null,{"children":"$Ld"}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","d1X3OxLKa5NKvDhziFHXw",{"children":[["$","$Le",null,{"children":"$Lf"}],["$","$L10",null,{"children":"$L11"}],null]}]]}],false]],"m":"$undefined","G":["$12","$undefined"],"s":false,"S":true} -9:{} -b:{} -11:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -f:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"QuecManager"}],["$","meta","2",{"name":"description","content":"Simpleadmin but better!"}],["$","link","3",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]] -d:null diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.html index f7d001f..7e65cbe 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.html @@ -1 +1 @@ -QuecManager
                                                          \ No newline at end of file +QuecManager
                                                            \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.txt index b9726b3..d56bba1 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/keep-alive/index.txt @@ -14,7 +14,7 @@ d:I[53302,["7780","static/chunks/7780-d44d1f6d676771d4.js","3376","static/chunks 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","experimental","keep-alive",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["keep-alive",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["keep-alive",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","keep-alive","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","1-15QJKszC6P6miZRhBAK",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","experimental","keep-alive",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["keep-alive",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["keep-alive",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","keep-alive","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","OOWAhmNoS3sRq38zImsu_",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.html index 03e35f7..79bfad5 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.html @@ -1 +1 @@ -QuecManager
                                                              \ No newline at end of file +QuecManager
                                                                \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.txt index b1fe97b..bf6297c 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecprofiles/index.txt @@ -14,7 +14,7 @@ d:I[22256,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","experimental","quecprofiles",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["quecprofiles",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["quecprofiles",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","quecprofiles","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","EQtP_ofBSdxGqjHR9tpR8",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","experimental","quecprofiles",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["quecprofiles",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["quecprofiles",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","quecprofiles","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","P7GfnK2bGx2yx-1CNLnyG",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.html index 3cec3ba..b1052c4 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.html @@ -1 +1 @@ -QuecManager
                                                                  \ No newline at end of file +QuecManager
                                                                    \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.txt index e7580af..fa2ca49 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/experimental/quecwatch/index.txt @@ -14,7 +14,7 @@ d:I[79824,["9980","static/chunks/7b0cf0b7-aa73cc75e53c5793.js","7780","static/ch 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","experimental","quecwatch",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["quecwatch",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["quecwatch",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","quecwatch","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","nwsa3xLoksQ91HzCqVMPg",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","experimental","quecwatch",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["experimental",{"children":["quecwatch",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["experimental",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["quecwatch",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","experimental","children","quecwatch","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","oVHCrH25IkqMEt5TsihWR",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.html index a54ddfd..8a7b5a5 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.html @@ -1 +1 @@ -QuecManager
                                                                      \ No newline at end of file +QuecManager
                                                                        \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.txt index 1760619..8b7030f 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/home/index.txt @@ -13,7 +13,7 @@ e:I[99165,[],"OutletBoundary"] 12:I[99165,[],"ViewportBoundary"] 14:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","home",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["home",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["home",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","home","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":"$Lf"}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","I7dBwHkB8hLIK2-Iqxr9c",{"children":[["$","$L10",null,{"children":"$L11"}],["$","$L12",null,{"children":"$L13"}],null]}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","home",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["home",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["home",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","home","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":"$Lf"}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","9z6ENvpvDYeSVc0ZSEd76",{"children":[["$","$L10",null,{"children":"$L11"}],["$","$L12",null,{"children":"$L13"}],null]}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} 9:{} c:{} d:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.html index f552a15..e904afa 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.html @@ -1 +1 @@ -QuecManager
                                                                          \ No newline at end of file +QuecManager
                                                                            \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.txt index d88906a..5750fff 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/games/tetris/index.txt @@ -14,7 +14,7 @@ d:I[69835,["5293","static/chunks/app/dashboard/settings/games/tetris/page-e289ae 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","settings","games","tetris",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["settings",{"children":["games",{"children":["tetris",{"children":["__PAGE__",{}]}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["games",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children","games","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["tetris",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children","games","children","tetris","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","paSn1EEO3HF9gggAB8Lu-",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","settings","games","tetris",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["settings",{"children":["games",{"children":["tetris",{"children":["__PAGE__",{}]}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["games",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children","games","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["tetris",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children","games","children","tetris","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","t3HMwkKRQSf1qmBlGjTWR",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.html index 7641056..ac2c1b9 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.html @@ -1 +1 @@ -QuecManager
                                                                              \ No newline at end of file +QuecManager
                                                                                \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.txt index a26cdf8..084c0b5 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/dashboard/settings/security/index.txt @@ -14,7 +14,7 @@ d:I[16212,["7780","static/chunks/7780-d44d1f6d676771d4.js","2162","static/chunks 14:I[99165,[],"ViewportBoundary"] 16:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","dashboard","settings","security",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["settings",{"children":["security",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["security",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children","security","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","yTUDFH74nYqKTjeyfU-0T",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","dashboard","settings","security",""],"i":false,"f":[[["",{"children":["dashboard",{"children":["settings",{"children":["security",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["dashboard",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$8","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":{},"promise":"$@9"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L7",null,{"Component":"$a","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promise":"$@b"}]]}],{"children":["security",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children","settings","children","security","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$Lc",null,{"Component":"$d","searchParams":{},"params":"$0:f:0:1:2:children:1:props:children:1:props:params","promises":["$@e","$@f"]}],null,["$","$L10",null,{"children":"$L11"}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","vlHYga-bZzqtbS6b3NHMM",{"children":[["$","$L12",null,{"children":"$L13"}],["$","$L14",null,{"children":"$L15"}],null]}]]}],false]],"m":"$undefined","G":["$16","$undefined"],"s":false,"S":true} 9:{} b:{} e:{} diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Bold.woff2 b/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Bold.woff2 deleted file mode 100644 index 971fa636447672bf3118b3e9ff3e1cd2346dba10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34048 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 diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Light.woff2 b/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Light.woff2 deleted file mode 100644 index 728c9877017c02a8cf1f5032c8534b7c567779fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31196 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 L>N%DT22HZb)L1v9 diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Medium.woff2 b/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Medium.woff2 deleted file mode 100644 index 94765965d32d1b281fb12a1d28501daef155b8be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34724 zcmV)2K+L~)Pew8T0RR910EeUi4*&oF0x2*60Ea;U0RR9100000000000000000000 z0000#Mn+Uk92zzogY0G;tu6*&0El)G2nvJDJc8Ul3yTN<0X7081C|T~AO(>T2doEM zpX!kSy6roPq*Rp7+iW#e4j%9|Y-8Zrujf`MVs4~Xf;ZhnZU@jSpFSDc|NsC0sYzuF zD@|Pr2;$JGbKXB>LMDO=Nx5K7s6~vxlH+?J<5TJVLzTJGie}GnUpW#GRZ3_n_Xreb!JysjTOsunavIj7UX6Z2AXH455yjbiC0@l=`ySN zoOFA^?|~-stnJwgekg8j^bwWZONhOX-g6u`irI;16IJ-bQyUv**g?nqg1-~xrcLIs ze?cXaQ|Zax`8TpnQ*;O!g39 z9;U%xL_$x|B^>S}eDd`FWB=%$x$nOqk^*vxBT}S*6<}M7vaI7;_FYj00R7MZ&(B%+ z*%wRlE%`q`pYTZoqx4t!EatddeXvl&q;mMJ6atccJt)`G05cNv;8yBtQmXNTwK z)4NpXXWV>4k^~Ml%Mm ziS1ag%QyLqSEJn#2n6`TdGSGxyK7T4X__)8YYJ@Sq^a+O8QT)W1C_3begGU#0r3Bt z7MY@H<#1tJNvpRhwGc#QgW!YDxXv2_;BxnKgpguHMPn?AV`@@oJpIj;cTIKE6BadB z1p)m35EcNEEKm>}#{@Emv&ZnLXJL(Vj#5rWdKfq0D<_2Yz{QuyitW2 zwLLUht{J$Nf+OD0*7SVU`IQlHIfr~c-14V@XoQ*^1vRy%vHCTt;)eHw8Pe6dcYhz`a^394y0ZRSQ#Qtw-`d-lNxHVnsK`ZIZ0H!nq z1K`g8vt?#>RaWXFUo7dGuBy0|RdJq9=hjh5gE7ksx{}^eLoo|r0W>@igy9gt0?+^3 zOxw9D&#@Gq<0{=wI(1f{x49|Pw6lLk);@jD%0T091$aEBi9)k$0tKi8uDK2?3MoJn zqK$zoA6EgYfXdVRH<{gw#u{J4~_i}jrA4tHO!M)8VTCI5lSHi{@zrx z#naw0jW`l6QFcbLbEZ@1nJ)!;+=mdz_ZM7!d@gY!2y%!$h;yRCP*9?HiHg{WMWTW! z9f^w}z^WWls4rAbxl5_@T;&oX8U+W9(Kx2|=DNG0b0}(8bx5sSmv&dVZSDWJ)|;Kq zPh|mBPMi$eC1<8z)lB`Ko*uwuaHOzay<3&0`2hg6Kt{7#yF#gKh#AM-17m=p4$wwa zESu-1U$OEPg+&Rh{E(NFRdBBeO5qR^tNBZpek%u|4VRu&anXf~CX=d{RtBBV8#!7_ zM&Q^FsBs6y@#>R&X!D4Jii6`EUuy&RZNWs@MGgdi@6{CDTe z*G@wF^Gd6p?(SVZ5fKq1MvM^=5%oS-@9uVD{#WG;&CKjR)+PVAN(tRkObA5;VT2Jv z2x0us$C!qYv||Uf|Aw*6!)_evky8|qZT=rq|BoFj&-nHq>4*abCnzYw1;o)B*=Dn? zqcwtAP&t*i1*#%Wx19*mo-km^GK6Zg5WUxy=SMCMBf8Qh`5%h_e!dSS06ri3Q^4n! zofj6szQFlFF{sf{5siTx+f=A&rNE{3EQA6D0_^RaSFpPE_QOl$KAdWSvX5)FK)ufp zkZ1q}%y$Sl5We}2b1ZuQ`8pN_^Bn^AhaHaGa?@qmzVqa;58Zci^@c5i!<)u-*_6$0)MQ9|(&2PA z{hDUzBj{PhX70<>%xYSn2ag}WCm(h{byqprFVd2zd-4&4$?p_JBQo$cG=vHMgy9 z&3qHz!T0fTktrT3ETu;oR7M%x<1_$9J+7!i@3QAPwPSwNTh(>yS@l0ntkr3saPWrb z5AX4A_Fm`X=l!q1 zMmMLj|1W;Z5-Ai85Bj^MWd@LpPp89zIp+6hkRD;2s8=Y20$+vw(h$*NKjs_=#4`DX6C z!=7+BJQ6;RoWi=psL|o*tlNi1|HW?MtYk;(6Uk3MxF2jQWJyu@{I7hrm^f96#$tc4 zCg<1UgxZrp!uqWPP^W)8p2NTXFO{D(ySYrELWUsYkf}&Al8=-kHOPEq#nPw9I%LoP z$eI|lk^5}X738g^&T8_o(@+agwkR*zpyE*3Rawx?}3)aTpsBcR8)Y;qWdke-(QzFzB@|`NMO!7>nnyuA5W*H9A2t~sc`5%awl2TlC&v_wMH3_eX>!h>tz1PB*#qIzuyu5ZZl|3i(MxPej!?5iDC{!v42d8oO){4k zF`RFb?#*rUmO9L{RO_`EvlO$;@Tlut;i@rQrCO7*k?%#GYur$JSpINoeyBjk2xjHv z>Upu`IC?F-1V(_-D7z^jHMVg6TzU~&QEmzDLEv2YJlXls1>l90i&>Y*)*`pUd=(n9 zH+egBh!U|oF_V%-B{8`ySUgE0#>wQN0+K>V$TXR4Dnps!r7q2Cm=~yKTI|M_I?%Gz zf9O_3t-7CZr6cY*d`gPAR=9 zIJE=YT6z#G!cU)TyiWW@*;kBR0_n_Ik-0>D0I?=rKmT_QMH`;Bb#_t^W-&K>5eFKy z0}s&(x|N~#Gx0c1oIF(lZ&uwr&axyF4mXcbkAy0RW1v{GI3(Vr7HXr!WTTX{sda5G z?Q+5Mfb%sjpk1hcF>(oajrIy}-E2tOaKG&a6AyD@@(~sA;~;^OM~}#dg^)6|C|i;} zAQPixQw!-4W-%+qE#Vc*rzn&NWy&(sfHQy@V38L99%PdxjE7?2povM+mPiB_26C;y zMTKc8IrHXc_$*uwl|oCWcOc%g{CM4;R60|hq=32wXFAoHR26MAY2L&6xXyt5F!vEF zA|)rTn=e$Trm`UkV@yyw5~5A zd>0jA7SR&8rejuhTB^t%?&0Ym7IUrgY!roUs6tpI)uI+4i^VPFS(Q?gvBtDsW~0b3 znJlpt6{U9}o|dzJ7F9z?(Tho;DXQtH3f)Z1tYdQ$^G2%GS)f_0#ZsM?305dpb*bsL zCTG2sjWS+@UE{Tb)*gHZ@cG1{(lD!VJhR^K`Y=AlO>l|CDLn%7jsJGg9=H^>o2M+?-dn^S$F0o z7K>RHSQWPs=S8_|(r`gu=8|zIa$dmR1ummB3M7JvA#@hAh$X{i@>o&?K0&~#QgHSm z6k)^=_kY?%2g6vOB%7RFiov;Qe)xD|osmINs?b0ehCfqT%GM0!C|7yP7l8^PQgHwl zGL}P8v`o$lASj+HKCgIsuaF_HimG#~Pi{zVjGN--xFv3_zc%WlRn$)dG)QX#n9IXF z!lS&_tk(_Lh)vjxE!c`}x?Oh2PT3{9WsmOFefop$mmhUZ4#+_{B!}gv01ohRJ;4+4 zNt}vL<4pEvagNT*Bu&XL^sD?v7vvJI;F{c!TXIM439gs&uF$UK-JspdyFfIZ+1HhKqxVSfMema?rkzys21?#w@f#|RS&Xw3 zwn|h(ZG@QScs^lAwMGki7Tap6ywBS9IeS)^R`sX}ThnR1T^qG*2f00Z9Wc!2rc0i} z>=r1XC6=Nn@Gv0k(}Qxv2J{YD73^~HUL^84JxdnzDl}AxBDEBuLu5H$xQL1uv%WG1 zm{(J6s|7QQ1(s^DtYf9hs%ACYt=VS1rj1-Lid>_#gVY{_4p`*lgtEdk!(E=Xsquh0 z)f_?&F3BUW2CG`si&HF!X-H9k_2CtZnbcD;H4mxQ zW--N5fn^Jy$6IBn>9D5VMuHbH*O;M3;gme!v`xVcgb!#+n=^6A|9RN|_^2;@!sn{B zS@2}Bn57zg%9lRt-+a#JzTnW89r{WC-*5W={?rHl*8f>4vnrvc-I}(nFA|ql7t6@i z4qSU2cR(|ryDquUJ~A;74i*NDBtQ~5)^eTNxjTpn)Jzd7J0zYhQN~G^ER#nJmomxh zXJ`j;h!`n6-N&5@6X; zC?#>~xr8Be@n&3h5#XTgT;x2che_dGd7>#0=+|B$!Gvn`@aLN(>iwq)EAE zbhvfCEyjx+6{h(%h7g}t8Yr+syB0JA zWF$0%&o*HYvnc6QHobvBT)s%5o{*_XP-dD=R)Ni=nU`6Xx(0=Vd1aQ&79$o=83Lkw zu40m@i0MQXl9?3qQp@Z`$zO2$re299Q!XtPauf}0n`o2r*=~1m7#$y%5S2LXs1p{z z?!W{aBA|eg$`<}549{iq^c7HvPfXBNHx83eGh9TRCm<$=U=h5xCRt4LbCOk>jie#s zd=X5TpqzN3Xes3eqVN#ULH9%^OS~se11^doZ@!HSfD1icl+9trv3f2zvR*F=O-;h4 zNM=Pyd$W`{+HLiU7+gHR7C@}{dB{P|MdoYl4dS*m6t(?Ip78F5 zJq65gNSsPOf6Vhj%ceF$USzpO3ULr>5EdGaL;DboI+m+vP5pN-cw=F2&hVCUR@FAk z_Wt8;Q*OIAW_WW)drKw9-|fWmC$;4U+Df756xN|!r#F`MW{>rq+0Avg*o#``LS67x zvub{I>xKeovFfNQQ>!dNRZ*2fRS8ugd}#w(1$q-frjg=XefdBhjYm@=WujSg^Jre; zl95YG1&gF5TRuR*_su}uJf5P+Bw~th&Vy9BEshUzWCnZ#@J+y(s3hh9$pMOfs)SI< z9*#kdAu+>LBOId~Wk=2NbP3Eyxv1*57w`=+me72Pn=f$lRh}+$tZ+QR@f6219M5sQ zz{wH~@sdg+GXx|=oq3GpiOx(Td8V^Sjx;KU*-x^cf>7Ng&?ThXgExpbL@i?6&`;*+`bCL@D5DKw3=j-=XeV=hla3`u z7RNU^(A1b?xMO-eGvjf>&#`uW?mQPFg&-o}Gli&O&B|z=3i4dgE-<7Vz}`)%9526V64YF-J&_P}Ipnh2EK=ZhI&ODTe5VX+|hUDa!KZ zIQS|Dmnox?UblFH5`t8S_U5tkglX%UpEr{f_S#n!FIL2Zj8N*dJt7SZCP>f*gP|e8 zVCi;qtbNtE%nDEN6wmOS^}-tQB88wy7Issi$sjR&sHl_D2*BI%ks!)G_K}goMSG8Q z5hrB2AlXew6hBlwkFO*ALV#Y3+e&A1tqQOo}433$YQdN`T1LSB=Z8SWj$z zsc?{*TCxnq=6iPX_kf*!DYGV6Sd%_=^Pf<~_23JD94~DmvkP{iP)O_8oUr4&cbp4> zGZPLmIaf00ifTv*a~W}Vd+a=6+Ip6{X}-T1v{9+d0diUTbV3L zRx-bRXsfbq@q$C7GW)LEu68W_789vMB_`LfK4d3EB z@pl8hx61dOAMitd#E; zuULH>Hgsc|KXCTD_mPNF!8Gh--Bb!Vd^nA_g0pJ0np;|PQ|rLL8{U$n9Y8}O!-BkW zrZ&D!(aq%yW^fEA`hrlLRETWJ=rti^^4^Z+Zl5%s$VAkdTj zqcOM99VWbSU!>Npj#5UY(aQvg5K=^xA(bv1lCEOVSQkzb9;@Ygm@=vw#hEgv`8`8~ zu7lp^fVGBuMYXQn0Jo7H6{8>w4@07r}-SP?gX#8EZoK*G(YUB{}=sAi|1QvbUgPqHq}7}mpy&$~U95U& zm7$G04&q#jfpu|BsDo}(XSA)y0z87&qA67n;VW4i*tTLvAbIgcP`%*tIn^XFT*i%| zfC@qhig2>aRK6J`UVv3Ghh=8$*kF`zilcaatBNagB9Q{K`t{Pp{J=pKwZWKfC%(Uq;0sN{}$(h>#2=iM^&$^ z$Ei_3LP{1eN>mr}hU@Tl#U`()YFuBci-sevqM^_G=B2oNi2`BmnRHd+=^!P#shpjQ z4uZMd45^YCZG*dca*f0$R4TnI4RK?w?iHu`*M3N!`d^aMY=+Sr~;sbp-O_nhF>8E)KONLLRzUR z&|5|p(x}W;v<|I7En}dU2Sxgti3jn@7pf(|0VEk)V;-y(Lkp+-f-s4I@c8)DA$D$; zO9=Tr6hB%hN+m29p^ABOl$XM>#8ycV<_|MV6ec2EU}Ixv?MPCT-eq|DRtZVy3hRYw z5jd~-k_o4SEY)VI&ohIz5eF~iEZQ@E;298tGsKhNC%*e6j74HmM1%#(HS9|KUc@gR ze`hl8Y(|O`#$$6wRw6+iMru$}s&8^s>FXmk>e5a@vXOn!X2opoh(Y&tDoM&qa3h5? zZ^w-el2Pf|zzcF7YI;tiIg6@P(WV+>XP;ozdNy*{u#2nk60`%N>Z=~0Mpk2tFpr4v zD}?YQYyA5zO1@nj+GAn+*ibP#iB8oe=yGY)vEi&d4xY%gThCro(X7U>91)!xzBA@q zd}1MyiE=g_V%^vRyOn%9Awtw!>?g62qGS>BRTMxOs{+(SBidSY6upQcDviL@XT~B{ zx;C60N9?R{0k`W(@fx2kRS81X7l~a`;->pDasCDYm;4!X8B|fq5U8bQog1KkYv412 zjL&7Zi?8ag+4-IHF|2%0#e))+tDRJzC9zV`(w=3I7SNW1N*0{0Mq10#q_ppMBpc1h z*c7seX1-)kx3|T}NXa5c$xRL+kVq=VP8Ba^kXL4v21Z(0rfWv&o>h8SW!Tb;(A_?x z9PB(kPdUyxCs^gedeKwOdCszSjNH!P>KI!G*0JnQ?0R&B9_O1sX=%^kMX9g|k53bT z)U-xgke=;idwAFmqC~N)CQp{>MiIEC`a(!A7O0x$u4^2DpI1eQC7+4j*(jA5qqNAGxv-mG z;4ymU76m5PoMM}nn~4d+g{G|&f^Z!`+pFzGrN0sS+JUevCcTDaJhLS$z-`7WOb`s(KJrBt1k)kc z_36+84J1#guc@wmY@6aYS6^eD(K2g|R3r4%K0;*AE6osKWL&D8!tBdtJ97|9tJtw@ znzJ#snMmYtbWm~;7=xXM$!@=>z-^tb)KXZ8JaH-Pyh*9y;1y|luM#eY>FS*+ts*s3 zaL0qUbo(;D6sBfcFNh-sf=qa7QRI3XAgaiBfK~?WUGDqgDtsa6>Z2-MXpr)Kd%42u zO86=&ymz=OAo%KKH$6tZB8GPYN28#mGdGg1^9Up9S!i85tBh{#hU-V$0Q3E4e8`*Y z_Lg?_sBTwmbydB`5HCU=bKou0hKuU$a7RW{mPonI2t%+5>T<@6gfwicV7%GcWN)s^ zTiWSSJ6+M{D%Z^xOTaYRw((-Z6hoFa^*5T(o19S4n+13?w$RIUwA-F-*i9(-NEmQ% z+KOkqf0-5Hrph;0sA*O&!c8P0il!y<*0W;h8(J_kpW6zFcLdK~T4ECOg(SXAUZoPl z!nIa971m%%U)f;I2&R2h@SoBxH?cDjO_l3nA3+$zYz?i2>BvH4;3)H^9_UK{sa8fT zqEK3CGK!1pB1Em)USOz*+xpGHD+{V-#psBo(SF3El#Fg|i1;=L(8uEs-_PVxYAa7dLTqSZ%sy3pyjpQf%0v z=MhQ-jrm$x0SPIOLWu!B7)(rJBNCvKaFqO~oqwz$RbMxX$ts-6O`@Hv*(M7HWtby{ zOq*F~F4Y9;wgSH@Sr;o=ZElcoJ=$lW40c3huQ{5CUL1<;B$ak^_wWSoKYsD`g9ipJ z3keMikBE$lMxf9!v2h8B7;I8<3NAH`NK0q2IWk4IQk$nQG!#Lm@~UccYg_yBjuo9N zySjT<4-Jouu3cAdi`D6RyFZ?v@2}-nT5Y|}cG_#d!;U-ctn(iC(9@pvycfOfRj+&7 z`#$usZ+-7aKl{_){?CFl*d1;^f?_y9rO}xzHp%4+#ZskOqtzMAR=XRBLSwKvJb_3e zQ)mn(i_PKk_yVCwERo9O3Z+V|(dzUDqseTs+U!o3$CqYULAGqi_52`AimK~}XF604nOQlxxREHdq7qP5*U;8oIQ%aG=EQnOu4JYYVz$B* zMHR{mrRu5XoG+=(@UsE|WV%x;Q;^*gA>Ls)k!kO_B?qSA7Ne<88RfZfQA)1bnc^ov z;Q#)2La9sBv!VBUz_4CU2Q_==yd zLa#>T=~QtJ;aZ9Qc7P4ues}uBT499iAB*69Qs|nXDmA!`GNSTEtnuxd_Lt9+9to}( zrgm0~Cl>+kp&~Nn*11(!@}}$QQrAWpD^oa#a6VRqaG#(KV7}vkP#_?<{Mzi|?p%@> z*?43$8ms#L(s+RxWL(B9j8jLZl8|I6u8j19-g+3>O6a-q1*Oqm|K86n*Jj#%vT1NT zqs9OSS8!?IxHejH#VH_+9a`X!EEmNkLY`b|4UBUWn9L*%lL01R*3VHjKncnkoSCn! z9vG*pEGjn2jyVrpy5?*#|DXctG=vMMW`(Bve%7jVJrH+f`#>eNs7$&Ra3x&z*)nv+ z{}Pei2l+f?E0+nmjEFGi|06@*j~J#$Tc0tnM+fu zNnlcJG+C_4#$p*_&)v+OGmw~aH-Q`4EZ%7m=Y51bO}VEVsVzzv4dJl4gx{Z;m9L{s zcRmg^BKF~%m=g^xVr77tMdHm5C83|XwueV1(~upLB4{{!>1*@J+hT-RqQvQRcUYPR z)nY|AtcgtYcmK;RN7)JH4&L1sv!(NNoG{vpb0jg#e)IP?aHmt@IZah9lR_eR?@BUt zBxWqL_|LxCHZPKHAZb(tGEKo%3)~tWvv}c5KD6p`UA1iK0e_z*4W6bm0$D%O8RRm7 z#NlQ7qWmi`|6TvA5uPBd=db}^THT{Qxk}WE^+uhjjO9uE^71^nJT8r3o>z58wlYUh zot6$Gju6-QZzogLYsKRG?Nzdk;g4@aevewQ*!n0%r-Y9bV-y2>ticv#ekD$;^5SGZ zNV15GItJGfTA+_&(N>|IHFO77tZ!k&9EV|0$oY_!D^e^oCUpdd_GEo4YB0@bgF$in zK0T?!JRyP`Tgc&V##(h(umB5YBP5y?SkYyoxf4|O9Xm)t8kQlPR7<3l=3oV}c!*$< zZY`eTIV~Jl-s1Sbp5^+_5!OwD1-q7-_3Mpcin)%+G!SV6Pn+ZqD2|V@ObPeMr=Hyg}%{px|tC{+TO-{;n`KD5E z6e6rMAgfIjqa}iFdf9gyZl{&-C~JtZMqbrC9d^|t$eySapW2ynzCe6VTdu`)euR%H z&zc}U>_q?s_=A(ehDPwgWI;t{Zlr8=pbiXZbMOK^xj!JO=bFv<>TNqdiwfaf2TCy^ z8AO|RLJ&$#-cf_A4U_oL_fyKU&+0vAHxA|r)qc%hIXvZ~j;7my$SeB-upnDa%%U0k zHJ6|2w7}Ic)|IYLr3A1b@<}8CWJ4}w{WWL)mDGLapvhfNinmJ+@nCGg95Az@DHkis zog&$Y0;Q4+>%)cS3rjmWX;4I$ZwWE)ZuOQEz6Q*6*beLACHb13QSPJ9b6@Jwdl^`vkk?w_s3Ha5B z+t-3a?_V}dGdh()50!4kltB*(O?By>DaCvZ0+k&A5eo(OlOyE;LNSujEGQMOat0DU zCxX|+D32AtoK9qGX=h}7J(Q~OTPCUw2?4W?MXTa!ycoHNKGcD!L?ECrr4>jW27 z>*D6dL+_bC?VaryugNW@k^Cex3&cVCGpktXxWR=^mhg!$Ypn;Erh-AS2obfwnB19q zqid+n>GQLSW@@x9TR3SwmVd*ybV!%u3q4;1XIpidBid4)CnNoZGWTlG_NQN)fRl>$?h@A--b7 zv1?Kb7a`(Vq=8SPT6L$+;wC*4NVc5Y##mDDEBNJ941`k2X@wzhmS`2R_1npaEP#z& zNB96yWvir~9RfsTZx@`oTXzHSn^YgB_&~LznAW&wUb6BdFl6!AM%EB8hSlVDRV>i+YzWm^i zgH9X{uL;W2p|$U2Hq;Kue>-%V#Kz7r)1#u5O!1I)7!|rcE=UlIf?^%|rQF2j46Qb~ zP3~rZ9=PRAFsYpkdBNN(q%v$kEQHb=tFjTC)a?0153#sK&~-^X7=-E1xq^bqKcPd# zk#~OR>(ha-*_Cus{(tihuK1Xvw%3>jejPFqv6v>KdR3^VXSzdW=jJc3T4^`$@jbMf zZSjTM`^NWt1~FN$f7%KIeUD5VBfg$XJ@iXifTAB5>vF4;Ndj*_6O>(07iKznt$B(k zSUtH@i5R-hfHi#|2son-1BlbpgRZNj!J@DbkhtW6Cn1AW0N=&v;!TXxQ!U~HI*S!l zs#ror+`K|E;&24D*y`lr|I5jZOCTG>IP{LO3HXut8tZENI;G~Or)ou{_QCg&hu`*k zYB#&@NdIos6d8$d>IUUQik$L!)LglXL$f0!B?*8F!RxO5Sm`E1;&XzIyWPN|BlFdD zA2PgrTE&wPWZr=zB#*2Wc$>76YGi?konj3z0`_7i_HawRa2@BF5sW$F+LYttlIWXE zPsndy^T^3YhM2b*Sm=X*nkuf((=?nAML)l2yA2G7AEtEN-tr!EO-I&(Sv3*PtDf-- z*QllDRd-WEV00f!*DE#+D9IxwJT_C`#+?*Ni^GyLRMt{8%8{4ikss#rJ!L6J(2x@S zb|Qrcy9bmIUK&$tm)pycJW#pWjE0=gyFt#%Vq{b4%|09zAdJkY5glrpO=!FC&G@of zO8>L;$ZF0{r)l=@jB|-w`K>fcP@4n;*gwh{od{P_kTQPmI3x3_MXec+>wUxmhTl7v z)1smcvDQeI4E8qlE#HSF_(y<4vC|)YR}lma(!Naru4|{E&So@u|<%W06RsfyXpTRe|IPUOCxrknR)){VbZz-E#I8=1QKjd%|A*% zlVT*)FV9lSQ~cO6e2OgOHr$z+UgL50=zfXe=Bo5K8e5uRSi;A3boJAG-m2BC+h$;Q z1(kNbR>XG}(^SWzdaFxq`|Bb~JB8%l!#7k>PL~PH<36T?qM@LDoerXyATkP7)QeE* zx-n?g6UloNMAQiqHtoPC?^Fo)APX1I6MGABJewIs^S!brBpEG;rPlG(QP6 ztPpK0e%$dod5%Au13RBe@wIKJm?k%@xnb=88>Spxk>)|IRJJ|n)D)M8R`Mtqu?~jz z!-{Qj@K;c{Dydo2DCnmVT#>)tqZg|fj10joi(Uhf7i$9yx$lUpsI<*(ZlG!Fk^X7- zY}ikJ)euhPOxGK`c!<~LV;dx_4&EES_9hb3W)^LxSPUZb`&q2b1|Hu9{p3^SfaLR7 z<6Pbcq?fY*u@=1dzeGi})C|Q^d_tyhL&A%^yZlz{?1UT-atb9gp$-eGwQsZ{%zhuT z__T&3gRo_MS3`p$WmAOM1~H_lq^;s9YxP@5ui$+?w;hVOnc90`$Z91Ys4AYBo~4c+ z&OHPx;R9r`J9tKAqkY9*DSaSd zeXlc$O1plfGHjmSQW`ltw`&-`#M=G1VRP5SMCv1;=_I#+VG|B|>^9L_iPq@H^EkgmB?^5+XGuRRd_tE57z*WD!RrR3~?}jVF@j&YK;MhZikIq zlRkR$k+o|v!(>sJJl1W9y`FL6R!#VcvVyUTGgrnT&zj|MI5wWbdVq>jkb(@)A|4OL z?~Jz(^P)a2;uJRN0fDV1(`cqK~ zG9v4QlP8qqKHVC-}X4!C;S})*1T_oSKO|L|og7-pgyR`A)rn6aq!KD6MFxhf+t__nj2`k`cbu?EJ=#&ji$g2hU^G*x zN^{RTAR5j(?1Asq8_BfyvJpSAMq*me(ePMw3VKScbm#@e4QFYvKUlHwHR6LV&BdPSdHtJ!!Ygz7vwS#)7WrgPN3Y% z_HH24IbdUxP?cuW&;&gZ+L*1fIOM4SLKk=}?y$R;Mlt>1YZsU9vkzXL-glrD{2t5r>syJ~e{S7$tZL4%-r1c~1( zJC;A?pFBWsOU_oToSS$iIb249@_p`taRWGX9Cv#Zcfn46r6IOkhmAn&_LJ3s$TP{@ zX%_Y4qCqN&b-uVarYr`bwbh@8mkpWw3vrllvRTd#ja?!~u1{F6c~J^7JO%cOb=y|CP*w&T?9_KmA6WtwsG%Icg{1!O z_^QPVy(c)Vj$1J;K)!l-$0tIOWitFx1|07F&|{2&ve(?FeBBsibCpE--4gK0;ffl< z@-m7Q2HvV9uzpys3L0X11h(L+OMd1H&nE9ai?C6=Y=_@iPQc=F1|Vt^jf{g!Hs~ zftP@8Kk&Qn0X*-7y)JX!&sU4h;w(+FbV)b434l`wMu5AG8HY?b=%7OmI|4WTO0bfn zCLJ?{I*z&C4K$)?vkL&x04P=JoLpUA2?QBUB_*Y$%Bt#GC2KW%&5#`c4gk~)5wdKeg-u?aj5j~95jxFrw(kSHE=mL*3iCX?exETm!<4L^X{ebo)1rX>M(*i;XkaH#8<#Rr7PGsfGW9Zqcf`t=?eL zXcz4T%=0U|Q+_13z$?t~1S9M<61mrPUx&ebja7P8w{5i*l;u=f|7NT@l-||5vOPr0 zK@Ju;Bx~sOK^O3JPb% zAKt#NV^4)Z%T;>^LDK12g{xcHla{(No^8&~VU!fkrwc1fO3IIWkq8i?CMiNQ)OgZy ziybE6M~*2{N6k7{(VQ+WSb-g_ps;AIYk_)I8+5YWG^T9IOT7pZ zE&u?8xc~r=r1mpIqkoy0Sja}AqR>fHU`o1d%Fjd~X{&0Vfxxscq3yIAGv40Bg?`Up zP;xc^egJrQuBRhh&{((u8n8_F(6fck*OcqVy9Ktb>TB(+a&hDtQ_$UtcLSKq8YPEmy6MnlCaBrf5owyV7&a?U`?jd$5*0UE-5hWBj$f+1sr< zpw@q~7DpS>h#V`TF*(_^QgW{R@^hi$%5t%aX60&|+Ljw#-tOFOZ~OAF10BfY{@Am5 z0s(vHd|%!$n^SHt_nZ9xL(CB$QY18QG%(#@vTmTwb@$CpKKO{%UHXQbtH4`^S-KTB z7bdA({(|a9UNb`9h&mzZF_T(tCD9BTTqXwwF2%Iz+ zwFYqh$z9;Cad+s0zsHq;r$#-?OJhk61ZGUX&VIhM0Mda^rKM=B%mMDRccF!UANhie zgCicZCf1&n(1Qh-Qhav_OKq0;E|r)66`wy*$_Oaw?Pa6s3I^%MfK zzL}NR#)=)OOjQPr{r^!50bDJ5`oKRtGri4j`t*!^p3Z?{YrgL&sm9O80y&J5*cKOJ z*7XI+>rjfIP1&W?O6|>qrD=J6MYN&oD~=o;>fXKdd%i`&J>drNTrGl6YR$BHsymWr+6G%ijS%3n|*%TfcMlbI^>T@|lr9vfhwsp5U zI=C5~TwOdJ+nemlV5bw0TQlHvS)aaWVu=kf*c!6dDy<+k{4aPwa7-$mMCNBJRoc7) zLy@stecr0gbo!t-iWdxl!r%xbM||T5dMo{Cx)6+@BqK<&q8WFGz*7I#7$TEjgGz6D z%h~`1!&fw+?3DYx(Xbs3JL^~e;BPLgS@)C|0?^jN$zn;|;uXIHCL|F-BnF??LH;1l zyJj}8e4L9dY(?Hz&}^KuHMBAxDy$OcT#H(jj}=vg%WR=m=TpU1~)!_1f zO|8wBN~^_XuEnj(*UFlM%X~{}&bP{&i_6=Vwm#o~P*EM+Y$jYK3$BU{S1k@#BLP>- zft$mHn=1)d$3vROXcokTSP&Z$ha?~l#Dydw9?WPyj4*hh_cxQ&?B+2MpiC|#4FRV> zkWmOy`DMs~Z*Kr6C-C5mYb_zHg~38|QzyjWhq(#E7lx7^N)5~<<+Y2>I+xkJxn0H% z=kpeZk{0d0mfahJ7AZ5%sY_a_&#R#ot!!1RTXV0B(Pj--7&Fo7^QX%qYtm(>y~Z4K zi&JL2N*4GPrykdjo!L>(TM%fmU1-3e#)Ki8d(N~J<9P8hG14dIytJIH zdhIviIK%~$I+d7ijLZo>kmDDMX-EP*B8fRhB5b4sb}*iJry(|YSdT5r4i%XoLCO_W zO2kBC9)r#Fx6)G~5-i7)I;!zlUfsvE^F?8{G$abNfsk_4&7gzWs(=~FK;UU4wuCc? zcy8)YZFxl;!wl21BkWrXTjm(F5g8d-jCpk=(1K!oF&xLu zO`~yHuP*3|Z7?L_xCE=@*r9`o;_2P34B1n6nP}JJWZn=-tv=G)n9XZ;l~q+;O|{Kw zZgnr7yp&X(k{EpP%$rMj3?O|}GGNCL04a`WqDVldP@o zzo43^rZQGWN?UnTUX>T+QMop&@Bnox2(d9xn~`<-A|kB+7IQFoDa6}aQIPDitsP*Q z)o{naHb)hP&G0OGM58lwC&2qg4joN5~O}5xT^02=Y{5QS>08O?b&@nb3l42~9B5+QRLZKuBoj>$;689Dse( zL&UuB&1X)C)xs`o(h3Daf;bVL$Z?b+EGq1qAc12Z9@P_OaGURo``C?BVSSH2u2PIm z7?<{fDE6PL2-6l}pkr`jZ}p1HVpe1(!dNmNL)F6_5g5zMmx8{q<9?|W2X1IqWewPZ>isMrM{D)-fv9 zqvTGQP~w<0bk+!;y@rw)nHi2f$?>$RjZ%jAsS-IcvLqy3h4EeKbet1XVva!5ww~A) zIx=Ep0l5RTQ_|YKg6fnB1V-2?Uzg4bw-Wi7N7#ENll%ZP?it&WVw7$MaXpW7fSmW^7L z9Hk**O-p)}z4RBk{C&!tN^e%h7#2X%N5ka>kd^1gV_;Ocv4v}g4%75>S4{q^r*q|) z^`oVxT5@DWzD(Zdof|_z);)8Y?lG;Vg<8Dy3^mmQ^`sQWxX}uCM)Hwv6^)oIqkh;l!cH_7yCIP{PXa~u1K~V*dMDcJ4 zI!CZQy24>_Xi%`{a*>-q3ulk7#k|F&q|r)SR_^x-eX|M%VV8ixDc;t>6+gC(6Tr{r zX;LnnW|0|9c?LUynz{3AXZcAI>s}ob`@hr;h7?PIJ`*x~spCS-2jt-W2d=s*wd6gr zFS7p1I|%?6ijp}bxtRzLyRoyOsQCmbg}qpexy%XEC0Q=ffB4*D6j{S_x2p}t6&Z)+ zlxVE-)Im@i#;4eL{hrJ~opn%n&!+(4dS>0lQ*=u1{?9T(-~=CLEkAlWD|+k_r#%w= zHmNd#X{wp(G^NJNP{ivazaJ)diVqyJ^kZmX+J}rms2M1M@Dd6BG8q*H&)dY1Tx}p5 zYFe;YuB4XKtVoQWRK@R;yMT=qrJt{Qy0>_y2(VN%1?)ft%g*!KOl)iB>bNfO=&?Bm^lIhngT0D zg)VTB3Iz;)B4Tn_w@ofxxN+{m0u`*WA*8ihZ&L!8egpsEelbPf_7|*=|zP8P{39Wi1^*l=pRlEPKCch>TmvieOlalA=F6RhD4I zC=xp5d5vL=`?pMO{@{Ts8tM?LS?f+@o`ku+m?1YBc%bF$QZK||LZlg1sS~ErKOjg6 z9#@<<eQb}0Tg3N#pnj}2wopV_*;GLTL~s0}}uK0|Gz zys|dy?dmJa?9|>KljD=4F?9_5ejDQ}cI6q?K?r2dAhHmBA>9fm5jDXecM)6^VG>!0 z?^F!ye`uOgpfORn{bTG>mzH7j&nqp`T+*vzdgg5@4TFKaHtPG_9fryiY7~&xz zFx(@AJ5VkMnrDS?w;OKUGz^c3Rnj%0ofznbiXqa3zHw#L|K+>bGYl<4pw_svA(SwA z(r&I`w8PV-v_VJEJBSPj^bh4FxAmRqd;k?Wv}B;7c{6>)*=1#==RRm;5tWewS~_B( z9t0$GBdjP-mkE3~gWAH4PVwrv+{Qo_P&WKMN?H*^B|y&gGogVpAuHop*7A>s9?esi zMUX)dLmIKXbxJVk^<^I4MOdb@`pEhE`{4*ahQqKKu39IeivdQAg5AmdHIYK`Fop(W ztNTA~QM`=Np#eulaqcbI183c*?sxtF=Z?3m_Jd`VJYb;Ya9c2Fv)!(O1$f9@G;5Pl zG@eOQi8H>={0d4)Od-83|6~9tj&2x(DcvV{-emz_k{8MnL9frq@Q}x!phd-9OsX^( z?Rpq^9F=4Ya%NJWT0(|~QUO(YD5xu&>fDGjsjp1KdTa_^6PyYQ8lJE^8OpCzE+SS2 z(p<87Jc^;dn!n7xr?0}*ua6?;u(y=3`>cKu5%4!j{|gC+fL8v!s0ip@4G7pA%>-Tw z7we$ETg8~P$q5=I*vn6L%(Y!@->LKzKr8!(OjAfZFV7e?y$SIY|HL!&4RRuy(!EzLEhzPP}--aB8 z-gRU0)KMYwQqf~K?`a>YaE;ba%;RsCZ}_sV;d$#NFdEsq6`lmh$6&V%25@o~g{d2E zJV&9|9**%pv!-Kfou0m z(%X!@hVs6Fka-`?PA7#3{XD@6r5Dr~`ydC@jWAq8H3cM!pIN# zQz(IuKoqOO*0t{{l0Gy2X8lelTkqs_`&*twA4qV7Lgv^T@j@ja+z1Ddil+IUR`6xk(RFT8VTTw`=DS|L| zn~&^XQN|;Hsh9?f5t#QFeQ|GPwfB{1*i;5usOJR@D_3^5R#j08-NBu90xJ3dFpE!jf zwtOHuD(H)*r{8yU(9z;Ir+A0;vi|FBRX_7ItQuyABpbP~#Yp_b(-=tz(!Th}Jl;bC zgN}uc0)%-P9Kp^U)sgpAVN;sdzir;JNc-O6U)+`EG&HTL=ex+=X%jsRU+D6}1Nb#- zmx*$O0g1s>m$_@Jj6S(!kVYI2*tfG#-giMs`HV_J9x~ys>gA6ZlONIqB;5q{GgU~} z;LQ{|E(guRGP%?;sZ6Eh)f1ca`okE&)k5P2zjO0}10Q2<#p>&nS_fc>+^`z;3@8o+hXWAMQO@LS+4)ny5&HZNo`M4QvtOUy z`gN4Rmjq6k+dvzX{M$_R_ElRLh0MnlD)Z-{EZH|^YKjsVdt3ENS#OlXk z`Y816tPBT-LWey1`SR%Q#a=xWdgh)uEXohPcy4D1>t#6W9#Kl8h?WZj3*8P5#x#5y z&)<)ZP2mD#yV7bcX&_K;FI{;4KK)@5;teZZDk>=92Z_@UAHjA8kc=;_BQ#$KY_t*E z8#?R2dS^eX@x-PJR6G4tbsd#Hz;fEv!z)jNUZ`9BWc8ENYxUERJSkmrbUA=XYqH`R zF7fAq{uW(1!i0pOaOWUwF}}#(2d=ha`(lIg;D)>Y;snA12B!;*W`EKfX+|Bg09tKF zwtPGJL(9goUrpRGl#m`U>auIft2-V*OvmjFr}VG@lms*2n|n~&(ZOdg+mgS!; zOnALrY)|k*9u{*Xnc9{eAtR8%QTIC1P90P2Jv%nfIn)U2b?DAIej%eVYgXf*FPaH< z5~a6I(<;i2B1eD>e=@Ce^-G(>XS> z2&D}AHSFLlV)^?J52Dmo--@_F`^k110qPbV!16L26&LFWP@s&5OI}zS@u_&uoC06s zjpG>=MrR|AO^g9AGsDX3nB<6@4$7~F(VEMX!Qj^UwV0!S>7LslIWLQQoh^d`M29Byv{Z8WzJ z*3;ZCjRT<-NJh#@!__u^DATM{!>Pi#ropC?0E*edkw8*Jr5q}GbvBd(WfH}*S7S|K zx!JT=imHey$)~tHmO4JUps^@f6yyFyHGPwoREp`obuFL!tbvc+riV7;ag}TUMr9so zesXwdpSAegz#cavP*%456I9a+_><-R?Z8L5M&KX)ruS3SUzoN$DMQ_fNee|iSJ0p8 zyx%#p-xr++I_s>Lx}ga}O@`ZMU(txMQ;N>nU#5D88l#rKtcGh1xoY0clVTGl@Ij+q z;(nGl0gtes-VCyWa+WP>Y?U~eV~44k)Z#D8U>%4p zj9rqeF!;+2vh{{vD|#i}8P#$FcEJJY_aS|Xn0v?=qH(AwAy?HI?=EJ0WJRfGm^W-& zbGGlVF030KVX--EZFd%6nDRuu!M1DX=8GWmtU4ZK=Bg81V0Vlzs~ll+Lo>LdfunC= z=*>B$&AFrrOYL?oN4W4je(WK#AnSz6xd6 zqfqz(squV(LFXN z95794xc!bJ@7}x7aiH;*bbBT0ie3A_{`37jUT=$SrIQ5*JazYAJ_IG{Qb@Ln(uTMH z>nr(1j1GW|XkW{5TqWrQ`!}#!C3O? zt)!{XE>GHm7%GsqC7n=5(JhLVKTacu3Z=_eT5HB?YpZ*Dff)%`U|R%P$RU`Jx%igP z#*{vxK1XcLPT(+MxjF{)L*vvRJb!_XBQMC2S#dZ7JTJG&5>@b)`;cYHVAwqcEDH^H!b050>yLimVt2kuq-e(D6KQxG zV{S)7p0dH1%cUCx$-hyMuuL5YhZPPsSmZ+(J_(md#V)|mF?dWiCjNy()H@_59gi{Q zch%)+Ym8DfnoqI9N|Li$%Ru8nqpW6JvtOxG9^|_}w*xjzy{g(mT)dB-h)PapC1U9e ztauq+_6m|H3+d`D`y~YgXq)`IRtPm_!!a z#AGL8z`;6-Jge|=Hh{zQE9y0MISGUqIj^iBGpj70FDJz0B-Cj;%!N7}jTRSAqo&|! z)c80$ElG%I4-GFvMz@89t^xGlzS>LLo7K9G6?ZyT_@R=)~goLRzPVH26T>>Uew zcx^2O$-2GNz21?;{vnC2eqZwD&dU`5e7kCgYWpqq4mI!&@c1!xf`f0DQlzN?lR0YX zbsW(yYA6~_z{Nm{rbcB}Wu;K3X6zl??_|B>YnsoO4%mj1ldFw}17k|v>eD~;)a04j z%ojiL$zmldv#eei-ga?Ff_!dz<(EBX8fq?W{Aq7bUH`B-pS6rF_AB}j_0qf}Iz5`C zfmQsZP9Clr?y*$Pv6;|f>t{eR^){=bm@g%uiV-!k#)_N``gNGQi0FHmbvZT2@`$iX zWDOX$AGv)iF1ompyqzi(KL^XI>nZ3RxD~Y)^t5_kAM0~jKr(fI!|jU*8Dm3^A=lKk z^44@y?)Mz_ni7tDGJQIoVCp?QJ51=GXN|Kcu-ks;z3c1O-nzMQPrjbRXR#`v-u^) zsj?U!^kA}}shH|M5>re-JX!dj^MO-1Rq^#d!VK|SIXJ89{q}wHqU-tktpW_^tms zcDqPL;g;kyF!fozyn$p2Xv$17CSS!~WRu!wnHZ1RV2&G;kHwjRkG*I)<)eb0B-h8z zhSG9^+1?^Qo{Fw$GUP7jsJIyk1TGRE8M4f7JI#ydC(;5|W{U|t5nnMaFs!al4+><8VW~oJuzaj#{RV&vpKN@v1zuofg?nx~|_~z>RVkSuwHfqS-pnW@#!eYhVb7ml%F>8sXO;u|Np@cvrnIIZgyk_vBTwF1`Cf!*X z8%jeWh$4A=)JjCOR_Mrbp7Y6P3OH!y=@AJl>0ec192hLl?`SD=abA%kV&GK>rXZPC zicEHEVI;-Gaj~GfKVOqC(%u3gMahtMdDUL`>WqMl3t5q5HpB$ zEkVRjM-+=9V{$wD3-$Ky%Z(956qBGE=AH&{6qM7@=i%4qOdek2540I zjr*Iye*UAMwMaD&&4W{O;oNLdx=*0$x?_gOGr6fS)pyo6B-;s&|c*M#6u|COF@_7lfjgDlDjxomb>oREp-W4)`~T-JIa zC@vIg3N2Rv0+JRnG#DzVF*G_-S4qT zHu&qwT+LASaCYs}IWS*DG!XN5&XpBPOQb@Rv`AXMa}JEO?<#6feK`K9#k|vMt@Q5s z0{*^Mt^fDVz3O50h`I)ZNvtsoa{8p!iB35nY9p<+_jy1A+)?BRZ-Bq(ZKa7&f!)g< z3Re#aA1vz*L;*ojoGK2eHhPZsKsdBo_%I^6)c*zi90Q*Bg0$xe6^JA4)bKuUmxCQP zuIF5ht}f>S(jVP3C0re>dDSJ+%cnOtfg`f1DOk)d^<#4#QaJYh8KsLes`JG*oUy)o zqOdx-3ZPgRq8mL{SY3CruGvBkAybKHViin&4(JE8d!eGQJxIIi%1-M zu5BBSJQmp=r^ga+GH<4d-Oz4cp9us-T9sCLjh=?!)qRRK-G;5UCz1VHEx;}b@>C&K zZ^%x_OjVPmd@4DMZj+&MBqjMRfd_W~eyRv_M}<+~E%K;Y!Y%hxX~9HMH~~jnhTe7x z6f=Bu-gdB$x7fMhZR&uK3E=pdJ-cTCDH#FphVI@)z^I|&J9iORZ}onz$+*d6;$jr> zW>T;t4Mn1;qBx4?*gG4uA`ToHNaiUT;m#)~{uLmI5(NAe%m`RdT^|tCMehO+KX%y7^tmCkZ++m>0scFDSjSl89TgRWSxy_C=5 zgF~OaMc!WG1W^J-#4O|UDg-GnA3*qrx6EgWsnYO6RMd{2sgUA#?I9B6Wv_DXnwAmxk-)n zdF@@&BN)R1!@_9K?JsT*3&&X6@X6+^u)w+CkSX6^J~3YK90$fDarwF?zxco-2I(Kh zD(&@0=59`5c!vMk2miaQ{%(YyILa|#9lafNC&GUx4)6&om8UQ71Prk~^-2zva=Pg> zs;1h>N0^Z7?Irf|7J_r*v-)FA>nH!d#2Qp5@Ltiu*u!z~%)N6;Ncy;?*StOEd%;oc z_yi0@OWDnNjG;cJoCg*#g+6%=UnxR|yX4Yh-$i7;5epJ-^Ws|H#EDM!G%hn#vpa{Q ztOjNtaw1sA(V2G&|I&H|3i}8>v02bmvMRB$;FISO+X`?LZXl^)N{{i(NSBGpr1m`0 z)?~CUZzYl1z-kA*Q3RueP8a9PHG4>e+TBnxWvz8$10W@3XQ{COa+@re`PYf)#gft%v>T=a&a{&>cp(pdRGiRpE-MH=AtnHd&BeSCAc75^nQ(|Dz+pfRt z=8`x`A(g~IYI2@}{>Ya#{X{-L4G&=wtq4aqGKw73B&*YIA+b@yNQMZtx)e_@MGD^K zMkQ%i7}R&dtu%$Uf}V-ZER!Tq5)(o>)-Uhze0-lcPMg`>pkC?t8I2|a%#*BN2T%ke z(frzvA_8wk*HDUxRNSZg1%YIDUTrg>3(i#dDDV>I$}pn~s%2pEFgi>HW;pcUivhPW zq{7Xy85xG5AtR*M$zU2?m1D!(urfnR(p8gnmH$SxLi+vHDv)*90t$F4w}EX0;(D{O z;AG-;vlZaLBMfy79EDu+Pt%l;Gpw$3V_lB7%DaD#-hJR$5D431SQ^R4o?(GU{Cb8( zN{59_rtK4wm|O|6)TZVXgrf_E(;|i+j@xI0mrrgumJ?b03w{j4uk~chnPh}ktVNKS zIGovL)Va=NXXGM+gqTV0JxNhKx1FQben3QMqQYr(8rO!h`_Tgt1ZHyi2zm>FFWpDIh{EYRqljKf-CI^c zg6na2AAY)>*nvEK_HKXeHzAF)FNy)T&o{PcV3LSldYffEaCOq~S0uTA8$!|14lROQ zdX&FZ$$D5%>g}Po zt=%_}2Q(IDlUk_Bb+{&AqCZ6FZNrpltMA*n)3lSrWP+oL{xxFELQ%_!j!>cxd^zY! zvBUH=6M~&FJ&BMQ`<6YJAu7cuYW(_agq*%DwekbzeI)cnr%r=y%>^pETeO^yc&QhrM&;-21#Q6=B zH&z-W(Qd$*$x~X;eS6)Mdrk32KAJwBjyHiRSX+8FE4#r+bdIr+sVdIBC9kuk%+sp_Crrny70f=F zrLnnXb^4tg$Hi{bIpEbdlCo2vSQ`}Bnwy|GcVInGEix<|jEMpy4Yp+#u*Ne}Q(-#^%)yGaWrRw0Jd^$SfyL)-%mWdK`wRbple_4*)1{VP>Ko`X zE4=5bbkMS+6BHp4L4=%_<`h7_;y4%x%O7Y-l#>ur3h7^#)L=vv7KLSoklxO!)JX<| z2ud#4bMrV?f2Nxc6V{iN#&LsWx!)1{MYquNgV)!v^*^6a=ir7Toe~ z(F?u>&x+7X7Yd8Nqbk|m+$Nw8Gq_7i4IXNJ7r&MFR3>Q=$ylSaN>>@NRE`462}Ebk zk>9^#^x3byd22L5y;#z2%uLRUbjjcZuS($$-?_PV^wzBrQ&wAvv-E|%WJRf5DYX~c z3!Ym7hFl8gdxoJ0i8w8V;PikxKR3MhgS(dpd|`&}wh|ZT70Ci7R;KCi{ywOuzu4F{ z2xX!;*lljDEG&riEZj?`^vlM*f|k&i1o?tL$%T8!lvU{$yn+LRWO1+$nCBQfwjat+ zA$}3FS5?q{ldz1nd0)}zTn=d=a@2{~9(%y&j_a$MwS}z}s-WA2gYY;K4wFE|r_!^t z1nbJhKbnB)!R)WvC@?!|3KmyP?JBGqfUztvf z`Fn@9mZ?Q(rY-YifW)zz(FAmA<@w6SSCaQ3RmSFGSyo%6VMc7d321Oe)Zs5=s;EI**Iam|{3jNTnMPD*%7)5a zA=l&3_`dF~)UKKp6%C%Zw$BihDIy2Y`VYg{9cqTtgpy;ecsi@Wo)EmE+Wt z^3P(q)x*D+_J)&^{@NY)#}t*6T%Ht(UBlJJsJq<=#B!oLp*vR1(*k2Sk((**(wg(7 z`J9-7*h+0*seX^NQb42p=sYjad_ZBd9@r=?&*H&yYi=c{h2{QE`f(zg3D zE)BXKKmT&$D( zsaF`~R)#^3sS0tbxB^HjM5*F-eOpV>-HMZJCX1S`%~EWv01{ICnYdh0pB^mX@!+8Q zJL7P*L3qSm)K;xgw^tkH#79jCSuKu)iBG`2<7&aBc>O}|H|I+F*n%Z(1LO|Ox!lZ- z5@#t-&si*PGb*~-W)`*NF%i}6?83^Iwx8SAvF7p(j9lEB&Z$Gr9cAb<^AFm4b$M#E zze4kL;GiSzZ-?IZeq>jkfv#?@fu^UFf5(w<$%dzfWKzoUy+5BM!)jJ+Y!4gn`f0V# zVR*qhZ}s9#g`EUP%Y)jwbkLfi1G%k2F)d9fAP@y291Sq$pNSPbTznfngp(!{D*7|~ z1600#s(^lOjW@#&gRcRMdAjC)Kk!pK(gwbV(RO|>3Z8YPrd21RW+;5+vZ{0R9l8v-XW2n#627iGDRd~?yI|pWa>vb=6&-} z|MPyRA3TEYN3i{4__=DuFw~WohoIqbRS;m1YW7<{=*i84*jde^Tyx+1pTT}GG|;A= z+g_l^%pnjnb&C8~-KvQ5fm8_yoQLMA^U(DQ7}vJ2g3;unuw2rPi`?IyvT%uXX<<|D zY6DwXd1bYuLUIY3hklVd%U6^ui+WZ+kXn0mbs5qQ^yfPTuo*uUkjRXsE9H_4^Uz+* zu05R##eHG{Bj7xzR_3}XoYdX-g+YtMbO`)H(FH2KVNJGdllJI@=ugpu{}EnMttd~g^r?0oq+eldYMe0_A7ylviswGEm*vbqyGeb8t06Q`ES|X?U#?Jp26Dk9KRjq-p{|!jp&aE=3VwTFQy}6 zUbvM_=h+=>&_4OclFiM55*{fn_%2i_>w4gzi{m7p|#U%v0s>|ElHYwF$ zWZ|e`&>%9a|2~&%&ILActIAgEYxO{Te|XDp#&P2S$?=;rFz97!x01HUHoMO3rKx{p zV&ME-e*J<2L<(Bqb7yL%#EdiTRJ=d%_}aAx^R+{TBZajO=C1*dghN{$so$ngJn~Nz_5KrENRzFOWyZ-3+sSnU3s262+>&33) zd5*5Vc?;4?yNaB$Ub>H++`pFe_ZQDT44DvJcoN{7E)212vCWhmB1}k;>Qw zd0Q@XN)K+2*l+BvEekhArLfW}SooAEVcy1H6a(#IFS?F9 zVQ2vHHc7Ro(m^j$+L@4^pp6GVY3rZhk_QSM&(_WxjaJ6#(lb6S=Zjv|LyzKBO?YA~ zIZ?tDUR8fStT=o_b>ooY&}Z<*_`&R-rU*9XdcNyDf ze}VMVwx46%TC)S6bF_nw!fyfE_j@}4I$WI%&JECI*$h3?*QQft*-Sm-JSg12{o(rX z{ei)cI|MIA4q*T9?Z7~qJl#V?QF!}Ol0?2J?{wGb`CGgJXKv9l9G#a&;BvsO0g^zF z;(qUAO5=W=aR|*}rr>!3Qid-ziR$YoP7;Iqk*u@X7kE*0@NS@0%u1oO5aQA4#0okQ z9Zwh}r~C|3DPG=`REoD3X`RP^u5Mot|GByT2f|07A#?^4hvy5(B)%XeKzXEb|Dz;{ zkFPjM?CS&0Rkp{~6d#HYhX6miKG`aF3|axXw%}?iJUIz3Iz!^}+7$fpT$zS9*g)+)FAphwBbilr*0igjW^mSRMgRpv4*U z4a1ekAV}DFqa6fU7d92BbD9i-grDLoFx&`KbZJb~l@7>8RF|KnD%S}TniDYK|LN<7 z#fBTxsoj{x7=X6di@Dbgt<_Vl)dnqd95cQGS|P@WnMDO^95KZ}Ovb4W2e zP4N*%-eE_w5C4L{M7)H*jQ@hiPv7xF@#!=SvYK61ho#ff*{D}uh(d%HSk9>sD7#hN zf(p@e){5-TX99SEI6_EL~ zFgu84qFCbmtrU&Zt#_S{;jT63^kY^G%0Q8bKGt2GoD7wP`UpUW$yXl^`g(pc4BSn8 z$dM3P2zgWlJQPQ`G(7>=1^?_WOzO(^kVlO6CE^n59s!KlR^atxcs>>mt zWSjXa4?)`O*UQhR{=cAmVJgOT#V@u-<-BYmYxBp*Bg-}A{a^Y88o{;mA`3t9+RGe zD&FiU^oROfq>qmye!}m8D5qYWd|a|PoSP*|_ub%9v2M2-v9g16x9p@~oMV&v9xi5p znRL-prbdszvm;jpCy=KgKE(A>*KJ$h+fLpj|K{qJMr8Bnm#_{0zFBq2UN5qvV;PM zh)=~wwk4W}&5jG2XTQGjNb^UT&BV9ZEO?fdy~@fc%smc*zl05T%h7l{J4L{1Oz>z* zgHYLLhrF$|Cd zi>2!?-`%hFJ>mF)`}2RnG5+lj|Feib;z^p5e#fja_m5dIl|tSdkwyfu?Q4q+s#<_G z_O`uJjdWjmR0zGi1$ukET2p;o1w7W10P)X5B-xCJ8N3VcrOfd_Z7QWe=90f+s!%0wbp0$Q)sa@E5qFrn7; z1}#z7;?CWFmGrVkFmor=f6uaTWC+A7)yX&pIhT+k`Ml=gxrf;R#>#3fw#Y0Z;<2d6 zCVSLDG+KlR<61D0p^?i0lxc=!l0t1pWElNvF^V0>FV6#H(z-ZaYP+_Uo5fw{_2Gy6 z;5|!LUueNDS*{F6H^jy?AjpAul{Y~it-j+kP>T^3mdVwnr2vT8wUr`NKssmAdijnA z3)odu$ffnz9>k$T?}-v@y24YUXHrPrW>+^0z(#^ zeNBNb5IebOCJ@LInoCFo?LXFQ>I~}}6)eCgYb(UpK5ELkefu!hE~=|9SZb2-*;E%U ziI5G9u+!DGs%}+vjY{3>vN84^MK?@0=9K0~>MS_#d!Ro#liX}vEhSq^Z#KEHdFUSj zJ%8*?pU|*7`^S9XEaI#As0u4CwMF#gUf_|+T zUJY7R4618YEvpd?pvJ6{=^L-6RrRf#@lgsaX@fiOC_5VV)ulu!AyUb)d>9d$9To3F zo+_QxKZNX9pJHRZT~M(cH+I!^Tw%88c))ROk(zenMn;q6zlLfpm(BlFo7edkS!kB2 zmNmCZ>hyzSoeq(9mkd!SXP(7&LZxliQj29^;+irhE|7?Pg1XXU+s-GixzetOI z5IDbpFY(!F;gC4iPT2l*&YI=>V^89Bn|H)g`~K{q03vx82iklk#Z}Z?I8ooKeAx4^09Ii>5%GYxE1UQBalO_^>OjC_3u6}nouL_EqdTL)|oa74(8%{Rt0 zitj{jF!!u%Eu9Z-&&|r#b!F%3l$pbdOco1-z?^S2mgli@btSr-e51IS5>3OXiFuV( z#p*@z@wAj=91UY!QGcg6GuKe4Q5w(3y$+lSOj!zb#92x2I4Fv(PSdI&NXsRbpa0#5 zadHK;6f%|KlIpeA#jVO4%V%Qagr#g9n_yAa8gzWZ-p#YtKa3Fknu{IK$HO3B7=R@M zR+Q%=-CrV#m0|Gt;Ow4_I|yLSpSNy9Gtjm3x7(k-UHFx@Qdcvy?Plv;gRWj(K&56B zNsT8pr%annOA5QYbD)9MMw5P!AzXsqpB}NfubD5RrV0cEat1$*0(m}oGtimyw|X+C zemYk>oHdjM@}KaDvu&EWDW9Eke9ct=&sjel5da{dczEl^UZ|52b#Q>j$L-Db2;olC8-=V`P7&Pu7@L zi)++azJV+NJ7V`8H0WdUz^XD}@>il9rni~Y8OW4$1}rMgu12HF0f-I4ioo)ZrqHBf z3l4?Gjale1kbOXVIdVhjL9dTR!Mm z@mgqC0m2laQb`o)s&T7PutLgJYE%|{e?Yp&eCIJus7zLCgQBt-!T|wug9oOFakLdl z*(e|vMOV&2S`eG519_XE5s=fE#`en*IC8&yf=0}O?;Y^U@P%Y39iw$X35<)~cTEP! zMU+BY797FehMXaiuE3l)*<{$XJYyLG%pX#ysR}lRg7pZch5U9azSq+wH{`q_g;GR0 zNQ&}y%0?c%!2DRDQN}1G1cU}Tqog#CeP7{%*m1UeP{M);vCy8|4zz)h8xzKIV+&j&{KJXR?L>=3THN;H-+@fADwi&}S+>r3ps##jZLni-v!+@N&*Bs~4NeBBK( zkgXW4SI5a!7ku(OWLIloH#}fEySl)`#E|c?rnm;64_2Jq4qCN{iw}gTI!&U-wr5Uh8d<-w-IPec%Bk3G$b_86d zD18{_qy3mUVd?rf|6B2s_Z(^n1IyRRa?Ein3hg%b@afm5Cu6;-r5Uo_&vnQjmhoDI zpk#qO^l2pkbORona~+SdHj>COzQf((sl(6jn*p*H051dR4SM@pFYmC9irZoQZv1hp zzyE+&ADc6Z(s!D78u-D;1f$94{y*_Qkaq;8!{TJIBcewj89gr|wi!#mRTp}4`C3b_ zu5zsvsBeL;jX#a<6c6p`F_FFNCX2TAhW6;xV#-Cwm)PdH;|&o?PyI`DMy%~{%z86qJ@ap% zoL!tY^ICtm)QMoOq9X;0eHn{N64?D23}X3(y6Xz>hpojB7|U%y6wHwcC+w4_%>=sx zMuAypv_0DkPt0rWwFlV-i{*cQtwCdMNY+J5EkSbwYzHU9etOu9KnI=dWDDDA)Y%;0 z?lu9r^xcBIPlZ?gc-jlX<^-Y>MX&K}CX|7`)$TmD0=6(pm0fL_%cwDDQHFtOMrpxcSoS(A(pa8e3DIZ?Vi4%}_g?C| z00ja8H(IBjnjb_K#7ay>2VDYEQgFFsk= zTmQN$>?5^d!@m4ZVL$mDtgyd5JKu!^#kK{)LAdRTD?V6adlrEUvEnZP?#y&&-WuR|M%mW()OBq8-rDC5iI9FZwER@({ zGxXm^q?Ya=HftAL($O+)jR(PwDJ6nHUeW%h9#fqc%y%qRQK?-#fn5M2jt}SKWyREy zg`s%iVX3lA)ib47xGoeL8z&5V29<32BS zzlStf|#cH!VoGxG=w;q;>IYet>QK9>sY$!%&;QLUO6V|0Q zH?lusvKW4@FbfLaia^GZSbn^RMz-iz=EiV>q`-c5%<+P#v4yHUTIa=^h(F63#Yvjw zMOoEN%lZ>*lvoE*9{0RI=|4TcyuLMC?M}DXAE5tyWREA)*?hq*`IW!`L~WKG85D$i z&CU~Hk{1*Qh*tcy6&OWSO*c#{-&0UlF;G-8q|l><8fj^3blrA1U2cyTf)NzM2?~`) zXE0f85K}ieTpphxXzo-dS13V(Ues2nHyBN3i`ACz?ha=wviwfO3K!A&I`g?s;MR4@D?>qY8TO%(F+$HkkUvawa*WiF>BDo z%4O$=fnRY8S77-Svz^teY3J>%S|wPzY6!8?y&5F2_~tz^@f}Kg&VA$9yOzJdnWcJ< z$0_ydhdEzKl`bY6Z;g7}jbX+EK!gcpTu7yjol^)9VL}-fQfXt^IYj^wCX{g@l{S{0 zQw$JcLKzoQX=B+rB>)j7lyM=IHkO@JiU~G+bgro z^4rqJdG+vpvXh%Kx%sE6aI7nbCyzD#uFmZAREEKn?*wAjg3s2Lgc{ z0m&t&5>v`QxE>RxDJuv zHjMIy2J#LK+q^-f0O$yEeLIj=9mOkL4pS*Rj&P%J5Q8oXlw+@lL^vUt~Qs55>nTZr}@d4t(yn~Ap5C}SJ!#YjVP|Xj2=qph>Xs}w$}g%ukb2@oBXu^uQ0rV;N`(L z9d@e01TGXQQHCw$?S)n4@-v4$OOoC7B}NVzOaW|~k60)Ouz;`<{Sz0Y)C#MmBuKVe IEmi;k00V@IRsaA1 diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Regular.woff2 b/ipk-source/sdxpinn-quecmanager-beta/root/www/fonts/EuclidCircularB-Regular.woff2 deleted file mode 100644 index 82b64139325920d1cd6feab61a75571269aed684..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34672 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%0DjAg~`39pf$;?s5#9R{4FI!c>5ht7Ka zyJJ72p;<^`Qc3NdNhS3p19F4@J=@hBWUh@N2lHIdrxI(WBd!QzJo7LGkpm`T8ptOp z^sW>Rd1kDlAQG%iiy}v3WLS(<0PY$uTe4*hd-Q~?9n1{kJN{FO2A zbyPc`5T(Y0XaS}`c^dJex!UsCO4YRWJP{3;)3Er2hH8&cU}k+=i2wwI41qwdh`fcD z#1VI+q&0F)swAR>(6rS&EsdpEGn5k8uV!Py(pJ2IhJ}`mBMG&=Hlxcp31q-vfJTB6 z_pZdb2>a!AfZdCPt%Hhx$LT!CYnW@vCD>w8`1UbUTowi7rIie9PjF9ZUYzA}1utJe z;>F3B(AO-Xarz8NY}6We$U{B&A4Kcex8gJMU5+NdzUG3<$ruc79nwsgbU)HGcyhg! zyPI!D_sweM0vKLiwAR{kx$eF^r`*qZ`4GG~Kp!jp;%#myHGd=@QELJeDONQ|uzC0j zDZ~9NH&gDUS9o&RDPa&h7Kw#qX{hZk8k`fO;GRsL>T{VFZ`tKiFP~}|Z@1LC+M~^T zw9|-fAZ)kmwtMFoIoVYw&Y;IwY?5adWr0|g*mku8hdR&dlDbVjxq3}~rvBMAfD?2@ zC<#+UJct4@;zP5vh7FE# z5giv?G`%$S>M40i@QR(kA$)f|n=9Eb95@4y+xgtYz_WCwEa-*lM?lG$r6i+OVpiq3 zGXY9=nu5!|W&AMQQWpb}Gx4Qj?~DI%;IqNC$y=g!1`c{9JA<6ZT3u)HgTWEz+MjI? zCU-Giht~~IH^F*}yd690Wn?=EQ7DLzgbp{UP#Tcgh0Gabx}fxsq!-FvlAa=ICsHWZ zI!GiT6CDi~79Uoo;%B;m%n+0ktjs1(&1$Jdrw&T}3TYrsD=h0)%K8TXdIzoFP7+r$U8zoY=3!iCKTf>nagQynV+Y^{g3 z0l(eO+wQI%kUd`6@4v&|I_9pE?mFWZwV$-^&}q`+7yu(+QeakRL9i;a0d~LvI90d+ zH{em{1$=;CT>vTQoRB&z02ly30RSz448s5v*@14-PI~U@?~HZY3jhHrVPcG4lwQiS zm({(*d*#7f-~(T}euI2>J{xu%II|vHUSIPW{;m_VrjpG90AX3=T{sjmmE5zGX0(3H zs%%GjSs?=O3V$DkQYzO>ghK-aX%x8@0Qlg2tI;#;IhZD@N^+iSO+eW!@2U`i+Ow2( zQ^;A37?AJb#v4JPtQ}v$)PIsahI=m4t+p&2O_8sZ)VK3yFA}=uhV@9~y0m}p8XOT> zF6ZTQLWmfcBk+L{j@?<@lqF8tzA8<*%r2d0v3CT(Ku1N3R99)WxE>hvaU%F}z>br4 zqM0x|3;QAl>l!>;SLuGlnML%5a+5z6jxyTYSgtn}{cB6;DYrYoyA z7Ep9?o{H&7!nG)i*v$4y+%Bx{E`q30bk+hNg;P+=Q$UDTjUC!mEG-Iaj1*l`7mjeJO2eg%dc z_krEARmR(wNKUjzc_!eMyZT@b&>eJ#DdR2}c2U$N4!y`-uDQx&F_A55&+X50ubcZW zgcoXA5bp`Y7Q{2GlF6@P=qJw@$w>0CRdq1&0X;q*vw0mAtb|=$0r!ZfmgKz|Y^rlf&Xo7eY%7uxx_Omdp{ZBD20wZiGC}rb7xA1kejf z2??R1Eq%C<2)n}|r6rzA6cckJldvhQiTUJdsSLUCKzwQn-zgAxk!|sqz$Yn}Br+HR*^cH3jGefB%(E$@2IF~^;7+65o_*e5>qxi8&t%L>`p z+S%JbI6OW*JHNQRy1u=Cczk>R`26|(2eFteY1#7lSkBLjlC1UxW`rWKL^3@vn90u8 zjj;&=gUMoZxCuOdVp57gC=#coXJlqcq}e&SdHDr}Ma3nu(z5ajxuUYFT3M^AYxD<# zk$5g&D3;2VYNOK|jVCj}5KfRZ!*aYJDo-zO?an}$i;}DWRnrX%I<6lOn(%Z*HQv$9 z#LOa;Rg`FUDO}GB%fttegQg7yK)Sn1VnY1%K*U+No1@`ES<%Pr5um^xHh|ZM==+P8X`+&kBCr*Cm zHB3F`llisRd+T_PM31YV^?#QWzOEOYa2Q1~H}SNF(o^G|re;vBnGGn>pG-FI4_9?fAtHGFMia(#G#d_T$p zW+E*^RdxJj-E*deVeZSM)8r_Xx1G~s&0^Cq20zeScl!nE2a${;) z#b(gV|Gcck#UN4;lcPwJmX{c#8Nyw^MmNHR126w3Sev1?23{{H?Etlb2CAgT2Fj};{rZ)v)&Z>+vdzUhR>VK3koFqIiJgy1e_A;iqpZXFCA+b)*I&-<;S$M}OQF6E?tX>Hx3=u+N z?xF-i=xy_M%n=itfidn^&LC6j6t9r`=il6gzrP~&`u#E1YZ|i;Ll%QZAu}O>44KhG zU`8XRcXbrM#VVI*yIG+SK_pA!q3MPF$2aRI5uV~ zA8vFxqFpwgD&rI$snjyXTk)7bh_Y@sa*75M2{b*D=B{j!39)P%W#yMMf;?M}?kwV= zY)Y#{xwcB=J$a`gC3l!dVT#=6vA;hv%shZoReuW*+1q^+Bch&BOmwj$bd;}#q&QH^ zoR)gsgWr?U3{Y?}0QK$9-NcJA^3F;FWCPyT%UxOSD#s zUkc9$m2G+APK`hRGPCB1Ex<*W=d1{5p>`W61B^&s=JDXkL8N@Z&de8x{Kj825#qI0 zwMbQOqdyF#)if!2j>8Hj6h__$pACc+A7d=(HzX`G<*87x3D?Oj#az9N;8|-}%4WH~ z7+a>E4@k&6Qwc7m?8pkEsI;7tXhA#5V06c6$YkDI*-|SCYS8#>AT$T`wMK6T&;7v7 zTC^B_Hn3REJ;7aPZG3R#bJWGi zeTi9@Yhw&!b}B1Ri~Icq*nDVJ`xf;UhYDgha&b+Watc~{HD}h{Jelphw=da?tGEcG zk7W{3viq5bf4&QMA!(|LCq(Fz%3~8b5KR`ij$!^QDHH@BW_L5sXd4CEq`# zNVIuuGtXodiP(q#NB-CDmMgv<7>JE|r@!A3HI-+zx^7GhTi1Oq*2Ari^fS-t6B^n~ z)T^u#wh!EJ(b@ryA{dPwVyr!HCTzonq70aDiKc{L#aNKnea|(ITyuybj_6~jluG$2 zcp!&kR05mws6!ck-Z+H!*eGdr2&{;m&r{S;m-c?E8CbW2{vP$ODgAYWc4H?Fe^Qw@ zkOT~g^%`Hm`@K66T5~m_`|4Q{K!9_ixhN z%(yeIGaOWBc{CNlwQjnW8Mz+;oq!fECEnMs3H5qUe7HQ&lX?cCJ=IC0o#|WFuFEE( z*<=x9MLbsZATE#o>LLFv?=%A)GO{@4dU0uC$sU1BIf=Xp=rICMq#;frP8fQ#FmBL* z@~VIJHktTR5jiA^5nJ$ggX#Daw7Cr8Z9Y3}y#-J@X=IVYP3JWmkqlh9-psWbma<8O z^Ub)biU#Yu;S9M~U=dve;?Q7h`JDs>D{nFao$8K7dnm5UJw&kJ@3}$4sr&>|DHJ9% zGa6tUanVW??lB?iz@1veZLh{hB4-6x5OKRH>;v0bj)XR2nq)A3PF6G|E9CtwFnZ=n z>xM;!*vBDoR8_m#_{39^UE%eU-}e-6&QhL1gJ_$FsO45SG$I0;h`HSKGdH3VjbbL& z#z1;3cwAi%AdHn+T{Lx?s`kBEXgS_jH~U|jR`$^?Mf?flvVN%UB6W>Lq6rhqu2?(S zbycRnOZ`iIx0XP-qOB7K)|f8TsFGo(%=GO7<5m8ikW3OFpnG+f^+&p}x~4}V^_T*`3&tQ;kmJp$M{H~-(8dOj*I40Dom9sp zh9u_i@BseUw?2Qz=6WavpAR)xEMHDS2FiBsM6EO;vId}C)ebGtvU2AHx3N*LTt+2< z$sW^=zmbR}vR0lh5L$|eJx55`?FSPbiIqI36`<`^RT8XwVPDOaJeM8X0QStLw=ao^ zO|>2ls`N&=)HQpdv5nVTx1?i-6)!)^Koozs>~SW4^X2eux(kzf$x&+ZsVpxTC2ue=V3r%8ebb(IANxr2 zTl0+uH)~!kOtg9Hub%V`0~*mGS{-ibkLJ>;iOt>3JGkHlNYR`PAMTY<21*f)@O$pf zPI=lgNowElAQHVF`WPSOeV3vpws_KAnOMc|QPe6KoOA{OnIwk0%5(zjB@`pu92HlP z6M=7c>LfJ0-z0J2iY&t-Vw=Q9TBTfi$6T@5t|Ux7B**2pPU-dZfWnI0l?HdJ_Zi!Fxh9N7`@ z6ZIaF#0U*9Aaq0Fco}Z7$`hOJLLV{O{LV{g8r>A`ak$JZS1eEoy`Z|*VojTKB(7{= z&z-A{RZ>$~<46H{{vJ>9Fqhv`X5t7Mwl<1B4E?4U4a*}lLVt3-Z0B*T*E@`aA{9qa zV#RKp)X3%;Ff;RX*}kWI!?A?6`@Pw?ndh9g2d1(>HydDQRJb02AQqi9FR0?--TRlh zZ=jNtB*Gpn6+iFJ)1U2wmhC>P+Jwyjyd4xsH@srT<8$fIi%`rf zD+9CCX@MmYk&fp1^{{-Qv56C%j1d44C1uebtER3o(a1Jm@2W;~8P-+H(Y{%&>uK|R zb(a$kXsc(u8o#tMF(&ZSWKa^q&Lnz2H|rF{^W%+}M2 zl;u9kmQvab80d}GaHdESXu?NQ3XCe_4wM>E$OScm&e{kKv6^K51z6WWQ5!&bL+(4&w+L@`a;FSnEsV;do zIzbw^t()sw(;z21G}5DDOr2of9S~?*hen%i_iedvKayQUGt_e(gTL^kqwcnj)$z~N zb_mq5nob$n^mDI3ud*3yvHHFvhoVZmY(aSsz$nm$tJc#p`_{(6!hEq@TdGCz^(Fgf ziCrl}iAvAPM%#iMo(^=N&+RmtzNC*BL=O2l9cW5Fsn4-~tLxA>j`UUP<Lqg3L;6nM_B$P>>fi zNR|u#G<(C=*q7dxcigGl__HCKyI)5;I`Kti1?y2j@auD}#lJ_>br_aDzHuqV*Zz6kZB8HYzx6equltp;?U2Z35h4EU*M8?e9Xobn&F_58@Au$5I)HM2-mDnkGoqNB zXiu@lF@m@m5(6emA6RT`^58&p6svKg&PoyFrR3c57?5FCfm|z`<~r3Xll*4{skc%T zb-Ky-+^B2HtX?UlxBz^|_~}OY&H&+PU#?f`-KnZ_84{5H(IVC~IduC%!r}-TD+Lo0 z;4_nV@st45ccrf7v5s?&vE5JItZ>^mu@$)@VWUIL{_>f|g>s&*u8IKizr;g|Tl6~H zbFC8W8Qef0IPhDG#Sb1;4VPq2FfW9d?!6xgo1T9OEyF%Yi3*D@euE3oO+~vl7k70l zBRmyCYryZF48>9)v@9YredPVV!<4J69-yi5$Dh5kpXaW0obvYhp4ZYe>$8#r7!U^i z%MrwH$mT~?ZM9x#WL?+Iva8Zd~b``E~51+I%h`@e=%lS<>P|V zh*62&76o5M2%KE+k1%7*8h=iDFDVOFdk4lu3`KTbot}2DXxRN&15`qT{*_Vmv-bS` z3=ATy`)3--M-*uLQ{GbF0KT)uapSN=NwYR<7tz{UYQda;q@Sbw!QWW^;gsM{sIj4O zc(5&hapb>^jf@rT_>=Vr9L3uIEIgBG@>AAZf0`P9_Tzx`*m2FFXLRm;-k7_B_nZb3 z%No-M-m$tj#UA&g(*B8fn!}3mdA7UU8awu@rduM1AC%SbX(KYBs7O(HiCH3!dd>oU zRCjb-X%~2cyXyi@fV3-;(^o7tT2=aj>$?ae0J?E*;dpX%dp5z{DL+0;h8g%}Vj)K$2cKU_{jQ-YXJgRK@1pi_98_ z?4>bN%!3Kkp2v4Z7THpkEM1hIg||z12jc?R7Ml3M$9XG_<%AuJE+VG$TXsAyP>Z$J1TWo|(L5DvpOq*H^ z{98jo30ry3b<4n6x~#4*v~_B`AZ~_7;9*T!n0{7Z&z?K`%Y!C z8X38Eh-!&YPL(3iixFN4YFd8~%4xQRgWBn*0*t5{=f$T8)y2`4<0h`n@i5N#z!t1G zSiv-Bz51iaVTiUfc%%qrm`cX<(4e?G&7${fN7PvO#x2&?mQ-J&ONYdu!@q*x5XUo9 zHu}HCrShHM8CFTJ`PBHcH-0<&r~;+Tug9{2ttc?{V|zV6w-Btedd)fDK+Y{A!2iCZ zHQzGuZ9gZ>?>h@mYHBHCfAAx}@n6nexUlZ`z8fnK$2B(OFHrQV93JR`Xwu8ezMyg# zpv^brT|ciaAq{CGUj=%HfFmzssMC9fBtd1DJhw;Sa`ZR#f;DGSb~Q4Csz;Vj#KFL( zCFC6O)UDd+VT8V|NXA%A=pci@9)DH}y7v4i)*~bl!8lG%67=V@)rcoXV2a?7QmK5n z(i}qm@qjm>(xhdNa-F9H&sJ`YHn0IvVF^Gt=nKQmE#vg|)^@#)7xJmkUA8Hc{peyT@)t&~u(Uq{*I_Kw-nsrT6DKmQ2?-RvypqP0mK3Ll@G zo`pJT^BibuG5$igc@_3`y(Os8joFrfTG`o!|C8KiY=D9ptS~JjmS1J}c36Tp)Mxi~ zxo!(0-%@HHBkJ2(+EY(wTVG2T0C0S(mNjact$Y1l{{Yx)dY9elFHQ0OkQIE`tv$3w zCd$}F*byKU2#XkdX^A+tHDkc~ES+00&(z7znU%E(11>UpPLHfN$PmoKry*c}uw%K@ zVFT3vc;W+nxw{3JUsQLd)AImWs0*h1B6AmKJJa14b@bRBlYI;+wtyzGjqqN9r)NIg zY5wbzZnOYsRoZc5<5Wjot$m`>Ae90D&{iZ!6vgAx6oM@A^dT!IGGs}nk`Y>nLqHcG zq0>q@XB-= zvVt_1(Pmp+(6H9+rlS;Cb5XaV(*j+rzCM2+@x0MpuV*hoBcOW&2fj{!B7pP|&h9K+my8}rVa2ro933E;#Z9NzkAPlP^R0!)e zPNgC)($2r20a~uw&kiLYWDG$$dzklqwvk?zc~8I)?fbNt6!dr z;(z=5gqy4W?=0%5Pp!FFWbNr}Ow;mlbDNuMoz$th-n>rF?KX8yZgo|=GTV*q&4X@j ze;)N@e@{0AoS#qH*IRbUQ~G+$OHPyPu&TsbI~tfTAtmcQTaK34H$@>ZRwFdFhH1FQ(zu#hQ)wD4KnvDrjjwUE zpwEL0lN^&2s4!QpMr}6P<&d|X(xuNsj|0%TNEBu0SQ3@QxH2}mnUml{QkBmtw=PVE z*E)Y*QT(NAvatYHSM>J2)(;8W`#$8uB@!P8x-VC9AIcVVTaI9{pL?bp^;nG^z?tsL zjYIcG>sJK$kPb9+XzPUA&#o7UFLVk@vdPNGb%@m^tf}7DBPPl%uENKzEia+O&m}$9 zhr3M^9Y?U`!5ZRX zo6?+?w5B7S=}BL->CbN&>K&puQ0qT6KFIJqo8F8rYy*@;I&QgqW?OEJUEXxgNACFE zuX^;kZ_v{KbVLFqjy&q7LdX^gA7(5Ijn^guoh9mT1*9N2{o*xf?zG9!D=~4r$eL= z8AJ|IK$H*_L=6doXka9*fMJo)fWEr<_$_ETDHc#tY6uMhcR&y?1X=VW<)Pam5MX1X z*p7>ICnlVv2-Rcxu+ODH4g;C?@fyL&TpNGBgzm{6=0}R@94BUw>>>IdLEM2aAh#E+KD|yu^ zDku7IHeIDyfhfVylR4*6#_j2d?F7x?U4h8K;C^m7@>o3+r46S(P$MGJY}9k`NW zv{{rz4huf1d@4&EqU>#BeW|`C^&o)Hk$Hz+NKjJ7> zU?MlbX|=iwJ=^41$4ExY1+^>T6-8dlM;N9?)L$j79&IxX_K7B`-H$wi4(A%7tldwt zIgMN2_JA^TwS2;n7`#(rkD70}mQOyi0slPSgX^_v=S86 zI>ZH8xf0KIF_0$qTBC)Odt|%Z>w1Cw4v~2AZ7q_t` z$l75!)F4<6LU0)-XI!LWq&UrOaMVw4h3w;yJr6Muumy@<&`N+td5WG_cK%LOj;0k`>yUjE|2 zyP_N@H_P2J03IDcOKCN&qZ!&nN6`*?G%`_!8bCOPbLhZTR_Gc14DRRMe71^*|538c zyd<}dL#+`IzhY4m8Y?}j#O&GZ>RJ6ve+1zI060L$zkD3&NT{Hf9qi!ka-$ z4}IK!8)v*${G}h9CzQ}iT0_%%QndofJdLJbXB#W5GMohd|55(_@gM&F@Ba47U;M)7 zfA9a}=lh@ef3vp2z{c9j(p(=&0_FE_|6Bj&@5dp3${+H(Kmi7J%u1l>oE(gFv@~P_ zK#wpMJPwONV%U_fMM;%zq+97)TJ5r6jlW>rIi?ARnDvh30}#c-D+lK3s3}42N+{GUQ-$MHr%Nh#1C*vcbh+bn8OF+#C0oujFOY^LPrE_`r16yN zvp)E|7Avf>(KdS=big4;9Cp+j-twlmz2iOaI_9{OPCMm{bI!V;U5AT#VXhLTD$-}6 z{bs8w8y2VpzG#Qg--l2&>C(YZoLBdxrTa%L$zO_|1a)qW5h727*53HLIJ;GVpCu^& z6(n?O_8jG&Md``i{H;-&2CJ>?tgZVRn{5I247a!2PWLk^8Rncfv(=1`yY!3(va107 zE#U0S;Ovj!dEbLK{t5ti3&0rw*J*r*8)w9;A4r+`;spuA;H-_Yp<=lBcm$LJ^+B=- z1EP>>N^ygaF(Qz1f!M*jVZ(fEE;QTE0_vzpR++KlN0A*FL5Im10d-LXBs>v<#O?^) zxTMmdNE}LxFC!9(n>iQ%B?uuSPX!5Wdd(%rLYfy2lA>6=%$1xp;{d1Ntr5c)bau{q zqQMyeK{K6an_%vhXTUL1_U}C0C)esWx_h_)^74OfLs;r& z^b0X%p_{plW7ux9lF1FGK(S)SVvBaWG)H*Gqq(>9clWVuy=u_>4R0=fl-COUl5|@~ z7lC;sxW7K0=~~5Is!$%ZTBYXUWj0`s1oaT9#+ViKm9U18C4{*S2rT}bK$$Z%r`DB^%jy6mQ z_mmxi0-HJ}c?LdS3I}w}yMBc7pw)fdudEB6gkv?W&hH=C+ospX9i9ElcYXUkQh~I zo>o#f7k&n!d>a#FtC;@wriE)7g9DUR=(14oDMcIX5BckLYauNseLU>)svL4H^_Z*c zBnW2qM5d#du?24>EI?iu?Xn~D(Neg~@nW!G=ZtxaFeIrExsYWc5G!8NC`?o2J@?}^ z@i<|_AVa+lwDTHRE-o}kB-l{Hq48oca5e595!A`e5tigQZTHf6JRFNgf|l3JO6<`z z>0BRDhNU9Ckm&eHoj@>K3 z4Ke~mSA#~9IXH#ka=ZwEK>!e*vw zk(J?mJ89u|WZh7k!&vn(3vB|_;S7{vD8Ei`ym=TQS$9i@6={V6%34P%(ZHqWKR^!e z9zYPlsFoLihIn7JCP?yytrgul=j-#Qni?9Q^0`pcd*pHc5TkcyhC8@i54(h%l6p0? zDH?$$^*0JR3XwL8Je;H5Nte?&q=5#Wz^e=nx#1MWq1;^^%`Q7O(^ZXgaKl|Adgi?; zG?Z#KEDLQ;v!#l)5(p_E8Jfa3L{{+qoC?U0)kY&wti6a@rDZwbm=K@l) zp)eUYGvVSPKQEM`_E(CQWHjq!Y=kK~D5E75kY}in_9T;$Xi>?~=7|dK`xZdZ!>kVH z!&C|DGx~$y_M#UPOf5lRa(~VkzB$d3Zb=#CkZbPL9SxYK)@H1t5AJckaU~}>_4`5n zYWE|HJfwL4*x^z%0u%!cfQtn91sbZ?7Eeg6GY_pVC#VTe>U9%YoxCJVmYPg zy?3hq#NLUEMIP?g8m%W92}X_M6D{As;0FFgqlRj)b~#=&6=4FAf-qT07PJh6VhpOp ztFFs?*S5Y*!<&Yi=235H_wgy$b$!--oV_Dd#1|hlf*eTPbm09PFLg(_EO#Ofqr>U2 z31Ld?sesXO)(wU)J1Yc`V#B(m;*RactP_+~B~OCBX#_kE7FvKz4oB)xCK-w9O+2TEcegroK&wHZ>;V56*6Lv=mw+T8wM>Z}606p-=~w8$f6B z#C<)$)YW$)uR8wXpj2yCRbGrF&CdDv1qgRlfXNU@w|HmPojH_k)bi{)LC?SlYZ%}7 zT;x+6a+GQZS?cL6%pn-z2N(dQQcYyu8q!i9%46m}`&)RYI@MS^sJ}d=VVPd(iJpys zy{GTV08f6WlK;B+l77_&gFpH!5S4+bt48MOMX=tWH1`irV*=i;vNs!!$ZyqYp0vvz zD+9-mf{ZJl)w=m)JMJjnp|S!k@oj&R@4hxXC+#Bb`oWw@YG$7?pWf@YZb|*2om61O z<%xtM5ccdmVscdiL93r(0~Y7p@_v9NbsqyCohaGdo6Um!L5z2$q*?vIyaXajlzDEq zI!Q?hHFer7@*N8G+aHS70yq7o!89Qcq{%FTB$?&JG|9<%JGodmSiX&Q<%;x*)dMT#T24cOqRuWFWu~RNYD- zfRRsA6fI%+C>vMZVSD+SVSL+Fkq>GjP~bgG{6^qapBQIp2JBWx37Z&on9nH&mk9 zxMT`k5l^iCdRkV|N&2mi!ajq{X&^B40(bJq2XB?GM(*+m+@>wZ5mg(h7;B%6+~esF zp8SZI+&M3Spr^d4(GxUS%}KYCmNQY8<8wwxMu~}gI6WqhqCY{+874)eK|uwbo6-sX|%KmL{W_(W~iI@g2Sf51b!I ztPpN-WZyY;9Ru!vSO5%oKMJzR->Zp9uDU-n-k8OQF0C!D$*;C!LXPAuh1%=f(~+KI zmR~y2;+bql$w?PGJqZ6%T_A!Q*qB|fkC?0>CCbrG7&(#gV{w`i%3Qd3g`Sr)qA6FJ z(L5~8T+qINzPD2O8Ia&g5s}o1UO7&VWS=}<*I@<@Y*rX1As}f#U|qn7Pi@m|!C;%j zp!FjZP|<2t+FS!)HT-5(886z^WvLy<&)`P`gF*&2(`g+}L&dJ<3^-tAjJh4l35g^= zFVV=fEz5XF2(aS~!Gm(dl}-rT07E!rNnaSbyjT#2^8ONwrY5r?%cXBCo2DUog}mbR z*A3&>>(fOlb>Xa$xMP_-8Q(6T0D)GMwD|Ra;0C3##?rFGKdsH%jTY&hmst$xMHy!ORayEFIT0ns;0TO2H`hoI33erDEfVzPTu zfM1V`iifU(nKR3S8n6mWycs64+Fr>ztBMPKj~pMtw;?r+-esf&AZF`}1iF}&I}L?t zpmWIvWY`+PnI?xX+$ifz5{mxNc65^N8i4>pf=MCHj-D;sjSd0+_v~UbfWo$=A-Hdm zr_l#;IYu{|VW$Rx6z;Ix?$NG8ZW~oQxZrk=l~pJv$7O$Q>hWc4E`|=7MqoNx1=m@> zyx;GC_PKT%H=7~e9UwnBhug;F{B&U!&w5=iC!5*Oq=FtG*K_V%{5d`NHA?Tqg zHyF4UBVVyeIeb7^PJdh6?v--Fk7$ewWAh-i`b2c?`Aa+uJfHihWD&P z>y5pY@C)M=8eL{m#prb5JtXW5GQ7nPgfy*7iy`{1p(wI$5d?|-R-(dXsT~53iAB&) zo_fPI`ka+g|AsQwhargbFE%Gp!jietNT-UVWp}tcW68N$$-C9Xw&(C!5!QQUFjBR; zB{s=;t^N|<%-g?$5Vb#0^tvz(}3sSY}H$>npE+g-p%SghG2FcUJ+m>G> z%?U`yGMPapQ7%a?zYH#uU6u1 zcS72;F~9OGZ2HZ=z-d;oIa0d#?1M-+GMkU{ zKVNkSf%UwjaYAdMr;Tz@s*%0Z5IwrS7Y)J%M#%#K&EFSVAXYCF+>UcNB8Slj@-??hxagQi1t*90cX_moVSQTbkY*ei% z^g1T9ub#qh8i19UMRbIYARAsA>p0@=siD9^FG7;GGkAyKGCw*=o4w>|XQPGSnQ-XR zTkK=b=g6UO5Iehr9!p(D?38+RthAFi%{qr(1hmwEiEef`WT(w1>FwyhNT%XZC|#UN zAyu%GUREF{jaRvf-iE3MsmH0NQ4LVGr7QUa1KPB1a+$acZU(t7`o4JXW8hjt8F#r6 zLyKAPKLd-V$HeebjiPVdoKh6PQ8t6aBK>Tq78V&~_gKh5t(a+@WaA>)uiCArSc3v! zK@M1_*l#)(K9|W0_uRg!%QgBi1-@vPjUh4^mHkJ85!trbkgE-xC)LVU2VC_{AtWwl zxq71>pNfB%095ii-_VO+?UB!!+@UV(x9EZ|QMBrZjC=H}M<<(lmm@J6bsskSAS~#p zbW~NZ%&JOwQdir#HB-^NUeNDC`-^QIMtPhu&&m!UR{$wpB^1tuB)Gq{9oaDl{cXIS z%TJT*D;ZK;d8E0G6TTBMh1gFFl01TM$!P4<6IAscs&WWqj*>)()Ota+l}}6ers)g~Z9-6tLc6||g^y>WE))gK zh}RAQzLsBfU09t>UMqRja3N_y5BPe4jPoSDp4?L}g4wwwLkV)uvDW^B zc|(2Uo4_8P#=#geeBe(WI_k6Iel}fs!8q=kTV}>j+$Gs>;-u(##8X*KZt;yqrw7jq z%FSex3KrdTOem^qS_REv*VaQ5q47kOU^&;uV+^Npf|$WmJRtAdzHb%EW_V0=T5yyFx?BXB{Su&(~n~UW-*5qZgtw zq!CApe&mK(>0+X$C>q(?c(s8|A9ItMKE1YIUA}1yLjiByvrvU#;yN^3wrnO|MIW7c zAau*R>PxN6aQ1I}H9{+UtvoF){iEVTs6Zkj=N^%9SCea2lWE4&p2Jec+1bjTnF8qK zWCtTk77UdOhN=Y^kK^F$1|m!bT57=iq=uAgAFh7JS^Oqx1~OuVn+PH=#GXk2KBGly zT3^zyUWiZ;MhU1LXG13P1?==e2SsBDXo~g+Y(rN9n~W7c$>(_t`ZO@D27|RRju)K_ z)d^D`tJpG_kpOUH#^1>Kg??)dATl_KFNDAaHXGBblEr+sbwrp$=~bB#Kvk+DETfpX z_8SKoy@}Q})Sg6M_0a)`F&j>>(B&?ddG+=jK9uu9n!rg`P1pyUeN{i^dS~U@zHla( z{S%qfulD|j#s-|?)!q5nwYh(COcHwGehx++|gaTFlpPW42bs>DuVfy%d8xv0ZV zR!5xd4nJ9CY=VMXzh=?eia1rjy?!-&e44@g6t7@aX@wYy`F&p?(@Bue6ciPu>9IoD z2}XG`Ce%~EDUk1yRFEhvF3iwl6K#Wut|PY-&*V5fc3JPw}I}%X4f8R+~#2UM-TdMET|oXx{vZ z0sbBr97HlhlN30;V1Q6mz85?#v@O)l9G(?HP>cQ~q!Cj|0M-ym6kcFH7 zNFwC#3c~+xb!i2f!cDR$vG)vC^JowWtL)#X+E;5rl?pIw_o*QL{x$`PMcPLqF%@KH z{I3DSF@w^!v(tcFx#}58dwivn%1~RgtCU6ZvkFAbz%&(Wn~O49<#|c8VrE$O;NQdy z;14SrZqzO9Ado^s(Fa!|ZiYI`LW80VbXk7rStCtVf1|WeRh1Hi;2La8;76plR{{BG zR%z+6+MQ|jX`^wjr|*IwSoVNQSKQrl6&`y4g}#ao9XhP^;%J3y{&j3k!DlPmOA0$0 zfCH?wT~mnhjDL9B<((6s`K;z;(!zF4X$$%xDl$4QJt{W+A^2i_Y%FulyDHEJo9k(k zDuf}^Dg4^vX*zFy^0Y8aF8#Iwb0zf(Cgxn~IpY{6l7iIkfO6ss4>i|G3p+Fq;3^A) zJmZnEw_WF?N5>&i4>KR2Bf&rzL*sri+wFlD>|ZDSYHdxpy!hVgd%xppK%}~AN7eS5 z)jO(zy}QY8wHNFFR`JP^*|axF)ux`Wyv(KkP}-W7tW1@X7XeRLs%)BZZtILN&?T*m z@SoWV+tfMz+pcHxn+7NLcdPR1xKzv`4mD9i7gaPQvM%*X5O>Yk*yLShgQ_z1;hk%1 zdIo9=Xr4()tGo5NgpSRAL@uvpGth~iYQjtnleVIWTkjfVJ--ON(|Up$WfH4AAFB}5 zRj03O?Sp@(y@2=kzSWPMR|sxb`2-KZ9`1?EW6oxb{ERJa&bhMmv7F zwPD?@zeW$0$g`z%Mrn3^ONOMWu{c{_HPYe3db}<~dVoHsV5h$6KKEdE@<67+kWprn ztf0sDHSLw((_X#YraWMUjU)6<_ac4;+MbD-WnM<((Hg*>YJGukE45DdU7Pnm$gMu` zXI;^?>wVK7Eg-DnRO*4$D$LQ80T~Tg{FSbbBGId?!@Vs6PQud|!8HLU_uBo17Db58 zt-nIYr_)>IUBq-14C0-3&LF0Q&$t-GTKGBj1-7XGTnRP#O_ zX=QOJhx!h*Y~2FJ0Auro z``HDb3raxO)Ul(%Y%6VY&B`Ti)y?3_o1Bnb;Fn);xB$4IM#nc7j00o7w0-0bxk=Fs zUtBn}429!*8$(?|VkiMV>_7xVvwZ!xtwjjquYG8@t4}+^$<-Jhctq}Hta`RvY*ozC z<(pEt8 zgURwjN+4}PA*7X{m|m=K=xS4cBe)DLLRbVbOPE_F^@dEt?)lsCR0>!__QcRIp57ib zk9_hnvIe?+d&tE``(2=btcT7E6vIK-F{UYcvs%9gC zi8_RDki8CM2$ix7EkhAVVsb%{NSJ~~2(l{kJOJT-{)AnZ!2oPwWKdQzGPFQmB{Bos z5K6ov91{AuGjQn!GzEp10GF1^>Jj!)?}v@6aEu$RJl6#`>5$}S!JQLhe1#Xy}MJh-jw#5ANsH;kH0Qq74GrQ;f)&A_ zc(ZBVTv7plL1YIjd>N4+`Ft$EJrAuxrm<+jrGy2Jesnx*tRZpr=8N$Mkiy9|Y}tCP zr7w3CCzLHPRF+usy3e06xwom?f?rcCFk}z57h|b2CNm&{9!|BR2XPx)GqRdGbkZO{ zD*M;jdqq(vy53z?1Xl@u?!Gj zB2tLtb9n0jyU?4Tpr5E%MToF9hPkYGQ=T84lffl(W725i#O@sHdlY1MdA0V=kEVi{ z?2H6TudfJBd*ANyLKm|i<^EC6eK%0Vx}9~U0yo#yS9W%wrB?3P@dm<`iqCEsA9-h% zpdZe0rXRPgl*=hA<3@->>*IZm35e)8VPQiMjN*Oj*LJX1i{pqJ;rKZ8gi~Q)meYj& z?ljNqr-4)2xJhj6*t)5AY9)7cC7+Gl z=(xp6&?@oxd@b4UgcT=j*+#l6Si}9d&9|*!3$LX+zZMAhxK%b-y&M8Bme4sGHr}NS ziD80feFzIbmS=Q3jDqO`ILhx)f>)+Wpyk*zrG2D*I(CA$K%)4*VPAyasV!z8wAcm!(491uxM!Odz$86!oh|e z6+Fmj?UuII_P!Hivt%t$h7b1Fb~Np~xubMiV*ZCt^icOZ!9iXUQn!6up(_r>+Z% zKFe`wE=a}AMyE56Ek7)uz=ZipakL6%xv`vQ=5fl0=|e6IuBoJOi-PGCdWEF3Nx>aI z$5=%qv6GsNPtMB^_=#}m=%>V*A~E4}9J8`$Ue?5g3zxb`o`}0za_Zg^l&iWrNh|tv zWxbe(RRBD1YPqVj13OxNF*it>I1oMPIioz1f0Jv3+%mX=Ni5icrn8HOhwstd6|=d@ zvhWCfT8EGoojF`Akk8xA6wyJK;qJ>6IO>?Z*q_unlX7_%Ny9S~$&++QeO~4DP0==$ z&a$E}S3uFjewKy{=NBH3Ocx>{!OEkFo% zXwO3!zQ)jWGhxPsgnbyBlxZ&FwmUswam{alHa7;OnQSgHmKTfUvT4k^Un<=}2HTQr ziAdlkAR=S4`|2cnV;sGlGtyKsm=g%@obJ7BwEOdEnk#6U?tAue94Gm;o!D7C7^ zm8oheRy)k9G}9K_T%dApF=a$KA7F6NeyZo3g1L})815e<>wWKKw-)ljIhB_#Kg~#O zA?Awh>bBkj#cuKM6ziY+q>?Y>`=c5Ae!CxTbt4`RS&?%U2lW3V+v*fb{_k?mGaF#? z)UQ=X{S^<0c}g8Q3)pt0ujwm)V5jz_H6L1EA@>4OcJB6KdB=EK5!`CT#y%s75obZ2 zXP3VJb+ptwW=#yf^73rj{OQzicj;{V=|8>R&H$S)1Ltl&q7HG@D5^I(z(99`x_yS; z)m7E=bvAp$(JmPhMnAiM;DVc@Jg=Eq{T-{>m!B|h#cmRI2Btu z>u2i%wMNuy!F@fat%kHAU)hBz-8A`^DvMSmN^A-mP2rMn-sCc41taC?88$&e*f#X^ zcUa-#yngslUPLF0#A~Jz#vho~ALGM-eDUeRC` zce%j5kq#-x8F1B1>f<}%dmpPwFhW!zY;NSj__&H8rScFqu6U=sQk4f9JQP}MRV`yC2!#!e;-U0&t-7s zB~*`DB4;Kr5~?lA{*_$%wTseo8QAK`n+*-!kjL!($pM=GYrd_ICEPA3k<p_J z;+`%@y4ZMeS5pXXb|!7W_k7(v{mDqO0-LW#Zsb<5N^A?jBDF0l2$QRqO!U{x>;e82 zv)ZSAPd&g9UXbL+LX|Kvw{=z*ZEdVf^jh9qGO^SGVSJmX@spqxUntdk5|wg;{WzJ* zB^|!F@!$tZp)HhWo~UtTD~;TNf7+Md5~ zfLU!Q@N29LnQIO!*F0F_am)H9ma)fV+VI#}Cio{UdyLk9^Y=(J(VDIha^z%AW>$I4 z{-N2w){XrA_i!hxTwqPvV?wSL8jpO({csm`NQrGeHG5i<@Z%Eplld`>PnJzN5h(pI z2d=OZ?V2)o=c)`^7=qQE!(f+omG|^imaQEqEAu4=LT@zR0NSGbD2F-(dAM#yp2Qve zA2H`>0{vOL8(0>#<@Kuo9fIe?jp0TyF0-wGF8nU`Tu{*8#5TiRS)cldUC~)l)0kJ< zCeLs-XzullOHe*+QwRBO#Ob=SmTdF7Vf_f%QukhMgjfk9-i?I~$)@F;bB?7X?lVS*t>v z2B`}S@b?py`KnA$y|#WgUlI*)rnOGKPJK?rr4RPQ-PhgSt#G6;j}s3rMxN@|Zn?C+ zA%9kTg!nKtft$b>?u$}V4!7s<&bR2bwfK76ijvsvyij?ja)+5cCaW}=gR_T?aS=IK+C|rX)WFs-#5Ll>^ttRvt0!pDoIv{y1;e%FAd>+dtyDR^Kd6>$60t- zzSV%@{(;GX78hgDrHYk!k;~2NA5_LT<0Ch}5(z9rLi>U(u*Yz@PU(BUg@yM;d=KBZ zIvtk_Dy-Srl9c}Jrd&}r1)C94k=v^%*_W=$OO0gZgdKE1e%rHKU-oFneSz<|lKTf&Q7K=M>oVSB?g%`04qKcv1mvGO1p648K`gGa9h#pEGA5i^Y> zia%UHrb*HMTx4<`iBi?Vl#8vYs79nUMJ{BtP^#<5h@^wLg`9&P-I7bOZOi!`?ZcOE z;^^*%+b4F}v=+Iq`}Ns&gGg*b-4C#05!m$+JOAO}zZMJhLP}0+bIH>5WSFoDnK_e* z-1GLU5`tm%YesvW8)-Wm_)?1luFbs;$!224N@|XvxS>5qHaJw;5KbaRVab%xFcK9L zMI-^j^1HnBlxU=WtRFo_m@4ilZML7cSIpZti*v32Mt^5r1_;Z7+8b)Hy4r-&^zDE; zVM(=2tWw?m*vaZVu6F_4uQVek|CoU;o%(a^<&Wv1&7+sEK!0wT+5E?c*Dt^;SZ{is zD6WH=8XioerW0e)b~sPMEf$l*tCFM(BVv|_7G_jQCKy*OL%t7vmM(Yr{z=#xIDUA?|l1vb{q&Rwg z`*p=K^q6SZv$wprF&4)jHn4<=+sdp{x#yu}=zm;`l#a4AS?|ySJzhyeNKCw9 zX<;-S7uo$F02sY@RT!8RpOuz;e;L|@?%P;t#H?XO$2e^Sm!6Sq{c;g5 z%QJTf#ifc;c@S@>XlGj*XAvW{Ks-kn%m;NC^e;y4+h@B(W2a*=h_|h;VO`+v?OVmM zdu$ol|5__>d?C#UJN5gI(#4{*qQcs*^e)gx?=;C11o>I-u+>5C8P7}Li6ikmNy5MC zo%5oFJXJEVb=_lAkTXRABDxbOkiP3&IMV$h+ zOijOSXL+WlF(^La9eV$5Ke^uDh0CJD@ox~Fb!>}mwk`wLnyNe~j?#T8rMKVYv}?_y9dYxPo0+v`5QOqmWEpyYZxQ*OE-Z!a$dduO(&X4&zD;zgoM^T@dIkk z*=(`0W@Q|{y+SIiC!x`jKC(j@?5TU1H3kDf6g}`%YtGqh!i~u*3>t0!422 zQB*YN82=~CHY|Yee4v)*KmwKLur<_jW>coXb@AXXJ(Eb*^#pCJ z=x$OVH38VzP%I`c6cdo0(72T_%KfPe*kV1KLoAUSn*OtQ5UA{E@pABF(n0;}ua(Pu zC=Y)9Lb%9oNj_Xpup&nZE@<}6hl1~yS{yF^2QV@IU_QH4AIuF`dZli<(O-8a>-B+> z1GnV2!o1gDxO7}iach6c{xJ?-;FaT!9RPpq2NX2YxR!t;b7?2K4`cI`MBVBZM-mxDPj87c$(;E5O$E0fv0;(yy$p=84)}f zxlH*VnPb|xbcR#*NtE3?d&N&X|4 z2A{^$@No%A`fk4*{Q%oWUh}I-bBwq>y<{ELiml{ovEK!0*bl zNlD8u9Ulsk#oq2FQjQEBl#8m7%0?-x%9~c%@bb^OvUWa==B%6=YOXk}fah<-C(Bu7 z@!dJ$nRX`5wiI9Qo^l3Dj!)hQ&p)iFXqg;xu1%vx8`(PmU+W0d2pSFL(}c(}6hQjr z?fE&m?d80P+aYrzXrKIj76P)&sgR+#u_!BBS&)R0ghYVH*MDy}ZU6Xs{MsjfWCHZh z)+FMc!uI-{ymnO~i#&=OZG;+=a7pBj76v*Ki7G`iRymjJqU(jC&py$PQBQ>d!hy$* z6GM|6ot*R)5I^dfX=c)C;Q^J2@`iBzdYj9()+~S9%b- zh*I%Yo|LiYBMAO>)SV&FGNnxYPR&(vUpvsw7m*A9`YH7RmVdgxr&b*q5;q(>iO zi=5MJbfN^aJg+ldUr)WhLi@*aoeBA@N_PLhQCx%i4nAnU40$5Tp_{&MAenz)w{ z$MMB&9C;^X!w15mSaz4*@K0*QPV>>Li8zrwSZ=y301*hnwLljHC+nQOhjejDHl_G3 zRbQwsumkOX8s<)3k;r5gZ0Dmcb~0emxO%@7jTCvwr~PjwkyVEy#^sZWX`of*?3ktK z>aL1B5=Y(fg&2P7=3^h!2P+}uMwL>0)Hmv;)_gO`)xjqfexPN;;UBT9&I8~8;FSXq z8hke@=7H97@4JdgrN}3V_hzFI4cv&K9L{V9udhGf?ExaMbzWL<99pG7eHM>WoC&v- z^q_Cu$C7O?;z+h*?(O!I8}fu(X=z|peEo=49Qk^bR4b&a_xmY?lpBUaDc|%c<;i(b zYN1|j9FxwUT@=R%E3Yee7}sI!7K!7Lr=7Cv@ym4IdMYOgtR<~B`VZ#o`}Q#zsl*mS zkG2A&TNth{cnYW5`7|q=r1~W0EF=#TAHwfr*8vXb^G&DmmHbyg<{*5%2Qg|#mMP1m zFV}|f&dO;nkWb6G`y($E@|I+KVO{gZ$*L5WK6;wey*;@z{!Xa0iSfa@zl5*y5k%KM@{xQxP)nV|htb7u7z8cbFz*Te1Bou6E>^%;iWdBn|r z#cKCdCx~BNAm)~e`DA=*HRcz-0}5H^pbA|{J2S@LYu=ME@e9pHdYm!?)vjKL44{HF zjiz2j-=PrdDxvO2cX zjglQ&ebsJZ2$okQ7v;$1K%XyZP$pts$JBR1!`sJm`>2&# z3F3O|?^e~v3V|goQzK82BnBPi#49qyLPbVA`+PD+lA@8Pm%+V!{k-7*!G6BMa0hqD z#dXBZv%}4G7#Jo=8>*9{fAyn3b_~rvKV@afX?3b|I>{g4z6SmQAN=4zzH(Y!FKLqa z_;lUZ*YZjO?ng`$`jemUCv;Pg-TsdZ{B9AqM^bk<{B`8pQe;fdH$nj4c;I}$wCxn- zKqIi8Tds)%>dk2aL!&(>|Jr2Q#&LV=tD3KGd>XUkRgL|r87`}$Tj&?f4%))JTNs@{ z(CC^uQk(IDrl@Q()B0^1Y1$~$Dx0P??S;+wN+V3cR=GeYgQm!AGX45NBlR1lUj>>} zzZaRSM(H=&ARg(a3W|Ja^S)oVo;hh{9p6Z_*(I%07|$-GWkfHmzF2+xpwWK(1E#SzA3PM?JURQDy_B z?O<_g)ntRMP%9;y%?|zlWuZWnfc4Y*L~q&HL)B~;@<=Tb#T z4m@7dmS+mpnzjf{OHW?n$0NkxuxZoK#fJ@uQGA8C;<)m3fEC3$z#_L>Ba!_!_<+7y zW$HB2#l1B$5-AEpp@iY0$=E0i=AmAMPOYi)>r&lsOCxh9CP8ThFTPc$G`NksDptXi zK;=GtYqY2dFx=DY{xqDpOfJ1lZkKr=8&g< z=k~X4l@7>Dfq#J9DlBI>`aQZzmid-uFi6qIkuc_1$@8z^{L2uvplp&91#=nVE*6uy zu#ObkEFrBUu2XQ6gftk_EY>D5CrorAnerQTwVe4)P&uHP5SHG9x|Fy7Gxi2=6M3uS z?K7qh^2Wy75Yo2u*33H#c}K}R7RGvcC!MjIcsoK+6UlnVn0|#d9}@TCCOv}RDyF2# zDnpz!n&b&B3qrxFTZw5UcOx-BpU{oTKH}S+%pD4Bk*(bDo8|7Q<8F2IHTpfUWlGjQ z((5#NkEmIkbwEQSnt(X0y0c?w`EPyneWBy1e z>9V0o{TfMc{X0JvT3QbJQ$)n#JRSGc)0@6er1kL?Rr`yb0=|W9uu{K`xSFiNYe9)O1RQ# z=<&j7xlXLLdyerjU3uypBVCF;#TL@sBt0k=P4?2>LXyHgdYR3k#p#hy z-^D3=_HR-aR(};%pOBtJUF-{eJZ+?}TZj#tRWKlWOFzBHt#z5vHeMbFY}gK8 zb3m>EJ_VpJmNfGuVHb{3eKO6es@XYtpjGYIcZ5y9jc!xDIB982HS z7|_e!LL(*aJN58`zTeZNe*ixlU9imttyE72J4FTr@SNo$&U?p!(;vWkgS}J*yS&KO zm!Yxw+08^?_jt!R9vv=05;*-oN-0!WV(fY9lMoqVt(d+xqP(Q35Df9#(ngjFz|;_g zw|)+%R1Dx)h#)=+YZGjB7HZ9FoW&!c#&oyW^2bZrsrUMWq+d`;wwu8 zr*DDff(-BO7Bxgo*1oS&L%sOALp@{iNO^KgIVJo8=1er_UTv z#}GrHzdc{#V}JsIfdA~hGwsmvwANcg?YYH?*%6h^9w;;D8LFWkDO>3|to_k*2`8k^ zW4z}}oqJwDdnm07dEbj9osIKiX-9>Z3OqJ>8Se3o>&vN+ek|y~1MqopBNFQ~F@h*$ z@x>-CDj!Kumy#{2335zmvs}7i6^|JCn!D5hjzegXv`CqM_)UQ|vr`e~INd;^*AFnKbVI+Ljh=^V;wQS*)S5&oY|Z)|`H!@)5G znrbs#n#KjNkWM(yP=Wg>oRByIDv!e%K~okwhT{-T&?61lL~;Vqf$|D7n0*x<5Z@_4 zBiEVmj?_#+Wa5=MLJZQ8ns~W|LC7|!8u9u~svhlWpcxfL5}oZ@g8_dBfcPs0HfH@B z)2=ld%?d^8Lg)=D2t(S&2pJ%nIY6qHZZ9P5>P0gn7Mr>gtk^B=Q@sH~`5?E;-snHP za4oBAN27YHMeQ}kYat!1?T`XsomDW#XjE0#qCGHlXvI=p)`p`8kTUe6xzMesJW)Rp zIv!AE0;_vWGEiNxFpnxg5gK8`xUi2*kEcHE6EcFQ2KE)@Y*HGw<1m<^G-8lZFyd@v zDh8ZwOn5aNcPQ}tJqyR`(b z&T*-TNl0lmD@dyEa+94dZ~*~@e}kL~`{NV!y=AALD)IO5{uT&qFJXpYa8&F6MefjN zr482F@15wv8b52%Z@_wOKK8r+9q_IpgN7Y(+?PIgLXl#dl(??c7p}SOhMR8rOPO!n z@s*RxJ+#^PzV)37|M<^pRVr1RWv1B&@x)&OoLMq@4%s7ytU*AO7@@Use1o+K#0gD9bf>Lf7s+d-pka)(#y$a&*AN zOxB#P^jY!Fb6UH8ar}4!kwm6Y^$7^} zb4xTKVG&Z#36oN0>6do(d{8s8hRil>4&4aDXlTN?T=zm|Pj?bB3hL6@*IhgYCKfgh zt^_=F&lbhfCS?-xCsxGcDW^lBawO%H8Z?4@yzXdlK_(CpWpS3zJ*8!2<>VC@Jr`it=rq0>&-Va*&&j*@d|5yVAUC+3xX`)JG)9ZS!NOwyseVUSDDa#rwH^tvtb7Mm{ z{&0nN?=`h}*d=VWySfrp*2LeRUlFO#xj(dSN|d6BZdNT(oh06z&4qVHxg~CSC*wBB zo7}B$(gW!~Cg9lUoP0R69%?GXriNBMQJu~3y!nWi)OhAm1ASF9LKpmC7u?h`uG`w5 z(6J3;%fvRB{fn(Za`!LH>3eP~$s*Gd+g4)AuV15E`Mrn_tsl~*=dtvUe%9}KE@rjW zcb-(ynF)t)DQ@eAw0a#tgb8I_NTn?&CL=(E31wVJr7hcu$pjE#LKzoQY0GwEG6O`I zP{xH++OnOPEC3NElyM=IwrnRRDiw2Fj0^c#&r(pk7a#ap+Y;B?g37q;X(MY>32#sWn?Adns+N%kW#h=1d(NpPZzxzzLPU|=U(t&#}*BqbTMBn&SxLx zm(%G(@#@_S#x2MC$-fo(Q>`HOFEy=qq{lTqQ$NJruG5F3p^>qPnK?K~_6GoYJnS~~ zLsM_v9gCAp_-2cz`b@Lm)l6@-(a6Li$*m3;8X24P^?5GSK?fc5x^891?84

                                                                                QuecManager

                                                                                  \ No newline at end of file +QuecManager

                                                                                  QuecManager Quick Stats

                                                                                    \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.html b/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.html index 30af2de..220d1a7 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.html +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.html @@ -1 +1 @@ -QuecManager

                                                                                    Login to QuecManager

                                                                                    Enter your password to login

                                                                                      \ No newline at end of file +QuecManager

                                                                                      Login to QuecManager

                                                                                      Enter your password to login

                                                                                        \ No newline at end of file diff --git a/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.txt b/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.txt index 117c681..fefe075 100644 --- a/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.txt +++ b/ipk-source/sdxpinn-quecmanager-beta/root/www/login/index.txt @@ -11,7 +11,7 @@ d:I[99165,[],"MetadataBoundary"] f:I[99165,[],"ViewportBoundary"] 11:I[25339,[],""] :HL["/_next/static/css/66d9da7c42c3caed.css","style"] -0:{"P":null,"b":"ECtAeRdoEqstSdffrWqHu","p":"","c":["","login",""],"i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],null,["$","$Lb",null,{"children":"$Lc"}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","iNgPB4hDTfyRiJAZ4BtAE",{"children":[["$","$Ld",null,{"children":"$Le"}],["$","$Lf",null,{"children":"$L10"}],null]}]]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true} +0:{"P":null,"b":"qotm3CpR_o7IBYNxhDC8F","p":"","c":["","login",""],"i":false,"f":[[["",{"children":["login",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/66d9da7c42c3caed.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"antialiased __className_9dae3d","children":[["$","$L2",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"disableTransitionOnChange":true,"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[],[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}],["$","$L6",null,{}]]}]}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","login","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],null,["$","$Lb",null,{"children":"$Lc"}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","IxJvmAPfbLDWb2E-XgkAF",{"children":[["$","$Ld",null,{"children":"$Le"}],["$","$Lf",null,{"children":"$L10"}],null]}]]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true} 9:{} a:{} 10:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]