@thangnm.nip/irouter 0.0.12 → 0.0.13

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 (293) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +5 -5
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/employees/[keyId]/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/employees/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/employees/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/employees/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/_global-error.html +1 -1
  57. package/app/.next/server/app/_global-error.rsc +1 -1
  58. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  59. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  60. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  61. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  62. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  63. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  64. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/_not-found.html +1 -1
  66. package/app/.next/server/app/_not-found.rsc +4 -4
  67. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  68. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  69. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  70. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  71. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  72. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  73. package/app/.next/server/app/api/employees/[keyId]/stats/route.js +1 -1
  74. package/app/.next/server/app/api/employees/stats/route.js +1 -1
  75. package/app/.next/server/app/api/models/route.js +1 -1
  76. package/app/.next/server/app/api/providers/route.js +1 -1
  77. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  78. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  79. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  80. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  81. package/app/.next/server/app/api/version/route.js +1 -1
  82. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/callback.html +1 -1
  84. package/app/.next/server/app/callback.rsc +4 -4
  85. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  86. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  87. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  88. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  89. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  90. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  91. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  92. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  93. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  94. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  95. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  96. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  97. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  98. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  99. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  100. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  101. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  102. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  103. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  104. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  105. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  106. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  107. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  108. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  109. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  110. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  111. package/app/.next/server/app/dashboard/combos.html +1 -1
  112. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  113. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  114. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  115. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  116. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  117. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  118. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  119. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  120. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  121. package/app/.next/server/app/dashboard/employees.html +1 -1
  122. package/app/.next/server/app/dashboard/employees.rsc +6 -6
  123. package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard/employees/__PAGE__.segment.rsc +2 -2
  124. package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard/employees.segment.rsc +1 -1
  125. package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  126. package/app/.next/server/app/dashboard/employees.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  127. package/app/.next/server/app/dashboard/employees.segments/_full.segment.rsc +6 -6
  128. package/app/.next/server/app/dashboard/employees.segments/_head.segment.rsc +1 -1
  129. package/app/.next/server/app/dashboard/employees.segments/_index.segment.rsc +4 -4
  130. package/app/.next/server/app/dashboard/employees.segments/_tree.segment.rsc +2 -2
  131. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  132. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  133. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  134. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  135. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  136. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  137. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  138. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  139. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  140. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  141. package/app/.next/server/app/dashboard/mitm.html +1 -1
  142. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  143. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  144. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  145. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  146. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  147. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  148. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  149. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  150. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  151. package/app/.next/server/app/dashboard/profile.html +1 -1
  152. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  153. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  154. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  155. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  156. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  157. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  158. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  159. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  160. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  161. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  162. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  163. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  164. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  165. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  166. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  167. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  168. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  169. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  170. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  171. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  172. package/app/.next/server/app/dashboard/providers.html +1 -1
  173. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  174. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  175. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  176. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  177. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  178. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  179. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  180. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  181. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  182. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  183. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  184. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  185. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  186. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  187. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  188. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  189. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  191. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  192. package/app/.next/server/app/dashboard/quota.html +2 -2
  193. package/app/.next/server/app/dashboard/quota.rsc +5 -5
  194. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  196. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  197. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  198. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +5 -5
  199. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  201. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  202. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  204. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  205. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  206. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  207. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  208. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  209. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  210. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  211. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  212. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  213. package/app/.next/server/app/dashboard/translator.html +1 -1
  214. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  215. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  216. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  217. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  218. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  219. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  220. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  221. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  222. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  223. package/app/.next/server/app/dashboard/usage.html +1 -1
  224. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  225. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  226. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  227. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  228. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  229. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  230. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  231. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  232. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  233. package/app/.next/server/app/dashboard.html +1 -1
  234. package/app/.next/server/app/dashboard.rsc +5 -5
  235. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +1 -1
  236. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  237. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  238. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +5 -5
  239. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  240. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  241. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  242. package/app/.next/server/app/index.html +1 -1
  243. package/app/.next/server/app/index.rsc +4 -4
  244. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  245. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  246. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  247. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  248. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  249. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  250. package/app/.next/server/app/landing.html +1 -1
  251. package/app/.next/server/app/landing.rsc +4 -4
  252. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  253. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  254. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  255. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  256. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  257. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  258. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  259. package/app/.next/server/app/login.html +1 -1
  260. package/app/.next/server/app/login.rsc +5 -5
  261. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  262. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  263. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  264. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  265. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  266. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  267. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  268. package/app/.next/server/app-paths-manifest.json +5 -5
  269. package/app/.next/server/chunks/1424.js +1 -1
  270. package/app/.next/server/chunks/2664.js +1 -1
  271. package/app/.next/server/chunks/3093.js +1 -1
  272. package/app/.next/server/chunks/412.js +1 -1
  273. package/app/.next/server/chunks/5172.js +1 -0
  274. package/app/.next/server/chunks/6072.js +5 -5
  275. package/app/.next/server/middleware-build-manifest.js +1 -1
  276. package/app/.next/server/pages/404.html +1 -1
  277. package/app/.next/server/pages/500.html +1 -1
  278. package/app/.next/static/chunks/{5497-c246d6c185ae4515.js → 5497-d50708c4d157ec16.js} +2 -2
  279. package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/[keyId]/page-e1b127993bd958d0.js +1 -0
  280. package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-d18e40a0a0ff8566.js +1 -0
  281. package/app/.next/static/chunks/app/(dashboard)/layout-5868de9aa453bc2e.js +1 -0
  282. package/app/.next/static/chunks/app/{layout-372932853e1ca466.js → layout-0a0b70c7e991ef26.js} +1 -1
  283. package/app/.next/static/css/322346ef6d5be333.css +1 -0
  284. package/app/package.json +1 -1
  285. package/hooks/postinstall.js +79 -78
  286. package/package.json +1 -1
  287. package/app/.next/server/chunks/5708.js +0 -1
  288. package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/[keyId]/page-260c2e244f08d44e.js +0 -1
  289. package/app/.next/static/chunks/app/(dashboard)/dashboard/employees/page-1186beab09df32f8.js +0 -1
  290. package/app/.next/static/chunks/app/(dashboard)/layout-fc4ee3669b9e2432.js +0 -1
  291. package/app/.next/static/css/bc7b15f1fd95fc16.css +0 -1
  292. /package/app/.next/static/{jte_Hfgy-t_AHpT39tLxg → Ff9r17vbQucGnFBZPto6l}/_buildManifest.js +0 -0
  293. /package/app/.next/static/{jte_Hfgy-t_AHpT39tLxg → Ff9r17vbQucGnFBZPto6l}/_ssgManifest.js +0 -0
@@ -33,11 +33,11 @@
33
33
  status, timestamp
34
34
  FROM usage_history
35
35
  ORDER BY timestamp DESC
36
- LIMIT 50`).all(),b=new Set;f=a.map(a=>{let b=a.api_key?d[a.api_key]||a.api_key.slice(0,8)+"...":"Local";return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:a.prompt_tokens,completionTokens:a.completion_tokens,status:a.status||"ok",keyName:b}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let c=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${c}`;return!b.has(d)&&(b.add(d),!0)}).slice(0,20)}catch(a){console.error("[usageDb] Failed to get recent requests:",a.message)}return{activeRequests:a,recentRequests:f,errorProvider:Date.now()-u.ts<1e4?u.provider:"",activeKeyNames:[...e]}}let E={"2h":72e5,"6h":216e5,"12h":432e5,"24h":864e5,"7d":6048e5,"30d":2592e6,"60d":5184e6};async function F(a="all"){if(i.m1)return{totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:t,activeRequests:[],recentRequests:[],errorProvider:"",activeKeyNames:[]};x();let b=(0,i.XA)(),{getProviderConnections:d,getApiKeys:e,getProviderNodes:f}=await Promise.all([c.e(9718),c.e(118)]).then(c.bind(c,89718)),g=[];try{g=await d()}catch{}let h={};for(let a of g)h[a.id]=a.name||a.email||a.id;let j={};try{for(let a of(await f()))a.id&&a.name&&(j[a.id]=a.name)}catch{}let k=[];try{k=await e()}catch{}let l={};for(let a of k)l[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let m="",n={};a&&E[a]&&(m="WHERE timestamp >= @cutoff",n.cutoff=new Date(Date.now()-E[a]).toISOString());let o=b.prepare(`SELECT provider, model, connection_id, api_key, endpoint,
36
+ LIMIT 50`).all(),b=new Set;f=a.map(a=>{let b=a.api_key?d[a.api_key]||a.api_key.slice(0,8)+"...":"Local";return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:a.prompt_tokens,completionTokens:a.completion_tokens,status:a.status||"ok",keyName:b}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let c=a.timestamp?a.timestamp.slice(0,16):"",d=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${c}`;return!b.has(d)&&(b.add(d),!0)}).slice(0,20)}catch(a){console.error("[usageDb] Failed to get recent requests:",a.message)}return{activeRequests:a,recentRequests:f,errorProvider:Date.now()-u.ts<1e4?u.provider:"",activeKeyNames:[...e]}}let E={"2h":72e5,"6h":216e5,"12h":432e5,"24h":864e5,"7d":6048e5,"30d":2592e6,"60d":5184e6};async function F(a="all",b={}){if(i.m1)return{totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:t,activeRequests:[],recentRequests:[],errorProvider:"",activeKeyNames:[]};x();let d=(0,i.XA)(),{getProviderConnections:e,getApiKeys:f,getProviderNodes:g}=await Promise.all([c.e(9718),c.e(118)]).then(c.bind(c,89718)),h=[];try{h=await e()}catch{}let j={};for(let a of h)j[a.id]=a.name||a.email||a.id;let k={};try{for(let a of(await g()))a.id&&a.name&&(k[a.id]=a.name)}catch{}let l=[];try{l=await f()}catch{}let m={};for(let a of l)m[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let n="",o={};b.from&&b.to?(n="WHERE timestamp >= @fromDate AND timestamp <= @toDate",o.fromDate=new Date(b.from).toISOString(),o.toDate=new Date(b.to).toISOString()):a&&E[a]&&(n="WHERE timestamp >= @cutoff",o.cutoff=new Date(Date.now()-E[a]).toISOString());let p=d.prepare(`SELECT provider, model, connection_id, api_key, endpoint,
37
37
  prompt_tokens, completion_tokens, cached_tokens,
38
38
  reasoning_tokens, cache_creation_tokens,
39
39
  cost, status, timestamp
40
- FROM usage_history ${m}
41
- ORDER BY timestamp DESC`).all(n),p={totalRequests:a&&"all"!==a&&E[a]?o.length:z().countUsage.get().cnt,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:t,activeRequests:[],recentRequests:[],errorProvider:Date.now()-u.ts<1e4?u.provider:"",activeKeyNames:Object.entries(t.byApiKey||{}).filter(([,a])=>Object.values(a).some(a=>a>0)).map(([a])=>l[a]?.name||a.slice(0,8)+"...")};for(let[a,b]of Object.entries(t.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=h[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/),f=e?e[1]:c,g=e?e[2]:"unknown";p.activeRequests.push({model:f,provider:g,account:b,count:d})}let q=new Date,r=new Date(6e4*Math.floor(q.getTime()/6e4)),s=new Date(r.getTime()-54e4),v={};for(let a=0;a<10;a++){let b=new Date(r.getTime()-(9-a)*6e4).getTime();v[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},p.last10Minutes.push(v[b])}let w=new Set;for(let a of o){let b=a.prompt_tokens||0,c=a.completion_tokens||0,d=a.cost||0,e=new Date(a.timestamp);if(p.totalPromptTokens+=b,p.totalCompletionTokens+=c,p.totalCost+=d,e>=s&&e<=q){let a=6e4*Math.floor(e.getTime()/6e4);v[a]&&(v[a].requests++,v[a].promptTokens+=b,v[a].completionTokens+=c,v[a].cost+=d)}let f=j[a.provider]||a.provider;p.byProvider[a.provider]||(p.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),p.byProvider[a.provider].requests++,p.byProvider[a.provider].promptTokens+=b,p.byProvider[a.provider].completionTokens+=c,p.byProvider[a.provider].cost+=d;let g=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[g]||(p.byModel[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,lastUsed:a.timestamp}),p.byModel[g].requests++,p.byModel[g].promptTokens+=b,p.byModel[g].completionTokens+=c,p.byModel[g].cost+=d,new Date(a.timestamp)>new Date(p.byModel[g].lastUsed)&&(p.byModel[g].lastUsed=a.timestamp),a.connection_id){let e=h[a.connection_id]||`Account ${a.connection_id.slice(0,8)}...`,g=`${a.model} (${a.provider} - ${e})`;p.byAccount[g]||(p.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,connectionId:a.connection_id,accountName:e,lastUsed:a.timestamp}),p.byAccount[g].requests++,p.byAccount[g].promptTokens+=b,p.byAccount[g].completionTokens+=c,p.byAccount[g].cost+=d,new Date(a.timestamp)>new Date(p.byAccount[g].lastUsed)&&(p.byAccount[g].lastUsed=a.timestamp)}if(a.api_key&&"string"==typeof a.api_key){let e=l[a.api_key],g=e?.name||a.api_key.slice(0,8)+"...",h=a.api_key,i=`${h}|${a.model}|${a.provider||"unknown"}`;p.byApiKey[i]||(p.byApiKey[i]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,apiKey:a.api_key,keyName:g,apiKeyKey:h,lastUsed:a.timestamp});let j=p.byApiKey[i];j.requests++,j.promptTokens+=b,j.completionTokens+=c,j.cost+=d,new Date(a.timestamp)>new Date(j.lastUsed)&&(j.lastUsed=a.timestamp)}else{let e="local-no-key";p.byApiKey[e]||(p.byApiKey[e]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,apiKey:null,keyName:"Local (No API Key)",apiKeyKey:e,lastUsed:a.timestamp});let g=p.byApiKey[e];g.requests++,g.promptTokens+=b,g.completionTokens+=c,g.cost+=d,new Date(a.timestamp)>new Date(g.lastUsed)&&(g.lastUsed=a.timestamp)}let i=a.endpoint||"Unknown",k=`${i}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[k]||(p.byEndpoint[k]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:i,rawModel:a.model,provider:f,lastUsed:a.timestamp});let m=p.byEndpoint[k];m.requests++,m.promptTokens+=b,m.completionTokens+=c,m.cost+=d,new Date(a.timestamp)>new Date(m.lastUsed)&&(m.lastUsed=a.timestamp)}return p.recentRequests=o.map(a=>{let b=a.api_key?l[a.api_key]?.name||a.api_key.slice(0,8)+"...":"Local";return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:a.prompt_tokens||0,completionTokens:a.completion_tokens||0,status:a.status||"ok",keyName:b}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!w.has(c)&&(w.add(c),!0)}).slice(0,20),p}async function G({model:a,provider:b,connectionId:d,tokens:e,status:g}){if(!i.m1)try{let h=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=b(a.getDate()),d=b(a.getMonth()+1),e=a.getFullYear(),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}-${d}-${e} ${f}:${g}:${h}`}(),i=b?.toUpperCase()||"-",j=d?d.slice(0,8):"-";try{let{getProviderConnections:a}=await Promise.all([c.e(9718),c.e(118)]).then(c.bind(c,89718)),b=(await a()).find(a=>a.id===d);b&&(j=b.name||b.email||j)}catch{}let k=e?.prompt_tokens!==void 0?e.prompt_tokens:"-",l=e?.completion_tokens!==void 0?e.completion_tokens:"-",m=`${h} | ${a||"-"} | ${i} | ${j} | ${k} | ${l} | ${g}
42
- `;f().appendFileSync(s,m);let n=f().readFileSync(s,"utf-8").trim().split("\n");n.length>200&&f().writeFileSync(s,n.slice(-200).join("\n")+"\n")}catch(a){console.error("Failed to append to log.txt:",a.message)}}async function H(a=200){if(i.m1||!f()||"function"!=typeof f().existsSync||!s||!f().existsSync(s))return[];try{return f().readFileSync(s,"utf-8").trim().split("\n").slice(-a).reverse()}catch(a){return console.error("[usageDb] Failed to read log.txt:",a.message),[]}}async function I(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.all([c.e(9718),c.e(118)]).then(c.bind(c,89718)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}async function J(a="7d",b=null){let c,d,e;if(i.m1)return[];x();let f=(0,i.XA)(),g=Date.now();"2h"===a?(c=12,d=6e5,e=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"6h"===a?(c=12,d=18e5,e=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"12h"===a?(c=12,d=36e5,e=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"24h"===a?(c=24,d=36e5,e=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"7d"===a?(c=7,d=864e5,e=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"})):"30d"===a?(c=30,d=864e5,e=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"})):(c=60,d=864e5,e=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"}));let h=g-c*d,j=Array.from({length:c},(a,b)=>{let c=h+b*d;return{label:e(c),tokens:0,cost:0,_ts:c}}),k={},l="WHERE timestamp >= @startTs";for(let a of(k.startTs=new Date(h).toISOString(),b&&(l+=" AND api_key = @apiKey",k.apiKey=b),f.prepare(`SELECT prompt_tokens, completion_tokens, cost, timestamp
43
- FROM usage_history ${l}`).all(k))){let b=new Date(a.timestamp).getTime();if(b<h||b>g)continue;let e=Math.min(Math.floor((b-h)/d),c-1);j[e].tokens+=(a.prompt_tokens||0)+(a.completion_tokens||0),j[e].cost+=a.cost||0}return j.map(({label:a,tokens:b,cost:c})=>({label:a,tokens:b,cost:c}))}}};
40
+ FROM usage_history ${n}
41
+ ORDER BY timestamp DESC`).all(o),q={totalRequests:b.from||a&&"all"!==a&&E[a]?p.length:z().countUsage.get().cnt,totalPromptTokens:0,totalCompletionTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:t,activeRequests:[],recentRequests:[],errorProvider:Date.now()-u.ts<1e4?u.provider:"",activeKeyNames:Object.entries(t.byApiKey||{}).filter(([,a])=>Object.values(a).some(a=>a>0)).map(([a])=>m[a]?.name||a.slice(0,8)+"...")};for(let[a,b]of Object.entries(t.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=j[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/),f=e?e[1]:c,g=e?e[2]:"unknown";q.activeRequests.push({model:f,provider:g,account:b,count:d})}let r=new Date,s=new Date(6e4*Math.floor(r.getTime()/6e4)),v=new Date(s.getTime()-54e4),w={};for(let a=0;a<10;a++){let b=new Date(s.getTime()-(9-a)*6e4).getTime();w[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},q.last10Minutes.push(w[b])}let y=new Set;for(let a of p){let b=a.prompt_tokens||0,c=a.completion_tokens||0,d=a.cost||0,e=new Date(a.timestamp);if(q.totalPromptTokens+=b,q.totalCompletionTokens+=c,q.totalCost+=d,e>=v&&e<=r){let a=6e4*Math.floor(e.getTime()/6e4);w[a]&&(w[a].requests++,w[a].promptTokens+=b,w[a].completionTokens+=c,w[a].cost+=d)}let f=k[a.provider]||a.provider;q.byProvider[a.provider]||(q.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cost:0}),q.byProvider[a.provider].requests++,q.byProvider[a.provider].promptTokens+=b,q.byProvider[a.provider].completionTokens+=c,q.byProvider[a.provider].cost+=d;let g=a.provider?`${a.model} (${a.provider})`:a.model;if(q.byModel[g]||(q.byModel[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,lastUsed:a.timestamp}),q.byModel[g].requests++,q.byModel[g].promptTokens+=b,q.byModel[g].completionTokens+=c,q.byModel[g].cost+=d,new Date(a.timestamp)>new Date(q.byModel[g].lastUsed)&&(q.byModel[g].lastUsed=a.timestamp),a.connection_id){let e=j[a.connection_id]||`Account ${a.connection_id.slice(0,8)}...`,g=`${a.model} (${a.provider} - ${e})`;q.byAccount[g]||(q.byAccount[g]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,connectionId:a.connection_id,accountName:e,lastUsed:a.timestamp}),q.byAccount[g].requests++,q.byAccount[g].promptTokens+=b,q.byAccount[g].completionTokens+=c,q.byAccount[g].cost+=d,new Date(a.timestamp)>new Date(q.byAccount[g].lastUsed)&&(q.byAccount[g].lastUsed=a.timestamp)}if(a.api_key&&"string"==typeof a.api_key){let e=m[a.api_key],g=e?.name||a.api_key.slice(0,8)+"...",h=a.api_key,i=`${h}|${a.model}|${a.provider||"unknown"}`;q.byApiKey[i]||(q.byApiKey[i]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,apiKey:a.api_key,keyName:g,apiKeyKey:h,lastUsed:a.timestamp});let j=q.byApiKey[i];j.requests++,j.promptTokens+=b,j.completionTokens+=c,j.cost+=d,new Date(a.timestamp)>new Date(j.lastUsed)&&(j.lastUsed=a.timestamp)}else{let e="local-no-key";q.byApiKey[e]||(q.byApiKey[e]={requests:0,promptTokens:0,completionTokens:0,cost:0,rawModel:a.model,provider:f,apiKey:null,keyName:"Local (No API Key)",apiKeyKey:e,lastUsed:a.timestamp});let g=q.byApiKey[e];g.requests++,g.promptTokens+=b,g.completionTokens+=c,g.cost+=d,new Date(a.timestamp)>new Date(g.lastUsed)&&(g.lastUsed=a.timestamp)}let h=a.endpoint||"Unknown",i=`${h}|${a.model}|${a.provider||"unknown"}`;q.byEndpoint[i]||(q.byEndpoint[i]={requests:0,promptTokens:0,completionTokens:0,cost:0,endpoint:h,rawModel:a.model,provider:f,lastUsed:a.timestamp});let l=q.byEndpoint[i];l.requests++,l.promptTokens+=b,l.completionTokens+=c,l.cost+=d,new Date(a.timestamp)>new Date(l.lastUsed)&&(l.lastUsed=a.timestamp)}return q.recentRequests=p.map(a=>{let b=a.api_key?m[a.api_key]?.name||a.api_key.slice(0,8)+"...":"Local";return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:a.prompt_tokens||0,completionTokens:a.completion_tokens||0,status:a.status||"ok",keyName:b}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!y.has(c)&&(y.add(c),!0)}).slice(0,20),q}async function G({model:a,provider:b,connectionId:d,tokens:e,status:g}){if(!i.m1)try{let h=function(a=new Date){let b=a=>String(a).padStart(2,"0"),c=b(a.getDate()),d=b(a.getMonth()+1),e=a.getFullYear(),f=b(a.getHours()),g=b(a.getMinutes()),h=b(a.getSeconds());return`${c}-${d}-${e} ${f}:${g}:${h}`}(),i=b?.toUpperCase()||"-",j=d?d.slice(0,8):"-";try{let{getProviderConnections:a}=await Promise.all([c.e(9718),c.e(118)]).then(c.bind(c,89718)),b=(await a()).find(a=>a.id===d);b&&(j=b.name||b.email||j)}catch{}let k=e?.prompt_tokens!==void 0?e.prompt_tokens:"-",l=e?.completion_tokens!==void 0?e.completion_tokens:"-",m=`${h} | ${a||"-"} | ${i} | ${j} | ${k} | ${l} | ${g}
42
+ `;f().appendFileSync(s,m);let n=f().readFileSync(s,"utf-8").trim().split("\n");n.length>200&&f().writeFileSync(s,n.slice(-200).join("\n")+"\n")}catch(a){console.error("Failed to append to log.txt:",a.message)}}async function H(a=200){if(i.m1||!f()||"function"!=typeof f().existsSync||!s||!f().existsSync(s))return[];try{return f().readFileSync(s,"utf-8").trim().split("\n").slice(-a).reverse()}catch(a){return console.error("[usageDb] Failed to read log.txt:",a.message),[]}}async function I(a,b,d){if(!d||!a||!b)return 0;try{let{getPricingForModel:e}=await Promise.all([c.e(9718),c.e(118)]).then(c.bind(c,89718)),f=await e(a,b);if(!f)return 0;let g=0,h=d.prompt_tokens||d.input_tokens||0,i=d.cached_tokens||d.cache_read_input_tokens||0,j=Math.max(0,h-i);if(g+=j*(f.input/1e6),i>0){let a=f.cached||f.input;g+=a/1e6*i}let k=d.completion_tokens||d.output_tokens||0;g+=k*(f.output/1e6);let l=d.reasoning_tokens||0;if(l>0){let a=f.reasoning||f.output;g+=a/1e6*l}let m=d.cache_creation_input_tokens||0;if(m>0){let a=f.cache_creation||f.input;g+=a/1e6*m}return g}catch(a){return console.error("Error calculating cost:",a),0}}async function J(a="7d",b=null,c={}){let d,e,f,g,h;if(i.m1)return[];x();let j=(0,i.XA)(),k=Date.now();if(c.from&&c.to){g=new Date(c.from).getTime();let a=(h=new Date(c.to).getTime())-g;a/864e5<=2?(d=Math.max(1,Math.ceil(a/(e=36e5))),f=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):(d=Math.max(1,Math.ceil(a/(e=864e5))),f=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"}))}else h=k,"2h"===a?(d=12,e=6e5,f=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"6h"===a?(d=12,e=18e5,f=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"12h"===a?(d=12,e=36e5,f=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"24h"===a?(d=24,e=36e5,f=a=>new Date(a).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1})):"7d"===a?(d=7,e=864e5,f=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"})):"30d"===a?(d=30,e=864e5,f=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"})):(d=60,e=864e5,f=a=>new Date(a).toLocaleDateString("en-US",{month:"short",day:"numeric"})),g=k-d*e;let l=Array.from({length:d},(a,b)=>{let c=g+b*e;return{label:f(c),tokens:0,cost:0,_ts:c}}),m={},n="WHERE timestamp >= @startTs AND timestamp <= @endTs";for(let a of(m.startTs=new Date(g).toISOString(),m.endTs=new Date(h).toISOString(),b&&(n+=" AND api_key = @apiKey",m.apiKey=b),j.prepare(`SELECT prompt_tokens, completion_tokens, cost, timestamp
43
+ FROM usage_history ${n}`).all(m))){let b=new Date(a.timestamp).getTime();if(b<g||b>h)continue;let c=Math.min(Math.floor((b-g)/e),d-1);l[c].tokens+=(a.prompt_tokens||0)+(a.completion_tokens||0),l[c].cost+=a.cost||0}return l.map(({label:a,tokens:b,cost:c})=>({label:a,tokens:b,cost:c}))}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/jte_Hfgy-t_AHpT39tLxg/_buildManifest.js","static/jte_Hfgy-t_AHpT39tLxg/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-a2cf08368369c277.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-bd789ebba15af837.js","static/chunks/main-app-825c409f56c59467.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/Ff9r17vbQucGnFBZPto6l/_buildManifest.js","static/Ff9r17vbQucGnFBZPto6l/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-a2cf08368369c277.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-bd789ebba15af837.js","static/chunks/main-app-825c409f56c59467.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/081a0afca5a9bd20.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/bc7b15f1fd95fc16.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a2cf08368369c277.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-bd789ebba15af837.js" async=""></script><script src="/_next/static/chunks/main-app-825c409f56c59467.js" async=""></script><script src="/_next/static/chunks/1a258343-4af2572c60ed5a11.js" async=""></script><script src="/_next/static/chunks/6902-135c924f2deafe46.js" async=""></script><script src="/_next/static/chunks/2652-5d3ad13224961c58.js" async=""></script><script src="/_next/static/chunks/5497-c246d6c185ae4515.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-fc4ee3669b9e2432.js" async=""></script><script src="/_next/static/chunks/app/layout-372932853e1ca466.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0a0a0a"/><title>iRouter - Enterprise AI Infrastructure Management</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-a2cf08368369c277.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-4af2572c60ed5a11.js\",\"6902\",\"static/chunks/6902-135c924f2deafe46.js\",\"2652\",\"static/chunks/2652-5d3ad13224961c58.js\",\"5497\",\"static/chunks/5497-c246d6c185ae4515.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-fc4ee3669b9e2432.js\"],\"ThemeProvider\"]\n3:I[94635,[\"2652\",\"static/chunks/2652-5d3ad13224961c58.js\",\"7177\",\"static/chunks/app/layout-372932853e1ca466.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/081a0afca5a9bd20.css\",\"style\"]\n:HL[\"/_next/static/css/bc7b15f1fd95fc16.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\u0026display=swap\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/081a0afca5a9bd20.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/bc7b15f1fd95fc16.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"jte_Hfgy-t_AHpT39tLxg\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"iRouter - Enterprise AI Infrastructure Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L10\",\"5\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/081a0afca5a9bd20.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/322346ef6d5be333.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a2cf08368369c277.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-bd789ebba15af837.js" async=""></script><script src="/_next/static/chunks/main-app-825c409f56c59467.js" async=""></script><script src="/_next/static/chunks/1a258343-4af2572c60ed5a11.js" async=""></script><script src="/_next/static/chunks/6902-135c924f2deafe46.js" async=""></script><script src="/_next/static/chunks/2652-5d3ad13224961c58.js" async=""></script><script src="/_next/static/chunks/5497-d50708c4d157ec16.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-5868de9aa453bc2e.js" async=""></script><script src="/_next/static/chunks/app/layout-0a0b70c7e991ef26.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&amp;display=swap" as="style"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><title>404: This page could not be found.</title><meta name="theme-color" content="#0a0a0a"/><title>iRouter - Enterprise AI Infrastructure Management</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&amp;display=swap" rel="stylesheet"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-a2cf08368369c277.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-4af2572c60ed5a11.js\",\"6902\",\"static/chunks/6902-135c924f2deafe46.js\",\"2652\",\"static/chunks/2652-5d3ad13224961c58.js\",\"5497\",\"static/chunks/5497-d50708c4d157ec16.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-5868de9aa453bc2e.js\"],\"ThemeProvider\"]\n3:I[94635,[\"2652\",\"static/chunks/2652-5d3ad13224961c58.js\",\"7177\",\"static/chunks/app/layout-0a0b70c7e991ef26.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/081a0afca5a9bd20.css\",\"style\"]\n:HL[\"/_next/static/css/322346ef6d5be333.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\u0026display=swap\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/081a0afca5a9bd20.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/322346ef6d5be333.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}],[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}],[\"$\",\"link\",null,{\"href\":\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200\u0026display=swap\",\"rel\":\"stylesheet\"}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"Ff9r17vbQucGnFBZPto6l\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"iRouter - Enterprise AI Infrastructure Management\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L10\",\"5\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a2cf08368369c277.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-bd789ebba15af837.js" async=""></script><script src="/_next/static/chunks/main-app-825c409f56c59467.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-a2cf08368369c277.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"jte_Hfgy-t_AHpT39tLxg\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a2cf08368369c277.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-bd789ebba15af837.js" async=""></script><script src="/_next/static/chunks/main-app-825c409f56c59467.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-a2cf08368369c277.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"Ff9r17vbQucGnFBZPto6l\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>