1 2 3 4 5 6 7 8 9 10<!DOCTYPE html> 11<html lang="en" dir="ltr"> 12<head> 13<!-- Start of Shoplift scripts --> 14<!-- 2026-05-15T20:38:29.1998098Z --> 15<style>.shoplift-hide { opacity: 0 !important; }</style> 16<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
17<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-10-02T14:45:08.8247120Z */(function(){"use strict";var te=document.createElement("style");te.textContent=`#shoplift-preview-control{position:fixed;max-width:332px;height:56px;background-color:#141414;z-index:9999;bottom:20px;display:flex;border-radius:8px;box-shadow:13px 22px 7px #0000,9px 14px 7px #00000003,5px 8px 6px #0000000d,2px 4px 4px #00000017,1px 1px 2px #0000001a,0 0 #0000001a;align-items:center;margin:0 auto;left:16px;right:16px;opacity:0;transform:translateY(20px);visibility:hidden;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s .4s}#shoplift-preview-control.visible{opacity:1;transform:translateY(0);visibility:visible;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s 0s}#shoplift-preview-control *{font-family:Inter,sans-serif;color:#fff;box-sizing:border-box;font-size:16px}#shoplift-preview-variant-title{font-weight:400;line-height:140%;font-size:16px;text-align:start;letter-spacing:-.16px;flex-grow:1;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}#shoplift-preview-variant-selector{position:relative;display:block;padding:6px 0;height:100%;min-width:0;flex:1 1 auto}#shoplift-preview-variant-menu-trigger{border:none;cursor:pointer;width:100%;background-color:transparent;padding:0 16px;border-left:1px solid #333;border-right:1px solid #333;height:100%;display:flex;align-items:center;justify-content:start;gap:8px}#shoplift-preview-variant-selector .menu-variant-label{width:24px;height:24px;border-radius:50%;padding:6px;display:flex;justify-content:center;align-items:center;font-size:12px;font-style:normal;font-weight:600;line-height:100%;letter-spacing:-.12px;flex-shrink:0}#shoplift-preview-variant-selector .preview-variant-menu{position:absolute;bottom:110%;transform:translate3d(0,20px,0);visibility:hidden;pointer-events:none;opacity:0;cursor:pointer;background-color:#141414;border:1px solid #141414;border-radius:6px;width:100%;max-height:156px;overflow-y:auto;box-shadow:0 8px 16px #0003;z-index:1;transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s .3s}#shoplift-preview-variant-selector .preview-variant-menu.preview-variant-menu__visible{visibility:visible;pointer-events:auto;opacity:100;transform:translateZ(0);transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s 0s}@media screen and (max-width:400px){#shoplift-preview-variant-selector .preview-variant-menu{position:fixed;left:0;right:0;width:auto;bottom:110%}}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item{padding:12px 16px;display:flex;overflow:hidden}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item .menu-variant-label{margin-right:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item span{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap;white-space:nowrap;color:#f6f6f6;font-size:14px;font-style:normal;font-weight:500}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:hover{background-color:#545454}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#shoplift-preview-control div:has(#shoplift-exit-preview-button){padding:0 16px}#shoplift-exit-preview-button{padding:6px 8px;font-weight:500;line-height:75%;border-radius:4px;background-color:transparent;border:none;text-decoration:none}#shoplift-exit-preview-button:hover{cursor:pointer;background-color:#333}#shoplift-preview-subscription-warning{position:relative;display:flex;align-items:center;gap:6px;padding:6px 10px;margin:0 4px;border-left:1px solid #333;cursor:help;outline:none}#shoplift-preview-subscription-warning__icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background-color:#f59e0b;color:#141414!important;font-weight:700;font-size:12px!important;line-height:1;flex-shrink:0}#shoplift-preview-subscription-warning__label{font-size:13px!important;font-weight:500;color:#fbbf24!important;text-wrap:nowrap;white-space:nowrap}#shoplift-preview-subscription-warning__tooltip{position:absolute;bottom:calc(100% + 8px);right:0;max-width:320px;width:max-content;padding:10px 12px;border-radius:6px;background-color:#1f1f1f;color:#fff!important;font-size:12px!important;line-height:1.4!important;box-shadow:0 8px 16px #0000004d;z-index:10000;opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s .2s;pointer-events:none}#shoplift-preview-subscription-warning__tooltip.shoplift-preview-subscription-warning__tooltip--visible{opacity:1;visibility:visible;transform:translateY(0);transition:opacity .2s ease-in-out,transform .2s ease-in-out,visibility 0s 0s}#shoplift-preview-subscription-warning:focus-visible{box-shadow:inset 0 0 0 2px #f59e0b;border-radius:4px}#shoplift-preview-control:has(#shoplift-preview-subscription-warning){max-width:480px}/*$vite$:1*/`,document.head.appendChild(te);var fe=" daum[ /]| deusu/|(?:^|[^g])news(?!sapphire)|(?<! channel/|google/)google(?!(?:wv|app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!cam)scan|(?<!lib)http|24x
177|;\\s\\w+;$|@[a-z][\\w-]+\\.|\\(\\)|\\.com\\b|\\b\\w+/1\\.0;|\\bbw/|\\bdlc\\b|\\bort/|\\bperl\\b|\\btime/|\\||^[<\\(;]|^[\\w \\.\\-\\(?:\\):%]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[\\w\\-]+/[\\w]+$|^[^ ]{50,}$|^\\d+\\b|^\\w*search\\b|^\\w+/[\\w\\(\\)]*$|^\\w+/\\d\\.\\d\\s\\([\\w@]+\\)$|^active|^ad muncher|^amaya|^apache/|^avsdevicesdk/|^azure|^biglotron|^blackbox exporter|^bot|^clamav[ /]|^claude-code/|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^email|^exodusmovement|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^igetter/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d\\s[\\w\\.-]+$|^mozilla/\\d\\.\\d\\s\\((?:compatible;)?(?:\\s?[\\w\\d-.]+\\/\\d+\\.\\d+)?\\)$|^navermailapp|^netsurf|^offline|^openai/|^owler|^php|^postman|^ps_daily/|^python|^rank|^read|^reed|^remove\\.bg/|^rest|^rss|^snapchat|^sora |^space bison|^stape/|^svn|^swcd |^taringa|^thumbor/|^track|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|abuse|advisor|agent\\b|analyzer|archive|ask jeeves/teoma|attracta|audit|bluecoat drtr|browsex|burpcollaborator|capture|catch|check\\b|checker|chrome-lighthouse|chromeframe|classifier|cloudflare|collapsify\\b|convertify|cookiehubverify/|crawl|cursor/|cypress/|dareboost|datanyze|dejaclick|detect|discovery|dmbrowser|download|exaleadcloudview|feed|firephp|foregenix|functionize|grab|hardenize\\b|headless|hotjar|httrack|hubspot marketing grader|ibisbrowser|infrawatch|insight|inspect|iplabel|java(?!;)|library|linkcheck|linktiger|mail\\.ru/|manager|manus-user/|marketgoo/|measure|monitor\\b|neustar wpm|node\\b|nutch|offbyone|openvas|optimize|pageburst|pagespeed|parser|phantomjs|pingdom|playwright|powermarks|preview|productfinder|prospectingstudio|proxy|ptst[ /]\\d|radar|readable/|retriever|rexx;|rigor|rss\\b|scrape|securityheaders|selenium|server|silktide|sindup/|sogou|sparkler/|speedcurve|spider|splash|statuscake|supercleaner|synapse|synthetic|testlocally|tools|torrent|transcoder|url|validator|virtuoso|wappalyzer|watchtowr|webglance|webkit2png|whatcms/|xtate/",ge=/bot|crawl|http|lighthouse|scan|search|spider/i,z;function me(){if(z instanceof RegExp)return z;try{z=new RegExp(fe,"i")}catch{z=ge}return z}var ye=a=>typeof a=="string"&&a!=="";function ve(a){return ye(a)&&me().test(a)}var we=ve;class X{timestamp;constructor(){this.timestamp=new Date}}class be extends X{type;testId;hypothesisId;constructor(e,t,i){super(),this.type=3,this.testId=e,this.hypothesisId=t,this.timestamp=i}}class Se extends X{type;path;constructor(e){super(),this.type=4,this.path=e}}class Ce extends X{type;cart;constructor(e){super(),this.type=5,this.cart=e}}class ie extends Error{isBot;constructor(){super(),this.isBot=!0}}function Te(a,e,t){for(const i of e.selectors){const s=a.querySelectorAll(i.cssSelector);for(let r=0;r<s.length;r++)t(e.testId,e.hypothesisId)}re(a,e,(i,s,r,o,n)=>n(s,r),t)}function U(a,e,t){for(const i of e.selectors)ne(a,e.testId,e.hypothesisId,i,t??(()=>{}));re(a,e,ne,t??(()=>{}))}function se(a){return a.urlPatterns.reduce((e,t)=>{switch(t.operator){case"contains":return e+`.*${t}.*`;case"endsWith":return e+`.*${t}`;case"startsWith":return e+`${t}.*`}},"")}function re(a,e,t,i){new MutationObserver(()=>{for(const r of e.selectors)t(a,e.testId,e.hypothesisId,r,i)}).observe(a.documentElement,{childList:!0,subtree:!0})}function ne(a,e,t,i,s){const r=a.querySelectorAll(i.cssSelector);for(let o=0;o<r.length;o++){let n=r.item(o);if(n instanceof HTMLElement&&n.dataset.shoplift!==""){n.dataset.shoplift="";for(const l of i.actions.sort(Re))n=Ie(a,i.cssSelector,n,l)}}return r.length>0&&s?(s(e,t),!0):!1}function Ie(a,e,t,i){switch(i.type){case"innerHtml":t.innerHTML=i.value;break;case"attribute":Pe(t,i.scope,i.value);break;case"css":Ae(a,e,i.value);break;case"js":ke(a,t,i);break;case"copy":return Ee(t);case"remove":xe(t);break;case"move":_e(t,parseInt(i.value));break}return t}function Pe(a,e,t){a.setAttribute(e,t)}function Ae(a,e,t){const i=a.createElement("style");i.innerHTML=`${e} { ${t} }`,a.getElementsByTagName("head")[0]?.appendChild(i)}function ke(a,e,t){Function("document","element",`"use strict"; ${t.value}`)(a,e)}function Ee(a){const e=a.cloneNode(!0);if(!a.parentNode)throw"Can't copy node outside of DOM";return a.parentNode.insertBefore(e,a.nextSibling),e}function xe(a){a.remove()}function _e(a,e){if(e===0)return;const t=Array.prototype.slice.call(a.parentElement.children).indexOf(a),i=Math.min(Math.max(t+e,0),a.parentElement.children.length-1);a.parentElement.children.item(i).insertAdjacentElement(e>0?"afterend":"beforebegin",a)}function Re(a,e){return oe(a)-oe(e)}function oe(a){return a.type==="copy"||a.type==="remove"?0:1}
17const M={Template:0,UrlRedirect:2,Script:3,Price:5},De="data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.96001%207.90004C9.86501%207.90004%209.77001%207.86504%209.69501%207.79004L6.43501%204.53004C6.19501%204.29004%205.80501%204.29004%205.56501%204.53004L2.30501%207.79004C2.16001%207.93504%201.92001%207.93504%201.77501%207.79004C1.63001%207.64504%201.63001%207.40504%201.77501%207.26004L5.03501%204.00004C5.56501%203.47004%206.43001%203.47004%206.96501%204.00004L10.225%207.26004C10.37%207.40504%2010.37%207.64504%2010.225%207.79004C10.15%207.86004%2010.055%207.90004%209.96001%207.90004Z'%20fill='white'/%3e%3c/svg%3e",Oe="data:image/svg+xml,%3csvg%20width='14'%20height='24'%20viewBox='0%200%2014%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.3976%2014.5255C12.2833%2013.8788%2012.0498%2013.3024%2011.6952%2012.7961C11.3416%2012.2898%2010.9209%2011.8353%2010.4353%2011.4317C9.94868%2011.0291%209.43546%2010.6488%208.89565%2010.292C8.48487%2010.049%208.09577%209.78565%207.72637%209.50402C7.35697%209.2224%207.08016%208.89503%206.89694%208.51987C6.71273%208.14471%206.67826%207.69533%206.79055%207.1697C6.86345%206.83216%206.97476%206.54647%207.12351%206.31162C7.27324%206.07778%207.47124%205.89986%207.7175%205.77684C7.96377%205.65483%208.21989%205.59383%208.48389%205.59383C8.88087%205.59383%209.17639%205.7016%209.3734%205.91714C9.56943%206.13268%209.68271%206.42345%209.71424%206.78946C9.74576%207.15547%209.72015%207.55401%209.63839%207.98509C9.55663%208.41617%209.43645%208.84724%209.27687%209.27934L13.5127%208.80149C13.9638%207.52656%2014.1017%206.42447%2013.9264%205.49725C13.751%204.56901%2013.2664%203.85122%2012.4724%203.34491C12.239%203.19648%2011.9779%203.07041%2011.6893%202.96569L12.0026%201.50979L9.86397%200L7.3875%201.50979L7.11169%202.78878C6.65166%202.8874%206.21724%203.01957%205.8114%203.19038C4.85292%203.594%204.06684%204.15115%203.45117%204.86385C2.83452%205.57655%202.42571%206.40108%202.22378%207.33847C2.06616%208.06947%202.04942%208.70796%202.17551%209.25087C2.30061%209.7948%202.52028%2010.2828%202.8355%2010.7139C3.14974%2011.145%203.51816%2011.5344%203.93977%2011.881C4.36039%2012.2288%204.782%2012.5521%205.20164%2012.851C5.68334%2013.1702%206.13844%2013.5169%206.56497%2013.8921C6.99052%2014.2672%207.31954%2014.7125%207.55004%2015.228C7.78055%2015.7445%207.81502%2016.3769%207.65347%2017.1262C7.56482%2017.5389%207.43676%2017.8765%207.27028%2018.1388C7.10381%2018.4011%206.89596%2018.5983%206.64772%2018.7295C6.3985%2018.8606%206.12071%2018.9267%205.8114%2018.9267C5.21641%2018.9267%204.79776%2018.6034%204.62833%2018.1632C4.4589%2017.7229%204.47367%2017.2583%204.60075%2016.5639C4.72782%2015.8705%205.05092%2015.1395%205.37107%2014.3699H1.17665C1.17665%2014.3699%200.207341%2016.1115%200.0310135%2017.6762C-0.0655232%2018.5302%200.0635208%2019.2653%200.41519%2019.8844C0.76686%2020.5036%201.33032%2020.9814%202.10655%2021.319C2.39222%2021.443%202.7104%2021.5447%203.05813%2021.623L2.54589%2024H7.17473L7.7047%2021.5386C8.08493%2021.442%208.43857%2021.3231%208.76562%2021.1787C9.73985%2020.7476%2010.52%2020.1427%2011.1071%2019.3649C11.6932%2018.5871%2012.0873%2017.7291%2012.2892%2016.7917C12.4744%2015.9295%2012.5099%2015.1741%2012.3966%2014.5275L12.3976%2014.5255Z'%20fill='white'/%3e%3c/svg%3e";async function Ve(a){let e=a.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4;)e+="=";const t=atob(e),i=Uint8Array.from(t,o=>
17o.charCodeAt(0)),s=new Blob([i]).stream().pipeThrough(new DecompressionStream("gzip")),r=await new Response(s).text();return JSON.parse(r)}function F(a,e){return typeof e=="string"&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+(?:Z|[+-]\d+)/.test(e)?new Date(e):e}function ee(a,e){return e}function q(a,e=!1,t=!1,i=","){const s=a/100;if(t){const o=Math.round(s).toLocaleString("en-US");return i!==","?o.replace(/,/g,i):o}else{const r=e?",":".",o=s.toFixed(2).split("."),n=parseInt(o[0],10),l=o[1]??"00",c=n.toLocaleString("en-US");return i!==","?`${c.replace(/,/g,i)}${r}${l}`:e?`${c.replace(/,/g,".")}${r}${l}`:`${c}${r}${l}`}}function H(a,e,t,i){const s=e.replace("{{amount}}",q(a,!1,!1)).replace("{{amount_no_decimals}}",q(a,!1,!0)).replace("{{amount_with_comma_separator}}",q(a,!0,!1)).replace("{{amount_no_decimals_with_comma_separator}}",q(a,!0,!0)).replace("{{amount_with_space_separator}}",q(a,!1,!1," ")).replace("{{amount_no_decimals_with_space_separator}}",q(a,!1,!0," ")).replace("{{amount_with_apostrophe_separator}}",q(a,!1,!1,"'")).replace("{{amount_no_decimals_with_apostrophe_separator}}",q(a,!1,!0,"'")).replace("{{amount_with_period_and_space_separator}}",q(a,!1,!1,". ")).replace("{{amount_no_decimals_with_period_and_space_separator}}",q(a,!1,!0,". "));return i?`${s} ${t}`:s}function ae(a){return a.replace(/[^\d.,\s-]/g,"").trim()}function j(a){const e=new Map;for(const[t,i,s]of a.variants)e.set(t,{priceInCents:i,compareAtPriceInCents:s});return e}function Le(a,e,t,i){const{priceInCents:s,compareAtPriceInCents:r}=t,{moneyFormat:o,currency:n,currencyCodeEnabled:l}=i;if(a.getAttribute("data-sl-attribute-p")===e)a.innerHTML=H(s,o,n,l);else if(a.getAttribute("data-sl-attribute-cap")===e)r<=0||r<=s?a.remove():a.innerHTML=H(r,o,n,l);else if(a.getAttribute("data-sl-attribute-discount")===e&&!(r<=0||r<=s)){const d=Math.round((r-s)/r*100),u=ae(H(r-s,o,n,!1)),h=a.getAttribute("data-sl-format")||"percent";h==="percent"?a.textContent=`-${d}%`:h==="amount"?a.textContent=`-${u}`:h==="both"&&(a.textContent=`-${d}% (-${u})`)}}function $e(a){const e=[],t={id:"url-pattern",operator:"contains",value:"/"};for(const[i,s,r]of a.variants){e.push({id:`p-${i}`,cssSelector:`[data-sl-attribute-p="${i}"]`,urlPatterns:[t],actions:[{id:`p-action-${i}`,type:"innerHtml",scope:"price",value:H(s,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]});const o=r<=0||r<=s;if(e.push({id:`cap-${i}`,cssSelector:`[data-sl-attribute-cap="${i}"]`,urlPatterns:[t],actions:[{id:`cap-action-${i}`,type:o?"remove":"innerHtml",scope:"compare-at-price",value:o?"":H(r,a.moneyFormat,a.currency,a.currencyCodeEnabled)}]}),!o&&r>s){const n=Math.round((r-s)/r*100),l=ae(H(r-s,a.moneyFormat,a.currency,!1));e.push({id:`d-${i}`,cssSelector:`[data-sl-attribute-discount="${i}"]`,urlPatterns:[t],actions:[{id:`d-action-${i}`,type:"js",scope:null,value:`var format = element.getAttribute('data-sl-format') || 'percent'; if (format === 'percent') { element.textContent = '-${n}%'; } else if (format === 'amount') { element.textContent = '-${l}'; } else if (format === 'both') { element.textContent = '-${n}% (-${l})'; }`}]})}}return e}const Me=a=>{let e=5381;for(let t=0;t<a.length;t++)e=(e*33^a.charCodeAt(t))>>>0;return e.toString(36)},qe=()=>Math.random().toString(36).slice(2,10)+Date.now().toString(36).slice(-4),He=a=>btoa(JSON.stringify(a)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),K=a=>a.replace(/#slr-[a-z0-9]+$/,""),tt="modulepreload",it=function(a){return"/"+a},st={},Ne=function(e,t,i){let s=Promise.resolve();function r(o){const n=new Event("vite:preloadError",{cancelable:!0});if(n.payload=o,window.dispatchEvent(n),!n.defaultPrevented)throw o}return s.then(o=>{for(const n of o||[])n.status==="rejected"&&r(n.reason);return e().catch(r)})};function le(a,e,t){const i=t?a.plans.filter(c=>!c.variantId||c.variantId===t):a.plans,s=[],r=[];for(const c of i)c.direction==="decrease"?(s.push(c.existingShopifyPlanId),r.push(c.createdShopifyPlanId)):(s.push(c.createdShopifyPlanId),r.push(c.existingShopifyPlanId));const o=e?s:r,n=e?r:s;if(t)for(const c of a.plans)for(const d of[c.existingShopifyPlanId,c.createdShopifyPlanId])d&&!o.includes(d)&&!n.includes(d)&&n.push(d);const l={};for(let c=0;c<n.length;c++){const d=n[c],u=o[c];d&&u&&(l[d]=u)}return{showPlanIds:o,hidePlanIds:n,swapMap:l}}function ce(a,e,t){const i=e?a.plans.find(r=>r.variantId===e):void 0;if(i)return i.direction;if(t){const r=a.plans.find(o=>o.productId===t);if(r)return r.direction}return a.plans.find(r=>!r.variantId)?.direction??null}function J(a,e){const t=e?a.plans.filter(r=>!r.productId||r.productId===e):a.plans,i={};for(const r of t)i[r.existingShopifyPlanId]=r.existingDiscountAmount,i[r.createdShopifyPlanId]=r.existingDiscountAmount;
17const s=Math.max(...Object.values(i),0);return{discountMap:i,maxDiscount:s}}function W(a){const e=document.querySelector('form[action*="/cart/add"] input[name="product-id"]')?.value;if(e)return e;if(a){for(const r of Array.from(document.querySelectorAll("[data-sl-attribute-p]"))){const o=r.getAttribute("data-sl-attribute-p");if(!o)continue;const n=a.variants.find(l=>l[0]===o);if(n?.[3])return n[3]}const s=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(s){const r=a.variants.find(o=>o[0]===s);if(r?.[3])return r[3]}}const t=window,i=t.ShopifyAnalytics?.meta?.product?.id??t.meta?.product?.id;return i!=null?String(i):null}function D(a,e){return a.widget.selectors[e]??[]}function N(a,e){return a.replace(/[\d.]+%/,`${e}%`)}function $(a,e){const t=document.createTreeWalker(a,NodeFilter.SHOW_TEXT);let i=t.nextNode();for(;i;){if(i.nodeValue!==null){const s=e(i.nodeValue);if(s!==i.nodeValue){i.nodeValue=s;return}}i=t.nextNode()}}function de(a,e){return a===null?!1:a==="decrease"?!e:e}async function Ue(a){if(a.subscriptionSwapDone)return;const e=a.getActiveAssignment();if(!e)return;const t=a.getHypothesis(e.hypothesisId);if(!t?.subscriptionData)return;a.subscriptionSwapDone=!0;const i=t.subscriptionData,s=t.isControl,r=[...new Set(i.plans.map(d=>d.direction))].join(",");a.log(`[SUB-SWAP] ${s?"A":"B"} side, directions=${r}`);const o=i.plans.some(d=>d.variantId);let n=!1,l=!1;function c(){if(!l){l=!0;try{const d=o?document.querySelector("select[name='id'], input[name='id']")?.value:void 0,{showPlanIds:u,hidePlanIds:h,swapMap:p}=le(i,s,d);a.swapMap=p;const b=D(i,"widgetParent"),E=D(i,"subscriptionPlans"),S=D(i,"subscriptionInput");if(!b.length||!E.length||!S.length)return;const C=document.querySelector(b[0].selector);if(!C?.shadowRoot)return;const _=C.shadowRoot.querySelector(E[0].selector);if(!_?.shadowRoot)return;const T=S[0].selector;let m=null;if(i.widget.widgetType==="buttons"||i.widget.widgetType==="radio"){const y=Array.from(_.shadowRoot.querySelectorAll(T));if(!y.length)return;for(const v of y){const g=v.closest("label");g&&(u.includes(v.value)?g.style.display="":h.includes(v.value)&&(g.style.display="none"))}const w=y.some(v=>u.includes(v.value)&&v.checked),I=y.some(v=>h.includes(v.value)&&v.checked);if((w||I)&&(n=!1),!w&&!n){n=!0;for(const v of y)if(u.includes(v.value)){v.closest("label")?.click(),v.dispatchEvent(new Event("change",{bubbles:!0}));break}}const f=y.find(v=>v.checked);m=f&&u.includes(f.value)?f.value:u[0]??null}else if(i.widget.widgetType==="dropdown"){const y=_.shadowRoot.querySelector("select");if(!y)return;for(const w of Array.from(y.options))h.includes(w.value)&&(w.style.display="none",w.disabled=!0);if(h.includes(y.value)){const w=Array.from(y.options).find(I=>u.includes(I.value));w&&(y.value=w.value,y.dispatchEvent(new Event("change",{bubbles:!0})))}m=u.includes(y.value)?y.value:u[0]??null}if(m){const y=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const w of y)w.value!==m&&(w.value=m)}}finally{l=!1}}}if(a.subscriptionHideWrongPlans=c,a.swapMap=le(i,s).swapMap,c(),o){const d=document.querySelector("select[name='id'], input[name='id']");d&&d.addEventListener("change",c)}}function B(a){const e=D(a,"widgetParent");return e.length?document.querySelector(e[0].selector)?.shadowRoot??null:null}function Y(a,e){const t=D(a,"subscriptionPlans");return t.length?e.querySelector(t[0].selector)?.shadowRoot??null:null}function Z(a,e){const t=new URLSearchParams(window.location.search).get("variant");if(t)return t;{const i=document.querySelector('form[action*="/cart/add"] input[name="id"]')?.value;if(i)return i}return a.size>0?[...a.keys()][0]:void 0}function G(a,e){return H(a,e.moneyFormat,e.currency,e.currencyCodeEnabled)}function Fe({originalFetch:a,swapMap:e,slptValue:t,getSelectedPlanId:i,log:s}){if(window.fetch.__shoplift_intercepted)return s("[SUB-INTERCEPT] already installed â skipping"),()=>{};function r(n){if(i){const l=i();if(l)return e[l]??l}return e[n]??n}const o=function(n,l){if((typeof n=="string"?n:n instanceof URL?n.href:n.url).includes("/cart/add")&&l?.body)try{if(l.body instanceof FormData){const d=l.body.get("selling_plan");d?l.body.set("selling_plan",r(String(d))):(!d||d==="")&&t&&l.body.set("properties[_slpt]",t)}
17else if(typeof l.body=="string"){const d=JSON.parse(l.body);if(d.items)for(const u of d.items){const h=String(u.selling_plan??"");h?u.selling_plan=r(h):!u.selling_plan&&t&&(u.properties||(u.properties={}),u.properties._slpt=t)}else if(d.id){const u=String(d.selling_plan??"");u?d.selling_plan=r(u):!d.selling_plan&&t&&(d.properties||(d.properties={}),d.properties._slpt=t)}l.body=JSON.stringify(d)}}catch(d){s("[SUB-INTERCEPT] body parse failed; cart-add proceeds with un-swapped plan",d)}return a.call(window,n,l)};return o.__shoplift_intercepted=!0,window.fetch=o,function(){window.fetch===o&&(window.fetch=a)}}function Be({log:a}){if(window.fetch.__shoplift_intercepted)return a("[SUB-PREVIEW-BLOCK] already installed â skipping"),()=>{};const e=window.fetch,t=function(i,s){const r=typeof i=="string"?i:i instanceof URL?i.href:i.url;return r.includes("/cart/add")?(a("[SUB-PREVIEW-BLOCK] cart-add blocked in preview mode",{url:r}),Promise.resolve(new Response(JSON.stringify({id:0,properties:{},quantity:0,variant_id:0,key:"preview",title:"Preview â cart-add blocked",price:0,original_price:0,line_price:0,original_line_price:0,total_discount:0,discounts:[],preview:!0}),{status:200,headers:{"Content-Type":"application/json"}}))):e.call(window,i,s)};return t.__shoplift_intercepted=!0,window.fetch=t,function(){window.fetch===t&&(window.fetch=e)}}function pe({data:a,runUpdates:e,debounceMs:t=150}){let i=null;function s(){i&&clearTimeout(i),e(),i=setTimeout(e,t)}let r=null;const o=[],n={childList:!0,subtree:!0,characterData:!0,attributes:!0};function l(h){for(const p of o)p.disconnect();o.length=0;for(const p of Array.from(h.querySelectorAll("*")))if(p.shadowRoot){const b=new MutationObserver(s);b.observe(p.shadowRoot,n),o.push(b)}}function c(){const h=B(a);return h?(r&&r.disconnect(),l(h),r=new MutationObserver(p=>{p.some(b=>b.type==="childList"&&b.addedNodes.length>0)&&l(h),s()}),r.observe(h,n),!0):!1}const d=document.body||document.documentElement,u=new MutationObserver(()=>{c()&&s()});return u.observe(d,{childList:!0,subtree:!0}),c()&&s(),e(),function(){i&&(clearTimeout(i),i=null),u.disconnect(),r&&(r.disconnect(),r=null);for(const p of o)p.disconnect();o.length=0}}async function ze(a){if(a.subscriptionPriceDone)return;const e=a.getActiveAssignment(),t=e?a.getHypothesis(e.hypothesisId):void 0,i=t?.subscriptionData?null:a.findActiveSubscriptionTestControl(),s=t?.subscriptionData?t:i?.hypothesis;if(!s?.subscriptionData)return;const r=t?.subscriptionData?e.testId:i.testId;a.subscriptionPriceDone=!0;const o=s.subscriptionData,n=s.isControl,l=s.priceData,c=o.widget.widgetType;let d=W(l),u=J(o,d),h=u.discountMap,p=u.maxDiscount;function b(){const g=W(l);g!==d&&(d=g,u=J(o,d),h=u.discountMap,p=u.maxDiscount,a.log(`[SUB-PRICE] scope refreshed side=${n?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${p}`))}a.log(`[SUB-PRICE] side=${n?"A":"B"}, currentProductId=${d??"n/a"}, maxDiscount=${p}`),a.updatePriceTestHiddenInputs(r,n?"control":"variant",!1);function E(){if(!l)return null;const g=j(l),P=Z(g),A=ce(o,P,d);if(!de(A,n))return null;const k=P?g.get(P):void 0;return k?{formattedVariantPrice:G(k.priceInCents,l),formattedDiscounted:G(k.priceInCents*(1-p/100),l)}:null}Fe({originalFetch:a.fetch,swapMap:a.swapMap??{},slptValue:a.slptValue??void 0,log:a.log,getSelectedPlanId:()=>{const g=B(o);if(!g)return null;const P=Y(o,g);if(!P)return null;const A=D(o,"subscriptionInput"),k=A.length?A[0].selector:'input[name="rc_plan"]';return P.querySelector(`${k}:checked`)?.value??null}});function S(g){const P=D(o,"subscriptionDiscount");for(const A of P)if(A.selector.includes("badge")||A.selector.includes("__badge")){const k=g.querySelector(A.selector);k?.textContent&&!k.textContent.includes(`${p}%`)&&$(k,x=>N(x,p))}}function C(g){const P=E();if(!P)return;const A=D(o,"subscriptionCompareAt");for(const k of A){const x=g.querySelector(k.selector)||g.querySelector(`[part~="${k.selector}"]`);x?.textContent&&!x.textContent.includes(P.formattedVariantPrice)&&$(x,R=>/\d/.test(R)?P.formattedVariantPrice:R)}}function _(g,P){const A=D(o,"subscriptionCompareAt"),k=P===0?"none":"";for(const x of A){const R=g.querySelector(x.selector)||g.querySelector(`[part~="${x.selector}"]`);R&&(k==="none"?R.style.display!=="none"&&(R.style.display="none"):R.style.display==="none"&&(R.style.display=""))}}function T(g){const P=D(o,"subscriptionInput"),A=P.length?P[0].selector:'input[name="rc_plan"]',k=D(o,"subscriptionPlanDiscount"),x=k.length?k[0].selector:".rc-plans-button__discount";for(const R of Array.from(g.querySelectorAll("label"))){const V=R.querySelector(A),O=R.querySelector(x);if(V&&O){const L=h[V.value];if(L!==void 0){if(L===0)O.style.display!=="none"&&(O.style.display="none");else if(O.style.display==="none"&&(O.style.display=""),O.textContent){const Q=O.textContent.match(/[\d.]+%/)?.[0];Q&&Q!==`${L}%`&&$(O,et=>N(et,L))}}}}}function m(g){const P=g.querySelector("select");if(P)for(const A of Array.from(P.options)){const k=h[A.value];if(k!==void 0&&A.textContent){const x=A.textContent.match(/[\d.]+%/)?.[0];x&&x!==`${k}%`&&(A.textContent=N(A.textContent,k))}}}function y(g,P){const k=D(o,"subscriptionDiscount").filter(x=>x.selector.includes("benefit")||x.selector==="rc-benefits");for(const x of k){const R=g.querySelector(x.selector);if(R?.shadowRoot){for(const V of Array.from(R.shadowRoot.querySelectorAll("li")))if(V.textContent?.includes("Save")){const O=V;if(P===0)O.style.display!=="none"&&(O.style.display="none");else{O.style.display==="none"&&(O.style.display="");const L=V.textContent.match(/[\d.]+%/)?.[0];L&&L!==`${P}%`&&$(V,Q=>N(Q,P))}}}}}let w=!1;function I(){if(!w){w=!0;try{if(b(),d!==null&&Object.keys(h).length===0)return;const g=B(o);if(!g)return;S(g),l&&C(g);const P=Y(o,g);let A=p;if(P){const k=D(o,"subscriptionInput"),x=k.length?k[0].selector:'input[name="rc_plan"]',R=P.querySelector(`${x}:checked`);if(R){const V=h[R.value];V!==void 0&&(A=V)}c==="buttons"||c==="radio"?T(P):m(P)}_(g,A),y(g,A)}finally{w=!1}}}function f(){const g=E();if(!g)return;const P=B(o);if(!P)return;const A=D(o,"onetimeToggle"),k=A.length?A[0].selector:'input[value="onetime"]';if(!P.querySelector(k)?.checked)return;const R=D(o,"subscriptionPrice");for(const V of R){const O=P.querySelector(V.selector)||P.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(g.formattedDiscounted)&&$(O,L=>/\d/.test(L)?g.formattedDiscounted:L)}}function v(){a.subscriptionHideWrongPlans&&a.subscriptionHideWrongPlans(),I(),a.subscriptionUpdateOneTime&&a.subscriptionUpdateOneTime(),f()}pe({data:o,runUpdates:v})}async function We(a){if(a.subscriptionOneTimeDone)return;const e=a.getActiveAssignment(),t=e?a.getHypothesis(e.hypothesisId):void 0,i=!!(t?.subscriptionData&&t.priceData),s=i?null:a.findActiveSubscriptionTestControl(),r=i?t:s?.hy
17pothesis;if(!r?.subscriptionData||!r.priceData)return;const o=i?e.testId:s.testId;a.subscriptionOneTimeDone=!0;const n=r.subscriptionData,l=r.priceData,c=j(l),d=r.isControl,u=d?"control":"variant";a.slptValue=`${o}:${u}:f`,a.updatePriceTestHiddenInputs(o,u,!1);function h(){const p=B(n);if(!p)return;const b=Z(c);if(!b)return;const E=W(l),S=ce(n,b,E);if(!de(S,d))return;const C=c.get(b);if(!C)return;const _=H(C.priceInCents,l.moneyFormat,l.currency,l.currencyCodeEnabled),T=D(n,"onetimePrice");if(!T.length)return;const m=D(n,"onetimeContainer"),y=m.length?m[0].selector:'[part~="rc-purchase-option__onetime"]',I=p.querySelector(y)??p;for(const f of T){let v=null;try{v=I.querySelector(f.selector)}catch{v=null}v??=I.querySelector(`[part~="${f.selector}"]`),v&&v.textContent&&!v.textContent.includes(_)&&$(v,g=>/\d/.test(g)?_:g)}}a.subscriptionUpdateOneTime=h,h()}async function Ge(a,e){const{subscriptionPreviewRender:t}=await Ne(async()=>{const{subscriptionPreviewRender:i}=await Promise.resolve().then(()=>Xe);return{subscriptionPreviewRender:i}},void 0);return t(a.subscriptionData,a.priceData,a.isControl,e)}function je(a,e){const t=a.widget.selectors.widgetParent??[],i=a.widget.selectors.subscriptionPlans??[],s=a.widget.selectors.subscriptionInput??[];if(!t.length||!i.length||!s.length){e("[SUB-GLOBAL-HIDE] Missing required selectors â skipping");return}const r=t[0].selector,o=i[0].selector,n=s[0].selector;let l=!1,c=null,d=!1;function u(){if(!d){d=!0;try{h()}finally{d=!1}}}function h(){const C=document.querySelector(r);if(!C?.shadowRoot)return;const _=C.shadowRoot.querySelector(o);if(!_?.shadowRoot)return;_.shadowRoot!==c&&(c=_.shadowRoot,l=!1);let T=0;if(a.widget.widgetType==="buttons"||a.widget.widgetType==="radio"){const m=Array.from(_.shadowRoot.querySelectorAll(n));for(const f of m)if(a.planIds.includes(f.value)){f.disabled||(f.disabled=!0);const v=f.closest("label");v&&v.style.display!=="none"&&(v.style.display="none",T++)}const y=m.filter(f=>!a.planIds.includes(f.value));if(!y.some(f=>f.checked)&&!l&&y.length>0){l=!0;const f=y[0];f.closest("label")?.click(),f.dispatchEvent(new Event("change",{bubbles:!0})),e(`[SUB-GLOBAL-HIDE] Preselected first visible plan input=${f.value}`)}const I=y.find(f=>f.checked)??y[0];if(I){const f=Array.from(document.querySelectorAll('input[name="selling_plan"]'));for(const v of f)v.value!==I.value&&(v.value=I.value,e(`[SUB-GLOBAL-HIDE] Mirrored plan id ${I.value} to form selling_plan input`))}}else if(a.widget.widgetType==="dropdown"){const m=_.shadowRoot.querySelector("select");if(!m)return;for(const I of Array.from(m.options))a.planIds.includes(I.value)&&(I.style.display!=="none"&&(I.style.display="none"),I.disabled||(I.disabled=!0),T++);const y=Array.from(m.options).filter(I=>!a.planIds.includes(I.value)),w=y.some(I=>I.value===m.value);y.length>0&&!w&&!l&&(l=!0,m.value=y[0].value,m.dispatchEvent(new Event("change",{bubbles:!0})),e(`[SUB-GLOBAL-HIDE] Preselected first visible option=${y[0].value}`))}T>0&&e(`[SUB-GLOBAL-HIDE] Hidden ${T} B-side plan buttons`)}const p={childList:!0,subtree:!0,characterData:!0};let b=null;function E(C){b?.disconnect(),b=new MutationObserver(()=>u()),b.observe(C,p)}function S(){const C=document.querySelector(r);if(!C?.shadowRoot)return!1;u(),new MutationObserver(()=>{u();const m=C.shadowRoot.querySelector(o);m?.shadowRoot&&E(m.shadowRoot)}).observe(C.shadowRoot,p);const T=C.shadowRoot.querySelector(o);return T?.shadowRoot&&E(T.shadowRoot),!0}if(!S()){e("[SUB-GLOBAL-HIDE] Widget not in DOM yet â waiting via MutationObserver");const C=new MutationObserver(()=>{S()&&C.disconnect()});C.observe(document.body??document.documentElement,{childList:!0,subtree:!0})}}const ue="Limited preview",Ke="Add-to-cart and checkout prices won't reflect this test until it launches â test selling plans are not created in your subscription app until after a test is launched.",Je=5e3;function Ye(){const a=document.createElement("div");a.id="shoplift-preview-subscription-warning";const e=document.createElement("span");e.id="shoplift-preview-subscription-warning__icon",e.setAttribute("aria-hidden","true"),e.textContent="!";const t=document.createElement("span");t.id="shoplift-preview-subscription-warning__label",t.textContent=ue;const i=document.createElement("div");i.id="shoplift-preview-subscription-warning__tooltip",i.setAttribute("role","tooltip"),i.textContent=Ke,a.appendChild(e),a.appendChild(t),a.appendChild(i),a.setAttribute("tabindex","0"),a.setAttribute("aria-describedby",i.id),a.setAttribute("aria-label",ue);let s=null;function r(){s!==null&&(clearTimeout(s),s=null)}function o(){i.classList.add("shoplift-preview-subscription-warning__tooltip--visible")}function n(){i.classList.remove("shoplift-preview-subscription-warning__tooltip--visible")}function l(){o(),r(),s=setTimeout(()=>{n(),s=null},Je)}function c(){r(),o()}function d(){s===null&&n()}a.addEventListener("mouseenter",c),a.addEventListener("mouseleave",d),a.addEventListener("focus",c),a.addEventListener("blur",d);function u(p){try{const b=p.target;if(!(b instanceof Element))return;(b.closest('form[action*="/cart/add"] button[type="submit"], form[action*="/cart/add"] input[type="submit"]')!==null||b.closest('[name="add"], button[name="add"], [data-add-to-cart], button[data-add-to-cart]')!==null)&&l()}catch{}}
17document.addEventListener("click",u,!0);function h(){r(),document.removeEventListener("click",u,!0),a.removeEventListener("mouseenter",c),a.removeEventListener("mouseleave",d),a.removeEventListener("focus",c),a.removeEventListener("blur",d),a.remove()}return{root:a,tooltip:i,cleanup:h}}let he=!1;class Ze{DATA_SL_ATTRIBUTE_P="data-sl-attribute-p";DATA_SL_TEST_ID="data-sl-test-id";VIEWPORT_TRACK_THRESHOLD=.5;temporarySessionKey="Shoplift_Session";essentialSessionKey="Shoplift_Essential";analyticsSessionKey="Shoplift_Analytics";priceSelectorsSessionKey="Shoplift_PriceSelectors_v2";shop;host;eventHost;disableReferrerOverride;legacySessionKey;cssHideClass;testConfigs;inactiveTestConfigs;hiddenSubscriptionPlans;testsFilteredByAudience;sendPageView;shopliftDebug;gaConfig;telemetryEnabled;getCountryTimeout;geoViaShopify;resolvedRegion=null;state;subscriptionPreviewWarningCleanup=null;shopifyAnalyticsId;cookie=document.cookie;isSyncing=!1;isSyncingGA=!1;fetch;localStorageSet;localStorageGet;sessionStorageSet=window.sessionStorage.setItem.bind(window.sessionStorage);sessionStorageGet=window.sessionStorage.getItem.bind(window.sessionStorage);urlParams=new URLSearchParams(window.location.search);device;logHistory;activeViewportObservers=new Map;clientIdRetryCount=0;constructor(e,t,i,s,r,o,n,l,c,d,u,h,p,b=!1){this.shop=e,this.host=t,this.eventHost=i,this.disableReferrerOverride=l,this.logHistory=[],this.legacySessionKey=`SHOPLIFT_SESSION_${this.shop}`,this.cssHideClass=s?"shoplift-hide":"",this.testConfigs=u.map(S=>({...S,startAt:new Date(S.startAt),statusHistory:S.statusHistory.map(C=>({...C,createdAt:new Date(C.createdAt)}))})),this.inactiveTestConfigs=h,this.hiddenSubscriptionPlans=p,this.sendPageView=!!r,this.shopliftDebug=o===!0,this.telemetryEnabled=c===!0,this.geoViaShopify=b===!0,this.gaConfig=n!=={"sendEvents":false,"mode":"gtag"}?n:{sendEvents:!1},this.fetch=window.fetch.bind(window),this.localStorageSet=window.localStorage.setItem.bind(window.localStorage),this.localStorageGet=window.localStorage.getItem.bind(window.localStorage);const E=this.getDeviceType();this.device=E!=="tablet"?E:"mobile",this.state=this.loadState(),this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.testsFilteredByAudience=u.filter(S=>
17S.status=="active"),this.getCountryTimeout=d===1000?1e3:d,window.__slReadCookie=S=>{const C=this.getCookie(S);if(C===null)return null;try{return decodeURIComponent(C)}catch{return C}},this.log("State Loaded",JSON.stringify(this.state))}deriveCategoryFromExistingTests(){if(!this.state.temporary.testCategory&&this.state.essential.visitorTests.length>0){const e=this.state.essential.visitorTests.some(t=>{if(!t.hypothesisId)return!1;const i=this.getHypothesis(t.hypothesisId);return i&&["theme","basicScript","price"].includes(i.type)});this.state.temporary.testCategory=e?"global":"conditional",this.persistTemporaryState(),this.log("Derived test category from existing visitorTests: %s",this.state.temporary.testCategory)}}async init(){try{if(this.log("Shoplift script initializing"),window.Shopify&&window.Shopify.designMode){this.log("Skipping script for design mode");return}if(window.location.href.includes("slScreenshot=true")){this.log("Skipping script for screenshot");return}if(window.location.hostname.endsWith(".edgemesh.com")){this.log("Skipping script for preview");return}if(window.location.href.includes("isShopliftMerchant")){const o=this.urlParams.get("isShopliftMerchant")==="true";this.log("Setting merchant session to %s",o),this.state.temporary.isMerchant=o,this.persistTemporaryState()}if(this.state.temporary.isMerchant){this.log("Setting up preview for merchant"),typeof window.shoplift!="object"&&this.setShopliftStub(),this.state.temporary.previewConfig||this.hidePage(),await this.initPreview(),document.querySelector("#sl-preview-bar-hide")?.remove();return}if(this.state.temporary.previewConfig=void 0,we(navigator.userAgent))return;const e=Date.now(),t=!this.state.temporary.lastSeen||e-this.state.temporary.lastSeen>1800*1e3;(!this.state.temporary.entryPage||t)&&(this.state.temporary.entryPage=K(window.location.href)),this.state.temporary.lastSeen=e,this.persistTemporaryState(),window.__slEntryPage=this.state.temporary.entryPage??"";const i=this.state.essential.visitorTests.filter(o=>o.hypothesisId&&+o.createdAt>Date.now()-6e4);if(i.length===0)this.sendDiagnosticTelemetry("page-landed",null);else for(const o of i)this.sendDiagnosticTelemetry("page-landed",o.testId,{hypothesisId:o.hypothesisId,isControl:o.assignedTo==="control",testType:o.testType??"unknown"});if(navigator.userAgent.includes("Chrome/118")){this.log("Random: %o",[Math.random(),Math.random(),Math.random()]);const o=await this.makeRequest({url:`${this.eventHost}/api/v0/events/ip`,method:"get"}).then(n=>n?.json());this.log(`IP: ${o}`),this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify(this.debugState(),ee)}).catch()}if(this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.monitorConsentChange(),this.checkForThemePreview())return;if(!this.disableReferrerOverride&&this.state.temporary.originalReferrer!=null){this.log(`Overriding referrer from '${document.referrer}' to '${this.state.temporary.originalReferrer}'`);const o=this.state.temporary.originalReferrer;delete this.state.temporary.originalReferrer,this.persistTemporaryState(),Object.defineProperty(document,"referrer",{get:()=>o,enumerable:!0,configurable:!0})}if(await this.refreshVisitor(this.shopifyAnalyticsId),await this.handleVisitorTest()){this.log("Redirecting for visitor test");return}this.setShoplift(),this.showPage(),this.ensureCartAttributesForExistingPriceTests(!1);const r=this.state.essential.visitorTests.some(o=>(o.hypothesisId?this.getHypothesis(o.hypothesisId):void 0)?.subscriptionData!=null)||Object.values(this.state.temporary.testReservations??{}).some(o=>this.getHypothesis(o.hypothesisId)?.subscriptionData!=null);this.hiddenSubscriptionPlans&&!r&&(this.log(`[SUB-GLOBAL] Visitor not in subscription test â hiding ${this.hiddenSubscriptionPlans.planIds.length} B-side plans`),je(this.hiddenSubscriptionPlans,o=>this.log(o))),await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange(),await this.finalize(),console.log("SHOPLIFT SCRIPT INITIALIZED!")}catch(e){if(e instanceof ie)return;throw e}finally{typeof window.shoplift!="object"&&this.setShopliftStub()}}getVariantColor(e){switch(e){case"a":return{text:"#141414",bg:"#E2E2E2"};case"b":return{text:"rgba(255, 255, 255, 1)",bg:"rgba(37, 99, 235, 1)"}}}getDefaultVariantTitle(e){return e.title?e.title:e.type==="price"?e.isControl?"Original prices":"Variant prices":e.isControl?"Original":"Untitled variant "+e.label.toUpperCase()}
17async initPreview(){const e=this.urlParams.get("previewConfig");if(e){this.state.temporary.previewConfig=void 0,this.log("Setting up the preview"),this.log("Found preview config, writing to temporary state");const t=await Ve(e);if(this.state.temporary.previewConfig=t,this.state.temporary.previewConfig.testTypeCategory===M.Price){this.hidePage(!0);const s=this.state.temporary.previewConfig;let r=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/${s.isDraft||!1}`;s.shopifyProductId&&(r+=`?productId=${s.shopifyProductId}`);const o=await this.makeJsonRequest({method:"get",url:r}).catch(n=>(this.log("Error getting domSelectors",n),null));if(s.variants.forEach(n=>n.domSelectors=o[n.id]?.domSelectors),s.isDraft){const n=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/subscription-preview`,l=await this.makeJsonRequest({method:"get",url:n}).catch(c=>(this.log("No subscription preview data for draft (test may not have a subscription widget)",c),null));l?.subscriptionData&&s.variants.forEach(c=>{c.subscriptionData=l.subscriptionData,c.priceData=l.priceData})}}this.persistTemporaryState();const i=new URL(window.location.toString());i.searchParams.delete("previewConfig"),this.queueRedirect(i)}else if(this.state.temporary.previewConfig){this.showPage();const t=this.state.temporary.previewConfig;if(t.testTypeCategory===M.Template&&this.handleTemplatePreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.UrlRedirect&&this.handleUrlPreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.Script&&this.handleScriptPreview(t)&&this.initPreviewControls(t),t.testTypeCategory===M.Price){const i=await this.handlePricePreview(t);t.isDraft?await this.handleSubscriptionPricePreview(t):await this.handleSubscriptionLivePreview(t),i&&this.initPreviewControls(t)}}}initPreviewControls(e){document.addEventListener("DOMContentLoaded",()=>{const t=e.variants.find(b=>b.id===e.currentVariant),i=t?.label||"a",s=e.variants,r=document.createElement("div");r.id="shoplift-preview-control";const o=document.createElement("div"),n=document.createElement("img");n.src=Oe,n.height=24,n.width=14,o.style.padding="0 16px",o.style.lineHeight="100%",o.appendChild(n),r.appendChild(o);const l=document.createElement("div");l.id="shoplift-preview-variant-selector";const c=document.createElement("button");c.id="shoplift-preview-variant-menu-trigger";const d=document.createElement("div");d.className="menu-variant-label",d.style.backgroundColor=this.getVariantColor(i).bg,d.style.color=this.getVariantColor(i).text,d.innerText=i.toUpperCase(),c.appendChild(d);const u=document.createElement("span");if(u.id="shoplift-preview-variant-title",u.innerText=t?this.getDefaultVariantTitle(t):"Untitled variant "+i.toUpperCase(),c.appendChild(u),s.length>1){const b=document.createElement("img");b.src=De,b.width=12,b.height=12,b.style.height="12px",b.style.width="12px",c.appendChild(b);const E=document.createElement("div");E.className="preview-variant-menu";for(const S of e.variants.filter(C=>C.id!==e.currentVariant)){const C=document.createElement("div");C.className="preview-variant-menu--item";const _=document.createElement("div");_.className="menu-variant-label",_.style.backgroundColor=this.getVariantColor(S.label).bg,_.style.color=this.getVariantColor(S.label).text,_.style.flexShrink="0",_.innerText=S.label.toUpperCase(),C.appendChild(_);const T=document.createElement("span");T.innerText=this.getDefaultVariantTitle(S),C.appendChild(T),C.addEventListener("click",()=>{this.pickVariant(S.id)}),E.appendChild(C)}l.appendChild(E),c.addEventListener("click",()=>{E.className!=="preview-variant-menu preview-variant-menu__visible"?E.classList.add("preview-variant-menu__visible"):E.classList.remove("preview-variant-menu__visible")}),document.addEventListener("click",S=>{S.target instanceof Element&&!c.contains(S.target)&&E.className==="preview-variant-menu preview-variant-menu__visible"&&E.classList.remove("preview-variant-menu__visible")})}else c.style.pointerEvents="none",d.style.margin="0";if(l.appendChild(c),r.appendChild(l),e.hasSubscription){this.subscriptionPreviewWarningCleanup?.();const b=Ye();r.appendChild(b.root),this.subscriptionPreviewWarningCleanup=b.cleanup}const h=document.createElement("div"),p=document.createElement("button");p.id="shoplift-exit-preview-button",p.innerText="Exit",h.appendChild(p),p.addEventListener("click",()=>{this.exitPreview()}),r.appendChild(h),document.body.appendChild(r),requestAnimationFrame(()=>{r.classList.add("visible")})}),this.ensureCartAttributesForExistingPriceTests(!0)}pickVariant(e){if(this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig,i=new URL(window.location.toString());if(t.testTypeCategory===M.UrlRedirect){const s=t.variants.find(r=>r.id===t.currentVariant)?.redirectUrl;if(i.pathname===s){const r=t.variants.find(o=>o.id===e)?.redirectUrl;r&&(i.pathname=r)}}if(t.testTypeCategory===M.Template){const s=t.variants.find(r=>r.id===t.currentVariant)?.pathName;if(s&&i.pathname===s){const r=t.variants.find(o=>o.id===e)?.pathName;r&&r!==s&&(i.pathname=r)}}t.currentVariant=e,this.persistTemporaryState(),this.queueRedirect(i)}}exitPreview(){const e=new URL(window.location.toString());if(this.state.temporary.previewConfig?.testTypeCategory===M.Template&&e.searchParams.delete("view"),this.state.temporary.previewConfig?.testTypeCategory===M.Script&&e.searchParams.delete("slVariant"),this.state.temporary.previewConfig?.testTypeCategory===M.UrlRedirect){const i=this.state.temporary.previewConfig.variants.filter(r=>!r.isControl&&r.redirectUrl!==null).map(r=>r.redirectUrl),s=this.state.temporary.previewConfig.variants.find(r=>r.label==="a")?.redirectUrl;i.includes(e.pathname)&&s&&(e.pathname=s)}this.state.temporary.isMerchant=!1,e.searchParams.delete("isShopliftMerchant"),this.state.temporary.previewConfig=void 0,this.persistTemporaryState(),this.subscriptionPreviewWarningCleanup?.(),this.subscriptionPreviewWarningCleanup=null,this.hidePage(),this.queueRedirect(e)}handleTemplatePreview(e){const t=e.currentVariant,i=e.variants.find(l=>l.id===t);if(!i)return!1;const s=e.variants.find(l=>l.isControl);if(!s)return!1;this.log("Setting up template preview for type",s.type);
17const r=new URL(window.location.toString()),o=r.searchParams.get("view"),n=i.type===s.type;return!n&&!i.isControl&&template.suffix===s.affix&&this.typeFromTemplate()===s.type&&i.pathName!==null?(this.log("Hit control template type, redirecting to the variant url"),this.hidePage(),r.pathname=i.pathName,this.queueRedirect(r),!0):(!i.isControl&&this.typeFromTemplate()==i.type&&template.suffix===s.affix&&n&&o!==(i.affix||"__DEFAULT__")&&(this.log("Template type and affix match control, updating the view param"),r.searchParams.delete("view"),this.log("Setting the new viewParam to",i.affix||"__DEFAULT__"),this.hidePage(),r.searchParams.set("view",i.affix||"__DEFAULT__"),this.queueRedirect(r)),o!==null&&o!==(i.affix||"__DEFAULT__")&&(r.searchParams.delete("view"),this.hidePage(),this.queueRedirect(r)),!0)}handleUrlPreview(e){const t=e.currentVariant,i=e.variants.find(o=>o.id===t),s=e.variants.find(o=>o.isControl)?.redirectUrl;if(!i)return!1;this.log("Setting up URL redirect preview");const r=new URL(window.location.toString());return r.pathname===s&&!i.isControl&&i.redirectUrl!==null&&(this.log("Url matches control, redirecting"),this.hidePage(),r.pathname=i.redirectUrl,this.queueRedirect(r)),!0}handleScriptPreview(e){const t=e.currentVariant,i=e.variants.find(o=>o.id===t);if(!i)return!1;this.log("Setting up script preview");const s=new URL(window.location.toString());return s.searchParams.get("slVariant")!==i.id&&(this.log("current id doesn't match the variant, redirecting"),s.searchParams.delete("slVariant"),this.log("Setting the new slVariantParam"),this.hidePage(),s.searchParams.set("slVariant",i.id),this.queueRedirect(s)),!0}async handlePricePreview(e){const t=e.currentVariant,i=e.variants.find(s=>s.id===t);return i?(this.log("Setting up price preview"),i.domSelectors&&i.domSelectors.length>0&&(U(document,{testId:e.testId,hypothesisId:i.id,selectors:i.domSelectors}),this.ensureCartAttributesForExistingPriceTests(!0)),!0):!1}async handleSubscriptionPricePreview(e){const t=e.variants.find(i=>i.id===e.currentVariant);t?.subscriptionData&&(this.log("Setting up subscription price preview"),await Ge({id:t.id,isControl:t.isControl,subscriptionData:t.subscriptionData,priceData:t.priceData},(i,...s)=>this.log(i,...s)))}async handleSubscriptionLivePreview(e){this.testConfigs.find(s=>s.id===e.testId)?.hypotheses.find(s=>s.id===e.currentVariant)?.subscriptionData&&(this.log("Setting up subscription live preview"),this.subscriptionSwapDone=!1,this.subscriptionOneTimeDone=!1,this.subscriptionPriceDone=!1,await this.subscriptionSwap(),await this.subscriptionOneTimePrice(),await this.subscriptionPriceChange())}async finalize(){const e=await this.getCartState();e!==null&&this.queueCartUpdate(e),this.pruneStateAndSave(),await this.syncAllEvents()}setShoplift(){this.log("Setting up public API");const t=this.urlParams.get("slVariant")==="true",i=t?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:async s=>{if(this.log("Script checking variant for hypothesis '%s'",s),t)return this.log("Forcing variant for hypothesis '%s'",s),!0;if(i!==null)return this.log("Forcing hypothesis '%s'",i),s===i;const r=this.testConfigs.find(n=>n.hypotheses.some(l=>l.id===s));if(!r)return this.log("No test found for hypothesis '%s'",s),!1;const o=this.state.essential.visitorTests.find(n=>n.testId===r.id);return o?(this.log("Active visitor test found",s),o.hypothesisId===s):(await this.manuallySplitVisitor(r),this.testConfigs.some(n=>n.hypotheses.some(l=>l.id===s&&this.state.essential.visitorTests.some(c=>c.hypothesisId===l.id))))},setAnalyticsConsent:async s=>{await this.onConsentChange(s,!0)},getVisitorData:()=>({visitor:this.state.analytics.visitor,visitorTests:this.state.essential.visitorTests.filter(s=>!s.isInvalid).map(s=>{const{shouldSendToGa:r,savedAt:o,...n}=s;return n})})}}setShopliftStub(){this.log("Setting up stubbed public API");const t=this.urlParams.get("slVariant")==="true",i=t?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:s=>Promise.resolve(t||s===i),setAnalyticsConsent:()=>Promise.resolve(),getVisitorData:()=>({visitor:null,visitorTests:[]})}}async manuallySplitVisitor(e){this.log("Starting manual split for test '%s'",e.id),await this.handleVisitorTest([e]);const t=this.getReservationForTest(e.id);t&&!t.isRealized&&t.entryCriteriaKey&&(this.log("Realizing manual API reservation for test '%s'",e.id),this.realizeReservationForCriteria(t.entryCriteriaKey)),this.saveState(),this.syncAllEvents()}async handleVisitorTest(e){await this.filterTestsByAudience(this.testConfigs,this.state.analytics.visitor??this.buildBaseVisitor(),this.state.essential.visitorTests),this.pruneStaleVisitorTests(),this.deriveC
17ategoryFromExistingTests(),this.clearStaleReservations();let t=e?e.filter(i=>this.testsFilteredByAudience.some(s=>s.id===i.id)):[...this.testsForUrl(this.testsFilteredByAudience),...this.domTestsForUrl(this.testsFilteredByAudience)];try{if(t.length===0)return this.log("No tests found"),!1;this.log("Checking for existing visitor test on page");const i=this.getCurrentVisitorHypothesis(t);if(i){this.log("Found current visitor test");const l=this.considerRedirect(i);return l&&(this.log("Redirecting for current visitor test"),this.redirect(i)),l}const s=this.getReservationForCurrentPage();if(s){this.log("Found matching reservation for current page: %s",s.testId);const l=this.getHypothesis(s.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(s.entryCriteriaKey);const c=this.considerRedirect(l);return c&&this.redirect(l),c}}this.log("No active test relation for test page");const r=this.testsForUrl(this.inactiveTestConfigs.filter(l=>this.testIsPaused(l)&&l.hypotheses.some(c=>this.state.essential.visitorTests.some(d=>d.hypothesisId===c.id)))).map(l=>l.id);if(r.length>0)return this.log("Visitor has paused tests for test page, skipping test assignment: %o",r),!1;if(!this.state.temporary.testCategory){const l=this.testsFilteredByAudience.filter(d=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d))),c=this.testsFilteredByAudience.filter(d=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(d)));if(this.log("Category dice roll - global tests: %o, conditional tests: %o",l.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)})),c.map(d=>({id:d.id,title:d.title,criteria:this.getEntryCriteriaKey(d)}))),l.length>0&&c.length>0){const d=l.length,u=c.length,h=d+u,p=Math.random()*h;this.state.temporary.testCategory=p<d?"global":"conditional",this.log("Category dice roll: rolled %.2f of %d (global weight: %d, conditional weight: %d), selected '%s'",p,h,d,u,this.state.temporary.testCategory)}else l.length>0?(this.state.temporary.testCategory="global",this.log("Only global tests available, setting category to global")):(this.state.temporary.testCategory="conditional",this.log("Only conditional tests available, setting category to conditional"));this.persistTemporaryState()}const o=this.state.temporary.testCategory;if(this.log("Visitor test category: %s",o),o==="global"){const l=this.testsFilteredByAudience.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:global");t=t.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}else{const l=this.testsFilteredByAudience.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of l)this.markTestAsBlocked(c,"category:conditional");t=t.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}if(t.length===0)return this.log("No tests remaining after category filter"),!1;this.createReservations(t);const n=this.getReservationForCurrentPage();if(n&&!n.isRealized){const l=this.getHypothesis(n.hypothesisId);if(l){l.type!=="price"&&this.realizeReservationForCriteria(n.entryCriteriaKey);const c=this.considerRedirect(l);return c&&(this.log("Redirecting for new test"),this.redirect(l)),c}}return!1}finally{this.includeInDomTests(),this.saveState()}}includeInDomTests(){this.applyControlForAudienceFilteredPriceTests();const e=this.getDomTestsForCurrentUrl(),t=this.getVisitorDomHypothesis(e);for(const i of e){this.log("Evaluating dom test '%s'",i.id);const s=i.hypotheses.some(p=>p.type==="price");if(this.state.essential.visitorTests.find(p=>p.testId===i.id&&p.isInvalid&&!p.hypothesisId)){if(this.log("Visitor is blocked from test '%s', applying control prices if price test",i.id),s){const p=i.hypotheses.find(b=>b.isControl);p?.priceData&&(this.applyPriceTestWithMapLookup(i.id,p,[p],()=>{this.log("Control prices applied for blocked visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1))}continue}const o=this.getReservationForTest(i.id);let n=null,l=!1;const c=t.find(p=>i.hypotheses.some(b=>p.id===b.id));if(o)n=this.getHypothesis(o.hypothesisId)??null,this.log("Using reserved hypothesis '%s' for test '%s'",o.hypothesisId,i.id);else if(c)n=c,this.log("Using existing hypothesis assignment for test '%s'",i.id);else if(s){const p=this.visitorActiveTestTypeWithReservations();p?(l=!0,this.log("Visitor already in test type '%s', treating as non-test for price test '%s'",p,i.id)):n=this.pickHypothesis(i)}else n=this.pickHypothesis(i);if(l&&s){const p=i.hypotheses.find(b=>b.isControl);p?.priceData&&(this.log("Applying control prices for non-test visitor on price test '%s' (Map-based)",i.id),this.applyPriceTestWithMapLookup(i.id,p,[p],()=>{this.log("Control prices applied for non-test visitor, no metrics tracked")}
17),this.updatePriceTestHiddenInputs(i.id,"control",!1));continue}if(!n){this.log("Failed to pick hypothesis for test");continue}this.sendDiagnosticTelemetry("assignment",i.id,{hypothesisId:n.id,isControl:n.isControl,testType:n.type});const d=i.bayesianRevision??4,u=n.type==="price",h=d>=5;if(u&&h){if(this.log(`Price test with Map-based lookup (v${d}): ${i.id}`),!n.priceData){this.log("No price data for hypothesis '%s', skipping",n.id);continue}const p=n.isControl?"control":"variant";this.log(`Setting up Map-based price test for ${p} (test: ${i.id})`),this.applyPriceTestWithMapLookup(i.id,n,i.hypotheses,b=>{const E=this.getReservationForTest(b);E&&!E.isRealized&&E.entryCriteriaKey?this.realizeReservationForCriteria(E.entryCriteriaKey):this.queueAddVisitorToTest(b,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(u&&!h){this.log(`Price test without viewport tracking (v${d}): ${i.id}`);const p=this.getDomSelectorsForHypothesis(n);if(p.length===0)continue;U(document,{testId:i.id,hypothesisId:n.id,selectors:p},b=>{this.queueAddVisitorToTest(b,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(!n.domSelectors||n.domSelectors.length===0){this.log("No selectors found, skipping hypothesis");continue}U(document,{testId:i.id,hypothesisId:n.id,selectors:n.domSelectors},p=>{this.queueAddVisitorToTest(p,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()})}}considerRedirect(e){if(this.log("Considering redirect for hypothesis '%s'",e.id),e.isControl)return this.log("Skipping redirect for control"),!1;if(e.type==="basicScript"||e.type==="manualScript")return this.log("Skipping redirect for script test"),!1;const t=this.state.essential.visitorTests.find(o=>o.hypothesisId===e.id),i=new URL(window.location.toString()),r=new URLSearchParams(window.location.search).get("view");if(e.type==="theme"){if(!(e.themeId===themeId)){if(this.log("Theme id '%s' is not hypothesis theme ID '%s'",e.themeId,themeId),this.isAppProxyPath())return this.log("On App Proxy path, skipping theme redirect to avoid infinite loop"),!1;if(t&&t.themeId!==e.themeId&&(t.themeId===themeId||!this.isThemePreview()))this.log("On old theme, redirecting and updating local visitor"),t.themeId=e.themeId;else if(this.isThemePreview())return this.log("On non-test theme, skipping redirect"),!1;return this.log("Hiding page to redirect for theme test"),this.hidePage(),!0}return!1}else if(e.type!=="dom"&&e.type!=="price"&&e.affix!==template.suffix&&e.affix!==r||e.redirectPath&&!i.pathname.endsWith(e.redirectPath))return this.log("Hiding page to redirect for template test"),this.hidePage(),!0;return this.log("Not redirecting"),!1}redirect(e){if(this.log("Redirecting to hypothesis '%s'",e.id),e.isControl)return;const t=new URL(window.location.toString());if(t.searchParams.delete("view"),e.redirectPath){const n=RegExp("^(/w{2}-w{2})/").exec(t.pathname);if(n&&n.length>1){const l=n[1];t.pathname=`${l}${e.redirectPath}`}else t.pathname=e.redirectPath}else e.type==="theme"?(t.searchParams.set("_ab","0"),t.searchParams.set("_fd","0"),t.searchParams.set("_sc","1"),t.searchParams.set("preview_theme_id",e.themeId.toString())):e.type!=="urlRedirect"&&t.searchParams.set("view",e.affix);const i=this.state.essential.visitorTests.find(n=>n.hypothesisId===e.id)?.testId,s=t.pathname+t.search,r=window.location.pathname+window.location.search,o=K(t.hash);if(i&&s!==r&&!o){const n=qe(),l=He({v:2,t:i,n,fh:Me(window.location.pathname+window.location.search)});t.hash=`slr-${n}`;const c=new Date(Date.now()+3e4).toUTCString();document.cookie=`shoplift_redirect=${l};domain=.${window.location.hostname};path=/;SameSite=Strict;expires=${c}`}s===r&&this.showPage(),this.queueRedirect(t)}async refreshVisitor(e){if(e===null||!this.state.essential.isFirstLoad||!this.testConfigs.some(i=>i.visitorOption!=="all"))return;this.log("Refreshing visitor"),this.hidePage();const t=await this.getVisitor(e);t&&t.id&&this.updateLocalVisitor(t)}buildBaseVisitor(){return{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.device,country:null,...this.state.essential.initialState}}getInitialState(){const e=this.getUTMValue("utm_source")??"",t=this.getUTMValue("utm_medium")??"",i=this.getUTMValue("utm_campaign")??"",s=this.getUTMValue("utm_content")??"",r=window.document.referrer,o=this.device;return{createdAt:new Date,utmSource:e,utmMedium:t,utmCampaign:i,utmContent:s,referrer:r,device:o}}checkForThemePreview(){return this.log("Checking for theme preview"),window.location.hostname.endsWith(".shopifypreview.com")?(this.log("on shopify preview domain"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!1):this.isThemePreview()?this.state.essential.visitorTests.some(e=>e.isThemeTest&&e.hypothesisId!=null&&this.getHypothesis(e.hypothesisId)&&e.themeId===themeId)?(this.log("On active theme test, remov
17ing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):this.state.essential.visitorTests.some(e=>e.isThemeTest&&e.hypothesisId!=null&&!this.getHypothesis(e.hypothesisId)&&e.themeId===themeId)?(this.log("Visitor is on an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.state.essential.isFirstLoad?(this.log("No visitor found on theme preview, redirecting to main theme"),this.redirectToMainTheme(),!0):this.inactiveTestConfigs.some(e=>e.hypotheses.some(t=>t.themeId===themeId))?(this.log("Current theme is an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.testConfigs.some(e=>e.hypotheses.some(t=>t.themeId===themeId))?(this.log("Falling back to clearing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):(this.log("No tests on current theme, skipping script"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!0):(this.log("Not on theme preview"),this.clearThemeBar(!0,!1,this.state),!1)}redirectToMainTheme(){this.hidePage();const e=new URL(window.location.toString());e.searchParams.set("preview_theme_id",""),this.queueRedirect(e)}testsForUrl(e){const t=new URL(window.location.href),i=this.typeFromTemplate();return e.filter(s=>s.hypotheses.some(r=>r.type!=="dom"&&r.type!=="price"&&(r.isControl&&r.type===i&&r.affix===template.suffix||r.type==="theme"||r.isControl&&r.type==="urlRedirect"&&r.redirectPath&&t.pathname.endsWith(r.redirectPath)||r.type==="basicScript"))&&(s.ignoreTestViewParameterEnforcement||!t.searchParams.has("view")||s.hypotheses.map(r=>r.affix).includes(t.searchParams.get("view")??"")))}domTestsForUrl(e){const t=new URL(window.location.href);return e.filter(i=>i.hypotheses.some(s=>s.type!=="dom"&&s.type!=="price"?!1:s.type==="price"&&s.priceData&&s.priceData.variants.length>0?!0:s.domSelectors&&s.domSelectors.some(r=>new RegExp(se(r)).test(K(t.toString())))))}async filterTestsByAudience(e,t,i){const s=[],r=e.some(n=>(n.requiresRegion||this.geoViaShopify&&n.requiresCountry)&&!i.some(l=>l.testId===n.id));this.resolvedRegion===null&&r&&(this.log("Hiding page to wait for Shopify region resolution"),this.hidePage(),await this.waitForResolvedRegion()),window.__slRegion=this.resolvedRegion??"";let o=t.country;this.geoViaShopify?o=this.resolvedRegion?this.resolvedRegion.slice(0,2):o:!o&&e.some(n=>n.requiresCountry&&!i.some(l=>l.testId===n.id))&&(this.log("Hiding page to check geoip"),this.hidePage(),o=await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/get-country`,signal:AbortSignal.timeout(this.getCountryTimeout)}).catch(n=>(this.log("Error getting country",n),null)));for(const n of e){if(this.log("Checking audience for test '%s'",n.id),this.state.essential.visitorTests.some(d=>d.testId===n.id&&d.hypothesisId==null)){console.log(`Skipping blocked test '${n.id}'`);continue}const l=this.visitorCreatedDuringTestActive(n.statusHistory);(i.some(d=>d.testId===n.id&&(n.device==="all"||n.device===t.device&&n.device===this.device))||this.isTargetAudience(n,t,l,o))&&(this.log("Visitor is in audience for test '%s'",n.id),s.push(n))}this.testsFilteredByAudience=s}async waitForResolvedRegion(e=1500,t=50){const i=Date.now();for(;this.resolvedRegion===null&&Date.now()-i<e;)await new Promise(s=>window.setTimeout(s,t))}isTargetAudience(e,t,i,s){const r=this.getChannel(t);return(e.device==="all"||e.device===t.device&&e.device===this.device)&&(e.visitorOption==="all"||e.visitorOption==="new"&&i||e.visitorOption==="returning"&&!i)&&(e.targetAudiences.length===0||e.targetAudiences.reduce((o,n)=>o||n.reduce((l,c)=>l&&c(t,i,r,s),!0),!1))}visitorCreatedDuringTestActive(e){let t="";for(const i of e){if(this.state.analytics.visitor!==null&&this.state.analytics.visitor.createdAt<i.createdAt||this.state.essential.initialState.createdAt<i.createdAt)break;t=i.status}return t==="active"}getDomTestsForCurrentUrl(){return this.domTestsForUrl(this.testsFilteredByAudience)}getCurrentVisitorHypothesis(e){return e.flatMap(t=>t.hypotheses).find(t=>t.type!=="dom"&&t.type!=="price"&&this.state.essential.visitorTests.some(i=>i.hypothesisId===t.id))}getVisitorDomHypothesis(e){return e.flatMap(t=>t.hypotheses).filter(t=>(t.type==="dom"||t.type==="price")&&this.state.essential.visitorTests.some(i=>i.hypothesisId===t.id))}getHypothesis(e){return this.testConfigs.filter(t=>t.hypotheses.some(i=>i.id===e)).map(t=>t.hypotheses.find(i=>i.id===e))[0]}getActiveAssignment(){if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig;return t.currentVariant&&t.testId?{testId:t.testId,hypothesisId:t.currentVariant}:null}const e=this.state.essential.visitorTests.find(t=>t.hypothesisId);return e?.hypothesisId?{testId:e.testId,hypothesisId:e.hypothesisId}:null}findActiveSubscriptionTestControl(){for(const e of this.testConfigs){const t=e.hypotheses.find(i=>i.isControl);if(t?.subscriptionData)return{testId:e.id,hypothesis:t}}return null}getDomSelectorsForHypothesis(e){if(!e)return[];if(e.domSelectors&&e.domSelectors.length>0)return e.domSelectors;if(e.priceData){const t=`${this.priceSelectorsSessionKey}_${e.id}`;try{const s=sessionStorage.getItem(t);if(s){const r=JSON.parse(s);return e.domSelectors=r,this.log("Loaded %d price selectors from cache for hypothesis '%s'",r.length,e.id),r}}catch{}const i=$e(e.priceData);e.domSelectors=i;try{sessionStorage.setItem(t,JSON.stringify(i)),this.log("Generated and cached %d price selectors for hypothesis '%s'",i.length,e.id)}catch{this.log("Generated %d price selectors for hypothesis '%s' (cache unavailable)",i.length,e.id)}return i}return[]}hasThemeTest(e){return e.some(t=>t.hypotheses.some(i=>i.type==="theme"))}hasTestThatIsNotThemeTest(e){return e.some(t=>t.hypotheses.some(i=>i.type!=="theme"&&i.type!=="dom"&&i.type!=="price"))}hasThemeAndOtherTestTypes(e){return this.hasThemeTest(e)&&this.hasTestThatIsNotThemeTest(e)}testIsPaused(e){return e.status==="paused"||e.status==="incompatible"||e.status==="suspended"}visitorActiveTestType(){const e=this.state.essential.visitorTests.filter(t=>this.testConfigs.some(i=>i.hypotheses.some(s=>s.id==t.hypothesisId)));return e.length===0?null:e.some(t=>t.isThemeTest)?"theme":"templateOrUrlRedirect"}getReservationType(e){return e==="price"||this.isTemplateTestType(e)?"deferred":"immediate"}isTemplateTestType(e){return["product","collection","landing","index","cart","search","blog","article","collectionList"].includes(e)}getEntryCriteriaKey(e){const t=e.hypotheses.find(i=>i.isControl);if(!t)return`unknown:${e.id}`;switch(t.type){case"theme":return"global:theme";case"basicScript":return"global:autoApi";case"price":return"global:price";case"manualScript":return`conditional:manualApi:${e.id}`;case"urlRedirect":return`conditional:url:${t.redirectPath||"unknown"}`;default:return`conditional:template:${t.type}`}}isGlobalEntryCriteria(e){return e.startsWith("global:")}groupTestsByEntryCriteria(e){const t=new Map;for(const i of e){const s=this.getEntryCriteriaKey(i),r=t.get(s)||[];r.push(i),t.set(s,r)}return t}doesCurrentPageMatchEntryCriteria(e){if(this.isGlobalEntryCriteria(e))return!0;
17if(e==="conditional:manualApi")return!1;if(e.startsWith("conditional:url:")){const t=e.replace("conditional:url:","");return window.location.pathname.endsWith(t)}if(e.startsWith("conditional:template:")){const t=e.replace("conditional:template:","");return this.typeFromTemplate()===t}return!1}hasActiveReservation(){const e=this.getActiveReservations();return Object.values(e).some(t=>!t.isRealized)}getActiveReservation(){const e=this.getActiveReservations();return Object.values(e).find(t=>!t.isRealized)??null}clearStaleReservations(){const e=this.state.temporary.testReservations;if(!e)return;let t=!1;for(const[i,s]of Object.entries(e)){const r=this.testConfigs.find(n=>n.id===s.testId);if(!r){this.log("Test '%s' no longer in config, clearing reservation for criteria '%s'",s.testId,i),delete e[i],t=!0;continue}if(r.status!=="active"){this.log("Test '%s' status is '%s', clearing reservation for criteria '%s'",s.testId,r.status,i),delete e[i],t=!0;continue}this.testsFilteredByAudience.some(n=>n.id===s.testId)||(this.log("Visitor no longer passes audience for test '%s', clearing reservation for criteria '%s'",s.testId,i),delete e[i],t=!0)}t&&this.persistTemporaryState()}createReservations(e){if(this.state.temporary.testReservations||(this.state.temporary.testReservations={}),this.state.temporary.rolledEntryCriteria||(this.state.temporary.rolledEntryCriteria=[]),this.state.temporary.testCategory==="global"){this.createSingleReservation(e,"global");return}const i=e.filter(n=>this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(n))),s=e.filter(n=>!this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(n)));this.log("Conditional tests split - matching current page: %d, not matching: %d",i.length,s.length),i.length>0&&this.log("Tests matching current page (same pool): %o",i.map(n=>({id:n.id,title:n.title,criteria:this.getEntryCriteriaKey(n)})));const r=`conditional:current-page:${this.typeFromTemplate()}`;if(i.length>0&&!this.state.temporary.rolledEntryCriteria.includes(r)){this.createSingleReservation(i,r);for(const n of i){const l=this.getEntryCriteriaKey(n);this.state.temporary.rolledEntryCriteria.includes(l)||this.state.temporary.rolledEntryCriteria.push(l)}}const o=this.groupTestsByEntryCriteria(s);for(const[n,l]of o){if(this.state.temporary.rolledEntryCriteria.includes(n)){this.log("Already rolled for criteria '%s', skipping",n);continue}if(l.some(S=>this.state.essential.visitorTests.some(C=>C.testId===S.id))){this.log("Visitor already has VT for criteria '%s', skipping",n),this.state.temporary.rolledEntryCriteria.push(n);continue}const d=[...l].sort((S,C)=>S.id.localeCompare(C.id));this.log("Test dice roll for criteria '%s' - available tests: %o",n,d.map(S=>({id:S.id,title:S.title})));const u=Math.floor(Math.random()*d.length),h=d[u];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",u+1,l.length,h.id,h.title);const p=this.pickHypothesis(h);if(!p){this.log("No hypothesis picked for test '%s'",h.id);continue}this.sendDiagnosticTelemetry("assignment",h.id,{hypothesisId:p.id,isControl:p.isControl,testType:p.type});const b=this.getReservationType(p.type),E={testId:h.id,hypothesisId:p.id,testType:p.type,reservationType:b,isThemeTest:p.type==="theme",themeId:p.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:n};this.state.temporary.testReservations[n]=E,this.state.temporary.rolledEntryCriteria.push(n),this.log("Created %s reservation for test '%s' (criteria: %s)",b,h.id,n);for(const S of l)S.id!==h.id&&this.markTestAsBlocked(S,n)}this.persistTemporaryState()}createSingleReservation(e,t){if(this.state.temporary.rolledEntryCriteria.includes(t)){this.log("Already rolled for pool '%s', skipping",t);return}if(e.some(u=>this.state.essential.visitorTests.some(h=>h.testId===u.id&&!h.isInvalid))){this.log("Visitor already has VT for pool '%s', skipping",t),this.state.temporary.rolledEntryCriteria.push(t);return}if(e.length===0){this.log("No tests in pool '%s'",t);return}const s=[...e].sort((u,h)=>u.id.localeCompare(h.id));this.log("Test dice roll for pool '%s' - available tests: %o",t,s.map(u=>({id:u.id,title:u.title,criteria:this.getEntryCriteriaKey(u)})));const r=Math.floor(Math.random()*s.length),o=s[r];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",r,e.length,o.id,o.title);const n=this.pickHypothesis(o);if(!n){this.log("No hypothesis picked for test '%s'",o.id);return}this.sendDiagnosticTelemetry("assignment",o.id,{hypothesisId:n.id,isControl:n.isControl,testType:n.type});const l=this.getReservationType(n.type),c=this.getEntryCriteriaKey(o),d={testId:o.id,hypothesisId:n.id,testType:n.type,reservationType:l,isThemeTest:n.type==="theme",themeId:n.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:c};this.state.temporary.testReservations[c]=d,this.state.temporary.rolledEntryCriteria.push(t),this.log("Created %s reservation for test '%s' from pool '%s' (criteria: %s)",l,o.id,t,c);for(const u of e)u.id!==o.id&&this.markTestAsBlocked(u,`pool:${t}`);this.persistTemporaryState()}markTestAsBlocked(e,t){this.state.essential.visitorTests.some(i=>i.testId===e.id)||(this.log("Blocking visitor from test '%s' (reason: %s)",e.id,t),this.state.essential.visitorTests.push({createdAt:new Date,testId:e.id,hypothesisId:null,isThemeTest:e.hypotheses.some(i=>
17i.type==="theme"),shouldSendToGa:!1,isSaved:!0,isInvalid:!0,themeId:void 0}))}realizeReservationForCriteria(e){const t=this.state.temporary.testReservations?.[e];if(!t)return this.log("No reservation found for criteria '%s'",e),!1;if(t.isRealized)return this.log("Reservation already realized for criteria '%s'",e),!1;if(this.state.essential.visitorTests.some(s=>s.testId===t.testId&&!s.isInvalid))return this.log("Visitor already assigned to test '%s'",t.testId),!1;const i=this.getHypothesis(t.hypothesisId);return i?(t.isRealized=!0,this.persistTemporaryState(),this.queueAddVisitorToTest(t.testId,i),this.saveState(),this.log("Realized reservation for test '%s' (criteria: %s)",t.testId,e),!0):(this.log("Hypothesis '%s' not found",t.hypothesisId),!1)}getActiveReservations(){return this.state.temporary.testReservations??{}}getReservationForCurrentPage(){const e=this.getActiveReservations();for(const[t,i]of Object.entries(e)){if(i.isRealized)continue;const s=this.testConfigs.find(r=>r.id===i.testId);if(!(!s||s.status!=="active")&&this.doesCurrentPageMatchEntryCriteria(t))return i}return null}getReservationForTest(e){const t=this.getActiveReservations();return Object.values(t).find(i=>i.testId===e)??null}getReservationTestType(){const e=this.getActiveReservations(),t=Object.values(e);if(t.length===0)return null;for(const i of t)if(i.isThemeTest)return"theme";for(const i of t)if(i.testType==="price")return"price";return t.some(i=>!i.isRealized)?"templateOrUrlRedirect":null}hasPriceTests(e){return e.some(t=>t.hypotheses.some(i=>i.type==="price"))}_priceTestProductIds=null;getPriceTestProductIds(){if(this._priceTestProductIds)return this._priceTestProductIds;const e=new Set;for(const t of this.testConfigs)for(const i of t.hypotheses)if(i.type==="price"){for(const s of i.domSelectors||[]){const r=s.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);r?.[1]&&e.add(r[1])}if(i.priceData?.variants)for(const[s]of i.priceData.variants)e.add(s)}return this._priceTestProductIds=e,this.log("Built price test product ID cache with %d products",e.size),e}isProductInAnyPriceTest(e){return this.getPriceTestProductIds().has(e)}visitorActiveTestTypeWithReservations(){const e=this.getActiveReservations();for(const r of Object.values(e)){if(r.isThemeTest)return"theme";if(r.testType==="price")return"price"}if(Object.values(e).some(r=>!r.isRealized)){if(this.state.temporary.testCategory==="global")for(const o of Object.values(e)){if(o.testType==="theme")return"theme";if(o.testType==="price")return"price";if(o.testType==="basicScript")return"theme"}return"templateOrUrlRedirect"}const i=this.state.essential.visitorTests.filter(r=>!r.isInvalid&&this.testConfigs.some(o=>o.hypotheses.some(n=>n.id===r.hypothesisId)));return i.length===0?null:i.some(r=>this.getHypothesis(r.hypothesisId)?.type==="price")?"price":i.some(r=>r.isThemeTest)?"theme":"templateOrUrlRedirect"}applyControlForAudienceFilteredPriceTests(){const e=this.testConfigs.filter(s=>s.status==="active"&&s.hypotheses.some(r=>r.type==="price"));if(e.length===0)return;const t=this.testsFilteredByAudience.filter(s=>s.hypotheses.some(r=>r.type==="price")),i=e.filter(s=>!t.some(r=>r.id===s.id));if(i.length!==0){this.log("Found %d price tests filtered by audience, applying control selectors",i.length);for(const s of i){const r=s.hypotheses.find(c=>c.isControl),o=this.getDomSelectorsForHypothesis(r);if(o.length===0){this.log("No control selectors for audience-filtered price test '%s'",s.id);continue}const n=new URL(window.location.href);o.some(c=>{try{return new RegExp(se(c)).test(K(n.toString()))}catch{return!1}})&&(this.log("Applying control selectors for audience-filtered price test '%s'",s.id),U(document,{testId:s.id,hypothesisId:r.id,selectors:o},()=>{}),this.updatePriceTestHiddenInputs(s.id,"control",!1))}}}pickHypothesis(e){let t=Math.random();const i=e.hypotheses.reduce((r,o)=>r+o.visitorCount,0);return e.hypotheses.sort((r,o)=>r.isControl?o.isControl?0:-1:o.isControl?1:0).reduce((r,o)=>{if(r!==null)return r;const l=e.hypotheses.reduce((c,d)=>c&&d.visitorCount>20,!0)?o.visitorCount/i-o.trafficPercentage:0;return t<=o.trafficPercentage-l?o:(t-=o.trafficPercentage-l,null)},null)}typeFromTemplate(){switch(template.type){case"list-collections":return"collectionList";case"page":return"landing";case"article":case"blog":case"cart":case"collection":case"index":case"product":case"search":return template.type;default:return null}}queueRedirect(e){this.saveState(),this.disableReferrerOverride||(this.log(`Saving temporary referrer override '${document.referrer}'`),this.state.temporary.originalReferrer=document.referrer,this.persistTemporaryState()),window.setTimeout(()=>window.location.assign(e),0),window.setTimeout(()=>{this.syncAllEvents()},2e3)}scheduleRetrySync(){this.clientIdRetryCount>=5||(this.clientIdRetryCount++,window.setTimeout(()=>{this.syncAllEvents()},500))}async syncAllEvents(){const e=async()=>
17{if(this.isSyncing){window.setTimeout(()=>{(async()=>await e())()},500);return}try{if(this.isSyncing=!0,this.syncGAEvents(),this.shopifyAnalyticsId||(this.shopifyAnalyticsId=this.getShopifyAnalyticsId()),!this.shopifyAnalyticsId){this.scheduleRetrySync();return}await this.syncEvents()}finally{this.isSyncing=!1}};await e()}async syncEvents(){if(!this.state.essential.consentApproved||!this.shopifyAnalyticsId||this.state.analytics.queue.length===0)return;const e=this.state.analytics.queue.length,t=this.state.analytics.queue.splice(0,e);this.log("Syncing %s events",e);try{const i={shop:this.shop,visitorDetails:{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.state.analytics.visitor?.device??this.device,country:this.state.analytics.visitor?.country??null,...this.state.essential.initialState},events:this.state.essential.visitorTests.filter(r=>!r.isInvalid&&!r.isSaved&&r.hypothesisId!=null).map(r=>new be(r.testId,r.hypothesisId,r.createdAt)).concat(t)};await this.sendEvents(i);for(const r of this.state.essential.visitorTests.filter(o=>!o.isInvalid&&!o.isSaved&&o.hypothesisId!=null))this.sendDiagnosticTelemetry("event-delivered",r.testId,{hypothesisId:r.hypothesisId,isControl:r.assignedTo==="control",testType:r.testType??"unknown"});const s=await this.getVisitor(this.shopifyAnalyticsId);s!==null&&this.updateLocalVisitor(s);for(const r of this.state.essential.visitorTests.filter(o=>!o.isInvalid&&!o.isSaved))r.isSaved=!0,r.savedAt=Date.now()}catch{this.state.analytics.queue.splice(0,0,...t)}finally{this.saveState()}}syncGAEvents(){if(!this.gaConfig.sendEvents){if(he)return;he=!0,this.log("UseGtag is false â skipping GA Events");return}if(this.isSyncingGA){this.log("Already syncing GA - skipping GA events");return}const e=this.state.essential.visitorTests.filter(t=>t.shouldSendToGa);e.length!==0&&(this.isSyncingGA=!0,this.log("Syncing %s GA Events",e.length),Promise.allSettled(e.map(t=>this.sendGAEvent(t))).then(()=>this.log("All gtag events sent")).finally(()=>this.isSyncingGA=!1))}sendGAEvent(e){return new Promise(t=>{this.log("Sending GA Event for test %s, hypothesis %s",e.testId,e.hypothesisId);const i=()=>{this.log("GA acknowledged event for hypothesis %s",e.hypothesisId),e.shouldSendToGa=!1,this.persistEssentialState(),t()},s={exp_variant_string:`SL-${e.testId}-${e.hypothesisId}`};
17this.shopliftDebug&&Object.assign(s,{debug_mode:!0});function r(o,n,l){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}this.gaConfig.mode==="gtag"?r("event","experience_impression",{...s,event_callback:i}):(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"experience_impression",...s,eventCallback:i}))})}updateLocalVisitor(e){let t;({visitorTests:t,...this.state.analytics.visitor}=e),this.log("updateLocalVisitor - server returned %d tests: %o",t.length,t.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isInvalid:s.isInvalid}))),this.log("updateLocalVisitor - local has %d tests: %o",this.state.essential.visitorTests.length,this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid})));const i=300*1e3;for(const s of this.state.essential.visitorTests.filter(r=>r.isSaved&&(!r.savedAt||Date.now()-r.savedAt>i)&&!t.some(o=>o.testId===r.testId)))this.log("updateLocalVisitor - marking LOCAL test as INVALID (isSaved && not in server): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),s.isInvalid=!0;for(const s of t){const r=this.state.essential.visitorTests.findIndex(n=>n.testId===s.testId);if(!(r!==-1))this.log("updateLocalVisitor - ADDING server test (not found locally): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),this.state.essential.visitorTests.push(s);else{const n=this.state.essential.visitorTests.at(r);this.log("updateLocalVisitor - REPLACING local test with server test: testId=%s, local hypothesisId=%s -> server hypothesisId=%s, local isInvalid=%s -> false",s.testId,n?.hypothesisId,s.hypothesisId,n?.isInvalid),s.isInvalid=!1,s.shouldSendToGa=n?.shouldSe
17ndToGa??!1,s.testType=n?.testType,s.assignedTo=n?.assignedTo,s.testTitle=n?.testTitle,this.state.essential.visitorTests.splice(r,1,s)}}this.log("updateLocalVisitor - FINAL local tests: %o",this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid}))),this.state.analytics.visitor.storedAt=new Date}async getVisitor(e){try{return await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/by-key/${this.shop}/${e}`})}catch{return null}}async sendEvents(e){await this.makeRequest({method:"post",url:`${this.eventHost}/api/v0/events`,data:JSON.stringify(e)})}sendDiagnosticTelemetry(e,t,i){if(!this.telemetryEnabled||!navigator.sendBeacon)return;const s=this.state.essential.consentApproved,r=JSON.stringify({shop:this.shop,testId:t,checkpoint:e,device:this.device,...s?{visitorId:this.shopifyAnalyticsId??"unknown"}:{},clientTimestamp:Date.now(),consentApproved:s,hasConsentInteraction:this.state.essential.hasConsentInteraction,...i});navigator.sendBeacon(`${this.eventHost}/api/v0/telemetry`,new Blob([r],{type:"text/plain"}))}getUTMValue(e){return new URLSearchParams(window.location.search).get(e)||null}hidePage(e){this.log("Hiding page"),this.cssHideClass&&!window.document.documentElement.classList.contains(this.cssHideClass)&&(window.document.documentElement.classList.add(this.cssHideClass),e||setTimeout(this.removeAsyncHide(this.cssHideClass),2e3))}showPage(){this.cssHideClass&&this.removeAsyncHide(this.cssHideClass)()}getDeviceType(){function e(){let i=!1;return(function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}function t(){let i=!1;return(function(s){(/android|ipad|playbook|silk/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
17sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}return e()?"mobile":t()?"tablet":"desktop"}removeAsyncHide(e){return()=>{e&&window.document.documentElement.classList.remove(e)}}async getCartState(){try{let e=await this.makeJsonRequest({method:"get",url:`${window.location.origin}/cart.js`});return e===null||(e.note===null&&(e=await this.makeJsonRequest({method:"post",url:`${window.location.origin}/cart/update.js`,data:JSON.stringify({note:""})})),e==null)?null:{token:e.token,total_price:e.total_price,total_discount:e.total_discount,currency:e.currency,items_subtotal_price:e.items_subtotal_price,items:e.items.map(t=>({quantity:t.quantity,variant_id:t.variant_id,key:t.key,price:t.price,final_line_price:t.final_line_price,sku:t.sku,product_id:t.product_id}))}}catch(e){return this.log("Error sending cart info",e),null}}ensureCartAttributesForExistingPriceTests(e){try{if(this.log("Checking visitor assignments for active price tests"),e&&this.state.temporary.previewConfig){const t=this.state.temporary.previewConfig;this.log("Using preview config for merchant:",t.testId);let i="variant";if(t.variants&&t.variants.length>0){const s=t.variants.find(r=>r.id===t.currentVariant);s&&s.isControl&&(i="control")}this.log("Merchant preview - updating hidden inputs:",t.testId,i),this.updatePriceTestHiddenInputs(t.testId,i,!0);return}for(const t of this.state.essential.visitorTests){const i=this.testConfigs.find(o=>o.id===t.testId);if(!i){this.log("Test config not found:",t.testId);continue}const s=i.hypotheses.find(o=>o.id===t.hypothesisId);if(!s||s.type!=="price")continue;const r=s.isControl?"control":"variant";this.log("Updating hidden inputs for price test:",t.testId,r),this.updatePriceTestHiddenInputs(t.testId,r,e)}}catch(t){this.log("Error ensuring cart attributes for existing price tests:",t)}}subscriptionSwapDone=!1;subscriptionHideWrongPlans=null;subscriptionPriceDone=!1;subscriptionUpdateOneTime=null;subscriptionOneTimeDone=!1;swapMap=null;slptValue=null;async subscriptionSwap(){await Ue(this)}async subscriptionPriceChange(){await ze(this)}async subscriptionOneTimePrice(){await We(this)}updatePriceTestHiddenInputs(e,t,i){try{this.cleanupPriceTestObservers();const s=`${e}:${t}:${i?"t":"f"}`,r=T=>{const m=T.getAttribute("data-sl-pid");if(!m)return!0;if(i&&this.state.temporary.previewConfig){const w=this.state.temporary.previewConfig,I=t==="control"?"a":"b",f=w.variants.find(v=>v.label===I);if(!f)return!1;for(const v of f.domSelectors||[]){const g=v.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(g){const P=g[1];if(this.log(`Extracted ID from selector: ${P}, comparing to: ${m}`),P===m)return this.log("Product ID match found in preview config:",m,"variant:",f.label),!0}else this.log(`Could not extract ID from selector: ${v.cssSelector}`)}return this.log("No product ID match in preview config for:",m,"variant:",I),!1}const y=this.testConfigs.find(w=>w.id===e);if(!y)return this.log("Test config not found for testId:",e),!1;for(const w of y.hypotheses||[]){for(const I of w.domSelectors||[]){const f=I.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(f&&f[1]===m)return this.log("Product ID match found in domSelectors:",m,"for test:",e),!0}if(w.priceData?.variants){for(const I of w.priceData.variants)if(I[0]===m)return this.log("Product ID match found in priceData:",m,"for test:",e),!0}}return this.log("No product ID match for:",m,"in test:",e),!1},o=new Set;let n=!1,l=null;const c=(T,m)=>{if(document.querySelectorAll("[data-sl-attribute-p]").forEach(w=>{if(w instanceof Element&&w.nodeType===Node.ELEMENT_NODE&&w.isConnected&&document.contains(w))try{T.observe(w,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(I){this.log(`Failed to observe element (${m}):`,I)}}),document.body&&document.body.isConnected)try{T.observe(document.body,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(w){this.log(`Failed to observe document.body (${m}):`,w)}},d=(T,m,y,w)=>{const I=T.filter(f=>{const v=f.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);return v&&v[1]===w});this.log(`Applying ${y} DOM selectors, total: ${T.length}, filtered: ${I.length}`),I.length>0&&U(document,{testId:e,hypothesisId:m,selectors:I})},u=(T,m)=>{this.log(`Applying DOM selector changes for product ID: ${T}`),m.disconnect(),n=!0;try{if(i&&this.state.temporary.previewConfig){const y=t==="control"?"a":"b",w=this.state.temporary.previewConfig.variants.find(I=>I.label===y);if(!w?.domSelectors){this.log(`No DOM selectors found for preview variant: ${y}`);return}d(w.domSelectors,w.id,"preview config",T)}else{const y=this.testConfigs.find(I=>I.id===e);if(!y){this.log(`No test config found for testId: ${e}`);return}const w=y.hypotheses.find(I=>t==="control"?I.isControl:!I.isControl);if(!w?.domSelectors){this.log(`No DOM selectors found for assignment: ${t}`);return}d(w.domSelectors,w.id,"live config",T)}}finally{l!==null&&clearTimeout(l),l=window.setTimeout(()=>{n=!1,l=null,c(m,"reconnection"),this.log("Re-established innerHTML observer after DOM changes")}
17,50)}},h=new MutationObserver(T=>{if(!n)for(const m of T){if(m.type!=="childList"&&m.type!=="characterData")continue;let y=m.target;m.type==="characterData"&&(y=m.target.parentElement||m.target.parentNode);let w=y,I=w.getAttribute("data-sl-attribute-p");for(;!I&&w.parentElement;)w=w.parentElement,I=w.getAttribute("data-sl-attribute-p");if(!I)continue;const f=w.innerHTML||w.textContent||"";let v="";m.type==="characterData"&&m.oldValue!==null&&(v=m.oldValue),this.log(`innerHTML changed on element with data-sl-attribute-p="${I}"`),v&&this.log(`Previous content: "${v}"`),this.log(`Current content: "${f}"`),u(I,h)}});c(h,"initial setup"),o.add(h);const p=new MutationObserver(T=>{T.forEach(m=>{m.addedNodes.forEach(y=>{if(y.nodeType===Node.ELEMENT_NODE){const w=y;E(w);const I=w.matches('input[name="properties[_slpt]"]')?[w]:w.querySelectorAll('input[name="properties[_slpt]"]');I.length>0&&this.log(`MutationObserver found ${I.length} new hidden input(s)`),I.forEach(f=>{const v=f.getAttribute("data-sl-pid");if(this.log(`MutationObserver checking new input with data-sl-pid="${v}"`),r(f))f.value!==s&&(f.value=s,this.log("Updated newly added hidden input:",s)),S(f);else{const g=f.getAttribute("data-sl-pid");g&&this.isProductInAnyPriceTest(g)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",g):(f.remove(),this.log("Removed newly added non-matching hidden input for product ID:",g))}})}})})});o.add(p);const b=new MutationObserver(T=>{T.forEach(m=>{if(m.type==="attributes"&&m.attributeName==="data-sl-pid"){const y=m.target;if(this.log("AttributeObserver detected data-sl-pid attribute change on:",y.tagName),y.matches('input[name="properties[_slpt]"]')){const w=y,I=m.oldValue,f=w.getAttribute("data-sl-pid");this.log(`data-sl-pid changed from "${I}" to "${f}" - triggering payment placement updates`),r(w)?(w.value!==s&&(w.value=s,this.log("Updated hidden input after data-sl-pid change:",s)),f&&u(f,h),this.log("Re-running payment placement updates after variant change"),E(document.body)):f&&this.isProductInAnyPriceTest(f)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",f):(w.remove(),this.log("Removed non-matching hidden input after data-sl-pid change:",f))}}})});o.add(b);const E=T=>{T.tagName==="SHOPIFY-PAYMENT-TERMS"&&(this.log("MutationObserver found new shopify-payment-terms element"),this.updateShopifyPaymentTerms(e,t));const m=T.querySelectorAll("shopify-payment-terms");m.length>0&&(this.log(`MutationObserver found ${m.length} shopify-payment-terms in added node`),this.updateShopifyPaymentTerms(e,t)),T.tagName==="AFTERPAY-PLACEMENT"&&(this.log("MutationObserver found new afterpay-placement element"),this.updateAfterpayPlacements(e,t,"afterpay"));const y=T.querySelectorAll("afterpay-placement");y.length>0&&(this.log(`MutationObserver found ${y.length} afterpay-placement in added node`),this.updateAfterpayPlacements(e,t,"afterpay")),T.tagName==="SQUARE-PLACEMENT"&&(this.log("MutationObserver found new square-placement element"),this.updateAfterpayPlacements(e,t,"square"));const w=T.querySelectorAll("square-placement");w.length>0&&(this.log(`MutationObserver found ${w.length} square-placement in added node`),this.updateAfterpayPlacements(e,t,"square")),T.tagName==="KLARNA-PLACEMENT"&&(this.log("MutationObserver found new klarna-placement element"),this.updateKlarnaPlacements(e,t));const I=T.querySelectorAll("klarna-placement");I.length>0&&(this.log(`MutationObserver found ${I.length} klarna-placement in added node`),this.updateKlarnaPlacements(e,t))},S=T=>{b.observe(T,{attributes:!0,attributeFilter:["data-sl-pid"],attributeOldValue:!0,subtree:!1});const m=T.getAttribute("data-sl-pid");this.log(`Started AttributeObserver on specific input with data-sl-pid="${m}"`)},C=()=>{const T=document.querySelectorAll('input[name="properties[_slpt]"]');this.log(`Found ${T.length} existing hidden inputs to check`),T.forEach(m=>{const y=m.getAttribute("data-sl-pid");this.log(`Checking existing input with data-sl-pid="${y}"`),r(m)?(m.value=s,this.log("Updated existing hidden input:",s),y&&(this.log("Applying initial DOM selector changes for existing product"),u(y,h)),S(m)):y&&this.isProductInAnyPriceTest(y)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",
17y):(m.remove(),this.log("Removed non-matching hidden input for product ID:",y))})},_=()=>{document.body?(p.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver on document.body"),C(),E(document.body)):document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.body&&(p.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver after DOMContentLoaded"),C(),E(document.body))}):(this.log("Set timeout on observer"),setTimeout(_,10))};_(),window.__shopliftPriceTestObservers=o,window.__shopliftPriceTestValue=s,this.log("Set up DOM observer for price test hidden inputs")}catch(s){this.log("Error updating price test hidden inputs:",s)}}updateKlarnaPlacements(e,t){this.updatePlacementElements(e,t,"klarna-placement",(i,s)=>{i.setAttribute("data-purchase-amount",s.toString())})}cleanupPriceTestObservers(){const e=window.__shopliftPriceTestObservers;e&&(e.forEach(t=>{t.disconnect()}),e.clear(),this.log("Cleaned up existing price test observers")),delete window.__shopliftPriceTestObservers,delete window.__shopliftPriceTestValue}updateAfterpayPlacements(e,t,i="afterpay"){const s=i==="square"?"square-placement":"afterpay-placement";if(document.querySelectorAll(s).length===0){this.log(`No ${s} elements found on page - early return`);return}this.updatePlacementElements(e,t,s,(o,n)=>{if(i==="afterpay"){const l=(n/100).toFixed(2);o.setAttribute("data-amount",l)}else o.setAttribute("data-amount",n.toString())}),this.log("updateAfterpayPlacements completed")}updatePlacementElements(e,t,i,s){const r=document.querySelectorAll(i);if(r.length===0){this.log(`No ${i} elements found - early return`);return}let o;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const l=t==="control"?"a":"b",c=this.state.temporary.previewConfig.variants.find(d=>d.label===l);if(!c?.domSelectors){this.log(`No variant found for label ${l} in preview config for ${i}`);return}o=c.domSelectors,this.log(`Using preview config for ${i} in merchant mode, variant: ${l}`)}else{const l=this.testConfigs.find(d=>d.id===e);if(!l){this.log(`No testConfig found for id: ${e} - early return`);return}
17const c=l.hypotheses.find(d=>t==="control"?d.isControl:!d.isControl);if(!c?.domSelectors){this.log(`No hypothesis or domSelectors found for assignment: ${t} - early return`);return}o=c.domSelectors}const n=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);r.forEach(l=>{let c=null;const d=l.parentElement;if(d&&(c=d.querySelector('input[name="properties[_slpt]"]')),c||(c=l.querySelector('input[name="properties[_slpt]"]')),!c){this.log(`No hidden input found for ${i} element`);return}const u=c.getAttribute("data-sl-pid");if(!u){this.log("Hidden input has no data-sl-pid attribute - skipping");return}const h=o.find(S=>{const C=S.cssSelector.match(n);return C&&C[1]===u});if(!h){this.log(`No matching selector found for productId: ${u} - skipping element`);return}const p=h.actions.find(S=>S.scope==="price");if(!p?.value){this.log("No price action or value found - skipping element");return}const b=parseFloat(p.value.replace(/[^0-9.]/g,""));if(Number.isNaN(b)){this.log(`Invalid price "${p.value}" for product ${u} - skipping`);return}const E=Math.round(b*100);s(l,E)}),this.log(`updatePlacementElements completed for ${i}`)}updateShopifyPaymentTerms(e,t){const i=document.querySelectorAll("shopify-payment-terms");if(i.length===0)return;this.log("Store using shopify payments");let s;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const o=t==="control"?"a":"b",n=this.state.temporary.previewConfig.variants.find(l=>l.label===o);if(!n||!n.domSelectors){this.log(`No variant found for label ${o} in preview config`);return}s=n.domSelectors,this.log(`Using preview config for shopify-payment-terms in merchant mode, variant: ${o}`)}else{const o=this.testConfigs.find(l=>l.id===e);if(!o)return;const n=o.hypotheses.find(l=>t==="control"?l.isControl===!0:l.isControl===!1);if(!n||!n.domSelectors)return;s=n.domSelectors}const r=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);i.forEach(o=>{const n=o.getAttribute("variant-id");if(!n)return;const l=s.find(c=>{const d=c.cssSelector.match(r);return d&&d[1]===n});if(l){const c=l.actions.find(d=>d.scope==="price");if(c&&c.value){const d=o.getAttribute("shopify-meta");if(d)try{const u=JSON.parse(d);if(u.variants&&Array.isArray(u.variants)){const h=u.variants.find(p=>p.id?.toString()===n);if(h){h.full_price=c.value;const p=parseFloat(c.value.replace(/[^0-9.]/g,""));if(h.number_of_payment_terms&&h.number_of_payment_terms>1){const b=p/h.number_of_payment_terms;h.price_per_term=`$${b.toFixed(2)}`}o.setAttribute("shopify-meta",JSON.stringify(u))}}}catch(u){this.log("Error parsing/updating shoplift-meta:",u)}}}})}async makeJsonRequest(e){const t=await this.makeRequest(e);return t===null?null:JSON.parse(await t.text(),F)}async makeRequest(e){const{url:t,method:i,headers:s,data:r,signal:o}=e,n=new Headers;if(s)for(const c in s)n.append(c,s[c]);(!s||!s.Accept)&&n.append("Accept","application/json"),(!s||!s["Content-Type"])&&n.append("Content-Type","application/json"),(this.eventHost.includes("ngrok.io")||this.eventHost.includes("ngrok-free.app"))&&n.append("ngrok-skip-browser-warning","1234");const l=await this.fetch(t,{method:i,headers:n,body:r,signal:o});if(!l.ok){if(l.status===204)return null;if(l.status===422){const c=await l.json();if(typeof c<"u"&&c.isBot)throw new ie}throw new Error(`Error sending shoplift request ${l.status}`)}return l}queueAddVisitorToTest(e,t){if(this.state.essential.visitorTests.some(s=>s.testId===e))return;const i=this.testConfigs.find(s=>s.id===e);if(this.state.essential.visitorTests.push({createdAt:new Date,testId:e,hypothesisId:t.id,isThemeTest:t.type==="theme",themeId:t.themeId,isSaved:!1,isInvalid:!1,shouldSendToGa:!0,testType:t.type,assignedTo:t.isControl?"control":"variant",testTitle:i?.title}),t.type==="price"){const s=t.isControl?"control":"variant";this.log("Price test assignment detected, updating cart attributes:",e,s),this.updatePriceTestHiddenInputs(e,s,!1)}}queueCartUpdate(e){this.queueEvent(new Ce(e))}queuePageView(e){this.queueEvent(new Se(e))}queueEvent(e){!this.state.essential.consentApproved&&this.state.essential.hasConsentInteraction||this.state.analytics.queue.length>10||this.state.analytics.queue.push(e)}legacyGetLocalStorageVisitor(){const e=this.localStorageGet(this.legacySessionKey);if(e)try{return JSON.parse(e,F)}catch{}return null}pruneStaleVisitorTests(){this.state.essential.visitorTests=this.state.essential.visitorTests.filter(e=>this.testConfigs.some(t=>t.id==e.testId)||this.inactiveTestConfigs.filter(t=>this.testIsPaused(t)).some(t=>t.id===e.testId))}pruneStateAndSave(){this.pruneStaleVisitorTests(),this.saveState()}saveState(){this.persistEssentialState(),this.persistAnalyticsState()}loadState(){const e=this.loadAnalyticsState(),t={analytics:e,essential:this.loadEssentialState(e),temporary:this.loadTemporaryState()},i=this.legacyGetLocalStorageVisitor(),s=this.legacyGetCookieVisitor(),r=[i,s].filter(o=>o!==null).sort((o,n)=>+n.storedAt-+o.storedAt)[0];return t.analytics.visitor===null&&r&&({visitorTests:t.essential.visitorTests,...t.analytics.visitor}=r,t.essential.isFirstLoad=!1,t.essential.initialState={createdAt:r.createdAt,referrer:r.referrer,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmMedium:r.utmMedium,utmSource:r.utmSource,device:r.device},this.deleteCookie("SHOPLIFT"),this.deleteLocalStorage(this.legacySessionKey)),!t.essential.consentApproved&&t.essential.hasConsentInteraction&&this.deleteLocalStorage(this.analyticsSessionKey),t}loadEssentialState(e){const t=this.loadLocalStorage(this.essentialSessionKey),i=this.loadCookie(this.essentialSessionKey),s=this.getInitialState();e.visitor?.device&&(s.device=e.visitor.device);const r={timestamp:new Date,consentApproved:!1,hasConsentInteraction:!1,debugMode:!1,initialState:s,visitorTests:[],isFirstLoad:!0},o=[t,i].filter(n=>n!==null).sort((n,l)=>+l.timestamp-+n.timestamp)[0]??r;return o.initialState||(e.visitor!==null?o.initialState=e.visitor:(o.initialState=s,o.initialState.createdAt=o.timestamp)),o}loadAnalyticsState(){const e=this.loadLocalStorage(this.analyticsSessionKey),t=this.loadCookie(this.analyticsSessionKey),i={timestamp:new Date,visitor:null,queue:[]},s=[e,t].filter(r=>r!==null).sort((r,o)=>+o.timestamp-+r.timestamp)[0]??i;return s.queue.length===0&&e&&e.queue.length>1&&(s.queue=e.queue),s}loadTemporaryState(){const e=this.sessionStorageGet(this.temporarySessionKey),t=e?JSON.parse(e,F):null,i=this.loadCookie(this.temporarySessionKey);return t??i??{isMerchant:!1,timestamp:new Date}}persistEssentialState(){this.log("Persisting essential state"),this.state.essential.isFirstLoad=!1,this.state.essential.timestamp=new Date,this.persistLocalStorageState(this.essentialSessionKey,this.state.essential),this.persist
17CookieState(this.essentialSessionKey,this.state.essential)}persistAnalyticsState(){this.log("Persisting analytics state"),this.state.essential.consentApproved&&(this.state.analytics.timestamp=new Date,this.persistLocalStorageState(this.analyticsSessionKey,this.state.analytics),this.persistCookieState(this.analyticsSessionKey,{...this.state.analytics,queue:[]}))}persistTemporaryState(){this.log("Setting temporary session state"),this.state.temporary.timestamp=new Date,this.sessionStorageSet(this.temporarySessionKey,JSON.stringify(this.state.temporary)),this.persistCookieState(this.temporarySessionKey,this.state.temporary,!0)}loadLocalStorage(e){const t=this.localStorageGet(e);if(t===null)return null;try{return JSON.parse(t,F)}catch{return null}}loadCookie(e){const t=this.getCookie(e);if(t===null)return null;try{return JSON.parse(t,F)}catch{return null}}persistLocalStorageState(e,t){this.localStorageSet(e,JSON.stringify(t))}persistCookieState(e,t,i=!1){const s=JSON.stringify(t),r=i?"":`expires=${new Date(new Date().getTime()+864e5*365).toUTCString()};`;document.cookie=`${e}=${s};domain=.${window.location.hostname};path=/;SameSite=Strict;${r}`}deleteCookie(e){const t=new Date(0).toUTCString();document.cookie=`${e}=;domain=.${window.location.hostname};path=/;expires=${t};`}deleteLocalStorage(e){window.localStorage.removeItem(e)}getChannel(e){return[{"name":"cross-network","test":(v) => new RegExp(".*cross-network.*", "i").test(v.utmCampaign)},{"name":"direct","test":(v) => v.utmSource === "" && v.utmMedium === ""},{"name":"paid-shopping","test":(v) => (new RegExp("^(?:Google|IGShopping|aax-us-east\.amazon-adsystem\.com|aax\.amazon-adsystem\.com|alibaba|alibaba\.com|amazon|amazon\.co\.uk|amazon\.com|apps\.shopify\.com|checkout\.shopify\.com|checkout\.stripe\.com|cr\.shopping\.naver\.com|cr2\.shopping\.naver\.com|ebay|ebay\.co\.uk|ebay\.com|ebay\.com\.au|ebay\.de|etsy|etsy\.com|m\.alibaba\.com|m\.shopping\.naver\.com|mercadolibre|mercadolibre\.com|mercadolibre\.com\.ar|mercadolibre\.com\.mx|message\.alibaba\.com|msearch\.shopping\.naver\.com|nl\.shopping\.net|no\.shopping\.net|offer\.alibaba\.com|one\.walmart\.com|order\.shopping\.yahoo\.co\.jp|partners\.shopify\.com|s3\.amazonaws\.com|se\.shopping\.net|shop\.app|shopify|shopify\.com|shopping\.naver\.com|shopping\.yahoo\.co\.jp|shopping\.yahoo\.com|shopzilla|shopzilla\.com|simplycodes\.com|store\.shopping\.yahoo\.co\.jp|stripe|stripe\.com|uk\.shopping\.net|walmart|walmart\.com)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|y
17andex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.o
17pera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"display","test":(v) => new RegExp("^(?:display|banner|expandable|interstitial|cpm)$", "i").test(v.utmMedium)},{"name":"paid-other","test":(v) => new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)}
17,{"name":"organic-shopping","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)},{"name":"organic-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|k
17akao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) || new RegExp("^(?:social|social-network|social-media|sm|social network|social media)$", "i").test(v.utmMedium)},{"name":"organic-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) || new RegExp("^(.*video.*)$", "i").test(v.utmMedium)},{"name":"organic-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|y
17andex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || v.utmMedium.toLowerCase() === "organic"},{"name":"referral","test":(v) => new RegExp("^(?:referral|app|link)$", "i").test(v.utmMedium)},{"name":"email","test":(v) => new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmMedium) || new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmSource)},{"name":"affiliate","test":(v) => v.utmMedium.toLowerCase() === "affiliate"},{"name":"audio","test":(v) => v.utmMedium.toLowerCase() === "audio"},{"name":"sms","test":(v) => v.utmSource.toLowerCase() === "sms" || v.utmMedium.toLowerCase() === "sms"},{"name":"mobile-push-notification","test":(v) => v.utmSource.toLowerCase() === "firebase" || new RegExp("(?:.*mobile.*|.*notification.*|push$)", "i").test(v.utmMedium)}].find(i=>i.test(e))?.name??"other"}getShopifyAnalyticsId(){const e=this.getCookie("_shopify_y");if(e)return e;try{const t=this.localStorageGet("Shoplift_ClientId");if(t)return t}catch{}return null}legacyGetCookieVisitor(){const e=this.getCookie("SHOPLIFT");return e===null?null:JSON.parse(e,F)}getCookie(e){const t=this.cookie.split("; ").filter(i=>i.split("=").at(0)===e).at(0);return t===void 0?null:t.split("=").slice(1).join("=")}monitorConsentChange(){document.addEventListener("visitorConsentCollected",e=>{(async()=>await this.onConsentChange(e.detail.analyticsAllowed,!0))()}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.loadShopifyConsentApiWithRetry()):this.loadShopifyConsentApiWithRetry()}loadShopifyConsentApiWithRetry(){let e=0;const t=()=>{this.loadShopifyConsentApi()||e++<10&&window.setTimeout(t,100)};t()}loadShopifyConsentApi(){if(window.Shopify){this.log("Loading Shopify features");const e=async()=>{if(!window.Shopify){this.log("Shopify object missing... suddenly?");return}if(window.Shopify.customerPrivacy===void 0){this.log("Shopify CustomerPrivacy api still missing, trying again in 1000ms"),t=window.setTimeout(()=>{(async()=>await e())()},1e3);return}if(this.geoViaShopify){const s=window.Shopify.customerPrivacy.getRegion?.();this.resolvedRegion=typeof s=="string"?s.replace(/-/g,""):""}const i=window.Shopify.customerPrivacy.getTrackingConsent();await this.onConsentChange(window.Shopify.customerPrivacy.analyticsProcessingAllowed(),i==="yes")};let t=window.setTimeout(()=>{(async()=>await e())()},5e3);return window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],i=>{(async()=>{if(window.clearTimeout(t),i){this.log("Error loading consent tracking",i);return}await e()})()}),!0}return!1}async onConsentChange(e,t){try{if(this.log("Consent change detected",e,t),this.state.essential.consentApproved=e,this.state.essential.hasConsentInteraction=t,!this.state.essential.consentApproved){this.state.essential.hasConsentInteraction&&(this.state.analytics.queue.length=0),this.saveState();return}this.cookie=document.cookie,this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.saveState(),await this.syncAllEvents()}catch(i){this.log("Error syncing on consent change",i)}}isThemePreview(){return isThemePreview||themeRole!=="main"}isAppProxyPath(){const e=["/apps/","/tools/","/a/"],t=window.location.pathname;return e.some(i=>t.startsWith(i))}clearThemeBar(e,t,i){const s=structuredClone(i);this.log("Looking for theme bar"),this.waitForElement(null,"body").then(r=>this.waitForElement(r,"#preview-bar-iframe, #PBarNextFrameWrapper").then(o=>(this.log("Found theme bar"),t&&(this.log("Removing theme bar"),o.remove()),e?this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify({...this.debugState(),stateAtEvaluation:s},ee)}):Promise.resolve(null)))).catch(r=>console.error(r))}waitForElement(e,t){return new Promise(i=>{const s=document.querySelector(t);if(s){i(s);return}const r=new MutationObserver(o=>{const n=document.querySelector(t);if(n){r.disconnect(),i(n);return}});r.observe(e??document.documentElement,{childList:!0})})}setDebug(e){this.state.essential.debugMode=e,this.saveState()}log(e,...t){let i=0;const s=e.replace(/%[sdoOfF]/g,r=>{if(i>=t.length)return r;const o=t[i++];return r==="%o"||r==="%O"?JSON.stringify(o):String(o)});this.logHistory.push(`[${new Date().toISOString()}][SL] ${s}`),!(!this.state.essential.debugMode&&!this.shopliftDebug)&&console.debug(`[SL] ${e}`,...t)}debugState(){return{state:this.state,storage:{essential:this.loadLocalStorage(this.essentialSessionKey),analytics:this.loadLocalStorage(this.analyticsSessionKey)},params:{shop:this.shop,host:this.host,eventHost:this.eventHost,cssHideClass:this.cssHideClass,testConfigs:this.testConfigs,inactiveTestConfigs:this.inactiveTestConfigs,sendPageView:this.sendPageView,isShopifyMerchantCookie
17:this.getCookie("is_shopify_merchant"),themeId,url:window.location.href,isThemePreview,themeRole,gaConfig:this.gaConfig},logHistory:this.logHistory}}createViewportObserver(e,t={}){const{threshold:i=this.VIEWPORT_TRACK_THRESHOLD,triggerOnce:s=!0}=t,r=new Set;return new IntersectionObserver(o=>{o.forEach(n=>{if(n.isIntersecting&&!r.has(n.target)){const l=n.target,c=l.getAttribute(this.DATA_SL_TEST_ID);c&&(e(c,l),s&&r.add(l))}})},{threshold:i})}applyChangesWithViewport(e,t,i,s){const r=t.selectorsForViewportTracking??t.selectors,o=n=>{if(this.state.essential.visitorTests.some(h=>h.testId===n)||this.activeViewportObservers.has(n))return;const l=[];if(r.forEach(h=>{e.querySelectorAll(h.cssSelector).forEach(b=>l.push(b))}),l.length===0)return;let c=!1;const d=()=>{c||(c=!0,i(n),u.disconnect(),this.activeViewportObservers.delete(n))},u=this.createViewportObserver(()=>{d()},{triggerOnce:!0,...s});this.activeViewportObservers.set(n,u),this.log(`Created viewport observer for test ${n}, observing ${l.length} elements`),l.forEach(h=>{h.setAttribute(this.DATA_SL_TEST_ID,String(n)),u.observe(h)}),setTimeout(()=>{c||l.forEach(h=>{const p=h.getBoundingClientRect(),b=s?.threshold??this.VIEWPORT_TRACK_THRESHOLD,E=Math.min(p.bottom,window.innerHeight)-Math.max(p.top,0),S=Math.min(p.right,window.innerWidth)-Math.max(p.left,0);p.top<window.innerHeight&&p.bottom>0&&p.left<window.innerWidth&&p.right>0&&E>0&&S>0&&E>=p.height*b&&(this.log(`Price element already visible in viewport for test ${n}:`,h),d())})},100)};t.selectors.length>0&&U(e,t,()=>{}),Te(e,{testId:t.testId,hypothesisId:t.hypothesisId,selectors:r},n=>{o(n)})}applyPriceTestWithMapLookup(e,t,i,s){if(!t.priceData){this.log("No price data for hypothesis '%s'",t.id);return}this.log("Hypothesis '%s' isControl=%s, priceData has %d variants",t.id,t.isControl,t.priceData.variants.length);const r=t.priceData.variants.slice(0,3);for(const[S,C,_]of r)this.log(" Sample priceData: variant=%s, price=%d, compareAt=%d",S,C,_);const o=j(t.priceData),n=new Set;for(const S of i)if(S.priceData)for(const[C]of S.priceData.variants)n.add(C);this.log("Price test Map lookup: %d products in hypothesis, %d total products to track",o.size,n.size);const l=t.priceData,c=new WeakSet;let d=!1;const u="[data-sl-attribute-p], [data-sl-attribute-cap], [data-sl-attribute-discount]",h=S=>{if(c.has(S))return;const C=S.getAttribute("data-sl-attribute-p"),_=S.getAttribute("data-sl-attribute-cap"),T=S.getAttribute("data-sl-attribute-discount"),m=C||_||T;if(!m||!n.has(m))return;c.add(S);const y=o.get(m);y&&(this.log("Applying price for product %s: %d cents (compare at: %d cents)",m,y.priceInCents,y.compareAtPriceInCents),Le(S,m,y,l),this.log("Applied price to element for product %s",m)),!d&&!this.state.essential.visitorTests.some(w=>w.testId===e)&&(S.setAttribute(this.DATA_SL_TEST_ID,String(e)),this.setupElementViewportTracking(S,e,()=>{d||(d=!0,s(e))}))},p=()=>{const S=document.querySelectorAll(u);this.log("Scanning for price elements, found: %d",S.length),S.forEach(h)},b=new MutationObserver(S=>{for(const C of S)C.type==="childList"&&C.addedNodes.forEach(_=>{if(_.nodeType===Node.ELEMENT_NODE){const T=_;(T.hasAttribute("data-sl-attribute-p")||T.hasAttribute("data-sl-attribute-cap")||T.hasAttribute("data-sl-attribute-discount"))&&h(T),T.querySelectorAll(u).forEach(h)}}),C.type==="attributes"&&C.target instanceof Element&&h(C.target)}),E=document.body||document.documentElement;b.observe(E,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-sl-attribute-p","data-sl-attribute-cap","data-sl-attribute-discount"]}),this.log("MutationObserver started for price elements"),p(),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",()=>{this.log("DOMContentLoaded - rescanning for price elements"),p()}),setTimeout(()=>{this.log("Delayed rescan for price elements"),p()},100),setTimeout(()=>{this.log("Final rescan for price elements"),p()},500)}setupElementViewportTracking(e,t,i){const s=this.VIEWPORT_TRACK_THRESHOLD,r=e.getBoundingClientRect(),o=Math.min(r.bottom,window.innerHeight)-Math.max(r.top,0),n=Math.min(r.right,window.innerWidth)-Math.max(r.left,0);if(r.top<window.innerHeight&&r.bottom>0&&r.left<window.innerWidth&&r.right>0&&o>0&&n>0&&o>=r.height*s){this.log("Price element already visible for test %s",t),i();return}const c=new IntersectionObserver(d=>{for(const u of d)if(u.isIntersecting&&u.intersectionRatio>=s){this.log("Price element entered viewport for test %s",t),c.disconnect(),i();break}},{threshold:s});c.observe(e)}debug(){const e=this.debugState();console.log(JSON.stringify(e,ee,2))}}(async function(){window.shopliftInstance||(window.shopliftInstance=new Ze("golinutrition.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",true,true,false,{"sendEvents":false,"mode":"gtag"},false,false,1000,[{"id":"01a0103f-3e3a-719b-902e-56c2f2914374","startAt":"2026-08-17T15:02:55.282447Z","requiresCountry":true,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-08-17T15:02:55.361221Z"}
17],"hypotheses":[{"visitorCount":261353,"trafficPercentage":0.4825608588689312,"title":"Original","domSelectors":[],"id":"01a01024-2294-7ce1-9d98-1ed4ab3b8bff","type":"landing","themeId":151168581828,"affix":"brand_aap_nz_bundles","isControl":true},{"visitorCount":280242,"trafficPercentage":0.5174391411310688,"title":"v2","domSelectors":[],"id":"01a01026-9aeb-7e5e-bc26-3961583e5f61","type":"landing","themeId":151168581828,"affix":"brand_aap_nz_bundles_v2","isControl":false}],"targetAudiences":[[(visitor, isNew, channel, country) => country === "US"]],"title":"zero sugar v2 "},{"id":"01a06471-1a9d-7c42-b559-0988f6b74595","startAt":"2026-09-02T23:25:29.114952Z","requiresCountry":false,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-09-02T23:25:29.135862Z"}],"hypotheses":[{"visitorCount":4210,"trafficPercentage":0.5,"title":"Original","priceData":{"moneyFormat":"<span class=money>${{amount}}</span>","currency":"USD","currencyCodeEnabled":false,"variants":[["6138144882884",4498,7500,"6138144882884"],["37826777186500",4498,7500,"6138144882884"]]},"subscriptionData":{"widget":{"widgetType":"radio","usesShadowDom":true,"selectors":{"onetimePrice":[{"selector":"rc-purchase-option__price","isShadow":true}],"subscriptionCompareAt":[{"selector":"rc-purchase-option__original-price","isShadow":true}],"subscriptionPrice":[{"selector":"rc-purchase-option__discounted-price","isShadow":true}],"subscriptionDiscount":[{"selector":".rc-plans-button__discount","isShadow":true},{"selector":"rc-benefits","isShadow":true},{"selector":".rc-purchase-option__badge","isShadow":true}],"widgetParent":[{"selector":"recharge-subscription-widget","isShadow":false}],"subscriptionPlans":[{"selector":"rc-selling-plans","isShadow":true}],"subscriptionInput":[{"selector":"input[name=\"rc_plan\"]","isShadow":true}]}},"plans":[{"productId":"6138144882884","existingPlanId":"5250416","createdPlanId":"23244163","existingShopifyPlanId":"1757380804","createdShopifyPlanId":"4236312772","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":12,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250414","createdPlanId":"23244165","existingShopifyPlanId":"1757315268","createdShopifyPlanId":"4236378308","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":4,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250415","createdPlanId":"23244164","existingShopifyPlanId":"1757348036","createdShopifyPlanId":"4236345540","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":8,"
17intervalUnit":"week","direction":"decrease"}]},"id":"01a06470-8518-7eed-87ce-767d62c7d10b","type":"price","themeId":151168581828,"affix":"","isControl":true},{"visitorCount":4215,"trafficPercentage":0.5,"title":"Untitled variant","priceData":{"moneyFormat":"<span class=money>${{amount}}</span>","currency":"USD","currencyCodeEnabled":false,"variants":[["6138144882884",4298,7500,"6138144882884"],["37826777186500",4298,7500,"6138144882884"]]},"subscriptionData":{"widget":{"widgetType":"radio","usesShadowDom":true,"selectors":{"onetimePrice":[{"selector":"rc-purchase-option__price","isShadow":true}],"subscriptionCompareAt":[{"selector":"rc-purchase-option__original-price","isShadow":true}],"subscriptionPrice":[{"selector":"rc-purchase-option__discounted-price","isShadow":true}],"subscriptionDiscount":[{"selector":".rc-plans-button__discount","isShadow":true},{"selector":"rc-benefits","isShadow":true},{"selector":".rc-purchase-option__badge","isShadow":true}],"widgetParent":[{"selector":"recharge-subscription-widget","isShadow":false}],"subscriptionPlans":[{"selector":"rc-selling-plans","isShadow":true}],"subscriptionInput":[{"selector":"input[name=\"rc_plan\"]","isShadow":true}]}},"plans":[{"productId":"6138144882884","existingPlanId":"5250416","createdPlanId":"23244163","existingShopifyPlanId":"1757380804","createdShopifyPlanId":"4236312772","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":12,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250414","createdPlanId":"23244165","existingShopifyPlanId":"1757315268","createdShopifyPlanId":"4236378308","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":4,"intervalUnit":"week","direction":"decrease"},{"productId":"6138144882884","existingPlanId":"5250415","createdPlanId":"23244164","existingShopifyPlanId":"1757348036","createdShopifyPlanId":"4236345540","existingDiscountAmount":10.0000,"createdDiscountAmount":14.0000,"discountType":"percentage","intervalFrequency":8,"
17intervalUnit":"week","direction":"decrease"}]},"id":"01a06470-8ceb-7514-88a8-b3c9307b05a1","type":"price","themeId":151168581828,"affix":"","isControl":false}],"targetAudiences":[],"title":"ashwa 42.98"}],[{"id":"019d6f31-e9aa-76c4-8bb4-bdbe1b0a28ed","bayesianRevision":5,"status":"paused","hypotheses":[{"id":"019d6f30-9bd4-71c0-8d4c-dcc23e5d44f9","type":"landing","themeId":151168581828,"affix":"brand_nad","isControl":true,"redirectPath":null},{"id":"019d6f30-a20b-7925-a167-f6b51537b12c","type":"landing","themeId":151168581828,"affix":"sl-5D73A741","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"019e2e99-8016-7b10-979c-f2ce5e80c85d","bayesianRevision":5,"status":"paused","hypotheses":[{"id":"019e2e97-cb6b-791e-9981-544e273b386f","type":"urlRedirect","themeId":151168581828,"affix":"","isControl":true,"redirectPath":"/pages/goli-bundles-zs"},{"id":"019e2e98-251c-7b97-8ddc-7c28f9950c4c","type":"urlRedirect","themeId":151168581828,"affix":"","isControl":false,"redirectPath":"/pages/zero-sugar-v3"}],"ignoreTestViewParameterEnforcement":false}],{"planIds":["4236312772","4236345540","4236378308"],"widget":{"widgetType":"radio","usesShadowDom":true,"selectors":{"subscriptionDiscount":[{"selector":".rc-plans-button__discount","isShadow":true},{"selector":"rc-benefits","isShadow":true},{"selector":".rc-purchase-option__badge","isShadow":true}],"widgetParent":[{"selector":"recharge-subscription-widget","isShadow":false}],"subscriptionPlans":[{"selector":"rc-selling-plans","isShadow":true}],"subscriptionInput":[{"selector":"input[name=\"rc_plan\"]","isShadow":true}]}}},false),await window.shopliftInstance.init())})();async function Qe(a,e,t,i){const s=Be({log:i});if(t)return i("[SUB-PREVIEW] A side â no overlay applied; widget renders naturally"),s;const r=a.widget.widgetType,o=e?j(e):null;let n=W(e),l=J(a,n),c=l.discountMap,d=l.maxDiscount;function u(){const f=W(e);f!==n&&(n=f,l=J(a,n),c=l.discountMap,d=l.maxDiscount,i(`[SUB-PREVIEW] scope refreshed currentProductId=${n??"n/a"}, maxDiscount=${d}`))}i(`[SUB-PREVIEW] side=B, currentProductId=${n??"n/a"}, maxDiscount=${d}`);function h(f){if(!e||!o)return null;const v=Z(o),g=v?o.get(v):void 0;return g?{formattedVariantPrice:G(g.priceInCents,e),formattedDiscounted:G(g.priceInCents*(1-f/100),e)}:null}function p(f){const v=Y(a,f);if(!v)return d;const g=D(a,"subscriptionInput"),P=g.length?g[0].selector:'input[name="rc_plan"]',A=v.querySelector(`${P}:checked`);if(A){const k=c[A.value];if(k!==void 0)return k}return d}function b(f){const v=D(a,"subscriptionDiscount");for(const g of v)if(g.selector.includes("badge")||g.selector.includes("__badge")){const P=f.querySelector(g.selector);P?.textContent&&!P.textContent.includes(`${d}%`)&&$(P,A=>N(A,d))}}function E(f,v){const g=h(v);if(!g)return;const P=D(a,"subscriptionCompareAt");for(const A of P){const k=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);k?.textContent&&!k.textContent.includes(g.formattedVariantPrice)&&$(k,x=>/\d/.test(x)?g.formattedVariantPrice:x)}}function S(f,v){const g=h(v);if(!g)return;const P=D(a,"subscriptionPrice");for(const A of P){const k=f.querySelector(A.selector)||f.querySelector(`[part~="${A.selector}"]`);k?.textContent&&!k.textContent.includes(g.formattedDiscounted)&&$(k,x=>/\d/.test(x)?g.formattedDiscounted:x)}}function C(f){const v=D(a,"subscriptionInput"),g=v.length?v[0].selector:'input[name="rc_plan"]',P=D(a,"subscriptionPlanDiscount"),A=P.length?P[0].selector:".rc-plans-button__discount";for(const k of Array.from(f.querySelectorAll("label"))){const x=k.querySelector(g),R=k.querySelector(A);if(x&&R?.textContent){const V=c[x.value];if(V!==void 0){const O=R.textContent.match(/[\d.]+%/)?.[0];O&&O!==`${V}%`&&$(R,L=>N(L,V))}}}}function _(f){const v=f.querySelector("select");if(v)for(const g of Array.from(v.options)){const P=c[g.value];if(P!==void 0&&g.textContent){const A=g.textContent.match(/[\d.]+%/)?.[0];A&&A!==`${P}%`&&(g.textContent=N(g.textContent,P))}}}function T(f){const v=D(a,"onetimePrice");if(!v.length||!e||!o)return;const g=Z(o),P=g?o.get(g):void 0;if(!P)return;const A=G(P.priceInCents,e),k=D(a,"onetimeContainer"),x=k.length?k[0].selector:'[part~="rc-purchase-option__onetime"]',R=f.querySelector(x);if(R)for(const V of v){const O=R.querySelector(`[part~="${V.selector}"]`);O?.textContent&&!O.textContent.includes(A)&&$(O,L=>/\d/.test(L)?A:L)}}function m(f,v){const P=D(a,"subscriptionDiscount").filter(A=>A.selector.includes("benefit")||A.selector==="rc-benefits");for(const A of P){const k=f.querySelector(A.selector);if(k?.shadowRoot){for(const x of Array.from(k.shadowRoot.querySelectorAll("li")))if(x.textContent?.includes("Save")){const R=x.textContent.match(/[\d.]+%/)?.[0];R&&R!==`${v}%`&&$(x,V=>N(V,v))}}}}let y=!1;function w(){if(!y){y=!0;try{u();const f=B(a);if(!f)return;const v=p(f);b(f),E(f,v),S(f,v),T(f);const g=Y(a,f);g&&(r==="buttons"||r==="radio"?C(g):_(g)),m(f,v)}finally{y=!1}}}const I=pe({data:a,runUpdates:w});return function(){I(),s()}}const Xe=Object.freeze(Object.defineProperty({__proto__:null,subscriptionPreviewRender:Qe},Symbol.toStringTag,{value:"Module"}))})(); })("/", { suffix: "", type: "login" }, "main", 151168581828, false)</script>
17 18<!-- End of Shoplift scripts --> 19 20 21 22 23 24 25 26 27 28 29<!--LOOMI SDK--> 30<!--DO NOT EDIT--> 31<link rel="preconnect" href="https://live.visually-io.com/" crossorigin data-em-disable> 32<link rel="dns-prefetch" href="https://live.visually-io.com/" data-em-disable>
33<script> 34(()=> { 35 const env = 2; 36 var store = "golinutrition.myshopify.com"; 37 var alias = store.replace(".myshopify.com", "").replaceAll("-", "_").toUpperCase(); 38 var jitsuKey = "js.7001735241"; 39 window.loomi_ctx = {...(window.loomi_ctx || {}),storeAlias:alias,jitsuKey,env}; 40 41 42 43})() 44</script>
44 45<link href="https://live.visually-io.com/widgets/vsly-preact.min.js?k=js.7001735241&e=2&s=GOLINUTRITION" rel="preload" as="script" data-em-disable>
46<script type="text/javascript" src="https://live.visually-io.com/widgets/vsly-preact.min.js?k=js.7001735241&e=2&s=GOLINUTRITION" data-em-disable></script>
46 47<link href="https://live.visually-io.com/cf/GOLINUTRITION.js" rel="preload" as="script" data-em-disable> 48<link href="https://live.visually-io.com/v/visually.js" rel="preload" as="script" data-em-disable>
49<script type="text/javascript" src="https://live.visually-io.com/cf/GOLINUTRITION.js" data-em-disable></script>
vendor: 1 bytes, line 49
49
50<script type="text/javascript" src="https://live.visually-io.com/v/visually.js" data-em-disable></script>
vendor: 1 bytes, line 50
50
51<script defer type="text/javascript" src="https://live.visually-io.com/v/visually-a.js" data-em-disable></script>
51 52<!--LOOMI SDK--> 53
54<script> 55 localStorage.setItem('nb__region_code', "US"); 56 localStorage.setItem('nb__currency_code', "USD"); 57</script>
57 58
59<script>(function(){var e,n,r,i,t,a;(n=e=e||{}).A="identify",n.B="trackPageView",n.C="fireEmailCaptureEvent",n.D="fireCustomGoal",n.E="firePurchaseEvent",n.F="trackPageViewInitial",n.G="fireSlimPurchaseEvent",n.H="identifyCustomerId",n="//j.northbeam.io/ota-sp/e68ff5ff-714d-4636-a4b3-5bbbb9c9fbd8.js",window.Northbeam||(r=[],i=function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];r.push({fnName:n,args:t})},(t={})[e.F]=function(n){i(e.F,n)},t=t,(a={_q:r})[e.A]=function(n,t){return i(e.A,n,t)},a[e.B]=function(n){return i(e.B,n)},a[e.C]=function(n,t){return i(e.C,n,t)},a[e.D]=function(n,t){return i(e.D,n,t)},a[e.E]=function(n){return i(e.E,n)},a[e.G]=function(n){return i(e.G,n)},a[e.H]=function(n,t){return i(e.H,n,t)},a=a,a=Object.assign(function(n){for(var t=[],e=1;e<arguments.length;e++)t.push(arguments[e]);return i.apply(null,[n].concat(t))},a),window.Northbeam=a,(a=document.createElement("script")).async=!0,a.src=n,document.head.appendChild(a),t.trackPageViewInitial(window.location.href));})()</script>
59 60 61 <meta charset="utf-8"> 62 <meta name="viewport" content="width=device-width, initial-scale=1"> 63 <meta name="theme-color" content="#D7282F"> 64 <link rel="canonical" href="https://goli.com/account/login"> 65 66 67
67<script src="//goli.com/cdn/shop/t/104/assets/global.js?v=26131930807380250131778542513" type="text/javascript"></script>
67 68
68<script src="//goli.com/cdn/shop/t/104/assets/js.cookie.min.js?v=90280881545131116191778541927" type="text/javascript"></script>
68 69 70 71
71<script> 72 const country_iso_code = "US"; 73 </script>
73 74 75 76
76<script> 77 (async function () { 78 // Get query variables. 79 let discount_code = get_query_variable('discount_code'); 80 let cart = get_query_variable('cart'); 81 let cart_add = get_query_variable('cart_add'); 82 let currency = get_query_variable('currency'); 83 let checkout = get_query_variable('checkout'); 84 let campaign = get_query_variable('campaign'); 85 let redirect_to = get_query_variable('redirect_to'); 86 let redirect_to_loading_text = get_query_variable('redirect_to_loading_text'); 87 88 try { 89 let final_step_triggered = false; 90 let done_processing_discount_code = (discount_code) ? false : true; 91 let done_processing_cart = (cart) ? false : true; 92 let done_processing_cart_add = (cart_add) ? false : true; 93 let done_processing_currency = (currency) ? false : true; 94 let done_processing_checkout = (checkout) ? false : true; 95 let done_processing_campaign = (campaign) ? false : true; 96 97 let trigger_final_step = function () { 98 if ( 99 (!final_step_triggered) 100 && done_processing_discount_code 101 && done_processing_cart 102 && done_processing_cart_add 103 && done_processing_currency 104 && done_processing_checkout 105 && done_processing_campaign 106 ){ 107 final_step_triggered = true; 108 if (redirect_to) { 109 if (decodeURI(redirect_to) === '') { 110 if (Cookies.get('force_native_checkout') || !false || cartContainsSubscription()) { 111 window.location.href = decodeURI(redirect_to); 112 } else { 113 try { 114 // console.log('Running CartHook'); //Debugging 115 window.testGlobalBeforeReact(0); 116 } catch (e) { 117 // console.log('CartHook failed, redirecting to checkout'); //Debugging 118 window.location.href = decodeURI(redirect_to); 119 } 120 } 121 } else { 122 window.location.href = decodeURI(redirect_to); 123 } 124 } 125 } 126 }; 127 128 // Enable loading indicator if final step involves a redirect. 129 if (redirect_to) { 130 // This script requires jQuery, so we'll wait until the page is loaded. 131 document.addEventListener('DOMContentLoaded', function(event) { 132 let loading_overlay_options = { 133 maxSize: 50 134 }; 135 if (redirect_to_loading_text) { 136 loading_overlay_options.text = decodeURIComponent(redirect_to_loading_text); 137 loading_overlay_options.textClass = 'mt-3'; 138 } 139 140 // Since this isn't a global script, we'll wait until the page is loaded and check to see if it has been included or not. 141 if ($.LoadingOverlay === undefined) { 142 load_script('//goli.com/cdn/shop/t/104/assets/loadingoverlay.min.js?v=83345831542795446801778541957').then(() => { 143 $.LoadingOverlay('show', loading_overlay_options); 144 }); 145 } else { 146 $.LoadingOverlay('show', loading_overlay_options); 147 } 148 }); 149 150 // Trigger the redirect now if it's the only action being requested. 151 trigger_final_step(); 152 } 153 154 // Apply discount. 155 if (discount_code) { 156 let response = await fetch('/discount/'+discount_code).then(data => { 157 158 done_processing_discount_code = true; 159 trigger_final_step(); 160 }).catch((error) => { 161 done_processing_discount_code = true; 162 trigger_final_step(); 163 }); 164 } 165 166 // Process the cart. 167 if (cart) { 168 let response = await fetch('/cart/'+cart).then(data => { 169 done_processing_cart = true; 170 trigger_final_step(); 171 }).catch((error) => { 172 console.log(error); 173 done_processing_cart = true; 174 trigger_final_step(); 175 }); 176 } else if (cart_add) { 177 // Process cart additions. 178 let cart_items = []; 179 let cart_additions = cart_add.split(','); 180 cart_additions.forEach(element => { 181 let cart_addition = element.split(':'); 182 cart_items.push({ 183 id: cart_addition[0], 184 quantity: cart_addition[1] 185 }); 186 }); 187 188 let response = await fetch('/cart/add.js', { 189 method: 'POST', 190 headers: { 'Content-Type': 'application/json' }, 191 body: JSON.stringify({ items: cart_items }) 192 }).then(data => { 193 done_processing_cart_add = true; 194 trigger_final_step(); 195 }).catch((error) => { 196 console.log(error); 197 done_processing_cart_add = true; 198 trigger_final_step(); 199 }); 200 } 201 202 // Apply the currency. 203 if (currency) { 204 let response = await fetch('?currency='+currency).then(data => { 205 done_processing_currency = true; 206 trigger_final_step(); 207 }).catch((error) => { 208 done_processing_currency = true; 209 trigger_final_step(); 210 }); 211 } 212 213 // Force native checkout. 214 if (checkout) { 215 if (checkout == 'native') { 216 Cookies.set('force_native_checkout', 1, { expires: 1 }); 217 } 218 done_processing_checkout = true; 219 trigger_final_step(); 220 } 221 222 // Store a campaign identifier. 223 if (campaign) { 224 Cookies.set('campaign', campaign, { expires: 1 }); 225 done_processing_campaign = true; 226 trigger_final_step(); 227 } 228 } catch (e) { 229 console.log(e); 230 } 231 })() 232</script>
232 233 <!-- /snippets/ls-head.liquid --> 234<!-- /snippets/ls-sdk.liquid -->
235<script type="text/javascript"> 236 window.LangShopConfig = { 237 "currentLanguage": "en", 238 "currentCurrency": "usd", 239 "currentCountry": "US", 240 "shopifyLocales":[{"code":"en","rootUrl":"\/"},{"code":"fr","rootUrl":"\/fr"},{"code":"de","rootUrl":"\/de"},{"code":"es","rootUrl":"\/es"} ] 241,"shopifyCurrencies": ["USD"], 242 "originalLanguage": {"code":"en","title":"English","icon":null,"published":true}, 243 "targetLanguages": [{"code":"de","title":"German","icon":null,"published":true},{"code":"es","title":"Spanish","icon":null,"published":true},{"code":"fr","title":"French","icon":null,"published":true},{"code":"ja","title":"Japanese","icon":null,"published":false}], 244 "languagesSwitchers": [], 245 "defaultCurrency": {"code":"usd","title":"US Dollar","icon":null,"rate":1,"formatWithCurrency":"${{amount}} USD","formatWithoutCurrency":"${{amount}}"}, 246 "targetCurrencies": [{"code":"aud","title":"Australian Dollar","icon":null,"rate":1.3987,"formatWithCurrency":"${{amount}} AUD","formatWithoutCurrency":"${{amount}}","id":"aud"},{"code":"gbp","title":"Pound Sterling","icon":null,"rate":0.7663,"formatWithCurrency":"£{{amount}} GBP","formatWithoutCurrency":"£{{amount}}","id":"gbp"},{"code":"cad","title":"Canadian Dollar","icon":null,"rate":1.3383,"formatWithCurrency":"${{amount}} CAD","formatWithoutCurrency":"${{amount}}","id":"cad"},{"code":"eur","title":"Euro","icon":null,"rate":0.8245,"formatWithCurrency":"â¬{{amount}} EUR","formatWithoutCurrency":"â¬{{amount}}","id":"eur"}], 247 "currenciesSwitchers": [], 248 "languageDetection": "browser", 249 "languagesCountries": [{"code":"en","countries":["as","ai","ag","aw","au","bs","bh","bd","bb","bz","bm","bw","br","io","bn","kh","cm","ca","ky","cx","cc","ck","cy","dk","dm","eg","et","fk","fj","gm","gh","gi","gr","gl","gd","gu","gg","gy","hk","is","in","id","ie","im","il","jm","je","jo","ke","ki","kr","kw","la","lb","ls","lr","ly","my","mv","mt","mh","mu","fm","mc","ms","na","nr","np","an","nz","ng","nu","nf","mp","om","pk","pw","pg","ph","pn","qa","rw","sh","kn","lc","vc","ws","sc","sl","sg","sb","so","za","gs","lk","sd","sr","sz","sy","tz","th","tl","tk","to","tt","tc","tv","ug","ua","ae","gb","us","um","vu","vn","vg","vi","zm","zw","bq","ss","sx"]},{"code":"es","countries":["ar","bo","cl","co","cr","cu","do","ec","sv","gq","gt","hn","mx","ni","pa","py","pe","pr","es","uy","ve"]}], 250 "languagesBrowsers": [{"code":"en","browsers":[]},{"code":"es","browsers":["es"]}], 251 "currencyDetection": "store", 252 "currenciesLanguages": [{"code":"usd","languages":["nl","fil","haw","id","ja","es","to"]},{"code":"aud","languages":["zh","ms"]},{"code":"gbp","languages":["pt","gd","cy"]},{"code":"cad","languages":["en","fr"]}], 253 "currenciesCountries": [{"code":"usd","countries":["as","bq","ec","fm","gu","io","mh","mp","pr","pw","sv","tc","tl","um","us","vg","vi"]},{"code":"aud","countries":["au","cc","cx","hm","ki","nf","nr","tv"]},{"code":"gbp","countries":["gb","gg","gs","im","je"]},{"code":"cad","countries":["ca"]}], 254 "recommendationAlert": {"enabled":false,"type":"banner","styles":{"banner":{"bannerContainer":{"position":"top","spacing":10,"borderTop":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":1,"dimension":"px"}},"borderLeft":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"padding":{"top":{"value":23,"dimension":"px"},"right":{"value":55,"dimension":"px"},"bottom":{"value":23,"dimension":"px"},"left":{"value":55,"dimension":"px"}},"background":"rgba(255, 255, 255, 1)"},"bannerMessage":{"fontSize":{"value":16,"dimension":"px"}},"selectorContainer":{"background":"rgba(244,244,244, 1)","borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"borderTop":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}}},"selectorContainerHovered":null,"selectorText":{"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"}
254,"left":{"value":8,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"fontFamily":"Open Sans","color":"rgba(39, 46, 49, 1)"},"selectorTextHovered":null,"changeButton":{"borderTop":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"},"left":{"value":8,"dimension":"px"}},"background":"rgba(0, 0, 0, 1)","color":"rgba(255, 255, 255, 1)"},"changeButtonHovered":null,"closeButton":{"fontSize":{"value":16,"dimension":"px"},"color":"rgba(0, 0, 0, 1)"},"closeButtonHovered":null},"popup":{"popupContainer":{"maxWidth":{"value":30,"dimension":"rem"},"position":"bottom-left","spacing":10,"offset":{"value":1,"dimension":"em"},"borderTop":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":1,"dimension":"px"}},"borderLeft":{"color":"rgba(0,0,0,0.2)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRadius":{"topLeft":{"value":0,"dimension":"px"},"topRight":{"value":0,"dimension":"px"},"bottomLeft":{"value":0,"dimension":"px"},"bottomRight":{"value":0,"dimension":"px"}},"padding":{"top":{"value":15,"dimension":"px"},"right":{"value":20,"dimension":"px"},"bottom":{"value":15,"dimension":"px"},"left":{"value":20,"dimension":"px"}},"background":"rgba(255, 255, 255, 1)"},"popupMessage":{"fontSize":{"value":16,"dimension":"px"}},"selectorContainer":{"background":"rgba(244,244,244, 1)","borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"borderTop":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"rgba(204, 204, 204, 1)","style":"solid","width":{"value":0,"dimension":"px"}}},"selectorContainerHovered":null,"selectorText":{"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"},"left":{"value":8,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"fontFamily":"Open Sans","color":"rgba(39, 46, 49, 1)"},"selectorTextHovered":null,"changeButton":{"borderTop":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderRight":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderBottom":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"borderLeft":{"color":"transparent","style":"solid","width":{"value":0,"dimension":"px"}},"fontSize":{"value":16,"dimension":"px"},"borderRadius":{"topLeft":{"value":2,"dimension":"px"},"topRight":{"value":2,"dimension":"px"},"bottomLeft":{"value":2,"dimension":"px"},"bottomRight":{"value":2,"dimension":"px"}},"padding":{"top":{"value":8,"dimension":"px"},"right":{"value":8,"dimension":"px"},"bottom":{"value":8,"dimension":"px"},"left":{"value":8,"dimension":"px"}},"background":"rgba(0, 0, 0, 1)","color":"rgba(255, 255, 255, 1)"},"changeButtonHovered":null,"closeButton":{"fontSize":{"value":16,"dimension":"px"},"color":"rgba(0, 0, 0, 1)"},"closeButtonHovered":null}}}, 255 "currencyInQueryParam":true, 256 "allowAutomaticRedirects":false, 257 "storeMoneyFormat": "\u003cspan class=money\u003e${{amount}}\u003c\/span\u003e", 258 "storeMoneyWithCurrencyFormat": "\u003cspan class=money\u003e${{amount}} USD\u003c\/span\u003e", 259 "themeDynamics":[], 260 "dynamicThemeDomObserverInterval": 0, 261 "abilities":[], 262 "isAdmin":false, 263 "isPreview":false, 264 "i18n":{"en": { 265 "recommendation_alert": { 266 "currency_language_suggestion": null, 267 "language_suggestion": null, 268 "currency_suggestion": null, 269 "change": null 270 }, 271 "switchers": { 272 "ios_switcher": { 273 "done": null, 274 "close": null 275 } 276 }, 277 "languages": {"en": null 278,"de": null 279,"es": null 280,"fr": null 281,"ja": null 282 283 }, 284 "currencies": {"usd": "US Dollar","aud": "Australian Dollar","gbp": "Pound Sterling","cad": "Canadian Dollar","eur": "Euro"} 285 },"de": { 286 "recommendation_alert": { 287 "currency_language_suggestion": null, 288 "language_suggestion": null, 289 "currency_suggestion": null, 290 "change": null 291 }, 292 "switchers": { 293 "ios_switcher": { 294 "done": null, 295 "close": null 296 } 297 }, 298 "languages": {"de": null 299 300 }, 301 "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null} 302 },"es": { 303 "recommendation_alert": { 304 "currency_language_suggestion": null, 305 "language_suggestion": null, 306 "currency_suggestion": null, 307 "change": null 308 }, 309 "switchers": { 310 "ios_switcher": { 311 "done": null, 312 "close": null 313 } 314 }, 315 "languages": {"es": null 316 317 }, 318 "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null} 319 },"fr": { 320 "recommendation_alert": { 321 "currency_language_suggestion": null, 322 "language_suggestion": null, 323 "currency_suggestion": null, 324 "change": null 325 }, 326 "switchers": { 327 "ios_switcher": { 328 "done": null, 329 "close": null 330 } 331 }, 332 "languages": {"fr": null 333 334 }, 335 "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null} 336 },"ja": { 337 "recommendation_alert": { 338 "currency_language_suggestion": null, 339 "language_suggestion": null, 340 "currency_suggestion": null, 341 "change": null 342 }, 343 "switchers": { 344 "ios_switcher": { 345 "done": null, 346 "close": null 347 } 348 }, 349 "languages": {"ja": null 350 351 }, 352 "currencies": {"usd": null,"aud": null,"gbp": null,"cad": null,"eur": null} 353 }}}; 354</script>
vendor: 1 bytes, line 354
354
355<script src="//goli.com/cdn/shop/t/104/assets/ls-sdk.js?v=131842147547904981411778541963&proxy_prefix=/apps/langshop" defer></script>
355 356 357 <link rel="apple-touch-icon" sizes="180x180" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/apple-touch-icon.png"> 358<link rel="icon" type="image/png" sizes="32x32" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/favicon-32x32.png"> 359<link rel="icon" type="image/png" sizes="16x16" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/favicon-16x16.png"> 360<link rel="manifest" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/site.webmanifest"> 361<link rel="mask-icon" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/safari-pinned-tab.svg" color="#d7272e"> 362<link rel="shortcut icon" href="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/favicon.ico"> 363<meta name="msapplication-TileColor" content="#ffffff"> 364<meta name="msapplication-config" content="https://d8ob1wugm1s1u.cloudfront.net/assets/favicon/browserconfig.xml"> 365<meta name="theme-color" content="#ffffff"> 366 367 368 <title>Account 369 370 371 372 373 374 | Goli®</title> 375 376 377 378 379 380 381 382 383 384 385 386 387<meta property="og:site_name" content="Goli®"> 388<meta property="og:url" content="https://goli.com/account/login"> 389<meta property="og:title" content="Account"> 390<meta property="og:type" content="website"> 391<meta property="og:description" content="Explore Goli® Nutrition's premium wellness gummies â ACV, Ashwagandha, Sleep, Probiotics & more. Backed by 1M+ reviews. Shop risk-free with free shipping."> 392 393 394 395 396 397<meta name="twitter:card" content="summary_large_image"> 398<meta name="twitter:title" content="Account"> 399<meta name="twitter:description" content="Explore Goli® Nutrition's premium wellness gummies â ACV, Ashwagandha, Sleep, Probiotics & more. Backed by 1M+ reviews. Shop risk-free with free shipping."> 400
401<script> 402 document.addEventListener("DOMContentLoaded",function(t){(function(){if(typeof MutationObserver==="undefined"){return}var n=function(){var t=document.querySelectorAll("[itemtype]");for(var e=0,n=t.length;e<n;e++){var r=t[e];r.removeAttribute("itemtype");r.removeAttribute("itemscope");r.removeAttribute("itemprop")}var i=document.querySelectorAll('script[type="application/ld+json"]');for(var e=0,n=i.length;e<n;e++){var r=i[e];if(!r.classList.contains("richsnippets")){r.remove()}}};var t=new MutationObserver(function(t,e){n();e.disconnect();return});t.observe(document.getElementsByTagName("body")[0],{childList:true,subtree:true})})()}); 403 </script>
403 404 405 406 407
407<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
407<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/7001735241/digital_wallets/dialog"> 408<meta id="in-context-paypal-metadata" data-shop-id="7001735241" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 409<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" hreflang="x-default" href="https://goli.com/account/login"> 410<link rel="alternate" hreflang="en" href="https://goli.com/account/login"> 411<link rel="alternate" hreflang="fr" href="https://goli.com/fr/account/login"> 412<link rel="alternate" hreflang="de" href="https://goli.com/de/account/login"> 413<link rel="alternate" hreflang="es" href="https://goli.com/es/account/login">
414<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=393412"></script>
414 415<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
416<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=393412&shop_id=7001735241" crossorigin="anonymous"></script>
vendor: 1 bytes, line 416
416
417<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":7001735241,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/7001735241","merchantName":"Goli®","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Goli®","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 417
417
418<script id="shopify-features" type="application/json">{"accessToken":"21b7580da67b2f47d433611d72266b60","betas":["rich-media-storefront-analytics"],"domain":"goli.com","predictiveSearch":true,"shopId":7001735241,"locale":"en"}</script>
vendor: 1 bytes, line 418
418
419<script>var Shopify = Shopify || {}; 420Shopify.shop = "golinutrition.myshopify.com"; 421Shopify.locale = "en"; 422Shopify.currency = {"active":"USD","rate":"1.0"}; 423Shopify.country = "US"; 424Shopify.theme = {"name":"LangShop | Goli Theme 2 [LIVE]","id":151168581828,"schema_name":"LangShop Theme","schema_version":"2.11.8","theme_store_id":null,"role":"main"}; 425Shopify.theme.handle = "null"; 426Shopify.theme.style = {"id":null,"handle":null}; 427Shopify.cdnHost = "goli.com/cdn"; 428Shopify.routes = Shopify.routes || {}; 429Shopify.routes.root = "/"; 430Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 431Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 432Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 433Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 433
433
434<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 434
434
435<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 435
435
436<script> 437 window.ShopifyPay = window.ShopifyPay || {}; 438 window.ShopifyPay.apiHost = "shop.app\/pay"; 439 window.ShopifyPay.redirectState = null; 440</script>
vendor: 1 bytes, line 440
440
441<script> 442 window.Shopify = window.Shopify || {}; 443 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 444 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 445 window.Shopify.SignInWithShop.eligible = true; 446</script>
vendor: 1 bytes, line 446
446
447<script id="shop-js-analytics" type="application/json">{"pageType":"customers/login"}</script>
vendor: 1 bytes, line 447
447
448<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts.en.esm.js"></script>
vendor: 1 bytes, line 448
448
449<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"></script>
vendor: 1 bytes, line 449
449
450<script type="module"> 451 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts.en.esm.js"); 452await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"); 453 454 window.Shopify.SignInWithShop?.initCustomerAccounts?.(true, {"fedCMEnabled":true,"windoidEnabled":true}); 455window.Shopify.SignInWithShop?.initCustomerAccountsSignUp?.({"fedCMEnabled":true,"windoidEnabled":true}); 456 457</script>
vendor: 1 bytes, line 457
457
458<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 458
458
459<script type="module"> 460 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 461 462 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 463 464</script>
vendor: 1 bytes, line 464
464
465<script> 466 window.Shopify = window.Shopify || {}; 467 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 468 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 469</script>
vendor: 1 bytes, line 469
469
470<script>(function() { 471 var isLoaded = false; 472 function asyncLoad() { 473 if (isLoaded) return; 474 isLoaded = true; 475 var urls = ["https:\/\/d23dclunsivw3h.cloudfront.net\/redirect-app.js?shop=golinutrition.myshopify.com","https:\/\/static.rechargecdn.com\/assets\/js\/widget.min.js?shop=golinutrition.myshopify.com","https:\/\/cdn.langshop.app\/buckets\/app\/libs\/storefront\/sdk.js?proxy_prefix=\/apps\/langshop\u0026source=sct\u0026shop=golinutrition.myshopify.com","https:\/\/cdn.langshop.app\/buckets\/app\/libs\/storefront\/sdk.js?proxy_prefix=\/apps\/langshop\u0026source=sct\u0026shop=golinutrition.myshopify.com","https:\/\/api.socialsnowball.io\/js\/referral.js?shop=golinutrition.myshopify.com"]; 476 for (var i = 0; i < urls.length; i++) { 477 var s = document.createElement('script'); 478 s.type = 'text/javascript'; 479 s.async = true; 480 s.src = urls[i]; 481 var x = document.getElementsByTagName('script')[0]; 482 x.parentNode.insertBefore(s, x); 483 } 484 }; 485 if(window.attachEvent) { 486 window.attachEvent('onload', asyncLoad); 487 } else { 488 window.addEventListener('load', asyncLoad, false); 489 } 490})();</script>
vendor: 1 bytes, line 490
490
491<script id="__st">var __st={"a":7001735241,"offset":-14400,"reqid":"7e7d0dae-2960-4039-ba9e-1401179423cb-1790954218","pageurl":"goli.com\/account\/login?return_url=%2Faccount","u":"ccc328917256"};</script>
vendor: 1 bytes, line 491
491
492<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 492
492
493<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!1)}();</script>
vendor: 1 bytes, line 493
493
494<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//goli.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 494
494
495<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//goli.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
495<script crossorigin="anonymous" defer="defer" src="//goli.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 495
495
496<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 496
496
497<script> 498 window.Shopify = window.Shopify || {}; 499 window.Shopify.MCP = window.Shopify.MCP || {}; 500 window.Shopify.MCP.enabled = true; 501 window.Shopify.MCP.shop = "golinutrition.myshopify.com"; 502 window.Shopify.MCP.mcpEndpoint = "https:\/\/goli.com\/api\/mcp"; 503 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 504</script>
vendor: 1 bytes, line 504
504
505<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/goli.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 506</script>
vendor: 1 bytes, line 506
506
507<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://goli.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 508</script>
vendor: 1 bytes, line 508
508
509<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 510 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 511</script>
vendor: 1 bytes, line 511
511
512<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 513</script>
513 514<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://goli.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 515<style id="shopify-accelerated-checkout-cart"> 516 #shopify-buyer-consent { 517 margin-top: 1em; 518 display: inline-block; 519 width: 100%; 520} 521 522#shopify-buyer-consent.hidden { 523 display: none; 524} 525 526#shopify-subscription-policy-button { 527 background: none; 528 border: none; 529 padding: 0; 530 text-decoration: underline; 531 font-size: inherit; 532 cursor: pointer; 533} 534 535#shopify-subscription-policy-button::before { 536 box-shadow: none; 537} 538 539 </style> 540
541<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
541 542 543 544 545 546 547 <!-- START Goli Pixel -->
548<script> 549 !function(e,t,a,c,n,o,i){e[c]||((n=e[c]=function(){n.process?n.process.apply(n,arguments):n.queue.push(arguments)}).queue=[],n.t=+new Date,(o=t.createElement(a)).async=1,o.src="https://beacon.goli.com/api/track/golipixel.js?t="+864e5*Math.ceil(new Date/864e5),(i=t.getElementsByTagName(a)[0]).parentNode.insertBefore(o,i))}(window,document,"script","golitrack"),golitrack("init","GOLI"),golitrack("event","pageload"); 550 551 function golipixelAddToCart(add_to_cart_data) { 552 golitrack('event', 'addtocart', add_to_cart_data); 553 } 554</script>
554 555<!-- END Goli Pixel --> 556 557 558 559 560 <link href="//goli.com/cdn/shop/t/104/assets/global.scss.css?v=111603181540343972631778542513" rel="stylesheet" type="text/css" media="all" /> 561 <link href="//goli.com/cdn/shop/t/104/assets/theme-bootstrap.min.css?v=133925860776674579011778542075" rel="stylesheet" type="text/css" media="all" /> 562 <link href="//goli.com/cdn/shop/t/104/assets/bootstrap-menu-multilevel.min.css?v=144276237868081910201778541848" rel="stylesheet" type="text/css" media="all" /> 563 <link href="//goli.com/cdn/shop/t/104/assets/animate.min.css?v=7717165436794287701778541831" rel="stylesheet" type="text/css" media="all" /> 564 <link href="//goli.com/cdn/shop/t/104/assets/theme-goli.scss.css?v=158909288011504828831778542513" rel="stylesheet" type="text/css" media="all" /> 565 <link href="//goli.com/cdn/shop/t/104/assets/swiper-bundle.min.css?v=104561930517569505991778542074" rel="stylesheet" type="text/css" media="all" /> 566 567 568 569 570 <link href="//goli.com/cdn/shop/t/104/assets/theme.fa1fa254.min.css" rel="stylesheet" type="text/css" media="all" /> 571 572 573 574 575
575<script src="//goli.com/cdn/shop/t/104/assets/theme.7358d6e2.min.js" type="module" crossorigin="anonymous"></script>
575 576 <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/cart.2ac1dc11.min.js" crossorigin="anonymous"> 577 <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/bundlerc.a0cbb6c7.min.js" crossorigin="anonymous"> 578 <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/index.0fa819ad.min.js" crossorigin="anonymous"> 579 <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/module.esm.a991edb9.min.js" crossorigin="anonymous"> 580 <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/checkoutWithOptionalProgressiveGifts.c8a7d331.min.js" crossorigin="anonymous"> 581 <link rel="modulepreload" href="//goli.com/cdn/shop/t/104/assets/_commonjsHelpers.23102255.min.js" crossorigin="anonymous"> 582 583
584<script> 585window.codebase = window.codebase || {}; 586window.codebase.iid = 'C81FD92FD386'; 587</script>
vendor: 1 bytes, line 587
587
588<script src="https://scripts.conversion.io/conversion.js" async></script>
588 589
590<script>/* >> Heatmap.com :: Snippet << */(function (h,e,a,t,m,ap) { (h._heatmap_paq = []).push([ 'setTrackerUrl', (h.heatUrl = e) + a]); h.hErrorLogs=h.hErrorLogs || []; ap=t.createElement('script'); ap.src=h.heatUrl+'preprocessor.min.js?sid='+m; ap.defer=true; t.head.appendChild(ap); ['error', 'unhandledrejection'].forEach(function (ty) { h.addEventListener(ty, function (et) { h.hErrorLogs.push({ type: ty, event: et }); }); });})(window,'https://dashboard.heatmap.com/','heatmap.php',document,5684);</script>
590 591 592 <!-- portable-quiz: Alpine.js runtime loader (lazy-loads Alpine + collapse plugin + iconify-icon only when x-data/x-*/iconify-icon is on the page) --> 593
593<script src="//goli.com/cdn/shop/t/104/assets/vendor-runtime-loader.js?v=117260327266238815511784323119" defer="defer"></script>
593 594 <!-- portable-quiz: Material Symbols Outlined font, used by quiz nav arrows, announcement/checkpoint icons, and inline-icon block --> 595 <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200&display=block" rel="stylesheet"> 596 597 598 599
599<script type="text/javascript" 600 src="https://www.bc86mdtrk.com/scripts/main.js"></script>
600 601 602
602<script type="text/javascript"> 603 EF.click({ 604 offer_id: EF.urlParameter('oid'), 605 affiliate_id: EF.urlParameter('affid'), 606 source_id: EF.urlParameter('source_id'), 607 sub1: EF.urlParameter('sub1'), 608 sub2: EF.urlParameter('sub2'), 609 sub3: EF.urlParameter('sub3'), 610 sub4: EF.urlParameter('sub4'), 611 sub5: EF.urlParameter('sub5'), 612 sub6: EF.urlParameter('sub6'), 613 sub7: EF.urlParameter('sub7'), 614 sub8: EF.urlParameter('sub8'), 615 sub9: EF.urlParameter('sub9'), 616 sub10: EF.urlParameter('sub10'), 617 uid: EF.urlParameter('uid'), 618 transaction_id: EF.urlParameter('_ef_transaction_id'), 619 }); 620 </script>
620 621<!-- BEGIN app block: shopify://apps/intelligems-a-b-testing/blocks/intelligems-script/fa83b64c-0c77-4c0c-b4b2-b94b42f5ef19 -->
621<script> 622 window._template = { 623 directory: "customers", 624 name: "login", 625 suffix: "" 626 }; 627 window.__productIdFromTemplate = null; 628 window.__plpCollectionIdFromTemplate = null; 629 window.igProductData = (function() { 630 const data = {};return data; 631 })(); 632</script>
632 633
634<script type="module" blocking="render" fetchpriority="high" src="https://cdn.intelligems.io/esm/5582aca649a5/bundle.js" data-em-disable async></script>
634 635 636 637<!-- END app block --><!-- BEGIN app block: shopify://apps/klickly-connector/blocks/klickly-embed/019d9086-f209-7d9a-959a-034ff6648e37 --> 638 639 640 641<link rel="dns-prefetch" href="//kp-27ma.klck.dev"> 642 <link rel="preconnect" href="//kp-27ma.klck.dev" fetchpriority="high"> 643 <link rel="preload" href="https://kp-27ma.klck.dev/boa.js?v=19&version=v2&platform=shopify&domain_id=3291&account_id=1548&b_type_cart=050599e0d6a06508&b_type_visit=a10e8c2fcd3cbd7d&b_type_checkout=4ecb1dc4d0d4ac22&shop=golinutrition.myshopify.com" as="script" fetchpriority="high"> 644
644<script src="https://kp-27ma.klck.dev/boa.js?v=19&version=v2&platform=shopify&domain_id=3291&account_id=1548&b_type_cart=050599e0d6a06508&b_type_visit=a10e8c2fcd3cbd7d&b_type_checkout=4ecb1dc4d0d4ac22&shop=golinutrition.myshopify.com" async fetchpriority="high"></script>
644 645 646 647 648<!-- END app block --><!-- BEGIN app block: shopify://apps/triplewhale/blocks/triple_pixel_snippet/483d496b-3f1a-4609-aea7-8eee3b6b7a2a --><link rel='preconnect dns-prefetch' href='https://api.config-security.com/' crossorigin /> 649<link rel='preconnect dns-prefetch' href='https://conf.config-security.com/' crossorigin />
650<script> 651/* >> TriplePixel :: start*/ 652window.TriplePixelData={TripleName:"golinutrition.myshopify.com",ver:"2.16",plat:"SHOPIFY",isHeadless:false,src:'SHOPIFY_EXT',product:{id:"",name:``,price:"",variant:"",av:{ }},search:"",collection:"",cart:"",template:"login",curr:"USD" || "USD", market:"20034289860"},function(W,H,A,L,E,_,B,N){function O(U,T,P,H,R){void 0===R&&(R=!1),H=new XMLHttpRequest,P?(H.open("POST",U,!0),H.setRequestHeader("Content-Type","text/plain")):H.open("GET",U,!0),H.send(JSON.stringify(P||{})),H.onreadystatechange=function(){4===H.readyState&&200===H.status?(R=H.responseText,U.includes("/first")?eval(R):P||(N[B]=R)):(299<H.status||H.status<200)&&T&&!R&&(R=!0,O(U,T-1,P))}}if(N=window,!N[H+"sn"]){N[H+"sn"]=1,L=function(){return Date.now().toString(36)+"_"+Math.random().toString(36)};try{A.setItem(H,1+(0|A.getItem(H)||0)),(E=JSON.parse(A.getItem(H+"U")||"[]")).push({u:location.href,r:document.referrer,t:Date.now(),id:L()}),A.setItem(H+"U",JSON.stringify(E))}catch(e){}var i,m,p;A.getItem('"!nC`')||(_=A,A=N,A[H]||(E=A[H]=function(t,e,i){return void 0===i&&(i=[]),"State"==t?E.s:(W=L(),(E._q=E._q||[]).push([W,t,e].concat(i)),W)},E.s="Installed",E._q=[],E.ch=W,B="configSecurityConfModel",N[B]=1,O("https://conf.config-security.com/model",5),i=L(),m=A[atob("c2NyZWVu")],_.setItem("di_pmt_wt",i),p={id:i,action:"profile",avatar:_.getItem("auth-security_rand_salt_"),time:m[atob("d2lkdGg=")]+":"+m[atob("aGVpZ2h0")],host:A.TriplePixelData.TripleName,plat:A.TriplePixelData.plat,url:window.location.href.slice(0,500),ref:document.referrer,ver:A.TriplePixelData.ver},O("https://api.config-security.com/event",5,p),O("https://api.config-security.com/first?host=".concat(p.host,"&plat=").concat(p.plat),5)))}}("","TriplePixel",localStorage); 653/* << TriplePixel :: end*/ 654</script>
654 655 656 657 658<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 659 660 661 662 663 664 665 666 667 668 669 670 671
671<script async src="https://static.klaviyo.com/onsite/js/L8puEx/klaviyo.js?company_id=L8puEx"></script>
671 672
672<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
672 673 674 675 676 677 678 679
679<script> 680 window.klaviyoReviewsProductDesignMode = false 681 </script>
681 682 683 684 685 686 687 688 689 690 691<!-- END app block --><meta property="og:image" content="https://cdn.shopify.com/s/files/1/0070/0173/5241/files/goli_logo.png?height=628&pad_color=fff&v=1613528510&width=1200" /> 692<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/0070/0173/5241/files/goli_logo.png?height=628&pad_color=fff&v=1613528510&width=1200" /> 693<meta property="og:image:width" content="1200" /> 694<meta property="og:image:height" content="628" /> 695<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
696<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 7001735241,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "customers/login"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 696
696
697<script> 698 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 699</script>
vendor: 1 bytes, line 699
699
700<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
700).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 7001735241,storefrontBaseUrl: "https://goli.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://goli.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2127855812","configuration":"{\"organizationId\":\"46eeecb4-02b5-419f-be3b-1a1398cc3353\",\"entitySlug\":\"goli\",\"ingestUrl\":\"https:\\\/\\\/edge.outersignal.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"6b8c96186f8e2559266228fdf4f2c61a","type":"APP","apiClientId":171538350081,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2056388804","configuration":"{\"redditPixelId\":\"t2_499fveef\",\"dataSharingType\":\"standard\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"27a6dc1e95874487d57379b5c016869f","type":"APP","apiClientId":304258285569,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2052587716","configuration":"{\"vibePixelId\":\"iCNE9E\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"72859894ec8aa8d5e0246c40aaed9466","type":"APP","apiClientId":132266098689,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]}
700,"dataSharingState":"unrestricted"},{"id":"1940652228","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ef9b37cee6fb2f93ffcc681cf1cfdc4e","type":"APP","apiClientId":3624803,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1887797444","configuration":"{\"shop\":\"golinutrition.myshopify.com\", \"shopliftUrl\":\"https:\/\/events.shoplift.ai\/api\/events\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"dabcda9558be25394b12ce3ce899568b","type":"APP","apiClientId":7521861633,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1864302788","configuration":"{\"eventKey\":\"520a4ff1-3234-4e5c-880d-e529b916ac42\",\"name\":\"golinutrition - Axon Pixel\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4a5dfd2e28427774549854cee30cb444","type":"APP","apiClientId":256560922625,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1860763844","configuration":"{\"shopDomain\":\"golinutrition.myshopify.com\",\"accountId\":\"1548\",\"basisPixelVisit\":\"a10e8c2fcd3cbd7d\",\"basisPixelCart\":\"050599e0d6a06508\",\"basisPixelCheckout\":\"4ecb1dc4d0d4ac22\",\"analyticsApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/wp\",\"checkoutApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/cs\",\"cartApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/cc\",\"ardDataApiURL\":\"https:\\\/\\\/kp-9dfa-api.klickly.com\\\/ard\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"efdf7a548489ec4e8275e6f4b26ccd39","type":"APP","apiClientId":1821457,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1838416068","configuration":"{\"accountID\":\"1220658\",\"workspaceId\":\"9a26d396-7c71-4830-95f6-acad668c5b6b\",\"projectId\":\"09253904-ef71-4e46-a512-c367c8b3ca47\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d98eb033f1e81320021a411362de3a55","type":"APP","apiClientId":5461967,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":[],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1827897540","configuration":"{\"shopId\":\"golinutrition.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"31536d5a2ef62c1887054e49fd58dba0","type":"APP","apiClientId":4845829,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1659928772","configuration":"{\"tagID\":\"2613506863547\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
700,{"id":"1656455364","configuration":"{\"accountID\":\"golinutrition.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"74f89c26283dd9bc8e535e14315f3aed","type":"APP","apiClientId":198303350785,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1514012868","configuration":"{\"dummy\":\"dummyValue\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"95e4efbd1b218c0fdb84a6d11c9ba2c2","type":"APP","apiClientId":3328713,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1448640708","configuration":"{\"accountID\":\"L8puEx\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1158742212","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"GT-PBCVHNS\\\",\\\"GT-5TC3Q8ZH\\\",\\\"G-19DBNJGMLG\\\",\\\"GT-TQS73SN\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/OzJCCI6H4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/KN0fCIKH4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/80EwCIuH4PUaELHb8Pgp\\\",\\\"MC-RR6G4GX5ZC\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/RuYkCIrMy_UaELHb8Pgp\\\",\\\"MC-RR6G4GX5ZC\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/_U7hCIiH4PUaELHb8Pgp\\\",\\\"MC-RR6G4GX5ZC\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/sXaXCJGH4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"AW-11259358641\\\/hIg3CIWH4PUaELHb8Pgp\\\",\\\"G-19DBNJGMLG\\\",\\\"AW-11259358641\\\",\\\"MC-L3513J1M6D\\\",\\\"MC-F4PVKJ01WE\\\"]}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"894533828","configuration":"{\"pixelId\":\"d04c7846-6ef1-4ab7-8342-f0b988891e06\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c119f01612c13b62ab52809eb08154bb","type":"APP","apiClientId":2556259,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
700,"dataSharingState":"unrestricted"},{"id":"870908100","configuration":"{\"shopId\":\"golinutrition.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7093dff47f098f6de2afb75b62011ebe","type":"APP","apiClientId":2753413,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"630980804","configuration":"{\"pixelCode\":\"CPQSCNBC77UEMTOR868G\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"239894724","configuration":"{\"pixel_id\":\"274758730140253\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"43548868","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Axon Shopify Pixel"},{"id":"129106116","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"ACC"},{"id":"139624644","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Frontrow"},{"id":"147718340","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"rokt"},{"id":"156303556","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"heapmap"},{"id":"160792772","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Northbean"},{"id":"162758852","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"openai"},{"id":"162922692","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"cpg affiliate"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Goli®","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"golinutrition.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/goli.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://goli.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"151168581828","themePublished":"true","eventMetadataId":"a5c78cf2-f21d-43c9-8d53-d474b69de8df","shopId":"7001735241","storefrontBaseUrl":"https:\/\/goli.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
700<script> 701 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 702 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 703 window.ShopifyAnalytics.meta.currency = 'USD'; 704 var meta = {"page":{"requestId":"7e7d0dae-2960-4039-ba9e-1401179423cb-1790954218"}}; 705 for (var attr in meta) { 706 window.ShopifyAnalytics.meta[attr] = meta[attr]; 707 } 708</script>
vendor: 1 bytes, line 708
708
709<script class="analytics"> 710 (function () { 711 var customDocumentWrite = function(content) { 712 var jquery = null; 713 714 if (window.jQuery) { 715 jquery = window.jQuery; 716 } else if (window.Checkout && window.Checkout.$) { 717 jquery = window.Checkout.$; 718 } 719 720 if (jquery) { 721 jquery('body').append(content); 722 } 723 }; 724 725 var hasLoggedConversion = function(token) { 726 if (token) { 727 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 728 } 729 return false; 730 } 731 732 var setCookieIfConversion = function(token) { 733 if (token) { 734 var twoMonthsFromNow = new Date(Date.now()); 735 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 736 737 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 738 } 739 } 740 741 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 742 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 743 if (trekkie.integrations) { 744 return; 745 } 746 trekkie.methods = [ 747 'identify', 748 'page', 749 'ready', 750 'track', 751 'trackForm', 752 'trackLink' 753 ]; 754 trekkie.factory = function(method) { 755 return function() { 756 var args = Array.prototype.slice.call(arguments); 757 args.unshift(method); 758 trekkie.push(args); 759 if (method == 'track' || method == 'page') { 760 var pageUrl; 761 try { 762 pageUrl = window.location.href; 763 } catch (e) {} 764 var pageReferrer; 765 try { 766 pageReferrer = document.referrer; 767 } catch (e) {} 768 try { 769 if (window.__TREKKIE_SHIM_QUEUE == null) { 770 window.__TREKKIE_SHIM_QUEUE = []; 771 } 772 window.__TREKKIE_SHIM_QUEUE.push({ 773 from: 'trekkie-stub', 774 method: method, 775 args: args.slice(1), 776 pageContext: { 777 url: pageUrl, 778 referrer: pageReferrer 779 } 780 }); 781 } catch (e) { 782 // no-op 783 } 784 } 785 return trekkie; 786 }; 787 }; 788 for (var i = 0; i < trekkie.methods.length; i++) { 789 var key = trekkie.methods[i]; 790 trekkie[key] = trekkie.factory(key); 791 } 792 trekkie.load = function(config) { 793 trekkie.config = config || {}; 794 trekkie.config.initialDocumentCookie = document.cookie; 795 var first = document.getElementsByTagName('script')[0]; 796var script = document.createElement('script'); 797script.type = 'text/javascript'; 798script.onerror = function(e) { 799 var scriptFallback = document.createElement('script'); 800 scriptFallback.type = 'text/javascript'; 801 scriptFallback.onerror = function(error) { 802 var Monorail = { 803 produce: function produce(monorailDomain, schemaId, payload) { 804 var currentMs = new Date().getTime(); 805 var event = { 806 schema_id: schemaId, 807 payload: payload, 808 metadata: { 809 event_created_at_ms: currentMs, 810 event_sent_at_ms: currentMs 811 } 812 }; 813 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 814 }, 815 sendRequest: function sendRequest(endpointUrl, payload) { 816 // Try the sendBeacon API 817 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 818 var blobData = new window.Blob([payload], { 819 type: 'text/plain' 820 }); 821 822 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 823 return true; 824 } // sendBeacon was not successful 825 826 } // XHR beacon 827 828 var xhr = new XMLHttpRequest(); 829 830 try { 831 xhr.open('POST', endpointUrl); 832 xhr.setRequestHeader('Content-Type', 'text/plain'); 833 xhr.send(payload); 834 } catch (e) { 835 console.log(e); 836 } 837 838 return false; 839 }, 840 isIos12: function isIos12() { 841 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 842 } 843 }; 844 Monorail.produce('monorail-edge.shopifysvc.com', 845 'trekkie_storefront_load_errors/1.1', 846 {shop_id: 7001735241, 847 theme_id: 151168581828, 848 app_name: "storefront", 849 context_url: window.location.href, 850 source_url: "//goli.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 851 852 }; 853 scriptFallback.async = true; 854 scriptFallback.src = '//goli.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 855 first.parentNode.insertBefore(scriptFallback, first); 856}; 857script.async = true; 858script.src = '//goli.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 859first.parentNode.insertBefore(script, first); 860 861 }; 862 trekkie.load( 863 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":7001735241,"isMerchantRequest":null,"themeId":151168581828,"themeCityHash":"18036900454312155594","contentLanguage":"en","currency":"USD","eventMetadataId":"a5c78cf2-f21d-43c9-8d53-d474b69de8df"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 864 ); 865 866 var loaded = false;
867 trekkie.ready(function() { 868 if (loaded) return; 869 loaded = true; 870 871 window.ShopifyAnalytics.lib = window.trekkie; 872 873 var originalDocumentWrite = document.write; 874 document.write = customDocumentWrite; 875 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 876 document.write = originalDocumentWrite; 877 878 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 879 var token = match? match[1]: undefined; 880 if (!hasLoggedConversion(token)) { 881 setCookieIfConversion(token); 882 883 } 884 }); 885 886 window.ShopifyAnalytics.lib.page(null,{"requestId":"7e7d0dae-2960-4039-ba9e-1401179423cb-1790954218","shopifyEmitted":true}); 887 888 var eventsListenerScript = document.createElement('script'); 889 eventsListenerScript.async = true; 890 eventsListenerScript.src = "//goli.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 891 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 892})();</script>
892 893
893<script> 894 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 895 window.ga = function ga() { 896 (window.ga.q = window.ga.q || []).push(arguments); 897 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 898 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 899 } 900 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 901 }; 902 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 903 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 904 } 905 } 906</script>
vendor: 1 bytes, line 906
906
907<script 908 defer 909 src="https://goli.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 910 data-application="storefront-renderer" 911 data-shop-id="7001735241" 912 data-render-region="gcp-us-central1" 913 data-page-type="customers/login" 914 data-theme-instance-id="151168581828" 915 data-theme-name="LangShop Theme" 916 data-theme-version="2.11.8" 917 data-monorail-region="shop_domain" 918 data-resource-timing-sampling-rate="10" 919 data-shs="true" 920 data-shs-beacon="true" 921 data-shs-export-with-fetch="true" 922 data-shs-logs-sample-rate="1" 923 data-shs-beacon-endpoint="https://goli.com/api/collect" 924></script>
924 925<meta name="shopify-y" content="c4692a9f-3b99-48f6-bcf3-7d5c2f82f4f3" data-expiration="1822511818000"><meta name="shopify-s" content="d441e5e0-5067-4fa6-9525-f22b8702e5f3" data-expiration="1790956018000"><meta name="new-cookie-storage-activated" content="t"> 926</head> 927<body class="" data-shopify-template-handle="customers-login"> 928 929 930
930<script src="//goli.com/cdn/shop/t/104/assets/theme-bootstrap.min.js?v=39564474806961312471778542075" type="text/javascript"></script>
930 931
931<script src="//goli.com/cdn/shop/t/104/assets/bootstrap-menu-multilevel.min.js?v=99974821671961022501778541848" type="text/javascript"></script>
931 932
932<script src="//goli.com/cdn/shop/t/104/assets/jquery.min.js?v=172596495919052813691778541926" type="text/javascript"></script>
932 933
933<script src="//goli.com/cdn/shop/t/104/assets/dayjs.min.js?v=160933994874996829211778541891" type="text/javascript"></script>
933 934
934<script src="//goli.com/cdn/shop/t/104/assets/loadingoverlay.min.js?v=83345831542795446801778541957" type="text/javascript"></script>
934 935
935<script> 936 function cleanHtmlEntities(data) { 937 return data.map(item => { 938 const cleanedItem = {}; 939 for (const key in item) { 940 if (typeof item[key] === 'string') { 941 cleanedItem[key] = item[key] 942 .replace(/&/g, '&') 943 .replace(/<br>/g, '<br>') 944 .replace(/<sup>/g, '<sup>') 945 .replace(/<\/sup>/g, '</sup>'); 946 } else { 947 cleanedItem[key] = item[key]; 948 } 949 } 950 return cleanedItem; 951 }); 952 } 953 </script>
953 954 955 956 957
957<script src="//goli.com/cdn/shop/t/104/assets/cart.min.js?v=156585583159371723031778541857" type="text/javascript"></script>
vendor: 1 bytes, line 957
957
958<script> 959 Cookies.set('tokenizer_product_variant_id', ); 960 Cookies.set('tokenizer_product_variant_selling_plan_id', ); 961 962 var cartProductKeyMap = {}; 963 var cartProductVariantMap = { one_time: {}, recurring: {} }; 964 var cartProductVariantTotalQuantityMap = { one_time: {}, recurring: {} }; 965 966 function cartProductTypeHandle(is_recurring) { 967 return (is_recurring) ? 'recurring' : 'one_time'; 968 } 969 970 function cartProcessCartProductMap() { 971 cartProductKeyMap = {}; 972 cartProductVariantMap = { one_time: {}, recurring: {} }; 973 cartProductVariantTotalQuantityMap = { one_time: {}, recurring: {} }; 974 CartJS.cart.items.forEach(function(item, i) { 975 let product_type = cartProductTypeHandle(item.hasOwnProperty('selling_plan_allocation')); 976 if (!cartProductVariantTotalQuantityMap[product_type].hasOwnProperty('item.variant_id')) { 977 cartProductVariantTotalQuantityMap[product_type][item.variant_id] = 0; 978 } 979 cartProductKeyMap[item.key] = i; 980 cartProductVariantMap[product_type][item.variant_id] = i; 981 cartProductVariantTotalQuantityMap[product_type][item.variant_id] += parseInt(item['quantity']); 982 }); 983 } 984 985 function cartGetItemIndexByKey(product_key) { 986 return cartProductKeyMap[product_key]; 987 } 988 989 function cartGetItemByKey(product_key) { 990 return CartJS.cart.items[cartGetItemIndexByKey(product_key)]; 991 } 992 993 function cartGetItemLineNumberByKey(product_key) { 994 return cartGetItemIndexByKey(product_key)+1; 995 } 996 997 function cartGetItemByVariantId(product_variant_id, is_recurring=false) { 998 let cart_index = cartProductVariantMap[cartProductTypeHandle(is_recurring)][product_variant_id]; 999 return CartJS.cart.items[cart_index]; 1000 } 1001 1002 function cartContainsSubscription() { 1003 return Object.keys(cartProductVariantTotalQuantityMap[cartProductTypeHandle(true)]).length > 0; 1004 } 1005 1006 function cartItemToOneTime(product_key) { 1007 return new Promise((resolve, reject) => { 1008 try { 1009 let item = cartGetItemByKey(product_key); 1010 1011 if (item.hasOwnProperty('selling_plan_allocation')) { 1012 let line_item_id = cartGetItemLineNumberByKey(product_key); 1013 let product_properties = item.properties; 1014 1015 product_properties['selling_plan'] = ''; 1016 CartJS.updateItem(line_item_id, item.quantity, product_properties, { 1017 'success': function(data, textStatus, jqXHR) { 1018 resolve(); 1019 }, 1020 'error': function(jqXHR, textStatus, errorThrown) { 1021 reject('Failed to convert to one-time purchase, please try again later or contact our support team.'); 1022 } 1023 }); 1024 } else { 1025 resolve(); 1026 } 1027 } catch (e) { 1028 reject('Failed to convert to one-time purchase, please contact our support team.'); 1029 } 1030 }); 1031 } 1032 1033 function cartItemToSubscription(product_key) { 1034 return new Promise((resolve, reject) => { 1035 try { 1036 let item = cartGetItemByKey(product_key); 1037 1038 if (item.hasOwnProperty('selling_plan_allocation')) { 1039 resolve(); 1040 } else { 1041 let line_item_id = cartGetItemLineNumberByKey(product_key); 1042 let product_properties = item.properties; 1043 1044 jQuery.getJSON(window.Shopify.routes.root+'products/'+item.handle+'.js', function(product) { 1045 let product_variant_index = product.variants.findIndex(variant => variant.id === item.variant_id); 1046 let product_variant = (product_variant_index >= 0) ? product.variants[product_variant_index] : null; 1047 if (product_variant && product_variant.hasOwnProperty('selling_plan_allocations') && product_variant.selling_plan_allocations.length > 0) { 1048 product_properties['selling_plan'] = product_variant.selling_plan_allocations[0].selling_plan_id; 1049 CartJS.updateItem(line_item_id, item.quantity, product_properties, { 1050 'success': function(data, textStatus, jqXHR) { 1051 resolve(); 1052 }, 1053 'error': function(jqXHR, textStatus, errorThrown) { 1054 reject('Failed to convert to subscription, please try again later or contact our support team.'); 1055 } 1056 }); 1057 } else { 1058 reject('Product not available as a subscription.'); 1059 } 1060 }); 1061 } 1062 } catch (e) { 1063 reject('Failed to convert to subscription, please contact our support team.'); 1064 } 1065 }); 1066 } 1067 1068 function cartToSubscription(callback, index=0) { 1069 let product_keys = Object.keys(cartProductKeyMap); 1070 if (typeof product_keys[index+1] === 'undefined') { 1071 // Final product in the array. 1072 cartItemToSubscription(product_keys[index]).then(() => { 1073 if (typeof callback === 'function') { callback(); } 1074 }).catch((error) => { 1075 console.log(error); 1076 if (typeof callback === 'function') { callback(); } 1077 }); 1078 } else { 1079 cartItemToSubscription(product_keys[index]).then(() => { 1080 cartToSubscription(callback, index+1); 1081 }).catch((error) => { 1082 console.log(error); 1083 cartToSubscription(callback, index+1); 1084 }); 1085 } 1086 } 1087 1088 1089 jQuery(function() { 1090 CartJS.init({"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}, { 1091 'debug': false 1092 }); 1093 }); 1094 1095 $(document).on('cart.ready cart.requestComplete', function(event, cart) { 1096 cartProcessCartProductMap(); 1097 if (typeof cartUpdateEvents == 'function') { 1098 cartUpdateEvents(cart); 1099 } 1100 }); 1101</script>
1101 1102
1102<script> 1103 if (!Cookies.get('cart_attribute_landing_domain')) { Cookies.set('cart_attribute_landing_domain', 'goli.com', { expires: 1 }); } 1104 if (!Cookies.get('cart_attribute_landing_page')) { Cookies.set('cart_attribute_landing_page', '/account/login', { expires: 1 }); } 1105 if (!Cookies.get('cart_attribute_user_agent')) { Cookies.set('cart_attribute_user_agent', navigator.userAgent, { expires: 1 }); } 1106 1107 $(document).on('cart.ready', function(event, cart) { 1108 let cart_new_attributes = {}; 1109 let cart_existing_attributes = CartJS.getAttributes(); 1110 1111 if (!('cart_landing_domain' in cart_existing_attributes) && Cookies.get('cart_attribute_landing_domain')) { cart_new_attributes['cart_landing_domain'] = Cookies.get('cart_attribute_landing_domain'); } 1112 if (!('cart_landing_page' in cart_existing_attributes) && Cookies.get('cart_attribute_landing_page')) { cart_new_attributes['cart_landing_page'] = Cookies.get('cart_attribute_landing_page'); } 1113 if (!('cart_user_agent' in cart_existing_attributes) && Cookies.get('cart_attribute_user_agent')) { cart_new_attributes['cart_user_agent'] = Cookies.get('cart_attribute_user_agent'); } 1114 if (!('cart_landing_fbp' in cart_existing_attributes) && Cookies.get('_fbp')) { cart_new_attributes['cart_landing_fbp'] = Cookies.get('_fbp'); } 1115 1116 if (!(Object.keys(cart_new_attributes).length === 0)) { 1117 CartJS.setAttributes(cart_new_attributes); 1118 } 1119 }); 1120</script>
1120 1121
1121<script> 1122 class AddToCartItem { 1123 constructor(variant_id, quantity, sku, amount, currency) { 1124 this.variant_id = (variant_id === undefined || variant_id === null) ? 0 : variant_id; 1125 this.quantity = (quantity === undefined || quantity === null) ? 1 : quantity; 1126 this.sku = (sku === undefined || sku === null) ? 'UNKNOWN' : sku; 1127 this.amount = (amount === undefined || amount === null) ? 0 : amount; 1128 this.currency = (currency === undefined || currency === null) ? 'USD' : currency; 1129 } 1130 } 1131 1132 class AddToCartData { 1133 constructor(add_to_cart_item_array) { 1134 this.items = (add_to_cart_item_array === undefined || add_to_cart_item_array === null || typeof add_to_cart_item_array !== 'object') ? [] : (Array.isArray(add_to_cart_item_array)) ? add_to_cart_item_array : [ add_to_cart_item_array ]; 1135 } 1136 addItem(item_details_array) { 1137 this.items.push(new AddToCartItem( 1138 item_details_array['variant_id'], 1139 item_details_array['quantity'], 1140 item_details_array['sku'], 1141 item_details_array['amount'], 1142 item_details_array['currency'] 1143 )); 1144 } 1145 getItems() { 1146 return this.items; 1147 } 1148 getCartAmount() { 1149 let cart_amount = 0;
1150 this.getItems().forEach(function(cart_item) { 1151 cart_amount += cart_item.amount; 1152 }); 1153 return cart_amount; 1154 } 1155 getCartQuantity() { 1156 let cart_quantity = 0; 1157 this.getItems().forEach(function(cart_item) { 1158 cart_quantity += cart_item.quantity; 1159 }); 1160 return cart_quantity; 1161 } 1162 } 1163 1164 function pixelsAddToCart(add_to_cart_data) { 1165 try { 1166 if (typeof golipixelAddToCart == 'function') { golipixelAddToCart(add_to_cart_data); } 1167 if (typeof pinterestAddToCart == 'function') { pinterestAddToCart(add_to_cart_data); } 1168 if (typeof klaviyoAddToCart == 'function') { klaviyoAddToCart(); } 1169 if (typeof gtmAddCart == 'function') { gtmAddCart(add_to_cart_data); } 1170 } catch (e) { 1171 console.log(e); 1172 } 1173 } 1174</script>
1174 1175 1176
1176<script src="//goli.com/cdn/shopifycloud/storefront/assets/themes_support/shopify_common-5f594365.js" type="text/javascript"></script>
1176 1177 1178
1178<script src="//goli.com/cdn/shop/t/104/assets/theme-goli.js?v=98552450417804743751782499671" type="text/javascript"></script>
1178 1179
1179<script src="//goli.com/cdn/shop/t/104/assets/swiper-bundle.min.js?v=181550739200531974951778542074" type="text/javascript"></script>
1179 1180 1181 1182 1183 1184 <div id="shopify-section-header-v3" class="shopify-section"> 1185 1186 1187 1188
1189<script> 1190 const menu =[ 1191 1192 { 1193 link: "/", 1194 title: "Products", 1195 collapsed: true, 1196 inner_links: [ 1197 1198 { link: "/pages/goli-acv", title: "Apple Cider Vinegar Gummies" }, 1199 1200 { link: "/pages/goli-ashwagandha", title: "Ashwagandha Gummies" }, 1201 1202 { link: "/pages/goli-superfruits", title: "Superfruits Beauty Gummies" }, 1203 1204 { link: "/pages/goli-supergreens", title: "Supergreens Gummies" }, 1205 1206 { link: "/pages/goli-immune", title: "Triple Action Immune Gummies" }, 1207 1208 { link: "/pages/goli-sleep", title: "Dreamy Sleep Gummies" }, 1209 1210 { link: "/pages/goli-womens-multi", title: "Women's Complete Multi Gummies" }, 1211 1212 { link: "/pages/goli-extra-strength-sleep", title: "Extra-Strength Sleep Gummies" }, 1213 1214 { link: "/pages/probioticplus", title: "Probiotic+ Gummies" }, 1215 1216 { link: "/pages/goli-beets-cardio", title: "Beets Cardio Gummies" }, 1217 1218 { link: "/pages/matcha-mind", title: "Matcha Mind Gummies" }, 1219 1220 { link: "/pages/zs-acv", title: "Zero Sugar ACV Gummies" }, 1221 1222 { link: "/pages/renew-nad", title: "Renew NAD+" }, 1223 1224 { link: "/pages/energy", title: "Recharge+ Energy" }, 1225 1226 ] 1227 }, 1228 1229 { 1230 link: "/pages/order", 1231 title: "Shop", 1232 collapsed: true, 1233 inner_links: [ 1234 1235 ] 1236 }, 1237 1238 { 1239 link: "/pages/about-us", 1240 title: "About Us", 1241 collapsed: true, 1242 inner_links: [ 1243 1244 { link: "/pages/about-us", title: "Our Story" }, 1245 1246 { link: "/pages/goli-for-good", title: "Goli® for Good" }, 1247 1248 { link: "/pages/inside-the-gummy", title: "Inside the Gummy" }, 1249 1250 { link: "/pages/science-advisory-board", title: "Scientific Advisory Board" }, 1251 1252 ] 1253 }, 1254 1255 { 1256 link: "/pages/faq", 1257 title: "FAQ", 1258 collapsed: true, 1259 inner_links: [ 1260 1261 ] 1262 }, 1263 1264 ] 1265 const mobileMenu = [ 1266 1267 1268 { 1269 link: "/pages/zero-sugar-ashwagandha", 1270 product_type: "zs_ashwa", 1271 is_new: "true", 1272 menu_item_new_banner_text: " ", 1273 menu_item_link_text: " ", 1274 name: "ZERO SUGAR Ashwa Gummies", 1275 image: "//goli.com/cdn/shop/files/zs-ashwa-mobiel-cion_200x200.jpg?v=1790700812", 1276 color1: "#37bfdb", 1277 color2: "#00a9e0", 1278 text_color: "#ffffff", 1279 }, 1280 1281 1282 1283 { 1284 link: "/pages/zs-acv", 1285 product_type: "zs_acv", 1286 is_new: "true", 1287 menu_item_new_banner_text: " ", 1288 menu_item_link_text: " ", 1289 name: "ZERO SUGAR ACV Gummies", 1290 image: "//goli.com/cdn/shop/files/menu-zs-acv-icon_200x200.jpg?v=1790274417", 1291 color1: "#f22431", 1292 color2: "#ffffff", 1293 text_color: "#ffffff", 1294 }, 1295 1296 1297 1298 { 1299 link: "/pages/renew-nad", 1300 product_type: "nad", 1301 is_new: "false", 1302 menu_item_new_banner_text: " ", 1303 menu_item_link_text: " ", 1304 name: "NAD+<br>Gummies", 1305 image: "//goli.com/cdn/shop/files/renew-hamburger_200x200.png?v=1772477812", 1306 color1: "#822829", 1307 color2: "#eddedb", 1308 text_color: "#ffffff", 1309 }, 1310 1311 1312 1313 { 1314 link: "/pages/goli-ashwagandha", 1315 product_type: "ashwagandha", 1316 is_new: "false", 1317 menu_item_new_banner_text: " ", 1318 menu_item_link_text: " ", 1319 name: "Ashwagandha<br>Gummies", 1320 image: "//goli.com/cdn/shop/files/ashwa-hamburger_200x200.jpg?v=1650394382", 1321 color1: "#d2eae7", 1322 color2: "#90d7ed", 1323 text_color: "#000000", 1324 }, 1325 1326 1327 1328 { 1329 link: "/pages/goli-acv", 1330 product_type: "acv", 1331 is_new: "false", 1332 menu_item_new_banner_text: " ", 1333 menu_item_link_text: " ", 1334 name: "Apple Cider <br> Vinegar Gummies", 1335 image: "//goli.com/cdn/shop/files/acv-hamburger_200x200.jpg?v=1650394335", 1336 color1: "#eddedb", 1337 color2: "#ff8b91", 1338 text_color: "#000000", 1339 }, 1340 1341 1342 1343 { 1344 link: "/pages/probioticplus", 1345 product_type: "probiotic", 1346 is_new: "false", 1347 menu_item_new_banner_text: " ", 1348 menu_item_link_text: " ", 1349 name: "Probiotic+<br>Gummies", 1350 image: "//goli.com/cdn/shop/files/ppp-hamburger_200x200.jpg?v=1679347399", 1351 color1: "#66bfa3", 1352 color2: "#2a9272", 1353 text_color: "#000000", 1354 }, 1355 1356 1357 1358 {
1359 link: "/pages/matcha-mind", 1360 product_type: "matcha", 1361 is_new: "false", 1362 menu_item_new_banner_text: " ", 1363 menu_item_link_text: " ", 1364 name: "Matcha Mind<br>Gummies", 1365 image: "//goli.com/cdn/shop/files/mm-hamburger_200x200.jpg?v=1712670948", 1366 color1: "#448e87", 1367 color2: "#6fb6b1", 1368 text_color: "#000000", 1369 }, 1370 1371 1372 1373 { 1374 link: "/pages/goli-beets-cardio", 1375 product_type: "beets", 1376 is_new: "false", 1377 menu_item_new_banner_text: " ", 1378 menu_item_link_text: " ", 1379 name: "Beets Cardio<br>Gummies", 1380 image: "//goli.com/cdn/shop/files/beets-hamburger_200x200.jpg?v=1680242632", 1381 color1: "#9c586c", 1382 color2: "#861f41", 1383 text_color: "#000000", 1384 }, 1385 1386 1387 1388 { 1389 link: "/pages/goli-extra-strength-sleep", 1390 product_type: "xssleep", 1391 is_new: "false", 1392 menu_item_new_banner_text: " ", 1393 menu_item_link_text: " ", 1394 name: "Extra-Strength Sleep<br>Gummies", 1395 image: "//goli.com/cdn/shop/files/xssleep-hamburger_200x200.jpg?v=1678844181", 1396 color1: "#6c4e7a", 1397 color2: "#413049", 1398 text_color: "#000000", 1399 }, 1400 1401 1402 1403 { 1404 link: "/pages/goli-sleep", 1405 product_type: "sleep", 1406 is_new: "false", 1407 menu_item_new_banner_text: " ", 1408 menu_item_link_text: " ", 1409 name: "Dreamy Sleep <br> Gummie", 1410 image: "//goli.com/cdn/shop/files/sleep-hamburger_200x200.jpg?v=1655790494", 1411 color1: "#e0ccf1", 1412 color2: "#500878", 1413 text_color: "#000000", 1414 }, 1415 1416 1417 1418 { 1419 link: "/pages/goli-womens-multi", 1420 product_type: "womens_multi", 1421 is_new: "false", 1422 menu_item_new_banner_text: " ", 1423 menu_item_link_text: " ", 1424 name: "Women's Multi<br>Gummies", 1425 image: "//goli.com/cdn/shop/files/womens-multi-hamburger_200x200.jpg?v=1668445452", 1426 color1: "#e7bcce", 1427 color2: "#f22b7b", 1428 text_color: "#000000", 1429 }, 1430 1431 1432 1433 { 1434 link: "/pages/goli-supergreens", 1435 product_type: "supergreens", 1436 is_new: "false", 1437 menu_item_new_banner_text: " ", 1438 menu_item_link_text: " ", 1439 name: "Supergreens<br>Gummies", 1440 image: "//goli.com/cdn/shop/files/sg-hamburger_200x200.jpg?v=1650642669", 1441 color1: "#d3e9d8", 1442 color2: "#32b05d", 1443 text_color: "#000000", 1444 }, 1445 1446 1447 1448 { 1449 link: "/pages/goli-superfruits", 1450 product_type: "superfruits", 1451 is_new: "false", 1452 menu_item_new_banner_text: " ", 1453 menu_item_link_text: " ", 1454 name: "Superfruits<br>Beauty Gummies", 1455 image: "//goli.com/cdn/shop/files/sf-hamburger_200x200.jpg?v=1650394407", 1456 color1: "#f8dabe", 1457 color2: "#f37124", 1458 text_color: "#000000", 1459 }, 1460 1461 1462 1463 { 1464 link: "/pages/goli-immune", 1465 product_type: "immune", 1466 is_new: "false", 1467 menu_item_new_banner_text: " ", 1468 menu_item_link_text: " ", 1469 name: "Triple Action<br>Immune Gummies", 1470 image: "//goli.com/cdn/shop/files/immune-hamburger_200x200.jpg?v=1650398008", 1471 color1: "#ffac7e", 1472 color2: "#e8350c", 1473 text_color: "#000000", 1474 }, 1475 1476 1477 1478 { 1479 link: "/pages/energy", 1480 product_type: "acv", 1481 is_new: "false", 1482 menu_item_new_banner_text: " ", 1483 menu_item_link_text: " ", 1484 name: "Recharge+<br>Gummies", 1485 image: "//goli.com/cdn/shop/files/menu-recharge-icon_200x200.jpg?v=1789745935", 1486 color1: "#082b54", 1487 color2: "#ffc800", 1488 text_color: "#ffffff", 1489 }, 1490 1491 1492 ] 1493 const is_homepage = true; 1494 const is_planpage = false; 1495 let page_type = ''; 1496 1497 1498 1499 function redirectToOrderPage() { 1500 1501 1502 if (page_type == "landing_page") { 1503 // Try to find the target element 1504 const targetElement = document.getElementById("product-target") || 1505 document.getElementById("shopify_single_shop_product") || 1506 document.querySelector('[id*="product"]') || 1507 document.querySelector('.brand-aam-products') || 1508 document.querySelector('#products_aam'); 1509 1510 if (targetElement) { 1511 // Calculate the position with -120px offset 1512 const elementPosition = targetElement.getBoundingClientRect().top + window.pageYOffset; 1513 const offsetPosition = elementPosition - 120; 1514 1515 // Smooth scroll to the offset position 1516 window.scrollTo({ 1517 top: offsetPosition, 1518 behavior: 'smooth' 1519 }); 1520 } else { 1521 window.location = '/pages/order'; 1522 } 1523 } else { 1524 window.location = '/pages/order'; 1525 } 1526 }</script>
1526 1527<style data-shopify> 1528 .cart-icon-v3{ 1529 background-image: url("//goli.com/cdn/shop/t/104/assets/cart_v3.svg?v=60419950707257672141778541858"); 1530 background-size: cover; 1531 } 1532 .caret_multilink::after { 1533 font-family: "Font Awesome 5 Pro"; 1534 font-weight: 900; 1535 content: "\f0d7"; 1536 margin-left: 5px; 1537 } 1538 .menu-hamburger::after { 1539 font-family: "Font Awesome 5 Pro"; 1540 font-weight: 900; 1541 content: "\f0c9"; 1542 } 1543</style> 1544 1545<div x-data="{ menu: menu, mobile_m: mobileMenu,showMobileMenu:false, shop_now:'Buy it now', is_plan_page: is_planpage , is_homepage: is_homepage, redirect: redirectToOrderPage }" > 1546 1547 <div > 1548 <div class="fixed w-[100%] h-[100vh] top-0 grid grid-cols-1 z-[60000] overflow-hidden bg-black bg-opacity-50" style="display:none; z-index: 60001;" x-show="showMobileMenu" > 1549 <div class="overflow-y-auto max-w-[425px]" x-show="showMobileMenu" x-transition:enter="transition ease-out duration-300 transform" 1550 x-transition:enter-start="opacity-0 -translate-x-full" 1551 x-transition:enter-end="opacity-100 translate-x-0" 1552 x-transition:leave="transition ease-in duration-300 transform" 1553 x-transition:leave-start="opacity-100 translate-x-0" 1554 x-transition:leave-end="opacity-0 -translate-x-full" 1555 @click.away="showMobileMenu = false"> 1556 <div class="bg-white "> 1557 <div class="flex justify-end text-black font-bold px-[1em] py-[1em]"> 1558 <button type="button" @click="showMobileMenu = !showMobileMenu"> 1559 <i class='fas fa-times'></i> 1560 </button> 1561 </div> 1562 <div class="grid grid-cols-2 gap-[.5em] px-[.5em] pt-[.5em] justify-center "> 1563 <template x-for="(mdx, idyy) in mobileMenu" :key="idyy"> 1564 <a :href="mdx.link" class="h-[4em] grid items-center" :style="`background:${mdx.color1};color:${mdx.text_color || '#000000'}`"> 1565 1566 <div class="grid grid-cols-[60%] font-bold justify-end items-center "> 1567 <div class="relative z-10 leading-none"><span class="decoration-[50%] line-through" :style="`text-decoration-color:${mdx.color2}80`">EXPLORE</span> 1568 <div class="absolute w-[3em] h-[3em] left-[-3em] top-[-.2em] z-[-1]"> 1569 <img class="w-[100%] h-auto" :src="`${mdx.image}`"> 1570 </div> 1571 </div> 1572 <div x-html="mdx.name" class="leading-none text-[.7em] z-10"></div> 1573 1574 </div> 1575 </a> 1576 </template> 1577 </div> 1578 <div class="grid grid-cols-1 gap-[.5em] px-[.5em] mt-[0.5em] justify-center"> 1579 <button type="button" @click="redirect" class="block bg-black text-white py-[1em] text-[.8em] font-bold">ORDER NOW</button> 1580 </div> 1581 <div class="py-[1em]"> 1582 <ul class="grid grid-cols-1 gap-[1em] justify-center items-center text-center"> 1583 <template x-for="(menulinks, idx) in menu" :key="idx"> 1584 <li class="font-bold"> 1585 <a class="hover:text-gray-600" :href="menulinks.link" @click.away="menulinks.collapsed = true" :class="{'caret_multilink': menulinks.inner_links.length > 0}" x-text="menulinks.title" :style="menulinks.inner_links.length > 0 ? 'caret_multilink': ''; " @click.prevent="menulinks.inner_links.length > 0 ? menulinks.collapsed = !menulinks.collapsed : window.location = menulinks.link"></a> 1586 <ul class="grid grid-cols-1 gap-1 bg-white font-normal border-gray-400 border-y-[1px] px-[2em] py-[2em]" x-show="!menulinks.collapsed && menulinks.inner_links.length > 0"> 1587 <template x-for="(subLink, subIdx) in menulinks.inner_links" :key="subIdx"> 1588 <li><a class="hover:text-gray-600" :href="subLink.link" x-text="subLink.title"></a></li> 1589 </template> 1590 </ul> 1591 </li> 1592 </template> 1593 </ul> 1594 </div> 1595 <div class="bg-[#017789] grid-cols-[5em,1fr] grid px-[1em] py-[1em] text-[7vw] ssm:text-[1.5rem] text-white items-center"> 1596 <div class="filter invert"> 1597 <img src="//goli.com/cdn/shop/t/104/assets/goli_logo.svg?v=69744193860116714471778541904" class="img-fluid nav-goli-logo" alt="Goli® Nutrition Home"> 1598 </div> 1599 <div class="text-[.5em] border-l-[1px] border-white pl-[1em]"> 1600 <span>With every order, Goli<sup>®</sup> Nutrition will donate a 6-month supply of essential vitamins to a child in need through our 1-for-1 grant with Vitamin Angels and plant a tree with the Eden Reforestation projects.</span> 1601 </div> 1602 </div>
1603 </div> 1604 </div> 1605 </div> 1606 1607 <div id="header_goli" class="fixed w-[100%] block z-[60000]" x-data="{ 1608 content:'Free Shipping - Fully Tracked,<br class="md:hidden"> <span class="font-bold">Taxes & Duties Covered.</span> Delivered Right to Your Door!' ,easter_banner:'Easter Sale Live Now! Use Code <span class="font-bold">25EASTER</span> for 25% OFF Sitewide!', 1609 }"> 1610 1611 1612 1613 1614 1615 <div class="bg-black text-white phone-horizontal:text-[.2em] text-[.2em] flex justify-center items-center text-center"> 1616 1617 <span class="text-[3.6em] py-[1em] md:text-[1rem] xl:text-[1.3rem] leading-none" ><p>FREE SHIPPING ACROSS THE US!</p></span> 1618 1619 </div> 1620 1621 1622 1623 1624 1625 1626 <div class=" block"> 1627 1628 <div class="grid grid-cols-[1fr,200px] py-1 bg-white md:hidden phone-horizontal:hidden"> 1629 <div class="flex justify-start items-center pl-[1em]"> 1630 <div class="menu-hamburger" @click="showMobileMenu = !showMobileMenu"></div> 1631 <div class="logo w-[4em] h-[3em] ml-[1em]"><a href="/"><img src="//goli.com/cdn/shop/t/104/assets/goli_logo.svg?v=69744193860116714471778541904" class="img-fluid nav-goli-logo" alt="Goli® Nutrition Home"></a></div> 1632 </div> 1633 <div class="flex justify-end items-center pr-[1em]"> 1634 1635 <button type="button" @click="redirect()" class="" x-show="!is_plan_page"> 1636 <div class="bg-black text-white text-[.8em] font-medium justify-center items-center grid w-[110px] h-[30px] px-[5px] leading-none">Shop Now</div> 1637 <div class="font-bold text-black text-[.7em]">Free Shipping</div> 1638 </button> 1639 1640 1641 1642 <a href="#" x-data x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open" class="link-unstyled ml-3 animateCarttarget md:hidden phone-horizontal:hidden" aria-label="Go to the cart"> 1643 <span class="text-[1.4em] w-[1em] h-[1em] inline-block cart-icon-v3 relative"> 1644 <span class="rounded-pill w-[.8em] h-[.8em] absolute bg-[#D22730] top-[-8px] right-[-6px]" x-show="$store.w_cart.itemCount > 0"> 1645 <span class="text-white text-[.5em] grid justify-center items-center" x-text="$store.w_cart.itemCount"></span> 1646 </span> 1647 </span> 1648 </a> 1649 </div> 1650 </div> 1651 </div> 1652 1653 <div class="hidden md:block phone-horizontal:block bg-white py-1"> 1654 <div class="container"> 1655 <div class="grid grid-cols-[10em,1fr,15em] phone-horizontal:grid-cols-[10em,1fr,11em]"> 1656 <div class="logo phone-horizontal:text-[1em] text-[1.5em] w-[4em] h-[3em] grid grid-cols-[1fr] justify-center items-center"><a href="/"><img src="//goli.com/cdn/shop/t/104/assets/goli_logo.svg?v=69744193860116714471778541904" class="img-fluid nav-goli-logo" alt="Goli® Nutrition Home"></a></div> 1657 <ul class="flex gap-[1em] lg:gap-[5em] lg:mr-[4em] justify-center lg:justify-end items-center"> 1658 <template x-for="(menulinks, idx) in menu" :key="idx"> 1659 <li class="font-bold relative"> 1660 <a class="hover:text-gray-600 relative phone-horizontal:text-[.7em]" :href="menulinks.link" @click.away="menulinks.collapsed = true" :class="{'caret_multilink': menulinks.inner_links.length > 0}" x-text="menulinks.title" :style="menulinks.inner_links.length > 0 ? 'caret_multilink': ''; " @click.prevent="menulinks.inner_links.length > 0 ? menulinks.collapsed = !menulinks.collapsed : window.location = menulinks.link"></a> 1661 <ul class="grid grid-cols-1 gap-1 absolute top-[100%] left-0 z-[1000] w-[20rem] bg-white font-normal border-gray-400 border-[1px] px-[2em] py-[2em]" x-show="!menulinks.collapsed && menulinks.inner_links.length > 0"> 1662 <template x-for="(subLink, subIdx) in menulinks.inner_links" :key="subIdx"> 1663 <li><a class="hover:text-gray-600" :href="subLink.link" x-text="subLink.title"></a></li> 1664 </template> 1665 </ul> 1666 </li> 1667 </template> 1668 </ul> 1669 <div class="flex justify-end items-center"> 1670 <button type="button" @click="redirect()" class="" x-show="!is_plan_page" > 1671 <div class="bg-black text-white font-medium justify-center items-center grid w-[150px] h-[50px] phone-horizontal:w-[100px] phone-horizontal:h-[35px] phone-horizontal:text-[.7rem] " >Shop Now</div> 1672 <div class="font-bold text-black text-[.9em] phone-horizontal:text-[.6em]">Free Shipping</div> 1673 </button> 1674 <a href="#" x-data x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open" class="animateCarttarget link-unstyled ml-3 hidden md:block phone-horizontal:block" aria-label="Go to the cart"> 1675 <span class="text-[1.4em] w-[1em] h-[1em] inline-block cart-icon-v3 relative"> 1676 <span class="rounded-pill w-[.8em] h-[.8em] absolute bg-[#D22730] top-[-8px] right-[-6px]" x-show="$store.w_cart.itemCount > 0"> 1677 <span class="text-white text-[.5em] grid justify-center items-center" x-text="$store.w_cart.itemCount"></span> 1678 </span> 1679 </span> 1680 </a> 1681 </div> 1682 </div>
1683 </div> 1684 </div> 1685 </div> 1686 </div> 1687 <div id="header_goli_space" ></div> 1688</div> 1689
1690<script> 1691 function goli_scroll_to_hash_target() { 1692 if (window.__zseDisableLoadHashScroll) { 1693 return; 1694 } 1695 1696 const hash = window.location.hash; 1697 1698 if (!hash || hash === '#') { 1699 return; 1700 } 1701 1702 if (hash === '#shopify_single_shop_product' || hash === '#shopify-section-add_to_the_cart_nad') { 1703 // Standard product pages have a jQuery click handler that manages this scroll. 1704 // On ZSE pages the same IDs are present as .zse-anchor-target spans â fall through 1705 // so the generic scroll below handles them instead. 1706 const _el = document.getElementById(hash.substring(1)); 1707 if (!_el || !_el.classList.contains('zse-anchor-target')) { 1708 return; 1709 } 1710 } 1711 1712 const normalizedHash = decodeURIComponent(hash); 1713 const targetId = normalizedHash.substring(1); 1714 let attempts = 0; 1715 const maxAttempts = 40; 1716 1717 const tryScroll = function() { 1718 const target = document.getElementById(targetId) || document.querySelector(normalizedHash); 1719 1720 if (target) { 1721 const header = document.getElementById('header_goli'); 1722 const headerOffset = header ? header.offsetHeight : 120; 1723 const targetTop = target.getBoundingClientRect().top + window.pageYOffset - headerOffset; 1724 1725 window.scrollTo({ 1726 top: targetTop, 1727 behavior: 'smooth' 1728 }); 1729 1730 return; 1731 } 1732 1733 attempts += 1; 1734 if (attempts < maxAttempts) { 1735 setTimeout(tryScroll, 150); 1736 } 1737 }; 1738 1739 setTimeout(tryScroll, 120); 1740 } 1741 1742 function on_resize_nav_menu() { 1743 let header = $('#header_goli'); 1744 let header_section = $('#header_goli_space'); 1745 1746 if (header_section.length && header.length) { 1747 let header_section_height = header_section.height(); 1748 let header_height = header.height(); 1749 1750 if (header_section_height !== header_height) { 1751 let header_section_height_attribute = header_height+'px'; 1752 header_section.css('height', header_section_height_attribute); 1753 header_section.attr('data-header-height', header_height); 1754 } 1755 } 1756 } 1757 1758 1759 function updateNavbarCart(cart) { 1760 try { 1761 let cart_item_count = parseInt(cart.item_count); 1762 if (Number.isInteger(cart_item_count)) { 1763 } 1764 } catch (e) { 1765 console.log('Could not update navbar cart amount.', e); 1766 } 1767 } 1768 1769 $(document).on('cart.requestComplete', function(event, cart) { 1770 updateNavbarCart(cart); 1771 }); 1772 1773 $(window).resize(function () { 1774 on_resize_nav_menu(); 1775 }); 1776 1777 $(window).on('hashchange', function() { 1778 goli_scroll_to_hash_target(); 1779 }); 1780 1781 $(window).on('load', function() { 1782 goli_scroll_to_hash_target(); 1783 }); 1784 1785 on_resize_nav_menu(); 1786 1787 $(document).ready(function() { 1788 on_resize_nav_menu(); 1789 goli_scroll_to_hash_target(); 1790 }); 1791 1792</script>
1792 1793 1794</div> 1795 <section id="shopify-section-subnav-shop-categories" class="shopify-section subnav-shop-categories-section"> 1796<style data-shopify> 1797 #subnav-shop-categories { scrollbar-width: none; -ms-overflow-style: none; } 1798 #subnav-shop-categories::-webkit-scrollbar { display: none; } 1799 #subnav-shop-categories.is-hidden { transform: translateY(-100%); } 1800 #subnav-shop-categories .subnav-track { margin-inline: auto; } 1801 #subnav-shop-categories.is-scrollable .subnav-track { margin-inline: 0; } 1802 #subnav-shop-categories.is-scrollable { 1803 -webkit-mask-image: linear-gradient(to right, black calc(100% - 24px), transparent 100%); 1804 mask-image: linear-gradient(to right, black calc(100% - 24px), transparent 100%); 1805 } 1806 #subnav-shop-categories.is-scrollable.is-scrolled-end { 1807 -webkit-mask-image: none; 1808 mask-image: none; 1809 } 1810</style> 1811 1812 1813 1814 1815 1816 1817 1818 1819</section> 1820 <div id="floating-cart" x-data x-show="$store.w_cart.is_open" @click.away="$store.w_cart.is_open = false" x-transition:enter="transition duration-300 transform ease-out" x-transition:enter-start="opacity-0 translate-x-full -translate-y-full" x-transition:enter-end="opacity-100 translate-x-0 translate-y-0" x-transition:leave="transition duration-300 transform ease-in" x-transition:leave-start="opacity-100 translate-y-0 scale-100" x-transition:leave-end="opacity-0 translate-x-full -translate-y-full" class="my-floating-cart fixed z-[3000] w-[100%] shadow-[0_35px_60px_-15px_rgba(0,0,0,0.53)]" style="display:none;"> <div id="shopify-section-cart_2023" class="shopify-section"> 1821 1822<form action="/cart" method="post" class="my-cart bg-white lg:w-[30rem] phone-horizontal:absolute phone-horizontal:w-[22em] phone-horizontal:right-0 lg:absolute lg:right-0 shadow-lg"> 1823 1824 <!-- data-ajax-cart-section makes the element's HTML update 1825 when the cart gets changed --> 1826 <section id="float-cart" class="text-[1vw] shadow-[#0000007a 0px 12px 25px]"> 1827 <div class="mx-auto px-[3em] pb-[3em]"> 1828 <div class="cart-head"> 1829 <div class="relative text-center text-[#D22730] text-[5em] font-black py-[0.5em]"> 1830 <button 1831 type="button" x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open" class="absolute font-black right-0 toggle-floating-cart"><i 1832 class="fas fa-times text-black"></i> 1833 </button><span x-text="$store.w_cart.itemCount > 0 ? 'Your Cart is Ready' : 'Your Cart'">Your Cart</span> 1834 1835 </div> 1836 </div> 1837 <div data-ajax-cart-section> 1838 <div class="cart-content text-[4em] py-[1em] border-solid border-y-[.15em] border-black"> 1839 1840 <div class="text-center text-[1em] font-bold py-[2em]">Your cart is currently empty.</div> 1841 1842 </div> 1843 1844 <div class="flex justify-center py-[1em] text-[4em] flex justify-center font-bold items-center phone-horizontal:hidden"> 1845 <button type="button" class="underline continue-shoping toggle-floating-cart" x-on:click="$store.w_cart.is_open = ! $store.w_cart.is_open"> 1846 Continue Shopping <i class="fa fa-chevron-right"></i> 1847 </button> 1848 </div> 1849 1850 <div x-data="{loader: false, link:'/checkout', color1:'grey' , color2:'#D22730' } " x-init="if($store.w_cart) $store.w_cart.itemCount = 0" class="grid grid-cols-[1fr]"> 1851 <button type="button" 1852 :disabled="$store.w_cart.itemCount == 0 ? true : false ;" 1853 @click="$store.w_cart.goToCheckout;" :style="$store.w_cart.itemCount == 0 ? `background:${color1}`: `background:${color2}`;" 1854 id="ps-add-control-holder" 1855 class="rounded-[0.2em] text-[4em] py-[0.7em] text-white flex justify-center items-center"> 1856 <span class="w-[1.5em] h-[1.5em] text-black font-bold bg-white rounded-[100%] mr-[1em] flex justify-center items-center" 1857 data-ajax-cart-bind="item_count"> 1858 0</span>CHECKOUT · <span class="total-price-display"><span class=money>$0.00 USD</span> 1859 </span> 1860 </button> 1861 <div x-show="loader" style="display: none;" class="fixed overflow-scroll inset-0 flex items-center justify-center bg-white bg-opacity-50"><i class="fa fa-spinner text-[40px] animate-spin text-black" aria-hidden="true"></i></div> 1862 </div> 1863 <!-- data-ajax-cart-static-element keeps the container unchanged 1864 when the cart and the surrounding HTML get updated --> 1865 <div data-ajax-cart-static-element class="my-cart__app-container"></div> 1866 </div> 1867 </div> 1868</section> 1869</form> 1870</div> </div> 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882<link href="//goli.com/cdn/shop/t/104/assets/customers.scss.css?v=154234318593219364681778542513" rel="stylesheet" type="text/css" media="all" /> 1883 1884 1885<!-- /templates/customers/login.liquid --> 1886<section class="section-customers-login"> 1887 <div class="container my-4"> 1888 <div id="CustomerLoginForm" class="row justify-content-center"> 1889 <div class="col-12 text-center"> 1890 <h1 id="LoginHeading">Login</h1> 1891 </div> 1892 <div class="col-12 col-md-6"> 1893 1894 <form method="post" action="/account/login" id="customer_login" accept-charset="UTF-8" data-login-with-shop-sign-in="true" novalidate="novalidate"><input type="hidden" name="form_type" value="customer_login" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="return_to" value="/account?feature=subscription_portal_modal" /> 1895 1896 1897 <div class="mb-3"> 1898 <label for="CustomerEmail" class="form-label">Email</label> 1899 <input 1900 type="email" 1901 name="customer[email]" 1902 id="CustomerEmail" 1903 class="form-control" 1904 autocomplete="email" 1905 autocorrect="off" 1906 autocapitalize="off" 1907 1908 > 1909 </div> 1910 1911 1912 <div class="mb-3"> 1913 <label for="CustomerPassword" class="form-label">Password</label> 1914 <input 1915 type="password" 1916 value="" 1917 name="customer[password]" 1918 id="CustomerPassword" 1919 class="form-control" 1920 1921 > 1922 </div> 1923 1924 1925 <div class="mb-3 text-center"> 1926 <input class="bg-black text-white px-[.5rem] py-[.5rem] rounded-0" type="submit" value="Sign In"> 1927 </div> 1928 1929 1930 <div class="mb-3 text-center"> 1931 <a class="link-dark" id="RecoverPassword" href="#recover">Forgot your password?</a> 1932 </div> 1933 1934 1935 <div class="text-center"> 1936 <a class="link-dark" href="/account/register">Don't have an account?</a> 1937 </div> 1938 <input type="hidden" name="return_url" value="/account" /></form> 1939 </div> 1940 </div> 1941 1942 1943 <div id="RecoverPasswordForm" class="row justify-content-center d-none"> 1944 <div class="col-12 text-center"> 1945 <h1 id="RecoverHeading">Reset your password</h1> 1946 <p>We will send you an email to reset your password.</p> 1947 </div> 1948 1949 <div class="col-12 col-md-6"> 1950 <form method="post" action="/account/recover" accept-charset="UTF-8"><input type="hidden" name="form_type" value="recover_customer_password" /><input type="hidden" name="utf8" value="â" /> 1951 1952 1953 1954 <div class="mb-3"> 1955 <label for="RecoverEmail" class="form-label">Email</label> 1956 <input 1957 type="email" 1958 value="" 1959 name="email" 1960 id="RecoverEmail" 1961 class="form-control" 1962 autocorrect="off" 1963 autocapitalize="off" 1964 1965 > 1966 1967 </div> 1968 1969 <div class="mb-3 text-center"> 1970 <input class="bg-black text-white px-[.5rem] py-[.5rem] rounded-0" type="submit" value="Submit"> 1971 </div> 1972 1973 <div class="text-center"> 1974 <a class="link-dark" id="HideRecoverPasswordLink" href="#LoginHeading">Cancel</a> 1975 </div> 1976 </form> 1977 </div> 1978 </div> 1979 1980 1981 1982 1983 1984 1985 </div> 1986</section> 1987 1988
1989<script src="//goli.com/cdn/shop/t/104/assets/customers.js?v=124255201969998916251778542513" type="text/javascript"></script>
vendor: 1 bytes, line 1989
1989
1990<script> 1991 1992 // Remove pre-existing login page redirect to account page. 1993 let page_url_params = new URLSearchParams(window.location.search); 1994 if (page_url_params.has('return_url')) { 1995 window.location.href = '/account/login'; 1996 } 1997 1998</script>
1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <div role="footer"> 2022 <div id="shopify-section-footer" class="shopify-section"> 2023 2024 2025 2026 2027 2028<link href="//goli.com/cdn/shop/t/104/assets/section-footer.scss.css?v=142990195641469144891781879093" rel="stylesheet" type="text/css" media="all" /> 2029 2030<style data-shopify> 2031 footer.footer-2021 .collapse { 2032 visibility: unset; 2033 } 2034 2035</style> 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046<footer class="footer-2021 relative z-1" x-data="{ 2047 keepWell: 'Keep well with Goli<sup>®</sup>', 2048 subscribe_to_newsletter: 'Subscribe to our newsletter for exclusive offers!', 2049 email_label: 'Email', 2050 subscribe_placeholder: 'Subscribe to our newsletter', 2051 become_an_ambassador: 'Become an Ambassador', 2052 follow_us: 'FOLLOW US:', 2053 about_us: 'About Us', 2054 terms_and_conditions: 'Terms & Conditions', 2055 privacy_policy: 'Privacy Policy', 2056 about_goli: 'About Goli', 2057 inside_the_gummy: 'Inside the Gummy', 2058 goli_rewards_gift_cards: 'Goli® Rewards Gift Cards', 2059 digital_accessibility_statement: 'Digital Accessibility Statement', 2060 uk_withdraw_form: 'EU Withdrawal Form', 2061 disclaimer: '<sup>â </sup>These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure or prevent any disease. The views and nutritional advice expressed by Goli<sup>®</sup> Nutrition are not intended for the purpose of providing medical advice. Please always consult your health care provider if you are taking any medications or have any medical conditions. Individual results may vary.', 2062 disclaimer_free_shipping: 'Free Shipping Disclaimer', 2063 disclaimer2: '<sup>â¡</sup>Vitamins B6, B9 & B12 help convert food into cellular energy<sup>â </sup><br> <sup>â</sup>Source: SPINS MULO (powered by IRI) 52 weeks ending 01/01/2023.', 2064 copyright: 'Copyright Text', 2065 wholesale: 'Wholesale', 2066 manage_my_subscription: 'Manage my Subscription', 2067 contact_us: 'Contact Us', 2068 }"> 2069 <div class="container"> 2070 <div class="row"> 2071 <div class="col-12 col-lg-5 text-center text-lg-start pt-5"> 2072 <h2> 2073 <div class="text-top" x-html="keepWell"></div> 2074 <div class="text-bottom" x-html="subscribe_to_newsletter"> 2075 Subscribe to our newsletter for exclusive offers! 2076 </div> 2077 </h2> 2078 <form id="newsletter-subscribe-form" class="newsletter-subscribe-form contact-form"> 2079 <label for="newsletter-form-footer-email" x-html="email_label">Email</label> 2080 <input 2081 type="hidden" 2082 name="contact[tags]" 2083 value="newsletter"> 2084 <div class="newsletter-box"> 2085 <div class="input-group newsletter"> 2086 <input 2087 type="email" 2088 name="email" 2089 id="newsletter-form-footer-email" 2090 class="input-group__field newsletter__input" 2091 value="" 2092 placeholder="Subscribe to our newsletter" 2093 aria-label="" 2094 aria-required="true" 2095 required 2096 autocorrect="off" 2097 autocapitalize="off" 2098 > 2099 <div class="input-group__btn"> 2100 <button 2101 type="submit" 2102 class="btn newsletter__submit" 2103 name="commit" 2104 aria-label="subscribe"> 2105 <span class="newsletter__submit-text--large"> 2106 <i class="far fa-arrow-right"></i> 2107 </span> 2108 </button> 2109 </div> 2110 </div> 2111 </div> 2112 </form> 2113 2114 <h6 class="follow-us-txt text-center text-lg-start" x-html="follow_us"> 2115 FOLLOW US: 2116 </h6> 2117 <div class="social-box"> 2118 <ul> 2119 2120 <li> 2121 <a 2122 href="https://www.facebook.com/GoliNutrition" 2123 target="_blank" 2124 class="icon-link icon-link-facebook" 2125 aria-label="facebook link"> 2126 <i class="fab fa-facebook-f"></i> 2127 </a> 2128 </li> 2129 2130 2131 <li> 2132 <a 2133 href="https://www.instagram.com/GoliNutrition" 2134 target="_blank" 2135 class="icon-link icon-link-instagram" 2136 aria-label="instagram link"> 2137 <i class="fab fa-instagram"></i> 2138 </a> 2139 </li> 2140 2141 2142 <li> 2143 <a 2144 href="https://x.com/golinutrition" 2145 target="_blank" 2146 class="icon-link icon-link-twitter" 2147 aria-label="twitter link"> 2148 <i class="fab fa-twitter"></i> 2149 </a> 2150 </li> 2151 2152 2153 <li> 2154 <a 2155 href="https://www.youtube.com/GoliNutrition" 2156 target="_blank" 2157 class="icon-link icon-link-youtube" 2158 aria-label="youtube link"> 2159 <i class="fab fa-youtube"></i> 2160 </a> 2161 </li> 2162 2163 2164 <li> 2165 <a 2166 href="https://www.pinterest.ca/golinutrition" 2167 target="_blank" 2168 class="icon-link icon-link-pinterest" 2169 aria-label="pinterest link"> 2170 <i class="fab fa-pinterest"></i> 2171 </a> 2172 </li> 2173 2174 2175 <li> 2176 <a 2177 href="https://www.tiktok.com/@golinutrition" 2178 target="_blank" 2179 class="icon-link icon-link-tiktok" 2180 aria-label="tiktok link"> 2181 <i class="fab fa-tiktok"></i> 2182 </a> 2183 </li> 2184 2185 </ul> 2186 </div> 2187 </div> 2188 <div class="col-12 col-lg-4 menu-links pt-lg-5"> 2189 <ul class="arrows"> 2190 <li> 2191 <a id="footer-nav-link-0" href="https://partners.goli.com/login" class="drop" x-html="become_an_ambassador">Become an Ambassador</a> 2192 </li> 2193 <li> 2194 <a id="footer-nav-link-1" href="#!" class="drop collapsed flex justify-start relative" data-bs-toggle="collapse" data-bs-target="#footer-nav-link-1-collapse" aria-expanded="false" aria-controls="#footer-nav-link-1-collapse">
2195 <span x-html="about_goli">About Goli<sup>®</sup></span> 2196 <i class="absolute ml-1 text-[.5em] top-[40%] fas fa-chevron-down"></i> 2197 </a> 2198 <div id="footer-nav-link-1-collapse" class="collapse" style=""> 2199 <div class="card card-body"> 2200 <ul> 2201 <li> 2202 <a id="footer-nav-link-1-0" href=" 2203 /pages/goli-for-good">Goli® for Good</a> 2204 </li> 2205 <li> 2206 <a id="footer-nav-link-1-1" href=" 2207 /pages/about-us" x-html="about_us">About Us</a> 2208 </li> 2209 <li> 2210 <a id="footer-nav-link-1-2" href=" 2211 /pages/inside-the-gummy" x-html="inside_the_gummy">Inside the Gummy</a> 2212 </li> 2213 <li> 2214 <a id="footer-nav-link-1-2" href="/pages/science-advisory-board" >Science Advisory Board</a> 2215 </li> 2216 </ul> 2217 </div> 2218 </div> 2219 </li> 2220 <li><a id="footer-nav-link-2" href="/pages/faq" class="drop">FAQ</a></li> 2221 2222 <li> 2223 <a id="footer-nav-link-3" href=" 2224 #!" class="drop collapsed" data-bs-toggle="collapse" data-bs-target="#footer-nav-link-3-collapse" aria-expanded="false" aria-controls="#footer-nav-link-3-collapse"> 2225 Wholesale 2226 <i class="fas fa-chevron-down"></i> 2227 </a> 2228 <div id="footer-nav-link-3-collapse" class="collapse" style=""> 2229 <div class="card card-body"> 2230 <ul> 2231 <li> 2232 <a id="footer-nav-link-3-0" href="https://shopify.com/7001735241/account/">Wholesale Login</a> 2233 </li> 2234 <li> 2235 <a id="footer-nav-link-3-1" href="/pages/wholesale-signup-form">Wholesale Sign up</a> 2236 </li> 2237 </ul> 2238 </div> 2239 </div> 2240 </li> 2241 2242 <li><a id="footer-nav-link-4" href=" /account/" class="drop" x-html="manage_my_subscription">Manage my Subscription</a></li> 2243 <li><a id="footer-nav-link-5" href=" /pages/contact-us" class="drop" x-html="contact_us">Contact Us</a></li> 2244</ul> 2245 2246 </div> 2247 <div class="col-6 col-lg-3 d-lg-grid justify-end md:justify-center items-center flex"> 2248 <div class="flex justify-center"> 2249 <img 2250 src="//goli.com/cdn/shop/t/104/assets/goli_g_logo.svg?v=178516252654123499561778541904" 2251 class="img-fluid footer-goli-logo w-[7em]" 2252 alt="Goli® Nutrition Logo"> 2253 </div> 2254 <div class="logo-box d-none d-lg-block"> 2255 <img 2256 src="//goli.com/cdn/shop/t/104/assets/b-corp-logo.svg?v=87429542476690666171778541838" 2257 class="img-fluid footer-goli-logo second_logo" 2258 alt="B-Corp Logo"> 2259 </div> 2260 </div> 2261 <div class="col-6 d-lg-none"> 2262 <div class="logo-box second_logo"> 2263 <img 2264 src="//goli.com/cdn/shop/t/104/assets/b-corp-logo.svg?v=87429542476690666171778541838" 2265 class="img-fluid footer-goli-logo" 2266 alt="B-Corp Logo"> 2267 </div> 2268 </div> 2269 <div class="col-12"> 2270 <ul class="legal"> 2271 <li> 2272 <button 2273 type="button" 2274 class="btn btn-link" 2275 data-bs-toggle="modal" 2276 data-bs-target="#legal-modal" 2277 data-modal-name="Terms & Conditions" 2278 data-modal-url="/policies/terms-of-service" x-html="terms_and_conditions">Terms & Conditions</button> 2279 </li> 2280 <li> 2281 <button 2282 type="button" 2283 class="btn btn-link" 2284 data-bs-toggle="modal" 2285 data-bs-target="#legal-modal" 2286 data-modal-name="Privacy Policy" 2287 data-modal-url="/policies/privacy-policy" x-html="privacy_policy">Privacy Policy</button> 2288 </li> 2289 <li> 2290 <button 2291 type="button" 2292 class="btn btn-link" 2293 data-bs-toggle="modal" 2294 data-bs-target="#legal-modal" 2295 data-modal-name="Goli® Rewards Gift Cards" 2296 data-modal-url="/pages/goli-rewards" x-html="goli_rewards_gift_cards">Goli® Rewards Gift Cards</button> 2297 </li> 2298 <li> 2299 <a href="/pages/accessibility" x-html="digital_accessibility_statement">Digital Accessibility Statement</a> 2300 </li> 2301 2302 </ul> 2303 </div> 2304 <div class="col-12"> 2305 2306 <p class="disclaimer text-start border border-white" x-html="disclaimer"> 2307 <sup>â </sup>These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure or prevent any disease. The views and nutritional advice expressed by Goli<sup>®</sup> Nutrition are not intended for the purpose of providing medical advice. Please always consult your health care provider if you are taking any medications or have any medical conditions. Individual results may vary. 2308 </p> 2309 <p class="disclaimer text-start" x-html="disclaimer2"> 2310 <sup>â¡</sup>Vitamins B6, B9 & B12 help convert food into cellular energy<sup>â </sup><br> <sup>â</sup>Source: SPINS MULO (powered by IRI) 52 weeks ending 01/01/2023. 2311 </p> 2312 <ul class="legal p-0 text-start d-flex flex-column mb-0"> 2313 2314 </ul> 2315 2316 <p class="disclaimer"> 2317 © 2318 2026 Goli Nutrition Inc. All Rights Reserved. 2319 </p> 2320 </div> 2321 </div> 2322 </div> 2323</footer> 2324 2325 2326<div 2327 id="legal-modal" 2328 class="modal fade z-[3000]" 2329 tabindex="-1" 2330 aria-labelledby="legal-modal-label" 2331 aria-hidden="true"> 2332 <div class="modal-dialog modal-dialog-scrollable modal-lg"> 2333 <div class="modal-content"> 2334 <div class="modal-header"> 2335 <h5 id="legal-modal-label" class="modal-title"></h5> 2336 <button 2337 type="button" 2338 class="btn-close text-black" 2339 data-bs-dismiss="modal" 2340 aria-label="Close">x</button> 2341 </div> 2342 <div class="modal-body"></div> 2343 </div> 2344 </div> 2345</div> 2346 2347
2348<script> 2349 $('#legal-modal').on('show.bs.modal', function(event) { 2350 let modal = $(this); 2351 let trigger = $(event.relatedTarget); 2352 let modal_name = trigger.data('modal-name'); 2353 2354 let modal_content_url = trigger.data('modal-url') + ' .shopify-policy__container'; 2355 modal.find('.modal-body').empty().load(modal_content_url, function() { 2356 $('.shopify-policy__title').html('<h1>' + modal_name + '</h1>'); 2357 }); 2358 }); 2359 2360 (function () { 2361 function showMessage(element, type, message) { 2362 var messageElement = $('<div class="newsletter-message ' + type + '">' + message + '</div>'); 2363 element.append(messageElement); 2364 setTimeout(function () { 2365 messageElement.fadeOut(function () { 2366 messageElement.remove(); 2367 }); 2368 }, 5000); 2369 } 2370 2371 function subscribeNewsletter(form, email) { 2372 $.ajax({ 2373 type: 'POST', 2374 url: '/contact#newsletter-form-footer', 2375 data: { 2376 form_type: 'customer', 2377 utf8: 'â', 2378 contact: { 2379 email: email, 2380 tags: 'newsletter' 2381 } 2382 }, 2383 success: function () { 2384 console.log('Successfully subscribed to newsletter'); 2385 showMessage(form, 'success', 'Successfully subscribed to the newsletter!'); 2386 }, 2387 error: function () { 2388 console.log('Error subscribing to newsletter'); 2389 showMessage(form, 'error', 'There was an error subscribing to the newsletter. Please try again.'); 2390 } 2391 }); 2392 } 2393 2394 $(document).ready(function () { 2395 $('.newsletter-subscribe-form').on('submit', function (e) { 2396 e.preventDefault(); 2397 2398 var email = $(this).find('[name=email]').val(); 2399 2400 subscribeNewsletter($(this), email); 2401 }); 2402 }); 2403 })(); 2404 2405</script>
2405 2406 2407 2408 2409</div> 2410 </div> 2411
2411<script> 2412window.ALBSS = { 2413 event_key: 'f16b53e4-3027-43be-b393-3cf20457ecc6' 2414}; 2415 2416// Handle cart=open URL parameter 2417document.addEventListener('DOMContentLoaded', function() { 2418 const urlParams = new URLSearchParams(window.location.search); 2419 if (urlParams.get('cart') === 'open') { 2420 // Wait for Alpine.js to be ready 2421 if (typeof Alpine !== 'undefined' && Alpine.store && Alpine.store('w_cart')) { 2422 Alpine.store('w_cart').is_open = true; 2423 } else { 2424 // Retry after a short delay if Alpine isn't ready yet 2425 setTimeout(function() { 2426 if (typeof Alpine !== 'undefined' && Alpine.store && Alpine.store('w_cart')) { 2427 Alpine.store('w_cart').is_open = true; 2428 } 2429 }, 100); 2430 } 2431 // Clean the URL by removing the cart parameter 2432 const url = new URL(window.location); 2433 url.searchParams.delete('cart'); 2434 window.history.replaceState({}, '', url.pathname); 2435 } 2436}); 2437</script>
2437 2438
2438<script src="https://c.albss.com/p/l/loader.iife.js"></script>
2438 2439 2440
2440<script type="text/javascript"> _linkedin_partner_id = "6889330"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script>
2440<script type="text/javascript"> (function(l) { if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]} var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script>
2440 <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=6889330&fmt=gif" /> </noscript> 2441
2441<script src="https://static.rechargecdn.com/assets/storefront/recharge-client-1.16.3.min.js"></script>
2441 2442 2443 2444<div id="shopify-block-AcXUrTmxlUzVabmRtS__10248244882032696684" class="shopify-block shopify-app-block"> 2445 2446 2447 2448</div>
2448<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
2448 2449</body> 2450</html> 2451
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.