six-degrees 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (609) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +42 -14
  5. package/.next/standalone/.next/routes-manifest.json +24 -0
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.rsc +26 -18
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +26 -18
  17. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +25 -16
  18. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/api/admin-delete/route.js +2 -2
  20. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/admin-update/route.js +2 -2
  22. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/bridges/route.js +2 -2
  24. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/bulk-import/route.js +2 -2
  26. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js +3 -3
  28. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/company-scores/route.js +3 -3
  30. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/connections/route.js +2 -2
  32. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/data/backup/route/app-paths-manifest.json +3 -0
  34. package/.next/standalone/.next/server/app/api/data/backup/route/build-manifest.json +12 -0
  35. package/.next/standalone/.next/server/app/api/data/backup/route/server-reference-manifest.json +4 -0
  36. package/.next/standalone/.next/server/app/api/data/backup/route.js +7 -0
  37. package/.next/standalone/.next/server/app/api/data/backup/route.js.map +5 -0
  38. package/.next/standalone/.next/server/app/api/data/backup/route.js.nft.json +1 -0
  39. package/.next/standalone/.next/server/app/api/data/backup/route_client-reference-manifest.js +3 -0
  40. package/.next/standalone/.next/server/app/api/data/csv/route/app-paths-manifest.json +3 -0
  41. package/.next/standalone/.next/server/app/api/data/csv/route/build-manifest.json +12 -0
  42. package/.next/standalone/.next/server/app/api/data/csv/route/server-reference-manifest.json +4 -0
  43. package/.next/standalone/.next/server/app/api/data/csv/route.js +8 -0
  44. package/.next/standalone/.next/server/app/api/data/csv/route.js.map +5 -0
  45. package/.next/standalone/.next/server/app/api/data/csv/route.js.nft.json +1 -0
  46. package/.next/standalone/.next/server/app/api/data/csv/route_client-reference-manifest.js +3 -0
  47. package/.next/standalone/.next/server/app/api/data/export/route.js +1 -1
  48. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/data/import/route.js +1 -1
  50. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/data/restart/route.js +1 -1
  52. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/data/restore/route/app-paths-manifest.json +3 -0
  54. package/.next/standalone/.next/server/app/api/data/restore/route/build-manifest.json +12 -0
  55. package/.next/standalone/.next/server/app/api/data/restore/route/server-reference-manifest.json +4 -0
  56. package/.next/standalone/.next/server/app/api/data/restore/route.js +7 -0
  57. package/.next/standalone/.next/server/app/api/data/restore/route.js.map +5 -0
  58. package/.next/standalone/.next/server/app/api/data/restore/route.js.nft.json +1 -0
  59. package/.next/standalone/.next/server/app/api/data/restore/route_client-reference-manifest.js +3 -0
  60. package/.next/standalone/.next/server/app/api/data/reveal/route.js +1 -1
  61. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/api/data/route.js +1 -1
  63. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/delete-cluster/route.js +2 -2
  65. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/ingest/route.js +2 -2
  67. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/network/route.js +2 -2
  69. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/notifications/route.js +2 -2
  71. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/outreach/route.js +3 -3
  73. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/queue/route.js +2 -2
  75. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/api/scraper/route.js +5 -3
  77. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/api/settings/route.js +3 -3
  79. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js +3 -3
  81. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js +3 -3
  83. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/setup-profile/route.js +2 -2
  85. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/social/crm/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/social/messages/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/social/route.js +2 -2
  91. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/unlock/route.js +2 -2
  93. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/update-images/route.js +2 -2
  96. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/users/route.js +2 -2
  98. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/avatars/[file]/route.js +1 -1
  100. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/import/page.js +1 -1
  102. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/import.html +1 -1
  105. package/.next/standalone/.next/server/app/import.rsc +32 -24
  106. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +32 -24
  107. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  108. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +23 -18
  109. package/.next/standalone/.next/server/app/index.html +1 -1
  110. package/.next/standalone/.next/server/app/index.rsc +29 -22
  111. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +20 -15
  112. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +29 -22
  113. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/.next/standalone/.next/server/app/insights/page/app-paths-manifest.json +3 -0
  115. package/.next/standalone/.next/server/app/insights/page/build-manifest.json +20 -0
  116. package/.next/standalone/.next/server/app/insights/page/next-font-manifest.json +11 -0
  117. package/.next/standalone/.next/server/app/insights/page/react-loadable-manifest.json +1 -0
  118. package/.next/standalone/.next/server/app/insights/page/server-reference-manifest.json +4 -0
  119. package/.next/standalone/.next/server/app/insights/page.js +13 -0
  120. package/.next/standalone/.next/server/app/insights/page.js.map +5 -0
  121. package/.next/standalone/.next/server/app/insights/page.js.nft.json +1 -0
  122. package/.next/standalone/.next/server/app/insights/page_client-reference-manifest.js +3 -0
  123. package/.next/standalone/.next/server/app/insights.html +1 -0
  124. package/.next/standalone/.next/server/app/insights.meta +26 -0
  125. package/.next/standalone/.next/server/app/insights.rsc +35 -0
  126. package/.next/standalone/.next/server/app/insights.segments/_full.segment.rsc +35 -0
  127. package/.next/standalone/.next/server/app/insights.segments/_tree.segment.rsc +4 -0
  128. package/.next/standalone/.next/server/app/insights.segments/insights/__PAGE__.segment.rsc +33 -0
  129. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  130. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/launch.html +2 -2
  133. package/.next/standalone/.next/server/app/launch.rsc +32 -24
  134. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +32 -24
  135. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  136. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +23 -18
  137. package/.next/standalone/.next/server/app/page.js +1 -1
  138. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  141. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/paths.html +1 -1
  144. package/.next/standalone/.next/server/app/paths.rsc +32 -24
  145. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +32 -24
  146. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  147. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +21 -18
  148. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  149. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/profile.html +1 -1
  152. package/.next/standalone/.next/server/app/profile.rsc +32 -24
  153. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +32 -24
  154. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  155. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +23 -18
  156. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  157. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/queue.html +1 -1
  160. package/.next/standalone/.next/server/app/queue.rsc +32 -24
  161. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +32 -24
  162. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  163. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +21 -18
  164. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  165. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/scores.html +1 -1
  168. package/.next/standalone/.next/server/app/scores.rsc +32 -24
  169. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +32 -24
  170. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  171. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +23 -18
  172. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  173. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/settings.html +1 -1
  176. package/.next/standalone/.next/server/app/settings.rsc +32 -24
  177. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +32 -24
  178. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  179. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +20 -18
  180. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  181. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/setup.html +1 -1
  184. package/.next/standalone/.next/server/app/setup.rsc +32 -24
  185. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +32 -24
  186. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  187. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +21 -18
  188. package/.next/standalone/.next/server/app/social/page.js +1 -1
  189. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/social.html +1 -1
  192. package/.next/standalone/.next/server/app/social.rsc +32 -24
  193. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +32 -24
  194. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  195. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +23 -18
  196. package/.next/standalone/.next/server/app-paths-manifest.json +4 -0
  197. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  198. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/[root-of-the-server]__066rab1._.js +7 -0
  200. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  203. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fooke1._.js +7 -0
  204. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  206. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__15wc9e-._.js → [root-of-the-server]__0r-0t-9._.js} +2 -2
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ra6xyg._.js +15 -0
  209. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__20rwfdw._.js → [root-of-the-server]__0rcpjad._.js} +6 -3
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t6y79e._.js +7 -0
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  213. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x29muh._.js +7 -0
  214. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  215. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  217. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  218. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a_6x37._.js +8 -0
  219. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an_8pa._.js +7 -0
  220. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +1 -1
  221. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ducpz2._.js +3 -0
  222. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  224. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  225. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +1 -1
  226. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  227. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xhyinn._.js +3 -0
  228. package/.next/standalone/.next/server/chunks/_072jl0y._.js +1 -1
  229. package/.next/standalone/.next/server/chunks/_0lw8_i0._.js +1 -1
  230. package/.next/standalone/.next/server/chunks/_0sqqpzb._.js +3 -0
  231. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  232. package/.next/standalone/.next/server/chunks/_1fn30_l._.js +1 -1
  233. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  234. package/.next/standalone/.next/server/chunks/_1iwkh8t._.js +1 -1
  235. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_backup_route_actions_0zoj04p.js +3 -0
  236. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_csv_route_actions_0l6m7lg.js +3 -0
  237. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_restore_route_actions_0-b05bv.js +3 -0
  238. package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +4 -0
  239. package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +4 -0
  240. package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +4 -0
  241. package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +174 -0
  242. package/.next/standalone/.next/server/chunks/lib_linkedin-export_12imqxg.js +1 -1
  243. package/.next/standalone/.next/server/chunks/lib_rpc_00nndai.js +3 -0
  244. package/.next/standalone/.next/server/chunks/lib_rpc_03ibb-x.js +3 -0
  245. package/.next/standalone/.next/server/chunks/lib_rpc_03ri3ji.js +3 -0
  246. package/.next/standalone/.next/server/chunks/lib_rpc_078ce48.js +3 -0
  247. package/.next/standalone/.next/server/chunks/lib_rpc_0a69mgr.js +3 -0
  248. package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +7 -0
  249. package/.next/standalone/.next/server/chunks/lib_rpc_0cej3t8.js +3 -0
  250. package/.next/standalone/.next/server/chunks/lib_rpc_0cmh4g6.js +3 -0
  251. package/.next/standalone/.next/server/chunks/lib_rpc_0nx2_pc.js +3 -0
  252. package/.next/standalone/.next/server/chunks/lib_rpc_0r79-w1.js +3 -0
  253. package/.next/standalone/.next/server/chunks/lib_rpc_0t552z6.js +3 -0
  254. package/.next/standalone/.next/server/chunks/lib_rpc_0yx8ynd.js +3 -0
  255. package/.next/standalone/.next/server/chunks/lib_rpc_12p-o9-.js +3 -0
  256. package/.next/standalone/.next/server/chunks/lib_rpc_1466dnb.js +3 -0
  257. package/.next/standalone/.next/server/chunks/lib_rpc_1sryxv6.js +3 -0
  258. package/.next/standalone/.next/server/chunks/lib_rpc_1trn-x5.js +3 -0
  259. package/.next/standalone/.next/server/chunks/lib_rpc_1ygu_mv.js +3 -0
  260. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0egamyq._.js +3 -0
  261. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qd8pzm._.js +3 -0
  262. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qdeuyo._.js → [root-of-the-server]__1-012q1._.js} +2 -2
  263. package/.next/standalone/.next/server/chunks/ssr/_04am_h8._.js +3 -0
  264. package/.next/standalone/.next/server/chunks/ssr/_06rgzfh._.js +3 -0
  265. package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +3 -0
  266. package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +3 -0
  267. package/.next/standalone/.next/server/chunks/ssr/_0gds903._.js +3 -0
  268. package/.next/standalone/.next/server/chunks/ssr/_0hb-dhy._.js +3 -0
  269. package/.next/standalone/.next/server/chunks/ssr/_0klqt9z._.js +3 -0
  270. package/.next/standalone/.next/server/chunks/ssr/_14jak5s._.js +7 -0
  271. package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +3 -0
  272. package/.next/standalone/.next/server/chunks/ssr/_1cj2yog._.js +3 -0
  273. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +2 -2
  274. package/.next/standalone/.next/server/chunks/ssr/_1hdqw0-._.js +7 -0
  275. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +2 -2
  276. package/.next/standalone/.next/server/chunks/ssr/_1r62six._.js +7 -0
  277. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_insights_page_actions_0-0tf75.js +3 -0
  278. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  279. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +25 -2
  280. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +25 -2
  281. package/.next/standalone/.next/server/chunks/ssr/app_components_CompanyScores_1g0mytz.js +1 -1
  282. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +1 -1
  283. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +3 -0
  284. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  285. package/.next/standalone/.next/server/chunks/ssr/app_insights_page_1d_chja.js +3 -0
  286. package/.next/standalone/.next/server/chunks/ssr/app_launch_page_19t0dyd.js +1 -1
  287. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +26 -14
  288. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  289. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  290. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +11 -11
  291. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  292. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +12 -13
  293. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  294. package/.next/standalone/.next/server/chunks/ssr/{lib_1c4ieuw._.js → lib_csv_1ttiu_h.js} +2 -2
  295. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  296. package/.next/standalone/.next/server/chunks/ssr/lib_separation_1305zsx.js +3 -0
  297. package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__0pco7a6._.js +1 -1
  298. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  299. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  300. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  301. package/.next/standalone/.next/server/next-font-manifest.json +4 -0
  302. package/.next/standalone/.next/server/pages/404.html +1 -1
  303. package/.next/standalone/.next/server/pages/500.html +1 -1
  304. package/.next/standalone/.next/server/prefetch-hints.json +14 -0
  305. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  306. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  307. package/.next/standalone/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  308. package/.next/standalone/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  309. package/.next/standalone/.next/static/chunks/03-demj2iy-0p.js +44 -0
  310. package/.next/standalone/.next/static/chunks/0838_s6w-i_ik.js +1 -0
  311. package/.next/standalone/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  312. package/.next/standalone/.next/static/chunks/0ka4prpk3w9wn.js +34 -0
  313. package/.next/standalone/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  314. package/.next/standalone/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  315. package/.next/standalone/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  316. package/.next/standalone/.next/static/chunks/112mv-com-mqa.js +21 -0
  317. package/.next/standalone/.next/static/chunks/1bkt_hhjzvbh8.js +1 -0
  318. package/.next/standalone/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  319. package/.next/standalone/.next/static/chunks/1d8yv3k_atka7.js +1 -0
  320. package/.next/standalone/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  321. package/.next/standalone/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  322. package/.next/standalone/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  323. package/.next/standalone/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  324. package/.next/standalone/.next/static/chunks/2q9i7pcxcnph1.js +7 -0
  325. package/.next/standalone/.next/static/chunks/2w-y83mjlpnse.js +1 -0
  326. package/.next/standalone/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  327. package/.next/standalone/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  328. package/.next/standalone/.next/static/chunks/34g73qhayuevu.js +1 -0
  329. package/.next/standalone/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  330. package/.next/standalone/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  331. package/.next/standalone/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  332. package/.next/standalone/.next/static/chunks/3y40z6of3r9py.js +1 -0
  333. package/.next/standalone/.next/static/chunks/403dpflln8ah5.js +1 -0
  334. package/.next/standalone/.next/static/chunks/43pg2sursiypz.js +1 -0
  335. package/.next/standalone/CHANGELOG.md +203 -0
  336. package/.next/standalone/README.md +96 -50
  337. package/.next/standalone/SECURITY.md +25 -11
  338. package/.next/standalone/app/api/data/backup/route.js +25 -0
  339. package/.next/standalone/app/api/data/csv/route.js +74 -0
  340. package/.next/standalone/app/api/data/export/route.js +1 -1
  341. package/.next/standalone/app/api/data/restore/route.js +48 -0
  342. package/.next/standalone/app/api/data/reveal/route.js +19 -6
  343. package/.next/standalone/app/api/data/route.js +15 -4
  344. package/.next/standalone/app/api/ingest/route.js +1 -1
  345. package/.next/standalone/app/api/outreach/route.js +13 -73
  346. package/.next/standalone/app/api/queue/route.js +1 -1
  347. package/.next/standalone/app/api/scraper/route.js +217 -36
  348. package/.next/standalone/app/api/social/crm/route.js +2 -1
  349. package/.next/standalone/app/components/AppHeader.js +41 -21
  350. package/.next/standalone/app/components/AppTabs.js +12 -8
  351. package/.next/standalone/app/components/AutoConnect.js +286 -0
  352. package/.next/standalone/app/components/AutoScanButton.js +2 -2
  353. package/.next/standalone/app/components/Avatar.js +1 -1
  354. package/.next/standalone/app/components/ChainView.js +258 -113
  355. package/.next/standalone/app/components/CirclePanel.js +16 -16
  356. package/.next/standalone/app/components/ClusterSpinner.js +64 -0
  357. package/.next/standalone/app/components/CompanyScores.js +20 -20
  358. package/.next/standalone/app/components/EmptyState.js +39 -18
  359. package/.next/standalone/app/components/FieldStep.js +15 -13
  360. package/.next/standalone/app/components/FilterPanel.js +25 -18
  361. package/.next/standalone/app/components/ForceGraph.js +49 -14
  362. package/.next/standalone/app/components/GalaxyLab.js +33 -33
  363. package/.next/standalone/app/components/GridView.js +18 -18
  364. package/.next/standalone/app/components/LegacyScoresCard.js +10 -11
  365. package/.next/standalone/app/components/LinkedInLimits.js +57 -27
  366. package/.next/standalone/app/components/LiquidGlass.js +99 -0
  367. package/.next/standalone/app/components/ListView.js +20 -20
  368. package/.next/standalone/app/components/MapControls.js +5 -5
  369. package/.next/standalone/app/components/MappingProgress.js +16 -16
  370. package/.next/standalone/app/components/NoteDetail.js +13 -13
  371. package/.next/standalone/app/components/OnboardingGate.js +4 -4
  372. package/.next/standalone/app/components/OutlinkQuest.js +56 -35
  373. package/.next/standalone/app/components/PathsAnalyzer.js +37 -36
  374. package/.next/standalone/app/components/PeopleMap.js +21 -21
  375. package/.next/standalone/app/components/RingsView.js +11 -11
  376. package/.next/standalone/app/components/ScanRadar.js +84 -39
  377. package/.next/standalone/app/components/ScanStatusBar.js +40 -21
  378. package/.next/standalone/app/components/ScanTrail.js +21 -8
  379. package/.next/standalone/app/components/SeparationView.js +172 -124
  380. package/.next/standalone/app/components/Sidebar.js +308 -199
  381. package/.next/standalone/app/components/StaleServerBanner.js +4 -4
  382. package/.next/standalone/app/components/TheirCircle.js +26 -26
  383. package/.next/standalone/app/components/ThemeDefs.js +42 -0
  384. package/.next/standalone/app/components/ThemeLoader.js +20 -1
  385. package/.next/standalone/app/components/UpdatePanel.js +22 -22
  386. package/.next/standalone/app/components/UserProvider.js +22 -15
  387. package/.next/standalone/app/components/insights/Boards.js +275 -0
  388. package/.next/standalone/app/components/insights/PeopleView.js +266 -0
  389. package/.next/standalone/app/components/insights/Rail.js +156 -0
  390. package/.next/standalone/app/components/insights/Report.js +382 -0
  391. package/.next/standalone/app/components/insights/parts.js +239 -0
  392. package/.next/standalone/app/components/settings/AppearanceSection.js +47 -24
  393. package/.next/standalone/app/components/settings/DataSection.js +276 -109
  394. package/.next/standalone/app/components/settings/NetworkHealthSection.js +13 -13
  395. package/.next/standalone/app/components/settings/SectorPicker.js +12 -12
  396. package/.next/standalone/app/components/settings/SectorSection.js +13 -14
  397. package/.next/standalone/app/components/settings/TierSection.js +9 -9
  398. package/.next/standalone/app/components/settings/TitleSection.js +11 -11
  399. package/.next/standalone/app/components/settings/UsageSection.js +360 -0
  400. package/.next/standalone/app/components/ui.js +8 -8
  401. package/.next/standalone/app/globals.css +161 -5
  402. package/.next/standalone/app/import/page.js +94 -38
  403. package/.next/standalone/app/insights/page.js +220 -0
  404. package/.next/standalone/app/launch/page.js +5 -5
  405. package/.next/standalone/app/layout.js +6 -2
  406. package/.next/standalone/app/page.js +53 -53
  407. package/.next/standalone/app/paths/page.js +63 -63
  408. package/.next/standalone/app/profile/page.js +58 -58
  409. package/.next/standalone/app/queue/page.js +84 -72
  410. package/.next/standalone/app/scores/page.js +2 -2
  411. package/.next/standalone/app/settings/page.js +16 -13
  412. package/.next/standalone/app/setup/page.js +236 -133
  413. package/.next/standalone/app/social/Crm.js +63 -62
  414. package/.next/standalone/app/social/SocialHub.js +22 -22
  415. package/.next/standalone/app/social/Thread.js +7 -7
  416. package/.next/standalone/app/social/page.js +2 -2
  417. package/.next/standalone/lib/auto-connect.js +145 -0
  418. package/.next/standalone/lib/backups.js +458 -0
  419. package/.next/standalone/lib/chain-layout.js +32 -0
  420. package/.next/standalone/lib/companies.js +1 -1
  421. package/.next/standalone/lib/csv-store.js +131 -0
  422. package/.next/standalone/lib/csv.js +137 -39
  423. package/.next/standalone/lib/data-folder.js +19 -3
  424. package/.next/standalone/lib/data-import.js +5 -2
  425. package/.next/standalone/lib/db-client.js +78 -20
  426. package/.next/standalone/lib/demo.js +5 -4
  427. package/.next/standalone/lib/galaxy-export.js +9 -2
  428. package/.next/standalone/lib/galaxy-lab.js +19 -5
  429. package/.next/standalone/lib/galaxy-layouts.js +43 -0
  430. package/.next/standalone/lib/gate.js +10 -4
  431. package/.next/standalone/lib/in-progress.js +46 -0
  432. package/.next/standalone/lib/ingest.js +1 -1
  433. package/.next/standalone/lib/insights-board.js +613 -0
  434. package/.next/standalone/lib/linkedin-limits.js +240 -14
  435. package/.next/standalone/lib/liquid-glass.js +59 -0
  436. package/.next/standalone/lib/notifications.js +13 -0
  437. package/.next/standalone/lib/requests-client.js +10 -0
  438. package/.next/standalone/lib/requests.js +124 -0
  439. package/.next/standalone/lib/scan-pace.js +11 -0
  440. package/.next/standalone/lib/scan-progress.js +20 -0
  441. package/.next/standalone/lib/scan-risk.js +44 -0
  442. package/.next/standalone/lib/scan-state.js +1 -0
  443. package/.next/standalone/lib/scanner-setup.js +97 -15
  444. package/.next/standalone/lib/scraper-client.js +35 -8
  445. package/.next/standalone/lib/search-risk.js +7 -3
  446. package/.next/standalone/lib/settings-client.js +5 -3
  447. package/.next/standalone/lib/settings.js +13 -0
  448. package/.next/standalone/lib/social-store.js +3 -2
  449. package/.next/standalone/lib/synced-setting.js +46 -0
  450. package/.next/standalone/lib/theme-store.js +42 -10
  451. package/.next/standalone/lib/themes.js +111 -21
  452. package/.next/standalone/lib/usage.js +200 -0
  453. package/.next/standalone/package-lock.json +2 -2
  454. package/.next/standalone/package.json +1 -1
  455. package/.next/standalone/scripts/scrape.py +595 -11
  456. package/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  457. package/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  458. package/.next/static/chunks/03-demj2iy-0p.js +44 -0
  459. package/.next/static/chunks/0838_s6w-i_ik.js +1 -0
  460. package/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  461. package/.next/static/chunks/0ka4prpk3w9wn.js +34 -0
  462. package/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  463. package/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  464. package/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  465. package/.next/static/chunks/112mv-com-mqa.js +21 -0
  466. package/.next/static/chunks/1bkt_hhjzvbh8.js +1 -0
  467. package/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  468. package/.next/static/chunks/1d8yv3k_atka7.js +1 -0
  469. package/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  470. package/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  471. package/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  472. package/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  473. package/.next/static/chunks/2q9i7pcxcnph1.js +7 -0
  474. package/.next/static/chunks/2w-y83mjlpnse.js +1 -0
  475. package/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  476. package/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  477. package/.next/static/chunks/34g73qhayuevu.js +1 -0
  478. package/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  479. package/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  480. package/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  481. package/.next/static/chunks/3y40z6of3r9py.js +1 -0
  482. package/.next/static/chunks/403dpflln8ah5.js +1 -0
  483. package/.next/static/chunks/43pg2sursiypz.js +1 -0
  484. package/CHANGELOG.md +203 -0
  485. package/README.md +96 -50
  486. package/SECURITY.md +25 -11
  487. package/lib/auto-connect.js +145 -0
  488. package/lib/backups.js +458 -0
  489. package/lib/chain-layout.js +32 -0
  490. package/lib/companies.js +1 -1
  491. package/lib/csv-store.js +131 -0
  492. package/lib/csv.js +137 -39
  493. package/lib/data-folder.js +19 -3
  494. package/lib/data-import.js +5 -2
  495. package/lib/db-client.js +78 -20
  496. package/lib/demo.js +5 -4
  497. package/lib/galaxy-export.js +9 -2
  498. package/lib/galaxy-lab.js +19 -5
  499. package/lib/galaxy-layouts.js +43 -0
  500. package/lib/gate.js +10 -4
  501. package/lib/in-progress.js +46 -0
  502. package/lib/ingest.js +1 -1
  503. package/lib/insights-board.js +613 -0
  504. package/lib/linkedin-limits.js +240 -14
  505. package/lib/liquid-glass.js +59 -0
  506. package/lib/notifications.js +13 -0
  507. package/lib/requests-client.js +10 -0
  508. package/lib/requests.js +124 -0
  509. package/lib/scan-pace.js +11 -0
  510. package/lib/scan-progress.js +20 -0
  511. package/lib/scan-risk.js +44 -0
  512. package/lib/scan-state.js +1 -0
  513. package/lib/scanner-setup.js +97 -15
  514. package/lib/scraper-client.js +35 -8
  515. package/lib/search-risk.js +7 -3
  516. package/lib/settings-client.js +5 -3
  517. package/lib/settings.js +13 -0
  518. package/lib/social-store.js +3 -2
  519. package/lib/synced-setting.js +46 -0
  520. package/lib/theme-store.js +42 -10
  521. package/lib/themes.js +111 -21
  522. package/lib/usage.js +200 -0
  523. package/package.json +1 -1
  524. package/scripts/scrape.py +595 -11
  525. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +0 -3
  526. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13dx4sd._.js +0 -8
  527. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +0 -3
  528. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +0 -3
  529. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +0 -3
  530. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +0 -3
  531. package/.next/standalone/.next/server/chunks/_02twlca._.js +0 -10
  532. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +0 -8
  533. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +0 -8
  534. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +0 -8
  535. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +0 -174
  536. package/.next/standalone/.next/server/chunks/lib_rpc_04s8mzr.js +0 -3
  537. package/.next/standalone/.next/server/chunks/lib_rpc_053z7as.js +0 -3
  538. package/.next/standalone/.next/server/chunks/lib_rpc_0b_-2te.js +0 -3
  539. package/.next/standalone/.next/server/chunks/lib_rpc_0dhbxdm.js +0 -3
  540. package/.next/standalone/.next/server/chunks/lib_rpc_0dxlk31.js +0 -3
  541. package/.next/standalone/.next/server/chunks/lib_rpc_0f8b-qc.js +0 -3
  542. package/.next/standalone/.next/server/chunks/lib_rpc_0pzie7_.js +0 -3
  543. package/.next/standalone/.next/server/chunks/lib_rpc_0r76fq_.js +0 -3
  544. package/.next/standalone/.next/server/chunks/lib_rpc_0ut7pjp.js +0 -3
  545. package/.next/standalone/.next/server/chunks/lib_rpc_15zyqaz.js +0 -3
  546. package/.next/standalone/.next/server/chunks/lib_rpc_18zpjtq.js +0 -3
  547. package/.next/standalone/.next/server/chunks/lib_rpc_1a8xkiz.js +0 -3
  548. package/.next/standalone/.next/server/chunks/lib_rpc_1e_55xo.js +0 -3
  549. package/.next/standalone/.next/server/chunks/lib_rpc_1oxfd1_.js +0 -3
  550. package/.next/standalone/.next/server/chunks/lib_rpc_1s0lod0.js +0 -3
  551. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +0 -3
  552. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +0 -3
  553. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +0 -3
  554. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +0 -3
  555. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +0 -3
  556. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +0 -3
  557. package/.next/standalone/.next/server/chunks/ssr/_1-658fq._.js +0 -3
  558. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +0 -3
  559. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +0 -3
  560. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +0 -3
  561. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +0 -3
  562. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  563. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  564. package/.next/standalone/.next/static/chunks/0i02yxppzds1o.js +0 -1
  565. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  566. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +0 -1
  567. package/.next/standalone/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  568. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  569. package/.next/standalone/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  570. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +0 -34
  571. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  572. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  573. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  574. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +0 -45
  575. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  576. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +0 -11
  577. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  578. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  579. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  580. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  581. package/.next/standalone/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  582. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  583. package/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  584. package/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  585. package/.next/static/chunks/0i02yxppzds1o.js +0 -1
  586. package/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  587. package/.next/static/chunks/0oyslj62jkubd.js +0 -1
  588. package/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  589. package/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  590. package/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  591. package/.next/static/chunks/172e10mi-tpo_.js +0 -34
  592. package/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  593. package/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  594. package/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  595. package/.next/static/chunks/1m3017gp790pw.js +0 -45
  596. package/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  597. package/.next/static/chunks/2-ch9rm27eril.js +0 -11
  598. package/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  599. package/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  600. package/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  601. package/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  602. package/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  603. package/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  604. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_buildManifest.js +0 -0
  605. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_clientMiddlewareManifest.js +0 -0
  606. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_ssgManifest.js +0 -0
  607. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_buildManifest.js +0 -0
  608. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_clientMiddlewareManifest.js +0 -0
  609. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_ssgManifest.js +0 -0
@@ -1,22 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68863,e=>{"use strict";var n=e.i(43476),t=e.i(71645),i=e.i(18566),o=e.i(2776),s=e.i(22016),a=e.i(40996);let r={install:"Install",setup:"Set up the scanner"};var l=e.i(64745),d=e.i(48235),c=e.i(51798);let h=`
2
- @keyframes radarSweep { to { transform: rotate(360deg); } }
3
- @keyframes radarPing { 0% { opacity: .9; r: 3; } 100% { opacity: 0; r: 11; } }
4
- .radar-sweep { transform-origin: 118px 118px; animation: radarSweep 2.6s linear infinite; }
5
- .radar-ping { animation: radarPing 2.6s ease-out infinite; }
6
- .radar-go { transition: transform .15s ease, box-shadow .2s ease; }
7
- .radar-go:not(:disabled):hover { transform: scale(1.04); box-shadow: 0 0 34px rgba(0,255,136,.45); }
8
- .radar-go:not(:disabled):active { transform: scale(.97); }
9
- @media (prefers-reduced-motion: reduce) { .radar-sweep, .radar-ping { animation: none; } }
10
- `,p=[[.62,.7],[.38,2.1],[.8,3.3],[.5,4.4],[.72,5.6]];function g(e,n,t){let i=n=>`${(118+e*Math.cos(n)).toFixed(2)} ${(118+e*Math.sin(n)).toFixed(2)}`,o=+(t-n>Math.PI);return`M${i(n)} A${e} ${e} 0 ${o} 1 ${i(t)}`}function u({li:e,running:t,scanning:i,disabled:o,label:s,sublabel:a,onScan:r,onPace:l}){let d=e?.limits?.pace||"fast",f=e?.limits?.daily||0,x=e?.unreadable?f:e?.searchesToday||0,y=f?Math.max(0,f-x):null,b=f?Math.min(1,x/f):0,m=b>=.9?"#ff6b6b":b>=.6?"#FFD700":"#00ff88",j=-Math.PI/2,w=108;return(0,n.jsxs)("div",{style:{display:"flex",gap:22,alignItems:"center",flexWrap:"wrap",padding:"14px 16px",borderRadius:14,border:"1px solid rgba(0,255,136,0.18)",background:"radial-gradient(circle at 20% 50%, rgba(0,255,136,0.06), rgba(255,255,255,0.02) 60%)"},children:[(0,n.jsx)("style",{children:h}),(0,n.jsxs)("div",{style:{position:"relative",width:236,height:236,flexShrink:0},children:[(0,n.jsxs)("svg",{width:236,height:236,"aria-hidden":"true",style:{position:"absolute",inset:0},children:[(0,n.jsxs)("defs",{children:[(0,n.jsxs)("radialGradient",{id:"radarBg",children:[(0,n.jsx)("stop",{offset:"0",stopColor:"#0f2a22"}),(0,n.jsx)("stop",{offset:"1",stopColor:"#0a0a1a"})]}),(0,n.jsxs)("linearGradient",{id:"radarBeam",x1:"0",y1:"0",x2:"1",y2:"0",children:[(0,n.jsx)("stop",{offset:"0",stopColor:"#00ff88",stopOpacity:"0"}),(0,n.jsx)("stop",{offset:"1",stopColor:"#00ff88",stopOpacity:"0.45"})]})]}),(0,n.jsx)("circle",{cx:118,cy:118,r:w,fill:"url(#radarBg)",stroke:"rgba(0,255,136,0.25)"}),[.33,.66].map(e=>(0,n.jsx)("circle",{cx:118,cy:118,r:w*e,fill:"none",stroke:"rgba(0,255,136,0.14)",strokeDasharray:"2 5"},e)),(0,n.jsx)("line",{x1:118-w,y1:118,x2:118+w,y2:118,stroke:"rgba(0,255,136,0.1)"}),(0,n.jsx)("line",{x1:118,y1:118-w,x2:118,y2:118+w,stroke:"rgba(0,255,136,0.1)"}),(0,n.jsxs)("g",{className:t?"radar-sweep":void 0,opacity:t?1:.35,children:[(0,n.jsx)("path",{d:`M118 118 L${118+w} 118 A${w} ${w} 0 0 0 ${118+.8525245220595057*w} ${118+-.5226872289306592*w} Z`,fill:"url(#radarBeam)"}),(0,n.jsx)("line",{x1:118,y1:118,x2:118+w,y2:118,stroke:"#00ff88",strokeOpacity:.8,strokeWidth:1.5})]}),p.map(([e,i],o)=>(0,n.jsxs)("g",{children:[(0,n.jsx)("circle",{cx:118+w*e*Math.cos(i),cy:118+w*e*Math.sin(i),r:2.4,fill:"#00ff88",opacity:t?.9:.35}),t&&(0,n.jsx)("circle",{className:"radar-ping",style:{animationDelay:`${i/(2*Math.PI)*2.6}s`},cx:118+w*e*Math.cos(i),cy:118+w*e*Math.sin(i),r:3,fill:"none",stroke:"#00ff88"})]},o)),(0,n.jsx)("path",{d:g(w+5,j,j+2*Math.PI-.001),fill:"none",stroke:"rgba(255,255,255,0.08)",strokeWidth:5}),b>0&&(0,n.jsx)("path",{d:g(w+5,j,j+2*Math.PI*b-.001),fill:"none",stroke:m,strokeWidth:5,strokeLinecap:"round"})]}),(0,n.jsxs)("button",{type:"button",className:"radar-go",onClick:r,disabled:o,style:{position:"absolute",left:56,top:56,width:124,height:124,borderRadius:"50%",cursor:o?"not-allowed":"pointer",border:`2px solid ${o?"rgba(255,255,255,0.12)":"#00ff88"}`,background:o?"rgba(20,24,40,0.92)":"radial-gradient(circle at 50% 35%, #134d3a, #0b2a22 70%)",color:o?"#667":"#eafff5",boxShadow:o?"none":"0 0 22px rgba(0,255,136,0.25)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,padding:8},children:[(0,n.jsx)("span",{style:{fontSize:22,fontWeight:900,letterSpacing:2},children:i?"•••":"SCAN"}),(0,n.jsx)("span",{style:{fontSize:11,fontWeight:700,opacity:.85,lineHeight:1.25,textAlign:"center"},children:s}),a&&(0,n.jsx)("span",{style:{fontSize:10,opacity:.6,textAlign:"center"},children:a})]})]}),(0,n.jsxs)("div",{style:{flex:1,minWidth:260},children:[(0,n.jsx)("div",{style:{fontSize:10,fontWeight:800,letterSpacing:1,color:"#6b7090",textTransform:"uppercase",marginBottom:8},children:"Speed"}),(0,n.jsx)("div",{role:"radiogroup","aria-label":"Scan speed",style:{display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:6},children:c.PACE_NAMES.map(e=>{let i=c.PACES[e],o=d===e,s="slow"===e?"#00E5FF":"medium"===e?"#FFD700":"#FF7043";return(0,n.jsxs)("button",{type:"button",role:"radio","aria-checked":o,disabled:t||!l,onClick:()=>l?.(e),title:`${i.pagePause} s before each page, ${i.chunkCooldown/60} min more after every 10, profiles ${i.profileGap} s apart`,style:{padding:"10px 8px",borderRadius:10,cursor:t?"not-allowed":"pointer",textAlign:"left",border:`1.5px solid ${o?s:"rgba(255,255,255,0.1)"}`,background:o?`${s}1a`:"rgba(255,255,255,0.03)",color:"#ddd"},children:[(0,n.jsx)("div",{style:{fontSize:14,fontWeight:800,color:o?s:"#ccd"},children:i.label}),(0,n.jsxs)("div",{style:{fontSize:11,color:"#8a8fa8",marginTop:2},children:["~",(0,c.searchesPerHour)(e)," searches an hour"]}),(0,n.jsxs)("div",{style:{fontSize:10.5,color:"#6b7090",marginTop:1},children:[i.pagePause," s between pages"]})]},e)})}),(0,n.jsx)("div",{style:{marginTop:10,fontSize:12.5,color:"#b8c4c4",lineHeight:1.6},children:e?null==y?(0,n.jsx)(n.Fragment,{children:"No daily cap is set."}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("b",{style:{color:m},children:y})," of ",f," searches left today",y>0&&(0,n.jsxs)(n.Fragment,{children:[" · at ",(0,c.paceOf)(d).label,", ",(0,c.durationText)((0,c.paceSeconds)(d,y))," to use them"]}),"."]}):(0,n.jsx)(n.Fragment,{children:"Today’s searches show here once the scanner can read them."})}),(0,n.jsx)("div",{style:{marginTop:4,fontSize:11.5,color:"#778",lineHeight:1.55},children:"Fast is how the scanner has always run; Medium and Slow only add waiting, so fewer searches an hour reach LinkedIn. Your daily budget stays the cap at every speed: slower spreads it out, it doesn’t shrink it. Slower lowers the odds of a check from LinkedIn; it can’t promise there won’t be one."})]})]})}var f=e.i(33821);let x={daily:50,monthly:250};var y=e.i(54322);let b="1px solid rgba(255,255,255,0.1)",m=y.TIER_COLORS,j=[25,50,100,200,500],w=[100,250,500,1e3,0],v=[10,25,50,100],k=e=>new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric"});function S({cooldown:e,onLift:i,disabled:o}){let[s,a]=(0,t.useState)(!1);return e?(0,n.jsxs)("div",{role:"status",style:{padding:"12px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,background:"rgba(255,80,80,0.08)",border:"1px solid rgba(255,80,80,0.35)",color:"#f3c9c9"},children:[(0,n.jsxs)("b",{style:{color:"#ff8080"},children:["Scanning is paused until ",new Date(e.until).toLocaleString(void 0,{weekday:"short",month:"short",day:"numeric",hour:"numeric",minute:"2-digit"}),"."]})," ",e.reason,". Nothing that searches LinkedIn will run until then, so the account can recover.",(0,n.jsx)("div",{style:{marginTop:8,display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:s?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{style:{fontSize:12.5},children:"Only if people search works normally for you on linkedin.com right now."}),(0,n.jsx)("button",{onClick:()=>{a(!1),i()},style:{...W,color:"#ff8080"},children:"Yes, lift it"}),(0,n.jsx)("button",{onClick:()=>a(!1),style:W,children:"Keep it"})]}):(0,n.jsx)("button",{onClick:()=>a(!0),disabled:o,style:W,children:"Lift it early…"})})]}):null}function I({used:e,cap:t}){let i=t?Math.min(100,Math.round(e/t*100)):0;return(0,n.jsx)("div",{style:{height:5,borderRadius:3,background:"rgba(255,255,255,0.07)",overflow:"hidden",marginTop:4},children:(0,n.jsx)("div",{style:{height:"100%",width:`${i}%`,background:i>=100?"#ff6b6b":i>=75?"#FFD700":"#3498DB"}})})}function T({li:e,onSetLimits:t,disabled:i}){if(!e)return null;let{limits:o}=e,s=e.unreadable?"?":e.searchesToday,a=e.unreadable?"?":e.profilesToday,r=e=>t({...o,...e}),l=e=>{let n=function(e={},n={}){return Number(n.daily)>100&&Number(n.daily)>Number(e.daily)?`${n.daily} searches a day is more than LinkedIn has put up with. A real account was restricted after 373 searches in 24 hours, run back to back. The default is ${x.daily} a day.
11
-
12
- Set ${n.daily} a day anyway?`:0===n.monthly&&0!==e.monthly?`With no monthly cap, only the daily budget stops a scan. A real account was restricted after 373 searches in 24 hours with no monthly cap set.
13
-
14
- Turn the monthly cap off anyway?`:null}(o,{...o,...e});(!n||window.confirm(n))&&r(e)},d=function({daily:e,monthly:n}={}){if(!(({daily:e,monthly:n}={})=>Number(e)>100||0===n)({daily:e,monthly:n}))return null;let t=["A real account was restricted after 373 searches in 24 hours."];return Number(e)>100&&t.push(`${e} a day can use up a free account's month in a day or two.`),0===n&&t.push("With no monthly cap, nothing but the daily budget stops a long run."),t.join(" ")}(o);return(0,n.jsxs)("div",{style:{padding:"12px 14px",borderRadius:8,border:b,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#b8c4c4"},children:[(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(210px, 1fr))",gap:14},children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:s})," of ",o.daily||"no limit"," searches in the last 24 hours"]}),(0,n.jsx)(I,{used:e.searchesToday||0,cap:o.daily})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:e.searchesMonth})," of ",o.monthly||"no limit"," this month · resets ",k(e.monthResets)]}),(0,n.jsx)(I,{used:e.searchesMonth,cap:o.monthly})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("b",{style:{color:"#fff"},children:a})," of ",o.profiles," profile views today"]}),(0,n.jsx)(I,{used:e.unreadable?o.profiles:e.profilesToday,cap:o.profiles})]})]}),(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",marginTop:10},children:[(0,n.jsx)("span",{children:"Budget:"}),(0,n.jsx)("select",{value:o.daily,disabled:i,onChange:e=>l({daily:Number(e.target.value)}),style:R,children:j.map(e=>(0,n.jsxs)("option",{value:e,children:[e," a day"]},e))}),(0,n.jsx)("select",{value:o.monthly,disabled:i,onChange:e=>l({monthly:Number(e.target.value)}),style:R,children:w.map(e=>(0,n.jsx)("option",{value:e,children:e?`${e} a month`:"no monthly cap (Premium)"},e))}),(0,n.jsx)("select",{value:o.profiles,disabled:i,onChange:e=>r({profiles:Number(e.target.value)}),style:R,children:v.map(e=>(0,n.jsxs)("option",{value:e,children:[e," profile views a day"]},e))})]}),(0,n.jsx)("div",{style:{marginTop:8,color:"#778",lineHeight:1.6},children:"Every page of someone’s connections is one search. LinkedIn limits a free account’s people searches by the month (it doesn’t say how many; reports put it around 250–350), resetting on the 1st. When a budget is used, a scan saves what it read and stops; the next one carries on from the same page."}),d&&(0,n.jsxs)("div",{style:{marginTop:8,display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",color:"#FFD700",lineHeight:1.6},children:[(0,n.jsx)("b",{style:{flex:1,minWidth:200},children:d}),(0,n.jsxs)("button",{onClick:()=>r(x),disabled:i,style:{...R,cursor:i?"not-allowed":"pointer",color:"#FFD700",borderColor:"rgba(255,215,0,0.4)"},children:["Back to ",x.daily," a day, ",x.monthly," a month"]})]}),(0,n.jsx)("div",{style:{marginTop:6,color:"#778",lineHeight:1.6},children:"Each circle scan opens the person’s profile once, which is one profile view. Profile views are what LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and once today’s are used, a scan stops before the next profile and tries that person next time."})]})}function C({paused:e=[],onResume:i,onResumeAll:o,disabled:s}){let[a,r]=(0,t.useState)(!1);if(!e.length)return null;let l=e.filter(e=>e.legacy).length,d=a?e:e.slice(0,8);return(0,n.jsxs)("div",{style:{borderRadius:8,border:b,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"10px 14px",borderBottom:b,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{style:{fontSize:13.5},children:["Paused — ",e.length," ",1===e.length?"list":"lists"," with more to read"]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",marginTop:2},children:["Each carries on from the page it stopped at",l?`; ${l} were read to page 10 before whole lists were read`:"","."]})]}),(0,n.jsx)("button",{onClick:o,disabled:s,style:{...z,opacity:s?.4:1,cursor:s?"not-allowed":"pointer",background:s?"rgba(255,255,255,0.06)":"linear-gradient(135deg, #3498DB, #9B59B6)"},children:"Resume all"})]}),(0,n.jsx)("div",{children:d.map(e=>(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"8px 14px",borderBottom:"1px solid rgba(255,255,255,0.04)"},children:[(0,n.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:m[e.tier]||"#667",flexShrink:0}}),(0,n.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,n.jsx)("div",{style:{fontSize:13,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,n.jsxs)("div",{style:{fontSize:11.5,color:"#8b9a9a"},children:["Read to page ",e.pagesRead," · carries on at ",e.nextPage,e.at?` \xb7 ${k(e.at)}`:"",e.unclear>=2?" · came back unclear twice, so it waits at the back of Resume all":""]})]}),(0,n.jsx)("button",{onClick:()=>i(e),disabled:s,style:{...z,padding:"6px 12px",fontSize:12,opacity:s?.4:1,cursor:s?"not-allowed":"pointer"},children:"Resume"})]},e.id))}),e.length>8&&(0,n.jsx)("button",{onClick:()=>r(!a),style:{...W,padding:"10px 14px"},children:a?"Show fewer":`Show all ${e.length}`})]})}let z={padding:"8px 14px",borderRadius:7,fontSize:13,fontWeight:700,cursor:"pointer",border:b,background:"rgba(255,255,255,0.08)",color:"#fff"},W={background:"none",border:"none",color:"#8fb8d6",cursor:"pointer",fontSize:12.5,fontWeight:600,padding:0},R={padding:"6px 8px",borderRadius:6,fontSize:12.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:b};var $=e.i(8819),P=e.i(98197);e.i(77170);var F=e.i(69083),L=e.i(56899);let B={color:"#3498DB"};function M({onDone:e}){let[i,o]=(0,t.useState)([]),[s,a]=(0,t.useState)(null),[r,l]=(0,t.useState)(null);async function d(){a("pick"),l(null);let n=await (0,L.saveSettings)({sectorFocus:{sectors:i,strength:"lean"},fieldAsked:!0});n.settings?e(n.settings.sectorFocus.sectors):(l(n.error),a(null))}async function c(){a("skip"),l(null),await (0,L.saveSettings)({fieldAsked:!0}),e([])}return(0,n.jsxs)("section",{"aria-labelledby":"field-question","data-field-question":!0,style:{margin:"8px 0 0",padding:"20px 22px 0",borderRadius:12,border:$.LINE,background:"rgba(255,255,255,0.03)"},children:[(0,n.jsx)("div",{style:{fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:"Before you scan · optional"}),(0,n.jsx)("h2",{id:"field-question",style:{fontSize:18,fontWeight:700,margin:"6px 0 4px"},children:"What field are you in?"}),(0,n.jsx)($.Body,{style:{marginTop:0,marginBottom:14},children:"Pick up to three. Companies in your field count for more when your network is scored, so the people there rank higher. You can change it anytime in Settings."}),(0,n.jsx)(P.default,{sectors:i,onChange:o,disabled:!!s}),(0,n.jsxs)("div",{style:{position:"sticky",bottom:0,margin:"16px -22px 0",padding:"12px 22px 16px",borderTop:$.LINE,borderRadius:"0 0 11px 11px",background:"#111121"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[(0,n.jsx)($.Btn,{primary:!0,onClick:d,disabled:!i.length||!!s,children:"pick"===s?"Saving…":"Continue"}),(0,n.jsx)($.Btn,{onClick:c,disabled:!!s,children:"Skip for now"})]}),r&&(0,n.jsx)($.Status,{tone:"bad",children:r})]})]})}function D({sectors:e}){return e.length?(0,n.jsxs)($.Status,{tone:"ok",children:["Your field: ",e.map(e=>(0,F.sectorByKey)(e).label).join(" · "),". Your first scan is scored with it. Change it anytime in ",(0,n.jsx)(s.default,{href:"/settings#sector",style:B,children:"Settings"}),"."]}):(0,n.jsxs)($.Status,{children:["No field for now. You can pick one anytime in ",(0,n.jsx)(s.default,{href:"/settings#sector",style:B,children:"Settings"}),"."]})}let N="1px solid rgba(255,255,255,0.1)",E={photos:"Saving profile photos to this computer",install:"Installing the scanner",setup:"Setting up the scanner",login:"Waiting for you to sign in",full:"Scanning your whole network",refresh:"Checking for new connections","auto-bridge":"Mapping 2nd-degree connections","auto-bridge-retry":"Mapping 2nd degree, hidden ones included",resume:"Carrying on with one paused list","resume-all":"Carrying on with every paused list"};function O(){let e;(0,t.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&window.location.replace("/settings?check=updates")},[]);let[o,h]=(0,t.useState)(null),[p,g]=(0,t.useState)(!1),[x,y]=(0,t.useState)(10),[b,m]=(0,t.useState)(["S","A"]),[j,w]=Y("six-degrees-bridge-order","newest"),[v,k]=Y("six-degrees-bridge-pages-v2",100),[I,z]=Y("six-degrees-bridge-finish",!0),[W,R]=Y("six-degrees-experimental-auto",!1),[$,P]=Y(a.HIDE_CHROME_KEY,!1),[F,L]=(0,t.useState)(null),B=(0,t.useRef)(null),[O,H]=(0,t.useState)(void 0),[en,et]=(0,t.useState)(null),ei=(0,i.useSearchParams)().get("scan"),[eo,es]=(0,t.useState)(null);(0,t.useEffect)(()=>{if(!ei)return;let e=!0;return(0,a.pickedPerson)(ei).then(n=>{e&&es(n?.person?n:null)},()=>{}),()=>{e=!1}},[ei]);let ea=(0,t.useCallback)(async()=>{try{let e=await fetch("/api/scraper");h(await e.json())}catch{h(e=>e||{ready:!1,checks:{},log:[]})}},[]);async function er(){L(null),await (0,a.stopScrape)().catch(e=>L(e.message)),ea()}async function el(e,n={}){L(null),g(!0);try{let t=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((0,a.scanRequest)(e,n,$))}),i=await t.json();t.ok||L(i.error||"Could not start.")}catch(e){L(e.message)}finally{g(!1),ea()}}(0,t.useEffect)(()=>{ea();let e=setInterval(ea,1500);return()=>clearInterval(e)},[ea]),(0,t.useEffect)(()=>{if(l.IS_DEMO)return;let e=!1;return fetch("/api/settings").then(e=>e.ok?e.json():null).then(n=>{e||H(n?.settings||null)}).catch(()=>{e||H(null)}),()=>{e=!0}},[]),(0,t.useEffect)(()=>{B.current&&(B.current.scrollTop=B.current.scrollHeight)},[o?.log?.length]);let ed=o?.checks||{},ec=o?.running,eh={...e=function(e){let n=e?.checks||{},t=(n,t,i)=>e?.running&&e.action===n?i:t;if(n.dependencies)return"bundled"===n.pythonSource?{done:!0,text:"Ready. The scanner and its Python come with the app, so there is nothing to install.",button:null}:"custom"===n.pythonSource?{done:!0,text:`Ready, on the Python named in SIX_DEGREES_PYTHON (${n.pythonPath}).`,button:null}:{done:!0,text:"Installed.",button:null};let i=n.ownPython&&"bundled"!==n.ownPython.source?`The Python named in SIX_DEGREES_PYTHON didn't work (${n.ownPython.problem}), so the scanner needs setting up another way. `:"";if(n.installFrom)return{done:!1,text:i+("downloaded"===n.installFrom.source?"Its own Python is already here. One more step, about a minute: it installs the browser-automation packages into it.":"One-time, about a minute. Downloads the browser-automation packages."),button:{action:"install",label:t("install","Install","Installing…")}};if(n.download){let e=Math.round(n.download.size/1048576);return{done:!1,text:`${i}${function(e){if(!e?.version)return"This computer has no Python the scanner can use.";let[n,t]=String(e.version).split(".").map(Number);return 3===n&&t>=10&&t<=14&&!1===e.venv?`This computer's Python ${e.version} can't make the scanner's own environment (on Ubuntu or Debian, python3-venv isn't installed).`:`This computer has Python ${e.version}, and the scanner needs 3.10 to 3.14.`}(n.systemPython)} Set up the scanner downloads its own Python ${n.download.version} (${e} MB, from GitHub) and the scanner's packages (from PyPI) into your data folder. Nothing else on this computer changes. About two minutes.`,button:{action:"setup",label:t("setup","Set up the scanner","Setting up…")}}}return{done:!1,text:`${i}No Python 3.10 to 3.14 was found on this machine. Install one from python.org, then reload.`,button:null}}(o),note:function(e,{done:n,button:t}){if(e?.source!=="bundled")return null;let i=/SIGKILL|code signature|not valid for use in process|quarantine|not permitted/i.test(e.problem||""),o=[`The Python that comes with the app didn't work (${e.problem}).`];return i&&o.push("macOS may have blocked it."),!1===e.retry&&o.push("Six Degrees won't try it again until you restart it."),n?o.push("The scanner uses another Python on this computer instead."):t?o.push(`To scan now, use ${r[t.action]} below: it gives the scanner a Python of its own in your data folder.`):o.push("To scan now, install Python 3.10 to 3.14 from python.org, then reload."),o.join(" ")}(o?.checks?.ownPython,e)};o&&ed.dependencies;let ep=o&&!ed.chrome,eg=o&&!ed.scriptsFound,eu=o?.ready&&!ec,ef=o?.linkedin,ex=!!ef?.cooldown,ey=eu&&!ex,eb=o?.network||{first:0,second:0,third:0},em=eb.first,ej=o&&eh.done?ed.signedIn?0===em?3:4:2:1,ew=(e,n)=>n&&e!==ej?"done":e===ej?"now":e<ej?"done":"next",ev=!l.IS_DEMO&&!en&&function(e,n){if(!e)return null;let t=e.network;return!!t&&!t.first&&!t.second&&!t.third&&!e.running&&(void 0===n?null:!!(n&&!n.fieldAsked&&!n.sectorFocus?.sectors?.length))}(o,O),ek=o&&!ec&&null!=o.exitCode&&0!==o.exitCode,eS=ek?o.failure?.length?o.failure.join("\n"):[...o.log||[]].reverse().find(e=>!/^Stopped \(exit/.test(e)&&!/Warning|warnings\.warn/.test(e)):null;return(0,n.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:"var(--sd-font)"},children:[(0,n.jsx)(f.default,{active:"scan",brand:"span"}),(0,n.jsxs)("div",{style:{maxWidth:720,margin:"0 auto",padding:"32px 24px 64px"},children:[(0,n.jsxs)("div",{style:{padding:"26px 26px 22px",borderRadius:16,marginBottom:22,position:"relative",overflow:"hidden",background:"radial-gradient(120% 140% at 0% 0%, rgba(0,255,136,0.10), rgba(52,152,219,0.06) 45%, rgba(255,255,255,0.02) 75%)",border:"1px solid rgba(0,255,136,0.22)"},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:800,letterSpacing:1.6,color:"#00ff88"},children:"YOUR SCANNER"}),(0,n.jsx)("h1",{style:{fontSize:27,fontWeight:800,margin:"6px 0 8px",lineHeight:1.2},children:em>0?"Your network is mapped. Send the scanner further.":"Map your network in four steps."}),(0,n.jsx)("div",{style:{fontSize:14.5,color:"#aab7c4",lineHeight:1.6,maxWidth:560},children:"It works in your own Chrome on this Mac, slowly and in the open, and keeps everything here. You launch it; it does the reading; you watch it go."}),(0,n.jsx)("div",{style:{display:"flex",gap:"8px 18px",flexWrap:"wrap",marginTop:16},children:["Never posts or messages anyone","Never sees your password","Nothing leaves this Mac","Stops the moment you say"].map(e=>(0,n.jsxs)("span",{style:{fontSize:12.5,color:"#cfe8dc",display:"flex",alignItems:"center",gap:6},children:[(0,n.jsx)("span",{style:{color:"#00ff88",fontWeight:900},children:"✓"}),e]},e))})]}),null===ev&&(0,n.jsx)("p",{style:{color:"#778",fontSize:13},children:"Checking your setup…"}),ev&&(0,n.jsx)(M,{onDone:function(e){et({sectors:e}),window.scrollTo(0,0)}}),en&&(0,n.jsx)(D,{sectors:en.sectors}),!1===ev&&(0,n.jsxs)(n.Fragment,{children:[eo?.person.id===ei&&(0,n.jsx)(A,{pick:eo,pages:v,setPages:k,li:ef,running:ec,s:o,canSearch:ey,busy:p,onUnpick:function(){es(null);try{window.history.replaceState(null,"",window.location.pathname)}catch{}},onStart:()=>el("bridge",{id:eo.person.id,maxPages:v})}),em>0&&!ec&&(0,n.jsx)(Z,{children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{children:[em.toLocaleString()," connections"]}),eb.second>0&&(0,n.jsxs)(n.Fragment,{children:[", plus ",eb.second.toLocaleString()," people in their circles"]}),eb.third>0&&(0,n.jsxs)(n.Fragment,{children:[" and ",eb.third.toLocaleString()," from company scans"]}),"."," ",(0,n.jsx)("span",{style:{color:"#9aa"},children:"Your galaxy is ready."})]}),(0,n.jsx)(s.default,{href:"/",style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:700,color:"#0a0a1a",textDecoration:"none",background:"linear-gradient(135deg, #FFD700, #FF6B35)"},children:"See your network →"})]})}),o?.photosWaiting>0&&!ec&&(0,n.jsx)(Z,{children:(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,n.jsxs)("div",{style:{flex:1,minWidth:200},children:[(0,n.jsxs)("b",{children:[o.photosWaiting.toLocaleString()," ",1===o.photosWaiting?"photo isn’t":"photos aren’t"," saved on this computer yet."]})," ",(0,n.jsx)("span",{style:{color:"#9aa"},children:"An older version kept them as links to LinkedIn. The app doesn’t load photos from LinkedIn while you browse, so those people show initials until the photos are saved here: now, or at the end of your next scan. An expired link can’t be saved; that person’s photo comes back when they’re next scanned."}),o&&!ed.dependencies&&(0,n.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:6},children:"Set up the scanner first (step 1 below): it saves them."})]}),(0,n.jsx)(V,{onClick:()=>el("photos"),disabled:p||!ed.dependencies,children:"Save photos"})]})}),ek&&(0,n.jsxs)(Z,{tone:"bad",children:[(0,n.jsx)("b",{children:"The last run stopped before it finished."}),eS&&(0,n.jsx)("div",{style:{marginTop:6,color:"#e8c4c4",whiteSpace:"pre-wrap",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",fontSize:12.5},children:eS}),(0,n.jsx)("div",{style:{color:"#9aa",marginTop:6},children:"The full log is below."})]}),eg&&(0,n.jsxs)(Z,{tone:"bad",children:[(0,n.jsx)("b",{children:"Can’t find the scanner files."}),(0,n.jsx)("br",{}),(0,n.jsxs)("span",{style:{color:"#9aa"},children:["Expected ",(0,n.jsx)("code",{style:_,children:"scripts/scrape.py"})," next to the app. If you downloaded a zip, run the app from inside the project folder."]})]}),ep&&(0,n.jsxs)(Z,{tone:"bad",children:[(0,n.jsx)("b",{children:"Google Chrome isn’t installed."}),(0,n.jsx)("br",{}),(0,n.jsxs)("span",{style:{color:"#9aa"},children:["The scanner drives your real Chrome. Install it from"," ",(0,n.jsx)("a",{href:"https://www.google.com/chrome/",target:"_blank",rel:"noreferrer",style:{color:"#3498DB"},children:"google.com/chrome"}),", then reload this page."]})]}),o&&eh.note&&(0,n.jsx)(Z,{tone:eh.done?void 0:"bad",children:eh.note}),(0,n.jsxs)("div",{role:"list","aria-label":"Scanning, step by step",style:{margin:"4px 0 8px"},children:[(0,n.jsx)("style",{children:U}),(0,n.jsx)(K,{n:1,label:"Get ready",state:ew(1,eh.done),children:(0,n.jsx)(q,{title:"Get your scanner ready",time:"A minute or two, once",done:eh.done,body:o?eh.text:"Checking…",launch:o&&eh.button&&(0,n.jsx)(X,{onClick:()=>el(eh.button.action),disabled:p||ec,children:eh.button.label})})}),(0,n.jsx)(K,{n:2,label:"Sign in",state:ew(2,!!ed.signedIn),children:(0,n.jsx)(q,{title:"Sign in to LinkedIn, once",time:"You do this part",done:!!ed.signedIn,body:ed.signedIn?"Signed in on this Mac. If LinkedIn ever asks for a security check, or a scan says you were signed out, open LinkedIn here and finish it by hand.":"A Chrome window opens. Sign in with your email and password there: the scanner never sees them. (“Continue with Google” can’t work in it, because Google blocks its sign-in in automated browsers.)",launch:ed.dependencies&&(0,n.jsx)(X,{onClick:()=>el("login"),disabled:p||ec||ej<2,quiet:!!ed.signedIn,children:ec&&"login"===o.action?"Waiting for you…":ed.signedIn?"Open LinkedIn again":"Open LinkedIn"})})}),(0,n.jsx)(K,{n:3,label:"Who you know",state:ew(3,em>0),children:(0,n.jsx)(q,{title:"Map the people you know",time:"About a minute and a half for 750 people",done:em>0,body:em>0?`${em.toLocaleString()} connections saved. Check for new picks up anyone you've added since; Scan it all again reads the whole list.`:"It reads your connections list and saves everyone here. After the first time, Check for new only looks at who you've added since.",launch:(0,n.jsx)(X,{onClick:()=>el("full"),disabled:!ey||ej<3,quiet:em>0,children:ec&&"full"===o.action?"Scanning…":em>0?"Scan it all again":"Scan my network"}),more:em>0&&(0,n.jsx)(V,{onClick:()=>el("refresh"),disabled:!ey||ej<3,primary:!0,children:ec&&"refresh"===o.action?"Checking…":"↻ Check for new"})})}),(0,n.jsx)(K,{n:4,label:"Who they know",state:ew(4,!1),last:!0,children:(0,n.jsxs)(q,{title:"Map who they know",time:"A small batch a day, slowly",body:(0,n.jsxs)(n.Fragment,{children:["It opens your connections one at a time and reads who ",(0,n.jsx)("i",{children:"they"})," know: that fills Degrees, Separation and Outlink. Every round picks up where the last one stopped."]}),children:[(0,n.jsx)(S,{cooldown:ef?.cooldown,disabled:p,onLift:()=>el("lift-cooldown")}),(0,n.jsxs)("div",{style:{display:"flex",gap:24,flexWrap:"wrap",alignItems:"center",marginTop:4},children:[(0,n.jsx)(u,{li:ef,running:!!ec,scanning:!!(ec&&o?.action?.startsWith("auto-bridge")),disabled:!ey||"score"===j&&!b.length,label:ec&&o?.action==="auto-bridge"?"Mapping…":"Map 2nd degree",sublabel:x?`${x} people`:"everyone",onScan:()=>el("auto-bridge",{maxBridges:x,tiers:"score"===j?b:[],order:j,maxPages:v,deeper:I,experimental:W}),onPace:p?void 0:e=>el("set-limits",{...ef?.limits||{},pace:e})}),(0,n.jsxs)("div",{style:{flex:"1 1 230px",display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsxs)("label",{style:{display:"flex",gap:10,alignItems:"center",fontSize:13,color:"#cfd8d8"},children:["This round",(0,n.jsxs)("select",{value:x,onChange:e=>y(Number(e.target.value)),disabled:ec,style:G,children:[(0,n.jsx)("option",{value:5,children:"5 people"}),(0,n.jsx)("option",{value:10,children:"10 people"}),(0,n.jsx)("option",{value:25,children:"25 people"}),(0,n.jsx)("option",{value:0,children:"everyone — not advised"})]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:10,alignItems:"center",fontSize:13,color:"#cfd8d8"},children:["Start with",(0,n.jsxs)("select",{value:j,onChange:e=>w(e.target.value),disabled:ec,style:G,children:[(0,n.jsx)("option",{value:"newest",children:"Newest connections"}),(0,n.jsx)("option",{value:"score",children:"Highest tier"})]})]}),"score"===j&&(0,n.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a"},children:"Work through"}),["S","A","B","C","D"].map(e=>{let t=b.includes(e);return(0,n.jsx)("button",{onClick:()=>m(n=>n.includes(e)?n.filter(n=>n!==e):[...n,e]),disabled:ec,style:{width:30,height:28,borderRadius:7,fontSize:12,fontWeight:700,cursor:ec?"not-allowed":"pointer",border:N,background:t?"rgba(52,152,219,0.22)":"rgba(255,255,255,0.05)",color:t?"#cfe6f7":"#667"},children:e},e)}),(0,n.jsx)("span",{style:{fontSize:11.5,color:"#667"},children:b.length?"":"pick at least one"})]}),"newest"===j&&(0,n.jsxs)("div",{style:{fontSize:12,color:"#8b9a9a",lineHeight:1.6},children:["Goes by the date you connected, newest first, across every tier. Run"," ",(0,n.jsx)("b",{children:"Check for new"})," first so your latest connections are in the list."]}),(0,n.jsx)(J,{})]})]})]})})]}),ec&&(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginTop:20,padding:"14px 16px",borderRadius:8,background:"rgba(0,255,136,0.06)",border:"1px solid rgba(0,255,136,0.3)"},children:[(0,n.jsx)(ee,{}),(0,n.jsxs)("div",{style:{flex:1,fontSize:13.5},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:800,letterSpacing:1.2,color:"#00ff88",marginBottom:2},children:"YOUR SCANNER IS WORKING"}),(0,n.jsx)("b",{children:E[o.action]||"Working"}),o.progress&&(0,n.jsx)(Q,{p:o.progress,action:o.action}),(0,n.jsx)("div",{style:{color:"#8b9a9a",fontSize:12.5,marginTop:2},children:"Stopping closes the browser cleanly and keeps everything found so far."})]}),(0,n.jsx)(V,{onClick:er,tone:"bad",children:"Stop"})]}),(0,n.jsxs)("details",{style:{margin:"18px 0 4px",borderRadius:10,border:N,background:"rgba(255,255,255,0.02)"},children:[(0,n.jsxs)("summary",{style:{padding:"12px 16px",cursor:"pointer",fontSize:13.5,fontWeight:650,color:"#cfd8d8"},children:["Fine-tune the scanner",(0,n.jsx)("span",{style:{fontWeight:500,color:"#778",marginLeft:8},children:"daily budget, how much of each list, the hidden window, paused lists"})]}),(0,n.jsxs)("div",{style:{padding:"4px 16px 16px",display:"flex",flexDirection:"column",gap:12},children:[(0,n.jsx)(T,{li:ef,disabled:p,onSetLimits:e=>el("set-limits",e)}),(0,n.jsxs)("label",{style:{display:"flex",gap:10,alignItems:"center",fontSize:12.5,color:"#cfd8d8"},children:["Read up to",(0,n.jsxs)("select",{value:v,onChange:e=>k(Number(e.target.value)),disabled:ec,style:G,children:[(0,n.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,n.jsx)("option",{value:50,children:"50 pages each"}),(0,n.jsx)("option",{value:25,children:"25 pages each"}),(0,n.jsx)("option",{value:10,children:"10 pages (~100 people) each"})]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"center",fontSize:12.5,color:"#cfd8d8",cursor:ec?"not-allowed":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:I,onChange:e=>z(e.target.checked),disabled:ec}),"Also finish people already mapped, from the page each one stopped at"]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ec?"default":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:W,disabled:ec,style:{marginTop:3},onChange:e=>{R(e.target.checked),window.dispatchEvent(new Event("six-degrees:experimental"))}}),(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{style:{color:"#FFD700"},children:"Experimental:"})," all-day pacing. Up to 8 pages in a sitting, then an hour’s rest; searches only from 9:00 to 18:00; never more than 40 searches in a day or 200 in a week, however high your budget; two days’ rest after any check from LinkedIn; at the budget it waits instead of stopping; and it saves every page. It also reads LinkedIn’s own data beside the page text, to fill gaps and measure how the two compare. It keeps running while the app is open."]})]}),(0,n.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"flex-start",fontSize:12.5,color:"#b8c4c4",cursor:ec?"default":"pointer"},children:[(0,n.jsx)("input",{type:"checkbox",checked:$,disabled:ec,style:{marginTop:3},onChange:e=>P(e.target.checked)}),(0,n.jsxs)("span",{children:[(0,n.jsx)("b",{style:{color:"#FFD700"},children:"Hide the Chrome window while scanning."})," Every scan runs with no window popping up; the status bar still shows what it’s doing, and Stop still works. Signing in always opens the window.",(0,n.jsx)("span",{style:{display:"block",marginTop:4,color:"#e0a080"},children:"The risks: a hidden Chrome is easier for LinkedIn to tell apart from a person, so it may make a warning or restriction more likely. If LinkedIn asks you to check it’s you (a code, a puzzle, signing in again) you won’t see it, and the scan will stop instead of waiting for you. Untick this and scan again to see what LinkedIn wants. It changes nothing about pacing or your daily budget."})]})]}),(0,n.jsxs)("div",{style:{fontSize:12,color:"#FFD700",lineHeight:1.6},children:["Every page is a LinkedIn search, so at ",(0,c.paceOf)(ef?.limits?.pace).label," it rests"," ",(0,c.paceOf)(ef?.limits?.pace).pagePause," seconds before each one and"," ",(0,c.paceOf)(ef?.limits?.pace).chunkCooldown/60==1?"a minute":`${(0,c.paceOf)(ef?.limits?.pace).chunkCooldown/60} minutes`," after every 10, and a long list can take"," ","about ",(0,d.circleScanCost)(v,ef?.limits?.pace).minutes," minutes a person. LinkedIn shows 100 pages of anyone’s connections at most. Free accounts have a monthly search limit: if LinkedIn says it has been reached, the scan saves what it read and stops, and carries on from that page next time. Keep batches small."]}),(0,n.jsxs)("div",{children:[(0,n.jsx)(V,{onClick:()=>el("auto-bridge-retry",{maxBridges:x,tiers:"score"===j?b:[],order:j,maxPages:v,deeper:I}),disabled:!ey||"score"===j&&!b.length,children:"Retry hidden ones"}),(0,n.jsx)("span",{style:{fontSize:12,color:"#8b9a9a",marginLeft:10},children:"People whose list was hidden last time, in case they’ve opened it."})]}),(0,n.jsx)(C,{paused:o?.paused||[],disabled:!ey,onResume:e=>el("resume",{id:e.id}),onResumeAll:()=>el("resume-all",{maxBridges:x})})]})]}),F&&(0,n.jsx)(Z,{tone:"bad",children:F}),o?.log?.length>0&&(0,n.jsxs)("details",{open:ek,style:{marginTop:20},children:[(0,n.jsxs)("summary",{style:{display:"flex",alignItems:"center",gap:10,cursor:"pointer",margin:"8px 0",fontSize:12,color:"#788",textTransform:"uppercase",letterSpacing:.6},children:[ec&&(0,n.jsx)(ee,{}),ec?"What it’s doing (the log)":"The last run’s log"]}),(0,n.jsx)("pre",{ref:B,style:{background:"rgba(0,0,0,0.45)",border:N,borderRadius:8,padding:14,maxHeight:280,overflow:"auto",margin:0,fontSize:12.5,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:o.log.join("\n")})]})]}),(0,n.jsxs)("div",{style:{marginTop:32,paddingTop:20,borderTop:N,fontSize:13.5,color:"#8b9a9a"},children:["Checking for updates has moved to"," ",(0,n.jsx)(s.default,{href:"/settings#updates",style:{color:"#3498DB"},children:"Settings →"})]}),(0,n.jsxs)("p",{style:{color:"#667",fontSize:12.5,lineHeight:1.7,marginTop:32},children:["Automating LinkedIn may go against its User Agreement, and accounts have been restricted for it. This runs locally against your own account, at your own risk. LinkedIn’s own CSV export is the supported route and needs none of this —"," ",(0,n.jsx)(s.default,{href:"/import",style:{color:"#3498DB"},children:"import a CSV instead"}),"."]})]}),(0,n.jsx)("style",{children:`@keyframes spin { to { transform: rotate(360deg) } }
15
- @keyframes slide { 0% { transform: translateX(-100%) } 100% { transform: translateX(300%) } }`})]})}function A({pick:e,pages:t,setPages:i,li:o,running:a,s:r,canSearch:l,busy:c,onStart:h,onUnpick:p}){let{person:g,circle:u}=e,f=String(g.name||"").trim().split(/\s+/)[0]||"them",x=(0,d.circleScanCost)(t,o?.limits?.pace),y=a&&r?.target?.id===g.id,b=o?.leftToday!=null&&o.leftToday<x.searches;return(0,n.jsxs)("div",{style:{margin:"16px 0",padding:"16px 18px",borderRadius:10,fontSize:13.5,lineHeight:1.6,background:"rgba(0,255,136,0.05)",border:"1px solid rgba(0,255,136,0.3)"},children:[(0,n.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#00ff88",letterSpacing:.6,textTransform:"uppercase",marginBottom:4},children:"Scan one circle"}),(0,n.jsxs)("div",{style:{fontSize:16,fontWeight:700},children:[g.name," ",(0,n.jsxs)("span",{style:{fontSize:12,color:H[g.tier]||"#888"},children:[g.tier,"-tier"]})]}),g.unlocked_from_name&&(0,n.jsxs)("div",{style:{fontSize:12.5,color:"#9aa"},children:["Was in ",g.unlocked_from_name,"’s circle"]}),y?(0,n.jsxs)("div",{style:{marginTop:10},children:[(0,n.jsxs)("b",{children:["Scanning ",f,"’s circle."]})," It saves every 10 pages, and"," ",(0,n.jsx)(s.default,{href:`/?chain=${encodeURIComponent(g.id)}`,style:{color:"#00ff88"},children:"Bridge Chains shows it filling in →"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{style:{color:"#b8c4c4",marginTop:10},children:["It costs ",(0,n.jsxs)("b",{children:[x.profileViews," profile view"]})," to find their list, then ",(0,n.jsx)("b",{children:"one LinkedIn search for every page"})," of it: up to ",x.searches," ",1===x.searches?"page":"pages",", about ",x.minutes," minutes.",o?.leftToday!=null&&(0,n.jsxs)(n.Fragment,{children:[" ",(0,n.jsx)("b",{children:o.leftToday})," of your ",o.limits?.daily," searches a day are left",b?"; the scan stops when they run out, and can carry on from that page later":"","."]})]}),"scanned"===u&&(0,n.jsx)("div",{style:{color:"#FFD700",fontSize:12.5,marginTop:6},children:"Their circle is already scanned. This reads their whole list again from page 1; to carry on from where a read stopped, use Resume on their card or in the Paused list below."}),"hidden"===u&&(0,n.jsx)("div",{style:{color:"#FFD700",fontSize:12.5,marginTop:6},children:"Their list was hidden last time it was tried. Trying again costs a profile view."}),(0,n.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap",marginTop:12},children:[(0,n.jsxs)(V,{onClick:h,disabled:!l||c,primary:!0,children:["Scan ",f,"’s circle"]}),(0,n.jsxs)("select",{value:t,onChange:e=>i(Number(e.target.value)),disabled:a,style:G,"aria-label":"How many pages of their list to read",children:[(0,n.jsx)("option",{value:100,children:"every page, to the end of their list"}),(0,n.jsx)("option",{value:50,children:"up to 50 pages"}),(0,n.jsx)("option",{value:25,children:"up to 25 pages"}),(0,n.jsx)("option",{value:10,children:"up to 10 pages (~100 people)"})]}),(0,n.jsx)(V,{onClick:p,children:"Not now"})]}),!l&&(0,n.jsx)("div",{style:{fontSize:12.5,color:"#8b9a9a",marginTop:8},children:a?"Something else is running. One scan at a time: this one can start when it finishes.":o?.cooldown?"Scanning is paused for now (see below).":"The scanner isn’t ready yet: finish the steps below first."})]})]})}let H=y.TIER_COLORS;function Y(e,n){let[i,o]=(0,t.useState)(n);return(0,t.useEffect)(()=>{try{let n=localStorage.getItem(e);null!==n&&o(JSON.parse(n))}catch{}},[e]),[i,n=>{o(n);try{localStorage.setItem(e,JSON.stringify(n))}catch{}}]}let _={background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4},G={padding:"9px 10px",borderRadius:7,fontSize:13.5,fontWeight:600,background:"rgba(255,255,255,0.08)",color:"#fff",border:N},U=`
16
- @keyframes stepPulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(0,255,136,.45); } 50% { box-shadow: 0 0 0 7px rgba(0,255,136,0); } }
17
- .journey-now { animation: stepPulse 2.2s ease-in-out infinite; }
18
- .launch-go { transition: transform .15s ease, box-shadow .2s ease, filter .2s ease; }
19
- .launch-go:not(:disabled):hover { transform: translateY(-1px); box-shadow: 0 8px 30px rgba(0,255,136,.35); filter: brightness(1.08); }
20
- .launch-go:not(:disabled):active { transform: translateY(0) scale(.98); }
21
- @media (prefers-reduced-motion: reduce) { .journey-now { animation: none; } }
22
- `;function K({n:e,label:t,state:i,last:o=!1,children:s}){let a="done"===i,r="now"===i;return(0,n.jsxs)("div",{role:"listitem","aria-label":`Step ${e}, ${t}: ${a?"done":r?"the one to do now":"still to come"}`,style:{display:"grid",gridTemplateColumns:"40px 1fr",columnGap:14},children:[(0,n.jsxs)("div",{style:{position:"relative",display:"flex",justifyContent:"center"},children:[(0,n.jsx)("span",{className:r?"journey-now":void 0,"aria-hidden":"true",style:{position:"relative",zIndex:1,width:38,height:38,borderRadius:"50%",display:"grid",placeItems:"center",fontSize:15,fontWeight:800,background:a?"rgba(0,255,136,0.16)":r?"linear-gradient(135deg, #00ff88, #1abc9c)":"#12142a",color:a?"#00ff88":r?"#04140c":"#778",border:`2px solid ${a?"rgba(0,255,136,0.55)":r?"transparent":"rgba(255,255,255,0.14)"}`},children:a?"✓":e}),!o&&(0,n.jsx)("span",{"aria-hidden":"true",style:{position:"absolute",top:40,bottom:0,left:"50%",width:2,marginLeft:-1,borderRadius:1,background:a?"linear-gradient(rgba(0,255,136,0.75), rgba(0,255,136,0.3))":"rgba(255,255,255,0.1)"}})]}),(0,n.jsxs)("div",{style:{minWidth:0,paddingBottom:16*!o,opacity:"next"===i?.75:1},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,minHeight:38,marginBottom:6},children:[(0,n.jsxs)("span",{style:{fontSize:12,fontWeight:800,letterSpacing:1.2,textTransform:"uppercase",color:a?"#00ff88":r?"#fff":"#889"},children:["Step ",e," · ",t]}),(0,n.jsx)("span",{style:{fontSize:10.5,fontWeight:800,padding:"2px 8px",borderRadius:10,color:a?"#00ff88":r?"#04140c":"#889",background:a?"rgba(0,255,136,0.12)":r?"#00ff88":"rgba(255,255,255,0.06)"},children:a?"Done":r?"Now":"Next"})]}),s]})]})}function q({title:e,time:t,body:i,launch:o,more:s,done:a=!1,children:r}){return(0,n.jsxs)("div",{style:{padding:a?"14px 18px":"18px 20px",borderRadius:14,background:a?"rgba(0,255,136,0.03)":"rgba(255,255,255,0.035)",border:`1px solid ${a?"rgba(0,255,136,0.18)":"rgba(255,255,255,0.1)"}`},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"},children:[(0,n.jsx)("span",{style:{fontSize:a?16:19,fontWeight:800},children:e}),t&&!a&&(0,n.jsxs)("span",{style:{fontSize:12,color:"#8fd9b6",marginLeft:"auto"},children:["⏱ ",t]})]}),(0,n.jsx)("div",{style:{fontSize:a?13:14,color:"#9fb0bb",lineHeight:1.6,margin:a?"6px 0 10px":"8px 0 14px",maxWidth:600},children:i}),r,(o||s)&&(0,n.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",flexWrap:"wrap"},children:[o,s]})]})}function X({children:e,onClick:t,disabled:i,quiet:o=!1}){return(0,n.jsxs)("button",{type:"button",className:"launch-go",onClick:t,disabled:i,style:{display:"inline-flex",alignItems:"center",gap:10,padding:o?"10px 18px":"13px 26px",borderRadius:12,fontSize:o?14:16,fontWeight:800,cursor:i?"not-allowed":"pointer",color:i?"#667":o?"#cfe8dc":"#04140c",border:o?"1px solid rgba(0,255,136,0.35)":"none",background:i?"rgba(255,255,255,0.06)":o?"rgba(0,255,136,0.08)":"linear-gradient(135deg, #00ff88, #1abc9c)",boxShadow:i||o?"none":"0 4px 22px rgba(0,255,136,0.25)"},children:[(0,n.jsx)("span",{"aria-hidden":"true",style:{fontSize:o?11:13},children:"▶"}),e]})}function J(){return(0,n.jsxs)("details",{style:{fontSize:12.5,color:"#8b9a9a",lineHeight:1.6},children:[(0,n.jsx)("summary",{style:{cursor:"pointer",color:"#aab7c4",fontWeight:600},children:"Why so slow?"}),(0,n.jsxs)("div",{style:{marginTop:6},children:["This is the part LinkedIn notices. While this app was being built, a real account was restricted for a while after roughly ",(0,n.jsx)("b",{children:"19 people in one sitting"}),". So: a small batch, a day’s rest, another batch, and stop the moment LinkedIn mentions unusual activity. Most people hide their connections; those are noted and never tried again. A list is read to the end, saving every 10 pages, and a stopped read carries on from the same page."]})]})}function V({children:e,onClick:t,disabled:i,primary:o,tone:s}){return(0,n.jsx)("button",{onClick:t,disabled:i,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:i?"#667":"#fff",background:i?"rgba(255,255,255,0.05)":"bad"===s?"rgba(255,80,80,0.15)":o?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",border:N,cursor:i?"not-allowed":"pointer"},children:e})}function Z({children:e,tone:t}){return(0,n.jsx)("div",{style:{margin:"16px 0",padding:"14px 16px",borderRadius:8,fontSize:13.5,lineHeight:1.6,background:"bad"===t?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"bad"===t?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:e})}function Q({p:e,action:t}){let i;if("saving"===e.kind)return(0,n.jsxs)("div",{style:{margin:"8px 0 6px"},children:[(0,n.jsx)("div",{role:"progressbar","aria-label":"Saving",style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,n.jsx)("div",{style:{width:"35%",height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",animation:"slide 1.2s ease-in-out infinite"}})}),(0,n.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:"Saving to your network and fetching photos — this can take a minute or two."})]});let o=Math.max(0,Math.min(100,Math.round(e.done/e.total*100)));return i="download"===e.kind?`Downloading Python: ${e.done.toFixed(1)} of ${e.total.toFixed(1)} MB \xb7 ${o}%`:"batch"===e.kind?`Person ${e.current} of ${e.total}`:"refresh"===t?`Looked at ${e.done.toLocaleString()} so far — stops once it reaches people already saved`:`${e.done.toLocaleString()} of ${e.total.toLocaleString()} connections \xb7 ${o}%`,(0,n.jsxs)("div",{style:{margin:"8px 0 6px"},children:["refresh"!==t&&(0,n.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":e.total,"aria-valuenow":e.done,"aria-label":i,style:{height:8,borderRadius:4,overflow:"hidden",background:"rgba(255,255,255,0.08)",marginBottom:6},children:(0,n.jsx)("div",{style:{width:`${o}%`,height:"100%",borderRadius:4,background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.6s ease"}})}),(0,n.jsx)("div",{style:{fontSize:12.5,color:"#cfe6f7"},children:i})]})}function ee(){return(0,n.jsx)("span",{style:{width:11,height:11,borderRadius:"50%",display:"inline-block",border:"2px solid rgba(255,255,255,0.2)",borderTopColor:"#3498DB",animation:"spin 0.8s linear infinite"}})}e.s(["default",0,function(){return(0,n.jsx)(o.default,{children:(0,n.jsx)(t.Suspense,{children:(0,n.jsx)(O,{})})})}],68863)}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68074,e=>{"use strict";var t=e.i(43476),n=e.i(71645),i=e.i(7837),o=e.i(65084),r=e.i(22016),s=e.i(54322);let l={background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.08)",borderRadius:16,padding:24},a={minHeight:"100vh",background:"var(--sd-page)",color:"#fff",padding:"56px 24px",fontFamily:"var(--sd-font)",display:"flex",justifyContent:"center"},d={background:"rgba(255,255,255,0.07)",padding:"2px 6px",borderRadius:5,fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},c={display:"block",textAlign:"center",padding:"15px 20px",borderRadius:12,background:"linear-gradient(135deg,#FFD700,#9B59B6)",color:"#0a0a1a",fontWeight:800,fontSize:15,textDecoration:"none"};e.s(["default",0,function(){let[e,h]=(0,n.useState)(!1),[g,p]=(0,n.useState)(""),[f,u]=(0,n.useState)(null),[x,y]=(0,n.useState)(!1),m=(0,n.useRef)(null);function b(e){if(!e)return;let t=new FileReader;t.onload=e=>(function(e){y(!0),p("");try{let{connections:t,skipped:n}=(0,i.parseConnectionsCsv)(e);if(!(0,i.saveCsvNetwork)(t)){p("That network is too large to hold in this window. LinkedIn allows up to 30,000 connections and this app holds that many, so please report it with your connection count: github.com/blakeb056/six-degrees/issues"),y(!1);return}(0,o.setUser)(i.CSV_USER.id,i.CSV_USER.name);let r={};t.forEach(e=>{r[e.tier]=(r[e.tier]||0)+1}),u({count:t.length,skipped:n,tiers:r})}catch(e){p(e instanceof i.ConnectionsCsvError?e.message:"Could not read that file. Make sure it is Connections.csv from your LinkedIn export.")}y(!1)})(String(e.target.result||"")),t.onerror=()=>p("Could not read that file."),t.readAsText(e)}return f?(0,t.jsx)("div",{style:a,children:(0,t.jsxs)("div",{style:{maxWidth:560,width:"100%"},children:[(0,t.jsx)("div",{style:{fontSize:13,color:"#2ecc71",fontWeight:700,letterSpacing:2,marginBottom:10},children:"IMPORTED"}),(0,t.jsxs)("h1",{style:{fontSize:38,fontWeight:800,margin:"0 0 8px"},children:[f.count.toLocaleString()," connections mapped"]}),(0,t.jsxs)("p",{style:{color:"rgba(255,255,255,0.45)",margin:"0 0 28px",lineHeight:1.6},children:["Scored on seniority and company, sorted into tiers.",f.skipped>0&&` ${f.skipped} row${1===f.skipped?"":"s"} skipped (blank or duplicate).`]}),(0,t.jsxs)("div",{style:{...l,marginBottom:20},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#666",letterSpacing:2,marginBottom:14},children:"YOUR TIERS"}),["S","A","B","C","D"].map(e=>{let n=f.tiers[e]||0,i=f.count?n/f.count*100:0;return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:8},children:[(0,t.jsx)("span",{style:{width:16,color:s.TIER_COLORS[e],fontWeight:800},children:e}),(0,t.jsx)("div",{style:{flex:1,height:8,borderRadius:4,background:"rgba(255,255,255,0.05)",overflow:"hidden"},children:(0,t.jsx)("div",{style:{width:`${i}%`,height:"100%",background:s.TIER_COLORS[e],borderRadius:4}})}),(0,t.jsx)("span",{style:{width:46,textAlign:"right",color:"rgba(255,255,255,0.6)",fontSize:13},children:n})]},e)})]}),(0,t.jsx)(r.default,{href:"/",style:c,children:"See your galaxy →"}),(0,t.jsx)("p",{style:{color:"#555",fontSize:12,marginTop:18,lineHeight:1.6},children:"Nothing was uploaded or saved: this lives only in this window (or browser tab), and closing it clears it."})]})}):(0,t.jsx)("div",{style:a,children:(0,t.jsxs)("div",{style:{maxWidth:620,width:"100%"},children:[(0,t.jsxs)("h1",{style:{fontSize:40,fontWeight:800,margin:"0 0 10px",letterSpacing:-1},children:["Map ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg,#FFD700,#9B59B6,#3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"your"})," network"]}),(0,t.jsxs)("p",{style:{color:"rgba(255,255,255,0.45)",margin:"0 0 30px",lineHeight:1.6,fontSize:16},children:["Drop LinkedIn’s official ",(0,t.jsx)("code",{style:d,children:"Connections.csv"})," below. It is read in your browser, scored, and drawn as a galaxy — no account, no upload, nothing stored."]}),(0,t.jsxs)("div",{onDragOver:e=>{e.preventDefault(),h(!0)},onDragLeave:()=>h(!1),onDrop:e=>{e.preventDefault(),h(!1),b(e.dataTransfer.files?.[0])},onClick:()=>m.current?.click(),style:{...l,padding:"48px 24px",textAlign:"center",cursor:"pointer",marginBottom:16,borderStyle:"dashed",borderColor:e?"#FFD700":"rgba(255,255,255,0.12)",background:e?"rgba(255,215,0,0.05)":l.background,transition:"all 0.15s ease"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:10},children:"📄"}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:17,marginBottom:6},children:x?"Reading…":"Drop Connections.csv here"}),(0,t.jsx)("div",{style:{color:"#666",fontSize:13},children:"or click to choose the file"}),(0,t.jsx)("input",{ref:m,type:"file",accept:".csv,text/csv",style:{display:"none"},onChange:e=>b(e.target.files?.[0])})]}),g&&(0,t.jsx)("div",{style:{background:"rgba(255,59,59,0.08)",border:"1px solid rgba(255,59,59,0.25)",borderRadius:12,padding:16,color:"#ff8080",fontSize:14,lineHeight:1.6,marginBottom:16},children:g}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#666",letterSpacing:2,marginBottom:14},children:"HOW TO GET THE FILE"}),(0,t.jsxs)("ol",{style:{margin:0,paddingLeft:20,color:"rgba(255,255,255,0.6)",fontSize:14,lineHeight:2},children:[(0,t.jsxs)("li",{children:["LinkedIn → ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Settings & Privacy → Data privacy → Get a copy of your data"})]}),(0,t.jsxs)("li",{children:["Pick ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Connections"})," and request the archive"]}),(0,t.jsx)("li",{children:"LinkedIn emails a download link, usually within ~10 minutes"}),(0,t.jsxs)("li",{children:["Unzip it and drop ",(0,t.jsx)("code",{style:d,children:"Connections.csv"})," above"]})]})]}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#2ecc71",letterSpacing:2,marginBottom:10},children:"PRIVATE BY DESIGN"}),(0,t.jsxs)("p",{style:{margin:0,color:"rgba(255,255,255,0.55)",fontSize:14,lineHeight:1.7},children:["Your file never leaves this browser. It is parsed locally, held for this tab only, and never written to any database. The ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Email Address column is ignored entirely"}),"."]})]}),(0,t.jsxs)("div",{style:{...l,borderColor:"rgba(255,215,0,0.15)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#FFD700",letterSpacing:2,marginBottom:10},children:"HONEST CAVEAT"}),(0,t.jsxs)("p",{style:{margin:"0 0 12px",color:"rgba(255,255,255,0.55)",fontSize:14,lineHeight:1.7},children:["LinkedIn’s export contains no profile photos, so everyone renders as initials on a tier-colored circle. It also only covers people you are ",(0,t.jsx)("em",{children:"already"})," connected to — so ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Degrees"})," and the ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Outlink queue"})," stay empty, because those map the people you haven’t met yet."]}),(0,t.jsxs)("p",{style:{margin:0,color:"#666",fontSize:13,lineHeight:1.7},children:["Want those? Run the local scanner — it captures 2nd-degree circles and real photos."," ",(0,t.jsx)(r.default,{href:"/setup",style:{color:"#3498DB",textDecoration:"none"},children:"See setup →"})]})]}),(0,t.jsx)("div",{style:{textAlign:"center",marginTop:26},children:(0,t.jsx)(r.default,{href:"/",style:{color:"#555",fontSize:13,textDecoration:"none"},children:"← Back"})})]})})}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94657,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(7837);let o=e=>`${e.name} ${e.was} → ${e.estimated?"estimated":e.now}`,i=e=>({padding:"6px 12px",borderRadius:7,cursor:"pointer",fontSize:12,fontWeight:700,border:e?"none":"1px solid rgba(255,255,255,0.15)",background:e?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:e?"#000":"#cfd8d8"});function a({onAnswered:e}){var s;let l,c,[d,u]=(0,n.useState)(null),[p,g]=(0,n.useState)(!1),[h,y]=(0,n.useState)(()=>new Set),[f,m]=(0,n.useState)(!1),[b,x]=(0,n.useState)(null);if((0,n.useEffect)(()=>{if((0,r.csvNetworkSource)())return;let e=!1;return fetch("/api/company-scores/legacy").then(e=>e.json()).then(t=>{!e&&t.offer?.companies?.length&&(u(t.offer),y(new Set(t.offer.companies.map(e=>e.name))))}).catch(()=>{}),()=>{e=!0}},[]),!d)return null;let w=async t=>{m(!0),x(null);try{let n=await fetch("/api/company-scores/legacy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keep:t})}),r=await n.json();if(!n.ok&&!r.kept)throw Error(r.error||"Could not save your answer.");u(null),e?.({kept:r.kept||[],scored:r.scored||0,error:n.ok?null:r.error})}catch(e){x(e.message)}finally{m(!1)}};return(0,t.jsxs)("section",{"aria-label":"Built-in scores changed",style:{marginBottom:14,padding:14,borderRadius:10,border:"1px solid rgba(255,215,0,0.35)",background:"rgba(255,215,0,0.06)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"Built-in scores changed in this version:"})," ",(l=(s=d.companies).slice(0,3).map(o).join(", "),(c=s.length-3)>0?`${l} and ${c} more`:l),"."," ","Keep any of the old ones as your own?",(0,t.jsx)("div",{style:{marginTop:4,color:"#8b9a9a"},children:"The built-in list now holds only companies most professionals would recognise, scored the same for everyone; anything else is estimated from your network. A score you keep is yours, like one you set below, and Auto hands it back."}),p&&(0,t.jsx)("ul",{style:{listStyle:"none",padding:0,margin:"10px 0 0",display:"grid",gap:4},children:d.companies.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"baseline",cursor:"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:h.has(e.name),disabled:f,onChange:()=>{let t;return t=e.name,y(e=>{let n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n})}}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{style:{color:"#fff"},children:e.name})," ",e.was," → ",e.estimated?`estimated (${e.now})`:e.now,(0,t.jsxs)("span",{style:{color:"#778"},children:[` \xb7 ${e.people} ${1===e.people?"person":"people"} there now`,e.names.length>1&&` \xb7 for ${e.names.join(", ")}`]})]})]})},e.name))}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,marginTop:10,flexWrap:"wrap"},children:[p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{disabled:f||!h.size,onClick:()=>w([...h]),style:{...i(!0),opacity:f||!h.size?.5:1},children:["Keep ",h.size," ",1===h.size?"score":"scores"]}),(0,t.jsx)("button",{disabled:f,onClick:()=>g(!1),style:i(!1),children:"Back"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{disabled:f,onClick:()=>w(d.companies.map(e=>e.name)),style:i(!0),children:"Keep all"}),(0,t.jsx)("button",{disabled:f,onClick:()=>g(!0),style:i(!1),children:"Choose…"})]}),(0,t.jsx)("button",{disabled:f,onClick:()=>w([]),style:i(!1),children:"No thanks"})]}),b&&(0,t.jsx)("div",{role:"alert",style:{marginTop:8,color:"#e74c3c"},children:b})]})}let s="1px solid rgba(255,255,255,0.1)",l={yours:{label:"your score",color:"#00ff88"},known:{label:"known list",color:"#3498DB"},data:{label:"public data",color:"#1abc9c"},network:{label:"estimated: many of your people",color:"#FF6B35"},default:{label:"unknown company",color:"#778"}};async function c(){let e=await fetch("/api/company-scores"),t=await e.json();if(!e.ok)throw Error(t.error||"Could not load company scores");return t.companies}function d(){let[e,t]=(0,n.useState)(null),[r,o]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=!1;return c().then(n=>{e||t(n)}).catch(t=>{e||o(t.message)}),()=>{e=!0}},[]),{companies:e,error:r,setScore:(0,n.useCallback)(async(e,n)=>{let r=await fetch("/api/company-scores",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,score:n})}),o=await r.json();if(!r.ok)throw Error(o.error||"Could not save");return t(await c()),o},[]),reload:(0,n.useCallback)(async()=>t(await c()),[])}}function u({company:e,onSet:r,compact:o}){let[i,a]=(0,n.useState)(!1),l=async t=>{a(!0);try{await r(e.name,"auto"===t?null:Number(t))}finally{a(!1)}};return(0,t.jsxs)("select",{disabled:i,value:"yours"===e.source?String(e.score):"auto",onChange:e=>l(e.target.value),title:"Set this company's score. Auto uses the known list or an estimate.",style:{padding:o?"2px 4px":"4px 6px",borderRadius:6,border:s,background:"#11131c",color:"#dfe6e9",fontSize:12},children:[(0,t.jsxs)("option",{value:"auto",children:["Auto (","yours"===e.source?e.suggested??"est.":e.score,")"]}),[10,9,8,7,6,5,4,3,2,1].map(e=>(0,t.jsx)("option",{value:e,children:e},e))]})}e.s(["ScorePicker",0,u,"default",0,function({onRescored:e,version:r=0}){let{companies:o,error:i,setScore:c,reload:p}=d();(0,n.useEffect)(()=>{r&&p().catch(()=>{})},[r,p]);let[g,h]=(0,n.useState)(""),[y,f]=(0,n.useState)("all"),[m,b]=(0,n.useState)(150),[x,w]=(0,n.useState)(null),k=e=>{w(e),setTimeout(()=>w(null),3500)},v=async(t,n)=>{let r=await c(t,n);k(`${t}: ${null==n?"back to auto":`set to ${n}`} \xb7 rescored ${r.scored} people`),e?.()},S=async({kept:t,scored:n,error:r})=>{if(!t.length)return k("Keeping the new built-in scores.");k(r||`Kept ${t.length} old ${1===t.length?"score":"scores"} as your own \xb7 rescored ${n} people`),await p().catch(()=>{}),e?.()},j=(0,n.useMemo)(()=>{if(!o)return[];let e=g.trim().toLowerCase();return o.filter(t=>(!e||t.name.toLowerCase().includes(e))&&("all"===y||t.source===y))},[o,g,y]);if(i)return(0,t.jsx)("div",{style:{padding:24,color:"#e74c3c"},children:i});if(!o)return(0,t.jsx)("div",{style:{padding:24,color:"#778"},children:"Loading companies…"});let C=e=>o.filter(t=>t.source===e).length;return(0,t.jsxs)("div",{style:{flex:1,overflow:"auto",padding:16},children:[(0,t.jsxs)("div",{style:{maxWidth:980,margin:"0 auto"},children:[(0,t.jsx)(a,{onAnswered:S}),(0,t.jsxs)("div",{style:{padding:14,borderRadius:10,border:s,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"How a power score works."})," power = ",(0,t.jsx)("b",{children:"title"})," × ",(0,t.jsx)("b",{children:"company weight"})," + bonus. The title (student 1 … founder or C-suite 10) comes from someone’s roles, with former roles at 70%; an audience of their own counts like a title (1M+ followers like a director). The company weight runs from 0.725 for a company we don’t know (or none found), the middle of the scale, to 1.0 (a company scored 10), so seniority counts for more at a bigger company. The bonus is at most +1.5, for investor, YC, an audience in the millions or the top award of any field, and counts half at an unknown company. A 1st-degree person whose circle is unusually strong gets up to +2 more: up to +1 for a high share of it at A or S, or +1 for every 25 people there. Tiers are graded on your network’s curve unless you choose the fixed scale (",(0,t.jsx)("a",{href:"#tiers",style:{color:"#3498DB"},children:"Tiers"}),", above): your top 3% are S, the next 12% A, the next 25% B (it only lifts, and never lifts anyone under 4 into S or A). On the fixed scale, S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.",(0,t.jsxs)("div",{style:{marginTop:6,color:"#8b9a9a"},children:["So a VP at a 10 scores 9.0, a founder at an unknown company 7.3, a director at an unknown company 5.4, and an intern at a 10 scores 2.0. Set a company’s score below and everyone there is rescored. Companies in the sectors you pick (",(0,t.jsx)("a",{href:"#sector",style:{color:"#3498DB"},children:"Your sector"}),", above) get +1 or +2; a score you set is never changed."]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",margin:"14px 0 10px"},children:[(0,t.jsx)("input",{value:g,onChange:e=>h(e.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:s,background:"rgba(255,255,255,0.05)",color:"#fff",fontSize:13,minWidth:180}}),[["all",`All ${o.length}`],["known",`Known list ${C("known")}`],["data",`Public data ${C("data")}`],["yours",`Yours ${C("yours")}`],["network",`Estimated ${C("network")}`],["default",`Unknown ${C("default")}`]].map(([e,n])=>(0,t.jsx)("button",{onClick:()=>f(e),style:{padding:"5px 10px",borderRadius:7,border:s,cursor:"pointer",fontSize:11.5,fontWeight:600,background:y===e?"rgba(52,152,219,0.25)":"transparent",color:y===e?"#cfe6f7":"#8b9a9a"},children:n},e))]}),(0,t.jsxs)("div",{style:{borderRadius:10,border:s,overflow:"hidden"},children:[(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"8px 12px",fontSize:10.5,letterSpacing:.6,color:"#8b9a9a",background:"rgba(255,255,255,0.04)"},children:[(0,t.jsx)("span",{children:"COMPANY"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"PEOPLE"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"YOU KNOW"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"DIRECTOR+"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"SCORE"}),(0,t.jsx)("span",{children:"SOURCE"}),(0,t.jsx)("span",{children:"SET"})]}),j.slice(0,m).map(e=>(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"7px 12px",alignItems:"center",borderTop:"1px solid rgba(255,255,255,0.05)",fontSize:12.5},children:[(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,t.jsx)("span",{title:`${e.industry.label} (inferred)`,style:{width:8,height:8,borderRadius:"50%",background:e.industry.color,flexShrink:0}}),(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,t.jsx)("span",{style:{textAlign:"right"},children:e.people}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.d1?"#00ff88":"#556"},children:e.d1}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.senior?"#FFD700":"#556"},children:e.senior}),(0,t.jsx)("b",{style:{textAlign:"right",fontSize:15},children:e.score}),(0,t.jsxs)("span",{style:{fontSize:11,color:l[e.source]?.color},children:[l[e.source]?.label,e.sectorBonus>0&&(0,t.jsxs)("span",{style:{color:"#00ff88"},children:[" + ",e.sectorBonus," your sector"]})]}),(0,t.jsx)(u,{company:e,onSet:v,compact:!0})]},e.name))]}),j.length>m&&(0,t.jsxs)("button",{onClick:()=>b(e=>e+300),style:{marginTop:10,padding:"7px 14px",borderRadius:8,border:s,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",cursor:"pointer",fontSize:12},children:["Show more (",j.length-m," left)"]})]}),x&&(0,t.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000",fontWeight:800,fontSize:13,zIndex:50},children:x})]})},"useCompanyScores",0,d],94657)},2776,e=>{"use strict";var t=e.i(43476),n=e.i(15812);e.s(["default",0,function({children:e}){let{userId:r,ready:o}=(0,n.useUser)();return o&&r?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:o?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},8819,e=>{"use strict";var t=e.i(43476);let n="1px solid rgba(255,255,255,0.1)";function r({children:e,style:n}){return(0,t.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...n},children:e})}e.s(["Body",0,r,"Btn",0,function({children:e,onClick:r,disabled:o,primary:i,tone:a,type:s="button"}){return(0,t.jsx)("button",{type:s,onClick:r,disabled:o,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:o?"#667":"#fff",border:n,background:o?"rgba(255,255,255,0.05)":"bad"===a?"rgba(255,80,80,0.15)":i?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:o?"not-allowed":"pointer"},children:e})},"FONT",0,"var(--sd-font)","LINE",0,n,"Mono",0,function({children:e}){return(0,t.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:e})},"Section",0,function({id:e,title:o,intro:i,children:a}){return(0,t.jsxs)("section",{id:e,style:{padding:"24px 0",borderBottom:n,scrollMarginTop:16},children:[(0,t.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:o}),i&&(0,t.jsx)(r,{style:{marginTop:0,marginBottom:12},children:i}),a]})},"Status",0,function({children:e,tone:n}){return(0,t.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===n?"#00ff88":"bad"===n?"#ff7676":"#e8e8ee",background:"ok"===n?"rgba(0,255,136,0.08)":"bad"===n?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===n?"rgba(0,255,136,0.3)":"bad"===n?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===n&&"✓ ",e]})}])},89154,e=>{"use strict";var t=e.i(90179);function n(e){let n=(0,t.readTitle)(e);return{key:n.key,label:n.label,level:n.level}}function r(e){return(0,t.currentCompany)(e)}let o=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],i={key:"unknown",label:"Unclear",color:"#555c66"},a=Object.fromEntries([...o,i].map(e=>[e.key,e])),s=e=>a[e]||i;function l(e,t){for(let n of[e,t]){if(!n)continue;let e=o.find(e=>e.words.test(n));if(e)return e}return i}let c=(e,t)=>l(e,t).key,d=e=>n(e).level>=4;e.s(["INDUSTRIES",0,o,"UNKNOWN_INDUSTRY",0,i,"buildCompanyIndex",0,function(e=[]){let n=new Map,r=e=>(n.has(e)||n.set(e,(0,t.rolesWithCompanies)(e)),n.get(e)),{industries:o}=(0,t.networkCompanies)(e,{industryOf:c,rolesOf:r}),i=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,n=i.get(e);(!n||(t.degree||9)<(n.degree||9))&&i.set(e,t)}let a=new Map;for(let e of i.values()){let t=r(e).find(e=>!e.former)?.company;if(!t)continue;let n=a.get(t);n||(n={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},a.set(t,n)),n.people.push(e),1===e.degree?n.d1++:2===e.degree?n.d2++:n.d3++,"S"===e.tier&&n.S++,"A"===e.tier&&n.A++,d(e.headline)&&n.senior++}for(let e of a.values())e.industry=s(o.get(e.name));return a},"companyLinks",0,function(e=[],t=[]){let n=new Map;for(let t of e){let e=r(t);e&&n.set(t.id,e)}let o=new Map;for(let e of t){let t=n.get(e.source_connection_id),i=r(e);if(!t||!i||t===i)continue;let[a,s]=t<i?[t,i]:[i,t],l=`${a}\u0000${s}`,c=o.get(l);c||(c={a:a,b:s,weight:0,via:new Set},o.set(l,c)),c.weight++,c.via.add(e.source_connection_id)}return[...o.values()]},"companyOf",0,r,"getSeniority",0,n,"industryByKey",0,s,"industryOf",0,l,"isSenior",0,d,"waysInto",0,function(e,t=[],n=[]){let o=t.filter(t=>r(t)===e),i=new Map;for(let t of n)r(t)===e&&i.set(t.source_connection_id,(i.get(t.source_connection_id)||0)+1);let a=new Map(t.map(e=>[e.id,e]));return{direct:o,bridges:[...i.entries()].map(([e,t])=>({bridge:a.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])},69083,e=>{"use strict";var t=e.i(89154);let n=new Map(t.INDUSTRIES.map(e=>[e.key,e.color])),r=new Map([...t.INDUSTRIES.map(e=>[e.key,Object.freeze({key:e.key,label:e.label,color:e.color,group:e.key,kind:"industry"})]),...Object.entries({software:["Software & SaaS","tech","function"],"ai-data":["AI & Data","tech","function"],cybersecurity:["Cybersecurity","tech","function"],telecom:["Telecom","tech","industry"],fintech:["Fintech & Payments","finance","industry"],banking:["Banking & Lending","finance","industry"],"vc-pe":["Venture Capital & Private Equity","finance","industry"],wealth:["Wealth & Asset Management","finance","industry"],insurance:["Insurance","finance","industry"],accounting:["Accounting & Tax","finance","function"],crypto:["Crypto & Web3","finance","industry"],hospitals:["Hospitals & Clinics","health","industry"],dental:["Dental","health","industry"],"pharma-biotech":["Pharma & Biotech","health","industry"],"medical-devices":["Medical Devices","health","industry"],"mental-health":["Mental Health","health","industry"],"fitness-wellness":["Fitness & Wellness","health","industry"],veterinary:["Veterinary & Animal Care","health","industry"],k12:["K-12 Education","education","industry"],"higher-ed":["Higher Education","education","industry"],"marketing-advertising":["Marketing & Advertising","media","function"],"pr-comms":["PR & Communications","media","function"],"media-publishing":["Media & Publishing","media","industry"],"creator-economy":["Creator Economy","media","industry"],"film-tv-music":["Film, TV & Music","entertainment","industry"],"gaming-esports":["Gaming & Esports","entertainment","industry"],sports:["Sports","entertainment","industry"],"ecommerce-retail":["E-commerce & Retail","consumer","industry"],"consumer-goods":["Consumer Goods","consumer","industry"],restaurants:["Restaurants & Food Service","consumer","industry"],"hospitality-travel":["Hospitality & Travel","consumer","industry"],"beauty-personal-care":["Beauty & Personal Care","consumer","industry"],logistics:["Logistics & Supply Chain","industry","industry"],manufacturing:["Manufacturing","industry","industry"],energy:["Energy & Utilities","industry","industry"],automotive:["Automotive","industry","industry"],agriculture:["Agriculture & Farming","industry","industry"],"aerospace-defense":["Aerospace & Defense","defense","industry"],military:["Military","defense","industry"],government:["Government & Public Sector","defense","industry"],legal:["Legal","consulting","function"],"management-consulting":["Management Consulting","consulting","function"],"hr-recruiting":["HR & Recruiting","consulting","function"],"security-services":["Security Services","consulting","function"],"real-estate":["Real Estate","realestate","industry"],"construction-trades":["Construction & Trades","realestate","industry"],charities:["Nonprofits & Charities","nonprofit","industry"],"social-work":["Social Work & Human Services","nonprofit","industry"],faith:["Faith & Ministry","nonprofit","industry"]}).map(([e,[r,o,i]])=>[e,Object.freeze({key:e,label:r,color:n.get(o)||t.UNKNOWN_INDUSTRY.color,group:o,kind:i})])]);e.s(["sectorByKey",0,function(e){return r.get(e)||{key:e,label:t.UNKNOWN_INDUSTRY.label,color:t.UNKNOWN_INDUSTRY.color,group:null,kind:null}}])},828,e=>{"use strict";var t=e.i(54322);e.s(["TIER_COLORS_CLASSIC",()=>t.TIER_COLORS])},46949,e=>{"use strict";e.i(54322),e.s(["TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,2776,e=>{"use strict";var t=e.i(43476),r=e.i(15812);e.s(["default",0,function({children:e}){let{userId:n,ready:o}=(0,r.useUser)();return o&&n?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:o?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},64666,e=>{"use strict";var t=e.i(7214);function r(e=[],n=[]){let o=new Set((n||[]).map(t.keyFor)),l=new Map;for(let r of e||[]){let e=r?.source_connection_id;if(null==e)continue;let n=(0,t.keyFor)(r);if(o.has(n))continue;let i=l.get(n);i||l.set(n,i=new Set),i.add(e)}let i=new Map;for(let e of l.values())for(let t of e){let r=i.get(t)||{reach:0,only:0,total:0};r.reach+=1/e.size,r.total+=1,1===e.size&&(r.only+=1),i.set(t,r)}return i}e.s(["bridgeOverlap",0,function(e=[],n=[]){let o=r(e,n),l=new Set((n||[]).map(t.keyFor)),i=new Map;for(let r of e||[]){let e=r?.source_connection_id;if(null==e)continue;let n=(0,t.keyFor)(r);if(l.has(n))continue;let o=i.get(n);o||i.set(n,o=new Set),o.add(e)}let a=new Map;for(let e of i.values()){if(e.size<2)continue;let t=[...e];for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++){let n=t[e]<t[r]?`${t[e]}|${t[r]}`:`${t[r]}|${t[e]}`;a.set(n,(a.get(n)||0)+1)}}let s=new Map;for(let[e,t]of a){let[r,n]=e.split("|"),l=o.get(r).total+o.get(n).total-t,i=l?t/l:0;for(let[e,o]of[[r,n],[n,r]]){let r=s.get(e);(!r||i>r.share)&&s.set(e,{with:o,share:i,shared:t})}}return s},"exclusiveReach",0,r,"redundancy",0,function(e=[],t=[]){let n=r(e,t),o=0,l=0;for(let e of n.values())o+=e.reach,l+=e.only;return o?1-l/o:0}])},89154,e=>{"use strict";var t=e.i(90179);function r(e){let r=(0,t.readTitle)(e);return{key:r.key,label:r.label,level:r.level}}function n(e){return(0,t.currentCompany)(e)}let o=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],l={key:"unknown",label:"Unclear",color:"#555c66"},i=Object.fromEntries([...o,l].map(e=>[e.key,e])),a=e=>i[e]||l;function s(e,t){for(let r of[e,t]){if(!r)continue;let e=o.find(e=>e.words.test(r));if(e)return e}return l}let u=(e,t)=>s(e,t).key,c=e=>r(e).level>=4;e.s(["INDUSTRIES",0,o,"UNKNOWN_INDUSTRY",0,l,"buildCompanyIndex",0,function(e=[]){let r=new Map,n=e=>(r.has(e)||r.set(e,(0,t.rolesWithCompanies)(e)),r.get(e)),{industries:o}=(0,t.networkCompanies)(e,{industryOf:u,rolesOf:n}),l=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,r=l.get(e);(!r||(t.degree||9)<(r.degree||9))&&l.set(e,t)}let i=new Map;for(let e of l.values()){let t=n(e).find(e=>!e.former)?.company;if(!t)continue;let r=i.get(t);r||(r={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},i.set(t,r)),r.people.push(e),1===e.degree?r.d1++:2===e.degree?r.d2++:r.d3++,"S"===e.tier&&r.S++,"A"===e.tier&&r.A++,c(e.headline)&&r.senior++}for(let e of i.values())e.industry=a(o.get(e.name));return i},"companyLinks",0,function(e=[],t=[]){let r=new Map;for(let t of e){let e=n(t);e&&r.set(t.id,e)}let o=new Map;for(let e of t){let t=r.get(e.source_connection_id),l=n(e);if(!t||!l||t===l)continue;let[i,a]=t<l?[t,l]:[l,t],s=`${i}\u0000${a}`,u=o.get(s);u||(u={a:i,b:a,weight:0,via:new Set},o.set(s,u)),u.weight++,u.via.add(e.source_connection_id)}return[...o.values()]},"companyOf",0,n,"getSeniority",0,r,"industryByKey",0,a,"industryOf",0,s,"isSenior",0,c,"waysInto",0,function(e,t=[],r=[]){let o=t.filter(t=>n(t)===e),l=new Map;for(let t of r)n(t)===e&&l.set(t.source_connection_id,(l.get(t.source_connection_id)||0)+1);let i=new Map(t.map(e=>[e.id,e]));return{direct:o,bridges:[...l.entries()].map(([e,t])=>({bridge:i.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])},98658,e=>{"use strict";function t(e=[],r=[]){let n={S:0,A:0,B:0,C:0,D:0};for(let t of e)n[t.tier]=(n[t.tier]||0)+1;let o=0;for(let e of r)"S"===e.tier&&(o+=1);let l=new Set(r.map(e=>e.source_connection_id).filter(Boolean)).size,i=e.filter(e=>e.is_catalyst).length;return 100*n.S+40*n.A+15*n.B+5*n.C+ +n.D+200*l+150*i+50*o+e.length}let r=e=>Math.floor(Math.sqrt(Math.max(0,e)/10)),n="six-degrees-level",o={},l=new Set;function i(e="own"){if(!(e in o))try{let t=sessionStorage.getItem(`${n}:${e}`),r=null==t?NaN:Number(t);o[e]=Number.isFinite(r)?r:null}catch{o[e]=null}return o[e]}e.s(["levelNow",0,i,"levelOf",0,r,"networkLevel",0,(e,n)=>r(t(e,n)),"networkPower",0,t,"rememberLevel",0,function(e,t="own"){if(i(t)!==e){o[t]=e;try{sessionStorage.setItem(`${n}:${t}`,String(e))}catch{}l.forEach(e=>e())}},"watchLevel",0,function(e){return l.add(e),()=>l.delete(e)}])},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",r=await fetch(t);if(!r.ok)throw Error(`Failed to load network (${r.status})`);let n=await r.json();return{degree1:n.degree1||[],degree2:n.degree2||[],degree3:n.degree3||[],ties:Number(n.ties)||0}}e.s(["loadNetwork",0,t])},48235,51798,e=>{"use strict";let t={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},r=e=>t[e]||t.fast;function n(e,t){let n=r(e),o=Math.max(0,Math.floor(Number(t)||0));return o*(6+n.pagePause)+Math.floor(o/10)*n.chunkCooldown}e.s(["PACES",0,t,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(e){if(!(e>=60))return"under a minute";let t=Math.round(e/60);if(t<60)return`about ${t} min`;let r=Math.floor(t/60),n=t%60;return`about ${r} h${n?` ${n} min`:""}`},"paceOf",0,r,"paceSeconds",0,n,"searchesPerHour",0,function(e){let t=r(e);return Math.round(3600/(6+t.pagePause+t.chunkCooldown/10))}],51798);var o=e.i(7214);function l(e,t){return e?t.scanned.has(e.id)||e.profile_url&&t.read?.has((0,o.keyFor)(e))?"scanned":e.profile_url&&t.hidden.has((0,o.keyFor)(e))?"hidden":"todo":"todo"}function i(e,t){if(!e||1!==e.degree||null==e.unlocked_from_bridge_id)return null;let r=l(e,t);return"todo"===r?"ready":r}e.s(["circleScanCost",0,function(e=100,t="fast"){let r=Math.max(1,Math.min(100,Math.round(e)||100)),o=t&&"fast"!==t?Math.max(5,Math.round(n(t,r)/60)):r>=100?55:Math.max(5,Math.round(.55*r));return{profileViews:1,searches:r,minutes:o}},"circleState",0,l,"reachIndex",0,function(e=[],t=[],r={}){let n=new Set;for(let e of t||[])e?.source_connection_id!=null&&n.add(e.source_connection_id);let l=new Set;for(let e of r?.skips||[])e?.profileUrl&&l.add((0,o.keyFor)({profile_url:e.profileUrl}));let i=new Set;for(let e of r?.read||[])e&&i.add((0,o.keyFor)({profile_url:e}));let a=new Map;for(let[e,t]of Object.entries(r?.lists||{}))e&&t&&a.set((0,o.keyFor)({profile_url:e}),t);let s=new Map;for(let t of e||[]){let e=t?.unlocked_from_bridge_id;if(null==e||1!==t.degree)continue;let r=s.get(e);r||s.set(e,r=[]),r.push(t)}return{scanned:n,read:i,hidden:l,reachedFrom:s,lists:a}},"reachState",0,i,"readyByCircle",0,function(e){let t=new Map;for(let[r,n]of e.reachedFrom){let o=n.filter(t=>"ready"===i(t,e)).length;o&&t.set(r,o)}return t},"readyToScan",0,function(e,t){return(e||[]).filter(e=>"ready"===i(e,t)).sort(o.compareBridges)},"scanBars",0,function(e,t){let r=l(e,t),n=e?.profile_url?t.lists?.get((0,o.keyFor)(e)):null;return"hidden"===r?null:n?n.more?n.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*n.pages/n.total)))):2:5:"scanned"===r?2:null}],48235)},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,r="/avatars/";function n(e){return"string"==typeof e&&e.startsWith(r)&&t.test(e.slice(r.length))?e:null}e.s(["localPhoto",0,n],36774);let o={S:0,A:1,B:2,C:3,D:4};function l(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function i(e){return Math.round(10*l(e))/10}function a(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let s=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function u(e,t){return(o[e.tier]??9)-(o[t.tier]??9)||l(t)-l(e)||String(e.name||"").localeCompare(String(t.name||""))||s(e.id,t.id)}function c(e,t){return e.bridge&&t.bridge?u(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:s(e.id,t.id)}function d(e,t){return t.score-e.score||t.waysIn-e.waysIn||c(e.routes[0]||f,t.routes[0]||f)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let f={id:null,bridge:null};function g(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function h(e,t){let r=String(e||"");return t<=1?r?"…":"":r.length>t?`${r.slice(0,t-1)}…`:r}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,u,"comparePower",0,d,"convergeLayout",0,function(e,t=800,r=!1,{cards:n=!1,mutuals:o=0}={}){let l=n?46:r?40:34,i=Math.round(t*(r?.44:.36)),a=Math.round(t*(r?.8:n?.6:.62)),s=[],u=null;for(let t of e?.routes||[])t.bridge?s.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):u?u.count++:s.push(u={id:null,bridge:null,unresolved:!0,count:1});let c=Math.max(0,Math.floor(Number(o)||0)-(e?.waysIn||0)),d=Math.min(60,c),f=n?12:11,p=n?220:r?96:120,y=Math.max(1,Math.floor(p/f)+1),m=Math.ceil(d/y),b=d?40+m*f:0,w=Math.max(0,s.length-1)*l+b,v=Math.max(r?190:n?250:220,32+w+48),k=v/2,M=k-w/2,x=Math.max(4,Math.floor((i-10-42)/6)),S=s.map((e,t)=>{let r=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:i,y:M+t*l,r:6,primary:0===t&&!e.unresolved,label:r.length<=x?r:h(e.unresolved?r:g(r),x)}}),_={x:a,y:k,r:17*!n,rings:n?[]:[32,50,70].filter(e=>e<=k-4)},I=S.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:_.x,y2:_.y})),C={x:20,y:k,r:14},$=S.map(e=>({id:e.id,x1:C.x,y1:C.y,x2:e.x,y2:e.y})),F=e?[{key:e.key,p:e,x:_.x,y:_.y,r:_.r,rings:_.rings,big:!0,label:""}]:[],A=M+Math.max(0,s.length-1)*l+40,N=n?i-236+8:i-p,B=Array.from({length:d},(e,t)=>({x:N+t%y*f,y:A+Math.floor(t/y)*f})),E=e?.waysIn?e.waysIn/(e.waysIn+c):1;return{width:t,height:v,you:C,target:_,people:F,bridges:S,links:I,spokes:$,ghosts:B,unscanned:c,ghostLabel:d?{x:N,y:A-13}:null,drawn:E}},"keyFor",0,a,"mapCount",0,function(e,t=10){let r=Math.max(0,Math.min(100,Number(e)||0));return r<=50?t:Math.max(1,Math.round(t*(100-r)/50))},"mostMutuals",0,function(e=[],t=()=>0,r=7){return[...e].sort((e,r)=>Math.max(t(r)||0,r.waysIn)-Math.max(t(e)||0,e.waysIn)||r.waysIn-e.waysIn||d(e,r)).slice(0,r)},"routeIndex",0,function(e=[]){let t=new Map;for(let r of e||[]){let e=a(r),n=t.get(e);n||(n=new Set,t.set(e,n)),n.add(r.source_connection_id??null)}return t},"routesFor",0,function(e,t,r){return e?[...t?.get(a(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:r?.get(e)??null})).sort(c):[]},"score",0,l,"score1",0,i,"separationPeople",0,function(e=[],t=[]){let r=new Map;for(let e of t||[])r.set(e.id,e);let o=new Map,l=new Map;for(let t of e||[]){let e=a(t);l.set(t.id,e);let r=o.get(e);r?function(e,t){let r=i(e)-i(t);if(r)return r>0;let o=!!n(e.profile_image_url);return!!n(t.profile_image_url)!==o?o:0>s(e.id,t.id)}(t,r.person)&&(r.person=t):(r={key:e,person:t,rowIds:[],routeIds:new Set},o.set(e,r)),r.rowIds.push(t.id),r.routeIds.add(t.source_connection_id??null)}let u={people:o.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},f=new Set,g=new Set,h=new Set,p=[];for(let e of o.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:r.get(e)??null}));t.sort(c);let n=t.filter(e=>e.bridge);for(let e of t)(e.bridge?f:g).add(e.id);if(!n.length)for(let e of(u.peopleOnlyUnresolved++,t))h.add(e.id);let{person:o}=e,l=o.tier;void 0!==u.byTier[l]&&u.byTier[l]++,t.length>1&&u.multi++,p.push({key:e.key,person:o,score:i(o),tier:l,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[o.name,o.headline,o.company,o.role,...n.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return u.bridges=f.size,u.unresolvedIds=g.size,u.onlyUnresolvedVia=h.size,p.sort(d),function(e){for(let t=0;t<e.length;t++){let r=e[t],n=e[t-1],o=n&&n.score===r.score&&n.waysIn===r.waysIn;r.rank=o?n.rank:t+1,o&&(r.tied=!0,n.tied=!0)}}(p),{people:p,rowToKey:l,summary:u}},"shortName",0,g,"summitLayout",0,function(e=[],t=800,r=!1,{cards:n=!1}={}){let o=n?45:r?36:26,l=Math.round(.42*t),i=Math.round(.58*t),a=e.map((e,r)=>{var l;return{key:e.key,p:e,x:i,y:16+r*o,r:n?0:(l=e.waysIn)>=4?8.5:3===l?7:2===l?5.5:4,label:h(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-i-60)/6.2))}}),s=new Map,c="\0unresolved";for(let e of a)for(let t of e.p.routes){let r=t.bridge?t.id:c,n=s.get(r);n||(n={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},s.set(r,n)),n.count++,n.ys.push(e.y)}let d=[...s.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));d.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?u(e.bridge,t.bridge):0));let f=a.length?a[a.length-1].y:16,p=function(e=[],t=18,r=0){let n=[];e.forEach((e,r)=>{for(n.push({sum:e-r*t,count:1});n.length>1&&n[n.length-2].sum/n[n.length-2].count>n[n.length-1].sum/n[n.length-1].count;){let e=n.pop();n[n.length-1].sum+=e.sum,n[n.length-1].count+=e.count}});let o=n.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,r)=>e+r*t),l=o.length&&o[0]<r?r-o[0]:0;return o.map(e=>e+l)}(d.map(e=>e.bary),n?32:18,16),y=Math.max(4,Math.floor((l-10-42)/6));d.forEach((e,t)=>{if(e.x=l,e.y=p[t],e.r=5,e.unresolved)e.label=h(`can't be named (${e.count})`,y);else{let t=e.bridge.name||"";e.label=t.length<=y?t:h(g(t),y)}delete e.ys});let m=new Map(d.map(e=>[e.unresolved?c:e.id,e]));for(let e of d)e.onlyFor=0,e.bestFor=0;for(let e of a){let t=e.p.routes[0],r=t?m.get(t.bridge?t.id:c):null;r&&r.bestFor++,1===e.p.waysIn&&r&&r.onlyFor++}let b=[];for(let e of a){let t=new Set;e.p.routes.forEach((r,n)=>{let o=r.bridge?r.id:c;if(t.has(o))return;t.add(o);let l=m.get(o);b.push({key:e.key,bridgeId:l.id,primary:0===n&&!l.unresolved,unresolved:l.unresolved,tier:l.bridge?.tier??null,x1:l.x,y1:l.y,x2:e.x,y2:e.y})})}let w=Math.max(f,d.length?d[d.length-1].y:0),v=a.length?Math.ceil(w+16):0,k={x:20,y:a.length?(16+Math.max(f,w))/2:16,r:14},M=d.map(e=>({id:e.id,x1:k.x,y1:k.y,x2:e.x,y2:e.y}));return{width:t,height:v,you:k,people:a,bridges:d,links:b,spokes:M}}],7214)},46949,e=>{"use strict";e.i(54322),e.s(["TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])}]);
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,5445,e=>{"use strict";var t=e.i(43476),n=e.i(71645),o=e.i(22016),r=e.i(2776),s=e.i(8819);function i(){let[e,o]=(0,n.useState)(null);return((0,n.useEffect)(()=>{fetch("/api/update").then(e=>e.json()).then(o).catch(()=>{})},[]),e)?e.installed?(0,t.jsx)(c,{local:e}):(0,t.jsx)(l,{local:e}):null}async function a(e){let t=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>({}));return{ok:t.ok,d:n}}function l({local:e}){let[o,r]=(0,n.useState)(null),[i,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(null),[p,u]=(0,n.useState)(null);async function g(e){d(e),h(null);try{let{ok:t,d:n}=await a({action:e});if(!t){h(n.error||"Something went wrong."),n.dirty&&r({dirty:n.dirty});return}"check"===e?r(n):(u(n),r(null))}catch(e){h(e.message)}finally{d(null)}}return(0,n.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&(document.getElementById("updates")?.scrollIntoView({block:"center"}),g("check"),window.history.replaceState(null,"",window.location.pathname))},[]),(0,t.jsxs)(s.Section,{id:"updates",title:"Updates",children:[p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["Updated to ",(0,t.jsx)(s.Mono,{children:p.sha})," — “",p.subject,"”."]}),(0,t.jsx)(s.Body,{style:{color:p.needsRestart?"#FFD700":void 0},children:p.needsRestart?"Stop the app in your terminal and start it again — this update changed how it starts.":"The page will pick up most changes on its own. Restart the app if anything looks odd."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["You are on ",(0,t.jsx)(s.Mono,{children:e.sha})," — “",e.subject,"”."]}),o&&0===o.behind&&(0,t.jsx)(s.Status,{tone:"ok",children:"You’re up to date."}),o&&o.behind>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{style:{color:"#00ff88"},children:[o.behind," update",1===o.behind?"":"s"," available."]}),(0,t.jsx)("pre",{style:y,children:o.commits.join("\n")})]}),o?.dirty?.length>0&&(0,t.jsxs)(s.Body,{children:["Changed files here:"," ",(0,t.jsx)(s.Mono,{children:o.dirty.join(", ")}),". Commit or discard them first — this will not throw away your work."]}),(0,t.jsxs)(x,{children:[(0,t.jsx)(s.Btn,{onClick:()=>g("check"),disabled:!!i,children:"check"===i?"Checking…":"Check for updates"}),o?.behind>0&&(0,t.jsx)(s.Btn,{onClick:()=>g("pull"),disabled:!!i,primary:!0,children:"pull"===i?"Updating…":`Install ${o.behind} update${1===o.behind?"":"s"}`})]})]}),c&&(0,t.jsx)(s.Body,{style:{color:"#ff7676"},children:c}),(0,t.jsxs)(s.Body,{style:{fontSize:12,color:"#667",marginTop:12},children:["Nothing is checked automatically and nothing about you is sent — this runs the same ",(0,t.jsx)(s.Mono,{children:"git fetch"})," and ",(0,t.jsx)(s.Mono,{children:"git pull"})," you would type yourself."]})]})}let d=["checking","downloading","verifying","preparing","restarting"];function c({local:e}){let o="mac-app"===e.kind,[r,i]=(0,n.useState)(!1),[l,f]=(0,n.useState)(null),[m,b]=(0,n.useState)(null),[j,w]=(0,n.useState)(!1),[k,S]=(0,n.useState)(null),[v,T]=(0,n.useState)(e.job||null),[C,B]=(0,n.useState)(!1),[$,I]=(0,n.useState)(null),[D,E]=(0,n.useState)(null),[R,O]=(0,n.useState)(void 0),[z,L]=(0,n.useState)(0),[A,F]=(0,n.useState)(!1),W=!!(v&&d.includes(v.phase)),M=W&&("restarting"===v.phase||z>0);async function N(){i(!0),f(null),b(null),I(null),E(null),O(void 0),T(e=>e&&d.includes(e.phase)?e:null);try{let{ok:e,d:t}=await a({action:"check-release"});e?(f(t),S(new Date)):b(t.error||"Could not check.")}catch(e){b(e.message)}finally{i(!1)}}async function P(){B(!0),I(null),E(null),O(void 0),L(0),F(!1);try{let{ok:e,d:t}=await a({action:"install-release"});t.job&&T(t.job),!e&&(I(t.error||"The update could not start."),E(t.refusal||null),"fallback"in t&&O(t.fallback))}catch(e){I(e.message)}finally{B(!1)}}async function Y(){try{let{d:e}=await a({action:"cancel-install"});e.job&&T(e.job)}catch{}}async function H(){try{await navigator.clipboard.writeText(e.command),w(!0),setTimeout(()=>w(!1),1600)}catch{b("Could not copy — select the line and copy it by hand.")}}(0,n.useEffect)(()=>{"#updates"===window.location.hash&&document.getElementById("updates")?.scrollIntoView({block:"start"}),"updates"!==new URLSearchParams(window.location.search).get("check")||(window.history.replaceState(null,"",window.location.pathname),e.job&&d.includes(e.job.phase)||(document.getElementById("updates")?.scrollIntoView({block:"center"}),N().then(()=>document.getElementById("updates")?.scrollIntoView({block:"end",behavior:"smooth"}))))},[e.job]),(0,n.useEffect)(()=>{if(!W)return;let e=!0,t=setTimeout(async()=>{try{if(M){let t=await fetch("/api/update",{cache:"no-store"}),n=await t.json();if(!e)return;if(!n.job||n.job.id!==v.id)return void window.location.reload();L(0),T(n.job)}else{let{ok:t,d:n}=await a({action:"update-status"});e&&t&&n.job&&T(n.job)}}catch{e&&L(e=>e+1)}},M?1500:600);return()=>{e=!1,clearTimeout(t)}},[v,z,W,M]),(0,n.useEffect)(()=>{if(!M)return;let e=setTimeout(()=>F(!0),6e4);return()=>clearTimeout(e)},[M]);let U=v?.phase==="failed",V=o&&l?.install?.possible,_=U&&"stale-check"===v.code||"not-checked"===D,K=void 0!==R?R:l?.fallback,G="windows-app"===e.kind||"linux-app"===e.kind,q=!G&&l?.newer&&(!o||K)&&(!V||U||$||e.lastUpdate?.tone==="bad"),J=function({mac:e,kind:t,canInstall:n,fallback:o}){if(!e)return"source"===t?"A copy built from the source code updates by fetching the code and building it again, which it can't do while it runs. Stop it (Ctrl-C), then run this in the six-degrees folder. Your network stays where it is.":"This copy runs inside the terminal that started it, so it can't replace itself while it runs. Stop it first (Ctrl-C), then run this to start the newest version. Your network stays where it is.";if(!o)return null;let r=o.dataDir?` It opens the new version on the usual data folder, not on ${o.dataDir}: to use that one, quit it and open it again with --data-dir, as you opened this one.`:"";return"replace"===o.mode?`${n?"Or paste this into Terminal.":"Paste this into Terminal instead."} It closes this app, puts the new version in its place and opens it. Your network stays where it is.${r}`:`${n?"Or copy":"Copy"} this line, quit Six Degrees, then paste it into Terminal. It installs the new version at ${o.installsTo}, not where this copy is, and opens it: use that one from then on. Your network stays where it is.${r}`}({mac:o,kind:e.kind,canInstall:V,fallback:K});return(0,t.jsxs)(s.Section,{id:"updates",title:"Updates",children:[e.lastUpdate&&!W&&(0,t.jsx)(u,{report:e.lastUpdate}),(0,t.jsxs)(s.Body,{children:["You have version ",(0,t.jsx)(s.Mono,{children:e.version}),"."]}),W?(0,t.jsx)(p,{job:v,restarting:M,slow:A,onCancel:Y}):(0,t.jsxs)(t.Fragment,{children:[U&&(0,t.jsxs)(s.Status,{tone:"bad",children:[(0,t.jsx)("strong",{children:"The update didn’t finish."})," ",v.error," Nothing was changed."]}),v?.phase==="cancelled"&&(0,t.jsx)(s.Status,{children:"Cancelled. Nothing was changed."}),$&&(0,t.jsx)(s.Status,{tone:"bad",children:$}),l&&!l.latest&&(0,t.jsx)(s.Status,{children:"No release has been published yet."}),l?.latest&&!l.newer&&(0,t.jsxs)(s.Status,{tone:"ok",children:["You’re up to date: ",l.latest.version," is the newest version.",k&&(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" Checked at ",k.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),"."]})]}),l?.newer&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{style:{color:"#00ff88"},children:["Version ",l.latest.version," is available."]}),V&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["It downloads ",l.install.size?`about ${h(l.install.size)} MB`:"the new version"," from GitHub, checks it, then closes, replaces itself and reopens. Your network isn’t touched, and a backup of it is made first."]}),(0,t.jsxs)(x,{children:[_?(0,t.jsx)(s.Btn,{onClick:N,disabled:r,primary:!0,children:r?"Checking…":"Check again"}):(0,t.jsx)(s.Btn,{onClick:P,disabled:C,primary:!0,children:C?"Starting…":U||$?"Try again":"Install and restart"}),(0,t.jsx)(g,{url:l.latest.url})]})]}),o&&!V&&l.install?.reason&&(0,t.jsx)(s.Body,{children:l.install.reason}),G&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["windows-app"===e.kind?"Download its Setup.exe from the release page and run it: it closes this copy, puts the new version in its place and opens it.":"Download its .deb (or .tar.gz) from the release page and install it over this one, after quitting Six Degrees."," ","Your network stays where it is."]}),(0,t.jsx)(x,{children:(0,t.jsx)("a",{href:(l.download||l.latest).url,target:"_blank",rel:"noreferrer",style:{display:"inline-block",padding:"8px 16px",borderRadius:8,fontSize:13,fontWeight:700,textDecoration:"none",background:"linear-gradient(135deg, #9B59B6, #3498DB)",color:"#fff"},children:"Open the release page"})})]}),q&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Body,{children:J}),e.testReleases?(0,t.jsx)("pre",{style:y,children:"Not shown in test mode: it would install the real release from GitHub into Applications."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("pre",{style:y,children:e.command}),(0,t.jsxs)(x,{children:[(0,t.jsx)(s.Btn,{onClick:H,primary:!V,children:j?"Copied":"Copy"}),!V&&(0,t.jsx)(g,{url:l.latest.url})]})]})]}),!V&&!q&&!G&&(0,t.jsx)(x,{children:(0,t.jsx)(g,{url:l.latest.url})})]}),!l?.newer&&(0,t.jsx)(x,{children:(0,t.jsx)(s.Btn,{onClick:N,disabled:r,children:r?"Checking…":l?"Check again":"Check for updates"})})]}),m&&(0,t.jsx)(s.Body,{style:{color:"#ff7676"},children:m}),(0,t.jsxs)(s.Body,{style:{fontSize:12,color:"#667",marginTop:12},children:["Nothing is checked automatically. The button asks GitHub for the newest version number, and nothing about you is sent.",o&&" Only a second click, Install and restart, downloads the new version."]}),e.testReleases&&(0,t.jsxs)(s.Body,{style:{fontSize:12,color:"#FFD700",marginTop:6},children:["Test mode: releases are read from ",(0,t.jsx)(s.Mono,{children:e.testReleases})," on this computer, not from GitHub."]})]})}let h=e=>Math.max(1,Math.round(e/1e6));function p({job:e,restarting:n,slow:o,onCancel:r}){let i=e.total?Math.min(100,Math.round(e.received/e.total*100)):null,a=n?"Restarting… Six Degrees closes and opens again in a moment.":"checking"===e.phase?"Asking GitHub for the newest version…":"downloading"===e.phase?`Downloading ${e.version}…${null!==i?` ${i}% (${h(e.received)} of ${h(e.total)} MB)`:""}`:"verifying"===e.phase?"Checking the download…":"Preparing the new version…";return(0,t.jsxs)("div",{role:"status","aria-live":"polite",style:{marginTop:12},children:[(0,t.jsx)(s.Body,{style:{color:"#e8e8ee"},children:a}),"downloading"===e.phase&&null!==i&&(0,t.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":i,"aria-label":"Download",style:{height:6,borderRadius:3,background:"rgba(255,255,255,0.08)",marginTop:10,overflow:"hidden",maxWidth:420},children:(0,t.jsx)("div",{style:{width:`${i}%`,height:"100%",background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.4s ease"}})}),o&&(0,t.jsx)(s.Body,{children:"This is taking longer than it should. If Six Degrees doesn’t open again by itself, open it from your Applications folder."}),!n&&(0,t.jsx)(x,{children:(0,t.jsx)(s.Btn,{onClick:r,children:"Cancel"})})]})}function u({report:e}){let n=new Date(e.at).toLocaleString([],{dateStyle:"medium",timeStyle:"short"});return(0,t.jsxs)(s.Status,{tone:"ok"===e.tone?"ok":"bad",children:[e.text," ",(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:["(",n,")"]}),"ok"===e.tone&&e.previous&&(0,t.jsxs)("span",{style:{display:"block",fontSize:12.5,color:"#8b9a9a",marginTop:4},children:["A copy of the version you had is kept in ",(0,t.jsx)(s.Mono,{children:e.previous})," until the next update. To go back to it, open that file and drag the app it gives you into your Applications folder."]})]})}function g({url:e}){return e?(0,t.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",fontSize:13.5},children:"What changed →"}):null}function x({children:e}){return(0,t.jsx)("div",{style:{display:"flex",gap:10,marginTop:12,flexWrap:"wrap",alignItems:"center"},children:e})}let y={background:"rgba(0,0,0,0.45)",border:s.LINE,borderRadius:8,padding:12,margin:"8px 0 0",fontSize:12,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"};function f(e){if(!e)return"0 KB";if(e<1048576)return`${Math.max(1,Math.round(e/1024))} KB`;let t=e/1048576;return`${t<10?t.toFixed(1):Math.round(t)} MB`}let m=e=>Number(e||0).toLocaleString("en-US"),b=(e,t,n=`${t}s`)=>`${m(e)} ${1===Number(e)?t:n}`;function j(e,t=!0){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:n.toLocaleString(void 0,t?{dateStyle:"medium",timeStyle:"short"}:{dateStyle:"medium"})}let w={auto:"before a new version",import:"before an import",manual:"made by hand"};async function k(e,t){let n=await e.json().catch(()=>({}));if(!e.ok)throw Object.assign(Error(n.error||t),{data:n});return n}let S={display:"flex",gap:10,marginTop:12,flexWrap:"wrap",alignItems:"center"},v={fontSize:12,color:"#667",marginTop:10},T={fontSize:14,fontWeight:650,margin:"26px 0 4px",color:"#e8e8ee"},C={display:"flex",gap:8,alignItems:"flex-start",marginTop:12,fontSize:13,color:"#c8d0d0",lineHeight:1.5,cursor:"pointer"};function B({label:e,children:n}){return(0,t.jsxs)("div",{style:{display:"flex",gap:12,justifyContent:"space-between",padding:"7px 0",borderTop:s.LINE,fontSize:13.5},children:[(0,t.jsx)("span",{style:{color:"#8b9a9a"},children:e}),(0,t.jsx)("span",{style:{color:"#e8e8ee",textAlign:"right"},children:n})]})}function $(){return(0,t.jsx)("a",{href:"https://github.com/blakeb056/six-degrees#undo-an-import",target:"_blank",rel:"noreferrer",style:{color:"inherit",textDecoration:"underline"},children:"Undo an import"})}function I(){let[e,o]=(0,n.useState)(null),[r,i]=(0,n.useState)(null),[a,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(null),[h,p]=(0,n.useState)(null),[u,g]=(0,n.useState)(null),[x,y]=(0,n.useState)(!0),[I,D]=(0,n.useState)(!0),[E,R]=(0,n.useState)(null),[O,z]=(0,n.useState)(!1),[L,A]=(0,n.useState)(!1),F=(0,n.useRef)(null),W=(0,n.useRef)(!1),M=(0,n.useCallback)(()=>fetch("/api/data",{cache:"no-store"}).then(e=>k(e,"The data folder could not be read.")).then(e=>{let t=Date.parse(e.lastImport?.appliedAt||"");o({...e,importIsRecent:Number.isFinite(t)&&Date.now()-t<864e5}),i(null)}).catch(e=>i(e.message)),[]);async function N(){c(null);try{await navigator.clipboard.writeText(e.dataDir),c({tone:"ok",text:"Copied the folder’s path."})}catch{c({tone:"bad",text:"This window can’t copy. Select the path above and copy it instead."})}}async function P(){l("reveal"),c(null);try{await k(await fetch("/api/data/reveal",{method:"POST"}),"The folder could not be opened."),c({tone:"ok",text:"darwin"===e.platform?"Opened in Finder.":"Opened in your file browser."})}catch(e){c({tone:"bad",text:e.message})}finally{l(null)}}async function Y(){l("export"),p(null);try{let e,t=await fetch("/api/data/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({photos:x,social:I})});t.ok||await k(t,"The copy could not be made.");let n=await t.blob(),o=/filename="([^"]+)"/.exec(t.headers.get("content-disposition")||"")?.[1]||"Six Degrees backup.sixdegrees",r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download=o,s.style.position="fixed",s.style.left="-9999px",document.body.appendChild(s),s.click(),s.remove(),setTimeout(()=>URL.revokeObjectURL(r),6e4);let i=[(e=Number(t.headers.get("x-six-degrees-people")),b(e,"person","people"))];i.push(x?b(Number(t.headers.get("x-six-degrees-photos")),"photo"):"no photos"),p({tone:"ok",text:`Made “${o}” (${f(n.size)}: ${i.join(", ")}). Look for it in your Downloads folder, or wherever you chose to save it.`})}catch(e){p({tone:"bad",text:e.message})}finally{l(null)}}async function H(){if(E){l("import"),g(null);try{let t={"Content-Type":"application/octet-stream","X-Six-Degrees-Size":String(E.size)};e.people>0&&(t["X-Six-Degrees-Replace"]=String(e.people)),await k(await fetch("/api/data/import",{method:"POST",headers:t,body:E}),"The file could not be imported."),R(null),z(!1),F.current&&(F.current.value=""),await M()}catch(e){e.data?.needsConfirm&&(z(!1),await M()),g({tone:"bad",text:e.message})}finally{l(null)}}}async function U(){l("cancel"),g(null);try{await k(await fetch("/api/data/import",{method:"DELETE"}),"The import could not be cancelled."),await M(),g({tone:"ok",text:"Cancelled. The network here stays as it is."})}catch(e){g({tone:"bad",text:e.message})}finally{l(null)}}async function V(){l("restart"),g(null);try{await k(await fetch("/api/data/restart",{method:"POST"}),"Six Degrees could not restart."),A(!0);let e=e=>new Promise(t=>setTimeout(t,e)),t=Date.now()+9e4;for(await e(2500);Date.now()<t;){try{if((await fetch("/api/data",{cache:"no-store"})).ok)return void window.location.reload()}catch{}await e(1e3)}A(!1),g({tone:"bad",text:"Six Degrees didn’t come back. Quit it and open it again: the import finishes as it starts."})}catch(e){g({tone:"bad",text:e.message})}finally{l(null)}}if((0,n.useEffect)(()=>{M()},[M]),(0,n.useEffect)(()=>{e&&!W.current&&(W.current=!0,"#data"===window.location.hash&&document.getElementById("data")?.scrollIntoView({block:"start"}))},[e]),!e)return(0,t.jsx)(s.Section,{id:"data",title:"Your data",children:r?(0,t.jsx)(s.Status,{tone:"bad",children:r}):(0,t.jsx)(s.Body,{children:"Loading…"})});let _=e.pending,K=e.photosInCopy||e.photos,G=e.backups||[],q=G.reduce((e,t)=>e+(t.bytes||0),0),J=!!(E&&E.size>e.maxImportBytes),X=e.people>0,Q=e.lastImport;return(0,t.jsxs)(s.Section,{id:"data",title:"Your data",intro:"Everything Six Degrees knows about your network is in one folder on this computer.",children:[(0,t.jsx)(s.Body,{children:(0,t.jsx)(s.Mono,{children:e.dataDir})}),(0,t.jsxs)("div",{style:S,children:[(0,t.jsx)(s.Btn,{onClick:N,children:"Copy the path"}),(0,t.jsx)(s.Btn,{onClick:P,disabled:"reveal"===a,children:"reveal"===a?"Opening…":"darwin"===e.platform?"Show in Finder":"Open the folder"})]}),d&&(0,t.jsx)(s.Status,{tone:d.tone,children:d.text}),(0,t.jsxs)("div",{style:{marginTop:16,borderBottom:s.LINE},children:[(0,t.jsxs)(B,{label:"Your network",children:[b(e.people,"person","people")," · ",f(e.databaseBytes)]}),(0,t.jsx)(B,{label:"Profile photos",children:e.photos.count?`${m(e.photos.count)} \xb7 ${f(e.photos.bytes)}`:"none saved yet"}),(0,t.jsx)(B,{label:"Backups",children:G.length?`${b(G.length,"copy","copies")} \xb7 ${f(q)}`:"none yet"}),(0,t.jsx)(B,{label:"LinkedIn sign-in for scanning",children:e.linkedinSignIn?"kept here, never put in a copy":"not signed in on this computer"})]}),G.length>0&&(0,t.jsxs)("details",{style:{marginTop:10,fontSize:13,color:"#8b9a9a"},children:[(0,t.jsx)("summary",{style:{cursor:"pointer"},children:"The backups"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto auto",gap:"6px 14px",marginTop:8},children:G.map(e=>(0,t.jsxs)("div",{style:{display:"contents"},children:[(0,t.jsxs)("span",{style:{wordBreak:"break-all",color:"#c8d0d0"},children:[e.name,e.folder?"/":"",(0,t.jsxs)("span",{style:{color:"#667"},children:[" · ",e.folder?"its photos and files":w[e.kind]||e.kind]})]}),(0,t.jsx)("span",{children:j(e.modifiedAt)}),(0,t.jsx)("span",{style:{textAlign:"right"},children:f(e.bytes)})]},e.name))})]}),(0,t.jsx)(s.Body,{style:v,children:"Backups are copies of your network from before a new version or an import. The newest five from new versions are kept; copies from before an import stay until you delete them."}),(0,t.jsx)(s.Body,{style:v,children:"The folder can’t be moved from here. A database that a sync service (iCloud Drive, Dropbox) copies while it’s open can be damaged, and this folder also holds your LinkedIn sign-in, which should never be synced. To use your network on another computer, save a copy below and import it there."}),(0,t.jsx)("h3",{style:T,children:"Move your network to another computer"}),(0,t.jsx)(s.Body,{children:"Save a copy here, then on the new computer install Six Degrees, open Settings → Your data and import the copy. Sign in to LinkedIn again there before you scan: your sign-in never goes into a copy."}),(0,t.jsxs)("label",{style:C,children:[(0,t.jsx)("input",{type:"checkbox",checked:x,onChange:e=>y(e.target.checked),style:{marginTop:3}}),(0,t.jsxs)("span",{children:["Include profile photos",K.count?` (${m(K.count)}, ${f(K.bytes)})`:"",". They can’t be downloaded again without a new scan."]})]}),(0,t.jsxs)("label",{style:C,children:[(0,t.jsx)("input",{type:"checkbox",checked:I,onChange:e=>D(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Include the Social tab: its findings, your CRM notes, stages and follow-ups, and any messages you keep there."})]}),(0,t.jsxs)("div",{style:S,children:[(0,t.jsx)(s.Btn,{primary:!0,onClick:Y,disabled:!!a||L||0===e.people,children:"export"===a?"Saving…":"Save a copy of my network"}),0===e.people&&(0,t.jsx)("span",{style:{fontSize:13,color:"#8b9a9a"},children:"There’s no network here to save yet."})]}),h&&(0,t.jsx)(s.Status,{tone:h.tone,children:h.text}),(0,t.jsx)(s.Body,{style:v,children:"The copy holds the names, headlines and photos of the people in your network. Keep it private: don’t post it or share it, and delete it once it has been imported. A network opened from a LinkedIn CSV lives only in its browser tab, so it isn’t in the copy; import the CSV again on the new computer. With the Social tab included, the copy also holds your CRM notes and any messages you keep, so it’s as private as your inbox."}),(0,t.jsx)("h3",{style:T,children:"Bring in a network from another computer"}),_?(0,t.jsxs)(s.Status,{children:[(0,t.jsx)("div",{style:{fontWeight:650},children:"An import is waiting to finish."}),(0,t.jsxs)("div",{children:["The network in the copy",_.exportedAt?` saved ${j(_.exportedAt,!1)}`:""," ","(",b(_.people,"person","people"),_.photos?`, ${b(_.photos,"photo")}`:"",_.fromVersion?`, from Six Degrees ${_.fromVersion}`:"",")",_.replacedPeople>0?` replaces the ${b(_.replacedPeople,"person","people")} here the next time Six Degrees starts. A copy of what’s here now is kept in backups first, so the import can be undone.`:" becomes the network here the next time Six Degrees starts."," ","Your LinkedIn search budget and any pause on scanning are kept."]}),_.error&&(0,t.jsxs)("div",{style:{color:"#ff7676",marginTop:6},children:["The last try stopped: ",_.error.replace(/\.$/,""),". It tries again the next time Six Degrees starts."]}),L?(0,t.jsx)("div",{style:{marginTop:8},children:"Restarting… this page comes back in a few seconds."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{marginTop:8},children:e.restart.how}),e.restart.command&&(0,t.jsx)("div",{style:{marginTop:6},children:(0,t.jsx)(s.Mono,{children:e.restart.command})}),(0,t.jsxs)("div",{style:S,children:[e.restart.canRestart&&(0,t.jsx)(s.Btn,{primary:!0,onClick:V,disabled:!!a,children:"restart"===a?"Restarting…":"Restart now"}),!_.started&&(0,t.jsx)(s.Btn,{onClick:U,disabled:!!a,children:"cancel"===a?"Cancelling…":"Cancel the import"})]})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Body,{children:"Pick the copy you saved on the other computer (a .sixdegrees file). It replaces the network here; the two networks are never merged. Your LinkedIn search budget and any pause on scanning are kept, with the other computer’s searches added."}),(0,t.jsx)("input",{ref:F,type:"file",accept:".sixdegrees",onChange:function(e){g(null),z(!1),R(e.target.files?.[0]||null)},style:{display:"none"}}),(0,t.jsxs)("div",{style:S,children:[(0,t.jsx)(s.Btn,{onClick:()=>F.current?.click(),disabled:!!a,children:"Choose a file…"}),E&&(0,t.jsxs)("span",{style:{fontSize:13,color:"#c8d0d0",wordBreak:"break-all"},children:[E.name," · ",f(E.size)]})]}),J&&(0,t.jsxs)(s.Status,{tone:"bad",children:["That file is ",f(E.size),". This copy can import files up to ",f(e.maxImportBytes),"."]}),E&&X&&!J&&(0,t.jsxs)("label",{style:C,children:[(0,t.jsx)("input",{type:"checkbox",checked:O,onChange:e=>z(e.target.checked),style:{marginTop:3}}),(0,t.jsxs)("span",{children:["Replace the ",b(e.people,"person","people")," in this copy’s network with the network in this file. A copy of what’s here is kept in backups first. Your search budget and any pause on scanning are kept too."]})]}),(0,t.jsx)("div",{style:S,children:(0,t.jsx)(s.Btn,{primary:!0,onClick:H,disabled:!E||J||X&&!O||!!a,children:"import"===a?"Checking the file…":"Import"})})]}),u&&(0,t.jsx)(s.Status,{tone:u.tone,children:u.text}),Q&&!_&&(e.importIsRecent?(0,t.jsxs)(s.Status,{tone:"ok",children:["Imported ",j(Q.appliedAt),": ",b(Q.people,"person","people"),Q.exportedAt?` from the copy saved ${j(Q.exportedAt,!1)}`:"",".",Q.keptDatabase&&(0,t.jsxs)(t.Fragment,{children:[" ","What was here before is kept in ",(0,t.jsx)(s.Mono,{children:Q.keptDatabase}),Q.keptFiles?", with its photos and files beside it":"",".",Q.keptAsIs&&" It couldn’t be read, so it was kept exactly as it was."," ","To go back to it, see ",(0,t.jsx)($,{}),"."]})]}):(0,t.jsxs)(s.Body,{style:v,children:["Last import: ",j(Q.appliedAt)," (",b(Q.people,"person","people"),").",Q.keptDatabase&&(0,t.jsxs)(t.Fragment,{children:[" What was here before is kept in ",(0,t.jsx)(s.Mono,{children:Q.keptDatabase})," (",(0,t.jsx)($,{}),")."]})]}))]})}var D=e.i(98197),E=e.i(44944),R=e.i(77170),O=e.i(69083),z=e.i(90179);e.i(46949);var L=e.i(828),A=e.i(7837),F=e.i(56899);let W={lean:"Lean",strong:"Strong"},M=["wheel","touchstart","keydown","pointerdown"],N={1:"1st",2:"2nd",3:"3rd"},P=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:n}`,Y=R.DIRECTORY.filter(e=>"function"===e.kind).map(e=>e.label);function H(e,t,n){let[o,r]=n?["moved","moved"]:["moves","move"];if(!e&&!t)return n?"No one changed tier.":"No one changes tier.";let s=e=>1===e?o:r;return e&&t?`${P(e,"person","people")} ${s(e)} up a tier and ${t.toLocaleString()} ${s(t)} down.`:e?`${P(e,"person","people")} ${s(e)} up a tier.`:`${P(t,"person","people")} ${s(t)} down a tier.`}function U({onSaved:e}={}){let[o,r]=(0,n.useState)(null),[i,a]=(0,n.useState)(null),[l,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(!1),[p,u]=(0,n.useState)(null),[g,x]=(0,n.useState)(null),[y,f]=(0,n.useState)({loading:!0}),[m]=(0,n.useState)(()=>(0,A.csvNetworkSource)()),b=(0,n.useRef)(null),j=(0,n.useRef)(0),w=(0,n.useRef)(!1);function k(e){a(e),u(null),clearTimeout(b.current);let t=++j.current;if((0,E.sameFocus)(e,o))return void d(null);let n=(0,E.focusFingerprint)(e);d({key:n,loading:!0}),b.current=setTimeout(async()=>{try{let o=await fetch("/api/settings/sector-preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sectorFocus:e})}),r=await o.json();if(t!==j.current)return;d(o.ok?{key:n,...r}:{key:n,error:r.error||"Could not work out what would change."})}catch{t===j.current&&d({key:n,error:"Could not reach the app to work out what would change."})}},250)}async function S(){var t,n;let o;h(!0),u(null),clearTimeout(b.current),j.current++;let s=await (0,F.saveSettings)({sectorFocus:i});(h(!1),s.settings&&(r(s.settings.sectorFocus),a(s.settings.sectorFocus),d(null)),s.error)?u({tone:"bad",text:s.error}):(u({tone:"ok",text:(t=s.settings.sectorFocus,n=s.effects?.sectorFocus,o=t.sectors.length?`Saved: ${t.sectors.map(e=>(0,O.sectorByKey)(e).label).join(" · ")} (${W[t.strength].toLowerCase()}).`:"Saved: no sector.",n?n.scored?`${o} Rescored your network (${P(n.people??n.scored,"person","people")}). ${H(n.up,n.down,!0)}`:`${o} There's no scanned network yet; it will apply when you scan.`:o)}),e?.())}(0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load your sector.")))).then(t=>{if(e)return;let n=t.settings?.sectorFocus||{sectors:[],strength:"lean"};r(n),a(n)}).catch(t=>{e||x(t.message)}),fetch("/api/settings/sector-suggestions").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load suggestions.")))).then(t=>{e||f({scored:t.scored,list:t.suggestions||[]})}).catch(t=>{e||f({error:t.message})}),()=>{e=!0,clearTimeout(b.current)}},[]),(0,n.useEffect)(()=>{if(w.current||!i&&!g)return;w.current=!0;let e=document.getElementById("sector");if("#sector"!==window.location.hash||!e)return;let t=()=>e.scrollIntoView({block:"start"});t();let n=new ResizeObserver(t);n.observe(document.body);let o=()=>{for(let e of(n.disconnect(),clearTimeout(r),M))window.removeEventListener(e,o,!0)},r=setTimeout(o,2e3);for(let e of M)window.addEventListener(e,o,{capture:!0,passive:!0});return o},[i,g]);let v=i&&o&&!(0,E.sameFocus)(i,o);return(0,t.jsxs)(s.Section,{id:"sector",title:"Your sector",intro:"Pick up to three sectors you work in. Companies in them count for more when your network is scored, so the people there rank higher.",children:[g&&(0,t.jsx)(s.Status,{tone:"bad",children:g}),!i&&!g&&(0,t.jsx)(s.Body,{children:"Loading…"}),i&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(D.default,{sectors:i.sectors,onChange:e=>k({...i,sectors:e}),disabled:c,suggest:y}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:8,marginTop:14},children:[(0,t.jsx)("span",{style:{fontSize:13,color:"#8b9a9a"},children:"How much:"}),Object.keys(z.SECTOR_BONUS).map(e=>(0,t.jsxs)("button",{type:"button","aria-pressed":i.strength===e,disabled:c,onClick:()=>k({...i,strength:e}),style:{padding:"5px 12px",borderRadius:7,fontSize:12.5,fontWeight:600,cursor:"pointer",color:i.strength===e?"#fff":"#8b9a9a",background:i.strength===e?"rgba(52,152,219,0.25)":"transparent",border:s.LINE},children:[W[e]," · +",z.SECTOR_BONUS[e]]},e))]}),(0,t.jsx)(s.Body,{style:{fontSize:12.5},children:"Each company in your sectors gets +1 (lean) or +2 (strong) on its score out of 10, never above 10. A company in more than one of your picks still gets it once."}),(0,t.jsx)(V,{preview:v?l:null,draft:i}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:14},children:[(0,t.jsx)(s.Btn,{primary:!0,onClick:S,disabled:!v||c,children:c?"Saving and rescoring…":"Save"}),v&&!c&&(0,t.jsx)(s.Btn,{onClick:()=>k(o),children:"Cancel"}),!v&&i.sectors.length>0&&!c&&(0,t.jsx)(s.Btn,{onClick:()=>k({...i,sectors:[]}),children:"Turn off"})]}),p&&(0,t.jsx)(s.Status,{tone:p.tone,children:p.text}),(0,t.jsxs)("ul",{style:{margin:"16px 0 0",paddingLeft:18,fontSize:12.5,color:"#778",lineHeight:1.7},children:[(0,t.jsx)("li",{children:"Tiers rank how reachable someone is through your network, not the people themselves."}),(0,t.jsxs)("li",{children:["A company score you set on ",(0,t.jsx)("a",{href:"#companies",style:{color:"#3498DB"},children:"Company scores"}),", below, always wins. Your sector never changes it."]}),(0,t.jsx)("li",{children:"If you scan highest tier first, people in your sectors come up sooner. Scanning newest first, the default, doesn’t go by tier."}),(0,t.jsx)("li",{children:"An industry includes its sectors. It counts a company in any of its sectors (Healthcare & Biotech counts a practice that is only in Dental), and a company whose industry the app’s list of well-known companies or the company’s own name gives (Meridian Health). Not one known only from its people’s job titles: a recruiter at Acme Widgets doesn’t make Acme a consulting firm."}),(0,t.jsx)("li",{children:"A narrower sector counts a company when its name says so (Smith Family Dental), it’s a well-known company in that sector, or at least half of the people you know there say so in their headlines (dentist, DDS, orthodontist). The words are a fixed list that comes with the app, the same on every computer. Nothing is sent anywhere."}),(0,t.jsxs)("li",{children:["Some sectors are work every kind of company has: ",Y.length>1?`${Y.slice(0,-1).join(", ")} and ${Y.at(-1)}`:Y.join(""),". For those a job title doesn’t count, since a recruiter at Acme Widgets doesn’t make it a recruiting firm. The company’s name does (Acme Staffing, Smith CPA), and so does a kind of firm in a headline (staffing agency, law firm, SaaS)."]}),m&&(0,t.jsxs)("li",{style:{color:"#FFD700"},children:["sample"===m?"The sample network":"The CSV import"," open in this window isn’t changed by this, and isn’t counted in the suggestions. Your sector applies to networks you’ve scanned."]})]})]})]})}function V({preview:e,draft:n}){if(!e||e.key!==(0,E.focusFingerprint)(n))return null;let o={marginTop:12,padding:"10px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,border:s.LINE,background:"rgba(255,255,255,0.03)",color:"#cfd8d8"};if(e.loading)return(0,t.jsx)("div",{style:o,"aria-live":"polite",children:"Working out what would change…"});if(e.error)return(0,t.jsx)(s.Status,{tone:"bad",children:e.error});if(!e.scored)return(0,t.jsx)("div",{style:o,"aria-live":"polite",children:"There’s no scanned network yet, so nothing changes now. Your choice applies once you scan."});let r=(e,t)=>`${P(e,"company","companies")} ${1===e?"scores":"score"} ${t}`,i=[e.companiesUp&&r(e.companiesUp,"higher"),e.companiesDown&&r(e.companiesDown,"lower")].filter(Boolean).join(" and ");return(0,t.jsxs)("div",{style:o,"aria-live":"polite",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"If you save:"})," ",i?`${i}.`:"No company changes score."," ",H(e.up,e.down,!1)]}),e.examples?.length>0&&(0,t.jsx)("div",{style:{marginTop:6,display:"flex",flexWrap:"wrap",gap:"4px 12px",fontSize:12.5},children:e.examples.map((e,n)=>(0,t.jsxs)("span",{title:e.company||void 0,children:[e.name,e.degree?(0,t.jsxs)("span",{style:{color:"#667"},children:[" (",N[e.degree]||`${e.degree}th`,")"]}):null," ",(0,t.jsx)("b",{style:{color:L.TIER_COLORS_CLASSIC[e.from]||"#889"},children:e.from||"–"})," → ",(0,t.jsx)("b",{style:{color:L.TIER_COLORS_CLASSIC[e.to]||"#889"},children:e.to})]},n))}),e.companyExamples?.length>0&&(0,t.jsx)("div",{style:{marginTop:4,fontSize:12,color:"#8b9a9a"},children:e.companyExamples.slice(0,3).map(e=>`${e.name} ${e.from} → ${e.to}`).join(" · ")})]})}let _=e=>`${Math.round(100*e)}%`,[K,G,q]=z.CURVE.map(([,e])=>e),J=[{key:"curve",label:"On your network's curve",note:`Your top ${_(K)} are S, the next ${_(G-K)} A and the next ${_(q-G)} B, so any network has a top, even one full of companies the app doesn't know. It only lifts: nobody drops a tier because their network is strong, and nobody under ${z.CURVE_FLOOR} is lifted into S or A.`},{key:"fixed",label:"On the fixed scale",note:"The same lines for everyone: S from 7.5, A from 5.5, B from 4, C from 2.5. Easy to compare from one network to another, but a network outside well-known companies has almost nobody in S or A."}];function X({onSaved:e}={}){let[o,r]=(0,n.useState)(null),[i,a]=(0,n.useState)(!1),[l,d]=(0,n.useState)(null),[c,h]=(0,n.useState)(null),[p]=(0,n.useState)(()=>(0,A.csvNetworkSource)());async function u(t){if(i||t===o)return;a(!0),d(null);let{settings:n,effects:s,error:l}=await (0,F.saveSettings)({tierScale:t});if(n&&r(n.tierScale),l)d({tone:"bad",text:l});else{let t,n=s?.tierScale;d({tone:"ok",text:n?`Saved. ${t=n.moved,`${t.toLocaleString()} ${1===t?"person":"people"}`} changed tier.`:"Saved."}),e?.()}a(!1)}return(0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load how tiers are graded.")))).then(t=>{e||r(t.settings?.tierScale||"curve")}).catch(t=>{e||h(t.message)}),()=>{e=!0}},[]),(0,t.jsxs)(s.Section,{id:"tiers",title:"Tiers",intro:"How the S to D rings are drawn. A tier says where someone sits in your network, not what they're worth.",children:[c&&(0,t.jsx)(s.Status,{tone:"bad",children:c}),o&&(0,t.jsx)("div",{role:"radiogroup","aria-label":"How tiers are graded",style:{display:"grid",gap:8},children:J.map(e=>{let n=o===e.key;return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":n,disabled:i,onClick:()=>u(e.key),style:{textAlign:"left",padding:"12px 14px",borderRadius:8,cursor:i?"wait":n?"default":"pointer",color:"#fff",background:n?"rgba(155,89,182,0.14)":"rgba(255,255,255,0.03)",border:n?"1px solid rgba(155,89,182,0.6)":s.LINE},children:[(0,t.jsxs)("div",{style:{fontSize:14,fontWeight:650},children:[n?"● ":"○ ",e.label,"curve"===e.key?" (recommended)":""]}),(0,t.jsx)(s.Body,{style:{marginTop:4},children:e.note})]},e.key)})}),p&&(0,t.jsxs)(s.Body,{style:{color:"#FFD700",marginTop:10},children:["sample"===p?"The sample network open in this window keeps its own tiers (they’re the same either way).":"The CSV import open in this window is always graded on its own curve."," ","This applies to networks you’ve scanned."]}),l&&(0,t.jsx)(s.Status,{tone:l.tone,children:l.text})]})}let Q=["csuite","owner","vp","director","manager","senior","ic","unknown","intern","student"],Z=Object.freeze({points:Object.freeze({}),roles:Object.freeze([])});function ee(e=Z){let t=Object.keys(e.points||{}).sort().map(t=>`${t}=${e.points[t]}`).join(","),n=(e.roles||[]).map(e=>`${e.text}=${e.points}`).sort().join(",");return t||n?`${t}|${n}`:"none"}let et=[{key:"default",label:"As the app ranks them",ranking:Z,note:"C-suite and founders first, then VPs, directors, managers."},{key:"founders",label:"Founders first",note:"Owners and entrepreneurs count like CEOs, and anyone who says founder counts as much: for meeting founders, or selling to them.",ranking:{points:{owner:10},roles:[{text:"founder",points:10},{text:"co-founder",points:10}]}},{key:"investors",label:"Investors",note:"Anyone who invests for a living rises to the top: for raising money.",ranking:{points:{},roles:["investor","venture","angel","general partner","managing partner","principal at","vc"].map(e=>({text:e,points:10}))}},{key:"role",label:"A role I’m looking for",note:"For outbound or hiring: add the role below, and everyone in it rises, whatever their level.",ranking:null}],en=[10,9.5,9,8.5,8,7.5,7,6.5,6,5.5,5,4.5,4,3,2,1,0],eo={padding:"5px 8px",borderRadius:6,fontSize:12.5,cursor:"pointer",border:s.LINE,background:"rgba(0,0,0,0.3)",color:"#fff"};function er({onSaved:e}={}){let[o,r]=(0,n.useState)(null),[i,a]=(0,n.useState)(null),[l,d]=(0,n.useState)(""),[c,h]=(0,n.useState)(10),[p,u]=(0,n.useState)(!1),[g,x]=(0,n.useState)(null),[y,f]=(0,n.useState)(null),m=(0,n.useRef)(null);if((0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load your title ranking.")))).then(t=>{if(!e){let e=t.settings?.titleRanking||Z;r(e),a(e)}}).catch(t=>{e||f(t.message)}),()=>{e=!0}},[]),!i)return y?(0,t.jsx)(s.Status,{tone:"bad",children:y}):null;let b=(e,t)=>{let n={...i.points};t===z.LEVELS[e].points?delete n[e]:n[e]=t,a({...i,points:n}),x(null)},j=et.find(e=>e.ranking&&ee(e.ranking)===ee(i))?.key??null,w=ee(i)!==ee(o);async function k(){u(!0),x(null);let{settings:t,effects:n,error:o}=await (0,F.saveSettings)({titleRanking:i});if(t&&(r(t.titleRanking),a(t.titleRanking)),o)x({tone:"bad",text:o});else{let t,o=n?.titleRanking;x({tone:"ok",text:o?`Saved. ${t=o.moved,`${t.toLocaleString()} ${1===t?"person":"people"}`} changed tier.`:"Saved."}),e?.()}u(!1)}return(0,t.jsxs)(s.Section,{id:"titles",title:"Titles",intro:"How much each kind of title counts towards someone's power, out of 10. Change it if you value some people more than the app does: founders, investors, or a role you're looking for.",children:[(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:6},children:et.map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>{x(null),e.ranking?a({points:{...e.ranking.points},roles:[...e.ranking.roles]}):m.current?.focus()},"aria-pressed":j===e.key,title:e.note,style:{padding:"6px 12px",borderRadius:16,fontSize:12.5,fontWeight:650,cursor:"pointer",border:j===e.key?"1px solid rgba(155,89,182,0.7)":s.LINE,background:j===e.key?"rgba(155,89,182,0.16)":"rgba(255,255,255,0.03)",color:j===e.key?"#fff":"#bbb"},children:e.label},e.key))}),(0,t.jsx)(s.Body,{style:{marginBottom:14},children:et.find(e=>e.key===j)?.note||"Your own ranking. Higher points rank higher; the company someone works at still weighs it."}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr auto auto",gap:"6px 12px",alignItems:"center",maxWidth:520},children:Q.map(e=>{let n=i.points?.[e]!=null;return[(0,t.jsx)("div",{style:{fontSize:13,color:n?"#fff":"#ccc",fontWeight:n?700:500},children:z.LEVELS[e].label},`${e}-l`),(0,t.jsx)("select",{"aria-label":`Points for ${z.LEVELS[e].label}`,value:i.points?.[e]??z.LEVELS[e].points,onChange:t=>b(e,Number(t.target.value)),style:{...eo,borderColor:n?"rgba(155,89,182,0.7)":void 0},children:en.map(e=>(0,t.jsx)("option",{value:e,children:e},e))},`${e}-s`),(0,t.jsx)("div",{style:{fontSize:11,color:"#667",minWidth:70},children:n?(0,t.jsxs)("button",{type:"button",onClick:()=>b(e,z.LEVELS[e].points),style:{background:"none",border:"none",color:"#9b9bd0",cursor:"pointer",fontSize:11,padding:0},children:["back to ",z.LEVELS[e].points]}):"as it comes"},`${e}-d`)]})}),(0,t.jsx)("div",{style:{marginTop:18,fontSize:13.5,fontWeight:700,color:"#eee"},children:"Roles you’re looking for"}),(0,t.jsx)(s.Body,{style:{margin:"4px 0 10px"},children:"Anyone whose title has these words counts what you give them, whatever their level: for outbound to one role, or hiring for it. “Account executive” at 10 puts every account executive you can reach near the top."}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),(()=>{let e=l.trim().toLowerCase().replace(/\s+/g," ");if(e.length<2)return;let t=[...i.roles.filter(t=>t.text!==e),{text:e,points:c}];a({...i,roles:t.slice(-20)}),d(""),x(null)})()},style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"},children:[(0,t.jsx)("input",{ref:m,value:l,onChange:e=>d(e.target.value),placeholder:"e.g. head of growth, recruiter, founder",maxLength:60,style:{flex:"1 1 220px",padding:"7px 10px",borderRadius:6,fontSize:13,border:s.LINE,background:"rgba(0,0,0,0.3)",color:"#fff"}}),(0,t.jsx)("select",{"aria-label":"Points for this role",value:c,onChange:e=>h(Number(e.target.value)),style:eo,children:en.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(s.Btn,{type:"submit",disabled:l.trim().length<2||i.roles.length>=20,children:"Add"})]}),i.roles.length>0&&(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginTop:10},children:i.roles.map(e=>(0,t.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"4px 6px 4px 11px",borderRadius:14,fontSize:12.5,border:"1px solid rgba(155,89,182,0.5)",background:"rgba(155,89,182,0.12)",color:"#eee"},children:[e.text," ",(0,t.jsx)("b",{style:{color:"#d2b4ff"},children:e.points}),(0,t.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.text,void(a({...i,roles:i.roles.filter(e=>e.text!==t)}),x(null))},"aria-label":`Remove ${e.text}`,style:{background:"none",border:"none",color:"#aaa",cursor:"pointer",fontSize:13},children:"✕"})]},e.text))}),(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",marginTop:16},children:[(0,t.jsx)(s.Btn,{primary:!0,onClick:k,disabled:!w||p,children:p?"Rescoring…":"Save and rescore"}),w&&(0,t.jsx)("span",{style:{fontSize:12,color:"#999"},children:"Not saved yet. Saving rescores everyone."})]}),g&&(0,t.jsx)(s.Status,{tone:g.tone,children:g.text})]})}var es=e.i(54322),ei=e.i(58712);let ea={none:"Plain",stars:"Stars",grid:"Grid",glow:"Glow",horizon:"Horizon"},el={system:"System",rounded:"Rounded",mono:"Mono",serif:"Serif"},ed={S:"S tier",A:"A tier",B:"B tier",C:"C tier",D:"D tier"},ec={fontSize:11,fontWeight:700,color:"#778",letterSpacing:.6,textTransform:"uppercase",margin:"16px 0 8px"};function eh({theme:e,width:n=168,height:o=96}){let r=.58*n,s=o/2,i=`p-${e.id}-${e.customised?"c":"p"}`,a=Math.min(1,Math.max(0,e.glass)),l=es.TIER_KEYS.map((e,t)=>{let n=-Math.PI/2+2*t*Math.PI/es.TIER_KEYS.length,o=22+3*t;return{k:e,x:r+Math.cos(n)*o,y:s+Math.sin(n)*o,a:n}}),d=t=>"one"===e.lines?e.line:e.tiers[t];return(0,t.jsxs)("svg",{width:n,height:o,viewBox:`0 0 ${n} ${o}`,"aria-hidden":"true",style:{display:"block",borderRadius:8},children:[(0,t.jsxs)("defs",{children:[(0,t.jsxs)("radialGradient",{id:`${i}-glow`,children:[(0,t.jsx)("stop",{offset:"0",stopColor:e.bg2,stopOpacity:"0.8"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.bg2,stopOpacity:"0"})]}),(0,t.jsxs)("radialGradient",{id:`${i}-glow2`,children:[(0,t.jsx)("stop",{offset:"0",stopColor:e.accent,stopOpacity:"0.55"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.accent,stopOpacity:"0"})]}),(0,t.jsxs)("linearGradient",{id:`${i}-sun`,x1:"0",y1:"0",x2:"0",y2:"1",children:[(0,t.jsx)("stop",{offset:"0.45",stopColor:e.bg2,stopOpacity:"0"}),(0,t.jsx)("stop",{offset:"1",stopColor:e.bg2,stopOpacity:"0.45"})]})]}),(0,t.jsx)("rect",{width:n,height:o,fill:e.bg}),"stars"===e.backdrop&&(0,t.jsxs)("g",{fill:"#fff",children:[(0,t.jsx)("circle",{cx:.8*n,cy:.2*o,r:28,fill:`url(#${i}-glow)`}),[[12,10],[40,70],[150,14],[128,80],[24,44],[96,8],[70,88],[158,52]].map(([e,n])=>(0,t.jsx)("circle",{cx:e,cy:n,r:.8,opacity:.85},`${e}-${n}`))]}),"grid"===e.backdrop&&(0,t.jsxs)("g",{stroke:e.bg2,strokeWidth:1,opacity:.9,children:[Array.from({length:9},(e,n)=>(0,t.jsx)("line",{x1:20*n,y1:0,x2:20*n,y2:o},`v${n}`)),Array.from({length:5},(e,o)=>(0,t.jsx)("line",{x1:0,y1:20*o,x2:n,y2:20*o},`h${o}`))]}),"glow"===e.backdrop&&(0,t.jsxs)("g",{children:[(0,t.jsx)("circle",{cx:.2*n,cy:.25*o,r:40,fill:`url(#${i}-glow)`}),(0,t.jsx)("circle",{cx:.85*n,cy:.4*o,r:36,fill:`url(#${i}-glow2)`})]}),"horizon"===e.backdrop&&(0,t.jsxs)("g",{children:[(0,t.jsx)("rect",{width:n,height:o,fill:`url(#${i}-sun)`}),Array.from({length:9},(r,s)=>(0,t.jsx)("line",{x1:21*s,y1:.62*o,x2:(s-4)*40+n/2,y2:o,stroke:e.bg2,strokeOpacity:.35},s)),(0,t.jsx)("line",{x1:0,y1:.62*o,x2:n,y2:.62*o,stroke:e.bg2,strokeOpacity:.5})]}),(0,t.jsx)("rect",{x:0,y:0,width:.24*n,height:o,fill:e.panel,fillOpacity:.92-.82*a}),(0,t.jsx)("rect",{x:.24*n,y:0,width:.75,height:o,fill:"#fff",fillOpacity:.12}),[0,1,2,3,4].map(o=>(0,t.jsx)("rect",{x:6,y:12+14*o,width:.24*n-12,height:6,rx:3,fill:e.tiers[es.TIER_KEYS[o]],fillOpacity:.55},o)),l.map(e=>(0,t.jsx)("line",{x1:r,y1:s,x2:e.x,y2:e.y,stroke:d(e.k),strokeOpacity:.55,strokeWidth:.8},`l${e.k}`)),l.map(n=>[0,1,2].map(o=>{let r=n.a+(o-1)*.5,s=n.x+9*Math.cos(r),i=n.y+9*Math.sin(r);return(0,t.jsxs)("g",{children:[(0,t.jsx)("line",{x1:n.x,y1:n.y,x2:s,y2:i,stroke:d(n.k),strokeOpacity:.4,strokeWidth:.6}),(0,t.jsx)("circle",{cx:s,cy:i,r:1.6,fill:e.tiers[es.TIER_KEYS[(es.TIER_KEYS.indexOf(n.k)+o+1)%5]],fillOpacity:.8})]},`k${n.k}${o}`)})),l.map(n=>(0,t.jsx)("circle",{cx:n.x,cy:n.y,r:"S"===n.k?4.5:3.6,fill:e.tiers[n.k]},`d${n.k}`)),(0,t.jsx)("circle",{cx:r,cy:s,r:5.5,fill:e.you,stroke:e.accent,strokeWidth:1.2})]})}function ep({name:e,value:n,onChange:o,title:r}){return(0,t.jsxs)("label",{title:r||e,style:{display:"flex",alignItems:"center",gap:8,padding:"6px 10px 6px 6px",borderRadius:8,background:"rgba(255,255,255,0.04)",border:"1px solid rgba(255,255,255,0.08)",cursor:"pointer"},children:[(0,t.jsx)("input",{type:"color",value:n,onChange:e=>o(e.target.value),style:{width:28,height:28,padding:0,border:"none",borderRadius:6,background:"none",cursor:"pointer"}}),(0,t.jsx)("span",{style:{fontSize:12.5,color:"#cdd"},children:e})]})}function eu({options:e,value:n,onPick:o}){return(0,t.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.map(([e,r])=>(0,t.jsx)("button",{type:"button","aria-pressed":n===e,onClick:()=>o(e),style:{padding:"6px 12px",borderRadius:8,fontSize:12.5,fontWeight:600,cursor:"pointer",border:n===e?"1px solid var(--sd-accent)":"1px solid rgba(255,255,255,0.1)",background:n===e?"color-mix(in srgb, var(--sd-accent) 18%, transparent)":"rgba(255,255,255,0.03)",color:n===e?"#fff":"#99a"},children:r},e))})}function eg(){let e=(0,n.useSyncExternalStore)(ei.watchTheme,ei.themeNow,ei.serverTheme),o=(0,es.resolveTheme)(e),[r,i]=(0,n.useState)(""),[a,l]=(0,n.useState)(null),d=t=>(0,ei.setTheme)({base:e.base,custom:{...e.custom,...t}}),c=async()=>{let t=(0,es.encodeTheme)(e);try{await navigator.clipboard.writeText(t),l("Copied. Paste it into anyone’s Settings → Appearance.")}catch{i(t),l("Select the code below and copy it.")}},h=()=>{let e=(0,es.decodeTheme)(r);e?((0,ei.setTheme)(e),i(""),l(`Using it: ${(0,es.presetOf)(e.base).name}${Object.keys(e.custom).length?", made someone’s own":""}.`)):l("That isn’t a theme code: it starts with sd-theme:")};return(0,t.jsxs)(s.Section,{id:"appearance",title:"Appearance",intro:"How the whole app looks: pick one of ours, then make it yours. It changes as you go, and stays in this browser.",children:[(0,t.jsx)("div",{style:ec,children:"Looks"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(190px, 1fr))",gap:10},children:es.THEMES.map(n=>{let r=e.base===n.id,s=r?o:(0,es.resolveTheme)({base:n.id});return(0,t.jsxs)("button",{type:"button","aria-pressed":r,onClick:()=>(0,ei.setTheme)({base:n.id,custom:{}}),title:r&&o.customised?`${n.name}, with your changes. Click to go back to plain ${n.name}.`:n.blurb,style:{textAlign:"left",padding:8,borderRadius:12,cursor:"pointer",color:"#fff",border:r?"2px solid var(--sd-accent)":"1px solid rgba(255,255,255,0.1)",background:r?"color-mix(in srgb, var(--sd-accent) 10%, transparent)":"rgba(255,255,255,0.03)"},children:[(0,t.jsx)(eh,{theme:s,width:172,height:96}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:6,margin:"8px 2px 2px"},children:[(0,t.jsx)("span",{style:{fontSize:13.5,fontWeight:700},children:n.name}),r&&o.customised&&(0,t.jsx)("span",{style:{fontSize:10.5,fontWeight:700,color:"var(--sd-accent)"},children:"yours"})]}),(0,t.jsx)("div",{style:{fontSize:11.5,color:"#889",lineHeight:1.4,margin:"0 2px"},children:n.blurb})]},n.id)})}),(0,t.jsxs)("div",{style:{marginTop:22,padding:"4px 16px 16px",borderRadius:12,border:"1px solid rgba(255,255,255,0.08)",background:"rgba(255,255,255,0.02)"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"},children:[(0,t.jsxs)("div",{style:{...ec,flex:1},children:["Make it yours",o.customised?"":`: starting from ${(0,es.presetOf)(e.base).name}`]}),o.customised&&(0,t.jsxs)("button",{type:"button",onClick:()=>(0,ei.setTheme)({base:e.base,custom:{}}),style:{padding:"4px 10px",borderRadius:8,fontSize:11.5,cursor:"pointer",border:"1px solid rgba(255,255,255,0.12)",background:"none",color:"#aab"},children:["Back to plain ",(0,es.presetOf)(e.base).name]})]}),(0,t.jsx)("div",{style:ec,children:"Background"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginBottom:10},children:[(0,t.jsx)(ep,{name:"Colour",value:o.bg,onChange:e=>d({bg:e}),title:"Behind everything"}),(0,t.jsx)(ep,{name:"Second colour",value:o.bg2,onChange:e=>d({bg2:e}),title:"The backdrop's: the nebula, the grid, the glow or the sunset"}),(0,t.jsx)(ep,{name:"Accent",value:o.accent,onChange:e=>d({accent:e}),title:"What's picked, and the backdrop's glow"})]}),(0,t.jsx)(eu,{value:o.backdrop,options:es.BACKDROPS.map(e=>[e,ea[e]]),onPick:e=>d({backdrop:e})}),(0,t.jsx)("div",{style:ec,children:"Dots"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8},children:[es.TIER_KEYS.map(n=>(0,t.jsx)(ep,{name:ed[n],value:o.tiers[n],onChange:t=>d({tiers:{...e.custom.tiers||{},[n]:t}})},n)),(0,t.jsx)(ep,{name:"You",value:o.you,onChange:e=>d({you:e}),title:"Your own dot, in the middle of the map"})]}),(0,t.jsx)("div",{style:ec,children:"Lines"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8},children:[(0,t.jsx)(eu,{value:o.lines,options:[["tier","As the person they lead to"],["one","One colour"]],onPick:e=>d({lines:e})}),"one"===o.lines&&(0,t.jsx)(ep,{name:"Line colour",value:o.line,onChange:e=>d({line:e})})]}),(0,t.jsx)("div",{style:ec,children:"Panels"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:14},children:[(0,t.jsx)(ep,{name:"Tint",value:o.panel,onChange:e=>d({panel:e}),title:"The side panels' colour"}),(0,t.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:10,fontSize:12.5,color:"#cdd"},children:["Glass",(0,t.jsx)("input",{type:"range",min:0,max:100,value:Math.round(100*o.glass),onChange:e=>d({glass:Number(e.target.value)/100}),style:{width:160,accentColor:"var(--sd-accent)"}}),(0,t.jsxs)("span",{style:{color:"#889",fontVariantNumeric:"tabular-nums",width:34},children:[Math.round(100*o.glass),"%"]})]})]}),(0,t.jsx)("div",{style:ec,children:"Font"}),(0,t.jsx)(eu,{value:o.font,options:Object.keys(es.FONTS).map(e=>[e,el[e]]),onPick:e=>d({font:e})}),(0,t.jsx)("div",{style:ec,children:"Share it"}),(0,t.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,alignItems:"center"},children:[(0,t.jsx)("button",{type:"button",onClick:c,style:{padding:"7px 14px",borderRadius:8,fontSize:12.5,fontWeight:700,cursor:"pointer",border:"1px solid var(--sd-accent)",background:"color-mix(in srgb, var(--sd-accent) 16%, transparent)",color:"#fff"},children:"Copy theme code"}),(0,t.jsx)("input",{value:r,onChange:e=>i(e.target.value),placeholder:"Paste a theme code (sd-theme:…)",spellCheck:!1,onKeyDown:e=>{"Enter"===e.key&&h()},style:{flex:"1 1 220px",minWidth:0,padding:"7px 10px",borderRadius:8,fontSize:12,fontFamily:"ui-monospace, Menlo, monospace",border:"1px solid rgba(255,255,255,0.12)",background:"rgba(0,0,0,0.25)",color:"#dde"}}),(0,t.jsx)("button",{type:"button",onClick:h,disabled:!r.trim(),style:{padding:"7px 14px",borderRadius:8,fontSize:12.5,fontWeight:600,cursor:r.trim()?"pointer":"default",border:"1px solid rgba(255,255,255,0.12)",background:"rgba(255,255,255,0.04)",color:r.trim()?"#dde":"#667"},children:"Use it"})]}),a&&(0,t.jsx)(s.Body,{style:{fontSize:12,marginTop:8},children:a}),(0,t.jsx)(s.Body,{style:{fontSize:11.5,color:"#667",marginTop:8},children:"A code holds colours and choices only, nothing about your network."})]})]})}var ex=e.i(94657),ey=e.i(64745);let ef={"mac-app":"the Mac app","windows-app":"the Windows app","linux-app":"the Linux app",npm:"the npm package (npx six-degrees)",source:"a copy built from the source code",git:"a git checkout of the source code"};function em(){let[e,r]=(0,n.useState)(null),[a,l]=(0,n.useState)(null),[d,c]=(0,n.useState)(0),h=()=>c(e=>e+1);if((0,n.useEffect)(()=>{fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load settings.")))).then(r).catch(e=>l(e.message))},[]),ey.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"rgba(255,255,255,0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:s.FONT},children:[(0,t.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,t.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(o.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});let p=e?.about;return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"var(--sd-page)",color:"#fff",fontFamily:s.FONT},children:[(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:s.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(o.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:s.LINE},children:"← Back to Map"}),(0,t.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Settings"})]}),(0,t.jsxs)("main",{style:{maxWidth:980,margin:"0 auto",padding:"8px 24px 64px"},children:[a&&(0,t.jsx)(s.Body,{style:{color:"#ff7676",marginTop:16},children:a}),(0,t.jsx)(i,{}),(0,t.jsx)(eg,{}),(0,t.jsxs)(s.Section,{id:"scoring",title:"Scores",children:[(0,t.jsxs)(s.Body,{children:["How someone’s power score is worked out, and the four things you can change about it:"," ",(0,t.jsx)("a",{href:"#sector",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"your field"}),","," ",(0,t.jsx)("a",{href:"#tiers",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"how tiers are graded"}),","," ",(0,t.jsx)("a",{href:"#titles",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"how titles rank"})," and"," ",(0,t.jsx)("a",{href:"#companies",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"any company’s score"}),". A change here rescores everyone. How your network holds together is in"," ",(0,t.jsx)(o.default,{href:"/profile?view=insights",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"Profile → Insights"}),"."]}),(0,t.jsx)(U,{onSaved:h}),(0,t.jsx)(X,{onSaved:h}),(0,t.jsx)(er,{onSaved:h}),(0,t.jsx)("div",{id:"companies",style:{marginTop:28},children:(0,t.jsx)(ex.default,{version:d})})]}),(0,t.jsx)(I,{}),(0,t.jsx)(s.Section,{id:"about",title:"About this copy",children:p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["Version ",(0,t.jsx)(s.Mono,{children:p.version}),", running as ",ef[p.kind]||p.kind,"."]}),(0,t.jsxs)(s.Body,{children:["Your network is kept in ",(0,t.jsx)(s.Mono,{children:p.dataDir}),p.customDataDir?" (a folder you chose).":".",["mac-app","windows-app","linux-app"].includes(p.kind)&&" Help → Show the Data Folder opens it."]}),(0,t.jsx)(s.Body,{style:{fontSize:12,color:"#667",marginTop:10},children:"Settings are saved with your network, on this computer. Nothing here is sent anywhere."})]}):!a&&(0,t.jsx)(s.Body,{children:"Loading…"})})]})]})}e.s(["default",0,function(){return(0,t.jsx)(r.default,{children:(0,t.jsx)(em,{})})}],5445)}]);
@@ -1,3 +0,0 @@
1
- @font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_2ae47f08-module__h69qWW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_2ae47f08-module__h69qWW__variable{--font-geist-sans:"Geist", "Geist Fallback"}
2
- @font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5ce348bf30bf5439-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0r6juujl39pe6.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_eb58308d-module__w_p2Lq__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_eb58308d-module__w_p2Lq__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
3
- *{box-sizing:border-box;margin:0;padding:0}:root{--sd-bg:#0a0a1a;--sd-bg2:#1a1440;--sd-accent:#3498db;--sd-panel:#0a0f1ea6;--sd-panel-blur:blur(24px) saturate(1.4);--sd-header:transparent;--sd-header-blur:none;--sd-font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--sd-page:transparent}body{background:var(--sd-bg);color:#fff;font-family:var(--sd-font)}button,input,select,textarea{font-family:inherit}html:not([data-backdrop=none]) body:before{content:"";z-index:-1;pointer-events:none;position:fixed;inset:0}html[data-backdrop=stars] body:before{background:radial-gradient(1px 1px at 12% 18%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 72% 34%, #fff 50%, transparent 51%), radial-gradient(1.5px 1.5px at 38% 78%, #fff 50%, transparent 51%), radial-gradient(1px 1px at 88% 82%, #fffc 50%, transparent 51%), radial-gradient(1px 1px at 56% 8%, #ffffffb3 50%, transparent 51%), radial-gradient(1.2px 1.2px at 24% 52%, #ffffffd9 50%, transparent 51%), radial-gradient(60% 45% at 75% 20%, color-mix(in srgb, var(--sd-bg2) 55%, transparent), transparent 70%), radial-gradient(50% 40% at 15% 85%, color-mix(in srgb, var(--sd-accent) 18%, transparent), transparent 70%);background-size:180px 180px,230px 230px,310px 310px,270px 270px,150px 150px,200px 200px,100% 100%,100% 100%}html[data-backdrop=grid] body:before{background:linear-gradient(color-mix(in srgb, var(--sd-bg2) 90%, #fff 10%) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--sd-bg2) 90%, #fff 10%) 1px, transparent 1px), linear-gradient(color-mix(in srgb, var(--sd-bg2) 60%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--sd-bg2) 60%, transparent) 1px, transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px}html[data-backdrop=glow] body:before{background:radial-gradient(40% 50% at 18% 22%, color-mix(in srgb, var(--sd-bg2) 70%, transparent), transparent 70%), radial-gradient(35% 45% at 82% 30%, color-mix(in srgb, var(--sd-accent) 45%, transparent), transparent 70%), radial-gradient(45% 40% at 60% 88%, color-mix(in srgb, var(--sd-tier-a,#9b59b6) 40%, transparent), transparent 70%);filter:blur(30px)}html[data-backdrop=horizon] body:before{background:linear-gradient(transparent 62%, color-mix(in srgb, var(--sd-bg2) 22%, transparent) 62.2%, transparent 62.6%), repeating-linear-gradient(90deg, color-mix(in srgb, var(--sd-bg2) 18%, transparent) 0 1px, transparent 1px 80px), radial-gradient(70% 38% at 50% 62%, color-mix(in srgb, var(--sd-bg2) 38%, transparent), transparent 72%);-webkit-mask-image:linear-gradient(#0000 30%,#000 60%);mask-image:linear-gradient(#0000 30%,#000 60%)}body:has(>div>[data-map]){overflow:hidden}html:has([data-field-question]){scroll-padding-bottom:80px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}:root{--scan-bar-top:94px}@media (max-width:767px){:root{--scan-bar-top:66px}}@keyframes notch-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:no-preference){.notch-pulse{animation:1.6s ease-in-out infinite notch-pulse}}.crm-grid{grid-template-columns:minmax(280px,400px) minmax(0,1fr);align-items:start;gap:10px;display:grid}.crm-grid>.crm-wide{grid-column:1/-1}.crm-board{grid-template-columns:repeat(6,minmax(150px,1fr));gap:10px;padding:10px;display:grid;overflow-x:auto}@media (max-width:760px){.crm-grid,.crm-board{grid-template-columns:minmax(0,1fr)}}
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94657,e=>{"use strict";var t=e.i(43476),o=e.i(71645),n=e.i(7837);let r=e=>`${e.name} ${e.was} → ${e.estimated?"estimated":e.now}`,a=e=>({padding:"6px 12px",borderRadius:7,cursor:"pointer",fontSize:12,fontWeight:700,border:e?"none":"1px solid rgba(255,255,255,0.15)",background:e?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:e?"#000":"#cfd8d8"});function i({onAnswered:e}){var s;let l,c,[d,u]=(0,o.useState)(null),[p,h]=(0,o.useState)(!1),[g,f]=(0,o.useState)(()=>new Set),[y,m]=(0,o.useState)(!1),[b,x]=(0,o.useState)(null);if((0,o.useEffect)(()=>{if((0,n.csvNetworkSource)())return;let e=!1;return fetch("/api/company-scores/legacy").then(e=>e.json()).then(t=>{!e&&t.offer?.companies?.length&&(u(t.offer),f(new Set(t.offer.companies.map(e=>e.name))))}).catch(()=>{}),()=>{e=!0}},[]),!d)return null;let w=async t=>{m(!0),x(null);try{let o=await fetch("/api/company-scores/legacy",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({keep:t})}),n=await o.json();if(!o.ok&&!n.kept)throw Error(n.error||"Could not save your answer.");u(null),e?.({kept:n.kept||[],scored:n.scored||0,error:o.ok?null:n.error})}catch(e){x(e.message)}finally{m(!1)}};return(0,t.jsxs)("section",{"aria-label":"Built-in scores changed",style:{marginBottom:14,padding:14,borderRadius:10,border:"1px solid rgba(255,215,0,0.35)",background:"rgba(255,215,0,0.06)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"Built-in scores changed in this version:"})," ",(l=(s=d.companies).slice(0,3).map(r).join(", "),(c=s.length-3)>0?`${l} and ${c} more`:l),"."," ","Keep any of the old ones as your own?",(0,t.jsx)("div",{style:{marginTop:4,color:"#8b9a9a"},children:"The built-in list now holds only companies most professionals would recognise, scored the same for everyone; anything else is estimated from your network. A score you keep is yours, like one you set below, and Auto hands it back."}),p&&(0,t.jsx)("ul",{style:{listStyle:"none",padding:0,margin:"10px 0 0",display:"grid",gap:4},children:d.companies.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("label",{style:{display:"flex",gap:8,alignItems:"baseline",cursor:"pointer"},children:[(0,t.jsx)("input",{type:"checkbox",checked:g.has(e.name),disabled:y,onChange:()=>{let t;return t=e.name,f(e=>{let o=new Set(e);return o.has(t)?o.delete(t):o.add(t),o})}}),(0,t.jsxs)("span",{children:[(0,t.jsx)("b",{style:{color:"#fff"},children:e.name})," ",e.was," → ",e.estimated?`estimated (${e.now})`:e.now,(0,t.jsxs)("span",{style:{color:"#778"},children:[` \xb7 ${e.people} ${1===e.people?"person":"people"} there now`,e.names.length>1&&` \xb7 for ${e.names.join(", ")}`]})]})]})},e.name))}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,marginTop:10,flexWrap:"wrap"},children:[p?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{disabled:y||!g.size,onClick:()=>w([...g]),style:{...a(!0),opacity:y||!g.size?.5:1},children:["Keep ",g.size," ",1===g.size?"score":"scores"]}),(0,t.jsx)("button",{disabled:y,onClick:()=>h(!1),style:a(!1),children:"Back"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{disabled:y,onClick:()=>w(d.companies.map(e=>e.name)),style:a(!0),children:"Keep all"}),(0,t.jsx)("button",{disabled:y,onClick:()=>h(!0),style:a(!1),children:"Choose…"})]}),(0,t.jsx)("button",{disabled:y,onClick:()=>w([]),style:a(!1),children:"No thanks"})]}),b&&(0,t.jsx)("div",{role:"alert",style:{marginTop:8,color:"#e74c3c"},children:b})]})}let s="1px solid rgba(255,255,255,0.1)",l={yours:{label:"your score",color:"#00ff88"},known:{label:"known list",color:"#3498DB"},data:{label:"public data",color:"#1abc9c"},network:{label:"estimated: many of your people",color:"#FF6B35"},default:{label:"unknown company",color:"#778"}};async function c(){let e=await fetch("/api/company-scores"),t=await e.json();if(!e.ok)throw Error(t.error||"Could not load company scores");return t.companies}function d(){let[e,t]=(0,o.useState)(null),[n,r]=(0,o.useState)(null);return(0,o.useEffect)(()=>{let e=!1;return c().then(o=>{e||t(o)}).catch(t=>{e||r(t.message)}),()=>{e=!0}},[]),{companies:e,error:n,setScore:(0,o.useCallback)(async(e,o)=>{let n=await fetch("/api/company-scores",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:e,score:o})}),r=await n.json();if(!n.ok)throw Error(r.error||"Could not save");return t(await c()),r},[]),reload:(0,o.useCallback)(async()=>t(await c()),[])}}function u({company:e,onSet:n,compact:r}){let[a,i]=(0,o.useState)(!1),l=async t=>{i(!0);try{await n(e.name,"auto"===t?null:Number(t))}finally{i(!1)}};return(0,t.jsxs)("select",{disabled:a,value:"yours"===e.source?String(e.score):"auto",onChange:e=>l(e.target.value),title:"Set this company's score. Auto uses the known list or an estimate.",style:{padding:r?"2px 4px":"4px 6px",borderRadius:6,border:s,background:"#11131c",color:"#dfe6e9",fontSize:12},children:[(0,t.jsxs)("option",{value:"auto",children:["Auto (","yours"===e.source?e.suggested??"est.":e.score,")"]}),[10,9,8,7,6,5,4,3,2,1].map(e=>(0,t.jsx)("option",{value:e,children:e},e))]})}e.s(["ScorePicker",0,u,"default",0,function({onRescored:e,version:n=0}){let{companies:r,error:a,setScore:c,reload:p}=d();(0,o.useEffect)(()=>{n&&p().catch(()=>{})},[n,p]);let[h,g]=(0,o.useState)(""),[f,y]=(0,o.useState)("all"),[m,b]=(0,o.useState)(150),[x,w]=(0,o.useState)(null),k=e=>{w(e),setTimeout(()=>w(null),3500)},v=async(t,o)=>{let n=await c(t,o);k(`${t}: ${null==o?"back to auto":`set to ${o}`} \xb7 rescored ${n.scored} people`),e?.()},j=async({kept:t,scored:o,error:n})=>{if(!t.length)return k("Keeping the new built-in scores.");k(n||`Kept ${t.length} old ${1===t.length?"score":"scores"} as your own \xb7 rescored ${o} people`),await p().catch(()=>{}),e?.()},S=(0,o.useMemo)(()=>{if(!r)return[];let e=h.trim().toLowerCase();return r.filter(t=>(!e||t.name.toLowerCase().includes(e))&&("all"===f||t.source===f))},[r,h,f]);if(a)return(0,t.jsx)("div",{style:{padding:24,color:"#e74c3c"},children:a});if(!r)return(0,t.jsx)("div",{style:{padding:24,color:"#778"},children:"Loading companies…"});let C=e=>r.filter(t=>t.source===e).length;return(0,t.jsxs)("div",{style:{flex:1,overflow:"auto",padding:16},children:[(0,t.jsxs)("div",{style:{maxWidth:980,margin:"0 auto"},children:[(0,t.jsx)(i,{onAnswered:j}),(0,t.jsxs)("div",{style:{padding:14,borderRadius:10,border:s,background:"rgba(255,255,255,0.03)",fontSize:12.5,color:"#cfd8d8",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"How a power score works."})," power = ",(0,t.jsx)("b",{children:"title"})," × ",(0,t.jsx)("b",{children:"company weight"})," + bonus. The title (student 1 … founder or C-suite 10) comes from someone’s roles, with former roles at 70%; an audience of their own counts like a title (1M+ followers like a director). The company weight runs from 0.725 for a company we don’t know (or none found), the middle of the scale, to 1.0 (a company scored 10), so seniority counts for more at a bigger company. The bonus is at most +1.5, for investor, YC, an audience in the millions or the top award of any field, and counts half at an unknown company. A 1st-degree person whose circle is unusually strong gets up to +2 more: up to +1 for a high share of it at A or S, or +1 for every 25 people there. Tiers are graded on your network’s curve unless you choose the fixed scale (",(0,t.jsx)("a",{href:"#tiers",style:{color:"#3498DB"},children:"Tiers"}),", above): your top 3% are S, the next 12% A, the next 25% B (it only lifts, and never lifts anyone under 4 into S or A). On the fixed scale, S ≥ 7.5 · A ≥ 5.5 · B ≥ 4 · C ≥ 2.5.",(0,t.jsxs)("div",{style:{marginTop:6,color:"#8b9a9a"},children:["So a VP at a 10 scores 9.0, a founder at an unknown company 7.3, a director at an unknown company 5.4, and an intern at a 10 scores 2.0. Set a company’s score below and everyone there is rescored. Companies in the sectors you pick (",(0,t.jsx)("a",{href:"#sector",style:{color:"#3498DB"},children:"Your sector"}),", above) get +1 or +2; a score you set is never changed."]})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap",margin:"14px 0 10px"},children:[(0,t.jsx)("input",{value:h,onChange:e=>g(e.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:s,background:"rgba(255,255,255,0.05)",color:"#fff",fontSize:13,minWidth:180}}),[["all",`All ${r.length}`],["known",`Known list ${C("known")}`],["data",`Public data ${C("data")}`],["yours",`Yours ${C("yours")}`],["network",`Estimated ${C("network")}`],["default",`Unknown ${C("default")}`]].map(([e,o])=>(0,t.jsx)("button",{onClick:()=>y(e),style:{padding:"5px 10px",borderRadius:7,border:s,cursor:"pointer",fontSize:11.5,fontWeight:600,background:f===e?"rgba(52,152,219,0.25)":"transparent",color:f===e?"#cfe6f7":"#8b9a9a"},children:o},e))]}),(0,t.jsxs)("div",{style:{borderRadius:10,border:s,overflow:"hidden"},children:[(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"8px 12px",fontSize:10.5,letterSpacing:.6,color:"#8b9a9a",background:"rgba(255,255,255,0.04)"},children:[(0,t.jsx)("span",{children:"COMPANY"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"PEOPLE"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"YOU KNOW"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"DIRECTOR+"}),(0,t.jsx)("span",{style:{textAlign:"right"},children:"SCORE"}),(0,t.jsx)("span",{children:"SOURCE"}),(0,t.jsx)("span",{children:"SET"})]}),S.slice(0,m).map(e=>(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 70px 70px 70px 60px 180px 110px",gap:8,padding:"7px 12px",alignItems:"center",borderTop:"1px solid rgba(255,255,255,0.05)",fontSize:12.5},children:[(0,t.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,t.jsx)("span",{title:`${e.industry.label} (inferred)`,style:{width:8,height:8,borderRadius:"50%",background:e.industry.color,flexShrink:0}}),(0,t.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name})]}),(0,t.jsx)("span",{style:{textAlign:"right"},children:e.people}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.d1?"#00ff88":"#556"},children:e.d1}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.senior?"#FFD700":"#556"},children:e.senior}),(0,t.jsx)("b",{style:{textAlign:"right",fontSize:15},children:e.score}),(0,t.jsxs)("span",{style:{fontSize:11,color:l[e.source]?.color},children:[l[e.source]?.label,e.sectorBonus>0&&(0,t.jsxs)("span",{style:{color:"#00ff88"},children:[" + ",e.sectorBonus," your sector"]})]}),(0,t.jsx)(u,{company:e,onSet:v,compact:!0})]},e.name))]}),S.length>m&&(0,t.jsxs)("button",{onClick:()=>b(e=>e+300),style:{marginTop:10,padding:"7px 14px",borderRadius:8,border:s,background:"rgba(255,255,255,0.05)",color:"#dfe6e9",cursor:"pointer",fontSize:12},children:["Show more (",S.length-m," left)"]})]}),x&&(0,t.jsx)("div",{role:"status",style:{position:"fixed",bottom:24,left:"50%",transform:"translateX(-50%)",padding:"10px 18px",borderRadius:24,background:"linear-gradient(135deg, #00ff88, #3498DB)",color:"#000",fontWeight:800,fontSize:13,zIndex:50},children:x})]})},"useCompanyScores",0,d],94657)},2776,e=>{"use strict";var t=e.i(43476),o=e.i(15812);e.s(["default",0,function({children:e}){let{userId:n,ready:r}=(0,o.useUser)();return r&&n?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"var(--sd-page)",color:"#fff",padding:24,textAlign:"center",fontFamily:"var(--sd-font)"},children:r?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},89154,e=>{"use strict";var t=e.i(90179);function o(e){let o=(0,t.readTitle)(e);return{key:o.key,label:o.label,level:o.level}}function n(e){return(0,t.currentCompany)(e)}let r=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],a={key:"unknown",label:"Unclear",color:"#555c66"},i=Object.fromEntries([...r,a].map(e=>[e.key,e])),s=e=>i[e]||a;function l(e,t){for(let o of[e,t]){if(!o)continue;let e=r.find(e=>e.words.test(o));if(e)return e}return a}let c=(e,t)=>l(e,t).key,d=e=>o(e).level>=4;e.s(["INDUSTRIES",0,r,"UNKNOWN_INDUSTRY",0,a,"buildCompanyIndex",0,function(e=[]){let o=new Map,n=e=>(o.has(e)||o.set(e,(0,t.rolesWithCompanies)(e)),o.get(e)),{industries:r}=(0,t.networkCompanies)(e,{industryOf:c,rolesOf:n}),a=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,o=a.get(e);(!o||(t.degree||9)<(o.degree||9))&&a.set(e,t)}let i=new Map;for(let e of a.values()){let t=n(e).find(e=>!e.former)?.company;if(!t)continue;let o=i.get(t);o||(o={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},i.set(t,o)),o.people.push(e),1===e.degree?o.d1++:2===e.degree?o.d2++:o.d3++,"S"===e.tier&&o.S++,"A"===e.tier&&o.A++,d(e.headline)&&o.senior++}for(let e of i.values())e.industry=s(r.get(e.name));return i},"companyLinks",0,function(e=[],t=[]){let o=new Map;for(let t of e){let e=n(t);e&&o.set(t.id,e)}let r=new Map;for(let e of t){let t=o.get(e.source_connection_id),a=n(e);if(!t||!a||t===a)continue;let[i,s]=t<a?[t,a]:[a,t],l=`${i}\u0000${s}`,c=r.get(l);c||(c={a:i,b:s,weight:0,via:new Set},r.set(l,c)),c.weight++,c.via.add(e.source_connection_id)}return[...r.values()]},"companyOf",0,n,"getSeniority",0,o,"industryByKey",0,s,"industryOf",0,l,"isSenior",0,d,"waysInto",0,function(e,t=[],o=[]){let r=t.filter(t=>n(t)===e),a=new Map;for(let t of o)n(t)===e&&a.set(t.source_connection_id,(a.get(t.source_connection_id)||0)+1);let i=new Map(t.map(e=>[e.id,e]));return{direct:r,bridges:[...a.entries()].map(([e,t])=>({bridge:i.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])}]);