1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6212],{54622:function(n,r,e){(window.__NEXT_P=window.__NEXT_P||[]).push(["/resources/confirm",function(){return e(79714)}])},79714:function(n,r,e){"use strict";e.r(r),e.d(r,{default:function(){return b}});var o=e(85893),a=e(67294),s=e(11163),c=e(6739),i=e(9008),t=e.n(i),d=e(41664),l=e.n(d),f=e(82117),m=e(19402),u=e(49368);let g={"resource:liberty-under-god":{resourceSlug:"liberty-under-god",resourceTitle:"Liberty Under God",htmlUrl:"/downloads/liberty-under-god.html",pdfUrl:"/downloads/liberty-under-god.pdf"}};function b(){let n=(0,u.NT)(),r=(0,s.useRouter)(),{token:e}=r.query,[i,d]=(0,a.useState)("loading"),[b,h]=(0,a.useState)(null),[y,x]=(0,a.useState)("");return(0,a.useEffect)(()=>{if(r.isReady){if(!e){d("error"),x(n("res.noToken","No confirmation token provided."));return}o()}async function o(){try{let r=await fetch("/api/blog/confirm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e})}),o=await r.json();if(r.ok){let r=g[o.source||"blog"]||null;if(h(r),r)try{localStorage.setItem("gh-resource-dl:".concat(r.resourceSlug),"1")}catch(n){}try{localStorage.setItem("gh-updates-optin","1")}catch(n){}d(o.alreadyConfirmed?"already":"success"),x(o.message||n("res.subConfirmed","Your subscription is confirmed.")),o.alreadyConfirmed||(0,c.j)("subscribe_confirmed",{source:"resource"})}else d("error"),x(o.error||n("res.errGeneric","Something went wrong. Please try again."))}catch(r){d("error"),x(n("res.errNetwork","Network error. Please try again."))}}},[r.isReady,e]),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t(),{children:[(0,o.jsx)("title",{children:n("res.confirmTitle","Download Confirmed, GraceHaven")}),(0,o.jsx)("meta",{name:"robots",content:"noindex"})]}),(0,o.jsx)("style",{children:"\n *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n :root {\n --navy: #1a2744;\n --navy-deep: #111c33;\n --gold: #b8972a;\n --gold-light: #d4b44a;\n --cream: #faf8f3;\n --slate: #6b7a99;\n --slate-light: #9aa5bb;\n --border: rgba(184,151,42,0.2);\n }\n\n body {\n font-family: 'EB Garamond', Georgia, serif;\n background: var(--cream);\n }\n\n .rconf-section {\n min-height: 65vh;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 8rem 1.5rem 5rem;\n }\n\n .rconf-card {\n background: #fff;\n border: 1px solid var(--border);\n border-radius: 3px;\n box-shadow: 0 2px 16px rgba(26,39,68,0.07);\n padding: 3rem 2.5rem;\n max-width: 520px;\n width: 100%;\n text-align: center;\n }\n\n .rconf-icon {\n font-size: 2.25rem;\n margin-bottom: 0.75rem;\n color: var(--gold);\n line-height: 1;\n }\n\n .rconf-heading {\n font-family: 'Cinzel', serif;\n font-size: 1.35rem;\n font-weight: 400;\n color: var(--navy);\n margin-bottom: 0.85rem;\n line-height: 1.25;\n }\n\n .rconf-text {\n font-size: 1rem;\n color: var(--slate);\n line-height: 1.7;\n margin-bottom: 1.75rem;\n }\n\n .rconf-downloads {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n margin-bottom: 1.75rem;\n }\n\n .rconf-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.8rem 1.5rem;\n font-family: 'Cinzel', serif;\n font-size: 0.82rem;\n font-weight: 500;\n letter-spacing: 0.06em;\n text-decoration: none;\n border-radius: 2px;\n transition: background 0.15s, transform 0.12s;\n }\n\n .rconf-btn-primary {\n background: var(--navy);\n color: #fff;\n }\n .rconf-btn-primary:hover {\n background: #243160;\n transform: translateY(-1px);\n }\n\n .rconf-btn-secondary {\n background: transparent;\n color: var(--navy);\n border: 1px solid var(--border);\n }\n .rconf-btn-secondary:hover {\n border-color: var(--gold);\n color: var(--gold);\n }\n\n .rconf-back {\n font-size: 0.9rem;\n color: var(--gold);\n text-decoration: none;\n }\n .rconf-back:hover { text-decoration: underline; }\n\n .rconf-loading {\n font-style: italic;\n color: var(--slate);\n padding: 2rem 0;\n }\n "}),(0,o.jsx)(f.Z,{currentPage:"/resources"}),(0,o.jsx)("section",{className:"rconf-section",children:(0,o.jsxs)("div",{className:"rconf-card",children:["loading"===i&&(0,o.jsx)("p",{className:"rconf-loading",children:n("res.confirming","Confirmingâ¦")}),("success"===i||"already"===i)&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"rconf-icon",children:"â"}),(0,o.jsx)("h1",{className:"rconf-heading",children:"success"===i?n("res.confirmed","Confirmed"):n("res.alreadyConfirmed","Already Confirmed")}),(0,o.jsx)("p",{className:"rconf-text",children:"success"===i?n("res.dlReady","Your download is ready. Sharing is encouraged."):n("res.dlBelow","Your subscription was already confirmed. Your download is below.")}),b?(0,o.jsxs)("div",{className:"rconf-downloads",children:[b.htmlUrl&&(0,o.jsx)("a",{href:b.htmlUrl,download:"".concat(b.resourceSlug,".html"),className:"rconf-btn rconf-btn-primary",children:n("res.dlHtml","Download HTML")}),b.pdfUrl&&(0,o.jsx)("a",{href:b.pdfUrl,download:"".concat(b.resourceSlug,".pdf"),className:"rconf-btn rconf-btn-secondary",children:n("res.dlPdf","Download PDF")}),(0,o.jsx)(l(),{href:"/resources/".concat(b.resourceSlug),className:"rconf-btn rconf-btn-secondary",children:n("res.readOnline","Read Online")})]}):(0,o.jsx)("div",{className:"rconf-downloads",children:(0,o.jsx)(l(),{href:"/resources/liberty-under-god",className:"rconf-btn rconf-btn-primary",children:n("res.returnLibrary","Return to Library")})})]}),"error"===i&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"rconf-icon",style:{color:"#b04040"},children:"â"}),(0,o.jsx)("h1",{className:"rconf-heading",children:n("res.linkExpired","Link Expired or Invalid")}),(0,o.jsx)("p",{className:"rconf-text",children:y}),(0,o.jsxs)(l(),{href:"/library",className:"rconf-back",children:["â ",n("res.backLibrary","Back to Library")]})]})]})}),(0,o.jsx)(m.Z,{currentPage:"/resources"})]})}}},function(n){n.O(0,[1664,2317,2117,9402,2888,9774,179],function(){return n(n.s=54622)}),_N_E=n.O()}]);
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.