PageSourceSearch

https://basehub-alpha.vercel.app/assets/BaseGuildCompanion-K18EjBqg.js

js basehub-alpha.vercel.app collected 2026-10-03 06:10:56 UTC 19,190 bytes, 6 lines download raw bytes

1import{v as e,K as Y,a5 as Q,J as V,L as X,a6 as ee,ae as te}from"./vendor-wagmi-Sf3uR9Qd.js";import{r as l,L as G}from"./vendor-react-CIHY58rS.js";import{r as ne,aj as ie,Z as A,N as S,ak as oe,u as se,E as re,Y as ae,b as C,al as le,ab as _,am as U}from"./index-V-xkhitB.js";import{B as de}from"./BackButton-Mjrcm_PJ.js";import{R as ce}from"./refresh-cw-CNnkhnPA.js";import{C as pe}from"./check-circle-2-E5e-aJ45.js";import"./vendor-web3-Ccf3ZxeP.js";import"./vendor-farcaster-BajpnQ26.js";import"./vendor-x402-CEtx-g5K.js";import"./arrow-left-KFBjTtt0.js";/**
2 * @license lucide-react v0.294.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const xe=ne("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);function ue({label:n="Fast Deploy",style:t,className:o,compact:s}){const{openModal:d}=ie();return s?e.jsxs("button",{type:"button",onClick:d,className:o,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"8px 14px",borderRadius:10,border:"1px solid rgba(236, 72, 153, 0.4)",background:"rgba(236, 72, 153, 0.15)",color:"#f472b6",fontSize:13,fontWeight:600,cursor:"pointer",...t},children:[e.jsx(A,{size:14}),n]}):e.jsxs("button",{type:"button",onClick:d,className:o,style:{display:"inline-flex",alignItems:"center",gap:8,padding:"10px 18px",borderRadius:12,border:"1px solid rgba(236, 72, 153, 0.4)",background:"rgba(236, 72, 153, 0.15)",color:"#f472b6",fontSize:14,fontWeight:600,cursor:"pointer",...t},children:[e.jsx(A,{size:16}),n]})}const fe="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",ge=[{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{name:"a",type:"address"}],outputs:[{type:"uint256"}]}],K=30*24*60*60,he="https://base.blockscout.com/api";function be(n){const{eth:t,usdc:o,totalTx:s,activeInLast30d:d,explorerOk:p}=n,r=o>=1||t>=5e-4,c=o>=100||t>=.03,a=t>=.3||o>=1e3,x=p?`Tx count (Blockscout): ${s}`:`Tx count (fallback): ${s}`;return[{id:"active",guildTitle:"Active on Base",description:"Make at least one transaction on Base in the past 30 days (Guild).",completed:d===!0,detail:p===!1?"Explorer unavailable — connect wallet on Base & refresh.":d?"Activity in the last 30 days detected.":"No activity in the last 30 days detected (via explorer)."},{id:"tx10",guildTitle:"Based: 10 transactions",description:"Claim once you reach 10 transactions on Base (Guild).",completed:s>=10,detail:x},{id:"tx50",guildTitle:"Based: 50 transactions",description:"Claim once you reach 50 transactions on Base (Guild).",completed:s>=50,detail:x},{id:"tx100",guildTitle:"Based: 100 transactions",description:"Claim once you reach 100 transactions on Base (Guild).",completed:s>=100,detail:x},{id:"tx1000",guildTitle:"Based: 1,000 transactions",description:"Claim once you reach 1,000 transactions on Base (Guild).",completed:s>=1e3,detail:x},{id:"hold1",guildTitle:"Holding: $1+",description:"Hold at least 1 USDC or 0.0005 ETH on Base (Guild).",completed:r,detail:`USDC ${o.toFixed(4)} · ETH ${t.toFixed(6)}`},{id:"hold100",guildTitle:"Holding: $100+",description:"Hold at least 100 USDC or 0.03 ETH on Base (Guild).",completed:c,detail:`USDC ${o.toFixed(2)} · ETH ${t.toFixed(6)}`},{id:"hold1000",guildTitle:"Holding: $1,000+",description:"Hold at least 0.3 ETH or 1,000 USDC on Base (Guild).",completed:a,detail:`USDC ${o.toFixed(2)} · ETH ${t.toFixed(6)}`}]}function ye(n){const{contractsDeployed:t,explorerOk:o}=n;return[{id:"deploy1",guildTitle:"Contract Deployed: 1",description:"Deployed your first smart contract on Base (Guild — Builders & Founders).",completed:t>=1,detail:o===!1?"Explorer unavailable.":`Contracts deployed (estimated): ${t}`},{id:"deploy5",guildTitle:"Contracts Deployed: 5",description:"Deployed 5 contracts on Base (Guild).",completed:t>=5,detail:`Contracts deployed (estimated): ${t}`},{id:"deploy10",guildTitle:"Contracts Deployed: 10+",description:"Deployed 10+ contracts on Base (Guild).",completed:t>=10,detail:`Contracts deployed (estimated): ${t}`}]}async function me(n,t=1,o=1e4){const s=`${he}?module=account&action=txlist&address=${n}&startblock=0&endblock=99999999&page=${t}&offset=${o}&sort=desc`,p=await(await fetch(s)).json();return p.status!=="1"||!Array.isArray(p.result)?[]:p.result}function je(n){const t=n.timeStamp??n.timestamp;return t==null?null:typeof t=="string"?parseInt(t,10):Number(t)}function ke(n){const t=(n.to||"").toLowerCase(),o=(n.contractAddress||"").toLowerCase();return(!t||t==="0x"||t==="0x0000000000000000000000000000000000000000")&&o.startsWith("0x")&&o.length===42}async function Se(n){var p;let t=0,o=!1,s=0,d=!1;try{const r=await fetch(`https://base.blockscout.com/api/v2/addresses/${n}`);if(r.ok){const c=await r.json(),a=c.transactions_count??c.transaction_count??((p=c.counters)==null?void 0:p.transactions_count);a!=null&&a!==""&&(t=Number(a)),d=!0}}catch{}try{const r=await me(n,1,1e4);r.length>0&&(d=!0);const c=Math.floor(Date.now()/1e3);for(const a of r){const x=je(a);if(x!=null&&c-x<=K){o=!0;break}}for(const a of r)ke(a)&&(s+=1);t===0&&r.length>0&&(t=r.length)}catch(r){console.warn("Blockscout txlist:",r)}if(!o)try{const r=await fetch(`https://base.blockscout.com/api/v2/addresses/${n}/transactions?filter=from%20or%20to`);if(r.ok){const c=await r.json(),a=c.items||c.result||[];d=!0;const x=Math.floor(Date.now()/1e3);for(const g of a.slice(0,200)){let m=null;
6const u=g.timestamp??g.block_timestamp??g.blockTimestamp;if(typeof u=="string"&&u.includes("T"))m=Math.floor(new Date(u).getTime()/1e3);else if(u!=null){const y=typeof u=="string"?parseInt(u,10):Number(u);Number.isFinite(y)&&(m=y>1e12?Math.floor(y/1e3):y)}if(m!=null&&x-m<=K){o=!0;break}}}}catch{}return{totalTx:t,activeInLast30d:o,contractsDeployed:s,explorerOk:d}}const Ge=()=>{const{isConnected:n,address:t}=Y(),o=Q(),s=V({chainId:S.BASE.chainId}),{switchChain:d}=oe(),{sendGMTransaction:p,sendGNTransaction:r,isLoading:c}=se(),{data:a,refetch:x}=X({address:t,chainId:S.BASE.chainId,query:{enabled:!!t}}),{data:g,refetch:m}=ee({address:fe,abi:ge,functionName:"balanceOf",args:t?[t]:void 0,chainId:S.BASE.chainId,query:{enabled:!!t}}),[u,y]=l.useState(null),[f,O]=l.useState({totalTx:0,activeInLast30d:!1,contractsDeployed:0,explorerOk:!1}),[W,L]=l.useState(!1),[j,M]=l.useState(!1),[k,H]=l.useState(!1),q=o===S.BASE.chainId,w=l.useMemo(()=>a?Number(a.formatted):0,[a]),v=l.useMemo(()=>g==null?0:Number(te(g,6)),[g]),B=l.useCallback(async()=>{if(!(!t||!s))try{const i=await s.getTransactionCount({address:t});y(Number(i))}catch(i){console.error(i),y(0)}},[t,s]),T=l.useCallback(async()=>{if(!t){O({totalTx:0,activeInLast30d:!1,contractsDeployed:0,explorerOk:!1});return}const i=await Se(t);O(i)},[t]);l.useEffect(()=>{B()},[B]),l.useEffect(()=>{T()},[T]);const z=l.useMemo(()=>{const i=f.explorerOk?f.totalTx:u??0;return be({eth:w,usdc:v,totalTx:i,activeInLast30d:f.activeInLast30d,explorerOk:f.explorerOk})},[w,v,f,u]),D=l.useMemo(()=>ye({contractsDeployed:f.contractsDeployed,explorerOk:f.explorerOk}),[f]),h=l.useMemo(()=>[...z,...D],[z,D]),N=h.filter(i=>i.completed).length,$=h.length?Math.round(N/h.length*100):0,I=l.useMemo(()=>h.filter(i=>i.completed),[h]),R=l.useMemo(()=>h.filter(i=>!i.completed),[h]),E=async()=>{L(!0),await Promise.all([B(),x(),m(),T()]),L(!1)},P=async()=>{if(!n){alert("Connect your wallet first");return}M(!0);try{await p("GM from BaseHub! 🎮"),await E()}catch(i){console.error(i)}finally{M(!1)}},Z=async()=>{if(!n){alert("Connect your wallet first");return}H(!0);try{await r("GN from BaseHub! 🌙"),await E()}catch(i){console.error(i)}finally{H(!1)}},J=async()=>{try{await d({chainId:S.BASE.chainId})}catch(i){console.error(i)}},F=i=>i.map(b=>e.jsxs("div",{style:{background:"rgba(15,23,42,0.85)",border:"1px solid rgba(255,255,255,0.08)",borderRadius:"12px",padding:"14px",display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"12px",flexWrap:"wrap"},children:[e.jsxs("div",{style:{display:"flex",gap:"10px",minWidth:0,flex:1},children:[b.completed?e.jsx(pe,{size:20,color:"#22c55e",style:{flexShrink:0}}):e.jsx(xe,{size:20,color:"#64748b",style:{flexShrink:0}}),e.jsxs("div",{children:[e.jsx("div",{style:{color:"#fff",fontWeight:700},children:b.guildTitle}),e.jsx("div",{style:{color:"#94a3b8",fontSize:"13px"},children:b.description}),b.detail&&e.jsx("div",{style:{color:"#60a5fa",fontSize:"12px",marginTop:"4px"},children:b.detail})]})]}),e.jsx("div",{style:{fontWeight:700,color:b.completed?"#86efac":"#94a3b8",fontSize:"13px",alignSelf:"center"},children:b.completed?"Done":"Open"})]},b.id));return e.jsxs("div",{style:{maxWidth:"1100px",margin:"0 auto",padding:"20px"},children:[e.jsx(re,{title:"Base Guild — Onchain & Builders",description:"Guild onchain and contract deploy requirements with Base wallet checks."}),e.jsx(de,{}),e.jsxs("div",{style:{background:"linear-gradient(145deg, rgba(37, 99, 235, 0.16), rgba(15, 23, 42, 0.96))",border:"1px solid rgba(59, 130, 246, 0.35)",borderRadius:"16px",padding:"20px",marginTop:"12px"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px",flexWrap:"wrap"},children:[e.jsx(ae,{size:22,color:"#60a5fa"}),e.jsx("h1",{style:{margin:0,color:"#fff",fontSize:"22px"},children:"Base Guild"}),e.jsxs("div",{style:{marginLeft:"auto",display:"flex",gap:"12px",flexWrap:"wrap",fontSize:"13px"},children:[e.jsxs("a",{href:"https://guild.xyz/base/onchain",target:"_blank",rel:"noreferrer",style:{color:"#93c5fd",display:"inline-flex",alignItems:"center",gap:"4px"},children:["Onchain ",e.jsx(C,{size:14})]}),e.jsxs("a",{href:"https://guild.xyz/base/builders-founders",target:"_blank",rel:"noreferrer",style:{color:"#93c5fd",display:"inline-flex",alignItems:"center",gap:"4px"},children:["Builders ",e.jsx(C,{size:14})]})]})]}),e.jsxs("p",{style:{color:"#cbd5e1",margin:"12px 0 0 0",fontSize:"14px"},children:["Only the ",e.jsx("strong",{children:"Onchain"})," roles from"," ",e.jsx("a",{href:"https://guild.xyz/base/onchain",target:"_blank",rel:"noreferrer",style:{color:"#93c5fd"},children:"guild.xyz/base/onchain"})," ","and ",e.jsx("strong",{children:"contract deploy"})," roles from"," ",e.jsx("a",{href:"https://guild.xyz/base/builders-founders",target:"_blank",rel:"noreferrer",style:{color:"#93c5fd"},children:"Builders & Founders"}),". Final verification is always on Guild."]}),e.jsxs("div",{style:{marginTop:"12px",padding:"10px 12px",background:"rgba(15,23,42,0.6)",borderRadius:"10px",border:"1px solid rgba(148,163,184,0.25)",color:"#94a3b8",fontSize:"12px",display:"flex",gap:"8px",alignItems:"flex-start"},children:[e.jsx(le,{size:16,style:{flexShrink:0,marginTop:"2px"}}),e.jsxs("span",{children:[e.jsx("strong",{children:"Holding"})," uses raw ",e.jsx("strong",{children:"USDC"})," and ",e.jsx("strong",{children:"ETH"})," on Base (same OR rules as Guild)."," ",e.jsx("strong",{children:"Transactions"})," and ",e.jsx("strong",{children:"30-day activity"})," use Base Blockscout where possible; counts may differ slightly from Guild’s indexer. ",e.jsx("strong",{children:"Deploys"})," are estimated from outgoing txs that created a contract."]})]}),!n&&e.jsx("p",{style:{color:"#fbbf24",marginTop:"12px"},children:"Connect your wallet to run checks."}),n&&!q&&e.jsxs("div",{style:{marginTop:"12px",display:"flex",alignItems:"center",gap:"10px",flexWrap:"wrap"},children:[e.jsx("span",{style:{color:"#fca5a5"},children:"Switch to Base for balance / USDC checks."}),e.jsx("button",{type:"button",onClick:J,style:{border:"none",background:"#2563eb",color:"#fff",borderRadius:"8px",padding:"8px 12px",cursor:"pointer"},children:"Switch to Base"})]})]}),e.jsxs("div",{style:{marginTop:"16px",background:"rgba(15,23,42,0.75)",border:"1px solid rgba(59, 130, 246, 0.22)",borderRadius:"14px",padding:"16px"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",flexWrap:"wrap",gap:"12px"},children:[e.jsxs("div",{children:[e.jsx("h2",{style:{margin:0,color:"#f1f5f9",fontSize:"17px",fontWeight:700},children:"Guild Readiness"}),e.jsxs("p",{style:{margin:"6px 0 0 0",color:"#94a3b8",fontSize:"12px",maxWidth:"640px",lineHeight:1.45},children:["Wallet + Blockscout based ",e.jsx("strong",{children:"estimated"})," summary. Which roles are likely complete and which are still open in one view. Final verification and claim are always on"," ",e.jsx("a",{href:"https://guild.xyz/base/onchain",target:"_blank",rel:"noreferrer",style:{color:"#93c5fd"},children:"Guild"}),"."]})]}),e.jsxs("button",{type:"button",onClick:E,disabled:W,style:{border:"1px solid rgba(96,165,250,0.5)",background:"rgba(59,130,246,0.2)",color:"#bfdbfe",borderRadius:"8px",padding:"6px 10px",cursor:"pointer",display:"inline-flex",alignItems:"center",gap:"6px",fontSize:"12px",flexShrink:0},children:[e.jsx(ce,{size:14,className:W?"spinning":""}),"Refresh"]})]}),n&&t&&!f.explorerOk&&e.jsx("div",{style:{marginTop:"12px",padding:"8px 10px",borderRadius:"8px",background:"rgba(251, 191, 36, 0.08)",border:"1px solid rgba(251, 191, 36, 0.28)",color:"#fcd34d",fontSize:"12px"},children:"Explorer is currently limited or unavailable; tx and deploy lines may be incomplete, so re-check on Guild."}),e.jsxs("div",{style:{marginTop:"14px",display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:"8px"},children:[e.jsx("span",{style:{color:"#cbd5e1",fontSize:"13px",fontWeight:600},children:"Progress (Onchain + deploy)"}),e.jsxs("span",{style:{color:"#93c5fd",fontWeight:700,fontSize:"13px"},children:[N,"/",h.length," · %",$]})]}),e.jsx("div",{style:{marginTop:"8px",height:"10px",background:"rgba(255,255,255,0.08)",borderRadius:"999px",overflow:"hidden"},children:e.jsx("div",{style:{width:`${$}%`,height:"100%",background:"linear-gradient(90deg, #2563eb, #22c55e)"}})}),e.jsxs("div",{style:{marginTop:"14px",display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"12px"},children:[e.jsxs("div",{style:{borderRadius:"10px",border:"1px solid rgba(34, 197, 94, 0.25)",background:"rgba(22, 101, 52, 0.12)",padding:"12px"},children:[e.jsxs("div",{style:{color:"#86efac",fontSize:"12px",fontWeight:700,marginBottom:"8px"},children:["Likely complete (",I.length,")"]}),I.length===0?e.jsx("div",{style:{color:"#64748b",fontSize:"12px"},children:"No completed roles yet — check tasks below."}):e.jsx("ul",{style:{margin:0,paddingLeft:"18px",color:"#e2e8f0",fontSize:"12px",lineHeight:1.5},children:I.map(i=>e.jsx("li",{children:i.guildTitle},i.id))})]}),e.jsxs("div",{style:{borderRadius:"10px",border:"1px solid rgba(248, 113, 113, 0.22)",background:"rgba(127, 29, 29, 0.12)",padding:"12px"},children:[e.jsxs("div",{style:{color:"#fca5a5",fontSize:"12px",fontWeight:700,marginBottom:"8px"},children:["Open (estimated) (",R.length,")"]}),R.length===0?e.jsx("div",{style:{color:"#86efac",fontSize:"12px"},children:"Everything looks complete — verify on Guild."}):e.jsx("ul",{style:{margin:0,paddingLeft:"18px",color:"#e2e8f0",fontSize:"12px",lineHeight:1.5},children:R.map(i=>e.jsx("li",{children:i.guildTitle},i.id))})]})]}),e.jsxs("div",{style:{marginTop:"14px",display:"flex",flexWrap:"wrap",gap:"8px",alignItems:"center"},children:[e.jsx("span",{style:{color:"#64748b",fontSize:"12px",marginRight:"4px"},children:"Final step:"}),e.jsxs("a",{href:"https://guild.xyz/base/onchain",target:"_blank",rel:"noreferrer",style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 12px",borderRadius:"8px",background:"rgba(37, 99, 235, 0.25)",border:"1px solid rgba(96, 165, 250, 0.45)",color:"#bfdbfe",fontSize:"12px",fontWeight:600,textDecoration:"none"},children:["Guild — Onchain ",e.jsx(C,{size:14})]}),e.jsxs("a",{href:"https://guild.xyz/base/builders-founders",target:"_blank",rel:"noreferrer",style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 12px",borderRadius:"8px",background:"rgba(37, 99, 235, 0.15)",border:"1px solid rgba(96, 165, 250, 0.35)",color:"#93c5fd",fontSize:"12px",fontWeight:600,textDecoration:"none"},children:["Guild — Builders ",e.jsx(C,{size:14})]})]}),e.jsxs("div",{style:{marginTop:"10px",color:"#64748b",fontSize:"12px"},children:["ETH: ",a?w.toFixed(6):"—"," · USDC: ",g!=null?v.toFixed(2):"—"," · Tx: ",f.explorerOk?f.totalTx:u??"—"]})]}),e.jsx("h2",{style:{color:"#e2e8f0",fontSize:"16px",margin:"22px 0 10px 0"},children:"Onchain"}),e.jsx("p",{style:{color:"#64748b",fontSize:"12px",margin:"0 0 10px 0"},children:"Matches guild.xyz/base/onchain"}),e.jsx("div",{style:{display:"grid",gap:"10px"},children:F(z)}),e.jsx("h2",{style:{color:"#e2e8f0",fontSize:"16px",margin:"22px 0 10px 0"},children:"Builders & Founders — Contracts"}),e.jsx("p",{style:{color:"#64748b",fontSize:"12px",margin:"0 0 10px 0"},children:"Matches contract deploy roles on guild.xyz/base/builders-founders"}),e.jsxs("div",{style:{marginBottom:"10px",display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"},children:[e.jsx(ue,{compact:!0,label:"Fast Deploy"}),e.jsx(G,{to:"/deploy",style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 12px",borderRadius:"10px",border:"1px solid rgba(59,130,246,0.45)",background:"rgba(59,130,246,0.18)",color:"#bfdbfe",fontSize:"12px",fontWeight:600,textDecoration:"none"},children:"Deploy ERC20"}),e.jsx(G,{to:"/deploy-erc721",style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 12px",borderRadius:"10px",border:"1px solid rgba(6,182,212,0.45)",background:"rgba(6,182,212,0.16)",color:"#a5f3fc",fontSize:"12px",fontWeight:600,textDecoration:"none"},children:"Deploy ERC721"}),e.jsx(G,{to:"/deploy-erc1155",style:{display:"inline-flex",alignItems:"center",gap:"6px",padding:"8px 12px",borderRadius:"10px",border:"1px solid rgba(139,92,246,0.45)",background:"rgba(139,92,246,0.16)",color:"#ddd6fe",fontSize:"12px",fontWeight:600,textDecoration:"none"},children:"Deploy ERC1155"})]}),e.jsx("div",{style:{display:"grid",gap:"10px"},children:F(D)}),e.jsxs("div",{style:{marginTop:"20px",padding:"16px",borderRadius:"14px",border:"1px solid rgba(59, 130, 246, 0.35)",background:"rgba(15,23,42,0.85)"},children:[e.jsx("div",{style:{color:"#94a3b8",fontSize:"12px",marginBottom:"10px"},children:"Optional: send a GM/GN from BaseHub to add an onchain tx (then Refresh)."}),e.jsxs("div",{style:{display:"flex",gap:"10px",flexWrap:"wrap"},children:[e.jsxs("button",{type:"button",onClick:P,disabled:!n||j||k||c,style:{flex:"1 1 140px",padding:"12px 16px",borderRadius:"10px",border:"none",cursor:!n||j?"not-allowed":"pointer",background:"linear-gradient(135deg, #10b981 0%, #059669 100%)",color:"#fff",fontWeight:700,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"8px",opacity:!n||j?.65:1},children:[j?e.jsx(_,{size:16,className:"spinning"}):e.jsx(U,{size:16}),"Send GM (tx)"]}),e.jsxs("button",{type:"button",onClick:Z,disabled:!n||j||k||c,style:{flex:"1 1 140px",padding:"12px 16px",borderRadius:"10px",border:"none",cursor:!n||k?"not-allowed":"pointer",background:"linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%)",color:"#fff",fontWeight:700,display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"8px",opacity:!n||k?.65:1},children:[k?e.jsx(_,{size:16,className:"spinning"}):e.jsx(U,{size:16}),"Send GN (tx)"]})]})]})]})};export{Ge as default};

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.