1<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><style> 2 :root { 3 --app-bg: var(--p-color-bg-app, #f4f6f8); 4 --app-card: var(--p-color-bg-surface, #ffffff); 5 --app-text: var(--p-color-text, #303236); 6 --app-text-subdued: var(--p-color-text-subdued, #6d7175); 7 --app-border: var(--p-color-border, #c9cccf); 8 --app-neon-green: #00E676; 9 --app-neon-pink: #FF1765; 10 } 11 12 body { background-color: var(--app-bg) !important; color: var(--app-text) !important; } 13 14 /* Polaris Button Customization */ 15 .Polaris-Button--variantPrimary, .Polaris-Button--toneSuccess { background: var(--app-neon-green) !important; color: #08110b !important; border: none !important; } 16 .Polaris-Button--variantPrimary:hover, .Polaris-Button--toneSuccess:hover { background: #00c262 !important; } 17 </style></head><body>
17<script>((STORAGE_KEY, restoreKey) => { 18 if (!window.history.state || !window.history.state.key) { 19 let key = Math.random().toString(32).slice(2); 20 window.history.replaceState({ 21 key 22 }, ""); 23 } 24 try { 25 let positions = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || "{}"); 26 let storedY = positions[restoreKey || window.history.state.key]; 27 if (typeof storedY === "number") { 28 window.scrollTo(0, storedY); 29 } 30 } catch (error) { 31 console.error(error); 32 sessionStorage.removeItem(STORAGE_KEY); 33 } 34 })("positions", null)</script>
34<link rel="modulepreload" href="/assets/manifest-f6616d88.js"/><link rel="modulepreload" href="/assets/entry.client-5bHeGRNp.js"/><link rel="modulepreload" href="/assets/components-Hjxm1_JN.js"/><link rel="modulepreload" href="/assets/root-BqWUIG75.js"/><link rel="modulepreload" href="/assets/_index-C6d-v1ok.js"/>
34<script>window.__remixContext = {"basename":"/","future":{"v3_fetcherPersist":false,"v3_relativeSplatPath":false,"v3_throwAbortReason":false,"v3_routeConfig":false,"v3_singleFetch":false,"v3_lazyRouteDiscovery":false,"unstable_optimizeDeps":false},"isSpaMode":false,"state":{"loaderData":{"routes/_index":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n \u003cmeta charset=\"UTF-8\"\u003e\n \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n \u003ctitle\u003eDynamic Catalog Factory â AI Ad Creatives for Shopify Meta \u0026amp; TikTok Catalog Ads\u003c/title\u003e\n \u003cmeta name=\"description\" content=\"Automatically turn your Shopify product photos into branded ad creatives for Meta and TikTok catalog campaigns. AI-generated marketing copy, 5 templates, live XML feed. Install free.\"\u003e\n \u003clink rel=\"canonical\" href=\"https://dynamic-catalog-creative-factory.vercel.app/\"\u003e\n\n \u003c!-- Open Graph --\u003e\n \u003cmeta property=\"og:type\" content=\"website\"\u003e\n \u003cmeta property=\"og:url\" content=\"https://dynamic-catalog-creative-factory.vercel.app/\"\u003e\n \u003cmeta property=\"og:title\" content=\"Dynamic Catalog Factory â AI Ad Creatives for Shopify\"\u003e\n \u003cmeta property=\"og:description\" content=\"Turn raw product photos into scroll-stopping Meta \u0026amp; TikTok catalog ads, automatically. AI copy, 5 templates, live XML feed.\"\u003e\n \u003cmeta property=\"og:image\" content=\"https://dynamic-catalog-creative-factory.vercel.app/feature_banner_final.png\"\u003e\n \u003cmeta property=\"og:image:width\" content=\"1200\"\u003e\n \u003cmeta property=\"og:image:height\" content=\"630\"\u003e\n \u003cmeta property=\"og:site_name\" content=\"Dynamic Catalog Factory\"\u003e\n\n \u003c!-- Twitter Card --\u003e\n \u003cmeta name=\"twitter:card\" content=\"summary_large_image\"\u003e\n \u003cmeta name=\"twitter:title\" content=\"Dynamic Catalog Factory â AI Ad Creatives for Shopify\"\u003e\n \u003cmeta name=\"twitter:description\" content=\"Turn raw product photos into scroll-stopping Meta \u0026amp; TikTok catalog ads, automatically.\"\u003e\n \u003cmeta name=\"twitter:image\" content=\"https://dynamic-catalog-creative-factory.vercel.app/feature_banner_final.png\"\u003e\n\n \u003c!-- JSON-LD Structured Data --\u003e\n \u003cscript type=\"application/ld+json\"\u003e\n {\n \"@context\": \"https://schema.org\",\n \"@type\": \"SoftwareApplication\",\n \"name\": \"Dynamic Catalog Factory\",\n \"operatingSystem\": \"Web (Shopify)\",\n \"applicationCategory\": \"BusinessApplication\",\n \"applicationSubCategory\": \"Advertising\",\n \"description\": \"Automatically turn your Shopify product photos into branded ad creatives for Meta and TikTok catalog campaigns using AI-generated marketing copy, professional templates, and a live XML feed.\",\n \"url\": \"https://dynamic-catalog-creative-factory.vercel.app\",\n \"screenshot\": \"https://dynamic-catalog-creative-factory.vercel.app/feature_banner_final.png\",\n \"offers\": {\n \"@type\": \"AggregateOffer\",\n \"lowPrice\": \"49\",\n \"highPrice\": \"399\",\n \"priceCurrency\": \"USD\",\n \"offerCount\": \"3\"\n },\n \"featureList\": [\n \"AI-powered marketing copy via Google Gemini\",\n \"5 professional ad creative templates\",\n \"Live XML catalog feed for Meta and TikTok\",\n \"Dynamic discount badges\",\n \"Real-time scarcity and stock badges\",\n \"Star-rating social proof overlays\",\n \"Localized currency support\",\n \"Real-time webhook sync\",\n \"GDPR compliant â no customer data stored\"\n ],\n \"creator\": {\n \"@type\": \"Organization\",\n \"name\": \"Peerware Ltd\",\n \"url\": \"https://peerware.site\"\n }\n }\n \u003c/script\u003e\n\n \u003cstyle\u003e\n *{margin:0;padding:0;box-sizing:border-box}\n body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;color:#fff;background:#0d0d14;line-height:1.6}\n .wrap{max-width:1080px;margin:0 auto;padding:0 1.25rem}\n img{display:block;max-width:100%}\n a{color:inherit;text-decoration:none}\n\n /* ââ NAV ââ */\n nav{background:rgba(13,13,20,.85);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.06);position:sticky;top:0;z-index:100;padding:.75rem 0}\n nav .wrap{display:flex;align-items:center;justify-content:space-between}\n nav .brand{font-weight:800;font-size:1.05rem;letter-spacing:-.01em}\n nav .brand span{color:#00E676}\n nav .links{display:flex;gap:1.5rem;font-size:.9rem;color:#c7c7d1}\n nav .links a:hover{color:#00E676}\n\n /* ââ HERO ââ */\n .hero{background:radial-gradient(1400px 600px at 60% -15%,#2a0a3a,#0d0d14 65%);padding:5rem 0 4rem;text-align:center}\n .badge{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#00E676;border:1px solid rgba(0,230,118,.35);border-radius:999px;padding:.3rem .9rem;margin-bottom:1.25rem}\n .hero h1{font-size:clamp(2.2rem,5.5vw,3.6rem);line-height:1.08;letter-spacing:-.025em;max-width:800px;margin:0 auto}\n .hero h1 .grad{background:linear-gradient(90deg,#FF1765,#00E676);-webkit-background-clip:text;background-clip:text;color:transparent}\n .hero p{color:#c7c7d1;font-size:1.15rem;max-width:640px;margin:1.2rem auto 0}\n .ctas{margin-top:2rem;display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap}\n .btn{display:inline-block;font-weight:700;padding:.85rem 1.6rem;border-radius:10px;font-size:1rem;transition:transform .15s,box-shadow .15s}\n .btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,230,118,.25)}\n .btn-primary{background:#00E676;color:#08110b}\n .btn-secondary{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.25)}\n .btn-secondary:hover{border-color:#00E676;color:#00E676}\n\n /* ââ SECTIONS ââ */\n section{padding:4rem 0}\n section h2{font-size:clamp(1.6rem,3.5vw,2.2rem);letter-spacing:-.01em;text-align:center}\n section .sub{text-align:center;color:#c7c7d1;max-width:620px;margin:.6rem auto 0;font-size:1.05rem}\n .alt{background:rgba(255,255,255,.02)}\n\n /* ââ FEATURES GRID ââ */\n .feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-top:2.5rem}\n .feat{border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:1.5rem;background:rgba(28,28,40,.6);transition:border-color .2s,transform .2s}\n .feat:hover{border-color:rgba(0,230,118,.3);transform:translateY(-3px)}\n .feat .ic{font-size:1.8rem;margin-bottom:.5rem}\n .feat h3{font-size:1.1rem;margin-bottom:.35rem}\n .feat p{color:#c7c7d1;font-size:.95rem}\n\n /* ââ HOW IT WORKS ââ */\n .steps{counter-reset:s;max-width:720px;margin:2.5rem auto 0}\n .step{display:flex;gap:1.25rem;padding:1.25rem 0;border-bottom:1px solid rgba(255,255,255,.06)}\n .step:last-child{border-bottom:none}\n .step .n{counter-increment:s;flex:0 0 auto;width:40px;height:40px;border-radius:50%;background:rgba(0,230,118,.1);color:#00E676;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:1.1rem}\n .step .n::before{content:counter(s)}\n .step h3{font-size:1.1rem}\n .step p{color:#c7c7d1;font-size:.95rem;margin-top:.2rem}\n\n /* ââ PRICING ââ */\n .pricing{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;margin-top:2.5rem}\n .plan{border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:2rem 1.5rem;background:rgba(28,28,40,.6);text-align:center;transition:border-color .2s,transform .2s}\n .plan:hover{border-color:rgba(0,230,118,.3);transform:translateY(-3px)}\n .plan.pop{border-color:#00E676;box-shadow:0 0 30px rgba(0,230,118,.1)}\n .plan .tag{display:inline-block;background:#00E676;color:#08110b;font-size:.7rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:.2rem .6rem;border-radius:999px;margin-bottom:.75rem}\n .plan h3{font-size:1.3rem}\n .plan .price{font-size:2.2rem;font-weight:800;margin:.5rem 0}\n .plan .price span{font-size:1rem;font-weight:400;color:#c7c7d1}\n .plan p{color:#c7c7d1;font-size:.95rem}\n\n /* ââ TRUST ââ */\n .trust{display:flex;justify-content:center;gap:2.5rem;flex-wrap:wrap;margin-top:2rem;color:#c7c7d1;font-size:.95rem}\n .trust div{text-align:center}\n .trust .big{font-size:1.6rem;font-weight:800;color:#00E676;display:block}\n\n /* ââ FINAL CTA ââ */\n .final-cta{text-align:center;padding:4rem 0;background:radial-gradient(800px 400px at 50% 100%,#1a0a2e,#0d0d14 70%)}\n .final-cta h2{margin-bottom:1rem}\n\n /* ââ FOOTER ââ */\n footer{border-top:1px solid rgba(255,255,255,.06);padding:2rem 0;text-align:center;color:#c7c7d1;font-size:.85rem}\n footer a{color:#00E676}\n\n @media(max-width:640px){.hero h1{font-size:1.8rem}.feats,.pricing{grid-template-columns:1fr}.trust{gap:1.5rem}}\n \u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n \u003cnav\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003cdiv class=\"brand\"\u003eDynamic Catalog \u003cspan\u003eFactory\u003c/span\u003e\u003c/div\u003e\n \u003cdiv class=\"links\"\u003e\n \u003ca href=\"/demo\"\u003eLive Demo\u003c/a\u003e\n \u003ca href=\"/help\"\u003eSetup Guide\u003c/a\u003e\n \u003ca href=\"https://apps.shopify.com\" target=\"_blank\" rel=\"noopener\"\u003eInstall\u003c/a\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/nav\u003e\n\n \u003cdiv class=\"hero\"\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003cspan class=\"badge\"\u003eShopify App\u003c/span\u003e\n \u003ch1\u003eTurn product photos into \u003cspan class=\"grad\"\u003escroll-stopping catalog ads\u003c/span\u003e\u003c/h1\u003e\n \u003cp\u003eDynamic Catalog Factory uses AI to transform your raw Shopify product images into branded ad creatives for Meta \u0026amp; TikTok â with discount badges, scarcity labels, star ratings, and a live XML feed. Automatically.\u003c/p\u003e\n \u003cdiv class=\"ctas\"\u003e\n \u003ca class=\"btn btn-primary\" href=\"https://apps.shopify.com\" target=\"_blank\" rel=\"noopener\"\u003eInstall Free on Shopify\u003c/a\u003e\n \u003ca class=\"btn btn-secondary\" href=\"/demo\"\u003eSee Live Demo â\u003c/a\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n \u003csection class=\"alt\"\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003ch2\u003eEverything your catalog ads need\u003c/h2\u003e\n \u003cp class=\"sub\"\u003eOne app replaces your designer, your copywriter, and your manual feed uploads.\u003c/p\u003e\n \u003cdiv class=\"feats\"\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð¤\u003c/div\u003e\u003ch3\u003eAI Marketing Copy\u003c/h3\u003e\u003cp\u003eGoogle Gemini analyzes each product and writes conversion-optimized ad tags like \"50% OFF TODAY\" or \"ORGANIC COTTON\" â automatically.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð¨\u003c/div\u003e\u003ch3\u003e5 Pro Templates\u003c/h3\u003e\u003cp\u003eOne-click switch between Tech Neon, Clean Minimal, Flash Sale Ribbon, Holiday Frame, and Black Friday styles.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð¡\u003c/div\u003e\u003ch3\u003eLive XML Feed\u003c/h3\u003e\u003cp\u003eA production-ready RSS feed URL that Meta Commerce Manager and TikTok Catalog Manager poll automatically.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð·ï¸\u003c/div\u003e\u003ch3\u003eDynamic Discount Badges\u003c/h3\u003e\u003cp\u003eCompare-at pricing renders a bold \"-30%\" badge on the creative, automatically.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð¥\u003c/div\u003e\u003ch3\u003eReal-Time Stock \u0026amp; Scarcity\u003c/h3\u003e\u003cp\u003eLive inventory drives \"Only X Left\" scarcity badges and accurate availability in your feed.\u
34003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eâ\u003c/div\u003e\u003ch3\u003eStar-Rating Social Proof\u003c/h3\u003e\u003cp\u003ePulls product ratings from Judge.me, Loox, Yotpo etc. and overlays them on the ad.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð\u003c/div\u003e\u003ch3\u003eLocalized Currency\u003c/h3\u003e\u003cp\u003ePrice badges use your store's real currency â not a hardcoded dollar sign.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eâ¡\u003c/div\u003e\u003ch3\u003eReal-Time Webhook Sync\u003c/h3\u003e\u003cp\u003eUpdate a product in Shopify and the ad creative regenerates instantly. Zero manual work.\u003c/p\u003e\u003c/div\u003e\n \u003cdiv class=\"feat\"\u003e\u003cdiv class=\"ic\"\u003eð\u003c/div\u003e\u003ch3\u003ePrivacy-First \u0026amp; GDPR\u003c/h3\u003e\u003cp\u003eWe never access customer data. Only product catalog data. Full GDPR compliance with auto-deletion on uninstall.\u003c/p\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/section\u003e\n\n \u003csection\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003ch2\u003eHow it works\u003c/h2\u003e\n \u003cp class=\"sub\"\u003eFrom install to live catalog ads in under 5 minutes.\u003c/p\u003e\n \u003cdiv class=\"steps\"\u003e\n \u003cdiv class=\"step\"\u003e\u003cdiv class=\"n\"\u003e\u003c/div\u003e\u003cdiv\u003e\u003ch3\u003eSync your catalog\u003c/h3\u003e\u003cp\u003eInstall the app and click Sync. Your products are pulled in and AI generates ad creatives for each one.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\n \u003cdiv class=\"step\"\u003e\u003cdiv class=\"n\"\u003e\u003c/div\u003e\u003cdiv\u003e\u003ch3\u003ePick your style\u003c/h3\u003e\u003cp\u003eChoose any of five professional templates â every ad restyles in one click.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\n \u003cdiv class=\"step\"\u003e\u003cdiv class=\"n\"\u003e\u003c/div\u003e\u003cdiv\u003e\u003ch3\u003eGrab your feed URL\u003c/h3\u003e\u003cp\u003eThe app outputs one XML feed URL containing all your generated ad creatives.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\n \u003cdiv class=\"step\"\u003e\u003cdiv class=\"n\"\u003e\u003c/div\u003e\u003cdiv\u003e\u003ch3\u003eConnect Meta \u0026amp; TikTok\u003c/h3\u003e\u003cp\u003ePaste the feed URL into Meta Commerce Manager or TikTok Catalog Manager once. Your ads stay in sync as your catalog changes.\u003c/p\u003e\u003c/div\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/section\u003e\n\n \u003csection class=\"alt\"\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003ch2\u003eSimple, transparent pricing\u003c/h2\u003e\n \u003cp class=\"sub\"\u003eStart free, upgrade anytime. Billed securely by Shopify.\u003c/p\u003e\n \u003cdiv class=\"pricing\"\u003e\n \u003cdiv class=\"plan\"\u003e\n \u003ch3\u003eStarter\u003c/h3\u003e\n \u003cdiv class=\"price\"\u003e$49\u003cspan\u003e/mo\u003c/span\u003e\u003c/div\u003e\n \u003cp\u003eUp to 500 products. AI copy, all 5 templates, live XML feed, webhook sync.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"plan pop\"\u003e\n \u003cdiv class=\"tag\"\u003eMost Popular\u003c/div\u003e\n \u003ch3\u003eGrowth\u003c/h3\u003e\n \u003cdiv class=\"price\"\u003e$149\u003cspan\u003e/mo\u003c/span\u003e\u003c/div\u003e\n \u003cp\u003eUp to 2,500 products. Everything in Starter plus priority support.\u003c/p\u003e\n \u003c/div\u003e\n \u003cdiv class=\"plan\"\u003e\n \u003ch3\u003eEnterprise\u003c/h3\u003e\n \u003cdiv class=\"price\"\u003e$399\u003cspan\u003e/mo\u003c/span\u003e\u003c/div\u003e\n \u003cp\u003eUnlimited products. Everything in Growth plus real-time stock sync.\u003c/p\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/section\u003e\n\n \u003csection\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003ch2\u003eBuilt for results\u003c/h2\u003e\n \u003cdiv class=\"trust\"\u003e\n \u003cdiv\u003e\u003cspan class=\"big\"\u003e5\u003c/span\u003ePro templates\u003c/div\u003e\n \u003cdiv\u003e\u003cspan class=\"big\"\u003e\u0026lt; 5 min\u003c/span\u003eSetup time\u003c/div\u003e\n \u003cdiv\u003e\u003cspan class=\"big\"\u003e0\u003c/span\u003eDesign skills needed\u003c/div\u003e\n \u003cdiv\u003e\u003cspan class=\"big\"\u003eâ\u003c/span\u003eAd images generated\u003c/div\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n \u003c/section\u003e\n\n \u003cdiv class=\"final-cta\"\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003ch2\u003eReady to upgrade your catalog ads?\u003c/h2\u003e\n \u003cp class=\"sub\" style=\"margin-bottom:1.5rem\"\u003eInstall Dynamic Catalog Factory and start generating AI-powered ad creatives in minutes.\u003c/p\u003e\n \u003ca class=\"btn btn-primary\" href=\"https://apps.shopify.com\" target=\"_blank\" rel=\"noopener\"\u003eGet Started Free\u003c/a\u003e\n \u003c/div\u003e\n \u003c/div\u003e\n\n \u003cfooter\u003e\n \u003cdiv class=\"wrap\"\u003e\n \u003cdiv\u003eDynamic Catalog Factory by \u003ca href=\"https://peerware.site\" target=\"_blank\" rel=\"noopener\"\u003ePeerware Ltd\u003c/a\u003e\u003c/div\u003e\n \u003cdiv style=\"margin-top:.5rem\"\u003e\u003ca href=\"/demo\"\u003eDemo\u003c/a\u003e · \u003ca href=\"/help\"\u003eSetup Guide\u003c/a\u003e · \u003ca href=\"/privacy\"\u003ePrivacy\u003c/a\u003e · \u003ca href=\"/terms\"\u003eTerms\u003c/a\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003c/footer\u003e\n\u003c/body\u003e\n\u003c/html\u003e","root":null},"actionData":null,"errors":null}};</script>
34<script type="module" async="">import "/assets/manifest-f6616d88.js"; 35import * as route0 from "/assets/root-BqWUIG75.js"; 36import * as route1 from "/assets/_index-C6d-v1ok.js"; 37 38window.__remixRouteModules = {"root":route0,"routes/_index":route1}; 39 40import("/assets/entry.client-5bHeGRNp.js");</script>
40</body></html>
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.