six-degrees 0.7.0 → 1.0.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 (360) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +32 -4
  5. package/.next/standalone/.next/routes-manifest.json +6 -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.nft.json +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.rsc +16 -16
  15. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  16. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -14
  17. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  18. package/.next/standalone/.next/server/app/api/admin-delete/route.js +1 -1
  19. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/api/admin-update/route.js +1 -1
  21. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/bridges/route.js +1 -1
  23. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/bulk-import/route.js +1 -1
  25. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/connections/route.js +1 -1
  29. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/data/backup/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/data/csv/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  34. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/data/restore/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/delete-cluster/route.js +1 -1
  39. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/ingest/route.js +1 -1
  41. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/network/route.js +1 -1
  43. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/notifications/route.js +1 -1
  45. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/outreach/route.js +3 -3
  47. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/queue/route.js +1 -1
  49. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/scraper/route.js +4 -4
  51. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/api/setup-profile/route.js +1 -1
  56. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  58. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  59. package/.next/standalone/.next/server/app/api/social/route.js +1 -1
  60. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/api/unlock/route.js +1 -1
  62. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  63. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/update-images/route.js +1 -1
  65. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/users/route.js +1 -1
  67. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  69. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/import.html +1 -1
  72. package/.next/standalone/.next/server/app/import.rsc +18 -18
  73. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +18 -18
  74. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  75. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +16 -16
  76. package/.next/standalone/.next/server/app/index.html +1 -1
  77. package/.next/standalone/.next/server/app/index.rsc +19 -19
  78. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +16 -16
  79. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +19 -19
  80. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  81. package/.next/standalone/.next/server/app/insights/page/app-paths-manifest.json +3 -0
  82. package/.next/standalone/.next/server/app/insights/page/build-manifest.json +20 -0
  83. package/.next/standalone/.next/server/app/insights/page/next-font-manifest.json +11 -0
  84. package/.next/standalone/.next/server/app/insights/page/react-loadable-manifest.json +1 -0
  85. package/.next/standalone/.next/server/app/insights/page/server-reference-manifest.json +4 -0
  86. package/.next/standalone/.next/server/app/insights/page.js +13 -0
  87. package/.next/standalone/.next/server/app/insights/page.js.map +5 -0
  88. package/.next/standalone/.next/server/app/insights/page.js.nft.json +1 -0
  89. package/.next/standalone/.next/server/app/insights/page_client-reference-manifest.js +3 -0
  90. package/.next/standalone/.next/server/app/insights.html +1 -0
  91. package/.next/standalone/.next/server/app/insights.meta +26 -0
  92. package/.next/standalone/.next/server/app/insights.rsc +35 -0
  93. package/.next/standalone/.next/server/app/insights.segments/_full.segment.rsc +35 -0
  94. package/.next/standalone/.next/server/app/insights.segments/_tree.segment.rsc +4 -0
  95. package/.next/standalone/.next/server/app/insights.segments/insights/__PAGE__.segment.rsc +33 -0
  96. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/launch.html +2 -2
  99. package/.next/standalone/.next/server/app/launch.rsc +18 -18
  100. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +18 -18
  101. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  102. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +16 -16
  103. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  106. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/paths.html +1 -1
  108. package/.next/standalone/.next/server/app/paths.rsc +19 -19
  109. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +19 -19
  110. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  111. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +16 -16
  112. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/profile.html +1 -1
  115. package/.next/standalone/.next/server/app/profile.rsc +19 -19
  116. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +19 -19
  117. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  118. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +16 -16
  119. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  120. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  121. package/.next/standalone/.next/server/app/queue.html +1 -1
  122. package/.next/standalone/.next/server/app/queue.rsc +19 -19
  123. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +19 -19
  124. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  125. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +21 -20
  126. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/scores.html +1 -1
  129. package/.next/standalone/.next/server/app/scores.rsc +18 -18
  130. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +18 -18
  131. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  132. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +16 -16
  133. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  134. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/settings.html +1 -1
  136. package/.next/standalone/.next/server/app/settings.rsc +19 -19
  137. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +19 -19
  138. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  139. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +16 -16
  140. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  141. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/setup.html +1 -1
  143. package/.next/standalone/.next/server/app/setup.rsc +19 -19
  144. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +19 -19
  145. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  146. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +16 -16
  147. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/social.html +1 -1
  150. package/.next/standalone/.next/server/app/social.rsc +18 -18
  151. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +18 -18
  152. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  153. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +16 -16
  154. package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
  155. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__063s0x7._.js → [root-of-the-server]__0r-0t-9._.js} +1 -1
  156. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ra6xyg._.js +15 -0
  157. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__20rwfdw._.js → [root-of-the-server]__0rcpjad._.js} +5 -2
  158. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  159. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +2 -2
  161. package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +2 -2
  162. package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +2 -2
  163. package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +9 -9
  164. package/.next/standalone/.next/server/chunks/{lib_rpc_0jnfp2e.js → lib_rpc_00nndai.js} +1 -1
  165. package/.next/standalone/.next/server/chunks/{lib_rpc_0b17r6v.js → lib_rpc_03ibb-x.js} +1 -1
  166. package/.next/standalone/.next/server/chunks/{lib_rpc_0doq0t-.js → lib_rpc_03ri3ji.js} +1 -1
  167. package/.next/standalone/.next/server/chunks/{lib_rpc_0fd2rlw.js → lib_rpc_078ce48.js} +1 -1
  168. package/.next/standalone/.next/server/chunks/lib_rpc_0a69mgr.js +3 -0
  169. package/.next/standalone/.next/server/chunks/{lib_rpc_005abye.js → lib_rpc_0cej3t8.js} +1 -1
  170. package/.next/standalone/.next/server/chunks/lib_rpc_0cmh4g6.js +3 -0
  171. package/.next/standalone/.next/server/chunks/lib_rpc_0nx2_pc.js +3 -0
  172. package/.next/standalone/.next/server/chunks/lib_rpc_0r79-w1.js +3 -0
  173. package/.next/standalone/.next/server/chunks/lib_rpc_0yx8ynd.js +3 -0
  174. package/.next/standalone/.next/server/chunks/lib_rpc_12p-o9-.js +3 -0
  175. package/.next/standalone/.next/server/chunks/lib_rpc_1466dnb.js +3 -0
  176. package/.next/standalone/.next/server/chunks/{lib_rpc_0is4qoc.js → lib_rpc_1hjjjr4.js} +1 -1
  177. package/.next/standalone/.next/server/chunks/lib_rpc_1sryxv6.js +3 -0
  178. package/.next/standalone/.next/server/chunks/lib_rpc_1trn-x5.js +3 -0
  179. package/.next/standalone/.next/server/chunks/lib_rpc_1ygu_mv.js +3 -0
  180. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0egamyq._.js +3 -0
  181. package/.next/standalone/.next/server/chunks/ssr/_04am_h8._.js +3 -0
  182. package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +1 -1
  184. package/.next/standalone/.next/server/chunks/ssr/_0gds903._.js +3 -0
  185. package/.next/standalone/.next/server/chunks/ssr/_0klqt9z._.js +3 -0
  186. package/.next/standalone/.next/server/chunks/ssr/{_1k9qfsk._.js → _14jak5s._.js} +6 -2
  187. package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +1 -1
  188. package/.next/standalone/.next/server/chunks/ssr/_1cj2yog._.js +3 -0
  189. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +1 -1
  190. package/.next/standalone/.next/server/chunks/ssr/_1hdqw0-._.js +7 -0
  191. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +1 -1
  192. package/.next/standalone/.next/server/chunks/ssr/{_0gy11ar._.js → _1r62six._.js} +6 -2
  193. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_insights_page_actions_0-0tf75.js +3 -0
  194. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +2 -2
  195. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +2 -2
  196. package/.next/standalone/.next/server/chunks/ssr/{_01o3i5y._.js → app_components_settings_SectorPicker_1c-29qw.js} +2 -6
  197. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +3 -0
  198. package/.next/standalone/.next/server/chunks/ssr/app_insights_page_1d_chja.js +3 -0
  199. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +14 -14
  200. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +3 -3
  201. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  202. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +4 -4
  203. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  204. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  205. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  206. package/.next/standalone/.next/server/next-font-manifest.json +4 -0
  207. package/.next/standalone/.next/server/pages/404.html +1 -1
  208. package/.next/standalone/.next/server/pages/500.html +1 -1
  209. package/.next/standalone/.next/server/prefetch-hints.json +14 -0
  210. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  212. package/.next/standalone/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  213. package/.next/standalone/.next/static/chunks/0hggugbh84m4t.js +21 -0
  214. package/.next/{static/chunks/2eo9pqq9gay3r.js → standalone/.next/static/chunks/0ka4prpk3w9wn.js} +4 -4
  215. package/.next/standalone/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  216. package/.next/standalone/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  217. package/.next/{static/chunks/44yn0tcd9dfk3.js → standalone/.next/static/chunks/1bkt_hhjzvbh8.js} +1 -1
  218. package/.next/standalone/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  219. package/.next/{static/chunks/1qbjermbf68xj.js → standalone/.next/static/chunks/1d8yv3k_atka7.js} +1 -1
  220. package/.next/standalone/.next/static/chunks/1ods5h86raivz.js +1 -0
  221. package/.next/standalone/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  222. package/.next/standalone/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  223. package/.next/standalone/.next/static/chunks/{0p3g5tfostsep.js → 2q9i7pcxcnph1.js} +2 -2
  224. package/.next/{static/chunks/2zf4jmz9l3li2.js → standalone/.next/static/chunks/2w-y83mjlpnse.js} +1 -1
  225. package/.next/standalone/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  226. package/.next/standalone/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  227. package/.next/standalone/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  228. package/.next/standalone/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  229. package/.next/{static/chunks/0an_b6zi1r_qq.js → standalone/.next/static/chunks/3y40z6of3r9py.js} +1 -5
  230. package/.next/standalone/.next/static/chunks/403dpflln8ah5.js +1 -0
  231. package/.next/standalone/CHANGELOG.md +83 -0
  232. package/.next/standalone/README.md +40 -14
  233. package/.next/standalone/SECURITY.md +17 -4
  234. package/.next/standalone/app/api/outreach/route.js +13 -73
  235. package/.next/standalone/app/api/scraper/route.js +106 -5
  236. package/.next/standalone/app/components/AppHeader.js +22 -6
  237. package/.next/standalone/app/components/AppTabs.js +4 -0
  238. package/.next/standalone/app/components/AutoConnect.js +286 -0
  239. package/.next/standalone/app/components/ChainView.js +75 -2
  240. package/.next/standalone/app/components/FilterPanel.js +8 -1
  241. package/.next/standalone/app/components/LinkedInLimits.js +38 -13
  242. package/.next/standalone/app/components/OutlinkQuest.js +32 -11
  243. package/.next/standalone/app/components/ScanStatusBar.js +18 -3
  244. package/.next/standalone/app/components/ScanTrail.js +13 -3
  245. package/.next/standalone/app/components/SeparationView.js +6 -22
  246. package/.next/standalone/app/components/Sidebar.js +147 -38
  247. package/.next/standalone/app/components/insights/Boards.js +275 -0
  248. package/.next/standalone/app/components/insights/PeopleView.js +266 -0
  249. package/.next/standalone/app/components/insights/Rail.js +156 -0
  250. package/.next/standalone/app/components/insights/Report.js +382 -0
  251. package/.next/standalone/app/components/insights/parts.js +239 -0
  252. package/.next/standalone/app/components/settings/UsageSection.js +50 -3
  253. package/.next/standalone/app/globals.css +2 -3
  254. package/.next/standalone/app/insights/page.js +220 -0
  255. package/.next/standalone/app/page.js +1 -17
  256. package/.next/standalone/app/queue/page.js +30 -18
  257. package/.next/standalone/app/setup/page.js +71 -13
  258. package/.next/standalone/install.sh +7 -6
  259. package/.next/standalone/lib/auto-connect.js +145 -0
  260. package/.next/standalone/lib/companies.js +1 -1
  261. package/.next/standalone/lib/in-progress.js +46 -0
  262. package/.next/standalone/lib/insights-board.js +613 -0
  263. package/.next/standalone/lib/linkedin-limits.js +36 -11
  264. package/.next/standalone/lib/requests-client.js +10 -0
  265. package/.next/standalone/lib/requests.js +124 -0
  266. package/.next/standalone/lib/scan-state.js +1 -0
  267. package/.next/standalone/lib/scanner-setup.js +82 -3
  268. package/.next/standalone/lib/scraper-client.js +18 -5
  269. package/.next/standalone/lib/settings.js +6 -0
  270. package/.next/standalone/lib/usage.js +5 -0
  271. package/.next/standalone/package-lock.json +2 -2
  272. package/.next/standalone/package.json +1 -1
  273. package/.next/standalone/scripts/build-app.mjs +167 -11
  274. package/.next/standalone/scripts/build-desktop.mjs +3 -2
  275. package/.next/standalone/scripts/ci-mac-signing.sh +128 -0
  276. package/.next/standalone/scripts/entitlements/electron.plist +23 -0
  277. package/.next/standalone/scripts/entitlements/node.plist +27 -0
  278. package/.next/standalone/scripts/mac-sign.mjs +563 -0
  279. package/.next/standalone/scripts/make-dmg-background.mjs +2 -1
  280. package/.next/standalone/scripts/scrape.py +569 -9
  281. package/.next/standalone/scripts/set-signing-secrets.sh +96 -0
  282. package/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  283. package/.next/static/chunks/0hggugbh84m4t.js +21 -0
  284. package/.next/{standalone/.next/static/chunks/2eo9pqq9gay3r.js → static/chunks/0ka4prpk3w9wn.js} +4 -4
  285. package/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  286. package/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  287. package/.next/{standalone/.next/static/chunks/44yn0tcd9dfk3.js → static/chunks/1bkt_hhjzvbh8.js} +1 -1
  288. package/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  289. package/.next/{standalone/.next/static/chunks/1qbjermbf68xj.js → static/chunks/1d8yv3k_atka7.js} +1 -1
  290. package/.next/static/chunks/1ods5h86raivz.js +1 -0
  291. package/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  292. package/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  293. package/.next/static/chunks/{0p3g5tfostsep.js → 2q9i7pcxcnph1.js} +2 -2
  294. package/.next/{standalone/.next/static/chunks/2zf4jmz9l3li2.js → static/chunks/2w-y83mjlpnse.js} +1 -1
  295. package/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  296. package/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  297. package/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  298. package/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  299. package/.next/{standalone/.next/static/chunks/0an_b6zi1r_qq.js → static/chunks/3y40z6of3r9py.js} +1 -5
  300. package/.next/static/chunks/403dpflln8ah5.js +1 -0
  301. package/CHANGELOG.md +83 -0
  302. package/README.md +40 -14
  303. package/SECURITY.md +17 -4
  304. package/lib/auto-connect.js +145 -0
  305. package/lib/companies.js +1 -1
  306. package/lib/in-progress.js +46 -0
  307. package/lib/insights-board.js +613 -0
  308. package/lib/linkedin-limits.js +36 -11
  309. package/lib/requests-client.js +10 -0
  310. package/lib/requests.js +124 -0
  311. package/lib/scan-state.js +1 -0
  312. package/lib/scanner-setup.js +82 -3
  313. package/lib/scraper-client.js +18 -5
  314. package/lib/settings.js +6 -0
  315. package/lib/usage.js +5 -0
  316. package/package.json +1 -1
  317. package/scripts/scrape.py +569 -9
  318. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_4y8z7._.js +0 -8
  319. package/.next/standalone/.next/server/chunks/_02twlca._.js +0 -10
  320. package/.next/standalone/.next/server/chunks/lib_rpc_0nef_n7.js +0 -3
  321. package/.next/standalone/.next/server/chunks/lib_rpc_0plrzra.js +0 -3
  322. package/.next/standalone/.next/server/chunks/lib_rpc_13a4m0c.js +0 -3
  323. package/.next/standalone/.next/server/chunks/lib_rpc_1if17c-.js +0 -3
  324. package/.next/standalone/.next/server/chunks/lib_rpc_1j-zw7v.js +0 -3
  325. package/.next/standalone/.next/server/chunks/lib_rpc_1sngt-q.js +0 -3
  326. package/.next/standalone/.next/server/chunks/lib_rpc_1v2sgme.js +0 -3
  327. package/.next/standalone/.next/server/chunks/lib_rpc_1vh-tgx.js +0 -3
  328. package/.next/standalone/.next/server/chunks/lib_rpc_1zaubz7.js +0 -3
  329. package/.next/standalone/.next/server/chunks/ssr/_02sband._.js +0 -7
  330. package/.next/standalone/.next/server/chunks/ssr/_189g8lg._.js +0 -3
  331. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +0 -3
  332. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +0 -3
  333. package/.next/standalone/.next/static/chunks/0e3g0sil79cus.js +0 -21
  334. package/.next/standalone/.next/static/chunks/0zd0t7e60bn4z.js +0 -1
  335. package/.next/standalone/.next/static/chunks/163b-20vwa06i.js +0 -34
  336. package/.next/standalone/.next/static/chunks/1pa-2v1ajvrko.js +0 -1
  337. package/.next/standalone/.next/static/chunks/23_1z47al92nz.js +0 -57
  338. package/.next/standalone/.next/static/chunks/260bomtr214m8.js +0 -34
  339. package/.next/standalone/.next/static/chunks/2xk2ra4piiuod.js +0 -34
  340. package/.next/standalone/.next/static/chunks/3b0-14cxqsprt.js +0 -1
  341. package/.next/standalone/.next/static/chunks/3jarus1_38s2z.js +0 -1
  342. package/.next/standalone/.next/static/chunks/3ssu341hav_sq.css +0 -3
  343. package/.next/standalone/.next/static/chunks/3v1qd3sqhqn0d.js +0 -1
  344. package/.next/static/chunks/0e3g0sil79cus.js +0 -21
  345. package/.next/static/chunks/0zd0t7e60bn4z.js +0 -1
  346. package/.next/static/chunks/163b-20vwa06i.js +0 -34
  347. package/.next/static/chunks/1pa-2v1ajvrko.js +0 -1
  348. package/.next/static/chunks/23_1z47al92nz.js +0 -57
  349. package/.next/static/chunks/260bomtr214m8.js +0 -34
  350. package/.next/static/chunks/2xk2ra4piiuod.js +0 -34
  351. package/.next/static/chunks/3b0-14cxqsprt.js +0 -1
  352. package/.next/static/chunks/3jarus1_38s2z.js +0 -1
  353. package/.next/static/chunks/3ssu341hav_sq.css +0 -3
  354. package/.next/static/chunks/3v1qd3sqhqn0d.js +0 -1
  355. /package/.next/standalone/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_buildManifest.js +0 -0
  356. /package/.next/standalone/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_clientMiddlewareManifest.js +0 -0
  357. /package/.next/standalone/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_ssgManifest.js +0 -0
  358. /package/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_buildManifest.js +0 -0
  359. /package/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_clientMiddlewareManifest.js +0 -0
  360. /package/.next/static/{ZVpLBK-2vpllv2HxOFs2d → mwCGF3OV3CWV4SjUgg5T8}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,89349,e=>{"use strict";var t=e.i(71645);let n="http://www.w3.org/2000/svg",r={side:{r:2,bezel:26,scale:56},bar:{r:20,bezel:12,scale:22}};e.s(["default",0,function(){return(0,t.useEffect)(()=>{let e=document.documentElement,t=window.matchMedia?.("(prefers-reduced-transparency: reduce)"),a=null,o=new Map,s=0,i=null,l=()=>{if(a)return a;let e=document.createElementNS(n,"svg");return e.setAttribute("width","0"),e.setAttribute("height","0"),e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.pointerEvents="none",a=document.createElementNS(n,"defs"),e.appendChild(a),document.body.appendChild(e),a},u=()=>{let a="frosted"!==e.dataset.buttons||t?.matches?[]:[...document.querySelectorAll("[data-glass-panel]")];for(let[e,t]of o)a.includes(e)||(e.style.removeProperty("--lg-lens"),document.getElementById(t.id)?.remove(),o.delete(e));for(let e of a){let t=Math.round(e.offsetWidth),a=Math.round(e.offsetHeight);if(t<20||a<20)continue;let i=o.get(e);if(i&&i.w===t&&i.h===a)continue;let u=r[e.dataset.glassPanel]||r.side,c=i?.id||`lg-lens-${++s}`;document.getElementById(c)?.remove();let d=document.createElementNS(n,"filter");for(let[e,t]of(d.setAttribute("id",c),Object.entries({x:"0",y:"0",width:"100%",height:"100%","color-interpolation-filters":"sRGB"})))d.setAttribute(e,t);let f=document.createElementNS(n,"feImage");for(let[e,n]of Object.entries({x:"0",y:"0",width:String(t),height:String(a),preserveAspectRatio:"none",result:"map"}))f.setAttribute(e,n);f.setAttribute("href",function(e,t,n,r){let a=document.createElement("canvas");a.width=e,a.height=t;let o=a.getContext("2d"),s=o.createImageData(e,t),i=s.data;for(let a=0;a<t;a++)for(let o=0;o<e;o++){let s=(a*e+o)*4,[l,u]=o<r+n||a<r+n||o>=e-r-n||a>=t-r-n?function(e,t,n,r,a,o){let s=e+.5-n/2,i=t+.5-r/2,l=Math.abs(s)-(n/2-a),u=Math.abs(i)-(r/2-a),c=Math.max(l,0),d=Math.max(u,0),f=Math.hypot(c,d),h=a-(f+Math.min(Math.max(l,u),0)),p=0,g=0;f>0?(p=c/f,g=d/f):l>u?p=1:g=1;let m=Math.max(0,1-h/o),y=m*m;return[(p*=-Math.sign(s)||0)*y,(g*=-Math.sign(i)||0)*y]}(o,a,e,t,n,r):[0,0];i[s]=128+127*l,i[s+1]=128+127*u,i[s+2]=128,i[s+3]=255}return o.putImageData(s,0,0),a.toDataURL()}(t,a,Math.min(u.r,Math.floor(Math.min(t,a)/2)),u.bezel));let h=document.createElementNS(n,"feDisplacementMap");for(let[e,t]of Object.entries({in:"SourceGraphic",in2:"map",scale:String(u.scale),xChannelSelector:"R",yChannelSelector:"G"}))h.setAttribute(e,t);d.append(f,h),l().appendChild(d),e.style.setProperty("--lg-lens",`url(#${c})`),o.set(e,{id:c,w:t,h:a})}},c=()=>{clearTimeout(i),i=setTimeout(u,150)};u();let d=new ResizeObserver(c),f=()=>{d.disconnect(),document.querySelectorAll("[data-glass-panel]").forEach(e=>d.observe(e))};f();let h=new MutationObserver(e=>{e.some(e=>"attributes"===e.type||[...e.addedNodes,...e.removedNodes].some(e=>1===e.nodeType&&(e.matches?.("[data-glass-panel]")||e.querySelector?.("[data-glass-panel]"))))&&(f(),c())});return h.observe(document.body,{childList:!0,subtree:!0}),h.observe(e,{attributes:!0,attributeFilter:["data-buttons"]}),t?.addEventListener?.("change",c),()=>{clearTimeout(i),d.disconnect(),h.disconnect(),t?.removeEventListener?.("change",c)}},[]),null}],89349)},40643,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(18566),a=e.i(22016),o=e.i(40996),s=e.i(68792),i=e.i(99883);let l={full:"Scanning your network",refresh:"Checking for new connections",bridge:"Scanning a circle",resume:"Carrying on with a circle","resume-all":"Carrying on with circles","auto-bridge":"Auto-Bridge","auto-bridge-retry":"Auto-Bridge",rescrape:"Re-scanning a circle",login:"Signing in to LinkedIn",setup:"Setting up the scanner",company:"Scanning a company",photos:"Saving photos",messages:"Reading your messages list","messages-full":"Reading your whole messages history",connect:"Sending a connection request"};e.s(["default",0,function(){let e,u,[c,d]=(0,n.useState)(()=>(0,o.scannerNow)()),[f,h]=(0,n.useState)(!1),[p,g]=(0,n.useState)(!1),[m,y]=(0,n.useState)(!1),b=(0,n.useSyncExternalStore)(s.watchAllDay,s.allDayNow,()=>!1),w=(0,n.useSyncExternalStore)(i.watchActivities,i.activitiesNow,i.noActivities),v=(0,n.useSyncExternalStore)(i.watchNotchTabs,i.notchTabsNow,i.noNotchTabs);(0,n.useEffect)(()=>(0,o.watchScanner)(()=>{let e=(0,o.scannerNow)();d(e),e.running||h(!1)}),[]);let S=(0,r.usePathname)(),[x,A]=(0,n.useState)(null),E=(0,n.useRef)(null),[k,O]=(0,n.useState)(null);(0,n.useEffect)(()=>{let e=null,t=null,n=0,r=()=>{n=0;let r=document.querySelector("header");r!==e&&(t?.disconnect(),t=null,(e=r)&&(t=new ResizeObserver(a)).observe(e));let o=e?Math.round(e.getBoundingClientRect().bottom):null;A(e=>e===o?e:o);let s=document.getElementById("main-tabs")?.getBoundingClientRect(),i=s&&s.width?Math.round(s.left+s.width/2):null;O(e=>e===i?e:i)},a=()=>{n||(n=requestAnimationFrame(r))};a();let o=new MutationObserver(()=>{E.current&&(E.current.style.visibility=document.querySelector("header")?"":"hidden"),a()});return o.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",a),()=>{cancelAnimationFrame(n),t?.disconnect(),o.disconnect(),window.removeEventListener("resize",a)}},[S]);let P=!!c?.running,j=w[w.length-1]||null,T=P||j||b,N=!!(T||v);if((0,n.useEffect)(()=>((0,i.setNotchShown)(N),()=>(0,i.setNotchShown)(!1)),[N]),!T&&!v||null==x)return null;let C=c?.progress,R=C?.kind==="batch"&&C.total?`${C.current||C.done||0} of ${C.total}`:C?.kind==="walk"&&C.total?`${(C.done||0).toLocaleString()} of ${C.total.toLocaleString()}`:C?.kind==="saving"?"saving":null,I=C?.total?Math.min(1,(C.current||C.done||0)/C.total):j?.progress??null,M=c?.budget,_=P?[...c.log||[]].reverse().find(e=>e&&e.trim())?.trim():null,$=p||m,L=P?"#00ff88":j?"warn"===j.tone?"#FFD700":"#3498DB":"#556",D=P?l[c.action]||"Scanning":j?j.label:"Auto scan",F=P?R:j?j.detail:null,z=null!=k?`clamp(170px, ${k}px, calc(100vw - 170px))`:"50%";return(0,t.jsxs)("div",{ref:E,"data-glass-panel":"bar",className:"notch-in",onMouseLeave:()=>g(!1),style:{position:"fixed",left:z,top:x,transform:"translateX(-50%)",zIndex:60,maxWidth:"calc(100vw - 16px)",padding:$&&T?"4px 6px 10px":"4px 6px 5px",borderRadius:"0 0 14px 14px",border:`1px solid ${P?"rgba(0,255,136,0.25)":"rgba(var(--sd-ink, 255, 255, 255), 0.1)"}`,borderTop:"none",background:"var(--sd-surface, rgba(8,10,22,0.96))",color:"var(--sd-fg-2, #cfd8d8)",fontSize:12,opacity:v||P||j||$?1:.55,boxShadow:P?"0 6px 20px rgba(0,0,0,0.35)":"none",transition:"padding 0.18s ease, opacity 0.18s ease"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,overflowX:"auto"},children:[v&&(0,t.jsx)("div",{role:"tablist","aria-label":"View",style:{display:"flex",gap:2},children:v.items.map(e=>{let n=e.key===v.current;return(0,t.jsxs)("button",{role:"tab","aria-selected":n,title:e.title,onClick:()=>v.onPick(e.key),style:{display:"flex",alignItems:"center",gap:6,padding:"5px 11px",borderRadius:8,border:"none",cursor:"pointer",whiteSpace:"nowrap",fontSize:12,fontWeight:600,background:n?"rgba(52,152,219,0.22)":"transparent",color:n?"var(--sd-fg-1, #cfe6f7)":"var(--sd-fg-3, #8b9aa8)"},children:[e.icon&&(0,t.jsx)("span",{"aria-hidden":"true",children:e.icon}),e.label]},e.key)})}),v&&T&&(0,t.jsx)("span",{"aria-hidden":"true",style:{width:1,alignSelf:"stretch",margin:"3px 4px",background:"rgba(var(--sd-ink, 255, 255, 255), 0.12)"}}),T&&(0,t.jsxs)("button",{onMouseEnter:()=>g(!0),onClick:()=>y(e=>!e),"aria-expanded":$,title:$?"Close":"Open",style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"none",color:"inherit",font:"inherit",cursor:"pointer",padding:"5px 8px",whiteSpace:"nowrap"},children:[(0,t.jsx)("span",{className:P?"notch-pulse":void 0,style:{width:7,height:7,borderRadius:"50%",background:L,flexShrink:0}}),(0,t.jsxs)("span",{role:"status","aria-live":"polite",style:{display:"flex",alignItems:"center",gap:8},children:[(0,t.jsx)("b",{style:{color:P||j?"var(--sd-fg-1, #fff)":"var(--sd-fg-2, #b8c4c4)",fontWeight:600},children:D}),F&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:F})]}),!P&&!j&&$&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-3, #8b9a9a)"},children:"ready · press Auto scan beside Scan to start"})]})]}),T&&null!=I&&(0,t.jsx)("div",{style:{height:2,margin:"3px 6px 0",borderRadius:2,background:"rgba(var(--sd-ink, 255, 255, 255), 0.08)",overflow:"hidden"},children:(0,t.jsx)("div",{style:{width:`${Math.round(100*I)}%`,height:"100%",background:P?"#00ff88":"#3498DB",transition:"width 0.4s ease"}})}),$&&P&&(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,margin:"8px 8px 0",flexWrap:"wrap"},children:[c.target?.name&&(0,t.jsx)("span",{children:c.target.name}),M&&(0,t.jsxs)(a.default,{href:"/settings#usage",style:{color:(e=M.searches,(u=M.cap)?e/u>=.9?"#ff6b6b":e/u>=.6?"#FFD700":"#00ff88":"#8b9a9a"),textDecoration:"none"},title:"Searches on your LinkedIn account in the last 24 hours, and your daily budget. Open LinkedIn usage",children:[M.searches,M.cap?` of ${M.cap}`:""," searches in the last 24 hours"]}),_&&(0,t.jsx)("span",{style:{color:"var(--sd-fg-4, #667)",maxWidth:280,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:_,children:_}),(0,t.jsx)(a.default,{href:"/setup",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"Details"}),(0,t.jsx)("button",{onClick:async()=>{h(!0);try{await (0,o.stopScrape)()}catch{h(!1)}},disabled:f,title:"Stops after saving what's been read; Resume on the Scan page carries on from the same page",style:{padding:"3px 10px",borderRadius:8,fontSize:12,cursor:f?"default":"pointer",background:"rgba(255,107,107,0.12)",color:"var(--sd-fg-2, #ff9b9b)",border:"1px solid rgba(255,107,107,0.35)"},children:f?"Stopping…":"Stop"})]}),$&&!P&&j?.detail&&(0,t.jsx)("div",{style:{margin:"6px 8px 0",color:"var(--sd-fg-3, #8b9a9a)"},children:j.detail})]})}])},87915,e=>{"use strict";var t=e.i(71645),n=e.i(40996),r=e.i(64745);let a=!1;e.s(["default",0,function(){return(0,t.useEffect)(()=>{if(r.IS_DEMO||a)return;let e=()=>{};return fetch("/api/social").then(e=>e.json()).then(({social:t})=>{if(!t?.autoSync||a)return;let r=t.liveAt?Date.parse(t.liveAt):0,o=new Date().getHours();Date.now()-r<864e5||o<9||o>=19||(e=(0,n.watchScanner)(()=>{let t=(0,n.scannerNow)();t.known&&!a&&(a=!0,e(),t.running||(0,n.beginScrape)("messages").catch(()=>{}))}))}).catch(()=>{}),()=>e()},[]),null}])},37711,e=>{"use strict";var t=e.i(43476),n=e.i(71645);e.s(["default",0,function(){let[e,r]=(0,n.useState)(null);return((0,n.useEffect)(()=>{let e=!0;return fetch("/api/update").then(e=>e.json()).then(t=>{e&&t?.restartNeeded&&r(t)}).catch(()=>{}),()=>{e=!1}},[]),e)?(0,t.jsxs)("div",{role:"status",style:{position:"fixed",left:0,right:0,bottom:0,zIndex:9999,background:"linear-gradient(90deg, #FFD700, #FF6B35)",color:"#1a1200",padding:"9px 16px",fontSize:13,fontWeight:600,lineHeight:1.5,display:"flex",alignItems:"center",justifyContent:"center",gap:10,flexWrap:"wrap",textAlign:"center"},children:[(0,t.jsxs)("span",{children:["You have newer code on disk (",e.sha,") than this server is running (",e.bootSha,"). Restart it to see the changes: ",(0,t.jsx)("code",{style:{background:"rgba(var(--sd-shade, 0, 0, 0), 0.16)",padding:"1px 6px",borderRadius:4},children:"Ctrl-C"})," in the terminal, then ",(0,t.jsx)("code",{style:{background:"rgba(var(--sd-shade, 0, 0, 0), 0.16)",padding:"1px 6px",borderRadius:4},children:"npm run dev"}),"."]}),(0,t.jsx)("button",{onClick:()=>r(null),style:{border:"none",background:"rgba(var(--sd-shade, 0, 0, 0), 0.18)",color:"#1a1200",borderRadius:6,padding:"3px 10px",fontWeight:700,cursor:"pointer"},children:"Dismiss"})]}):null}])},56456,e=>{"use strict";var t=e.i(71645),n=e.i(58712);e.s(["default",0,function(){return(0,t.useEffect)(()=>{let t=!0;return fetch("/api/settings",{cache:"no-store"}).then(e=>e.ok?e.json():null).then(async r=>{if(!t||!r?.settings)return;(0,n.adoptSavedTheme)(r.settings.theme);let{adoptSavedLayouts:a}=await e.A(11678);t&&a(r.settings.galaxyLayouts)}).catch(()=>{}),()=>{t=!1}},[]),null}])},68792,e=>{"use strict";var t=e.i(40996);let n=(e,t)=>{try{let n=localStorage.getItem(e);return null===n?t:JSON.parse(n)}catch{return t}};e.s(["allDayNow",0,function(){try{return"true"===localStorage.getItem("six-degrees-experimental-auto")}catch{return!1}},"startAutoScan",0,function(){let e=n("six-degrees-bridge-order","newest");return(0,t.beginScrape)("auto-bridge",{experimental:!0,maxBridges:10,order:e,tiers:"score"===e?["S","A"]:[],maxPages:n("six-degrees-bridge-pages-v2",100),deeper:n("six-degrees-bridge-finish",!0)})},"watchAllDay",0,function(e){return window.addEventListener("storage",e),window.addEventListener("six-degrees:experimental",e),()=>{window.removeEventListener("storage",e),window.removeEventListener("six-degrees:experimental",e)}}])},99883,e=>{"use strict";let t=new Set,n=[],r=[],a=new Set,o=null,s=new Set,i=!1;e.s(["activitiesNow",0,()=>n,"noActivities",0,()=>r,"noNotch",0,()=>!1,"noNotchTabs",0,()=>null,"notchShownNow",0,()=>i,"notchTabsNow",0,()=>o,"setNotchShown",0,function(e){!!e!==i&&(i=!!e,s.forEach(e=>e()))},"setNotchTabs",0,function(e){o=e&&Array.isArray(e.items)&&e.items.length>1?e:null,a.forEach(e=>e())},"showActivity",0,function(e){return e?.id?(n=[...n.filter(t=>t.id!==e.id),e],t.forEach(e=>e()),()=>{var r;return r=e.id,void(n.some(e=>e.id===r)&&(n=n.filter(e=>e.id!==r),t.forEach(e=>e())))}):()=>{}},"watchActivities",0,function(e){return t.add(e),()=>t.delete(e)},"watchNotchShown",0,function(e){return s.add(e),()=>s.delete(e)},"watchNotchTabs",0,function(e){return a.add(e),()=>a.delete(e)}])},40996,16999,e=>{"use strict";Symbol.for("six-degrees.scan-state");let t="The scanner works in Google Chrome, and Chrome isn’t on this computer.",n="Install Google Chrome, then come back",r=`${t} ${n}.`,a={install:"Install",setup:"Set up the scanner"},o="x-apple.systempreferences:com.apple.settings.PrivacySecurity.extension?Privacy_AppBundles",s="x-apple.systempreferences:com.apple.preference.security?Privacy_AppBundles";async function i(){let e=await fetch("/api/scraper");if(!e.ok)throw Error("Could not reach the app.");return e.json()}Object.freeze([o,s]),e.s(["CHROME_REFUSAL",0,r,"appManagementStep",0,function(e,t){if(!e)return null;let n=e.checks?.mac;if(!n||null!=n.version&&n.version<13)return!1;if(void 0===t)return null;if(!t||t.appManagement)return!1;let r=n.app?"Six Degrees":"the app you started Six Degrees from (Terminal, for example)",a=n.app?"Allow Six Degrees":"Allow that app";return{title:"Let Six Degrees open Chrome without macOS asking",text:`When the scanner starts Google Chrome, macOS may ask whether ${r} can manage apps. That’s Chrome updating itself while the scanner uses it. ${a} once in App Management and macOS won’t ask again. Scanning works either way.`,href:null!=n.version&&n.version<15?s:o,where:"System Settings → Privacy & Security → App Management"}},"askForField",0,function(e,t){if(!e)return null;let n=e.network;return!!n&&!!n.first&&!n.second&&!n.third&&!e.running&&(void 0===t?null:!!(t&&!t.fieldAsked&&!t.sectorFocus?.sectors?.length))},"setupStep",0,function(e){let r=function(e){let t=e?.checks||{},n=(t,n,r)=>e?.running&&e.action===t?r:n;if(t.dependencies)return"bundled"===t.pythonSource?{done:!0,text:"Ready. The scanner and its Python come with the app, so there is nothing to install.",button:null}:"custom"===t.pythonSource?{done:!0,text:`Ready, on the Python named in SIX_DEGREES_PYTHON (${t.pythonPath}).`,button:null}:{done:!0,text:"Installed.",button:null};let r=t.ownPython&&"bundled"!==t.ownPython.source?`The Python named in SIX_DEGREES_PYTHON didn't work (${t.ownPython.problem}), so the scanner needs setting up another way. `:"";if(t.installFrom)return{done:!1,text:r+("downloaded"===t.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:n("install","Install","Installing…")}};if(t.download){let e=Math.round(t.download.size/1048576);return{done:!1,text:`${r}${function(e){if(!e?.version)return"This computer has no Python the scanner can use.";let[t,n]=String(e.version).split(".").map(Number);return 3===t&&n>=10&&n<=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.`}(t.systemPython)} Set up the scanner downloads its own Python ${t.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:n("setup","Set up the scanner","Setting up…")}}}return{done:!1,text:`${r}No Python 3.10 to 3.14 was found on this machine. Install one from python.org, then reload.`,button:null}}(e),o=function(e,{done:t,button:n}){if(e?.source!=="bundled")return null;let r=/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 r&&o.push("macOS may have blocked it."),!1===e.retry&&o.push("Six Degrees won't try it again until you restart it."),t?o.push("The scanner uses another Python on this computer instead."):n?o.push(`To scan now, use ${a[n.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(" ")}(e?.checks?.ownPython,r);return e?.checks?.chrome!==!1?{...r,note:o,chrome:null}:{...r,done:!1,text:r.done?t:`${r.text} ${t}`,note:o,chrome:{label:n,href:"https://www.google.com/chrome/"}}}],16999);let l="six-degrees-hide-chrome";function u(e,t={},n=function(e="u">typeof localStorage?localStorage:null){try{return!0===JSON.parse(e?.getItem(l)||"false")}catch{return!1}}()){return{action:e,...t,...n?{headless:!0}:{}}}async function c(e,t,n={}){let r=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u(e,{...t?{name:t}:{},...n}))}),a=await r.json().catch(()=>({}));if(!r.ok){let e=Error(a.error||"Could not start the scanner.");throw e.details=a,e}return a}async function d(e){let t=await fetch(`/api/scraper?resume=${encodeURIComponent(e)}`);return t.ok?(await t.json()).resume??null:null}let f=Object.freeze({skips:[],read:[],lists:{}});async function h(){try{let e=await fetch("/api/scraper?reach=1");if(!e.ok)return f;let t=await e.json(),n=t.lists&&"object"==typeof t.lists&&!Array.isArray(t.lists)?t.lists:{};return{skips:Array.isArray(t.skips)?t.skips:[],read:Array.isArray(t.read)?t.read:[],lists:n}}catch{return f}}async function p(e){let t=await fetch(`/api/scraper?person=${encodeURIComponent(e)}`);return t.ok?t.json():{person:null}}async function g(){await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"cancel"})})}let m=Object.freeze({known:!1,running:!1,pending:!1,action:null,target:null,startedAt:null,progress:null,pages:0,found:[],log:[],finished:[]}),y=new Set,b=m,w=JSON.stringify(b),v=null,S=null,x=0,A=!1,E=new Set;function k(e){let t=JSON.stringify(e);if(t!==w)for(let n of(w=t,b=Object.freeze(e),[...y]))n()}async function O(){(!("u">typeof document&&document.hidden)||b.running)&&await function(){if(S&&S.epoch===x)return S.promise;let e=x,t=fetch("/api/scraper?job=1").then(e=>e.ok?e.json():null).then(t=>{e===x&&function(e){if(!e||"object"!=typeof e)return;let t=!0===e.running;t&&null!=e.startedAt&&E.add(e.startedAt);let n=(Array.isArray(e.recent)?e.recent:[]).filter(e=>E.has(e.startedAt)).map(n=>({...n,log:!t&&n.startedAt===e.startedAt&&Array.isArray(e.log)?e.log:[]}));k({known:!0,running:t||A,pending:A&&!t,action:t?e.action??null:A?b.action:null,target:t?e.target??null:A?b.target:null,startedAt:t?e.startedAt??null:null,progress:t?e.progress??null:null,pages:t&&Number(e.pages)||0,found:t&&Array.isArray(e.found)?e.found.map(Number).filter(Number.isFinite):[],budget:t?e.budget??null:null,log:t&&Array.isArray(e.log)?e.log:[],finished:n})}(t)}).catch(()=>{}).finally(()=>{S?.promise===t&&(S=null)});return S={epoch:e,promise:t},t}(),clearTimeout(v),v=y.size?setTimeout(O,b.running?1500:5e3):null}function P(e){return y.add(e),1===y.size&&O(),()=>{y.delete(e),y.size||(clearTimeout(v),v=null)}}async function j(e,{name:t,id:n,onLog:r,...a}={}){let o;x++,A=!0,k({...b,known:!0,running:!0,pending:!0,action:e,target:t||n?{id:n??null,name:t??null}:null,startedAt:null,progress:null,log:[]});try{o=await c(e,t,{...n?{id:n}:{},...a})}catch(e){throw A=!1,x++,b.pending&&k({...b,running:!1,pending:!1,action:null,target:null,log:[]}),O(),e}A=!1,x++;let s=o?.startedAt??null;null!=s&&E.add(s);let i=new Promise(e=>{let t=P(()=>{b.running&&b.startedAt===s&&r?.(b.log);let n=null==s?b.running?null:{exitCode:null,failure:null,log:[]}:b.finished.find(e=>e.startedAt===s);n&&(t(),n.log.length&&r?.(n.log),e(n))});O()});return{startedAt:s,ended:i}}function T(e){return!!e?.target&&["bridge","rescrape","resume"].includes(e.action)}e.s(["HIDE_CHROME_KEY",0,l,"NO_SCAN_NOTES",0,f,"SCANNER_UNKNOWN",0,m,"beginScrape",0,j,"busyReason",0,function(e=b){if(!e?.running)return null;let t=e.target?.name;switch(e.action){case"bridge":case"rescrape":case"resume":return t?`${t}’s circle is being scanned`:"A circle is being scanned";case"company":return t?`${t} is being scanned`:"A company is being scanned";case"auto-bridge":case"auto-bridge-retry":case"resume-all":return"Your bridges are being mapped, one by one";case"full":case"refresh":return"Your own connections are being scanned";case"connect":return t?`A request to ${t} is being sent`:"A connection request is being sent";default:switch(e.action){case"install":return"The scanner's packages are being installed";case"setup":return"The scanner is being set up";case"login":return"The LinkedIn sign-in window is open";case"photos":return"Profile photos are being saved";case"connect":return"A connection request is being sent";default:return"A scan is running"}}},"fillsCircles",0,function(e){return T(e)||["auto-bridge","auto-bridge-retry","resume-all"].includes(e?.action)},"isCircleScan",0,T,"loadScanNotes",0,h,"notReadyMessage",0,function(e){if(!e)return"Could not reach the app.";let t=e.checks||{};return t.scriptsFound?t.dependencies?t.chrome?null:r:t.python||t.download?"The scanner is not set up yet. Open Scan to set it up.":"No Python 3.10 to 3.14 is installed on this machine.":"The scanner files are missing from this install."},"pickedPerson",0,p,"resumePoint",0,d,"runScrape",0,function(e,t={}){return j(e,t).then(e=>e.ended)},"scanRequest",0,u,"scannerNow",0,function(){return b},"scansCircleOf",0,function(e,t){if(!T(e)||!t)return!1;let{id:n,name:r}=e.target;return n&&t.id?n===t.id:!!r&&r===t.name},"scraperStatus",0,i,"stopScrape",0,g,"watchScanner",0,P],40996)},56899,e=>{"use strict";async function t(e,{keepalive:n=!1}={}){try{let t=await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:e}),keepalive:n}),r=await t.json();return{settings:r.settings||null,effects:r.effects||null,error:t.ok?null:r.error||"Could not save."}}catch{return{settings:null,effects:null,error:"Could not reach the app. Reload this page to see what is saved."}}}e.s(["saveSettings",0,t])},40827,e=>{"use strict";e.s(["laterSaver",0,function(e,t=400){let n,r=null,a=t=>{clearTimeout(r),r=null,Promise.resolve(e(n,{now:t})).catch(()=>{})},o=e=>{n=e,r&&clearTimeout(r),r=setTimeout(()=>a(!1),t)};return o.flush=()=>{r&&a(!0)},o},"reconcileSaved",0,function({saved:e,cached:t,isDefault:n,same:r}){return null==e?{use:t,save:!n(t),changed:!1}:{use:e,save:!1,changed:!r(e,t)}}])},58712,e=>{"use strict";var t=e.i(54322),n=e.i(56899),r=e.i(40827);let a="six-degrees-theme",o=Object.freeze({base:"standard",custom:{}}),s=new Set,i=o;function l(){try{return(0,t.cleanTheme)(JSON.parse(localStorage.getItem(a)||"null")||o)}catch{return o}}function u(e){let n=(0,t.resolveTheme)(e);Object.assign(t.TIER_COLORS,n.tiers);let r=(0,t.isLight)(n);if(Object.assign(t.MAP_LOOK,{you:n.you,lines:n.lines,line:n.line,bg:n.bg,dots:n.dots,light:r,text:r?"#11141c":"#ffffff"}),"u"<typeof document)return;let a=(0,t.themeVars)(e),o=document.documentElement;for(let e of[...o.style])!e.startsWith("--sd-")||e in a||o.style.removeProperty(e);for(let[e,t]of Object.entries(a))o.style.setProperty(e,t);Object.assign(o.dataset,(0,t.themeAttrs)(e)),o.style.colorScheme=r?"light":"dark";try{localStorage.setItem("six-degrees-theme-vars",JSON.stringify({vars:a,attrs:(0,t.themeAttrs)(e)}))}catch{}}u(i=l()),window.addEventListener("storage",e=>{e.key===a&&(u(i=l()),s.forEach(e=>e()))});let c=(e,n)=>JSON.stringify((0,t.cleanTheme)(e))===JSON.stringify((0,t.cleanTheme)(n)),d=(0,r.laterSaver)((e,{now:t})=>(0,n.saveSettings)({theme:e},{keepalive:t}));function f(e){i=(0,t.cleanTheme)(e);try{localStorage.setItem(a,JSON.stringify(i))}catch{}u(i),s.forEach(e=>e())}window.addEventListener("pagehide",()=>d.flush()),e.s(["adoptSavedTheme",0,function(e){let{use:a,save:s,changed:l}=(0,r.reconcileSaved)({saved:null==e?null:(0,t.cleanTheme)(e),cached:i,isDefault:e=>c(e,o),same:c});s&&(0,n.saveSettings)({theme:i}),l&&f(a)},"serverTheme",0,()=>o,"setTheme",0,function(e){f(e),d(i)},"themeNow",0,()=>i,"watchTheme",0,function(e){return s.add(e),()=>s.delete(e)}])},22016,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0});var r={default:function(){return y},useLinkStatus:function(){return w}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=e.r(90809),s=e.r(43476),i=o._(e.r(71645)),l=e.r(95057),u=e.r(8372),c=e.r(18581),d=e.r(18967),f=e.r(5550),h=e.r(88540),p=e.r(91949),g=e.r(73668),m=e.r(9396);function y(t){var n;let r,a,o,[y,w]=(0,i.useOptimistic)(p.IDLE_LINK_STATUS),v=(0,i.useRef)(null),{href:S,as:x,children:A,prefetch:E=null,passHref:k,replace:O,shallow:P,scroll:j,onClick:T,onMouseEnter:N,onTouchStart:C,legacyBehavior:R=!1,onNavigate:I,transitionTypes:M,ref:_,unstable_dynamicOnHover:$,...L}=t;r=A,R&&("string"==typeof r||"number"==typeof r)&&(r=(0,s.jsx)("a",{children:r}));let D=i.default.useContext(u.AppRouterContext),F=!1!==E,z=!1===E?"none":!0===E?"full":"auto",B="none"!==z?"auto"===z?m.FetchStrategy.PPR:m.FetchStrategy.Full:m.FetchStrategy.PPR,U="string"==typeof(n=x||S)?n:(0,l.formatUrl)(n);if(R){if(r?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});a=i.default.Children.only(r)}let W=R?a&&"object"==typeof a&&a.ref:_,q,J=i.default.useCallback(e=>(null!==D&&(v.current=(0,p.mountLinkInstance)(e,U,D,B,F,w,q)),()=>{v.current&&((0,p.unmountLinkForCurrentNavigation)(v.current),v.current=null),(0,p.unmountPrefetchableInstance)(e)}),[F,U,D,B,w,q]),K={ref:(0,c.useMergedRef)(J,W),onClick(t){R||"function"!=typeof T||T(t),R&&a.props&&"function"==typeof a.props.onClick&&a.props.onClick(t),!D||t.defaultPrevented||function(t,n,r,a,o,s,l,u="none"){if("u">typeof window){let c,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,g.isLocalURL)(n)){a&&(t.preventDefault(),location.replace(n));return}if(t.preventDefault(),s){let e=!1;if(s({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:f}=e.r(99781);i.default.startTransition(()=>{f(n,a?"replace":"push",!1===o?h.ScrollBehavior.NoScroll:h.ScrollBehavior.Default,r.current,l,u)})}}(t,U,v,O,j,I,M,z)},onMouseEnter(e){R||"function"!=typeof N||N(e),R&&a.props&&"function"==typeof a.props.onMouseEnter&&a.props.onMouseEnter(e),D&&F&&(0,p.onNavigationIntent)(e.currentTarget,!0===$)},onTouchStart:function(e){R||"function"!=typeof C||C(e),R&&a.props&&"function"==typeof a.props.onTouchStart&&a.props.onTouchStart(e),D&&F&&(0,p.onNavigationIntent)(e.currentTarget,!0===$)}};return(0,d.isAbsoluteUrl)(U)?K.href=U:R&&!k&&("a"!==a.type||"href"in a.props)||(K.href=(0,f.addBasePath)(U)),o=R?i.default.cloneElement(a,K):(0,s.jsx)("a",{...L,...K,children:r}),(0,s.jsx)(b.Provider,{value:y,children:o})}let b=(0,i.createContext)(p.IDLE_LINK_STATUS),w=()=>(0,i.useContext)(b);("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},18581,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"useMergedRef",{enumerable:!0,get:function(){return a}});let r=e.r(71645);function a(e,t){let n=(0,r.useRef)(null),a=(0,r.useRef)(null);return(0,r.useCallback)(r=>{if(null===r){let e=n.current;e&&(n.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(n.current=o(e,r)),t&&(a.current=o(t,r))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let n=e(t);return"function"==typeof n?n:()=>e(null)}}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},18967,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0});var r={DecodeError:function(){return y},MiddlewareNotFoundError:function(){return S},MissingStaticPage:function(){return v},NormalizeError:function(){return b},PageNotFoundError:function(){return w},SP:function(){return g},ST:function(){return m},WEB_VITALS:function(){return o},execOnce:function(){return s},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return f},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return h},stringifyError:function(){return x}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function s(e){let t,n=!1;return(...r)=>(n||(n=!0,t=e(...r)),t)}let i=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>{let t=e.charCodeAt(0);return!!(t>=65&&t<=90||t>=97&&t<=122)&&i.test(e)};function u(){let{protocol:e,hostname:t,port:n}=window.location;return`${e}//${t}${n?":"+n:""}`}function c(){let{href:e}=window.location,t=u();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function h(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let n=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(n&&f(n))return r;if(!r)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${r}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return r}let g="u">typeof performance,m=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class y extends Error{}class b extends Error{}class w extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class v extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class S extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function x(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"isLocalURL",{enumerable:!0,get:function(){return o}});let r=e.r(18967),a=e.r(52817);function o(e){if(!(0,r.isAbsoluteUrl)(e))return!0;try{let t=(0,r.getLocationOrigin)(),n=new URL(e,t);return n.origin===t&&(0,a.hasBasePath)(n.pathname)}catch(e){return!1}}},98183,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r={assign:function(){return l},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return i}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});function o(e){let t={};for(let[n,r]of e.entries()){let e=t[n];void 0===e?t[n]=r:Array.isArray(e)?e.push(r):t[n]=[e,r]}return t}function s(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function i(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))if(Array.isArray(r))for(let e of r)t.append(n,s(e));else t.set(n,s(r));return t}function l(e,...t){for(let n of t){for(let t of n.keys())e.delete(t);for(let[t,r]of n.entries())e.append(t,r)}return e}},95057,(e,t,n)=>{"use strict";e.i(47167),Object.defineProperty(n,"__esModule",{value:!0});var r={formatUrl:function(){return i},formatWithValidation:function(){return u},urlObjectKeys:function(){return l}};for(var a in r)Object.defineProperty(n,a,{enumerable:!0,get:r[a]});let o=e.r(90809)._(e.r(98183)),s=/https?|ftp|gopher|file/;function i(e){let{auth:t,hostname:n}=e,r=e.protocol||"",a=e.pathname||"",i=e.hash||"",l=e.query||"",u=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?u=t+e.host:n&&(u=t+(~n.indexOf(":")?`[${n}]`:n),e.port&&(u+=":"+e.port)),l&&"object"==typeof l&&(l=String(o.urlQueryToSearchParams(l)));let c=e.search||l&&`?${l}`||"";return r&&!r.endsWith(":")&&(r+=":"),e.slashes||(!r||s.test(r))&&!1!==u?(u="//"+(u||""),a&&"/"!==a[0]&&(a="/"+a)):u||(u=""),i&&"#"!==i[0]&&(i="#"+i),c&&"?"!==c[0]&&(c="?"+c),a=a.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${r}${u}${a}${c}${i}`}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return i(e)}},18566,(e,t,n)=>{t.exports=e.r(76562)}]);
@@ -0,0 +1,5 @@
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}`,a=e=>({padding:"6px 12px",borderRadius:7,cursor:"pointer",fontSize:12,fontWeight:700,border:e?"none":"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.15)",background:e?"linear-gradient(135deg, #00ff88, #3498DB)":"transparent",color:e?"#000":"var(--sd-fg-2, #cfd8d8)"});function i({onAnswered:e}){var s;let l,c,[d,u]=(0,n.useState)(null),[h,p]=(0,n.useState)(!1),[g,f]=(0,n.useState)(()=>new Set),[y,m]=(0,n.useState)(!1),[b,x]=(0,n.useState)(null);if((0,n.useEffect)(()=>{let e=!1;return(0,r.csvNetworkSource)().then(t=>t||e?null: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 k=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:"var(--sd-fg-2, #cfd8d8)",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #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:"var(--sd-fg-3, #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."}),h&&(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 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:"var(--sd-fg-1, #fff)"},children:e.name})," ",e.was," → ",e.estimated?`estimated (${e.now})`:e.now,(0,t.jsxs)("span",{style:{color:"var(--sd-fg-4, #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:[h?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("button",{disabled:y||!g.size,onClick:()=>k([...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:()=>p(!1),style:a(!1),children:"Back"})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("button",{disabled:y,onClick:()=>k(d.companies.map(e=>e.name)),style:a(!0),children:"Keep all"}),(0,t.jsx)("button",{disabled:y,onClick:()=>p(!0),style:a(!1),children:"Choose…"})]}),(0,t.jsx)("button",{disabled:y,onClick:()=>k([]),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(var(--sd-ink, 255, 255, 255), 0.1)",l={yours:{label:"your score",color:"var(--sd-green, #00ff88)"},known:{label:"known list",color:"var(--sd-blue, #3498DB)"},data:{label:"public data",color:"#1abc9c"},network:{label:"estimated: many of your people",color:"var(--sd-orange, #FF6B35)"},default:{label:"unknown company",color:"var(--sd-fg-4, #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[a,i]=(0,n.useState)(!1),l=async t=>{i(!0);try{await r(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:o?"2px 4px":"4px 6px",borderRadius:6,border:s,background:"var(--sd-card, #11131c)",color:"var(--sd-fg-1, #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:a,setScore:c,reload:h}=d();(0,n.useEffect)(()=>{r&&h().catch(()=>{})},[r,h]);let[p,g]=(0,n.useState)(""),[f,y]=(0,n.useState)("all"),[m,b]=(0,n.useState)(150),[x,k]=(0,n.useState)(null),w=e=>{k(e),setTimeout(()=>k(null),3500)},v=async(t,n)=>{let r=await c(t,n);w(`${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 w("Keeping the new built-in scores.");w(r||`Kept ${t.length} old ${1===t.length?"score":"scores"} as your own \xb7 rescored ${n} people`),await h().catch(()=>{}),e?.()},j=(0,n.useMemo)(()=>{if(!o)return[];let e=p.trim().toLowerCase();return o.filter(t=>(!e||t.name.toLowerCase().includes(e))&&("all"===f||t.source===f))},[o,p,f]);if(a)return(0,t.jsx)("div",{style:{padding:24,color:"#e74c3c"},children:a});if(!o)return(0,t.jsx)("div",{style:{padding:24,color:"var(--sd-fg-4, #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)(i,{onAnswered:S}),(0,t.jsxs)("div",{style:{padding:14,borderRadius:10,border:s,background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",fontSize:12.5,color:"var(--sd-fg-2, #cfd8d8)",lineHeight:1.6},children:[(0,t.jsx)("b",{style:{color:"var(--sd-fg-1, #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:"var(--sd-blue, #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:"var(--sd-fg-3, #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:"var(--sd-blue, #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:p,onChange:e=>g(e.target.value),placeholder:"Find a company",style:{padding:"6px 10px",borderRadius:7,border:s,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #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:()=>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?"var(--sd-fg-1, #cfe6f7)":"var(--sd-fg-3, #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:"var(--sd-fg-3, #8b9a9a)",background:"rgba(var(--sd-ink, 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(var(--sd-ink, 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?"var(--sd-green, #00ff88)":"var(--sd-fg-5, #556)"},children:e.d1}),(0,t.jsx)("span",{style:{textAlign:"right",color:e.senior?"var(--sd-gold, #FFD700)":"var(--sd-fg-5, #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:"var(--sd-green, #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(var(--sd-ink, 255, 255, 255), 0.05)",color:"var(--sd-fg-1, #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:"var(--sd-fg-1, #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:"var(--sd-fg-3, #888)",fontSize:14,lineHeight:1.6},children:"The page loaded, but the app behind it isn’t answering. Quit Six Degrees and open it again."})]}):(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(var(--sd-ink, 255, 255, 255), 0.1)";function r({children:e,style:n}){return(0,t.jsx)("div",{style:{fontSize:13.5,color:"var(--sd-fg-3, #8b9a9a)",lineHeight:1.6,marginTop:4,...n},children:e})}e.s(["Body",0,r,"Btn",0,function({children:e,onClick:r,disabled:o,primary:a,tone:i,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?"var(--sd-fg-4, #667)":"var(--sd-fg-1, #fff)",border:n,background:o?"rgba(var(--sd-ink, 255, 255, 255), 0.05)":"bad"===i?"rgba(255,80,80,0.15)":a?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(var(--sd-ink, 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(var(--sd-ink, 255, 255, 255), 0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:e})},"Section",0,function({id:e,title:o,intro:a,children:i}){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}),a&&(0,t.jsx)(r,{style:{marginTop:0,marginBottom:12},children:a}),i]})},"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(var(--sd-ink, 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(var(--sd-ink, 255, 255, 255), 0.12)"}`},children:["ok"===n&&"✓ ",e]})}])},18306,e=>{"use strict";let t={day:15,week:80},n=t.day,r=t.week,o={sent:{ok:!0,marks:!0,text:"Request sent"},"already-pending":{ok:!0,marks:!0,text:"A request to them was already pending on LinkedIn, so nothing new was sent. It’s marked as sent here."},"email-needed":{text:"LinkedIn wants their email address before it sends this one. Use Connect to add them yourself."},"no-connect":{text:"LinkedIn shows no Connect for them here, only Follow or Message, or a request is already out. Nothing was sent."},"not-sent":{text:"LinkedIn asked something Auto doesn’t answer for you, so it closed that and sent nothing. Use Connect to add them yourself."},unclear:{text:"Auto pressed Send but couldn’t see the request go through, so it isn’t marked as sent. Use Connect to check their profile."},"not-loaded":{text:"Their profile didn’t load, so nothing was sent. Try again in a while."},unavailable:{text:"LinkedIn says their profile isn’t available, so nothing was sent."},"linkedin-limit":{text:"LinkedIn says this account has reached its invitation limit for now. Nothing was sent."},pushback:{text:"LinkedIn pushed back, so scanning and Auto are paused for a day. Settings, LinkedIn usage says when it ends."},stopped:{text:"Stopped before anything was sent."},"not-signed-in":{text:"LinkedIn isn’t signed in in the scanner’s Chrome. Sign in on the Scan page (step 2), then try again."},cooldown:{text:"Scanning is paused after LinkedIn pushed back, and Auto waits with it. Nothing was sent."},"invites-day":{text:`Auto has sent ${n} requests in the last 24 hours, its limit. Nothing was sent.`},"invites-week":{text:`Auto has sent ${r} requests in the last 7 days, its limit. Nothing was sent.`},profiles:{text:"Today’s profile views are used, and Auto opens their profile to send. Nothing was sent."},"not-found":{text:"That person isn’t in your network on this computer, so nothing was sent."}};Object.keys(o),e.s(["AUTO_CONFIRM",0,"Auto sends connection requests from your LinkedIn account, one each time you press it. LinkedIn limits how many invitations an account can send, and may restrict accounts that send many.","AUTO_EXPLAIN",0,"Sends the request for you from the scanner’s Chrome, without a note. Counts toward your LinkedIn usage.","INVITE_CAPS",0,t,"REPORTED_WEEKLY_INVITES",0,100,"connectOutcome",0,function(e){let t=e?.outcome&&Object.hasOwn(o,e.outcome)?e.outcome:null;if(t){let e=o[t];return{result:t,ok:!!e.ok,marks:!!e.marks,text:e.text}}let n=Array.isArray(e?.failure)?e.failure.filter(Boolean).slice(-2).join(" "):"";return{result:null,ok:!1,marks:!1,text:n?`Auto couldn’t finish, and nothing is marked as sent: ${n}`:"Auto couldn’t finish, and nothing is marked as sent."}}])},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|foods?|beverages?|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([...o,a].map(e=>[e.key,e])),s=e=>i[e]||a;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 a}let c=(e,t)=>l(e,t).key,d=e=>n(e).level>=4;e.s(["INDUSTRIES",0,o,"UNKNOWN_INDUSTRY",0,a,"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}),a=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,n=a.get(e);(!n||(t.degree||9)<(n.degree||9))&&a.set(e,t)}let i=new Map;for(let e of a.values()){let t=r(e).find(e=>!e.former)?.company;if(!t)continue;let n=i.get(t);n||(n={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},i.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 i.values())e.industry=s(o.get(e.name));return i},"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),a=r(e);if(!t||!a||t===a)continue;let[i,s]=t<a?[t,a]:[a,t],l=`${i}\u0000${s}`,c=o.get(l);c||(c={a:i,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),a=new Map;for(let t of n)r(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:o,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))}}])},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}},n=e=>t[e]||t.fast;function r(e,t){let r=n(e),o=Math.max(0,Math.floor(Number(t)||0));return o*(6+r.pagePause)+Math.floor(o/10)*r.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 n=Math.floor(t/60),r=t%60;return`about ${n} h${r?` ${r} min`:""}`},"firstCircleSeconds",0,function(e){return r(e,10)},"paceOf",0,n,"paceSeconds",0,r,"searchesPerHour",0,function(e){let t=n(e);return Math.round(3600/(6+t.pagePause+t.chunkCooldown/10))}])},29962,e=>{"use strict";let t={daily:50,monthly:250};e.s(["RESTRICTED_AT",0,373,"RISKY_DAILY",0,100,"SAFE_LIMITS",0,t,"limitNote",0,function({daily:e,monthly:t}={},{restriction:n=!0}={}){if(!(({daily:e,monthly:t}={})=>Number(e)>100||0===t)({daily:e,monthly:t}))return null;let r=n?["A real account was restricted after 373 searches in 24 hours."]:[];return Number(e)>100&&r.push(`${e} a day can use up a free account's month in a day or two.`),0===t&&r.push("With no monthly cap, nothing but the daily budget stops a long run."),r.join(" ")},"limitQuestion",0,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 ${t.daily} a day.
2
+
3
+ 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.
4
+
5
+ Turn the monthly cap off anyway?`:null}])},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,a]])=>[e,Object.freeze({key:e,label:r,color:n.get(o)||t.UNKNOWN_INDUSTRY.color,group:o,kind:a})])]);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()}])}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,46090,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(74080),o=e.i(30215),i=e.i(40996),s=e.i(86106),a=e.i(18306);let l="linear-gradient(135deg, #FFD700, #FF6B35)",u=!1;async function d(){if(u)return!0;try{let e=await fetch("/api/settings",{cache:"no-store"}),t=await e.json();u=!!t?.settings?.autoConnectAccepted}catch{u=!1}return u}async function c(){let e=await fetch("/api/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({settings:{autoConnectAccepted:new Date().toISOString()}})});if(!e.ok)throw Error((await e.json().catch(()=>({}))).error||"Your answer couldn’t be saved.");u=!0}function f({onSend:e,onCancel:o}){let i=(0,n.useRef)(null);return(0,n.useEffect)(()=>{i.current?.focus();let e=e=>{"Escape"===e.key&&o()};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[o]),(0,r.createPortal)((0,t.jsx)("div",{role:"dialog","aria-modal":"true","aria-label":"Auto sends connection requests",onClick:o,style:{position:"fixed",inset:0,zIndex:400,background:"rgba(var(--sd-shade, 0, 0, 0), 0.72)",display:"flex",alignItems:"center",justifyContent:"center",padding:16},children:(0,t.jsxs)("div",{"data-auto-ask":!0,onClick:e=>e.stopPropagation(),style:{width:"min(420px, 100%)",boxSizing:"border-box",borderRadius:14,padding:"20px 20px 16px",background:"var(--sd-surface, #12111c)",border:"1px solid rgba(255,215,0,0.28)",boxShadow:"0 18px 60px rgba(0,0,0,0.5)",textAlign:"left"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:10},children:[(0,t.jsx)("span",{style:{padding:"3px 9px",borderRadius:6,background:l,color:"#000",fontWeight:800,fontSize:12},children:"Auto"}),(0,t.jsx)("span",{style:{fontSize:15,fontWeight:750,color:"var(--sd-fg-1, #fff)"},children:"Before the first one"})]}),(0,t.jsx)("p",{style:{margin:0,fontSize:13.5,lineHeight:1.6,color:"var(--sd-fg-2, #d6dbe4)"},children:a.AUTO_CONFIRM}),(0,t.jsxs)("p",{style:{margin:"10px 0 0",fontSize:12,lineHeight:1.55,color:"var(--sd-fg-3, #8b9a9a)"},children:["It never adds a note, and stops at ",a.INVITE_CAPS.day," in any 24 hours and ",a.INVITE_CAPS.week," in any 7 days. This is asked once."]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:16},children:[(0,t.jsx)("button",{type:"button",onClick:o,style:{padding:"9px 16px",borderRadius:8,fontSize:13,fontWeight:650,cursor:"pointer",background:"transparent",color:"var(--sd-fg-2, #ccc)",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.18)"},children:"Cancel"}),(0,t.jsx)("button",{ref:i,type:"button",onClick:e,style:{padding:"9px 18px",borderRadius:8,fontSize:13,fontWeight:800,cursor:"pointer",background:l,color:"#000",border:"none"},children:"Send it"})]})]})}),document.body)}let p={card:{padding:"10px 18px",fontSize:13,radius:8,minWidth:104},quest:{padding:"7px 14px",fontSize:12.5,radius:8,minWidth:92},row:{padding:"4px 9px",fontSize:9.5,radius:4,minWidth:0},table:{padding:"6px 11px",fontSize:12,radius:7,minWidth:0}};function m({auto:e,size:n,label:r="Auto"}){let o=p[n]||p.card,i=e.sending||!!e.busy||!!e.result?.marks,s=e.busy?`${e.busy}. Auto waits for it to finish.`:a.AUTO_EXPLAIN;return(0,t.jsx)("button",{type:"button","data-auto-connect":!0,onClick:t=>{t.stopPropagation(),e.press()},disabled:i,title:s,"aria-label":e.sending?"Sending the request":`${r}: ${a.AUTO_EXPLAIN}`,style:{padding:o.padding,borderRadius:o.radius,fontSize:o.fontSize,fontWeight:800,border:"none",minWidth:o.minWidth,background:l,color:"#000",cursor:i?"not-allowed":"pointer",opacity:e.busy?.45:1,whiteSpace:"nowrap",flexShrink:0,boxShadow:i?"none":"0 2px 12px rgba(255,140,50,0.28)"},children:e.sending?"Sending…":r})}let g=e=>e.ok?"var(--sd-green, #00ff88)":"var(--sd-coral, #ff8a7a)";function h({person:e,size:r,connect:l,onSent:p,style:y}){let b=function(e,t){let r=(0,o.default)(),[l,f]=(0,n.useState)(!1),[p,m]=(0,n.useState)(!1),[g,h]=(0,n.useState)(null),y=(0,n.useRef)(new Set),b=(0,n.useRef)(null),w=r.running&&"connect"===r.action&&!!e?.id&&r.target?.id===e.id,x=!r.running||w||p?null:(0,i.busyReason)(r),S=n=>{h(n),n.marks&&setTimeout(()=>{(0,s.sawRequested)(e),t?.(e)},2500)},k=(r.finished||[]).find(t=>"connect"===t.action&&t.target?.id===e?.id);async function v(){f(!1),m(!0),h(null);try{let{startedAt:t,ended:n}=await (0,i.beginScrape)("connect",{id:e.id,name:e.name});y.current.add(t),b.current=t,S((0,a.connectOutcome)(await n))}catch(e){e.details?.needsAutoAcceptance?(u=!1,f(!0)):h({ok:!1,text:e.message})}finally{m(!1)}}return(0,n.useEffect)(()=>{!k||y.current.has(k.startedAt)||b.current===k.startedAt||(b.current=k.startedAt,S((0,a.connectOutcome)(k)))},[k?.startedAt]),{press:async function(){p||w||x||(h(null),await d()?v():f(!0))},confirm:async function(){try{await c(),v()}catch(e){f(!1),h({ok:!1,text:e.message})}},cancel:()=>f(!1),dismiss:()=>h(null),asking:l,sending:p||w,busy:x,result:g}}(e,p),w=b.asking&&(0,t.jsx)(f,{onSend:b.confirm,onCancel:b.cancel});if("row"===r||"table"===r)return(0,t.jsxs)("span",{style:{position:"relative",display:"inline-flex",gap:4,alignItems:"center",flexShrink:0,...y},onClick:e=>e.stopPropagation(),children:[(0,t.jsx)(m,{auto:b,size:r}),l(!0),b.result&&(0,t.jsxs)("span",{role:"status",style:{position:"absolute",top:"calc(100% + 4px)",right:0,zIndex:20,width:230,boxSizing:"border-box",padding:"7px 24px 7px 9px",borderRadius:7,fontSize:11,lineHeight:1.45,fontWeight:600,textAlign:"left",color:g(b.result),background:"var(--sd-surface, #14131d)",border:`1px solid ${b.result.ok?"rgba(0,255,136,0.35)":"rgba(255,138,122,0.4)"}`,boxShadow:"0 8px 24px rgba(0,0,0,0.4)"},children:[b.result.text,(0,t.jsx)("button",{type:"button","aria-label":"Close",onClick:b.dismiss,style:{position:"absolute",top:3,right:4,background:"none",border:"none",cursor:"pointer",color:"var(--sd-fg-3, #888)",fontSize:12,lineHeight:1},children:"×"})]}),w]});let x="card"===r;return(0,t.jsxs)("div",{style:y,children:[(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"stretch",flexWrap:"wrap"},children:[(0,t.jsx)(m,{auto:b,size:r}),l(!0)]}),x&&(0,t.jsx)("div",{style:{fontSize:11,lineHeight:1.5,color:"var(--sd-fg-3, #8b9a9a)",marginTop:8},children:b.busy?`${b.busy}. Auto waits for it to finish.`:a.AUTO_EXPLAIN}),b.result&&(0,t.jsx)("div",{role:"status",style:{fontSize:12,lineHeight:1.5,fontWeight:650,marginTop:8,color:g(b.result)},children:b.result.text}),w]})}e.s(["default",0,function({person:e,canAuto:n=!0,size:r="card",connect:o,onSent:i,style:s}){return n&&e?.id&&e?.profile_url?(0,t.jsx)(h,{person:e,size:r,connect:o,onSent:i,style:s},e.id):o(!1)},"secondaryLook",0,function(e="card",{color:t="var(--sd-gold, #FFD700)",line:n="rgba(255,215,0,0.5)"}={}){let r=p[e]||p.card;return{padding:r.padding,borderRadius:r.radius,fontSize:r.fontSize,fontWeight:700,background:"transparent",color:t,border:`1px solid ${n}`,textDecoration:"none",cursor:"pointer",whiteSpace:"nowrap",boxSizing:"border-box",display:"inline-flex",alignItems:"center",justifyContent:"center"}}])},28867,e=>{"use strict";var t=e.i(71645),n=e.i(86106);e.s(["default",0,function(){return(0,t.useSyncExternalStore)(n.watchRequests,n.requestsNow,()=>n.REQUESTS_UNKNOWN)}])},18306,e=>{"use strict";let t={day:15,week:80},n=t.day,r=t.week,o={sent:{ok:!0,marks:!0,text:"Request sent"},"already-pending":{ok:!0,marks:!0,text:"A request to them was already pending on LinkedIn, so nothing new was sent. It’s marked as sent here."},"email-needed":{text:"LinkedIn wants their email address before it sends this one. Use Connect to add them yourself."},"no-connect":{text:"LinkedIn shows no Connect for them here, only Follow or Message, or a request is already out. Nothing was sent."},"not-sent":{text:"LinkedIn asked something Auto doesn’t answer for you, so it closed that and sent nothing. Use Connect to add them yourself."},unclear:{text:"Auto pressed Send but couldn’t see the request go through, so it isn’t marked as sent. Use Connect to check their profile."},"not-loaded":{text:"Their profile didn’t load, so nothing was sent. Try again in a while."},unavailable:{text:"LinkedIn says their profile isn’t available, so nothing was sent."},"linkedin-limit":{text:"LinkedIn says this account has reached its invitation limit for now. Nothing was sent."},pushback:{text:"LinkedIn pushed back, so scanning and Auto are paused for a day. Settings, LinkedIn usage says when it ends."},stopped:{text:"Stopped before anything was sent."},"not-signed-in":{text:"LinkedIn isn’t signed in in the scanner’s Chrome. Sign in on the Scan page (step 2), then try again."},cooldown:{text:"Scanning is paused after LinkedIn pushed back, and Auto waits with it. Nothing was sent."},"invites-day":{text:`Auto has sent ${n} requests in the last 24 hours, its limit. Nothing was sent.`},"invites-week":{text:`Auto has sent ${r} requests in the last 7 days, its limit. Nothing was sent.`},profiles:{text:"Today’s profile views are used, and Auto opens their profile to send. Nothing was sent."},"not-found":{text:"That person isn’t in your network on this computer, so nothing was sent."}};Object.keys(o),e.s(["AUTO_CONFIRM",0,"Auto sends connection requests from your LinkedIn account, one each time you press it. LinkedIn limits how many invitations an account can send, and may restrict accounts that send many.","AUTO_EXPLAIN",0,"Sends the request for you from the scanner’s Chrome, without a note. Counts toward your LinkedIn usage.","INVITE_CAPS",0,t,"REPORTED_WEEKLY_INVITES",0,100,"connectOutcome",0,function(e){let t=e?.outcome&&Object.hasOwn(o,e.outcome)?e.outcome:null;if(t){let e=o[t];return{result:t,ok:!!e.ok,marks:!!e.marks,text:e.text}}let n=Array.isArray(e?.failure)?e.failure.filter(Boolean).slice(-2).join(" "):"";return{result:null,ok:!1,marks:!1,text:n?`Auto couldn’t finish, and nothing is marked as sent: ${n}`:"Auto couldn’t finish, and nothing is marked as sent."}}])},39160,84278,e=>{"use strict";var t=e.i(7214),n=e.i(7837);function r(e){let t=String(e||"").trim();if(!t)return null;let n=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(?:\s*UTC)?$/);if(n)return Date.UTC(+n[1],n[2]-1,+n[3],+n[4],+n[5],+(n[6]||0));if(n=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2,4}),?\s+(\d{1,2}):(\d{2})\s*(AM|PM)?$/i)){let e=100>+n[3]?2e3+ +n[3]:+n[3],t=n[4]%12;return"PM"===(n[6]||"").toUpperCase()&&(t+=12),Date.UTC(e,n[1]-1,+n[2],t,+n[5])}if(n=t.match(/^([A-Za-z]{3,9})\s+(\d{4})$/)){let e=Date.parse(`1 ${n[1]} ${n[2]} UTC`);return Number.isNaN(e)?null:e}let r=Date.parse(/\d{4}$/.test(t)?`${t} UTC`:t);return Number.isNaN(r)?null:r}let o=e=>(0,t.keyFor)({profile_url:e});function i(e=[]){let t=new Map;for(let n of e){let e=o(n["sender profile url"]),r=n["conversation id"];r&&e&&(t.has(e)||t.set(e,new Set),t.get(e).add(r))}let n=null;for(let[e,r]of t)(!n||r.size>t.get(n).size)&&(n=e);return n}let s=e=>{let t=f(e);return t?`name:${t}`:null},a=/sponsored/i,l=/in\s?mail/i,u=/linkedin\.com\/(company|showcase|school)\//i,d=e=>/^(yes|true|1)$/i.test(String(e||"").trim());function c(e,t){if(!e||!e.total)return"never";let n=t-e.last;return n<=2592e6||e.recent>=3?"warm":n<=31536e6?"cool":"dormant"}let f=e=>String(e||"").split(",")[0].normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9 ]+/g," ").replace(/\s+/g," ").trim();e.s(["buildConversations",0,function(e=[],{keepText:t=!1}={}){let n=i(e),c=new Map;for(let t of e)n&&o(t["sender profile url"])===n&&t.from&&c.set(t.from,(c.get(t.from)||0)+1);let p=f([...c].sort((e,t)=>t[1]-e[1])[0]?.[0]||""),m=e=>!!e&&(e===n||!!p&&e===`name:${p}`),g={},h=new Map,y=0,b=0;for(let n of e){let e=n["conversation id"],i=r(n.date);if(!e||null==i){b+=1;continue}if(d(n["is message draft"])){y+=1;continue}let c=o(n["sender profile url"])||s(n.from);c&&n.from&&!g[c]&&(g[c]=String(n.from).trim());let f=String(n["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),p=String(n.to||"").split(",").map(e=>e.trim()).filter(Boolean),w=f.length?f:p.map(s).filter(Boolean);f.length&&f.length===p.length&&f.forEach((e,t)=>{g[e]||(g[e]=p[t])}),f.length||p.forEach(e=>{let t=s(e);t&&!g[t]&&(g[t]=e)}),h.has(e)||h.set(e,{id:e,title:"",everyone:new Set,messages:[],kind:null,folder:"",newest:-1/0});let x=h.get(e);c&&x.everyone.add(c),w.forEach(e=>x.everyone.add(e)),x.kind=x.kind||function(e){let t=String(e.folder||""),n=String(e["conversation title"]||"");return a.test(t)||a.test(n)||u.test(String(e["sender profile url"]||""))?"sponsored":l.test(t)||l.test(n)?"inmail":null}(n),i>=x.newest&&(x.newest=i,x.folder=String(n.folder||"").trim().toLowerCase().slice(0,30));let S={t:i,fromMe:m(c)};t&&(S.text=[n.subject,n.content].map(e=>String(e||"").trim()).filter(Boolean).join("\n\n"),!x.title&&n["conversation title"]&&(x.title=String(n["conversation title"]).trim())),x.messages.push(S)}let w=[];for(let e of h.values()){let n=[...e.everyone].filter(e=>e&&!m(e)).sort();e.messages.sort((e,t)=>e.t-t.t);let r={id:e.id,people:n,group:n.length>1,kind:e.kind,folder:e.folder,messages:e.messages};t&&(r.title=e.title),w.push(r)}for(let e of Object.keys(g))m(e)&&delete g[e];return{self:n,conversations:w,names:g,drafts:y,skipped:b}},"buildInvitations",0,function(e=[],{keepText:t=!1}={}){let n=[];for(let i of e){let e=String(i.direction||"").toUpperCase();if("INCOMING"!==e&&"OUTGOING"!==e)continue;let a="INCOMING"===e?"in":"out",l=String(("in"===a?i.from:i.to)||"").trim(),u=o("in"===a?i.inviterprofileurl:i.inviteeprofileurl),d=(u&&/\/in\//.test(u)?u:null)||s(l);if(!d)continue;let c=r(i["sent at"]),f={id:`${a}|${d}|${c??""}`,dir:a,key:d,name:l.slice(0,120),t:c};t&&String(i.message||"").trim()&&(f.note=String(i.message).trim().slice(0,2e3)),n.push(f)}return n.sort((e,t)=>(t.t||0)-(e.t||0))},"careerChapters",0,function(e=[],t=[],n=Date.now()){let i=e.map(e=>({company:e["company name"]||"",title:e.title||"",from:r(e["started on"]),to:r(e["finished on"])})).filter(e=>e.company&&null!=e.from).sort((e,t)=>e.from-t.from),s=t.map(e=>({url:o(e.url||e.profile_url),t:r(e["connected on"]||e.connected_on)})).filter(e=>null!=e.t);return i.map(e=>{let t=e.to??n,r=s.filter(n=>n.t>=e.from&&n.t<t);return{...e,to:e.to,made:r.length,people:r.map(e=>e.url)}})},"conversationSummary",0,function(e){let t=e.messages[e.messages.length-1];return{id:e.id,people:e.people,group:e.group,kind:e.kind||null,folder:e.folder||"",last:t?t.t:null,lastFromThem:t?!t.fromMe:null,count:e.messages.length,mine:e.messages.filter(e=>e.fromMe).length}},"invitationSplit",0,function(e=[]){let t=0,n=0;for(let r of e){let e=String(r.direction||"").toUpperCase();"INCOMING"===e?t+=1:"OUTGOING"===e&&(n+=1)}return{incoming:t,outgoing:n,total:t+n}},"messageStats",0,function(e=[]){let t=i(e),n=new Map;for(let t of e){let e=o(t["sender profile url"]),i=t["conversation id"];if(!i||!e)continue;let s=String(t["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),a=r(t.date);if(null==a)continue;n.has(i)||n.set(i,{people:new Set,msgs:[]});let l=n.get(i);l.people.add(e),s.forEach(e=>l.people.add(e)),l.msgs.push({from:e,t:a})}let s=0,a=new Map;for(let e of n.values()){let n=[...e.people].filter(e=>e!==t);if(1!==n.length||!e.people.has(t))continue;let r=n[0],o=a.get(r)||{last:0,lastFromThem:!1,total:0,times:[]};for(let n of e.msgs)o.total+=1,o.times.push(n.t),n.t>=o.last&&(o.last=n.t,o.lastFromThem=n.from!==t),n.t>s&&(s=n.t);a.set(r,o)}for(let e of a.values())e.recent=e.times.filter(e=>e>s-7776e6).length,delete e.times;return{self:t,asOf:s||null,people:a}},"nameKey",0,f,"postingEffect",0,function(e=[],t=[]){let n=e.map(e=>({t:r(e.date),link:e.sharelink||e["share link"]||""})).filter(e=>null!=e.t).sort((e,t)=>e.t-t.t),o=t.map(e=>r(e["connected on"]||e.connected_on)).filter(e=>null!=e).sort((e,t)=>e-t);if(!o.length)return{posts:[],usualWeek:0,afterPosts:0};let i=Math.max(6048e5,o[o.length-1]-o[0]),s=o.length/i*6048e5,a=n.map(e=>({...e,week:o.filter(t=>t>=e.t&&t<e.t+6048e5).length})),l=a.length?a.reduce((e,t)=>e+t.week,0)/a.length:0;return{posts:a,usualWeek:s,afterPosts:l}},"readTable",0,function(e,t){let r=(0,n.parseCsv)(String(e||"")),o=r.findIndex(e=>e.some(e=>e.trim().toLowerCase()===t.toLowerCase()));if(o<0)return[];let i=r[o].map(e=>e.trim().toLowerCase());return r.slice(o+1).filter(e=>e.some(e=>e.trim())).map(e=>Object.fromEntries(i.map((t,n)=>[t,(e[n]??"").trim()])))},"warmthOf",0,c],84278);let p=["gravity","rings","push","pull","distance","orbit","dotSize","lines","sizeBy","names","branch","colourBy","speed","loop"],m=e=>"boolean"==typeof e||"number"==typeof e&&Number.isFinite(e)&&1e3>=Math.abs(e)||"string"==typeof e&&/^[a-z]{1,20}$/i.test(e);function g(e){if(!Array.isArray(e))return[];let t=new Map;for(let n of e){let e="string"==typeof n?.name?n.name.trim().slice(0,40):"";if(!e||!n.settings||"object"!=typeof n.settings||Array.isArray(n.settings))continue;let r={};for(let e of p)Object.hasOwn(n.settings,e)&&m(n.settings[e])&&(r[e]=n.settings[e]);t.set(e,{name:e,settings:r})}return[...t.values()].slice(0,50)}var h=e.i(56899),y=e.i(40827);let b="six-degrees-galaxy-lab",w="six-degrees-galaxy-layouts",x=Object.freeze({on:!0,gravity:0,rings:1,push:15,pull:1,distance:1,dotSize:1,lines:1,sizeBy:"power",orbit:0,names:"key",branch:!1,colourBy:"tier",speed:15,loop:!1,labels:!0,v:2}),S=["gravity","rings","push","pull","distance"],k=Object.freeze({gravity:.8,rings:0,push:6,pull:6,distance:.15,sizeBy:"links"}),v=Object.freeze({rings:{lines:1},orbit:{lines:1},clusters:{lines:3}}),C=Object.freeze({gravity:0,rings:3,push:6,pull:4,distance:.22,sizeBy:"power"}),O=new Set,A=null;function N(){return A||(A=function(){try{let e=JSON.parse(localStorage.getItem(b)||"null");if(!e||"object"!=typeof e)return x;return{...x,...e,...e.v===x.v?{}:{branch:!1},v:x.v,on:!0}}catch{return x}}()),A}function j(e){A=null===e?{...x,labels:N().labels}:{...N(),...e,on:!0};try{localStorage.setItem(b,JSON.stringify(A))}catch{}O.forEach(e=>e())}let I=null,F=new Set;function T(){if(!I){try{I=JSON.parse(localStorage.getItem(w)||"[]")}catch{I=[]}Array.isArray(I)||(I=[])}return I}function E(e,{save:t=!0}={}){I=e;try{localStorage.setItem(w,JSON.stringify(e))}catch{}F.forEach(e=>e()),t&&(0,h.saveSettings)({galaxyLayouts:e})}let L=new Set,z={at:null,playing:!1,min:null,max:null,of:0,find:"",fly:0,found:0,fit:0,social:void 0},M=null;function R(e){let t={...z,...e};Object.keys(e).every(e=>Object.is(t[e],z[e]))||(z=t,L.forEach(e=>e()))}function U(){cancelAnimationFrame(M),M=null,R({playing:!1})}let _=null;function B(e){let n=new Map;for(let[r,o]of Object.entries(e?.people||{}))n.set((0,t.keyFor)({profile_url:r}),{...o});for(let[r,o]of Object.entries(e?.live||{})){let e=(0,t.keyFor)({profile_url:r}),i=n.get(e)||{total:0,recent:0};o.last&&(!i.last||o.last>i.last)&&(i.last=o.last,"boolean"==typeof o.lastFromThem&&(i.lastFromThem=o.lastFromThem)),i.unread=o.unread,i.total=Math.max(i.total||0,1),n.set(e,i)}let r=Math.max(e?.asOf||0,e?.liveAt&&Date.parse(e.liveAt)||0);for(let e of n.values())(e.last||0)>r&&(r=e.last);return{merged:n,asOf:r,chapters:e?.chapters||[],posts:e?.posts?.posts||[]}}let $={1:"#4FC3F7",2:"#BA68C8",3:"#FFB74D"},q=["#FF6B6B","#4ECDC4","#FFD93D","#A29BFE","#00B894","#FD79A8","#74B9FF","#E17055"],D={warm:"#FF7043",cool:"#4FC3F7",dormant:"#8D6E63",never:"#546E7A"},W="#4a5568",P=["#2b1b6b","#6a1b9a","#c2185b","#f4511e","#ffb300","#fff3b0"];function H(e){let t=Math.max(0,Math.min(1,Number(e)||0))*(P.length-1),n=Math.min(P.length-2,Math.floor(t)),r=t-n,o=P[n],i=P[n+1];return`#${[1,3,5].map(e=>Math.round(parseInt(o.slice(e,e+2),16)*(1-r)+parseInt(i.slice(e,e+2),16)*r).toString(16).padStart(2,"0")).join("")}`}function J(e=[],t=()=>0){let n=[...new Set(e.map(t))].sort((e,t)=>e-t),r=new Map(n.map((e,t)=>[e,n.length>1?t/(n.length-1):1]));return e=>r.get(t(e))??0}let K=e=>String(e||"").trim().toLowerCase();e.s(["CLUSTERS",0,k,"FORCE_KEYS",0,S,"LAB_DEFAULTS",0,x,"LAYOUT_LOOKS",0,v,"ORBIT",0,C,"adoptSavedLayouts",0,function(e){let t=g(T()),{use:n,save:r,changed:o}=(0,y.reconcileSaved)({saved:null==e?null:g(e),cached:t,isDefault:e=>0===e.length,same:(e,t)=>JSON.stringify(e)===JSON.stringify(t)});r&&(0,h.saveSettings)({galaxyLayouts:t}),o&&E(n,{save:!1})},"applyLayout",0,function(e){let t=T().find(t=>t.name===e);t&&j(Object.fromEntries(p.filter(e=>e in t.settings).map(e=>[e,t.settings[e]])))},"bornTimes",0,function(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,o=(e,i=0)=>{if(r.has(e.id))return r.get(e.id);let s=-1/0,a=t.get(e.id);if(1===e.degree||null==a||i>6){let t=e.connected_date?Date.parse(e.connected_date):NaN;s=Number.isNaN(t)?-1/0:t}return null!=a&&n.has(a)&&i<=6&&(s=Math.max(s,o(n.get(a),i+1))),r.set(e.id,s),s};return e.map(e=>o(e))},"chapterAt",0,function(e,t){let n=null;for(let r of e?.chapters||[])Number.isFinite(r.from)&&r.from<=t&&(!n||r.from>n.from)&&(n=r);return n&&(!Number.isFinite(n.to)||n.to>t)?n:null},"clockNow",0,()=>z,"colourScheme",0,function(e,n,r,o){if("degree"===e)return{of:e=>$[Math.min(e.degree||1,3)],legend:[["1st",$[1]],["2nd",$[2]],["3rd+",$[3]]]};if("company"===e){let e=new Map;for(let t of n){let n=K(t.company);if(!n)continue;let r=e.get(n)||{name:String(t.company).trim(),n:0};r.n+=1,e.set(n,r)}let t=[...e.entries()].filter(([,e])=>e.n>1).sort((e,t)=>t[1].n-e[1].n).slice(0,q.length),r=new Map(t.map(([e],t)=>[e,q[t]]));return{of:e=>r.get(K(e.company))||W,legend:[...t.map(([,e],t)=>[e.name,q[t]]),["Other",W]]}}if("heat"===e){let e=function(e=[]){return J(e,t.score)}(n);return{of:t=>H(e(t)),heat:e,legend:[["Cold",H(.1)],["Warm",H(.45)],["Hot",H(.75)],["Hottest",H(1)]]}}return"warmth"===e&&o?{of:e=>1===(e.degree||1)?D[c(o.merged.get((0,t.keyFor)(e)),o.asOf)]:"#2d3748",legend:[["Warm",D.warm],["Cool",D.cool],["Dormant",D.dormant],["Never messaged",D.never]]}:{of:e=>r[e.tier]||"#666",legend:Object.entries(r)}},"effectiveLab",0,e=>e.on?e:e.labels===x.labels?x:{...x,labels:e.labels},"findMatches",0,function(e,t){let n=String(t||"").trim().toLowerCase();if(n.length<2)return null;let r=new Set;for(let t of e)[t.name,t.company,t.role,t.headline].some(e=>e&&String(e).toLowerCase().includes(n))&&r.add(t.id);return r},"forgetLayout",0,function(e){E(T().filter(t=>t.name!==e))},"heatBy",0,J,"heatColour",0,H,"labNow",0,N,"layoutOf",0,function(e){let t=t=>Object.entries(t).every(([t,n])=>e[t]===n);return S.every(t=>e[t]===x[t])?"rings":t(k)?"clusters":t(C)?"orbit":null},"layoutsNow",0,T,"loadSocial",0,function(){return _||(_=fetch("/api/social").then(e=>e.ok?e.json():{}).then(e=>{R({social:e.social?B(e.social):null})}).catch(()=>R({social:null}))),_},"mergeSocial",0,B,"milestones",0,function(e){let t=[];for(let n of e?.chapters||[])Number.isFinite(n.from)&&t.push({t:n.from,kind:"job",label:n.company});for(let n of e?.posts||[])Number.isFinite(n.t)&&t.push({t:n.t,kind:"post",label:"You posted"});return t.sort((e,t)=>e.t-t.t)},"pause",0,U,"play",0,function e(){if(null==z.min||null==z.max||z.max<=z.min)return;let t=z.max-z.min,n=1e3*Math.max(1,Number(N().speed)||15),r=null==z.at||z.at>=z.max?z.min:z.at,o=performance.now()-(r-z.min)/t*n;R({at:r,playing:!0});let i=r=>{let s=Math.min(z.max,z.min+(r-o)/n*t);if(R({at:s}),s>=z.max){M=null,R({playing:!1}),N().loop&&setTimeout(()=>{M||z.at!==z.max||(R({at:z.min}),e())},1200);return}M=requestAnimationFrame(i)};cancelAnimationFrame(M),M=requestAnimationFrame(i)},"reachCounts",0,function(e,t){let n=new Map(e.map(e=>[e.id,0]));for(let r of e){let e=t.get(r.id);for(let r=0;null!=e&&r<7;r++)n.set(e,(n.get(e)||0)+1),e=t.get(e)}return n},"saveLayout",0,function(e){let t=String(e||"").trim().slice(0,40);if(!t)return;let n=N(),r=Object.fromEntries(p.map(e=>[e,n[e]]));E([...T().filter(e=>e.name!==t),{name:t,settings:r}])},"setClock",0,R,"setLab",0,j,"stopReplay",0,function(){U(),R({at:null})},"watchClock",0,function(e){return L.add(e),()=>L.delete(e)},"watchLab",0,function(e){O.add(e);let t=t=>{t.key===b&&(A=null,e())};return window.addEventListener("storage",t),()=>{O.delete(e),window.removeEventListener("storage",t)}},"watchLayouts",0,function(e){return F.add(e),()=>F.delete(e)}],39160)},86106,e=>{"use strict";var t=e.i(7214);let n=Object.freeze({known:!1,sent:new Set,mine:new Map,version:0}),r=new Set,o=n,i=null,s=new Map;function a(e=o.sent,t=o.known){for(let n of(o=Object.freeze({known:t,sent:e,mine:new Map(s),version:o.version+1}),[...r]))n()}async function l(e){let t=await fetch("/api/outreach",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n.error||"Could not save that.");return n}async function u(e,{bridgeId:n}={}){let r=(0,t.keyFor)(e),o=s.has(r)?s.get(r):void 0;s.set(r,!0),a();try{return await l({action:"mark-sent",connectionId:e.id,profileUrl:e.profile_url,bridgeId:n})}catch(e){throw void 0===o?s.delete(r):s.set(r,o),a(),e}}async function d(e){let n=(0,t.keyFor)(e),r=s.has(n)?s.get(n):void 0;s.set(n,!1),a();try{return await l({action:"undo",connectionId:e.id,profileUrl:e.profile_url})}catch(e){throw void 0===r?s.delete(n):s.set(n,r),a(),e}}e.s(["REQUESTS_UNKNOWN",0,n,"hasRequest",0,function(e,n=o){if(!e)return!1;let r=(0,t.keyFor)(e);return n.mine.has(r)?n.mine.get(r):n.known?n.sent.has(r):"pending"===e.unlock_status||"sent"===e.outreach_status},"markRequested",0,u,"requestsNow",0,function(){return o},"sawRequested",0,function(e){s.set((0,t.keyFor)(e),!0),a()},"undoRequest",0,d,"watchRequests",0,function(e){return r.add(e),i||o.known||(i=fetch("/api/outreach").then(e=>e.ok?e.json():null).then(e=>{e&&a(new Set((e.pending||[]).map(t.keyFor)),!0)}).catch(()=>{}).finally(()=>{i=null})),()=>r.delete(e)}])}]);