test-lah 1.0.3 → 1.0.4
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +6 -6
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +24 -24
- package/.next/standalone/.next/server/app/(dashboard)/integrations/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/integrations/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/projects/[projectId]/summary/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/integrations.html +1 -1
- package/.next/standalone/.next/server/app/integrations.rsc +2 -2
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- package/.next/standalone/.next/server/app/projects.html +1 -1
- package/.next/standalone/.next/server/app/projects.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-ef2f1f3c1d497f2a.js +1 -0
- package/.next/{static/chunks/app/(dashboard)/projects/[projectId]/page-73afaf41f4596daf.js → standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-500a663fdab52791.js} +1 -1
- package/.next/standalone/package.json +1 -1
- package/.next/static/chunks/app/(dashboard)/integrations/page-ef2f1f3c1d497f2a.js +1 -0
- package/.next/{standalone/.next/static/chunks/app/(dashboard)/projects/[projectId]/page-73afaf41f4596daf.js → static/chunks/app/(dashboard)/projects/[projectId]/page-500a663fdab52791.js} +1 -1
- package/package.json +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-80ace08b47978071.js +0 -1
- package/.next/static/chunks/app/(dashboard)/integrations/page-80ace08b47978071.js +0 -1
- /package/.next/standalone/.next/static/{_FgGlDafA-JmrzQ8CNNcc → 9OtwPzpy1ovRWzffCh95h}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{_FgGlDafA-JmrzQ8CNNcc → 9OtwPzpy1ovRWzffCh95h}/_ssgManifest.js +0 -0
- /package/.next/static/{_FgGlDafA-JmrzQ8CNNcc → 9OtwPzpy1ovRWzffCh95h}/_buildManifest.js +0 -0
- /package/.next/static/{_FgGlDafA-JmrzQ8CNNcc → 9OtwPzpy1ovRWzffCh95h}/_ssgManifest.js +0 -0
package/package.json
CHANGED
package/.next/standalone/.next/static/chunks/app/(dashboard)/integrations/page-80ace08b47978071.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[480],{2850:(e,r,o)=>{Promise.resolve().then(o.bind(o,4071))},3362:(e,r,o)=>{"use strict";o.d(r,{Pj:()=>t});let t=Object.values({openai:{id:"openai",name:"OpenAI",type:"native",description:"GPT models powering ChatGPT. Industry-leading language understanding.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openai.svg",keyUrl:"https://platform.openai.com/api-keys",keyPlaceholder:"sk-...",color:"#10A37F",sdkProvider:"openai",defaultModel:"gpt-4o-mini",popularModels:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-3.5-turbo"]},google:{id:"google",name:"Google Gemini",type:"native",description:"Google's multimodal AI with strong reasoning capabilities.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/googlegemini.svg",keyUrl:"https://aistudio.google.com/apikey",keyPlaceholder:"AIza...",color:"#4285F4",sdkProvider:"google",defaultModel:"gemini-2.5-flash",popularModels:["gemini-2.5-flash","gemini-2.5-pro","gemini-2.0-flash"]},anthropic:{id:"anthropic",name:"Anthropic",type:"native",description:"Claude models — safe, steerable, and highly capable.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/anthropic.svg",keyUrl:"https://console.anthropic.com/settings/keys",keyPlaceholder:"sk-ant-...",color:"#D97706",sdkProvider:"anthropic",defaultModel:"claude-sonnet-4-20250514",popularModels:["claude-sonnet-4-20250514","claude-haiku-4-20250514","claude-3-5-sonnet-20241022"]},deepseek:{id:"deepseek",name:"DeepSeek",type:"openai-compatible",description:"High-performance open-source models with competitive reasoning.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/deepseek.svg",keyUrl:"https://platform.deepseek.com/api_keys",keyPlaceholder:"sk-...",color:"#4D6BFE",sdkProvider:"openai",baseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat",popularModels:["deepseek-chat","deepseek-reasoner"]},xiaomi:{id:"xiaomi",name:"Xiaomi (MiMo)",type:"openai-compatible",description:"Xiaomi's MiMo models — OpenAI-compatible API.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/xiaomi.svg",keyUrl:"https://platform.xiaomimimo.com/",keyPlaceholder:"tp-...",color:"#FF6900",sdkProvider:"openai",baseURL:"https://token-plan-sgp.xiaomimimo.com/v1",defaultModel:"mimo-v2.5",popularModels:["mimo-v2.5","mimo-v2.5-pro"]},openrouter:{id:"openrouter",name:"OpenRouter",type:"openai-compatible",description:"Unified gateway to 200+ models — Claude, Llama, Mistral, Gemini, and more.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openrouter.svg",keyUrl:"https://openrouter.ai/keys",keyPlaceholder:"sk-or-...",color:"#6366F1",sdkProvider:"openai",baseURL:"https://openrouter.ai/api/v1",defaultModel:"openrouter/free",popularModels:["openrouter/free","meta-llama/llama-4-maverick:free","google/gemini-2.5-flash:free","deepseek/deepseek-chat-v3-0324:free","mistralai/mistral-small-3.2-24b:free","qwen/qwen3-235b-a22b:free","microsoft/phi-4-reasoning-plus:free"]},groq:{id:"groq",name:"Groq",type:"native",description:"Ultra-fast inference with LPU hardware. Blazing speed for Llama, Mixtral, and Gemma models.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/groq.svg",keyUrl:"https://console.groq.com/keys",keyPlaceholder:"gsk_...",color:"#F55036",sdkProvider:"groq",defaultModel:"llama-3.3-70b-versatile",popularModels:["llama-3.3-70b-versatile","llama-3.1-8b-instant","mixtral-8x7b-32768","gemma2-9b-it","meta-llama/llama-4-scout-17b-16e-instruct","qwen-qwq-32b"]},custom:{id:"custom",name:"Custom (OpenAI-compatible)",type:"openai-compatible",description:"Any OpenAI-compatible API — Ollama, LM Studio, vLLM, LiteLLM, etc.",logoUrl:"",keyUrl:"",keyPlaceholder:"sk-... or any key",color:"#6B7280",sdkProvider:"openai",defaultModel:"",popularModels:[],requiresBaseURL:!0}})},4071:(e,r,o)=>{"use strict";o.r(r),o.d(r,{default:()=>n});var t=o(5155),l=o(2115),a=o(5307),s=o(7669),i=o(3362);function n(){let{activeProviderId:e}=(0,s.P)(),[r,o]=(0,l.useState)(e);return(0,l.useEffect)(()=>{r||o(e)},[e]),(0,t.jsxs)("div",{className:"h-full overflow-auto relative",children:[(0,t.jsxs)("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[(0,t.jsx)(a.b,{width:40,height:40,x:-1,y:-1,className:"opacity-20"}),(0,t.jsx)("div",{className:"absolute inset-0",style:{background:"linear-gradient(to bottom, var(--bg-primary) 0%, transparent 20%, transparent 80%, var(--bg-primary) 100%)"}})]}),(0,t.jsxs)("div",{className:"relative p-6 max-w-4xl",children:[(0,t.jsxs)("div",{className:"mb-6",children:[(0,t.jsx)("h2",{className:"text-lg font-medium",style:{color:"var(--text-primary)"},children:"Integrations"}),(0,t.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--text-tertiary)"},children:"Connect an AI provider to enable test case generation."})]}),(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider mb-3",style:{color:"var(--text-tertiary)"},children:"AI Providers"}),(0,t.jsx)("div",{className:"space-y-3",children:i.Pj.map(e=>(0,t.jsx)(d,{def:e,expanded:r===e.id,onToggle:()=>o(r=>r===e.id?null:e.id)},e.id))})]})]})}function d(e){let{def:r,expanded:o,onToggle:a}=e,{config:i,activeProviderId:n,updateProvider:d,setActiveProvider:p}=(0,s.P)(),m=i.providers[r.id],u=n===r.id,[v,h]=(0,l.useState)(!1),[x,y]=(0,l.useState)((null==m?void 0:m.apiKey)||""),[g,b]=(0,l.useState)((null==m?void 0:m.baseURL)||r.baseURL||""),[f,k]=(0,l.useState)(!1),[j,N]=(0,l.useState)(null),[C,w]=(0,l.useState)(null);(0,l.useEffect)(()=>{o&&m&&!m.connected&&!v&&(y(m.apiKey),b(m.baseURL||r.baseURL||""))},[o]),(0,l.useEffect)(()=>{(null==m?void 0:m.connected)&&m.apiKey&&!m.apiKey.startsWith("enc:")&&fetch("/api/llm/encrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:m.apiKey})}).then(e=>e.json()).then(e=>{e.encrypted&&d(r.id,{apiKey:e.encrypted})}).catch(()=>{})},[]);let U=async()=>{let e=x.trim();if(e){k(!0),N(null),w(null);try{let o=await fetch("/api/llm/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r.id,apiKey:e,baseURL:g.trim()||void 0})}),t=await o.json();N(t),t.ok&&w(e)}catch(e){N({ok:!1,error:"Network error"})}finally{k(!1)}}},M=async()=>{let e=C||x.trim();if(!e)return;if(!C)return void await U();let o=e;try{let r=await fetch("/api/llm/encrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:e})}),t=await r.json();t.encrypted&&(o=t.encrypted)}catch(e){}d(r.id,{apiKey:o,baseURL:g.trim()||r.baseURL||"",connected:!0,models:r.popularModels,defaultModel:(null==m?void 0:m.defaultModel)||r.defaultModel||r.popularModels[0]||"",secondaryModel:(null==m?void 0:m.secondaryModel)||""}),h(!1),N(null),w(null)},P=(e,o)=>{d(r.id,{[e]:o})};if(!m)return null;let L=r.color||"#6B7280";return(0,t.jsxs)("div",{className:"rounded-xl border transition-all overflow-hidden",style:{borderColor:u?L:o?"var(--border-hover)":"var(--border)",backgroundColor:"var(--bg-card)",boxShadow:u?"0 0 0 1px ".concat(L,"20"):void 0},children:[(0,t.jsxs)("button",{onClick:a,className:"w-full px-5 py-4 flex items-center gap-3 text-left transition-colors hover:bg-[var(--bg-secondary)]",children:[(0,t.jsx)("div",{className:"w-11 h-11 rounded-lg flex items-center justify-center overflow-hidden flex-shrink-0",style:{backgroundColor:"".concat(L,"10")},children:r.logoUrl?(0,t.jsx)("img",{src:r.logoUrl,alt:r.name,width:24,height:24,className:"opacity-80",style:{filter:"brightness(0.5)"},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("span",{className:"text-xs font-bold",style:{color:L},children:"API"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:"var(--text-primary)"},children:r.name}),u&&m.connected&&(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{backgroundColor:"".concat(L,"15"),color:L},children:"Active"}),(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{backgroundColor:m.connected?"var(--status-pass-bg)":"var(--bg-secondary)",color:m.connected?"var(--status-pass-text)":"var(--text-tertiary)"},children:m.connected?"Connected":"Not configured"})]}),(0,t.jsx)("p",{className:"text-[11px] mt-0.5 truncate",style:{color:"var(--text-tertiary)"},children:r.description})]}),(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-tertiary)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"flex-shrink-0 transition-transform duration-200",style:{transform:o?"rotate(180deg)":"rotate(0deg)"},children:(0,t.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,t.jsx)("div",{style:{maxHeight:o?"600px":"0px",overflow:"hidden",transition:"max-height 250ms ease-out"},children:(0,t.jsxs)("div",{className:"px-5 pb-5 pt-1 space-y-3",children:[v||!m.connected?(0,t.jsxs)("div",{className:"space-y-2",children:[r.requiresBaseURL&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1",style:{color:"var(--text-tertiary)"},children:"API Base URL"}),(0,t.jsx)("input",{type:"text",value:g,onChange:e=>{b(e.target.value),w(null),N(null)},placeholder:"https://api.example.com/v1",className:"w-full px-3 py-2 text-sm rounded-lg outline-none border transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"}})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"password",value:x,onChange:e=>{y(e.target.value),w(null),N(null)},placeholder:r.keyPlaceholder,className:"flex-1 px-3 py-2 text-sm rounded-lg outline-none border transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"},onKeyDown:e=>{"Enter"===e.key&&U()}}),(0,t.jsx)("button",{onClick:U,disabled:f||!x.trim(),className:"px-4 py-2 text-xs font-medium rounded-lg border transition-all hover:bg-[var(--bg-secondary)] disabled:opacity-40",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:f?(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("svg",{className:"animate-spin",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",strokeDasharray:"30 70"})}),"Testing"]}):"Test"}),(0,t.jsx)("button",{onClick:M,disabled:!C&&!x.trim(),className:"px-4 py-2 text-xs font-medium rounded-lg transition-all hover:opacity-90 disabled:opacity-40",style:{backgroundColor:L,color:"#fff"},children:"Connect"}),v&&(0,t.jsx)("button",{onClick:()=>{h(!1),y(m.apiKey),b(m.baseURL||r.baseURL||""),w(null),N(null)},className:"px-3 py-2 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Cancel"})]}),j&&(0,t.jsx)("div",{className:"text-xs px-3 py-2 rounded-lg",style:{backgroundColor:j.ok?"var(--status-pass-bg)":"var(--status-fail-bg)",color:j.ok?"var(--status-pass-text)":"var(--status-fail-text)"},children:j.ok?"Connection verified! Click Connect to save.":"Failed: ".concat(j.error)}),r.keyUrl&&(0,t.jsxs)("p",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:["Get your key at"," ",(0,t.jsx)("a",{href:r.keyUrl,target:"_blank",rel:"noopener noreferrer",style:{color:L,textDecoration:"underline"},children:r.keyUrl.replace("https://","").split("/")[0]})]})]}):(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{onClick:()=>{y(m.apiKey),b(m.baseURL||r.baseURL||""),h(!0)},className:"flex-1 px-3 py-2 text-xs font-medium rounded-lg border transition-all hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Update API Key"}),(0,t.jsx)("button",{onClick:()=>{d(r.id,{apiKey:"",connected:!1,models:[],defaultModel:"",secondaryModel:""}),y(""),b(r.baseURL||""),h(!1),N(null)},className:"px-3 py-2 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--status-fail-bg)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},children:"Disconnect"}),!u&&(0,t.jsx)("button",{onClick:()=>p(r.id),className:"px-3 py-2 text-xs font-medium rounded-lg transition-all hover:opacity-90",style:{backgroundColor:L,color:"#fff"},children:"Set Active"})]}),m.connected&&(0,t.jsxs)("div",{className:"pt-3 border-t",style:{borderColor:"var(--border)"},children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1.5",style:{color:"var(--text-tertiary)"},children:"Default Model"}),(0,t.jsx)(c,{value:m.defaultModel,models:m.models.length>0?m.models:r.popularModels,onChange:e=>P("defaultModel",e)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1.5",style:{color:"var(--text-tertiary)"},children:"Fallback Model"}),(0,t.jsx)(c,{value:m.secondaryModel,models:m.models.length>0?m.models:r.popularModels,onChange:e=>P("secondaryModel",e),allowEmpty:!0})]})]}),u&&(0,t.jsxs)("div",{className:"mt-2 text-[10px] flex items-center gap-1.5",style:{color:"var(--text-tertiary)"},children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:L}}),"Using ",m.defaultModel,m.secondaryModel?" (fallback: ".concat(m.secondaryModel,")"):""]})]})]})})]})}function c(e){let{value:r,models:o,onChange:a,allowEmpty:s}=e,[i,n]=(0,l.useState)(!1),d=o.includes(r);return i||!d&&""!==r?(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)("input",{type:"text",value:r,onChange:e=>a(e.target.value),placeholder:"model-id",className:"flex-1 px-2.5 py-1.5 text-xs rounded-lg border outline-none transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"}}),o.length>0&&(0,t.jsx)("button",{onClick:()=>{n(!1),a(o[0])},className:"px-2 py-1.5 text-[10px] rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},title:"Switch to preset list",children:(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polyline",{points:"6 9 12 15 18 9"})})})]}):(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsxs)("select",{value:r,onChange:e=>a(e.target.value),className:"flex-1 px-2.5 py-1.5 text-xs rounded-lg border outline-none transition-colors cursor-pointer",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"},children:[s&&(0,t.jsx)("option",{value:"",children:"None"}),o.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]}),(0,t.jsx)("button",{onClick:()=>n(!0),className:"px-2 py-1.5 text-[10px] rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},title:"Enter custom model ID",children:"✏️"})]})}},4269:(e,r,o)=>{"use strict";o.d(r,{cn:()=>a});var t=o(2821),l=o(5889);function a(){for(var e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];return(0,l.QP)((0,t.$)(r))}},5307:(e,r,o)=>{"use strict";o.d(r,{b:()=>s});var t=o(5155),l=o(2115),a=o(4269);function s(e){let{width:r=40,height:o=40,x:s=-1,y:i=-1,strokeDasharray:n="0",squares:d,className:c,...p}=e,m=(0,l.useId)();return(0,t.jsxs)("svg",{"aria-hidden":"true",className:(0,a.cn)("pointer-events-none absolute inset-0 h-full w-full fill-gray-400/30 stroke-gray-400/30",c),...p,children:[(0,t.jsx)("defs",{children:(0,t.jsx)("pattern",{id:m,width:r,height:o,patternUnits:"userSpaceOnUse",x:s,y:i,children:(0,t.jsx)("path",{d:"M.5 ".concat(o,"V.5H").concat(r),fill:"none",strokeDasharray:n})})}),(0,t.jsx)("rect",{width:"100%",height:"100%",strokeWidth:0,fill:"url(#".concat(m,")")}),d&&(0,t.jsx)("svg",{x:s,y:i,className:"overflow-visible",children:d.map(e=>{let[l,a]=e;return(0,t.jsx)("rect",{strokeWidth:"0",width:r-1,height:o-1,x:l*r+1,y:a*o+1},"".concat(l,"-").concat(a))})})]})}},7669:(e,r,o)=>{"use strict";o.d(r,{P:()=>c});var t=o(2115),l=o(3362);let a="qa-llm-config",s={apiKey:"",baseURL:"",defaultModel:"",secondaryModel:"",models:[],connected:!1};function i(){let e={};for(let r of l.Pj)e[r.id]={...s,baseURL:r.baseURL||""};return{activeProvider:null,providers:e}}function n(){try{let r=localStorage.getItem(a);if(!r)return i();let o=JSON.parse(r);if(o.provider&&o.apiKey&&!o.providers){let e=i();return{...e,activeProvider:null,providers:{...e.providers,google:{...s,apiKey:o.apiKey,connected:!0}}}}let t=i(),n={...t,...o,providers:{...t.providers}};for(let r of l.Pj){var e;let t=null==(e=o.providers)?void 0:e[r.id];n.providers[r.id]={...s,baseURL:r.baseURL||"",...t}}return n}catch(e){return i()}}function d(e){try{localStorage.setItem(a,JSON.stringify(e))}catch(e){}}function c(){let[e,r]=(0,t.useState)(i),[o,l]=(0,t.useState)(!1);(0,t.useEffect)(()=>{r(n()),l(!0)},[]);let a=(0,t.useCallback)((e,o)=>{let t=n(),l={...t,providers:{...t.providers,[e]:{...t.providers[e],...o}}};d(l),r(l)},[]),s=(0,t.useCallback)(e=>{let o={...n(),activeProvider:e};d(o),r(o)},[]),c=e.activeProvider?e.providers[e.activeProvider]:null,p=o&&!!c&&c.apiKey.length>0&&c.connected;return{config:e,loaded:o,isConnected:p,activeProvider:c,activeProviderId:e.activeProvider,updateProvider:a,setActiveProvider:s}}}},e=>{e.O(0,[909,441,255,358],()=>e(e.s=2850)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[480],{2850:(e,r,o)=>{Promise.resolve().then(o.bind(o,4071))},3362:(e,r,o)=>{"use strict";o.d(r,{Pj:()=>t});let t=Object.values({openai:{id:"openai",name:"OpenAI",type:"native",description:"GPT models powering ChatGPT. Industry-leading language understanding.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openai.svg",keyUrl:"https://platform.openai.com/api-keys",keyPlaceholder:"sk-...",color:"#10A37F",sdkProvider:"openai",defaultModel:"gpt-4o-mini",popularModels:["gpt-4o","gpt-4o-mini","gpt-4-turbo","gpt-3.5-turbo"]},google:{id:"google",name:"Google Gemini",type:"native",description:"Google's multimodal AI with strong reasoning capabilities.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/googlegemini.svg",keyUrl:"https://aistudio.google.com/apikey",keyPlaceholder:"AIza...",color:"#4285F4",sdkProvider:"google",defaultModel:"gemini-2.5-flash",popularModels:["gemini-2.5-flash","gemini-2.5-pro","gemini-2.0-flash"]},anthropic:{id:"anthropic",name:"Anthropic",type:"native",description:"Claude models — safe, steerable, and highly capable.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/anthropic.svg",keyUrl:"https://console.anthropic.com/settings/keys",keyPlaceholder:"sk-ant-...",color:"#D97706",sdkProvider:"anthropic",defaultModel:"claude-sonnet-4-20250514",popularModels:["claude-sonnet-4-20250514","claude-haiku-4-20250514","claude-3-5-sonnet-20241022"]},deepseek:{id:"deepseek",name:"DeepSeek",type:"openai-compatible",description:"High-performance open-source models with competitive reasoning.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/deepseek.svg",keyUrl:"https://platform.deepseek.com/api_keys",keyPlaceholder:"sk-...",color:"#4D6BFE",sdkProvider:"openai",baseURL:"https://api.deepseek.com/v1",defaultModel:"deepseek-chat",popularModels:["deepseek-chat","deepseek-reasoner"]},xiaomi:{id:"xiaomi",name:"Xiaomi (MiMo)",type:"openai-compatible",description:"Xiaomi's MiMo models — OpenAI-compatible API.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/xiaomi.svg",keyUrl:"https://platform.xiaomimimo.com/",keyPlaceholder:"tp-...",color:"#FF6900",sdkProvider:"openai",baseURL:"https://token-plan-sgp.xiaomimimo.com/v1",defaultModel:"mimo-v2.5",popularModels:["mimo-v2.5","mimo-v2.5-pro"]},openrouter:{id:"openrouter",name:"OpenRouter",type:"openai-compatible",description:"Unified gateway to 200+ models — Claude, Llama, Mistral, Gemini, and more.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/openrouter.svg",keyUrl:"https://openrouter.ai/keys",keyPlaceholder:"sk-or-...",color:"#6366F1",sdkProvider:"openai",baseURL:"https://openrouter.ai/api/v1",defaultModel:"openrouter/free",popularModels:["openrouter/free","meta-llama/llama-4-maverick:free","google/gemini-2.5-flash:free","deepseek/deepseek-chat-v3-0324:free","mistralai/mistral-small-3.2-24b:free","qwen/qwen3-235b-a22b:free","microsoft/phi-4-reasoning-plus:free"]},groq:{id:"groq",name:"Groq",type:"native",description:"Ultra-fast inference with LPU hardware. Blazing speed for Llama, Mixtral, and Gemma models.",logoUrl:"https://cdn.jsdelivr.net/gh/simple-icons/simple-icons/icons/groq.svg",keyUrl:"https://console.groq.com/keys",keyPlaceholder:"gsk_...",color:"#F55036",sdkProvider:"groq",defaultModel:"llama-3.3-70b-versatile",popularModels:["llama-3.3-70b-versatile","llama-3.1-8b-instant","mixtral-8x7b-32768","gemma2-9b-it","meta-llama/llama-4-scout-17b-16e-instruct","qwen-qwq-32b"]},custom:{id:"custom",name:"Custom (OpenAI-compatible)",type:"openai-compatible",description:"Any OpenAI-compatible API — Ollama, LM Studio, vLLM, LiteLLM, etc.",logoUrl:"",keyUrl:"",keyPlaceholder:"sk-... or any key",color:"#6B7280",sdkProvider:"openai",defaultModel:"",popularModels:[],requiresBaseURL:!0}})},4071:(e,r,o)=>{"use strict";o.r(r),o.d(r,{default:()=>n});var t=o(5155),l=o(2115),a=o(5307),s=o(7669),i=o(3362);function n(){let{activeProviderId:e}=(0,s.P)(),[r,o]=(0,l.useState)(e);return(0,l.useEffect)(()=>{r||o(e)},[e]),(0,t.jsxs)("div",{className:"h-full overflow-auto relative",children:[(0,t.jsxs)("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[(0,t.jsx)(a.b,{width:40,height:40,x:-1,y:-1,className:"opacity-20"}),(0,t.jsx)("div",{className:"absolute inset-0",style:{background:"linear-gradient(to bottom, var(--bg-primary) 0%, transparent 20%, transparent 80%, var(--bg-primary) 100%)"}})]}),(0,t.jsxs)("div",{className:"relative p-6 max-w-4xl",children:[(0,t.jsxs)("div",{className:"mb-6",children:[(0,t.jsx)("h2",{className:"text-lg font-medium",style:{color:"var(--text-primary)"},children:"Integrations"}),(0,t.jsx)("p",{className:"text-xs mt-0.5",style:{color:"var(--text-tertiary)"},children:"Connect an AI provider to enable test case generation."})]}),(0,t.jsx)("h3",{className:"text-xs font-medium uppercase tracking-wider mb-3",style:{color:"var(--text-tertiary)"},children:"AI Providers"}),(0,t.jsx)("div",{className:"space-y-3",children:i.Pj.map(e=>(0,t.jsx)(d,{def:e,expanded:r===e.id,onToggle:()=>o(r=>r===e.id?null:e.id)},e.id))})]})]})}function d(e){let{def:r,expanded:o,onToggle:a}=e,{config:i,activeProviderId:n,updateProvider:d,setActiveProvider:p}=(0,s.P)(),m=i.providers[r.id],u=n===r.id,[v,h]=(0,l.useState)(!1),[x,y]=(0,l.useState)((null==m?void 0:m.apiKey)||""),[g,b]=(0,l.useState)((null==m?void 0:m.baseURL)||r.baseURL||""),[f,k]=(0,l.useState)(!1),[j,N]=(0,l.useState)(null),[C,w]=(0,l.useState)(null);(0,l.useEffect)(()=>{o&&m&&!m.connected&&!v&&(y(m.apiKey),b(m.baseURL||r.baseURL||""))},[o]),(0,l.useEffect)(()=>{(null==m?void 0:m.connected)&&m.apiKey&&!m.apiKey.startsWith("enc:")&&fetch("/api/llm/encrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:m.apiKey})}).then(e=>e.json()).then(e=>{e.encrypted&&d(r.id,{apiKey:e.encrypted})}).catch(()=>{})},[]);let U=async()=>{let e=x.trim();if(e){k(!0),N(null),w(null);try{let o=await fetch("/api/llm/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:r.id,apiKey:e,baseURL:g.trim()||void 0})}),t=await o.json();N(t),t.ok&&w(e)}catch(e){N({ok:!1,error:"Network error"})}finally{k(!1)}}},M=async()=>{let e=C||x.trim();if(!e)return;if(!C)return void await U();let o=e;try{let r=await fetch("/api/llm/encrypt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:e})}),t=await r.json();t.encrypted&&(o=t.encrypted)}catch(e){}d(r.id,{apiKey:o,baseURL:g.trim()||r.baseURL||"",connected:!0,models:r.popularModels,defaultModel:(null==m?void 0:m.defaultModel)||r.defaultModel||r.popularModels[0]||"",secondaryModel:(null==m?void 0:m.secondaryModel)||""}),h(!1),N(null),w(null)},P=(e,o)=>{d(r.id,{[e]:o})};if(!m)return null;let L=r.color||"#6B7280";return(0,t.jsxs)("div",{className:"rounded-xl border transition-all overflow-hidden",style:{borderColor:u?L:o?"var(--border-hover)":"var(--border)",backgroundColor:"var(--bg-card)",boxShadow:u?"0 0 0 1px ".concat(L,"20"):void 0},children:[(0,t.jsxs)("button",{onClick:a,className:"w-full px-5 py-4 flex items-center gap-3 text-left transition-colors hover:bg-[var(--bg-secondary)]",children:[(0,t.jsx)("div",{className:"w-11 h-11 rounded-lg flex items-center justify-center overflow-hidden flex-shrink-0",style:{backgroundColor:"".concat(L,"10")},children:r.logoUrl?(0,t.jsx)("img",{src:r.logoUrl,alt:r.name,width:24,height:24,className:"opacity-80",style:{filter:"brightness(0.5)"},onError:e=>{e.target.style.display="none"}}):(0,t.jsx)("span",{className:"text-xs font-bold",style:{color:L},children:"API"})}),(0,t.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-semibold",style:{color:"var(--text-primary)"},children:r.name}),u&&m.connected&&(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{backgroundColor:"".concat(L,"15"),color:L},children:"Active"}),(0,t.jsx)("span",{className:"text-[10px] font-medium px-1.5 py-0.5 rounded-full",style:{backgroundColor:m.connected?"var(--status-pass-bg)":"var(--bg-secondary)",color:m.connected?"var(--status-pass-text)":"var(--text-tertiary)"},children:m.connected?"Connected":"Not configured"})]}),(0,t.jsx)("p",{className:"text-[11px] mt-0.5 truncate",style:{color:"var(--text-tertiary)"},children:r.description})]}),(0,t.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-tertiary)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"flex-shrink-0 transition-transform duration-200",style:{transform:o?"rotate(180deg)":"rotate(0deg)"},children:(0,t.jsx)("polyline",{points:"6 9 12 15 18 9"})})]}),(0,t.jsx)("div",{style:{maxHeight:o?"600px":"0px",overflow:"hidden",transition:"max-height 250ms ease-out"},children:(0,t.jsxs)("div",{className:"px-5 pb-5 pt-1 space-y-3",children:[v||!m.connected?(0,t.jsxs)("div",{className:"space-y-2",children:[r.requiresBaseURL&&(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1",style:{color:"var(--text-tertiary)"},children:"API Base URL"}),(0,t.jsx)("input",{type:"text",value:g,onChange:e=>{b(e.target.value),w(null),N(null)},placeholder:"https://api.example.com/v1",className:"w-full px-3 py-2 text-sm rounded-lg outline-none border transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"}})]}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("input",{type:"password",value:x,onChange:e=>{y(e.target.value),w(null),N(null)},placeholder:r.keyPlaceholder,className:"flex-1 px-3 py-2 text-sm rounded-lg outline-none border transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"},onKeyDown:e=>{"Enter"===e.key&&U()}}),(0,t.jsx)("button",{onClick:U,disabled:f||!x.trim(),className:"px-4 py-2 text-xs font-medium rounded-lg border transition-all hover:bg-[var(--bg-secondary)] disabled:opacity-40",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:f?(0,t.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,t.jsx)("svg",{className:"animate-spin",width:12,height:12,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:(0,t.jsx)("circle",{cx:"12",cy:"12",r:"10",strokeDasharray:"30 70"})}),"Testing"]}):"Test"}),(0,t.jsx)("button",{onClick:M,disabled:!C&&!x.trim(),className:"px-4 py-2 text-xs font-medium rounded-lg transition-all hover:opacity-90 disabled:opacity-40",style:{backgroundColor:L,color:"#fff"},children:"Connect"}),v&&(0,t.jsx)("button",{onClick:()=>{h(!1),y(m.apiKey),b(m.baseURL||r.baseURL||""),w(null),N(null)},className:"px-3 py-2 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Cancel"})]}),j&&(0,t.jsx)("div",{className:"text-xs px-3 py-2 rounded-lg",style:{backgroundColor:j.ok?"var(--status-pass-bg)":"var(--status-fail-bg)",color:j.ok?"var(--status-pass-text)":"var(--status-fail-text)"},children:j.ok?"Connection verified! Click Connect to save.":"Failed: ".concat(j.error)}),r.keyUrl&&(0,t.jsxs)("p",{className:"text-[10px]",style:{color:"var(--text-tertiary)"},children:["Get your key at"," ",(0,t.jsx)("a",{href:r.keyUrl,target:"_blank",rel:"noopener noreferrer",style:{color:L,textDecoration:"underline"},children:r.keyUrl.replace("https://","").split("/")[0]})]})]}):(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)("button",{onClick:()=>{y(m.apiKey),b(m.baseURL||r.baseURL||""),h(!0)},className:"flex-1 px-3 py-2 text-xs font-medium rounded-lg border transition-all hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-secondary)"},children:"Update API Key"}),(0,t.jsx)("button",{onClick:()=>{d(r.id,{apiKey:"",connected:!1,models:[],defaultModel:"",secondaryModel:""}),y(""),b(r.baseURL||""),h(!1),N(null)},className:"px-3 py-2 text-xs font-medium rounded-lg border transition-colors hover:bg-[var(--status-fail-bg)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},children:"Disconnect"}),!u&&(0,t.jsx)("button",{onClick:()=>p(r.id),className:"px-3 py-2 text-xs font-medium rounded-lg transition-all hover:opacity-90",style:{backgroundColor:L,color:"#fff"},children:"Set Active"})]}),m.connected&&(0,t.jsxs)("div",{className:"pt-3 border-t",style:{borderColor:"var(--border)"},children:[(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1.5",style:{color:"var(--text-tertiary)"},children:"Default Model"}),(0,t.jsx)(c,{value:m.defaultModel,models:m.models.length>0?m.models:r.popularModels,onChange:e=>P("defaultModel",e)})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{className:"text-[10px] font-medium uppercase tracking-wider block mb-1.5",style:{color:"var(--text-tertiary)"},children:"Fallback Model"}),(0,t.jsx)(c,{value:m.secondaryModel,models:m.models.length>0?m.models:r.popularModels,onChange:e=>P("secondaryModel",e),allowEmpty:!0})]})]}),u&&(0,t.jsxs)("div",{className:"mt-2 text-[10px] flex items-center gap-1.5",style:{color:"var(--text-tertiary)"},children:[(0,t.jsx)("div",{className:"w-1.5 h-1.5 rounded-full",style:{backgroundColor:L}}),"Using ",m.defaultModel,m.secondaryModel?" (fallback: ".concat(m.secondaryModel,")"):""]})]})]})})]})}function c(e){let{value:r,models:o,onChange:a,allowEmpty:s}=e,[i,n]=(0,l.useState)(!1),d=o.includes(r);return i||!d&&""!==r?(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsx)("input",{type:"text",value:r,onChange:e=>a(e.target.value),placeholder:"model-id",className:"flex-1 px-2.5 py-1.5 text-xs rounded-lg border outline-none transition-colors focus:border-[var(--accent)]",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"}}),o.length>0&&(0,t.jsx)("button",{onClick:()=>{n(!1),a(o[0])},className:"px-2 py-1.5 text-[10px] rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},title:"Switch to preset list",children:(0,t.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polyline",{points:"6 9 12 15 18 9"})})})]}):(0,t.jsxs)("div",{className:"flex gap-1",children:[(0,t.jsxs)("select",{value:r,onChange:e=>a(e.target.value),className:"flex-1 px-2.5 py-1.5 text-xs rounded-lg border outline-none transition-colors cursor-pointer",style:{borderColor:"var(--border)",backgroundColor:"var(--bg-primary)",color:"var(--text-primary)"},children:[s&&(0,t.jsx)("option",{value:"",children:"None"}),o.map(e=>(0,t.jsx)("option",{value:e,children:e},e))]}),(0,t.jsx)("button",{onClick:()=>n(!0),className:"px-2 py-1.5 text-[10px] rounded-lg border transition-colors hover:bg-[var(--bg-secondary)]",style:{borderColor:"var(--border)",color:"var(--text-tertiary)"},title:"Enter custom model ID",children:"✏️"})]})}},4269:(e,r,o)=>{"use strict";o.d(r,{cn:()=>a});var t=o(2821),l=o(5889);function a(){for(var e=arguments.length,r=Array(e),o=0;o<e;o++)r[o]=arguments[o];return(0,l.QP)((0,t.$)(r))}},5307:(e,r,o)=>{"use strict";o.d(r,{b:()=>s});var t=o(5155),l=o(2115),a=o(4269);function s(e){let{width:r=40,height:o=40,x:s=-1,y:i=-1,strokeDasharray:n="0",squares:d,className:c,...p}=e,m=(0,l.useId)();return(0,t.jsxs)("svg",{"aria-hidden":"true",className:(0,a.cn)("pointer-events-none absolute inset-0 h-full w-full fill-gray-400/30 stroke-gray-400/30",c),...p,children:[(0,t.jsx)("defs",{children:(0,t.jsx)("pattern",{id:m,width:r,height:o,patternUnits:"userSpaceOnUse",x:s,y:i,children:(0,t.jsx)("path",{d:"M.5 ".concat(o,"V.5H").concat(r),fill:"none",strokeDasharray:n})})}),(0,t.jsx)("rect",{width:"100%",height:"100%",strokeWidth:0,fill:"url(#".concat(m,")")}),d&&(0,t.jsx)("svg",{x:s,y:i,className:"overflow-visible",children:d.map(e=>{let[l,a]=e;return(0,t.jsx)("rect",{strokeWidth:"0",width:r-1,height:o-1,x:l*r+1,y:a*o+1},"".concat(l,"-").concat(a))})})]})}},7669:(e,r,o)=>{"use strict";o.d(r,{P:()=>c});var t=o(2115),l=o(3362);let a="qa-llm-config",s={apiKey:"",baseURL:"",defaultModel:"",secondaryModel:"",models:[],connected:!1};function i(){let e={};for(let r of l.Pj)e[r.id]={...s,baseURL:r.baseURL||""};return{activeProvider:null,providers:e}}function n(){try{let r=localStorage.getItem(a);if(!r)return i();let o=JSON.parse(r);if(o.provider&&o.apiKey&&!o.providers){let e=i();return{...e,activeProvider:null,providers:{...e.providers,google:{...s,apiKey:o.apiKey,connected:!0}}}}let t=i(),n={...t,...o,providers:{...t.providers}};for(let r of l.Pj){var e;let t=null==(e=o.providers)?void 0:e[r.id];n.providers[r.id]={...s,baseURL:r.baseURL||"",...t}}return n}catch(e){return i()}}function d(e){try{localStorage.setItem(a,JSON.stringify(e))}catch(e){}}function c(){let[e,r]=(0,t.useState)(i),[o,l]=(0,t.useState)(!1);(0,t.useEffect)(()=>{r(n()),l(!0)},[]);let a=(0,t.useCallback)((e,o)=>{let t=n(),l={...t,providers:{...t.providers,[e]:{...t.providers[e],...o}}};d(l),r(l)},[]),s=(0,t.useCallback)(e=>{let o={...n(),activeProvider:e};d(o),r(o)},[]),c=e.activeProvider?e.providers[e.activeProvider]:null,p=o&&!!c&&c.apiKey.length>0&&c.connected;return{config:e,loaded:o,isConnected:p,activeProvider:c,activeProviderId:e.activeProvider,updateProvider:a,setActiveProvider:s}}}},e=>{e.O(0,[909,441,255,358],()=>e(e.s=2850)),_N_E=e.O()}]);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|