1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9571],{9571:(e,t,s)=>{"use strict";s.r(t),s.d(t,{ImeiGenerator:()=>o,MacGenerator:()=>c});var a=s(56464),r=s(86012),n=s(29567);function l(e){if(!/^\d{14}$/.test(e))throw Error("The IMEI body must contain exactly 14 digits.");return String((10-[...e].reduce((e,t,s)=>{let a=Number(t)*(s%2==1?2:1);return e+(a>9?a-9:a)},0)%10)%10)}function i({kind:e}){let[t,s]=(0,r.useState)(""),[n,c]=(0,r.useState)(null),[o,d]=(0,r.useState)("");return(0,a.jsxs)("section",{className:"panel identifier-check",children:[(0,a.jsx)("span",{className:"eyebrow",children:"FREE BROWSER-LOCAL CHECK"}),(0,a.jsx)("h2",{children:"mac"===e?"Inspect a MAC address":"Check an IMEI"}),(0,a.jsx)("p",{children:"Checks structure only. No device, manufacturer or registration lookup is performed. Your input stays in this browser."}),(0,a.jsxs)("form",{onSubmit:s=>{s.preventDefault(),c(null),d("");try{if("mac"===e){let e=function(e){let t,s=e.trim();if(!/^(?:[\da-f]{12}|(?:[\da-f]{2}:){5}[\da-f]{2}|(?:[\da-f]{2}-){5}[\da-f]{2}|(?:[\da-f]{4}\.){2}[\da-f]{4})$/i.test(s))throw Error("Enter 12 hex digits, or six byte pairs with consistent separators, or Cisco dot notation.");let a=s.replace(/[:.\-]/g,""),r=parseInt(a.slice(0,2),16);return{normalized:(t=a.toUpperCase(),t.match(/.{2}/g).join(":")),addressType:1&r?"Multicast":"Unicast",administration:2&r?"Local":"Universal",special:/^0{12}$/.test(a)?"All-zero address":/^f{12}$/i.test(a)?"Broadcast address":"None"}}(t);c({"Normalized address":e.normalized,"Address type":e.addressType,Administration:e.administration,"Special address":e.special})}else{let e=function(e){let t=e.trim();if(!/^\d{15}$/.test(t))throw Error("Enter exactly 15 digits without spaces or separators.");return{valid:l(t.slice(0,14))===t[14],tac:t.slice(0,8),serial:t.slice(8,14),checkDigit:t[14],expectedCheckDigit:l(t.slice(0,14))}}(t);c({Checksum:e.valid?"Valid Luhn checksum":"Invalid Luhn checksum","TAC prefix":e.tac,"Serial section":e.serial,"Check digit":e.checkDigit,"Expected check digit":e.expectedCheckDigit})}}catch(e){d(e.message)}},children:[(0,a.jsxs)("label",{children:["mac"===e?"MAC address":"IMEI number",(0,a.jsx)("input",{value:t,maxLength:64,spellCheck:!1,placeholder:"mac"===e?"02:00:00:12:34:56":"490154203237518",onChange:e=>{s(e.target.value),c(null),d("")},required:!0})]}),(0,a.jsxs)("button",{className:"button secondary",children:["Check ","mac"===e?"address":"IMEI"]})]}),o&&(0,a.jsx)("p",{className:"error",role:"alert",children:o}),(0,a.jsx)("div",{role:"status",children:n&&(0,a.jsx)("dl",{children:Object.entries(n).map(([e,t])=>(0,a.jsxs)("div",{children:[(0,a.jsx)("dt",{children:e}),(0,a.jsx)("dd",{children:t})]},e))})})]})}function c(){let e=(0,n.Vu)("mac"),[t,s]=(0,r.useState)(1),[l,c]=(0,r.useState)({notation:"colon",uppercase:!0,addressType:"unicast",administration:"local"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"workspace",children:[(0,a.jsxs)("form",{className:"control-panel",onSubmit:s=>{s.preventDefault(),e.generate({...l,amount:t})},children:[(0,a.jsxs)("div",{className:"panel-label",children:["MAC SETTINGS ",(0,a.jsx)("span",{children:"01"})]}),(0,a.jsxs)("label",{children:["Output format",(0,a.jsxs)("select",{value:l.notation,onChange:e=>c({...l,notation:e.target.value}),children:[(0,a.jsx)("option",{value:"colon",children:"Colon \xb7 02:00:00:12:34:56"}),(0,a.jsx)("option",{value:"hyphen",children:"Hyphen \xb7 02-00-00-12-34-56"}),(0,a.jsx)("option",{value:"dot",children:"Cisco \xb7 0200.0012.3456"}),(0,a.jsx)("option",{value:"plain",children:"Plain \xb7 020000123456"})]})]}),(0,a.jsxs)("label",{children:["Address type",(0,a.jsxs)("select",{value:l.addressType,onChange:e=>c({...l,addressType:e.target.value}),children:[(0,a.jsx)("option",{value:"unicast",children:"Unicast (individual)"}),(0,a.jsx)("option",{value:"multicast",children:"Multicast (group)"})]})]}),(0,a.jsxs)("label",{children:["Administration",(0,a.jsxs)("select",{value:l.administration,onChange:e=>c({...l,administration:e.target.value}),children:[(0,a.jsx)("option",{value:"local",children:"Local (recommended for test data)"}),(0,a.jsx)("option",{value:"universal",children:"Universal-bit format (synthetic)"})]})]}),(0,a.jsxs)("label",{className:"checkbox",children:[(0,a.jsx)("input",{type:"checkbox",checked:l.uppercase,onChange:e=>c({...l,uppercase:e.target.checked})}),"Uppercase letters"]}),(0,a.jsxs)("label",{children:["Number of addresses",(0,a.jsx)("input",{type:"number",min:1,max:e.allowance?.bulk??1,required:!0,value:t,onChange:e=>s(Number(e.target.value))})]}),(0,a.jsx)(n.$B,{state:e}),(0,a.jsx)("button",{className:"button primary full",disabled:e.busy,children:e.busy?"Generatingâ¦":"Generate MAC addresses"}),(0,a.jsx)("p",{className:"small-text",children:"Unique within this batch, not guaranteed unique on your network. Universal-bit output does not use a verified manufacturer prefix."})]}),(0,a.jsx)(n.Yd,{state:e,synthetic:!0,compact:!0})]}),(0,a.jsx)(i,{kind:"mac"})]})}function o(){let e=(0,n.Vu)("imei"),[t,s]=(0,r.useState)(1),[l,c]=(0,r.useState)("");return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"workspace",children:[(0,a.jsxs)("form",{className:"control-panel",onSubmit:s=>{s.preventDefault(),e.generate({amount:t,prefix:l})},children:[(0,a.jsxs)("div",{className:"panel-label",children:["IMEI SETTINGS ",(0,a.jsx)("span",{children:"01"})]}),(0,a.jsxs)("label",{children:["TAC prefix (optional)",(0,a.jsx)("input",{value:l,maxLength:8,pattern:"[0-9]{8}",inputMode:"numeric",placeholder:"8 digits, or leave empty",onChange:e=>c(e.target.value)})]}),(0,a.jsx)("p",{className:"small-text",children:"Leave empty for a random synthetic prefix. A custom prefix is not checked against the GSMA registry."}),(0,a.jsxs)("label",{children:["Number of IMEIs",(0,a.jsx)("input",{type:"number",min:1,max:e.allowance?.bulk??1,required:!0,value:t,onChange:e=>s(Number(e.target.value))})]}),(0,a.jsx)(n.$B,{state:e}),(0,a.jsx)("button",{className:"button primary full",disabled:e.busy,children:e.busy?"Generatingâ¦":"Generate IMEI test data"}),(0,a.jsx)("p",{className:"small-text",children:"15 digits with a calculated Luhn checksum. For software tests and mock
1inventories. These values do not prove device assignment, activation or ownership."})]}),(0,a.jsx)(n.Yd,{state:e,synthetic:!0,compact:!0})]}),(0,a.jsx)(i,{kind:"imei"})]})}s(20433)},12868:(e,t,s)=>{"use strict";s.d(t,{A:()=>n});var a=s(20387);let r={name:"download",size:24,node:[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]};r.node;let n=(0,a.A)(r)},20433:()=>{},29567:(e,t,s)=>{"use strict";s.d(t,{$B:()=>u,Vu:()=>d,Yd:()=>h});var a=s(56464),r=s(35183),n=s(86012),l=s(29843),i=s(12868),c=s(93197),o=s(86277);function d(e){let[t,s]=(0,n.useState)([]),[a,r]=(0,n.useState)(null),[l,i]=(0,n.useState)(!1),[d,u]=(0,n.useState)(""),[h,p]=(0,n.useState)(""),m=(0,n.useRef)(!1),[x,j]=(0,n.useState)(null);async function f(){try{let e=await fetch("/api/me",{cache:"no-store"});e.ok&&r((await e.json()).entitlement)}catch{}}async function y(t){if(!m.current){m.current=!0,i(!0),u(""),p(""),s([]),j(null);try{let a=await fetch("/api/"+e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await a.json();if(!a.ok)throw Error(r.error);s(r.records),j(r.meta?.replay?{...r.meta,configuration:t}:null),p(r.meta?.notice||"Your results are ready."),await f()}catch(e){u(e.message)}finally{i(!1),m.current=!1}}}async function b(e){try{await (0,c.Dk)(e),p("Copied.")}catch(e){u(e.message)}}async function g(s){try{await (0,o.L)(t,s,"genory-"+e,x??void 0)}catch(e){u(e.message)}}return(0,n.useEffect)(()=>{let e=setTimeout(()=>{f()},0);return()=>clearTimeout(e)},[]),{records:t,metadata:x,allowance:a,busy:l,error:d,message:h,setError:u,setMessage:p,generate:y,copy:b,download:g}}function u({state:e}){return(0,a.jsxs)("p",{className:"small-text",children:[e.allowance?`${(0,r.VV)(e.allowance.remaining)} records remaining. Up to ${e.allowance.bulk} per request.`:"Guests: 5 records per day, one per request."," ",(0,a.jsx)("a",{href:"/pricing",children:"View plans"})]})}function h({state:e,synthetic:t=!1,compact:s=!1}){let r=Object.keys(e.records[0]||{});return(0,a.jsxs)("section",{className:"result-panel new-tool-results"+(s?" identifier-results":""),children:[(0,a.jsx)("span",{className:"eyebrow",children:t?"SYNTHETIC TEST DATA":"OUTPUT"}),(0,a.jsx)("h2",{children:e.records.length?`${e.records.length} ${1===e.records.length?"result":"results"} ready`:"Your results appear here"}),(0,a.jsx)("p",{role:"status",className:"status",children:e.message}),e.error&&(0,a.jsx)("p",{role:"alert",className:"error",children:e.error}),e.metadata?.replay&&(0,a.jsxs)("p",{className:"small-text",style:{overflowWrap:"anywhere"},children:["Reproducible results \xb7 Seed: ",e.metadata.replay.seed," \xb7 Engine: ",e.metadata.replay.generatorVersion,". JSON downloads include the seed, configuration and data version."]}),e.records.length>0?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"export-actions",children:[(0,a.jsxs)("button",{onClick:()=>e.copy(e.records.map(e=>Object.values(e).join(" ")).join("\n")),children:[(0,a.jsx)(l.A,{size:16}),"Copy values"]}),(0,a.jsxs)("button",{disabled:!e.allowance?.canExport,onClick:()=>e.download("json"),children:[(0,a.jsx)(i.A,{size:16}),"JSON"]}),(0,a.jsxs)("button",{disabled:!e.allowance?.canExport,onClick:()=>e.download("csv"),children:[(0,a.jsx)(i.A,{size:16}),"CSV"]})]}),(0,a.jsx)("div",{className:"table-wrap",tabIndex:0,"aria-label":"Generated results",children:(0,a.jsxs)("table",{children:[(0,a.jsx)("thead",{children:(0,a.jsxs)("tr",{children:[r.map(e=>(0,a.jsx)("th",{children:e},e)),(0,a.jsx)("th",{children:"Copy"})]})}),(0,a.jsx)("tbody",{children:e.records.map((t,s)=>(0,a.jsxs)("tr",{children:[r.map(e=>(0,a.jsx)("td",{children:String(t[e]??"")},e)),(0,a.jsx)("td",{children:(0,a.jsx)("button",{className:"field-copy","aria-label":`Copy result ${s+1}`,onClick:()=>e.copy(Object.values(t).join(" ")),children:(0,a.jsx)(l.A,{size:16})})})]},s))})]})})]}):s?(0,a.jsx)("p",{className:"small-text",children:e.busy?"Generatingâ¦":e.error?"Please try Generate again.":"Select Generate to create your first sample."}):(0,a.jsxs)("div",{className:"empty-state",children:[(0,a.jsx)("span",{className:"empty-symbol",children:"{ }"}),(0,a.jsx)("p",{children:"Choose your settings and select Generate."})]}),(!s||e.records.length>0)&&(0,a.jsxs)("p",{className:"small-text",children:[!s&&"Scroll the table horizontally to see more columns. ","JSON and CSV downloads are included with Pro and Developer. Generated results are not stored."]})]})}},35183:(e,t,s)=>{"use strict";s.d(t,{IM:()=>r,TG:()=>i,VV:()=>c,hF:()=>l,mu:()=>a,q:()=>d,vw:()=>o});let a={months:12,freeMonths:2},r=Math.round(a.freeMonths/a.months*100);function n(e){return e*(a.months-a.freeMonths)}function l(e){let t=e*a.months,s=n(e);return{original:t,price:s,savings:t-s}}function i(e,t="USD"){return new Intl.NumberFormat("en-US",{style:"currency",currency:t}).format(e/100)}
1function c(e){return null===e?"Unlimited":e.toLocaleString("en")}let o={free:{name:"Free",monthlyCents:0,yearlyCents:0,records:20,bulk:1,presets:1,keys:0,rpm:30},pro:{name:"Pro",monthlyCents:790,get yearlyCents(){return n(this.monthlyCents)},records:5e4,bulk:50,presets:20,keys:0,rpm:30},developer:{name:"Developer",monthlyCents:1990,get yearlyCents(){return n(this.monthlyCents)},records:5e5,bulk:100,presets:100,keys:3,rpm:60}};function d(e,t=Date.now()){let s=function(e,t=Date.now()){return e&&("pro"===e.plan||"developer"===e.plan)&&(!e.paid_started_at||new Date(e.paid_started_at).getTime()<=t)&&(!0===e.subscription_unlimited&&null===e.paid_until||new Date(e.paid_until).getTime()>t)?e.plan:"free"}(e,t),a=new Date(e?.paid_started_at??t).getTime(),r="free"===s?new Date(t).toISOString().slice(0,10):`${e.paid_started_at}:${Math.floor(Math.max(0,t-a)/2592e6)}`,n=e?.role==="admin"&&!0===e.unlimited_generation,l="free"!==s&&e?.subscription_unlimited===!0&&null===e.paid_until,i="free"===s?864e5*Math.floor(t/864e5)+864e5:Math.min(a+(Math.floor(Math.max(0,t-a)/2592e6)+1)*2592e6,l?1/0:new Date(e.paid_until).getTime());return{plan:s,adFree:"free"!==s,canExport:"free"!==s,apiEnabled:"developer"===s,...o[s],unlimitedGeneration:n,unlimitedSubscription:l,records:n?null:e?o[s].records:5,period:r,resetAt:n?null:new Date(i).toISOString(),paidUntil:"free"===s?null:e.paid_until}}},86277:(e,t,s)=>{"use strict";s.d(t,{L:()=>r});var a=s(93197);async function r(e,t,r,n){let l=await fetch("/api/export-access",{cache:"no-store"}),i=await l.json();if(!l.ok)throw Error(i.error||"Pro access is required for file exports.");let{toCSV:c}=await s.e(8671).then(s.bind(s,58671)),o="json"===t?JSON.stringify(n?{records:e,meta:n}:e,null,2):"csv"===t?c(e):(0,a.F7)(e),d=URL.createObjectURL(new Blob([o],{type:"json"===t?"application/json":"csv"===t?"text/csv;charset=utf-8":"text/plain;charset=utf-8"})),u=document.createElement("a");u.href=d,u.download=`${r}.${t}`,u.click(),setTimeout(()=>URL.revokeObjectURL(d),1e3)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.