1<!doctype html> 2<html class="no-js default-layout" lang="en"> 3 <head>
4<script> 5 (function () { 6 try { 7 var HAS_CUSTOMER = false; 8 // Public Customer Account API client_id, injected at build from OAUTH_CLIENT_ID by the 9 // webpack CopyPlugin transform (see webpack.config.js) so it can't drift from the SPA's 10 // value (src/standalone/auth.js). Empty when unset â probe fails closed (guest). 11 var CLIENT_ID = '88fb8b16-5d6f-4d86-bb99-763c54a53eaf'; 12 // Only present when a logout link is actually rendered; guard against a blank 13 // routes.account_logout_url (which would otherwise become "<origin>/null"). 14 var LOGOUT_URL = "\/account\/logout"; 15 var CALLBACK_PATH = '/pages/silent-sso-callback'; 16 // Same scopes the SPA already consented for this client, so prompt=none returns a 17 // code with no consent UI when a session is live. 18 var SCOPES = 'openid email customer-account-api:full'; 19 var GUARD_KEY = 'trade_sso_guard'; 20 var STATE_KEY = 'trade_sso_probe_state'; 21 var RETURN_KEY = 'trade_sso_probe_return'; 22 var MAX_PROBES = 3; 23 var COOLDOWN_MS = 60000; 24 // Reset the per-identity probe count after a long quiet period so a member stranded by 25 // transient failures (network / discovery hiccup) recovers without needing an SPA visit. 26 var RESET_AFTER_MS = 86400000; // 24h 27 28 var rawPath = window.location.pathname; 29 // Optional leading Markets locale/country segment (e.g. /en-ca) stripped, so route 30 // matching + callback detection hold under localized URLs without misclassifying a 31 // real two-letter page handle that isn't a configured locale. 32 var strippedPath = rawPath.replace(/^\/[a-z]{2}(-[a-z]{2})?(?=\/)/i, ''); 33 34 var base64Url = function (bytes) { 35 var s = ''; 36 for (var i = 0; i < bytes.length; i++) s += String.fromCharCode(bytes[i]); 37 return btoa(s).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); 38 }; 39 var randomToken = function () { 40 var arr = new Uint8Array(32); 41 crypto.getRandomValues(arr); 42 return base64Url(arr); 43 }; 44 // Cheap non-crypto hash (djb2) of the identity value â used only to detect when the 45 // cookie changes (a fresh login), so we never store the raw token in localStorage. 46 var cheapHash = function (str) { 47 var h = 5381; 48 for (var i = 0; i < str.length; i++) h = ((h << 5) + h + str.charCodeAt(i)) | 0; 49 return String(h >>> 0); 50 }; 51 var safeReturn = function (p) { 52 // return_to / client redirects must be a relative same-origin path. 53 return p && p.charAt(0) === '/' && p.charAt(1) !== '/' ? p : '/'; 54 }; 55 var LOGGING_OUT_COOKIE = 'trade_logging_out'; 56 var clearIdentityCookie = function () { 57 // Must match the SPA's write flags (src/js/utils/identity-cookie.ts) or the delete 58 // no-ops; on preview/myshopify hosts where the cookie was never set it's harmless. 59 document.cookie = 60 'trade_identity=; Domain=.drinktrade.com; Path=/; Max-Age=0; Secure; SameSite=Lax'; 61 }; 62 var hasLoggingOutCookie = function () { 63 var parts = document.cookie.split(';'); 64 for (var i = 0; i < parts.length; i++) { 65 var c = parts[i].replace(/^\s+/, ''); 66 if (c.indexOf(LOGGING_OUT_COOKIE + '=') === 0) { 67 return c.length > LOGGING_OUT_COOKIE.length + 1; 68 } 69 } 70 return false; 71 }; 72 var clearLoggingOutCookie = function () { 73 document.cookie = 74 LOGGING_OUT_COOKIE + 75 '=; Domain=.drinktrade.com; Path=/; Max-Age=0; Secure; SameSite=Lax'; 76 }; 77 var getIdentity = function () { 78 // Split on ';' and trim â the cookie separator isn't guaranteed to include a space. 79 var parts = document.cookie.split(';'); 80 for (var i = 0; i < parts.length; i++) { 81 var c = parts[i].replace(/^\s+/, ''); 82 if (c.indexOf('trade_identity=') === 0) { 83 var v = c.slice('trade_identity='.length); 84 return v || null; 85 } 86 } 87 return null; 88 }; 89 90 // ---- SPA logout handoff: finish the Online Store session ----------- 91 // Dashboard logout already ended the OIDC session and set this cookie. 92 // `/account/logout` does not clear Liquid `customer` under New Customer 93 // Accounts, so follow the real logout URL (Shopify-hosted when customer 94 // accounts are enabled) instead of leaving them signed in on the header. 95 // Clear the flag first so the post-logout landing on origin cannot loop. 96 if (hasLoggingOutCookie()) { 97 clearLoggingOutCookie(); 98 clearIdentityCookie(); 99 if (HAS_CUSTOMER && LOGOUT_URL) { 100 try { 101 document.documentElement.style.visibility = 'hidden'; 102 window.location.replace(new URL(LOGOUT_URL, window.location.origin).href); 103 } catch (e) {} 104 return; 105 }
106 // Guest already â still abort the probe callback. A leftover ?code 107 // would otherwise look like "session live" and re-establish the 108 // Online Store session we just tore down. 109 if (rawPath === CALLBACK_PATH || strippedPath === CALLBACK_PATH) { 110 window.location.replace('/'); 111 return; 112 } 113 } 114 115 // ---- Storefront logout teardown (only where a logout link exists) --- 116 if (HAS_CUSTOMER && LOGOUT_URL) { 117 var logoutHref = new URL(LOGOUT_URL, window.location.origin).href; 118 document.addEventListener( 119 'click', 120 function (event) { 121 try { 122 var target = event.target; 123 var anchor = target && target.closest ? target.closest('a') : null; 124 if (!anchor || anchor.href !== logoutHref) return; 125 clearIdentityCookie(); 126 } catch (e) {} 127 }, 128 true 129 ); 130 } 131 132 // ---- Callback: the prompt=none probe returns here ------------------- 133 // redirect_uri = origin + CALLBACK_PATH. Runs regardless of `customer` â the probe 134 // proves session liveness but does not itself establish the Online Store session, so 135 // `customer` is usually nil here, but if it is already populated we still return the 136 // member to where they were rather than stranding them on this blank page. 137 if (rawPath === CALLBACK_PATH || strippedPath === CALLBACK_PATH) { 138 var params = new URLSearchParams(window.location.search); 139 var code = params.get('code'); 140 var cbError = params.get('error'); 141 var returnedState = params.get('state'); 142 var expectedState = null; 143 var ret = '/'; 144 try { 145 expectedState = sessionStorage.getItem(STATE_KEY); 146 ret = sessionStorage.getItem(RETURN_KEY) || '/'; 147 sessionStorage.removeItem(STATE_KEY); 148 sessionStorage.removeItem(RETURN_KEY); 149 } catch (e) {} 150 ret = safeReturn(ret); 151 152 // CSRF: Shopify echoes our state. A missing/mismatched state means this is not our 153 // probe response â bail to a safe page without touching cookies or markers. 154 if (!returnedState || !expectedState || returnedState !== expectedState) { 155 window.location.replace(ret); 156 return; 157 } 158 if (code && !cbError) { 159 // Session confirmed live. If the Online Store session is somehow already present, 160 // just return; otherwise the now-guaranteed-silent sign-in establishes it. 161 window.location.replace( 162 HAS_CUSTOMER 163 ? ret
164 : '/customer_authentication/login?return_to=' + encodeURIComponent(ret) 165 ); 166 return; 167 } 168 // Never show a login screen. Only a definitive "no session" â login_required / 169 // interaction_required, matching auth.js â means the cookie is stale, so clear it and 170 // stop re-probing until the SPA rewrites it. Other errors (consent/config/transient) 171 // leave the cookie intact so a real session isn't dropped; the guard bounds retries. A 172 // present `customer` means the cookie is valid regardless, so never clear it then. 173 if ( 174 !HAS_CUSTOMER && 175 (cbError === 'login_required' || cbError === 'interaction_required') 176 ) { 177 clearIdentityCookie(); 178 } 179 window.location.replace(ret); 180 return; 181 } 182 183 // Logged in already â nothing to probe (only the logout listener above applies). 184 if (HAS_CUSTOMER) return; 185 186 // Fail closed when no client_id was injected at build (OAUTH_CLIENT_ID unset â empty, or 187 // the un-substituted placeholder leaked): the probe can't succeed, so don't redirect to 188 // the authorize endpoint (which would surface an OAuth error and needlessly hide the 189 // page). The callback handler above still runs. A real client_id is a UUID, never '_â¦'. 190 if (!CLIENT_ID || CLIENT_ID.charAt(0) === '_') return; 191 192 // Feature-detect the APIs the async probe needs BEFORE hiding the page, so an 193 // unsupported browser simply renders guest instead of staying hidden until the safety 194 // timeout when a later `fetch`/`crypto.subtle`/`TextEncoder` call throws post-hide. 195 if ( 196 typeof Promise === 'undefined' || 197 typeof fetch === 'undefined' || 198 typeof TextEncoder === 'undefined' || 199 typeof URL === 'undefined' || 200 !window.crypto || 201 !crypto.subtle || 202 !crypto.subtle.digest || 203 !crypto.getRandomValues 204 ) { 205 return; 206 } 207 208 // ---- Eligibility to start a probe ----------------------------------- 209 // Never probe on Shopify's own auth/checkout/cart routes. `/customer_authentication` 210 // is the sign-in route the callback hands off to; a full-navigation redirect must 211 // never interrupt checkout/cart. Segment-boundary match (not bare prefix) so handles 212 // like `/checkout-help` still bootstrap; both `/checkout` and `/checkouts` guarded 213 // (live checkout is served under `/checkouts/<token>`). 214 var isGuardedRoute = function (p) { 215 return ( 216 p === '/customer_authentication' || 217 p.indexOf('/customer_authentication/') === 0 || 218 p === '/checkout' || 219 p.indexOf('/checkout/') === 0 || 220 p === '/checkouts' || 221 p.indexOf('/checkouts/') === 0 || 222 p === '/cart' || 223 p.indexOf('/cart/') === 0 224 ); 225 }; 226 if (isGuardedRoute(rawPath) || isGuardedRoute(strippedPath)) return; 227 228 var identity = getIdentity(); 229 if (!identity) return; 230 231 // Identity-keyed loop guard. A fresh login (new cookie value) resets the guard so it 232 // probes immediately; the same identity is bounded to MAX_PROBES total, spaced 233 // COOLDOWN_MS apart â so a non-persisting session (ITP) gets a few background 234 // redirects and then stops, rather than looping forever or being stranded by a stale 235 // timer. Not reset when `customer` populates. 236 var idHash = cheapHash(identity); 237 var now = Date.now(); 238 var guard = null; 239 try { 240 guard = JSON.parse(localStorage.getItem(GUARD_KEY) || 'null'); 241 } catch (e) {} 242 if (!guard || guard.id !== idHash) { 243 guard = { id: idHash, count: 0, until: 0 }; 244 } else if (now - (guard.until - COOLDOWN_MS) > RESET_AFTER_MS) { 245 // Same identity, but the last probe was long ago â reset the count so a member 246 // stranded by earlier transient failures can recover without an SPA visit. 247 guard.count = 0; 248 } 249 if (guard.count >= MAX_PROBES) return; 250 if (now < guard.until) return; 251 252 // Preserve the hash fragment alongside path + query so anchor / hash-route deep-links 253 // (e.g. /pages/faq#returns) survive the round trip. 254 var returnTo = rawPath + window.location.search + window.location.hash; 255 var state = randomToken(); 256 var codeVerifier = randomToken(); 257 258 // Commit the guard + probe state up front so a redirect that never returns can't loop. 259 guard.count += 1; 260 guard.until = now + COOLDOWN_MS; 261 try { 262 localStorage.setItem(GUARD_KEY, JSON.stringify(guard)); 263 sessionStorage.setItem(STATE_KEY, state); 264 sessionStorage.setItem(RETURN_KEY, returnTo); 265 } catch (e) { 266 return; 267 } 268 269 // Anti-flash: the redirect below is async (discovery + PKCE digest), so without this 270 // the guest page would paint and head analytics fire before it. Hide now; reveal if
271 // the probe can't complete so a failure/slow-network never strands a blank page. 272 var docEl = document.documentElement; 273 var revealed = false; 274 var reveal = function () { 275 if (revealed) return; 276 revealed = true; 277 try { 278 docEl.style.visibility = ''; 279 } catch (e) {} 280 }; 281 try { 282 docEl.style.visibility = 'hidden'; 283 } catch (e) {} 284 var revealTimer = setTimeout(reveal, 4000); 285 286 Promise.all([ 287 // Discovery is same-origin on the storefront domain; resolves the authorize 288 // endpoint without hardcoding a shop-specific URL (as the SPA does). 289 fetch(window.location.origin + '/.well-known/openid-configuration').then(function (r) { 290 return r.json(); 291 }), 292 // PKCE S256. Public clients must send a code_challenge on /authorize. We never 293 // exchange the code (only its presence signals a live session), so the verifier 294 // is discarded. 295 crypto.subtle 296 .digest('SHA-256', new TextEncoder().encode(codeVerifier)) 297 .then(function (digest) { 298 return base64Url(new Uint8Array(digest)); 299 }), 300 ]) 301 .then(function (results) { 302 var config = results[0]; 303 var codeChallenge = results[1]; 304 if (!config || !config.authorization_endpoint) { 305 clearTimeout(revealTimer); 306 reveal(); 307 return; 308 } 309 var url = new URL(config.authorization_endpoint); 310 url.searchParams.set('client_id', CLIENT_ID); 311 url.searchParams.set('response_type', 'code'); 312 url.searchParams.set('redirect_uri', window.location.origin + CALLBACK_PATH); 313 url.searchParams.set('scope', SCOPES); 314 url.searchParams.set('state', state); 315 // OIDC nonce: required alongside the `openid` scope. We never read the id_token, 316 // so the value only needs to be present, not verified. 317 url.searchParams.set('nonce', randomToken()); 318 url.searchParams.set('code_challenge', codeChallenge); 319 url.searchParams.set('code_challenge_method', 'S256'); 320 // prompt=none: live session â ?code, no session â ?error=login_required. Never UI. 321 url.searchParams.set('prompt', 'none'); 322 clearTimeout(revealTimer); 323 window.location.replace(url.toString()); 324 }) 325 .catch(function () { 326 // Discovery/crypto failed â reveal the page and render guest; the guard stays set 327 // so we don't hammer. 328 clearTimeout(revealTimer); 329 reveal(); 330 }); 331 } catch (e) {} 332 })(); 333 </script>
333 334 <!-- Start of Shoplift scripts --> 335 <!-- 2026-09-23T14:54:56.2512818Z --> 336<style>.shoplift-hide { opacity: 0 !important; }</style> 337<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
338<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-09-24T18:15:04.4855897Z */(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
3387|;\\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}
338const 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",Ve="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 Oe(a){let e=a.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4;)e+="=";const t=atob(e),i=Uint8Array.from(t,o=>
338o.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;
338const 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)}
338else 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 O=R.querySelector(A),V=R.querySelector(x);
338if(O&&V){const L=h[O.value];if(L!==void 0){if(L===0)V.style.display!=="none"&&(V.style.display="none");else if(V.style.display==="none"&&(V.style.display=""),V.textContent){const Q=V.textContent.match(/[\d.]+%/)?.[0];Q&&Q!==`${L}%`&&$(V,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 O of Array.from(R.shadowRoot.querySelectorAll("li")))if(O.textContent?.includes("Save")){const V=O;if(P===0)V.style.display!=="none"&&(V.style.display="none");else{V.style.display==="none"&&(V.style.display="");const L=O.textContent.match(/[\d.]+%/)?.[0];L&&L!==`${P}%`&&$(O,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 O=h[R.value];O!==void 0&&(A=O)}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 O of R){const V=P.querySelector(O.selector)||P.querySelector(`[part~="${O.selector}"]`);V?.textContent&&!V.textContent.includes(g.formattedDiscounted)&&$(V,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?.hypothesis;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];
338if(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{}}document.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);
338urlParams=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":true,"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=>
338S.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()}
338async 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 Oe(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=Ve,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);
338const 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
338ategoryFromExistingTests(),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")}
338),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
338ing 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;
338if(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=>
338i.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()=>
338{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}`};
338this.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
338ndToGa??!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){const i=decodeURIComponent(window.location.search.substring(1)).split("&");for(let s=0;s<i.length;s++){const r=i[s].split("=");if(r[0]===e)return r[1]||null}return 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 )|
338sy(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")}
338,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",
338y):(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}
338const 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
338CookieState(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
338andex\.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
338pera\.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)}
338,{"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
338akao|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
338andex\.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
338: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("drinktrade.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",true,false,false,{"sendEvents":true,"mode":"gtag"},false,false,1000,[{"id":"01a08ca0-566c-7478-929c-24c2842d760d","startAt":"2026-09-10T18:41:53.257928Z","requiresCountry":false,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-09-10T18:41:53.266299Z"},{"status":"paused","createdAt":"2026-09-10T18:46:31.766055Z"},{"status":"active","createdAt":"2026-09-14T17:10:27.39967Z"}
338],"hypotheses":[{"visitorCount":289,"trafficPercentage":0.41762381148205674,"title":"Control","domSelectors":[],"id":"01a0878e-fbad-708b-b0f3-718b27f6d04d","type":"collectionList","themeId":188794601791,"affix":"","isControl":true},{"visitorCount":402,"trafficPercentage":0.5823761885179433,"title":"Bag imagery","domSelectors":[],"id":"01a0878f-3b67-766b-a0bf-21d58eb19981","type":"collectionList","themeId":188794601791,"affix":"sl-500C3574","isControl":false}],"targetAudiences":[],"title":"Collection list imagery test"},{"id":"01a0b12d-5563-7720-a762-c8f60597a71c","startAt":"2026-09-17T21:02:13.34554Z","requiresCountry":false,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-09-17T21:02:13.35287Z"}],"hypotheses":[{"visitorCount":12632,"trafficPercentage":0.5063323193469693,"title":"Original","domSelectors":[],"id":"01a0b10d-70cb-76bb-8dd3-3af1a78791b1","type":"product","themeId":188794601791,"affix":"","isControl":true},{"visitorCount":12317,"trafficPercentage":0.4936676806530306,"title":"Buy Once default","domSelectors":[],"id":"01a0b10d-9a9f-75be-ba51-cd4755ab2697","type":"product","themeId":188794601791,"affix":"discovery-pdp-test","isControl":false}],"targetAudiences":[],"title":"DT on PDP: Buy Once first"},{"id":"01a0c58d-9949-7492-a7e6-8b77a8a42113","startAt":"2026-09-21T19:59:46.480316Z","requiresCountry":false,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-09-21T19:59:46.565843Z"}],"hypotheses":[{"visitorCount":2981,"trafficPercentage":0.48821863950405475,"title":"Original","domSelectors":[],"id":"01a0c58c-29c3-76b3-9d4b-3812251beb36","type":"index","themeId":188794601791,"affix":"","isControl":true},{"visitorCount":3125,"trafficPercentage":0.5117813604959452,"title":"Discovery Trial dots","domSelectors":[],"id":"01a0c58c-29c4-7390-92cd-8170e53f81ba","type":"index","themeId":188794601791,"affix":"sl-C312AEC8","isControl":false}],"targetAudiences":[],"title":"HP Discovery Trial - Round 3 (50/50 split)"},{"id":"01a0cf16-5ea7-786d-81a3-71a4a01e50cc","startAt":"2026-09-23T16:25:44.868933Z","requiresCountry":false,"requiresRegion":false,"bayesianRevision":5,"device":"all","status":"active","visitorOption":"all","ignoreTestViewParameterEnforcement":false,"statusHistory":[{"status":"active","createdAt":"2026-09-23T16:25:44.878928Z"}],"hypotheses":[{"visitorCount":338,"trafficPercentage":0.48805803815826343,"title":"Control: SEP CTAs","domSelectors":[],"id":"01a0ceda-591b-7eb3-9c1d-a5ea7af39804","type":"landing","themeId":188794601791,"affix":"espresso-hub","isControl":true},{"visitorCount":355,"trafficPercentage":0.5119419618417366,"title":"Direct to Quiz CTAs","domSelectors":[],"id":"01a0ceda-d9e5-722d-b53b-69a19d635ebe","type":"landing","themeId":188794601791,"affix":"sl-BE672B3A","isControl":false}],"targetAudiences":[],"title":"Espresso Hub CTA testing"}],[{"id":"01a05d59-d178-7717-a747-daafcd2fe4dd","bayesianRevision":5,"status":"paused","hypotheses":[{"id":"01a05d4d-dc13-7548-b5f5-f3a6372c6739","type":"product","themeId":188794601791,"affix":"","isControl":true,"redirectPath":null},{"id":"01a05d4f-7a77-70c1-a954-e55af42c597c","type":"product","themeId":188794601791,"affix":"discovery-pdp-test","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"59c6fb68-9c9c-4286-9702-027e0c21d0a0","bayesianRevision":2,"status":"cancelled","hypotheses":[{"id":"e624d3c6-9e67-434a-88a1-8a1c6447bc83","type":"theme","themeId":169056141631,"affix":"","isControl":true,"redirectPath":null},{"id":"29268bd2-9d1f-49d0-ab3a-56c357e027d3","type":"theme","themeId":168875655487,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"7e6939df-4b3f-45c0-921e-0c737745a7d4","bayesianRevision":3,"status":"cancelled","hypotheses":[{"id":"4c29d08f-a91f-4f18-92fc-bbb20889362d","type":"theme","themeId":171464360255,"affix":"","isControl":true,"redirectPath":null},{"id":"67837aa2-6e3e-4388-8119-4e289fee597f","type":"theme","themeId":171372183871,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"c693f0e7-4001-4fc3-8bcf-a11d1b669e26","bayesianRevision":3,"status":"cancelled","hypotheses":[{"id":"b78addd6-431d-4713-8b43-eda809675adf","type":"theme","themeId":171648876863,"affix":"","isControl":true,"redirectPath":null},{"id":"2d8d912f-02db-4cee-90eb-0d0730a6a7ff","type":"theme","themeId":171590418751,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"369e0da9-9271-4387-9599-4c10bd826578","bayesianRevision":3,"status":"cancelled","hypotheses":[{"id":"fd8ebfbf-ebbd-4601-b1be-228590b9963e","type":"theme","themeId":171147362623,"affix":"","isControl":true,"redirectPath":null},{"id":"e33bf9d3-9d4e-4729-b921-57d2ecf5e488","type":"theme","themeId":171019698495,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false},{"id":"f137a724-1934-4735-80e7-e3c42accc342","bayesianRevision":3,"status":"cancelled","hypotheses":[{"id":"329b043f-7ed0-450e-91ad-81cfe7b49d9d","type":"theme","themeId":174099300671,"affix":"","isControl":true,"redirectPath":null},{"id":"606858a4-2ead-471d-b16f-67db87b56b40","type":"theme","themeId":172951503167,"affix":"","isControl":false,"redirectPath":null}],"ignoreTestViewParameterEnforcement":false}
338],null,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 O=c[x.value];if(O!==void 0){const V=R.textContent.match(/[\d.]+%/)?.[0];V&&V!==`${O}%`&&$(R,L=>N(L,O))}}}}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 O of v){const V=R.querySelector(`[part~="${O.selector}"]`);V?.textContent&&!V.textContent.includes(A)&&$(V,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,O=>N(O,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: "discovery-trial-quiz", type: "page" }, "main", 188794601791, false)</script>
338 339 <!-- End of Shoplift scripts --> 340 <!-- Tie Loader scripts --> 341 <!-- Revenue Roll tracker (Deferred with Firefox block, using your GTM snippet) -->
342<script> 343window.addEventListener('load', function () { 344 // Detect Firefox (incl. iOS Firefox) and stop early 345 const IS_FIREFOX = (() => { 346 try { 347 const ua = navigator.userAgent || ""; 348 return /Firefox|FxiOS/i.test(ua) && !/Seamonkey/i.test(ua); 349 } catch { return false; } 350 })(); 351 if (IS_FIREFOX) { 352 console.info('[RevenueRoll] GTM blocked on Firefox browser.'); 353 return; 354 } 355 356 // Defer actual loader 357 const loadRevenueRoll = function () { 358 try { 359 !function(){"use strict";function l(e){for(var t=e,r=0,n=document.cookie.split(";");r<n.length;r++){var o=n[r].split("=");if(o[0].trim()===t)return o[1]}}function s(e){return localStorage.getItem(e)}function u(e){return window[e]}function A(e,t){e=document.querySelector(e);return t?null==e?void 0:e.getAttribute(t):null==e?void 0:e.textContent}var e=window,t=document,r="script",n="dataLayer",o="https://ss3.zone.drinktrade.com",a="",i="88x2wufxrvmc",c="3=CglLNSwrWCc7Lk4iKzImURVQRFxJQBEZXgkEGxYNAQUCCRNcGwkY",g="cookie",v="_shopify_y",E="",d=!1;try{var d=!!g&&(m=navigator.userAgent,!!(m=new RegExp("Version/([0-9._]+)(.*Mobile)?.*Safari.*").exec(m)))&&16.4<=parseFloat(m[1]),f="stapeUserId"===g,I=d&&!f?function(e,t,r){void 0===t&&(t="");var n={cookie:l,localStorage:s,jsVariable:u,cssSelector:A},t=Array.isArray(t)?t:[t];if(e&&n[e])for(var o=n[e],a=0,i=t;a<i.length;a++){var c=i[a],c=r?o(c,r):o(c);if(c)return c}else console.warn("invalid uid source",e)}(g,v,E):void 0;d=d&&(!!I||f)}catch(e){console.error(e)}var m=e,g=(m[n]=m[n]||[],m[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t.getElementsByTagName(r)[0]),v=I?"&bi="+encodeURIComponent(I):"",E=t.createElement(r),f=(d&&(i=8<i.length?i.replace(/([a-z]{8}$)/,"kp$1"):"kp"+i),!d&&a?a:o);E.async=!0,E.src=f+"/"+i+".js?"+c+v,null!=(e=g.parentNode)&&e.insertBefore(E,g)}(); 360 } catch (err) { 361 console.error('[RevenueRoll] Error loading tracker:', err); 362 } 363 }; 364 365 if ('requestIdleCallback' in window) { 366 requestIdleCallback(loadRevenueRoll); 367 } else { 368 setTimeout(loadRevenueRoll, 500); 369 } 370}); 371</script>
371 372 <!-- End of Tie Loader --> 373 <!-- DataLayer Init --> 374
374<script> 375 window.dataLayer = window.dataLayer || []; 376 377 </script>
377 378 <!-- End DataLayer Init --> 379 380 <meta charset="utf-8"> 381 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 382 <meta name="viewport" content="width=device-width,initial-scale=1"> 383 <meta name="theme-color" content=""> 384 <meta name="google-site-verification" content="qqGskHLeSMTrx1ZT1GM1KhmNmO5DfiPBCBnWY2iPhKk"><link rel="manifest" href="//www.drinktrade.com/cdn/shop/t/2106/assets/manifest.json?v=43527963929861335821789670822"> 385<link rel="apple-touch-icon" sizes="192x192" href="//www.drinktrade.com/cdn/shop/t/2106/assets/icon-192x192.png?v=35286948902013533561789675683"> 386<link rel="icon" type="image/png" sizes="192x192" href="//www.drinktrade.com/cdn/shop/t/2106/assets/icon-192x192.png?v=35286948902013533561789675683"> 387<link rel="icon" type="image/png" sizes="512x512" href="//www.drinktrade.com/cdn/shop/t/2106/assets/icon-512x512.png?v=152962058892237866261789675683"> 388 389
389<script> 390 if ('serviceWorker' in navigator) { 391 window.__swReady = navigator.serviceWorker.register('//www.drinktrade.com/cdn/shop/t/2106/assets/sw.js?v=69841308296326720821789670872') 392 .catch(function(err) { 393 console.error('Service worker registration failed:', err); 394 return null; 395 }); 396 } 397 398</script>
398 399 400 401 402 403 <link rel="canonical" href="https://www.drinktrade.com/pages/find-my-match"><link rel="icon" type="image/png" href="//www.drinktrade.com/cdn/shop/files/Group_1000002521.svg?crop=center&height=32&v=1765997605&width=32"><title>Coffee Subscription Quiz | Find Your Perfect Coffee | Trade Coffee</title> 404 405 406 407 408 <meta name="description" content="Take our quick coffee quiz and discover coffees tailored to your tastes. Explore 500+ coffees from 55+ top roasters."> 409 410 411 412 413 414<meta property="og:site_name" content="Trade Coffee"> 415<meta property="og:url" content="https://www.drinktrade.com/pages/find-my-match"> 416<meta property="og:title" content="Coffee Subscription Quiz | Find Your Perfect Coffee | Trade Coffee"> 417<meta property="og:type" content="website"> 418<meta property="og:description" content="Take our quick coffee quiz and discover coffees tailored to your tastes. Explore 500+ coffees from 55+ top roasters."><meta property="og:image" content="http://www.drinktrade.com/cdn/shop/files/opengraph_v2_6dd08d1b-d999-4197-8943-0eab57c4f373.png?v=1765997753&width=1200"> 419 <meta property="og:image:secure_url" content="https://www.drinktrade.com/cdn/shop/files/opengraph_v2_6dd08d1b-d999-4197-8943-0eab57c4f373.png?v=1765997753&width=1200"> 420 <meta property="og:image:width" content="1200"> 421 <meta property="og:image:height" content="630"><meta name="twitter:card" content="summary_large_image"> 422<meta name="twitter:title" content="Coffee Subscription Quiz | Find Your Perfect Coffee | Trade Coffee"> 423<meta name="twitter:description" content="Take our quick coffee quiz and discover coffees tailored to your tastes. Explore 500+ coffees from 55+ top roasters."> 424 425 426 427<link href="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.theme.css?v=73465063649974366811789670858" rel="stylesheet" type="text/css" media="all" /> 428 429 430 431 <link rel="preload" as="style" href="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.page.css?v=138873324218916298831789670837"> 432 <link href="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.page.css?v=138873324218916298831789670837" rel="stylesheet" type="text/css" media="all" /> 433 434 435 436 437 438 439<link rel="preconnect" href="https://fonts.googleapis.com"> 440<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 441 442
443<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 443
443
444<script type="importmap"> 445 { 446 "imports": { 447 "preact": "https://esm.sh/[email protected]", 448 "preact/": "https://esm.sh/[email protected]/", 449 "@preact/signals": "https://esm.sh/@preact/[email protected]?external=preact", 450 "htm/preact": "https://esm.sh/[email protected]/preact?external=preact", 451 "confetti": "//www.drinktrade.com/cdn/shop/t/2106/assets/confetti.js?v=62555554771269435241789670858", 452 "analytics-values": "//www.drinktrade.com/cdn/shop/t/2106/assets/analytics-values.js?v=84196337055756081941789670828", 453 "cart-tracking-attributes": "//www.drinktrade.com/cdn/shop/t/2106/assets/cart-tracking-attributes.js?v=122560085255391323171789670855", 454 "checkout-initiated": "//www.drinktrade.com/cdn/shop/t/2106/assets/checkout-initiated.js?v=136201386575160523771789670856", 455 "onboarding-accessibility": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-accessibility.js?v=110396494592110040441789670859", 456 "onboarding-analytics": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-analytics.js?v=67068325863168937081789670860", 457 "onboarding-banner-utils": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-banner-utils.js?v=4675481951066418891789670860", 458 "onboarding-brew-methods": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-brew-methods.js?v=93397223755103467821789670861", 459 "onboarding-checkout": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-checkout.js?v=73788576528942969761789670861", 460 "onboarding-debug-logger": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-debug-logger.js?v=107252028944250548511789670862", 461 "onboarding-discounts": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-discounts.js?v=147091950794516354491789670863", 462 "onboarding-dispatch-event": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-dispatch-event.js?v=12715430021551169071789670863", 463 "onboarding-dynamic-banner": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-dynamic-banner.js?v=66569294696370595461789670864", 464 "onboarding-icons": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-icons.js?v=138014272529580260571789670859", 465 "onboarding-next-step-resolver": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-next-step-resolver.js?v=181905566838763655391789670859", 466 "onboarding-pricing-utils": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-pricing-utils.js?v=177551858183869633051789670860", 467 "onboarding-progress-bar": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-progress-bar.js?v=42016083795943363171789670861", 468 "onboarding-step-constants": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-step-constants.js?v=33202668777386187341789670861", 469 "onboarding-step-global": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-step-global.js?v=167296861987662849181789670862", 470 "onboarding-step-preact-container": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-step-preact-container.js?v=149308841925072108111789670862", 471 "onboarding-step-tree": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-step-tree.js?v=105285695170254491851789670863", 472 "onboarding-storage-utils": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-storage-utils.js?v=114720078215700313491789670864", 473 "onboarding-use-pricing": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-use-pricing.js?v=117985790782197820581789670864", 474 "onboarding-use-required-step-data": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-use-required-step-data.js?v=100013281260579323051789670859", 475 "onboarding-use-storage": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-use-storage.js?v=11812865276956452901789670859", 476 "onboarding-utils": "//www.drinktrade.com/cdn/shop/t/2106/assets/onboarding-utils.js?v=166529376531134008031789670860", 477 "step-template-analytics-product-added-to-cart": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-analytics-product-added-to-cart.js?v=123112001049587252301789670867", 478 "step-template-analytics-quiz-loaded": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-analytics-quiz-loaded.js?v=98382845238122067661789670865", 479 "step-template-analytics-quiz-step-completed": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-analytics-quiz-step-completed.js?v=26086073035880500161789670866",
480 "step-template-analytics-recommendations-displayed": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-analytics-recommendations-displayed.js?v=170673854980268712401789670867", 481 "step-template-brewer-cta": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-brewer-cta.js?v=26807930225172958941789670868", 482 "step-template-buy-box-add-ons": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-buy-box-add-ons.js?v=143042185219931329931789670869", 483 "step-template-buy-box-header": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-buy-box-header.js?v=136352441338513359711789670870", 484 "step-template-buy-box-question": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-buy-box-question.js?v=29812646511221487391789670865", 485 "step-template-buy-box-summary": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-buy-box-summary.js?v=95438574303334671871789670867", 486 "step-template-cold-brew-results-complete-kit": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-cold-brew-results-complete-kit.js?v=136717377906645231941789670868", 487 "step-template-cold-brew-value-props": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-cold-brew-value-props.js?v=128286869414810691681789670869", 488 "step-template-cta-styled": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-cta-styled.js?v=110767295394180070261789670865", 489 "step-template-cta-styles-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-cta-styles-rebrand.js?v=142869031876639107801789670870", 490 "step-template-dropdown-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-dropdown-rebrand.js?v=97242391153449308501789670866", 491 "step-template-dropdown": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-dropdown.js?v=145401369954484447311789670867", 492 "step-template-embedded-dropdown-question": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-embedded-dropdown-question.js?v=40113493148488366901789670868", 493 "step-template-embedded-quiz-question": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-embedded-quiz-question.js?v=47535194761416304741789670868", 494 "step-template-get-queue": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-get-queue.js?v=115229515376193026621789670866", 495 "step-template-get-recommendations": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-get-recommendations.js?v=103188970783978657761789670866", 496 "step-template-heading": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-heading.js?v=150947950338631408211789670867", 497 "step-template-interstitial-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-interstitial-rebrand.js?v=70557803080707814961789670868", 498 "step-template-interstitial": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-interstitial.js?v=138552771605390965271789670868", 499 "step-template-loading-screen": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-loading-screen.js?v=101442582587348468351789670870", 500 "step-template-placeholder": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-placeholder.js?v=95794193093893487971789670869", 501 "step-template-plan-selection-dynamic-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selection-dynamic-rebrand.js?v=127198644629320498091789670866", 502 "step-template-plan-selection-dynamic": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selection-dynamic.js?v=143959688456505221531789670867", 503 "step-template-plan-selection-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selection-rebrand.js?v=179492741331919308961789670867", 504 "step-template-plan-selection": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selection.js?v=85175972912719202851789670868", 505 "step-template-plan-selector-dynamic-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selector-dynamic-rebrand.js?v=79558636234575409521789670869", 506 "step-template-plan-selector-dynamic": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selector-dynamic.js?v=68301397365298470041789670870", 507 "step-template-plan-selector-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selector-rebrand.js?v=73957724881088174071789670869", 508 "step-template-plan-selector": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-plan-selector.js?v=87291646979685054831789670868", 509 "step-template-quiz-dropdown": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-quiz-dropdown.js?v=45028379085535405561789670869", 510 "step-template-quiz-question-v-2": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-quiz-question-v-2.js?v=140741287149391192061789670870", 511 "step-template-quiz-question": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-quiz-question.js?v=67808587084886065641789670871", 512 "step-template-results-order-summary": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-results-order-summary.js?v=64438023967459517241789670872", 513 "step-template-results-page-queue": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-results-page-queue.js?v=98001793856499183321789670873", 514 "step-template-results-page-v2": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-results-page-v2.js?v=132470574134712468751789670873", 515 "step-template-results-page": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-results-page.js?v=159330160534977670941789670874", 516 "step-template-results-timeline": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-results-timeline.js?v=166145303727764145931789670872", 517 "step-template-toggle": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-toggle.js?v=7582571911830285721789670871", 518 "step-template-value-props-rebrand": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-value-props-rebrand.js?v=50257787242093139001789670872", 519 "step-template-value-props": "//www.drinktrade.com/cdn/shop/t/2106/assets/step-template-value-props.js?v=23328817128973983311789670872" 520 } 521 } 522</script>
522 523
524<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
524<meta name="google-site-verification" content="6sdtovfKC2NW7obcTUkWwzk3N3FCvc_-P06prLwF2fo"> 525<meta name="facebook-domain-verification" content="76pjzllf09qo4lcw03sqlprvvot4wx"> 526<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/79471280447/digital_wallets/dialog"> 527<meta id="in-context-paypal-metadata" data-shop-id="79471280447" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 528<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
528<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=6527254847"></script>
528 529<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
530<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=6527254847&shop_id=79471280447" crossorigin="anonymous"></script>
vendor: 1 bytes, line 530
530
531<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":79471280447,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/79471280447","merchantName":"Trade Coffee","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Trade Coffee","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 531
531
532<script id="shopify-features" type="application/json">{"accessToken":"3da1540d33fed79f8a6bfac10cab94ee","betas":["rich-media-storefront-analytics"],"domain":"www.drinktrade.com","predictiveSearch":true,"shopId":79471280447,"locale":"en"}</script>
vendor: 1 bytes, line 532
532
533<script>var Shopify = Shopify || {}; 534Shopify.shop = "drinktrade.myshopify.com"; 535Shopify.locale = "en"; 536Shopify.currency = {"active":"USD","rate":"1.0"}; 537Shopify.country = "US"; 538Shopify.theme = {"name":"Production | 09-23-26 | RELEASE_v3.76.0","id":188794601791,"schema_name":"Shopify Shell theme","schema_version":"2.0.0","theme_store_id":null,"role":"main"}; 539Shopify.theme.handle = "null"; 540Shopify.theme.style = {"id":null,"handle":null}; 541Shopify.cdnHost = "www.drinktrade.com/cdn"; 542Shopify.routes = Shopify.routes || {}; 543Shopify.routes.root = "/"; 544Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 545Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 546Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 547Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 547
547
548<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 548
548
549<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 549
549
550<script> 551 window.ShopifyPay = window.ShopifyPay || {}; 552 window.ShopifyPay.apiHost = "shop.app\/pay"; 553 window.ShopifyPay.redirectState = null; 554</script>
vendor: 1 bytes, line 554
554
555<script> 556 window.Shopify = window.Shopify || {}; 557 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 558 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 559 window.Shopify.SignInWithShop.eligible = true; 560</script>
vendor: 1 bytes, line 560
560
561<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 561
561
562<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 562
562
563<script type="module"> 564 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 565 566 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 567 568</script>
vendor: 1 bytes, line 568
568
569<script> 570 window.Shopify = window.Shopify || {}; 571 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 572 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"]}; 573</script>
vendor: 1 bytes, line 573
573
574<script>(function() { 575 var isLoaded = false; 576 function asyncLoad() { 577 if (isLoaded) return; 578 isLoaded = true; 579 var urls = ["https:\/\/cdn-loyalty.yotpo.com\/loader\/RE8BtND7urgOHdFDaTsGbw.js?shop=drinktrade.myshopify.com","https:\/\/static.klaviyo.com\/onsite\/js\/klaviyo.js?company_id=WmYpcv\u0026shop=drinktrade.myshopify.com","https:\/\/superfiliate-cdn.com\/storefront.js?shop=drinktrade.myshopify.com","https:\/\/admin.revenuehunt.com\/embed.js?shop=drinktrade.myshopify.com","https:\/\/cdn-app.cart-bot.net\/public\/js\/append.js?shop=drinktrade.myshopify.com","https:\/\/searchanise-ef84.kxcdn.com\/widgets\/shopify\/init.js?a=9V8G3W0Z8J\u0026shop=drinktrade.myshopify.com","https:\/\/cdn-bundler.nice-team.net\/app\/js\/bundler.js?shop=drinktrade.myshopify.com"]; 580 for (var i = 0; i < urls.length; i++) { 581 var s = document.createElement('script'); 582 s.type = 'text/javascript'; 583 s.async = true; 584 s.src = urls[i]; 585 var x = document.getElementsByTagName('script')[0]; 586 x.parentNode.insertBefore(s, x); 587 } 588 }; 589 if(window.attachEvent) { 590 window.attachEvent('onload', asyncLoad); 591 } else { 592 window.addEventListener('load', asyncLoad, false); 593 } 594})();</script>
vendor: 1 bytes, line 594
594
595<script id="__st">var __st={"a":79471280447,"offset":-14400,"reqid":"6e00a202-f8a2-44d8-adbf-6423022562e4-1790273988","pageurl":"www.drinktrade.com\/pages\/find-my-match","s":"pages-135353368895","u":"8d04b47f11fa","p":"page","rtyp":"page","rid":135353368895};</script>
vendor: 1 bytes, line 595
595
596<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 596
596
597<script id="form-persister">!function(){'use strict';const t='contact',e='new_comment',n=[[t,t],['blogs',e],['comments',e],[t,'customer']],o='password',r='form_key',c=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',o],s=()=>{try{return window.sessionStorage}catch{return}},i='__shopify_v',u=t=>t.elements[r],a=function(){const t=[...n].map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(',');var e;return e=t,()=>e?[...document.querySelectorAll(e)].map((t=>t.form)):[]}();function m(t){const e=u(t);a().includes(t)&&(!e||!e.value)&&function(t){try{if(!s())return;!function(t){const e=s();if(!e)return;const n=u(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){u(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:r})),t.elements[r].value=e}(t,e),function(t,e){const n=s();if(!n)return;const r=[...t.querySelectorAll(`input[type='${o}']`)].map((({name:t})=>t)),u=[...c,...r],a={};for(const[o,c]of new FormData(t).entries())u.includes(o)||(a[o]=c);n.setItem(e,JSON.stringify({[i]:1,action:t.action,data:a}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(t)}const f=t=>{if('true'===t.dataset.persistBound)return;const e=function(t,e){const n=function(t){return'function'==typeof t.submit?t.submit:HTMLFormElement.prototype.submit}(t).bind(t);return function(){let t;return()=>{t||(t=!0,(()=>{try{e(),n()}catch(t){(t=>{console.error('form submit failed',t)})(t)}})(),setTimeout((()=>t=!1),250))}}()}(t,(()=>{m(t)}));!function(t,e){if('function'==typeof t.submit&&'function'==typeof e)try{t.submit=e}catch{}}(t,e),t.addEventListener('submit',(t=>{t.preventDefault(),e()})),t.dataset.persistBound='true'};!function(){function t(t){const e=(t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form})(t);e&&m(e)}document.addEventListener('submit',t),document.addEventListener('DOMContentLoaded',(()=>{const e=a();for(const t of e)f(t);var n;n=document.body,new window.MutationObserver((t=>{for(const e of t)if('childList'===e.type&&e.addedNodes.length)for(const t of e.addedNodes)1===t.nodeType&&'FORM'===t.tagName&&a().includes(t)&&f(t)})).observe(n,{childList:!0,subtree:!0,attributes:!1}),document.removeEventListener('submit',t)}))}()}();</script>
vendor: 1 bytes, line 597
597
598<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//www.drinktrade.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 598
598
599<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 = "//www.drinktrade.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>
599<script crossorigin="anonymous" defer="defer" src="//www.drinktrade.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 599
599
600<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 600
600
601<script> 602 window.Shopify = window.Shopify || {}; 603 window.Shopify.MCP = window.Shopify.MCP || {}; 604 window.Shopify.MCP.enabled = true; 605 window.Shopify.MCP.shop = "drinktrade.myshopify.com"; 606 window.Shopify.MCP.mcpEndpoint = "https:\/\/www.drinktrade.com\/api\/mcp"; 607 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"]}}]; 608</script>
vendor: 1 bytes, line 608
608
609<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("\/\/www.drinktrade.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 610</script>
vendor: 1 bytes, line 610
610
611<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://www.drinktrade.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 612</script>
vendor: 1 bytes, line 612
612
613<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 614 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); 615</script>
vendor: 1 bytes, line 615
615
616<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})}})); 617</script>
vendor: 1 bytes, line 617
617
618<script integrity="sha256-/LA1C2Bx6899fYCos0FS9qLj2opaGFm7AXrTUvBEb4s=" data-source-attribution="shopify.remote_product_tracking" data-shopify-remote-tracking="{"publisher_shop_id":79471280447,"theme_id":188794601791,"theme_published":true,"theme_store_id":0,"placement":"collection","event_data":{"handle":"find-my-match","page_type":"page"},"recommendations_tracking_enabled":true}" defer="defer" src="//www.drinktrade.com/cdn/shopifycloud/storefront/assets/storefront/remote_product_tracking-91d95044.js" crossorigin="anonymous"></script>
618 619<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://www.drinktrade.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 620<style id="shopify-accelerated-checkout-cart"> 621 #shopify-buyer-consent { 622 margin-top: 1em; 623 display: inline-block; 624 width: 100%; 625} 626 627#shopify-buyer-consent.hidden { 628 display: none; 629} 630 631#shopify-subscription-policy-button { 632 background: none; 633 border: none; 634 padding: 0; 635 text-decoration: underline; 636 font-size: inherit; 637 cursor: pointer; 638} 639 640#shopify-subscription-policy-button::before { 641 box-shadow: none; 642} 643 644 </style> 645
646<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
646 647 648
648<script> 649 // Expose Shopify template name for analytics tracking 650 window.SHOPIFY_TEMPLATE = "page.discovery-trial-quiz"; 651 652 const IO = new IntersectionObserver( 653 (ObserverEntry) => { 654 ObserverEntry.forEach((entry) => { 655 const { isIntersecting, target } = entry; 656 if (isIntersecting) { 657 const isSvg = target.dataset.svg == 'true'; 658 if (!isSvg) { 659 const source = target.querySelector('source'); 660 const srcset = source.dataset.srcset; 661 source.srcset = srcset; 662 } else { 663 const img = target.querySelector('img'); 664 img.src = img.dataset.src; 665 } 666 target.dataset.loaded = true; 667 IO.unobserve(target); 668 } 669 }); 670 }, 671 { 672 rootMargin: '10px', 673 threshold: 0, 674 } 675 ); 676 677 const lazyImageFn = (el) => { 678 const loaded = el.dataset.loaded; 679 if (loaded !== 'true') { 680 IO.observe(el); 681 } 682 }; 683 684 window.lazyImageFn = lazyImageFn; 685</script>
685 686 687 688
688<script> 689 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 690 if (Shopify.designMode) { 691 document.documentElement.classList.add('shopify-design-mode'); 692 } 693 window.tradeSettings = { flatRateShipping: "3.99" }; 694 </script>
694 695 696
696<script defer> 697 /*! lozad.js - v1.16.0 - 2020-09-06 698 * https://github.com/ApoorvSaxena/lozad.js 699 * Copyright (c) 2020 Apoorv Saxena; Licensed MIT */ 700 !(function (t, e) { 701 'object' == typeof exports && 'undefined' != typeof module 702 ? (module.exports = e()) 703 : 'function' == typeof define && define.amd 704 ? define(e) 705 : (t.lozad = e()); 706 })(this, function () { 707 'use strict'; 708 /** 709 * Detect IE browser 710 * @const {boolean} 711 * @private 712 */ var g = 'undefined' != typeof document && document.documentMode, 713 f = { 714 rootMargin: '0px', 715 threshold: 0, 716 load: function (t) { 717 if ('picture' === t.nodeName.toLowerCase()) { 718 var e = t.querySelector('img'), 719 r = !1; 720 null === e && ((e = document.createElement('img')), (r = !0)), 721 g && t.getAttribute('data-iesrc') && (e.src = t.getAttribute('data-iesrc')), 722 t.getAttribute('data-alt') && (e.alt = t.getAttribute('data-alt')), 723 r && t.append(e); 724 } 725 if ('video' === t.nodeName.toLowerCase() && !t.getAttribute('data-src') && t.children) { 726 for (var a = t.children, o = void 0, i = 0; i <= a.length - 1; i++) 727 (o = a[i].getAttribute('data-src')) && (a[i].src = o); 728 t.load(); 729 } 730 t.getAttribute('data-poster') && (t.poster = t.getAttribute('data-poster')), 731 t.getAttribute('data-src') && (t.src = t.getAttribute('data-src')), 732 t.getAttribute('data-srcset') && t.setAttribute('srcset', t.getAttribute('data-srcset')); 733 var n = ','; 734 if ( 735 (t.getAttribute('data-background-delimiter') && (n = t.getAttribute('data-background-delimiter')), 736 t.getAttribute('data-background-image')) 737 ) 738 t.style.backgroundImage = 739 "url('" + t.getAttribute('data-background-image').split(n).join("'),url('") + "')"; 740 else if (t.getAttribute('data-background-image-set')) { 741 var d = t.getAttribute('data-background-image-set').split(n), 742 u = d[0].substr(0, d[0].indexOf(' ')) || d[0]; // Substring before ... 1x
743 (u = -1 === u.indexOf('url(') ? 'url(' + u + ')' : u), 744 1 === d.length 745 ? (t.style.backgroundImage = u) 746 : t.setAttribute( 747 'style', 748 (t.getAttribute('style') || '') + 749 'background-image: ' + 750 u + 751 '; background-image: -webkit-image-set(' + 752 d + 753 '); background-image: image-set(' + 754 d + 755 ')' 756 ); 757 } 758 t.getAttribute('data-toggle-class') && t.classList.toggle(t.getAttribute('data-toggle-class')); 759 }, 760 loaded: function () {}, 761 }; 762 function A(t) { 763 t.setAttribute('data-loaded', !0); 764 } 765 var m = function (t) { 766 return 'true' === t.getAttribute('data-loaded'); 767 }, 768 v = function (t) { 769 var e = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : document; 770 return t instanceof Element ? [t] : t instanceof NodeList ? t : e.querySelectorAll(t); 771 }; 772 return function () { 773 var r, 774 a, 775 o = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : '.lozad', 776 t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}, 777 e = Object.assign({}, f, t), 778 i = e.root, 779 n = e.rootMargin, 780 d = e.threshold, 781 u = e.load, 782 g = e.loaded, 783 s = void 0; 784 'undefined' != typeof window && 785 window.IntersectionObserver && 786 (s = new IntersectionObserver( 787 ((r = u), 788 (a = g), 789 function (t, e) { 790 t.forEach(function (t) { 791 (0 < t.intersectionRatio || t.isIntersecting) && 792 (e.unobserve(t.target), m(t.target) || (r(t.target), A(t.target), a(t.target))); 793 }); 794 }), 795 { root: i, rootMargin: n, threshold: d } 796 )); 797 for (var c, l = v(o, i), b = 0; b < l.length; b++) 798 (c = l[b]).getAttribute('data-placeholder-background') && 799 (c.style.background = c.getAttribute('data-placeholder-background')); 800 return { 801 observe: function () { 802 for (var t = v(o, i), e = 0; e < t.length; e++) 803 m(t[e]) || (s ? s.observe(t[e]) : (u(t[e]), A(t[e]), g(t[e]))); 804 }, 805 triggerLoad: function (t) { 806 m(t) || (u(t), A(t), g(t)); 807 }, 808 observer: s, 809 }; 810 }; 811 }); 812</script>
812 813
814<script defer> 815 (() => { 816 document.addEventListener('DOMContentLoaded', () => { 817 const observer = lozad(); 818 observer.observe(); 819 }); 820 })(); 821</script>
821 822 823 824 825 826 827
828<script 829 async 830 type="text/javascript" 831 src="https://static.ordergroove.com/5821cc3c27cf11ee8d0d822353e1715a/main.js" 832></script>
832<script> 833 !(function (t, e) { 834 var o, n, p, r; 835 e.__SV || 836 ((window.posthog = e), 837 (e._i = []), 838 (e.init = function (i, s, a) { 839 function g(t, e) { 840 var o = e.split('.'); 841 2 == o.length && ((t = t[o[0]]), (e = o[1])), 842 (t[e] = function () { 843 t.push([e].concat(Array.prototype.slice.call(arguments, 0))); 844 }); 845 } 846 ((p = t.createElement('script')).type = 'text/javascript'), 847 (p.crossOrigin = 'anonymous'), 848 (p.async = !0), 849 (p.src = s.api_host.replace('.i.posthog.com', '-assets.i.posthog.com') + '/static/array.js'), 850 (r = t.getElementsByTagName('script')[0]).parentNode.insertBefore(p, r); 851 var u = e; 852 for ( 853 void 0 !== a ? (u = e[a] = []) : (a = 'posthog'), 854 u.people = u.people || [], 855 u.toString = function (t) { 856 var e = 'posthog'; 857 return 'posthog' !== a && (e += '.' + a), t || (e += ' (stub)'), e; 858 }, 859 u.people.toString = function () { 860 return u.toString(1) + '.people (stub)'; 861 }, 862 o = 863 'init be ys Ss me gs ws capture Ne calculateEventProperties xs register register_once register_for_session unregister unregister_for_session Rs getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty Is ks createPersonProfile Ps bs opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing $s debug Es getPageViewId captureTraceFeedback captureTraceMetric'.split( 864 ' ' 865 ), 866 n = 0; 867 n < o.length; 868 n++ 869 ) 870 g(u, o[n]);
871 e._i.push([i, s, a]); 872 }), 873 (e.__SV = 1)); 874 })(document, window.posthog || []);var tradeInternalReferrer = /(^|\.)drinktrade\.com$|(^|\.)drinktrade\.myshopify\.com$/i; 875 posthog.init("phc_UodV1WxhY9Ia4gpcRmenruL8VOIOBOo7iOEw9tqMJQo", { 876 api_host: 'https://us.i.posthog.com', 877 person_profiles: 'always', 878 enable_recording_console_log: true, 879 autocapture: true, 880 capture_pageview: true, 881 cross_subdomain_cookie: true, 882 before_send: function (event) { 883 if (!event || !event.properties) return event; 884 var props = event.properties; 885 ['$', '$session_entry_'].forEach(function (prefix) { 886 var domain = props[prefix + 'referring_domain']; 887 if (typeof domain === 'string' && tradeInternalReferrer.test(domain)) { 888 props.internal_referrer = props[prefix + 'referrer'] || domain; 889 props[prefix + 'referring_domain'] = '$direct'; 890 if (props[prefix + 'referrer']) props[prefix + 'referrer'] = '$direct'; 891 } 892 }); 893 return event; 894 } 895 });</script>
895<script> 896 (() => { 897 const isMobileUserAgent = () => { 898 return /mobi|android/i.test(navigator.userAgent); 899 }; 900 901 const globalProperties = { 902 Platform: isMobileUserAgent() ? 'MobileWeb' : 'DesktopWeb', 903 App: 'WebApp', 904 path: window.location.pathname, 905 url: window.location.href, 906 title: document.title, 907 }; 908 909 // Convert event name to snake_case with trade: prefix for Shopify Custom Pixels 910 const toShopifyEventName = (event) => { 911 return 'trade:' + event 912 .toLowerCase() 913 .replace(/[^a-z0-9]+/g, '_') 914 .replace(/^_+|_+$/g, ''); 915 }; 916 917 // `options.beacon` marks an event fired immediately before a navigation 918 // (e.g. the storefront -> /checkout hand-off). Normal captures go out on a 919 // batched XHR that the browser cancels when the document unloads, so those 920 // events are simply lost. sendBeacon hands the payload to the browser, 921 // which delivers it independently of the page's lifetime. 922 const track = (event, payload = {}, options = {}) => { 923 if (window._DATADOG_SYNTHETICS_BROWSER !== undefined) { 924 return; 925 } 926 927 try { 928 // Add PostHog session ID to all events 929 let posthogSessionId = null; 930 if (typeof window.posthog !== 'undefined' && window.posthog?.get_session_id) { 931 posthogSessionId = window.posthog.get_session_id(); 932 } 933 934 const combinedPayload = Object.assign( 935 Object.assign({}, globalProperties), 936 payload, 937 { posthog_session_id: posthogSessionId } 938 ); 939 940 // PostHog â the analytics store for custom events. 941 if (typeof window.posthog !== 'undefined' && typeof window.posthog.capture === 'function') { 942 if (options.beacon) { 943 window.posthog.capture(event, combinedPayload, { 944 transport: 'sendBeacon', 945 send_instantly: true, 946 }); 947 } else { 948 window.posthog.capture(event, combinedPayload); 949 } 950 } 951 952 // GTM dataLayer â push every custom event so the main-page GTM containers 953 // (Stape/rev-roll sGTM + any web containers bound to window.dataLayer) can 954 // consume it. The `event` key is the GTM trigger name; spread the payload 955 // first so it can't be clobbered. Every container on this dataLayer sees the 956 // push, but each fires only if it has a trigger matching the event name. 957 // (The custom-pixel sandbox container already gets these via the trade:* 958 // Shopify.analytics.publish path below.) 959 window.dataLayer = window.dataLayer || []; 960 window.dataLayer.push(Object.assign({}, combinedPayload, { event: event })); 961 962 // Shopify Custom Pixels â queue events if the API isn't ready yet 963 const shopifyEventName = toShopifyEventName(event); 964 const shopifyPayload = { customData: combinedPayload }; 965 if (typeof Shopify !== 'undefined' && 966 Shopify.analytics && 967 typeof Shopify.analytics.publish === 'function') { 968 Shopify.analytics.publish(shopifyEventName, shopifyPayload); 969 } else { 970 window.__shopifyPixelQueue = window.__shopifyPixelQueue || []; 971 window.__shopifyPixelQueue.push({ event: shopifyEventName, payload: shopifyPayload }); 972 } 973 } catch (error) { 974 // eslint-disable-next-line no-console 975 console.error('[analytics error]', error); 976 } 977 }; 978 979 window.tradeTrack = window.tradeTrack || track; 980 981 // Flush queued Shopify pixel events once the API becomes available 982 (function flushShopifyPixelQueue() { 983 var maxAttempts = 20; // 20 Ã 500ms = 10s max wait 984 var attempt = 0; 985 var interval = setInterval(function () { 986 attempt++; 987 if (typeof Shopify !== 'undefined' && 988 Shopify.analytics && 989 typeof Shopify.analytics.publish === 'function') { 990 var queue = window.__shopifyPixelQueue || []; 991 for (var i = 0; i < queue.length; i++) { 992 Shopify.analytics.publish(queue[i].event, queue[i].payload); 993 } 994 window.__shopifyPixelQueue = []; 995 clearInterval(interval); 996 } else if (attempt >= maxAttempts) { 997 clearInterval(interval); 998 } 999 }, 500); 1000 })(); 1001 })(); 1002 1003 const initializeShoplift = () => {
1004 const urlParams = new URLSearchParams(window.location.search); 1005 1006 const reploExperiment = urlParams.get('replo-experiment'); 1007 const reploVariation = urlParams.get('replo-variation'); 1008 1009 if (reploExperiment && reploVariation) { 1010 window.tradeTrack('$experiment_started', { 1011 'Experiment name': reploExperiment, 1012 'Variant name': reploVariation, 1013 'Variant template': "page.discovery-trial-quiz", 1014 'Theme id': 188794601791, 1015 }); 1016 1017 return; 1018 } 1019 1020 const isRedeemingGift = () => { 1021 const giftRedemptionQuantity = parseInt(urlParams.get('qty') ?? '', 10); 1022 return urlParams.get('view') === 'gift-quiz' && Object.values([3, 6, 12]).includes(giftRedemptionQuantity); 1023 }; 1024 1025 let counter = 0; 1026 const interval = setInterval(async () => { 1027 counter++; 1028 1029 if (counter > 10) { 1030 clearInterval(interval); 1031 console.error('Shoplift did not load, could not fire experiment started.', window.shoplift, window.shopliftInstance); 1032 return; 1033 } 1034 1035 if (window.shoplift && window.shopliftInstance) { 1036 try { 1037 const visitorTests = window.shopliftInstance.state.essential.visitorTests; 1038 if (visitorTests) { 1039 visitorTests.forEach((visitorTest) => { 1040 const test = window.shopliftInstance.testConfigs.find((testConfig) => testConfig.id === visitorTest.testId); 1041 const allHypotheses = test?.hypotheses ?? []; 1042 const hypothesis = allHypotheses.find((h) => h.id === visitorTest.hypothesisId); 1043 1044 if (isRedeemingGift()) { 1045 return; 1046 } 1047 1048 if (hypothesis) { 1049 const testGroup = hypothesis.isControl ? 'control' : 'variant'; 1050 if (hypothesis.type === 'theme') { 1051 window.tradeTrack('$experiment_started', { 1052 'Experiment name': test.id, 1053 'Test id': test.id, 1054 'Test group': testGroup, 1055 'Variant name': testGroup, 1056 'Variant id': hypothesis.id, 1057 'Variant template': hypothesis.affix, 1058 test, 1059 visitorTest, 1060 }); 1061 } else { 1062 window.tradeTrack('$experiment_started', { 1063 'Experiment name': test.id, 1064 'Test id': test.id, 1065 'Test group': testGroup, 1066 'Variant name': testGroup, 1067 'Variant id': hypothesis.id, 1068 'Variant theme id': hypothesis.themeId, 1069 test, 1070 visitorTest, 1071 }); 1072 } 1073 } else { 1074 console.warn('No hypothesis found for visitor test', visitorTest); 1075 } 1076 }); 1077 } else { 1078 console.error('No visitor tests found', visitor); 1079 } 1080 } catch (error) { 1081 // eslint-disable-next-line no-console 1082 window.tradeTrack('Shoplift Load Failure'); 1083 console.error('[shoplift error]', error); 1084 } finally { 1085 clearInterval(interval); 1086 } 1087 } 1088 }, 1000); 1089 }; 1090 1091 const setKlaviyoFormListeners = () => { 1092 window.addEventListener("klaviyoForms", function(event) { 1093 if (event.detail.type === 'submit') { 1094 const emailAddress = event.detail.metaData["$email"]; 1095 // set in local storage 1096 localStorage.setItem('klaviyoEmail', emailAddress); 1097 1098 console.log(`Klaviyo form submitted with email: ${emailAddress}`); 1099 } 1100 }); 1101 } 1102 1103 if (document.readyState !== 'loading') { 1104 initializeShoplift(); 1105 setKlaviyoFormListeners(); 1106 } else { 1107 document.addEventListener('DOMContentLoaded', initializeShoplift); 1108 document.addEventListener('DOMContentLoaded', setKlaviyoFormListeners); 1109 } 1110</script>
1110 1111 1112 1113 <link rel="preconnect" href="https://cdn.shopify.com" crossorigin> 1114<link rel="preload" as="font" type="font/woff2" href="//www.drinktrade.com/cdn/shop/files/InterVariable.woff2?v=17726874589358246248" crossorigin> 1115<style data-shopify> 1116 @font-face { 1117 font-family: Inter; 1118 font-style: normal; 1119 font-weight: 100 900; 1120 src: url(//www.drinktrade.com/cdn/shop/files/InterVariable.woff2?v=17726874589358246248) format('woff2'); 1121 font-display: swap; 1122 } 1123 1124 @font-face { 1125 font-family: Inter; 1126 font-style: italic; 1127 font-weight: 100 900; 1128 src: url(//www.drinktrade.com/cdn/shop/files/InterVariable-Italic.woff2?v=15038611141794517625) format('woff2'); 1129 font-display: swap; 1130 } 1131 1132 /* ââ GT Alpina ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 1133 All five cuts of GT Alpina Standard, upright and italic. Every face is a 1134 separate static file â this family has no variable build â so each one is 1135 declared on its own. Only the faces a page actually uses are downloaded, 1136 so declaring ten costs nothing until something asks for them. 1137 1138 Thin is declared at 100, not at the 250 its OS/2 usWeightClass reports. 1139 Nothing in Tailwind's scale maps to 250, so the foundry's value would only 1140 ever be reached by CSS fallback (it is the lightest face, so `font-thin` 1141 lands on it either way). Declaring 100 makes `font-thin` an exact match 1142 and states the mapping instead of leaving it to the matching algorithm. 1143 1144 Keep this list, the weights, and the filenames in sync with 1145 src/standalone/fonts.scss â the standalone dashboard runs no Liquid and 1146 mirrors these rules against absolute CDN URLs. 1147 ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1148 1149 @font-face { 1150 font-family: 'GT Alpina'; 1151 font-style: normal; 1152 font-weight: 100; 1153 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Thin.woff2?v=3081542300621144540) format('woff2'); 1154 font-display: swap; 1155 } 1156 1157 @font-face { 1158 font-family: 'GT Alpina'; 1159 font-style: italic; 1160 font-weight: 100; 1161 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Thin-Italic.woff2?v=16570321458351972929) format('woff2'); 1162 font-display: swap; 1163 } 1164 1165 @font-face { 1166 font-family: 'GT Alpina'; 1167 font-style: normal; 1168 font-weight: 300; 1169 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Light.woff2?v=4282620510385252477) format('woff2'); 1170 font-display: swap; 1171 } 1172 1173 @font-face { 1174 font-family: 'GT Alpina'; 1175 font-style: italic; 1176 font-weight: 300; 1177 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Light-Italic.woff2?v=17383692346786556843) format('woff2'); 1178 font-display: swap; 1179 } 1180 1181 @font-face { 1182 font-family: 'GT Alpina'; 1183 font-style: normal; 1184 font-weight: 400; 1185 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Regular.woff2?v=17974258050790870109) format('woff2'); 1186 font-display: swap; 1187 } 1188 1189 @font-face { 1190 font-family: 'GT Alpina'; 1191 font-style: italic; 1192 font-weight: 400; 1193 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Regular-Italic.woff2?v=11199247550301267404) format('woff2'); 1194 font-display: swap; 1195 } 1196 1197 @font-face { 1198 font-family: 'GT Alpina'; 1199 font-style: normal; 1200 font-weight: 500; 1201 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Medium.woff2?v=17755554464651672897) format('woff2'); 1202 font-display: swap; 1203 } 1204 1205 @font-face { 1206 font-family: 'GT Alpina'; 1207 font-style: italic; 1208 font-weight: 500; 1209 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Medium-Italic.woff2?v=2926411657096217623) format('woff2'); 1210 font-display: swap; 1211 } 1212 1213 @font-face { 1214 font-family: 'GT Alpina'; 1215 font-style: normal; 1216 font-weight: 700; 1217 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Bold.woff2?v=12710716301017615771) format('woff2'); 1218 font-display: swap; 1219 } 1220 1221 @font-face { 1222 font-family: 'GT Alpina'; 1223 font-style: italic; 1224 font-weight: 700; 1225 src: url(//www.drinktrade.com/cdn/shop/files/GT-Alpina-Standard-Bold-Italic.woff2?v=14667513512708528766) format('woff2'); 1226 font-display: swap; 1227 } 1228 1229 @font-face { 1230 font-family: 'Geist Mono'; 1231 font-style: normal; 1232 font-weight: 500; 1233 src: url(//www.drinktrade.com/cdn/shop/files/GeistMono-Medium.woff2?v=1320095131069479158) format('woff2'); 1234 font-display: swap; 1235 } 1236</style> 1237 1238 <link href="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.section.tailwind.css?v=178082145445371909981790173858" rel="stylesheet" type="text/css" media="all" /> 1239
1240<script type="application/ld+json"> 1241{ 1242 "@context": "https://schema.org", 1243 "@type": "Organization", 1244 "@id": "https://www.drinktrade.com/#organization", 1245 "name": "Trade Coffee", 1246 "url": "https://www.drinktrade.com", 1247 "description": "Trade matches coffee drinkers with roasted-to-order coffees from top independent roasters across the country, personalized to their taste.", 1248 "logo": { 1249 "@type": "ImageObject", 1250 "url": "https://www.drinktrade.com/cdn/shop/files/Asset_1.svg" 1251 }, 1252 "sameAs": [ 1253 "https://www.instagram.com/tradecoffeeco/", 1254 "https://www.facebook.com/tradecoffeeco" 1255 ], 1256 "contactPoint": { 1257 "@type": "ContactPoint", 1258 "contactType": "customer support", 1259 "availableLanguage": "English", 1260 "hoursAvailable": { 1261 "@type": "OpeningHoursSpecification", 1262 "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], 1263 "opens": "09:00", 1264 "closes": "17:00" 1265 } 1266 } 1267} 1268</script>
1268 1269 1270
1270<script type="application/ld+json"> 1271 { 1272 "@context": "https://schema.org", 1273 "@type": "WebPage", 1274 "@id": "https:\/\/www.drinktrade.com\/pages\/find-my-match", 1275 "url": "https:\/\/www.drinktrade.com\/pages\/find-my-match", 1276 "name": "Coffee Subscription Quiz | Find Your Perfect Coffee | Trade Coffee", 1277 "description": "Take our quick coffee quiz and discover coffees tailored to your tastes. Explore 500+ coffees from 55+ top roasters.", 1278 "publisher": { 1279 "@id": "https://www.drinktrade.com/#organization" 1280 } 1281 } 1282 </script>
1282 1283 <!-- BEGIN app block: shopify://apps/okendo/blocks/theme-settings/bb689e69-ea70-4661-8fb7-ad24a2e23c29 --><!-- BEGIN app snippet: header-metafields --> 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 <style data-oke-reviews-version="0.94.3" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/okendo-reviews-styles.6dbb2446.css"></style><style data-oke-reviews-version="0.94.3" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/modules/okendo-star-rating.4cb378a8.css"></style><style data-oke-reviews-version="0.94.3" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/modules/okendo-reviews-keywords.0942444f.css"></style><style data-oke-reviews-version="0.94.3" type="text/css" data-href="https://cdn-static.okendo.io/reviews-widget-plus/css/modules/okendo-reviews-summary.a0c9d7d6.css"></style><style type="text/css">.okeReviews[data-oke-container],div.okeReviews{font-size:14px;font-size:var(--oke-text-regular);font-weight:400;font-family:var(--oke-text-fontFamily);line-height:1.6}.okeReviews[data-oke-container] *,.okeReviews[data-oke-container] :after,.okeReviews[data-oke-container] :before,div.okeReviews *,div.okeReviews :after,div.okeReviews :before{box-sizing:border-box}.okeReviews[data-oke-container] h1,.okeReviews[data-oke-container] h2,.okeReviews[data-oke-container] h3,.okeReviews[data-oke-container] h4,.okeReviews[data-oke-container] h5,.okeReviews[data-oke-container] h6,div.okeReviews h1,div.okeReviews h2,div.okeReviews h3,div.okeReviews h4,div.okeReviews h5,div.okeReviews h6{font-size:1em;font-weight:400;line-height:1.4;margin:0}.okeReviews[data-oke-container] ul,div.okeReviews ul{padding:0;margin:0}.okeReviews[data-oke-container] li,div.okeReviews li{list-style-type:none;padding:0}.okeReviews[data-oke-container] p,div.okeReviews p{line-height:1.8;margin:0 0 4px}.okeReviews[data-oke-container] p:last-child,div.okeReviews p:last-child{margin-bottom:0}.okeReviews[data-oke-container] a,div.okeReviews a{text-decoration:none;color:inherit}.okeReviews[data-oke-container] button,div.okeReviews button{border-radius:0;border:0;box-shadow:none;margin:0;width:auto;min-width:auto;padding:0;background-color:transparent;min-height:auto}.okeReviews[data-oke-container] button,.okeReviews[data-oke-container] input,.okeReviews[data-oke-container] select,.okeReviews[data-oke-container] textarea,div.okeReviews button,div.okeReviews input,div.okeReviews select,div.okeReviews textarea{font-family:inherit;font-size:1em}.okeReviews[data-oke-container] label,.okeReviews[data-oke-container] select,div.okeReviews label,div.okeReviews select{display:inline}.okeReviews[data-oke-container] select,div.okeReviews select{width:auto}.okeReviews[data-oke-container] article,.okeReviews[data-oke-container] aside,div.okeReviews article,div.okeReviews aside{margin:0}.okeReviews[data-oke-container] table,div.okeReviews table{background:transparent;border:0;border-collapse:collapse;border-spacing:0;font-family:inherit;font-size:1em;table-layout:auto}.okeReviews[data-oke-container] table td,.okeReviews[data-oke-container] table th,.okeReviews[data-oke-container] table tr,div.okeReviews table td,div.okeReviews table th,div.okeReviews table tr{border:0;font-family:inherit;font-size:1em}.okeReviews[data-oke-container] table td,.okeReviews[data-oke-container] table th,div.okeReviews table td,div.okeReviews table th{background:transparent;font-weight:400;letter-spacing:normal;padding:0;text-align:left;text-transform:none;vertical-align:middle}.okeReviews[data-oke-container] table tr:hover td,.okeReviews[data-oke-container] table tr:hover th,div.okeReviews table tr:hover td,div.okeReviews table tr:hover th{background:transparent}.okeReviews[data-oke-container] fieldset,div.okeReviews fieldset{border:0;padding:0;margin:0;min-width:0}.okeReviews[data-oke-container] img,.okeReviews[data-oke-container] svg,div.okeReviews img,div.okeReviews svg{max-width:none}.okeReviews[data-oke-container] div:empty,div.okeReviews div:empty{display:block}.okeReviews[data-oke-container] .oke-icon:before,div.okeReviews .oke-icon:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:inherit}.okeReviews[data-oke-container] .oke-icon--select-arrow:before,div.okeReviews .oke-icon--select-arrow:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--loading:before,div.okeReviews .oke-icon--loading:before{content:"î¤"}
1297.okeReviews[data-oke-container] .oke-icon--pencil:before,div.okeReviews .oke-icon--pencil:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--filter:before,div.okeReviews .oke-icon--filter:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--play:before,div.okeReviews .oke-icon--play:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--tick-circle:before,div.okeReviews .oke-icon--tick-circle:before{content:"î¤
"}.okeReviews[data-oke-container] .oke-icon--chevron-left:before,div.okeReviews .oke-icon--chevron-left:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--chevron-right:before,div.okeReviews .oke-icon--chevron-right:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--thumbs-down:before,div.okeReviews .oke-icon--thumbs-down:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--thumbs-up:before,div.okeReviews .oke-icon--thumbs-up:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--close:before,div.okeReviews .oke-icon--close:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--chevron-up:before,div.okeReviews .oke-icon--chevron-up:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--chevron-down:before,div.okeReviews .oke-icon--chevron-down:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--star:before,div.okeReviews .oke-icon--star:before{content:"î¤"}.okeReviews[data-oke-container] .oke-icon--magnifying-glass:before,div.okeReviews .oke-icon--magnifying-glass:before{content:"î¤"}@font-face{font-family:oke-widget-icons;src:url(https://cdn-static.okendo.io/reviews-widget-plus/fonts/oke-widget-icons.ttf) format("truetype"),url(https://cdn-static.okendo.io/reviews-widget-plus/fonts/oke-widget-icons.woff) format("woff"),url(https://cdn-static.okendo.io/reviews-widget-plus/img/oke-widget-icons.bc0d6b0a.svg) format("svg");font-weight:400;font-style:normal;font-display:swap}.okeReviews[data-oke-container] .oke-button,div.okeReviews .oke-button{display:inline-block;border-style:solid;border-color:var(--oke-button-borderColor);border-width:var(--oke-button-borderWidth);background-color:var(--oke-button-backgroundColor);line-height:1;padding:12px 24px;margin:0;border-radius:var(--oke-button-borderRadius);color:var(--oke-button-textColor);text-align:center;position:relative;font-weight:var(--oke-button-fontWeight);font-size:var(--oke-button-fontSize);font-family:var(--oke-button-fontFamily);outline:0}.okeReviews[data-oke-container] .oke-button-text,.okeReviews[data-oke-container] .oke-button .oke-icon,div.okeReviews .oke-button-text,div.okeReviews .oke-button .oke-icon{line-height:1}.okeReviews[data-oke-container] .oke-button.oke-is-loading,div.okeReviews .oke-button.oke-is-loading{position:relative}.okeReviews[data-oke-container] .oke-button.oke-is-loading:before,div.okeReviews .oke-button.oke-is-loading:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"î¤";color:undefined;font-size:12px;display:inline-block;animation:oke-spin 1s linear infinite;position:absolute;width:12px;height:12px;top:0;left:0;bottom:0;right:0;margin:auto}.okeReviews[data-oke-container] .oke-button.oke-is-loading>*,div.okeReviews .oke-button.oke-is-loading>*{opacity:0}.okeReviews[data-oke-container] .oke-button.oke-is-active,div.okeReviews .oke-button.oke-is-active{background-color:var(--oke-button-backgroundColorActive);color:var(--oke-button-textColorActive);border-color:var(--oke-button-borderColorActive)}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading),div.okeReviews .oke-button:not(.oke-is-loading){cursor:pointer}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):hover{background-color:var(--oke-button-backgroundColorHover);color:var(--oke-button-textColorHover);border-color:var(--oke-button-borderColorHover);box-shadow:0 0 0 2px var(--oke-button-backgroundColorHover)}.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):active,.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover:active,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):active,div.okeReviews .oke-button:not(.oke-is-loading):not(.oke-is-active):hover:active{background-color:var(--oke-button-backgroundColorActive);color:var(--oke-button-textColorActive);border-color:var(--oke-button-borderColorActive)}.okeReviews[data-oke-container] .oke-title,div.okeReviews .oke-title{font-weight:var(--oke-title-fontWeight);font-size:var(--oke-title-fontSize);font-family:var(--oke-title-fontFamily)}.okeReviews[data-oke-container] .oke-bodyText,div.okeReviews .oke-bodyText{font-weight:var(--oke-bodyText-fontWeight);font-size:var(--oke-bodyText-fontSize);font-family:var(--oke-bodyText-fontFamily)}.okeReviews[data-oke-container] .oke-linkButton,div.okeReviews .oke-linkButton{curs
1297or:pointer;font-weight:700;pointer-events:auto;text-decoration:underline}.okeReviews[data-oke-container] .oke-linkButton:hover,div.okeReviews .oke-linkButton:hover{text-decoration:none}.okeReviews[data-oke-container] .oke-readMore,div.okeReviews .oke-readMore{cursor:pointer;color:inherit;text-decoration:underline}.okeReviews[data-oke-container] .oke-select,div.okeReviews .oke-select{cursor:pointer;background-repeat:no-repeat;background-position-x:100%;background-position-y:50%;border:none;padding:0 24px 0 12px;-moz-appearance:none;appearance:none;color:inherit;-webkit-appearance:none;background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='currentColor' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E");outline-offset:4px}.okeReviews[data-oke-container] .oke-select:disabled,div.okeReviews .oke-select:disabled{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg fill='%239a9db1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3Cpath d='M0 0h24v24H0z' fill='none'/%3E%3C/svg%3E")}.okeReviews[data-oke-container] .oke-loader,div.okeReviews .oke-loader{position:relative}.okeReviews[data-oke-container] .oke-loader:before,div.okeReviews .oke-loader:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"î¤";color:var(--oke-text-secondaryColor);font-size:12px;display:inline-block;animation:oke-spin 1s linear infinite;position:absolute;width:12px;height:12px;top:0;left:0;bottom:0;right:0;margin:auto}.okeReviews[data-oke-container] .oke-a11yText,div.okeReviews .oke-a11yText{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.okeReviews[data-oke-container] .oke-hidden,div.okeReviews .oke-hidden{display:none}.okeReviews[data-oke-container] .oke-modal,div.okeReviews .oke-modal{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2147483647;max-height:100%;background-color:rgba(0,0,0,.5);padding:40px 0 12px}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal,div.okeReviews .oke-modal{display:flex;align-items:center;padding:48px 0}}.okeReviews[data-oke-container] .oke-modal ::-moz-selection,div.okeReviews .oke-modal ::-moz-selection{background-color:rgba(39,45,69,.2)}.okeReviews[data-oke-container] .oke-modal ::selection,div.okeReviews .oke-modal ::selection{background-color:rgba(39,45,69,.2)}.okeReviews[data-oke-container] .oke-modal,.okeReviews[data-oke-container] .oke-modal p,div.okeReviews .oke-modal,div.okeReviews .oke-modal p{color:#272d45}.okeReviews[data-oke-container] .oke-modal-content,div.okeReviews .oke-modal-content{background-color:#fff;margin:auto;position:relative;will-change:transform,opacity;width:calc(100% - 24px)}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal-content,div.okeReviews .oke-modal-content{max-width:1000px}}.okeReviews[data-oke-container] .oke-modal-close,div.okeReviews .oke-modal-close{cursor:pointer;position:absolute;width:32px;height:32px;top:-32px;padding:4px;right:-4px;line-height:1}.okeReviews[data-oke-container] .oke-modal-close:before,div.okeReviews .oke-modal-close:before{font-family:oke-widget-icons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"î¤";color:#fff;font-size:24px;display:inline-block;width:24px;height:24px}.okeReviews[data-oke-container] .oke-modal-overlay,div.okeReviews .oke-modal-overlay{background-color:rgba(43,46,56,.9)}@media only screen and (min-width:1024px){.okeReviews[data-oke-container] .oke-modal--large .oke-modal-content,div.okeReviews .oke-modal--large .oke-modal-content{max-width:1200px}}.okeReviews[data-oke-container] .oke-modal .oke-helpful,.okeReviews[data-oke-container] .oke-modal .oke-helpful-vote-button,.okeReviews[data-oke-container] .oke-modal .oke-reviewContent-date,div.okeReviews .oke-modal .oke-helpful,div.okeReviews .oke-modal .oke-helpful-vote-button,div.okeReviews .oke-modal .oke-reviewContent-date{color:#676986}.oke-modal .okeReviews[data-oke-container].oke-w,.oke-modal div.okeReviews.oke-w{color:#272d45}.okeReviews[data-oke-container] .oke-tag,div.okeReviews .oke-tag{align-items:center;color:#272d45;display:flex;font-size:var(--oke-text-small);font-weight:600;text-align:left;position:relative;z-index:2;background-color:#f4f4f6;padding:4px 6px;border:none;border-radius:4px;gap:6px;line-height:1}.okeReviews[data-oke-container] .oke-tag svg,div.okeReviews .oke-tag svg{fill:currentColor;height:1rem}.okeReviews[data-oke-container] .hooper,div.okeReviews .hooper{height:auto}.okeReviews--left{text-align:left}.okeReviews--right{text-align:right}.okeReviews--center{text-align:center}.okeReviews :not([tabindex="-1"]):focus-visible{outline:5px auto highlight;outline:5px auto -webkit-focus-ring-color}.is-oke-modalOpen{overflow:hidden!important}img.oke-is-error{background-color:var(--oke-shadingColor);background-size:cover;background-position:50% 50%;box-shadow:inset 0 0 0 1px var(--oke-border-color)}@keyframes oke-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes oke-fade-in{0%{opacity:0}
1297to{opacity:1}}.layout-panel-flex>div:has([data-oke-container]){width:100%} 1298.oke-stars{line-height:1;position:relative;display:inline-block}.oke-stars-background svg{overflow:visible}.oke-stars-foreground{overflow:hidden;position:absolute;top:0;left:0}.oke-sr{display:inline-block;padding-top:var(--oke-starRating-spaceAbove);padding-bottom:var(--oke-starRating-spaceBelow)}.oke-sr .oke-is-clickable{cursor:pointer}.oke-sr--hidden{display:none}.oke-sr-count,.oke-sr-rating,.oke-sr-stars{display:inline-block;vertical-align:middle}.oke-sr-stars{line-height:1;margin-right:8px}.oke-sr-rating{display:none}.oke-sr-count--brackets:before{content:"("}.oke-sr-count--brackets:after{content:")"} 1299.oke-rk{display:block}.okeReviews[data-oke-container] .oke-reviewsKeywords-heading,div.okeReviews .oke-reviewsKeywords-heading{font-weight:700;margin-bottom:8px}.okeReviews[data-oke-container] .oke-reviewsKeywords-heading-skeleton,div.okeReviews .oke-reviewsKeywords-heading-skeleton{height:calc(var(--oke-button-fontSize) + 4px);width:150px}.okeReviews[data-oke-container] .oke-reviewsKeywords-list,div.okeReviews .oke-reviewsKeywords-list{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category,div.okeReviews .oke-reviewsKeywords-list-category{background-color:var(--oke-filter-backgroundColor);color:var(--oke-filter-textColor);border:1px solid var(--oke-filter-borderColor);border-radius:var(--oke-filter-borderRadius);padding:6px 16px;transition:background-color .1s ease-out,border-color .1s ease-out;white-space:nowrap}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category.oke-is-clickable,div.okeReviews .oke-reviewsKeywords-list-category.oke-is-clickable{cursor:pointer}.okeReviews[data-oke-container] .oke-reviewsKeywords-list-category.oke-is-active,div.okeReviews .oke-reviewsKeywords-list-category.oke-is-active{background-color:var(--oke-filter-backgroundColorActive);color:var(--oke-filter-textColorActive);border-color:var(--oke-filter-borderColorActive)}.okeReviews[data-oke-container] .oke-reviewsKeywords .oke-translateButton,div.okeReviews .oke-reviewsKeywords .oke-translateButton{margin-top:12px} 1300.oke-rs{display:block}.oke-rs .oke-reviewsSummary.oke-is-preRender .oke-reviewsSummary-summary{-webkit-mask:linear-gradient(180deg,#000 0,#000 40%,transparent 95%,transparent 0) 100% 50%/100% 100% repeat-x;mask:linear-gradient(180deg,#000 0,#000 40%,transparent 95%,transparent 0) 100% 50%/100% 100% repeat-x;max-height:150px}.okeReviews[data-oke-container] .oke-reviewsSummary .oke-tooltip,div.okeReviews .oke-reviewsSummary .oke-tooltip{display:inline-block;font-weight:400}.okeReviews[data-oke-container] .oke-reviewsSummary .oke-tooltip-trigger,div.okeReviews .oke-reviewsSummary .oke-tooltip-trigger{height:15px;width:15px;overflow:hidden;transform:translateY(-10%)}.okeReviews[data-oke-container] .oke-reviewsSummary-heading,div.okeReviews .oke-reviewsSummary-heading{align-items:center;-moz-column-gap:4px;column-gap:4px;display:inline-flex;font-weight:700;margin-bottom:8px}.okeReviews[data-oke-container] .oke-reviewsSummary-heading-skeleton,div.okeReviews .oke-reviewsSummary-heading-skeleton{height:calc(var(--oke-button-fontSize) + 4px);width:150px}.okeReviews[data-oke-container] .oke-reviewsSummary-icon,div.okeReviews .oke-reviewsSummary-icon{fill:currentColor;font-size:14px}.okeReviews[data-oke-container] .oke-reviewsSummary-icon svg,div.okeReviews .oke-reviewsSummary-icon svg{vertical-align:baseline}.okeReviews[data-oke-container] .oke-reviewsSummary-summary.oke-is-truncated,div.okeReviews .oke-reviewsSummary-summary.oke-is-truncated{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}</style> 1301 1302
1302<script type="application/json" id="oke-reviews-settings">{"subscriberId":"d2bc5c90-c9cb-450d-ad0a-ede17e1609c5","analyticsSettings":{"isWidgetOnScreenTrackingEnabled":true,"provider":"gtm"},"locale":"en","localeAndVariant":{"code":"en"},"matchCustomerLocale":false,"widgetSettings":{"global":{"dateSettings":{"format":{"type":"relative"}},"hideOkendoBranding":true,"reviewTranslationsMode":"off","showIncentiveIndicator":true,"searchEnginePaginationEnabled":false,"stars":{"backgroundColor":"#ECECEE","borderColor":"#FFFFFF","foregroundColor":"#F45048","interspace":1,"shape":{"type":"default"},"showBorder":true},"font":{"fontType":"custom","fontFamily":"inter"}},"homepageCarousel":{"slidesPerPage":{"large":3,"medium":2},"totalSlides":20,"scrollBehaviour":"slide","sortOptionOrder":["rating desc","helpful desc","date desc","has_media desc","date asc","rating asc","unhelpful desc"],"style":{"showDates":true,"border":{"color":"#D7D7DA","width":{"value":1,"unit":"px"}},"bodyFont":{"fontSize":{"value":16,"unit":"px"},"fontType":"use-global","fontWeight":400,"hasCustomFontSettings":true},"headingFont":{"fontSize":{"value":18,"unit":"px"},"fontType":"use-global","fontWeight":600,"hasCustomFontSettings":true},"arrows":{"color":"#252525","size":{"value":24,"unit":"px"},"enabled":true},"avatar":{"backgroundColor":"#E5E5EB","placeholderTextColor":"#252525","size":{"value":40,"unit":"px"},"enabled":false},"media":{"size":{"value":80,"unit":"px"},"imageGap":{"value":4,"unit":"px"},"enabled":false},"stars":{"height":{"value":23,"unit":"px"}},"productImageSize":{"value":48,"unit":"px"},"layout":{"name":"default","reviewDetailsPosition":"above","showAttributeBars":false,"showProductDetails":"never"},"highlightColor":"#252525","spaceAbove":{"value":20,"unit":"px"},"text":{"primaryColor":"#252525","fontSizeRegular":{"value":18,"unit":"px"},"fontSizeSmall":{"value":14,"unit":"px"},"secondaryColor":"#252525"},"spaceBelow":{"value":20,"unit":"px"}},"featuredReviewsTags":["vmJoPyw"],"defaultSort":"tags desc","autoPlay":true,"secondarySort":"rating desc","truncation":{"bodyMaxLines":4,"truncateAll":false,"enabled":true}},"mediaCarousel":{"minimumImages":1,"linkText":"Read More","autoPlay":false,"slideSize":"medium","arrowPosition":"outside"},"mediaGrid":{"gridStyleDesktop":{"layout":"default-desktop"},"gridStyleMobile":{"layout":"default-mobile"},"showMoreArrow":{"arrowColor":"#676986","enabled":true,"backgroundColor":"#f4f4f6"},"linkText":"Read More","infiniteScroll":false,"gapSize":{"value":10,"unit":"px"}},"questions":{"initialPageSize":6,"loadMorePageSize":6},"reviewsBadge":{"layout":"large","colorScheme":"dark"},"reviewsTab":{"enabled":false},"reviewsWidget":{"tabs":{"reviews":true,"questions":true},"header":{"columnDistribution":"space-between","verticalAlignment":"top","blocks":[{"columnWidth":"one-third","modules":[{"name":"rating-average","layout":"one-line"},{"name":"rating-breakdown","backgroundColor":"#F4F4F6","shadingColor":"#252525","stretchMode":"contain"}],"textAlignment":"left"},{"columnWidth":"half","modules":[{"name":"recommended"}],"textAlignment":"center"}]},"style":{"showDates":true,"border":{"color":"#D7D7DA","width":{"value":1,"unit":"px"}},"bodyFont":{"fontSize":{"value":16,"unit":"px"},"fontType":"use-global","fontWeight":400,"hasCustomFontSettings":true},"headingFont":{"fontSize":{"value":24,"unit":"px"},"fontType":"use-global","fontWeight":700,"hasCustomFontSettings":true},"filters":{"backgroundColorActive":"#252525","backgroundColor":"#FFFFFF","borderColor":"#D7D7DA","borderRadius":{"value":8,"unit":"px"},"borderColorActive":"#252525","textColorActive":"#FFFFFF","textColor":"#252525","searchHighlightColor":"#d7b0a0"},"avatar":{"enabled":false},"stars":{"height":{"value":23,"unit":"px"}},"shadingColor":"#F7F7F8","productImageSize":{"value":48,"unit":"px"},"button":{"backgroundColorActive":"#252525","borderColorHover":"#252525","backgroundColor":"#252525","borderColor":"#252525","backgroundColorHover":"#252525","textColorHover":"#FFFFFF","borderRadius":{"value":8,"unit":"px"},"borderWidth":{"value":0,"unit":"px"},"borderColorActive":"#252525","textColorActive":"#FFFFFF","textColor":"#FFFFFF","font":{"fontSize":{"value":16,"unit":"px"}
1302,"fontType":"use-global","fontWeight":600,"hasCustomFontSettings":true}},"highlightColor":"#F45048","spaceAbove":{"value":20,"unit":"px"},"text":{"primaryColor":"#252525","fontSizeRegular":{"value":18,"unit":"px"},"fontSizeLarge":{"value":28,"unit":"px"},"fontSizeSmall":{"value":16,"unit":"px"},"secondaryColor":"#252525"},"spaceBelow":{"value":20,"unit":"px"},"attributeBar":{"style":"default","backgroundColor":"#D3D4DD","shadingColor":"#9A9DB1","markerColor":"#F45048"}},"showWhenEmpty":true,"reviews":{"list":{"layout":{"name":"minimal","showAttributeBars":false,"showProductVariantName":false,"columnAmount":2,"showProductDetails":"only-when-grouped"},"loyalty":{"maxInitialAchievements":3},"initialPageSize":5,"replyTruncation":{"bodyMaxLines":4,"enabled":true},"media":{"layout":"thumbnail","size":{"value":200,"unit":"px"},"imageGap":{"value":4,"unit":"px"}},"truncation":{"bodyMaxLines":4,"truncateAll":false,"enabled":true},"loadMorePageSize":5},"controls":{"filterMode":"closed","freeTextSearchEnabled":false,"writeReviewButtonEnabled":true,"defaultSort":"rating desc","sortOptionOrder":["rating desc","date desc","has_media desc","helpful desc","date asc","rating asc","unhelpful desc"]}}},"starRatings":{"showWhenEmpty":false,"style":{"spaceAbove":{"value":0,"unit":"px"},"text":{"content":"review-count","style":"number-and-text","brackets":false},"singleStar":false,"height":{"value":23,"unit":"px"},"spaceBelow":{"value":0,"unit":"px"}},"clickBehavior":"scroll-to-widget"}},"features":{"attributeFiltersEnabled":true,"recorderPlusEnabled":true,"recorderQandaPlusEnabled":true,"reviewsKeywordsEnabled":true,"reviewsSummariesEnabled":true}}</script>
1302 1303 <style id="oke-css-vars">:root{--oke-widget-spaceAbove:20px;--oke-widget-spaceBelow:20px;--oke-starRating-spaceAbove:0;--oke-starRating-spaceBelow:0;--oke-button-backgroundColor:#252525;--oke-button-backgroundColorHover:#252525;--oke-button-backgroundColorActive:#252525;--oke-button-textColor:#fff;--oke-button-textColorHover:#fff;--oke-button-textColorActive:#fff;--oke-button-borderColor:#252525;--oke-button-borderColorHover:#252525;--oke-button-borderColorActive:#252525;--oke-button-borderRadius:8px;--oke-button-borderWidth:0;--oke-button-fontWeight:600;--oke-button-fontSize:16px;--oke-button-fontFamily:inherit;--oke-border-color:#d7d7da;--oke-border-width:1px;--oke-text-primaryColor:#252525;--oke-text-secondaryColor:#252525;--oke-text-small:16px;--oke-text-regular:18px;--oke-text-large:28px;--oke-text-fontFamily:inter,sans-serif;--oke-avatar-size:undefined;--oke-avatar-backgroundColor:undefined;--oke-avatar-placeholderTextColor:undefined;--oke-highlightColor:#f45048;--oke-shadingColor:#f7f7f8;--oke-productImageSize:48px;--oke-attributeBar-shadingColor:#9a9db1;--oke-attributeBar-borderColor:undefined;--oke-attributeBar-backgroundColor:#d3d4dd;--oke-attributeBar-markerColor:#f45048;--oke-filter-backgroundColor:#fff;--oke-filter-backgroundColorActive:#252525;--oke-filter-borderColor:#d7d7da;--oke-filter-borderColorActive:#252525;--oke-filter-textColor:#252525;--oke-filter-textColorActive:#fff;--oke-filter-borderRadius:8px;--oke-filter-searchHighlightColor:#d7b0a0;--oke-mediaGrid-chevronColor:#676986;--oke-stars-foregroundColor:#f45048;--oke-stars-backgroundColor:#ececee;--oke-stars-borderWidth:1;--oke-stars-borderColor:#fff}.oke-w,.oke-modal{--oke-title-fontWeight:700;--oke-title-fontSize:24px;--oke-title-fontFamily:inherit;--oke-bodyText-fontWeight:400;--oke-bodyText-fontSize:16px;--oke-bodyText-fontFamily:inherit}</style> 1304 <style id="oke-reviews-custom-css">div.okeReviews[data-oke-container].oke-w{max-width:358px;margin:auto}div.okeReviews[data-oke-container] .oke-modal div.okeReviews.oke-w,div.okeReviews[data-oke-container] .oke-modal .oke-modal-content,div.okeReviews[data-oke-container] .oke-modal .oke-modal-content p{color:var(--oke-text-primaryColor)}div.okeReviews[data-oke-container] .oke-modal .oke-modal-content .oke-helpful,div.okeReviews[data-oke-container] .oke-modal .oke-modal-content .oke-helpful-vote-button,div.okeReviews[data-oke-container] .oke-modal .oke-modal-content .oke-reviewContent-date{color:var(--oke-text-secondaryColor)}div.okeReviews[data-oke-container] .oke-modal .oke-reviewContent-title{font-size:16px;font-weight:600}div.okeReviews .oke-w-selectAttr-item{font-size:14px}div.okeReviews .oke-w-reviews-controls{font-size:16px}div.okeReviews[data-oke-container] .oke-button:not(.oke-is-loading):not(.oke-is-active):hover{box-shadow:none}.okeReviews.oke-w .oke-button.oke-w-writeReview{height:100%;line-height:normal;vertical-align:middle}.okeReviews.oke-w .oke-is-small .oke-button,.okeReviews.oke-w .oke-is-small .oke-w-reviews-writeReview{width:100%}.okeReviews.oke-w .oke-is-small .oke-w-reviews-writeReview{margin-top:15px}div.okeReviews .oke-w-reviews-filterToggle .oke-icon{display:none}div.okeReviews .oke-w-reviews-filterToggle .oke-button-text{position:relative;padding-right:18px}div.okeReviews .oke-w-reviews-filterToggle .oke-button-text::after{content:"";position:absolute;right:-3px;top:55%;width:10px;height:10px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:translateY(-70%) rotate(45deg);transform-origin:center;transition:transform .2s ease}div.okeReviews .oke-w-reviews-filterToggle[aria-expanded="true"] .oke-button-text::after{transform:translateY(-30%) rotate(225deg)}div.okeReviews .oke-w-filter .oke-w-filterOption-label{border-radius:100px;line-height:2.5}div.okeReviews[data-oke-container] .oke-w-filterOption-label-star:before,.okeReviews[data-oke-container] .oke-w-filterOption-label-star:empty:before,div.okeReviews .oke-w-filterOption-label-star:before,div.okeReviews .oke-w-filterOption-label-star:empty:before{color:#f45048 !important}div.okeReviews[data-oke-container] .oke-w-ratingAverageModule-rating-stars .oke-stars-background svg,div.okeReviews[data-oke-container] .oke-w-ratingAverageModule-rating-stars .oke-stars-foreground svg{height:25px}div[data-oke-carousel] .okeReviews[data-oke-container] .oke-testimonialCard{padding:12px 24px}div[data-oke-carousel] .okeReviews[data-oke-container] .oke-w-reviewer div{display:flex;flex-direction:column;font-size:20px}div[data-oke-carousel] .okeReviews[data-oke-container] .oke-w-reviewer .oke-w-reviewer-verified{margin:0;color:#f45048}div[data-oke-carousel] .oke-testimonialCard{border-radius:16px}div[data-oke-carousel] .okeReviews[data-oke-container] .oke-w-review-footer{display:none}div[data-oke-carousel] .okeReviews[data-oke-container] .oke-testimonialCard--above .oke-testimonialCard-head{padding-bottom:30px}div[data-oke-carousel] .okeReviews[data-oke-container] .oke-reviewContent-body p{font-size:16px}div[data-oke-star-rating] .oke-sr-count{color:#252525}@media all and (min-width:768px){div.okeReviews[data-oke-container].oke-w{max-width:712px;--oke-title-fontSize:28px;--oke-bodyText-fontSize:18px}div.okeReviews[data-oke-container] p{font-size:18px}div.okeReviews[data-oke-container] .oke-w-ratingAverageModule--oneLine{align-items:flex-start;-moz-column-gap:10px;column-gap:10px;flex-direction:column}}@media all and (min-width:1280px){div.okeReviews[data-oke-container].oke-w{max-width:1192px}}@media all and (min-width:1440px){div.okeReviews[data-oke-container].oke-w{max-width:1352px}}</style> 1305 <template id="oke-reviews-body-template"><svg id="oke-star-symbols" style="display:none!important" data-oke-id="oke-star-symbols"><symbol id="oke-star-empty" style="overflow:visible;"><path id="star-default--empty" fill="var(--oke-stars-backgroundColor)" stroke="var(--oke-stars-borderColor)" stroke-width="var(--oke-stars-borderWidth)" d="M3.34 13.86c-.48.3-.76.1-.63-.44l1.08-4.56L.26 5.82c-.42-.36-.32-.7.24-.74l4.63-.37L6.92.39c.2-.52.55-.52.76 0l1.8 4.32 4.62.37c.56.05.67.37.24.74l-3.53 3.04 1.08 4.56c.13.54-.14.74-.63.44L7.3 11.43l-3.96 2.43z"/></symbol><symbol id="oke-star-filled" style="overflow:visible;"><path id="star-default--filled" fill="var(--oke-stars-foregroundColor)" stroke="var(--oke-stars-borderColor)" stroke-width="var(--oke-stars-borderWidth)" d="M3.34 13.86c-.48.3-.76.1-.63-.44l1.08-4.56L.26 5.82c-.42-.36-.32-.7.24-.74l4.63-.37L6.92.39c.2-.52.55-.52.76 0l1.8 4.32 4.62.37c.56.05.67.37.24.74l-3.53 3.04 1.08 4.56c.13.54-.14.74-.63.44L7.3 11.43l-3.96 2.43z"/></symbol></svg></template>
1305<script>document.addEventListener('readystatechange',() =>{Array.from(document.getElementById('oke-reviews-body-template')?.content.children)?.forEach(function(child){if(!Array.from(document.body.querySelectorAll('[data-oke-id='.concat(child.getAttribute('data-oke-id'),']'))).length){document.body.prepend(child)}})},{once:true});</script>
1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319<!-- END app snippet --> 1320 1321 <!-- BEGIN app snippet: okendo-reviews-json-ld --> 1322<!-- END app snippet --> 1323 1324<!-- BEGIN app snippet: widget-plus-initialisation-script --> 1325 1326 1327 1328 1329
1329<script async id="okendo-reviews-script" src="https://cdn-static.okendo.io/reviews-widget-plus/js/okendo-reviews.js"></script>
1329 1330 1331<!-- END app snippet --> 1332 1333 1334<!-- END app block --><!-- BEGIN app block: shopify://apps/elevar-conversion-tracking/blocks/dataLayerEmbed/bc30ab68-b15c-4311-811f-8ef485877ad6 --> 1335 1336 1337
1338<script type="module" dynamic> 1339 const configUrl = "/a/elevar/static/configs/8a155db7e33f38378045a1700f06df67a5eeed21/config.js"; 1340 const config = (await import(configUrl)).default; 1341 const scriptUrl = config.script_src_app_theme_embed; 1342 1343 if (scriptUrl) { 1344 const { handler } = await import(scriptUrl); 1345 1346 await handler( 1347 config, 1348 { 1349 cartData: { 1350 marketId: "63223693631", 1351 localeCountryCode:"US", 1352 attributes:{}, 1353 cartTotal: "0.0", 1354 currencyCode:"USD", 1355 items: [] 1356} 1357, 1358 user: { 1359 cartTotal: "0.0", 1360 currencyCode:"USD", 1361 customer: {}, 1362} 1363, 1364 isOnCartPage:false, 1365 collectionView:null, 1366 searchResultsView:null, 1367 productView:null, 1368 } 1369 ); 1370 } 1371</script>
1371 1372 1373 1374<!-- END app block --><!-- BEGIN app block: shopify://apps/gorgias-live-chat-helpdesk/blocks/gorgias/a66db725-7b96-4e3f-916e-6c8e6f87aaaa -->
1375<script defer data-gorgias-loader-chat src="https://config.gorgias.chat/bundle-loader/shopify/drinktrade.myshopify.com"></script>
1375 1376 1377
1378<script defer data-gorgias-loader-convert src="https://content.9gtb.com/loader.js"></script>
1378 1379 1380
1381<script defer data-gorgias-loader-mailto-replace src="https://config.gorgias.help/api/contact-forms/replace-mailto-script.js?shopName=drinktrade"></script>
1381 1382 1383 1384<!-- END app block --><!-- BEGIN app block: shopify://apps/helium-customer-fields/blocks/app-embed/bab58598-3e6a-4377-aaaa-97189b15f131 --> 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423
1424<script> 1425 if ('CF' in window) { 1426 window.CF.appEmbedEnabled = true; 1427 } else { 1428 window.CF = { 1429 appEmbedEnabled: true, 1430 }; 1431 } 1432 1433 window.CF.editAccountFormId = "dGtW0L"; 1434 window.CF.registrationFormId = ""; 1435</script>
1435 1436 1437<!-- BEGIN app snippet: patch-registration-links --> 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476
1477<script> 1478 function patchRegistrationLinks() { 1479 const PATCHABLE_LINKS_SELECTOR = 'a[href*="/account/register"]'; 1480 1481 const search = new URLSearchParams(window.location.search); 1482 const checkoutUrl = search.get('checkout_url'); 1483 const returnUrl = search.get('return_url'); 1484 1485 const redirectUrl = checkoutUrl || returnUrl; 1486 if (!redirectUrl) return; 1487 1488 const registrationLinks = Array.from(document.querySelectorAll(PATCHABLE_LINKS_SELECTOR)); 1489 registrationLinks.forEach(link => { 1490 const url = new URL(link.href); 1491 1492 url.searchParams.set('return_url', redirectUrl); 1493 1494 link.href = url.href; 1495 }); 1496 } 1497 1498 if (['complete', 'interactive', 'loaded'].includes(document.readyState)) { 1499 patchRegistrationLinks(); 1500 } else { 1501 document.addEventListener('DOMContentLoaded', () => patchRegistrationLinks()); 1502 } 1503</script>
1503<!-- END app snippet --> 1504<!-- BEGIN app snippet: patch-login-grecaptcha-conflict --> 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543
1544<script> 1545 // Fixes a problem where both grecaptcha and hcaptcha response fields are included in the /account/login form submission 1546 // resulting in a 404 on the /challenge page. 1547 // This is caused by our triggerShopifyRecaptchaLoad function in initialize-forms.liquid.ejs 1548 // The fix itself just removes the unnecessary g-recaptcha-response input 1549 1550 function patchLoginGrecaptchaConflict() { 1551 Array.from(document.querySelectorAll('form')).forEach(form => { 1552 form.addEventListener('submit', e => { 1553 const grecaptchaResponse = form.querySelector('[name="g-recaptcha-response"]'); 1554 const hcaptchaResponse = form.querySelector('[name="h-captcha-response"]'); 1555 1556 if (grecaptchaResponse && hcaptchaResponse) { 1557 // Can't use both. Only keep hcaptcha response field. 1558 grecaptchaResponse.parentElement.removeChild(grecaptchaResponse); 1559 } 1560 }) 1561 }) 1562 } 1563 1564 if (['complete', 'interactive', 'loaded'].includes(document.readyState)) { 1565 patchLoginGrecaptchaConflict(); 1566 } else { 1567 document.addEventListener('DOMContentLoaded', () => patchLoginGrecaptchaConflict()); 1568 } 1569</script>
1569<!-- END app snippet --> 1570<!-- BEGIN app snippet: embed-data --> 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623
1624<script> 1625 window.CF.version = "5.3.0"; 1626 window.CF.environment = 1627 { 1628 1629 "domain": "drinktrade.myshopify.com", 1630 "baseApiUrl": "https:\/\/app.customerfields.com", 1631 "captchaSiteKey": "6LdiRtEnAAAAABo2kBzBbQ2n0xArOl868dL5jzPN", 1632 "captchaEnabled": true, 1633 "proxyPath": "\/tools\/customr", 1634 "countries": [{"name":"Afghanistan","code":"AF"},{"name":"à land Islands","code":"AX"},{"name":"Albania","code":"AL"},{"name":"Algeria","code":"DZ"},{"name":"Andorra","code":"AD"},{"name":"Angola","code":"AO"},{"name":"Anguilla","code":"AI"},{"name":"Antigua \u0026 Barbuda","code":"AG"},{"name":"Argentina","code":"AR","provinces":[{"name":"Buenos Aires Province","code":"B"},{"name":"Catamarca","code":"K"},{"name":"Chaco","code":"H"},{"name":"Chubut","code":"U"},{"name":"Buenos Aires (Autonomous City)","code":"C"},{"name":"Córdoba","code":"X"},{"name":"Corrientes","code":"W"},{"name":"Entre RÃos","code":"E"},{"name":"Formosa","code":"P"},{"name":"Jujuy","code":"Y"},{"name":"La Pampa","code":"L"},{"name":"La Rioja","code":"F"},{"name":"Mendoza","code":"M"},{"name":"Misiones","code":"N"},{"name":"Neuquén","code":"Q"},{"name":"RÃo Negro","code":"R"},{"name":"Salta","code":"A"},{"name":"San Juan","code":"J"},{"name":"San Luis","code":"D"},{"name":"Santa Cruz","code":"Z"},{"name":"Santa Fe","code":"S"},{"name":"Santiago del Estero","code":"G"},{"name":"Tierra del Fuego","code":"V"},{"name":"Tucumán","code":"T"}]},{"name":"Armenia","code":"AM"},{"name":"Aruba","code":"AW"},{"name":"Ascension Island","code":"AC"},{"name":"Australia","code":"AU","provinces":[{"name":"Australian Capital Territory","code":"ACT"},{"name":"New South Wales","code":"NSW"},{"name":"Northern Territory","code":"NT"},{"name":"Queensland","code":"QLD"},{"name":"South Australia","code":"SA"},{"name":"Tasmania","code":"TAS"},{"name":"Victoria","code":"VIC"},{"name":"Western Australia","code":"WA"}]},{"name":"Austria","code":"AT"},{"name":"Azerbaijan","code":"AZ"},{"name":"Bahamas","code":"BS"},{"name":"Bahrain","code":"BH"},{"name":"Bangladesh","code":"BD"},{"name":"Barbados","code":"BB"},{"name":"Belarus","code":"BY"},{"name":"Belgium","code":"BE"},{"name":"Belize","code":"BZ"},{"name":"Benin","code":"BJ"},{"name":"Bermuda","code":"BM"},{"name":"Bhutan","code":"BT"},{"name":"Bolivia","code":"BO"},{"name":"Bosnia \u0026 Herzegovina","code":"BA"},{"name":"Botswana","code":"BW"},{"name":"Brazil","code":"BR","provinces":[{"name":"Acre","code":"AC"},{"name":"Alagoas","code":"AL"},{"name":"Amapá","code":"AP"},{"name":"Amazonas","code":"AM"},{"name":"Bahia","code":"BA"},{"name":"Ceará","code":"CE"},{"name":"Federal District","code":"DF"},{"name":"EspÃrito Santo","code":"ES"},{"name":"Goiás","code":"GO"},{"name":"Maranhão","code":"MA"},{"name":"Mato Grosso","code":"MT"},{"name":"Mato Grosso do Sul","code":"MS"},{"name":"Minas Gerais","code":"MG"},{"name":"Pará","code":"PA"},{"name":"ParaÃba","code":"PB"},{"name":"Paraná","code":"PR"},{"name":"Pernambuco","code":"PE"},{"name":"PiauÃ","code":"PI"},{"name":"Rio Grande do Norte","code":"RN"},{"name":"Rio Grande do Sul","code":"RS"},{"name":"Rio de Janeiro","code":"RJ"},{"name":"Rondônia","code":"RO"},{"name":"Roraima","code":"RR"},{"name":"Santa Catarina","code":"SC"},{"name":"São Paulo","code":"SP"},{"name":"Sergipe","code":"SE"},{"name":"Tocantins","code":"TO"}]},{"name":"British Indian Ocean Territory","code":"IO"},{"name":"British Virgin Islands","code":"VG"},{"name":"Brunei","code":"BN"},{"name":"Bulgaria","code":"BG"},{"name":"Burkina Faso","code":"BF"},{"name":"Burundi","code":"BI"},{"name":"Cambodia","code":"KH"},{"name":"Cameroon","code":"CM"},{"name":"Canada","code":"CA","provinces":[{"name":"Alberta","code":"AB"},{"name":"British Columbia","code":"BC"},{"name":"Manitoba","code":"MB"},{"name":"New Brunswick","code":"NB"},{"name":"Newfoundland and Labrador","code":"NL"},{"name":"Northwest Territories","code":"NT"},{"name":"Nova Scotia","code":"NS"},{"name":"Nunavut","code":"NU"},{"name":"Ontario","code":"ON"},{"name":"Prince Edward Island","code":"PE"},{"name":"Quebec","code":"QC"},{"name":"Saskatchewan","code":"SK"},{"name":"Yukon","code":"YT"}]}
1634,{"name":"Cape Verde","code":"CV"},{"name":"Caribbean Netherlands","code":"BQ"},{"name":"Cayman Islands","code":"KY"},{"name":"Central African Republic","code":"CF"},{"name":"Chad","code":"TD"},{"name":"Chile","code":"CL","provinces":[{"name":"Arica y Parinacota","code":"AP"},{"name":"Tarapacá","code":"TA"},{"name":"Antofagasta","code":"AN"},{"name":"Atacama","code":"AT"},{"name":"Coquimbo","code":"CO"},{"name":"ValparaÃso","code":"VS"},{"name":"Santiago Metropolitan","code":"RM"},{"name":"Libertador General Bernardo OâHiggins","code":"LI"},{"name":"Maule","code":"ML"},{"name":"Ãuble","code":"NB"},{"name":"BÃo BÃo","code":"BI"},{"name":"AraucanÃa","code":"AR"},{"name":"Los RÃos","code":"LR"},{"name":"Los Lagos","code":"LL"},{"name":"Aysén","code":"AI"},{"name":"Magallanes Region","code":"MA"}]},{"name":"China","code":"CN","provinces":[{"name":"Anhui","code":"AH"},{"name":"Beijing","code":"BJ"},{"name":"Chongqing","code":"CQ"},{"name":"Fujian","code":"FJ"},{"name":"Gansu","code":"GS"},{"name":"Guangdong","code":"GD"},{"name":"Guangxi","code":"GX"},{"name":"Guizhou","code":"GZ"},{"name":"Hainan","code":"HI"},{"name":"Hebei","code":"HE"},{"name":"Heilongjiang","code":"HL"},{"name":"Henan","code":"HA"},{"name":"Hubei","code":"HB"},{"name":"Hunan","code":"HN"},{"name":"Inner Mongolia","code":"NM"},{"name":"Jiangsu","code":"JS"},{"name":"Jiangxi","code":"JX"},{"name":"Jilin","code":"JL"},{"name":"Liaoning","code":"LN"},{"name":"Ningxia","code":"NX"},{"name":"Qinghai","code":"QH"},{"name":"Shaanxi","code":"SN"},{"name":"Shandong","code":"SD"},{"name":"Shanghai","code":"SH"},{"name":"Shanxi","code":"SX"},{"name":"Sichuan","code":"SC"},{"name":"Tianjin","code":"TJ"},{"name":"Xinjiang","code":"XJ"},{"name":"Tibet","code":"YZ"},{"name":"Yunnan","code":"YN"},{"name":"Zhejiang","code":"ZJ"}]},{"name":"Christmas Island","code":"CX"},{"name":"Cocos (Keeling) Islands","code":"CC"},{"name":"Colombia","code":"CO","provinces":[{"name":"Capital District","code":"DC"},{"name":"Amazonas","code":"AMA"},{"name":"Antioquia","code":"ANT"},{"name":"Arauca","code":"ARA"},{"name":"Atlántico","code":"ATL"},{"name":"BolÃvar","code":"BOL"},{"name":"Boyacá","code":"BOY"},{"name":"Caldas","code":"CAL"},{"name":"Caquetá","code":"CAQ"},{"name":"Casanare","code":"CAS"},{"name":"Cauca","code":"CAU"},{"name":"Cesar","code":"CES"},{"name":"Chocó","code":"CHO"},{"name":"Córdoba","code":"COR"},{"name":"Cundinamarca","code":"CUN"},{"name":"GuainÃa","code":"GUA"},{"name":"Guaviare","code":"GUV"},{"name":"Huila","code":"HUI"},{"name":"La Guajira","code":"LAG"},{"name":"Magdalena","code":"MAG"},{"name":"Meta","code":"MET"},{"name":"Nariño","code":"NAR"},{"name":"Norte de Santander","code":"NSA"},{"name":"Putumayo","code":"PUT"},{"name":"QuindÃo","code":"QUI"},{"name":"Risaralda","code":"RIS"},{"name":"San Andrés \u0026 Providencia","code":"SAP"},{"name":"Santander","code":"SAN"},{"name":"Sucre","code":"SUC"},{"name":"Tolima","code":"TOL"},{"name":"Valle del Cauca","code":"VAC"},{"name":"Vaupés","code":"VAU"},{"name":"Vichada","code":"VID"}]},{"name":"Comoros","code":"KM"},{"name":"Congo - Brazzaville","code":"CG"},{"name":"Congo - Kinshasa","code":"CD"},{"name":"Cook Islands","code":"CK"},{"name":"Costa Rica","code":"CR","provinces":[{"name":"Alajuela","code":"CR-A"},{"name":"Cartago","code":"CR-C"},{"name":"Guanacaste","code":"CR-G"},{"name":"Heredia","code":"CR-H"},{"name":"Limón","code":"CR-L"},{"name":"Puntarenas","code":"CR-P"},{"name":"San José","code":"CR-SJ"}]},{"name":"Croatia","code":"HR"},{"name":"Curaçao","code":"CW"},{"name":"Cyprus","code":"CY"},{"name":"Czechia","code":"CZ"},{"name":"Côte dâIvoire","code":"CI"},{"name":"Denmark","code":"DK"},{"name":"Djibouti","code":"DJ"},{"name":"Dominica","code":"DM"},{"name":"Dominican Republic","code":"DO"},{"name":"Ecuador","code":"EC"},{"name":"Egypt","code":"EG","provinces":[{"name":"6th of October","code":"SU"},{"name":"Al Sharqia","code":"SHR"},{"name":"Alexandria","code":"ALX"},{"name":"Aswan","code":"ASN"},{"name":"Asyut","code":"AST"},{"name":"Beheira","code":"BH"},{"name":"Beni Suef","code":"BNS"},{"name":"Cairo","code":"C"},{"name":"Dakahlia","code":"DK"},{"name":"Damietta","code":"DT"},{"name":"Faiyum","code":"FYM"},{"name":"Gharbia","code":"GH"},{"name":"Giza","code":"GZ"},{"name":"Helwan","code":"HU"},{"name":"Ismailia","code":"IS"},{"name":"Kafr el-Sheikh","code":"KFS"},{"name":"Luxor","code":"LX"},{"name":"Matrouh","code":"MT"},{"name":"Minya","code":"MN"},{"name":"Monufia","code":"MNF"},{"name":"New Valley","code":"WAD"},{"name":"North Sinai","code":"SIN"},{"name":"Port Said","code":"PTS"},{"name":"Qalyubia","code":"KB"},{"name":"Qena","code":"KN"},{"name":"Red Sea","code":"BA"},{"name":"Sohag","code":"SHG"},{"name":"South Sinai","code":"JS"},{"name":"Suez","code":"SUZ"}]},{"name":"El Salvador","code":"SV","provinces":[{"name":"Ahuachapán","code":"SV-AH"},{"name":"Cabañas","code":"SV-CA"},{"name":"Chalatenango","code":"SV-CH"},{"name":"Cuscatlán","code":"SV-CU"},{"name":"La Libertad","code":"SV-LI"},{"name":"La Paz","code":"SV-PA"},{"name":"La Unión","code":"SV-UN"},{"name":"Morazán","code":"SV-MO"},{"name":"San Miguel","code":"SV-SM"},{"name":"San Salvador","code":"SV-SS"},{"name":"San Vicente","code":"SV-SV"},{"name":"Santa Ana","code":"SV-SA"},{"name":"Sonsonate","code":"SV-SO"},{"name":"Usulután","code":"SV-US"}]},{"name":"Equatorial Guinea","code":"GQ"},{"name":"Eritrea","code":"ER"},{"name":"Estonia","code":"EE"},{"name":"Eswatini","code":"SZ"},{"name":"Ethiopia","code":"ET"},{"name":"Falkland Islands","code":"FK"},{"name":"Faroe Islands","code":"FO"},{"name":"Fiji","code":"FJ"},{"name":"Finland","code":"FI"},{"name":"France","code":"FR"},{"name":"French Guiana","code":"GF"},{"name":"French Polynesia","code":"PF"},{"name":"French Southern Territories","code":"TF"},{"name":"Gabon","code":"GA"},{"name":"Gambia","code":"GM"},{"name":"Georgia","code":"GE"},{"name":"Germany","code":"DE"},{"name":"Ghana","code":"GH"},{"name":"Gibraltar","code":"GI"},{"name":"Greece","code":"GR"},{"name":"Greenland","code":"GL"},{"name":"Grenada","code":"GD"},{"name":"Guadeloupe","code":"GP"},{"name":"Guatemala","code":"GT","provinces":[{"name":"Alta Verapaz","code":"AVE"},{"name":"Baja Verapaz","code":"BVE"},{"name":"Chimaltenango","code":"CMT"},{"name":"Chiquimula","code":"CQM"},{"name":"El Progreso","code":"EPR"},{"name":"Escuintla","code":"ESC"},{"name":"Guatemala","code":"GUA"},{"name":"Huehuetenango","code":"HUE"},{"name":"Izabal","code":"IZA"},{"name":"Jalapa","code":"JAL"},{"name":"Jutiapa","code":"JUT"},{"name":"Petén","code":"PET"},{"name":"Quetzaltenango","code":"QUE"},{"name":"Quiché","code":"QUI"},{"name":"Retalhuleu","code":"RET"},{"name":"Sacatepéquez","code":"SAC"},{"name":"San Marcos","code":"SMA"},{"name":"Santa Rosa","code":"SRO"},{"name":"Sololá","code":"SOL"},{"name":"Suchitepéquez","code":"SUC"},{"name":"Totonicapán","code":"TOT"},{"name":"Zacapa","code":"ZAC"}]},{"name":"Guernsey","code":"GG"},{"name":"Guinea","code":"GN"},{"name":"Guinea-Bissau","code":"GW"},{"name":"Guyana","code":"GY"},{"name":"Haiti","code":"HT"},{"name":"Honduras","code":"HN"},{"name":"Hong Kong SAR","code":"HK","provinces":[{"name":"Hong Kong Island","code":"HK"},{"name":"Kowloon","code":"KL"},{"name":"New Territories","code":"NT"}]}
1634,{"name":"Hungary","code":"HU"},{"name":"Iceland","code":"IS"},{"name":"India","code":"IN","provinces":[{"name":"Andaman and Nicobar Islands","code":"AN"},{"name":"Andhra Pradesh","code":"AP"},{"name":"Arunachal Pradesh","code":"AR"},{"name":"Assam","code":"AS"},{"name":"Bihar","code":"BR"},{"name":"Chandigarh","code":"CH"},{"name":"Chhattisgarh","code":"CG"},{"name":"Dadra and Nagar Haveli","code":"DN"},{"name":"Daman and Diu","code":"DD"},{"name":"Delhi","code":"DL"},{"name":"Goa","code":"GA"},{"name":"Gujarat","code":"GJ"},{"name":"Haryana","code":"HR"},{"name":"Himachal Pradesh","code":"HP"},{"name":"Jammu and Kashmir","code":"JK"},{"name":"Jharkhand","code":"JH"},{"name":"Karnataka","code":"KA"},{"name":"Kerala","code":"KL"},{"name":"Ladakh","code":"LA"},{"name":"Lakshadweep","code":"LD"},{"name":"Madhya Pradesh","code":"MP"},{"name":"Maharashtra","code":"MH"},{"name":"Manipur","code":"MN"},{"name":"Meghalaya","code":"ML"},{"name":"Mizoram","code":"MZ"},{"name":"Nagaland","code":"NL"},{"name":"Odisha","code":"OR"},{"name":"Puducherry","code":"PY"},{"name":"Punjab","code":"PB"},{"name":"Rajasthan","code":"RJ"},{"name":"Sikkim","code":"SK"},{"name":"Tamil Nadu","code":"TN"},{"name":"Telangana","code":"TS"},{"name":"Tripura","code":"TR"},{"name":"Uttar Pradesh","code":"UP"},{"name":"Uttarakhand","code":"UK"},{"name":"West Bengal","code":"WB"}]},{"name":"Indonesia","code":"ID","provinces":[{"name":"Aceh","code":"AC"},{"name":"Bali","code":"BA"},{"name":"BangkaâBelitung Islands","code":"BB"},{"name":"Banten","code":"BT"},{"name":"Bengkulu","code":"BE"},{"name":"Gorontalo","code":"GO"},{"name":"Jakarta","code":"JK"},{"name":"Jambi","code":"JA"},{"name":"West Java","code":"JB"},{"name":"Central Java","code":"JT"},{"name":"East Java","code":"JI"},{"name":"West Kalimantan","code":"KB"},{"name":"South Kalimantan","code":"KS"},{"name":"Central Kalimantan","code":"KT"},{"name":"East Kalimantan","code":"KI"},{"name":"North Kalimantan","code":"KU"},{"name":"Riau Islands","code":"KR"},{"name":"Lampung","code":"LA"},{"name":"Maluku","code":"MA"},{"name":"North Maluku","code":"MU"},{"name":"North Sumatra","code":"SU"},{"name":"West Nusa Tenggara","code":"NB"},{"name":"East Nusa Tenggara","code":"NT"},{"name":"Papua","code":"PA"},{"name":"West Papua","code":"PB"},{"name":"Riau","code":"RI"},{"name":"South Sumatra","code":"SS"},{"name":"West Sulawesi","code":"SR"},{"name":"South Sulawesi","code":"SN"},{"name":"Central Sulawesi","code":"ST"},{"name":"Southeast Sulawesi","code":"SG"},{"name":"North Sulawesi","code":"SA"},{"name":"West Sumatra","code":"SB"},{"name":"Yogyakarta","code":"YO"}]},{"name":"Iraq","code":"IQ"},{"name":"Ireland","code":"IE","provinces":[{"name":"Carlow","code":"CW"},{"name":"Cavan","code":"CN"},{"name":"Clare","code":"CE"},{"name":"Cork","code":"CO"},{"name":"Donegal","code":"DL"},{"name":"Dublin","code":"D"},{"name":"Galway","code":"G"},{"name":"Kerry","code":"KY"},{"name":"Kildare","code":"KE"},{"name":"Kilkenny","code":"KK"},{"name":"Laois","code":"LS"},{"name":"Leitrim","code":"LM"},{"name":"Limerick","code":"LK"},{"name":"Longford","code":"LD"},{"name":"Louth","code":"LH"},{"name":"Mayo","code":"MO"},{"name":"Meath","code":"MH"},{"name":"Monaghan","code":"MN"},{"name":"Offaly","code":"OY"},{"name":"Roscommon","code":"RN"},{"name":"Sligo","code":"SO"},{"name":"Tipperary","code":"TA"},{"name":"Waterford","code":"WD"},{"name":"Westmeath","code":"WH"},{"name":"Wexford","code":"WX"},{"name":"Wicklow","code":"WW"}]},{"name":"Isle of Man","code":"IM"},{"name":"Israel","code":"IL"},{"name":"Italy","code":"IT","provinces":[{"name":"Agrigento","code":"AG"},{"name":"Alessandria","code":"AL"},{"name":"Ancona","code":"AN"},{"name":"Aosta Valley","code":"AO"},{"name":"Arezzo","code":"AR"},{"name":"Ascoli Piceno","code":"AP"},{"name":"Asti","code":"AT"},{"name":"Avellino","code":"AV"},{"name":"Bari","code":"BA"},{"name":"Barletta-Andria-Trani","code":"BT"},{"name":"Belluno","code":"BL"},{"name":"Benevento","code":"BN"},{"name":"Bergamo","code":"BG"},{"name":"Biella","code":"BI"},{"name":"Bologna","code":"BO"},{"name":"South Tyrol","code":"BZ"},{"name":"Brescia","code":"BS"},{"name":"Brindisi","code":"BR"},{"name":"Cagliari","code":"CA"},{"name":"Caltanissetta","code":"CL"},{"name":"Campobasso","code":"CB"},{"name":"Carbonia-Iglesias","code":"CI"},{"name":"Caserta","code":"CE"},{"name":"Catania","code":"CT"},{"name":"Catanzaro","code":"CZ"},{"name":"Chieti","code":"CH"},{"name":"Como","code":"CO"},{"name":"Cosenza","code":"CS"},{"name":"Cremona","code":"CR"},{"name":"Crotone","code":"KR"},{"name":"Cuneo","code":"CN"},{"name":"Enna","code":"EN"},{"name":"Fermo","code":"FM"},{"name":"Ferrara","code":"FE"},{"name":"Florence","code":"FI"},{"name":"Foggia","code":"FG"},{"name":"Forlì-Cesena","code":"FC"},{"name":"Frosinone","code":"FR"},{"name":"Genoa","code":"GE"},{"name":"Gorizia","code":"GO"},{"name":"Grosseto","code":"GR"},{"name":"Imperia","code":"IM"},{"name":"Isernia","code":"IS"},{"name":"LâAquila","code":"AQ"},{"name":"La Spezia","code":"SP"},{"name":"Latina","code":"LT"},{"name":"Lecce","code":"LE"},{"name":"Lecco","code":"LC"},{"name":"Livorno","code":"LI"},{"name":"Lodi","code":"LO"},{"name":"Lucca","code":"LU"},{"name":"Macerata","code":"MC"},{"name":"Mantua","code":"MN"},{"name":"Massa and Carrara","code":"MS"},{"name":"Matera","code":"MT"},{"name":"Medio Campidano","code":"VS"},{"name":"Messina","code":"ME"},{"name":"Milan","code":"MI"},{"name":"Modena","code":"MO"},{"name":"Monza and Brianza","code":"MB"},{"name":"Naples","code":"NA"},{"name":"Novara","code":"NO"},{"name":"Nuoro","code":"NU"},{"name":"Ogliastra","code":"OG"},{"name":"Olbia-Tempio","code":"OT"},{"name":"Oristano","code":"OR"},{"name":"Padua","code":"PD"},{"name":"Palermo","code":"PA"},{"name":"Parma","code":"PR"},{"name":"Pavia","code":"PV"},{"name":"Perugia","code":"PG"},{"name":"Pesaro and Urbino","code":"PU"},{"name":"Pescara","code":"PE"},{"name":"Piacenza","code":"PC"},{"name":"Pisa","code":"PI"},{"name":"Pistoia","code":"PT"},{"name":"Pordenone","code":"PN"},{"name":"Potenza","code":"PZ"},{"name":"Prato","code":"PO"},{"name":"Ragusa","code":"RG"},{"name":"Ravenna","code":"RA"},{"name":"Reggio Calabria","code":"RC"},{"name":"Reggio Emilia","code":"RE"},{"name":"Rieti","code":"RI"},{"name":"Rimini","code":"RN"},{"name":"Rome","code":"RM"},{"name":"Rovigo","code":"RO"},{"name":"Salerno","code":"SA"},{"name":"Sassari","code":"SS"},{"name":"Savona","code":"SV"},{"name":"Siena","code":"SI"},{"name":"Syracuse","code":"SR"},{"name":"Sondrio","code":"SO"},{"name":"Taranto","code":"TA"},{"name":"Teramo","code":"TE"},{"name":"Terni","code":"TR"},{"name":"Turin","code":"TO"},{"name":"Trapani","code":"TP"},{"name":"Trentino","code":"TN"},{"name":"Treviso","code":"TV"},{"name":"Trieste","code":"TS"},{"name":"Udine","code":"UD"},{"name":"Varese","code":"VA"},{"name":"Venice","code":"VE"},{"name":"Verbano-Cusio-Ossola","code":"VB"},{"name":"Vercelli","code":"VC"},{"name":"Verona","code":"VR"},{"name":"Vibo Valentia","code":"VV"},{"name":"Vicenza","code":"VI"},{"name":"Viterbo","code":"VT"}]}
1634,{"name":"Jamaica","code":"JM"},{"name":"Japan","code":"JP","provinces":[{"name":"Hokkaido","code":"JP-01"},{"name":"Aomori","code":"JP-02"},{"name":"Iwate","code":"JP-03"},{"name":"Miyagi","code":"JP-04"},{"name":"Akita","code":"JP-05"},{"name":"Yamagata","code":"JP-06"},{"name":"Fukushima","code":"JP-07"},{"name":"Ibaraki","code":"JP-08"},{"name":"Tochigi","code":"JP-09"},{"name":"Gunma","code":"JP-10"},{"name":"Saitama","code":"JP-11"},{"name":"Chiba","code":"JP-12"},{"name":"Tokyo","code":"JP-13"},{"name":"Kanagawa","code":"JP-14"},{"name":"Niigata","code":"JP-15"},{"name":"Toyama","code":"JP-16"},{"name":"Ishikawa","code":"JP-17"},{"name":"Fukui","code":"JP-18"},{"name":"Yamanashi","code":"JP-19"},{"name":"Nagano","code":"JP-20"},{"name":"Gifu","code":"JP-21"},{"name":"Shizuoka","code":"JP-22"},{"name":"Aichi","code":"JP-23"},{"name":"Mie","code":"JP-24"},{"name":"Shiga","code":"JP-25"},{"name":"Kyoto","code":"JP-26"},{"name":"Osaka","code":"JP-27"},{"name":"Hyogo","code":"JP-28"},{"name":"Nara","code":"JP-29"},{"name":"Wakayama","code":"JP-30"},{"name":"Tottori","code":"JP-31"},{"name":"Shimane","code":"JP-32"},{"name":"Okayama","code":"JP-33"},{"name":"Hiroshima","code":"JP-34"},{"name":"Yamaguchi","code":"JP-35"},{"name":"Tokushima","code":"JP-36"},{"name":"Kagawa","code":"JP-37"},{"name":"Ehime","code":"JP-38"},{"name":"Kochi","code":"JP-39"},{"name":"Fukuoka","code":"JP-40"},{"name":"Saga","code":"JP-41"},{"name":"Nagasaki","code":"JP-42"},{"name":"Kumamoto","code":"JP-43"},{"name":"Oita","code":"JP-44"},{"name":"Miyazaki","code":"JP-45"},{"name":"Kagoshima","code":"JP-46"},{"name":"Okinawa","code":"JP-47"}]},{"name":"Jersey","code":"JE"},{"name":"Jordan","code":"JO"},{"name":"Kazakhstan","code":"KZ"},{"name":"Kenya","code":"KE"},{"name":"Kiribati","code":"KI"},{"name":"Kosovo","code":"XK"},{"name":"Kuwait","code":"KW","provinces":[{"name":"Al Ahmadi","code":"KW-AH"},{"name":"Al Asimah","code":"KW-KU"},{"name":"Al Farwaniyah","code":"KW-FA"},{"name":"Al Jahra","code":"KW-JA"},{"name":"Hawalli","code":"KW-HA"},{"name":"Mubarak Al-Kabeer","code":"KW-MU"}]},{"name":"Kyrgyzstan","code":"KG"},{"name":"Laos","code":"LA"},{"name":"Latvia","code":"LV"},{"name":"Lebanon","code":"LB"},{"name":"Lesotho","code":"LS"},{"name":"Liberia","code":"LR"},{"name":"Libya","code":"LY"},{"name":"Liechtenstein","code":"LI"},{"name":"Lithuania","code":"LT"},{"name":"Luxembourg","code":"LU"},{"name":"Macao SAR","code":"MO"},{"name":"Madagascar","code":"MG"},{"name":"Malawi","code":"MW"},{"name":"Malaysia","code":"MY","provinces":[{"name":"Johor","code":"JHR"},{"name":"Kedah","code":"KDH"},{"name":"Kelantan","code":"KTN"},{"name":"Kuala Lumpur","code":"KUL"},{"name":"Labuan","code":"LBN"},{"name":"Malacca","code":"MLK"},{"name":"Negeri Sembilan","code":"NSN"},{"name":"Pahang","code":"PHG"},{"name":"Penang","code":"PNG"},{"name":"Perak","code":"PRK"},{"name":"Perlis","code":"PLS"},{"name":"Putrajaya","code":"PJY"},{"name":"Sabah","code":"SBH"},{"name":"Sarawak","code":"SWK"},{"name":"Selangor","code":"SGR"},{"name":"Terengganu","code":"TRG"}]},{"name":"Maldives","code":"MV"},{"name":"Mali","code":"ML"},{"name":"Malta","code":"MT"},{"name":"Martinique","code":"MQ"},{"name":"Mauritania","code":"MR"},{"name":"Mauritius","code":"MU"},{"name":"Mayotte","code":"YT"},{"name":"Mexico","code":"MX","provinces":[{"name":"Aguascalientes","code":"AGS"},{"name":"Baja California","code":"BC"},{"name":"Baja California Sur","code":"BCS"},{"name":"Campeche","code":"CAMP"},{"name":"Chiapas","code":"CHIS"},{"name":"Chihuahua","code":"CHIH"},{"name":"Ciudad de Mexico","code":"DF"},{"name":"Coahuila","code":"COAH"},{"name":"Colima","code":"COL"},{"name":"Durango","code":"DGO"},{"name":"Guanajuato","code":"GTO"},{"name":"Guerrero","code":"GRO"},{"name":"Hidalgo","code":"HGO"},{"name":"Jalisco","code":"JAL"},{"name":"Mexico State","code":"MEX"},{"name":"Michoacán","code":"MICH"},{"name":"Morelos","code":"MOR"},{"name":"Nayarit","code":"NAY"},{"name":"Nuevo León","code":"NL"},{"name":"Oaxaca","code":"OAX"},{"name":"Puebla","code":"PUE"},{"name":"Querétaro","code":"QRO"},{"name":"Quintana Roo","code":"Q ROO"},{"name":"San Luis PotosÃ","code":"SLP"},{"name":"Sinaloa","code":"SIN"},{"name":"Sonora","code":"SON"},{"name":"Tabasco","code":"TAB"},{"name":"Tamaulipas","code":"TAMPS"},{"name":"Tlaxcala","code":"TLAX"},{"name":"Veracruz","code":"VER"},{"name":"Yucatán","code":"YUC"},{"name":"Zacatecas","code":"ZAC"}]},{"name":"Moldova","code":"MD"},{"name":"Monaco","code":"MC"},{"name":"Mongolia","code":"MN"},{"name":"Montenegro","code":"ME"},{"name":"Montserrat","code":"MS"},{"name":"Morocco","code":"MA"},{"name":"Mozambique","code":"MZ"},{"name":"Myanmar (Burma)","code":"MM"},{"name":"Namibia","code":"NA"},{"name":"Nauru","code":"NR"},{"name":"Nepal","code":"NP"},{"name":"Netherlands","code":"NL"},{"name":"New Caledonia","code":"NC"},{"name":"New Zealand","code":"NZ","provinces":[{"name":"Auckland","code":"AUK"},{"name":"Bay of Plenty","code":"BOP"},{"name":"Canterbury","code":"CAN"},{"name":"Chatham Islands","code":"CIT"},{"name":"Gisborne","code":"GIS"},{"name":"Hawkeâs Bay","code":"HKB"},{"name":"ManawatÅ«-Whanganui","code":"MWT"},{"name":"Marlborough","code":"MBH"},{"name":"Nelson","code":"NSN"},{"name":"Northland","code":"NTL"},{"name":"Otago","code":"OTA"},{"name":"Southland","code":"STL"},{"name":"Taranaki","code":"TKI"},{"name":"Tasman","code":"TAS"},{"name":"Waikato","code":"WKO"},{"name":"Wellington","code":"WGN"},{"name":"West Coast","code":"WTC"}]},{"name":"Nicaragua","code":"NI"},{"name":"Niger","code":"NE"},{"name":"Nigeria","code":"NG","provinces":[{"name":"Abia","code":"AB"},{"name":"Federal Capital Territory","code":"FC"},{"name":"Adamawa","code":"AD"},{"name":"Akwa Ibom","code":"AK"},{"name":"Anambra","code":"AN"},{"name":"Bauchi","code":"BA"},{"name":"Bayelsa","code":"BY"},{"name":"Benue","code":"BE"},{"name":"Borno","code":"BO"},{"name":"Cross River","code":"CR"},{"name":"Delta","code":"DE"},{"name":"Ebonyi","code":"EB"},{"name":"Edo","code":"ED"},{"name":"Ekiti","code":"EK"},{"name":"Enugu","code":"EN"},{"name":"Gombe","code":"GO"},{"name":"Imo","code":"IM"},{"name":"Jigawa","code":"JI"},{"name":"Kaduna","code":"KD"},{"name":"Kano","code":"KN"},{"name":"Katsina","code":"KT"},{"name":"Kebbi","code":"KE"},{"name":"Kogi","code":"KO"},{"name":"Kwara","code":"KW"},{"name":"Lagos","code":"LA"},{"name":"Nasarawa","code":"NA"},{"name":"Niger","code":"NI"},{"name":"Ogun","code":"OG"},{"name":"Ondo","code":"ON"},{"name":"Osun","code":"OS"},{"name":"Oyo","code":"OY"},{"name":"Plateau","code":"PL"},{"name":"Rivers","code":"RI"},{"name":"Sokoto","code":"SO"},{"name":"Taraba","code":"TA"},{"name":"Yobe","code":"YO"},{"name":"Zamfara","code":"ZA"}]}
1634,{"name":"Niue","code":"NU"},{"name":"Norfolk Island","code":"NF"},{"name":"North Macedonia","code":"MK"},{"name":"Norway","code":"NO"},{"name":"Oman","code":"OM"},{"name":"Pakistan","code":"PK"},{"name":"Palestinian Territories","code":"PS"},{"name":"Panama","code":"PA","provinces":[{"name":"Bocas del Toro","code":"PA-1"},{"name":"ChiriquÃ","code":"PA-4"},{"name":"Coclé","code":"PA-2"},{"name":"Colón","code":"PA-3"},{"name":"Darién","code":"PA-5"},{"name":"Emberá","code":"PA-EM"},{"name":"Herrera","code":"PA-6"},{"name":"Guna Yala","code":"PA-KY"},{"name":"Los Santos","code":"PA-7"},{"name":"Ngöbe-Buglé","code":"PA-NB"},{"name":"Panamá","code":"PA-8"},{"name":"West Panamá","code":"PA-10"},{"name":"Veraguas","code":"PA-9"}]},{"name":"Papua New Guinea","code":"PG"},{"name":"Paraguay","code":"PY"},{"name":"Peru","code":"PE","provinces":[{"name":"Amazonas","code":"PE-AMA"},{"name":"Ancash","code":"PE-ANC"},{"name":"ApurÃmac","code":"PE-APU"},{"name":"Arequipa","code":"PE-ARE"},{"name":"Ayacucho","code":"PE-AYA"},{"name":"Cajamarca","code":"PE-CAJ"},{"name":"El Callao","code":"PE-CAL"},{"name":"Cusco","code":"PE-CUS"},{"name":"Huancavelica","code":"PE-HUV"},{"name":"Huánuco","code":"PE-HUC"},{"name":"Ica","code":"PE-ICA"},{"name":"JunÃn","code":"PE-JUN"},{"name":"La Libertad","code":"PE-LAL"},{"name":"Lambayeque","code":"PE-LAM"},{"name":"Lima (Department)","code":"PE-LIM"},{"name":"Lima (Metropolitan)","code":"PE-LMA"},{"name":"Loreto","code":"PE-LOR"},{"name":"Madre de Dios","code":"PE-MDD"},{"name":"Moquegua","code":"PE-MOQ"},{"name":"Pasco","code":"PE-PAS"},{"name":"Piura","code":"PE-PIU"},{"name":"Puno","code":"PE-PUN"},{"name":"San MartÃn","code":"PE-SAM"},{"name":"Tacna","code":"PE-TAC"},{"name":"Tumbes","code":"PE-TUM"},{"name":"Ucayali","code":"PE-UCA"}]},{"name":"Philippines","code":"PH","provinces":[{"name":"Abra","code":"PH-ABR"},{"name":"Agusan del Norte","code":"PH-AGN"},{"name":"Agusan del Sur","code":"PH-AGS"},{"name":"Aklan","code":"PH-AKL"},{"name":"Albay","code":"PH-ALB"},{"name":"Antique","code":"PH-ANT"},{"name":"Apayao","code":"PH-APA"},{"name":"Aurora","code":"PH-AUR"},{"name":"Basilan","code":"PH-BAS"},{"name":"Bataan","code":"PH-BAN"},{"name":"Batanes","code":"PH-BTN"},{"name":"Batangas","code":"PH-BTG"},{"name":"Benguet","code":"PH-BEN"},{"name":"Biliran","code":"PH-BIL"},{"name":"Bohol","code":"PH-BOH"},{"name":"Bukidnon","code":"PH-BUK"},{"name":"Bulacan","code":"PH-BUL"},{"name":"Cagayan","code":"PH-CAG"},{"name":"Camarines Norte","code":"PH-CAN"},{"name":"Camarines Sur","code":"PH-CAS"},{"name":"Camiguin","code":"PH-CAM"},{"name":"Capiz","code":"PH-CAP"},{"name":"Catanduanes","code":"PH-CAT"},{"name":"Cavite","code":"PH-CAV"},{"name":"Cebu","code":"PH-CEB"},{"name":"Cotabato","code":"PH-NCO"},{"name":"Davao Occidental","code":"PH-DVO"},{"name":"Davao Oriental","code":"PH-DAO"},{"name":"Compostela Valley","code":"PH-COM"},{"name":"Davao del Norte","code":"PH-DAV"},{"name":"Davao del Sur","code":"PH-DAS"},{"name":"Dinagat Islands","code":"PH-DIN"},{"name":"Eastern Samar","code":"PH-EAS"},{"name":"Guimaras","code":"PH-GUI"},{"name":"Ifugao","code":"PH-IFU"},{"name":"Ilocos Norte","code":"PH-ILN"},{"name":"Ilocos Sur","code":"PH-ILS"},{"name":"Iloilo","code":"PH-ILI"},{"name":"Isabela","code":"PH-ISA"},{"name":"Kalinga","code":"PH-KAL"},{"name":"La Union","code":"PH-LUN"},{"name":"Laguna","code":"PH-LAG"},{"name":"Lanao del Norte","code":"PH-LAN"},{"name":"Lanao del Sur","code":"PH-LAS"},{"name":"Leyte","code":"PH-LEY"},{"name":"Maguindanao","code":"PH-MAG"},{"name":"Marinduque","code":"PH-MAD"},{"name":"Masbate","code":"PH-MAS"},{"name":"Metro Manila","code":"PH-00"},{"name":"Misamis Occidental","code":"PH-MSC"},{"name":"Misamis Oriental","code":"PH-MSR"},{"name":"Mountain","code":"PH-MOU"},{"name":"Negros Occidental","code":"PH-NEC"},{"name":"Negros Oriental","code":"PH-NER"},{"name":"Northern Samar","code":"PH-NSA"},{"name":"Nueva Ecija","code":"PH-NUE"},{"name":"Nueva Vizcaya","code":"PH-NUV"},{"name":"Occidental Mindoro","code":"PH-MDC"},{"name":"Oriental Mindoro","code":"PH-MDR"},{"name":"Palawan","code":"PH-PLW"},{"name":"Pampanga","code":"PH-PAM"},{"name":"Pangasinan","code":"PH-PAN"},{"name":"Quezon","code":"PH-QUE"},{"name":"Quirino","code":"PH-QUI"},{"name":"Rizal","code":"PH-RIZ"},{"name":"Romblon","code":"PH-ROM"},{"name":"Samar","code":"PH-WSA"},{"name":"Sarangani","code":"PH-SAR"},{"name":"Siquijor","code":"PH-SIG"},{"name":"Sorsogon","code":"PH-SOR"},{"name":"South Cotabato","code":"PH-SCO"},{"name":"Southern Leyte","code":"PH-SLE"},{"name":"Sultan Kudarat","code":"PH-SUK"},{"name":"Sulu","code":"PH-SLU"},{"name":"Surigao del Norte","code":"PH-SUN"},{"name":"Surigao del Sur","code":"PH-SUR"},{"name":"Tarlac","code":"PH-TAR"},{"name":"Tawi-Tawi","code":"PH-TAW"},{"name":"Zambales","code":"PH-ZMB"},{"name":"Zamboanga Sibugay","code":"PH-ZSI"},{"name":"Zamboanga del Norte","code":"PH-ZAN"},{"name":"Zamboanga del Sur","code":"PH-ZAS"}]},{"name":"Pitcairn Islands","code":"PN"},{"name":"Poland","code":"PL"},{"name":"Portugal","code":"PT","provinces":[{"name":"Azores","code":"PT-20"},{"name":"Aveiro","code":"PT-01"},{"name":"Beja","code":"PT-02"},{"name":"Braga","code":"PT-03"},{"name":"Bragança","code":"PT-04"},{"name":"Castelo Branco","code":"PT-05"},{"name":"Coimbra","code":"PT-06"},{"name":"Ãvora","code":"PT-07"},{"name":"Faro","code":"PT-08"},{"name":"Guarda","code":"PT-09"},{"name":"Leiria","code":"PT-10"},{"name":"Lisbon","code":"PT-11"},{"name":"Madeira","code":"PT-30"},{"name":"Portalegre","code":"PT-12"},{"name":"Porto","code":"PT-13"},{"name":"Santarém","code":"PT-14"},{"name":"Setúbal","code":"PT-15"},{"name":"Viana do Castelo","code":"PT-16"},{"name":"Vila Real","code":"PT-17"},{"name":"Viseu","code":"PT-18"}]}
1634,{"name":"Qatar","code":"QA"},{"name":"Réunion","code":"RE"},{"name":"Romania","code":"RO","provinces":[{"name":"Alba","code":"AB"},{"name":"Arad","code":"AR"},{"name":"ArgeÈ","code":"AG"},{"name":"BacÄu","code":"BC"},{"name":"Bihor","code":"BH"},{"name":"BistriÅ£a-NÄsÄud","code":"BN"},{"name":"BotoÅani","code":"BT"},{"name":"BrÄila","code":"BR"},{"name":"BraÅov","code":"BV"},{"name":"Bucharest","code":"B"},{"name":"BuzÄu","code":"BZ"},{"name":"CaraÈ-Severin","code":"CS"},{"name":"Cluj","code":"CJ"},{"name":"ConstanÈa","code":"CT"},{"name":"Covasna","code":"CV"},{"name":"CÄlÄraÈi","code":"CL"},{"name":"Dolj","code":"DJ"},{"name":"DâmboviÈa","code":"DB"},{"name":"GalaÈi","code":"GL"},{"name":"Giurgiu","code":"GR"},{"name":"Gorj","code":"GJ"},{"name":"Harghita","code":"HR"},{"name":"Hunedoara","code":"HD"},{"name":"IalomiÈa","code":"IL"},{"name":"IaÈi","code":"IS"},{"name":"Ilfov","code":"IF"},{"name":"MaramureÅ","code":"MM"},{"name":"MehedinÈi","code":"MH"},{"name":"MureÅ","code":"MS"},{"name":"NeamÅ£","code":"NT"},{"name":"Olt","code":"OT"},{"name":"Prahova","code":"PH"},{"name":"SÄlaj","code":"SJ"},{"name":"Satu Mare","code":"SM"},{"name":"Sibiu","code":"SB"},{"name":"Suceava","code":"SV"},{"name":"Teleorman","code":"TR"},{"name":"TimiÈ","code":"TM"},{"name":"Tulcea","code":"TL"},{"name":"Vâlcea","code":"VL"},{"name":"Vaslui","code":"VS"},{"name":"Vrancea","code":"VN"}]},{"name":"Russia","code":"RU","provinces":[{"name":"Altai Krai","code":"ALT"},{"name":"Altai","code":"AL"},{"name":"Amur","code":"AMU"},{"name":"Arkhangelsk","code":"ARK"},{"name":"Astrakhan","code":"AST"},{"name":"Belgorod","code":"BEL"},{"name":"Bryansk","code":"BRY"},{"name":"Chechen","code":"CE"},{"name":"Chelyabinsk","code":"CHE"},{"name":"Chukotka Okrug","code":"CHU"},{"name":"Chuvash","code":"CU"},{"name":"Irkutsk","code":"IRK"},{"name":"Ivanovo","code":"IVA"},{"name":"Jewish","code":"YEV"},{"name":"Kabardino-Balkar","code":"KB"},{"name":"Kaliningrad","code":"KGD"},{"name":"Kaluga","code":"KLU"},{"name":"Kamchatka Krai","code":"KAM"},{"name":"Karachay-Cherkess","code":"KC"},{"name":"Kemerovo","code":"KEM"},{"name":"Khabarovsk Krai","code":"KHA"},{"name":"Khanty-Mansi","code":"KHM"},{"name":"Kirov","code":"KIR"},{"name":"Komi","code":"KO"},{"name":"Kostroma","code":"KOS"},{"name":"Krasnodar Krai","code":"KDA"},{"name":"Krasnoyarsk Krai","code":"KYA"},{"name":"Kurgan","code":"KGN"},{"name":"Kursk","code":"KRS"},{"name":"Leningrad","code":"LEN"},{"name":"Lipetsk","code":"LIP"},{"name":"Magadan","code":"MAG"},{"name":"Mari El","code":"ME"},{"name":"Moscow","code":"MOW"},{"name":"Moscow Province","code":"MOS"},{"name":"Murmansk","code":"MUR"},{"name":"Nizhny Novgorod","code":"NIZ"},{"name":"Novgorod","code":"NGR"},{"name":"Novosibirsk","code":"NVS"},{"name":"Omsk","code":"OMS"},{"name":"Orenburg","code":"ORE"},{"name":"Oryol","code":"ORL"},{"name":"Penza","code":"PNZ"},{"name":"Perm Krai","code":"PER"},{"name":"Primorsky Krai","code":"PRI"},{"name":"Pskov","code":"PSK"},{"name":"Adygea","code":"AD"},{"name":"Bashkortostan","code":"BA"},{"name":"Buryat","code":"BU"},{"name":"Dagestan","code":"DA"},{"name":"Ingushetia","code":"IN"},{"name":"Kalmykia","code":"KL"},{"name":"Karelia","code":"KR"},{"name":"Khakassia","code":"KK"},{"name":"Mordovia","code":"MO"},{"name":"North Ossetia-Alania","code":"SE"},{"name":"Tatarstan","code":"TA"},{"name":"Rostov","code":"ROS"},{"name":"Ryazan","code":"RYA"},{"name":"Saint Petersburg","code":"SPE"},{"name":"Sakha","code":"SA"},{"name":"Sakhalin","code":"SAK"},{"name":"Samara","code":"SAM"},{"name":"Saratov","code":"SAR"},{"name":"Smolensk","code":"SMO"},{"name":"Stavropol Krai","code":"STA"},{"name":"Sverdlovsk","code":"SVE"},{"name":"Tambov","code":"TAM"},{"name":"Tomsk","code":"TOM"},{"name":"Tula","code":"TUL"},{"name":"Tver","code":"TVE"},{"name":"Tyumen","code":"TYU"},{"name":"Tuva","code":"TY"},{"name":"Udmurt","code":"UD"},{"name":"Ulyanovsk","code":"ULY"},{"name":"Vladimir","code":"VLA"},{"name":"Volgograd","code":"VGG"},{"name":"Vologda","code":"VLG"},{"name":"Voronezh","code":"VOR"},{"name":"Yamalo-Nenets Okrug","code":"YAN"},{"name":"Yaroslavl","code":"YAR"},{"name":"Zabaykalsky Krai","code":"ZAB"}]},{"name":"Rwanda","code":"RW"},{"name":"Samoa","code":"WS"},{"name":"San Marino","code":"SM"},{"name":"São Tomé \u0026 PrÃncipe","code":"ST"},{"name":"Saudi Arabia","code":"SA"},{"name":"Senegal","code":"SN"},{"name":"Serbia","code":"RS"},{"name":"Seychelles","code":"SC"},{"name":"Sierra Leone","code":"SL"},{"name":"Singapore","code":"SG"},{"name":"Sint Maarten","code":"SX"},{"name":"Slovakia","code":"SK"},{"name":"Slovenia","code":"SI"},{"name":"Solomon Islands","code":"SB"},{"name":"Somalia","code":"SO"},{"name":"South Africa","code":"ZA","provinces":[{"name":"Eastern Cape","code":"EC"},{"name":"Free State","code":"FS"},{"name":"Gauteng","code":"GP"},{"name":"KwaZulu-Natal","code":"NL"},{"name":"Limpopo","code":"LP"},{"name":"Mpumalanga","code":"MP"},{"name":"North West","code":"NW"},{"name":"Northern Cape","code":"NC"},{"name":"Western Cape","code":"WC"}]},{"name":"South Georgia \u0026 South Sandwich Islands","code":"GS"},{"name":"South Korea","code":"KR","provinces":[{"name":"Busan","code":"KR-26"},{"name":"North Chungcheong","code":"KR-43"},{"name":"South Chungcheong","code":"KR-44"},{"name":"Daegu","code":"KR-27"},{"name":"Daejeon","code":"KR-30"},{"name":"Gangwon","code":"KR-42"}
1634,{"name":"Gwangju City","code":"KR-29"},{"name":"North Gyeongsang","code":"KR-47"},{"name":"Gyeonggi","code":"KR-41"},{"name":"South Gyeongsang","code":"KR-48"},{"name":"Incheon","code":"KR-28"},{"name":"Jeju","code":"KR-49"},{"name":"North Jeolla","code":"KR-45"},{"name":"South Jeolla","code":"KR-46"},{"name":"Sejong","code":"KR-50"},{"name":"Seoul","code":"KR-11"},{"name":"Ulsan","code":"KR-31"}]},{"name":"South Sudan","code":"SS"},{"name":"Spain","code":"ES","provinces":[{"name":"A Coruña","code":"C"},{"name":"Ãlava","code":"VI"},{"name":"Albacete","code":"AB"},{"name":"Alicante","code":"A"},{"name":"AlmerÃa","code":"AL"},{"name":"Asturias Province","code":"O"},{"name":"Ãvila","code":"AV"},{"name":"Badajoz","code":"BA"},{"name":"Balears Province","code":"PM"},{"name":"Barcelona","code":"B"},{"name":"Burgos","code":"BU"},{"name":"Cáceres","code":"CC"},{"name":"Cádiz","code":"CA"},{"name":"Cantabria Province","code":"S"},{"name":"Castellón","code":"CS"},{"name":"Ceuta","code":"CE"},{"name":"Ciudad Real","code":"CR"},{"name":"Córdoba","code":"CO"},{"name":"Cuenca","code":"CU"},{"name":"Girona","code":"GI"},{"name":"Granada","code":"GR"},{"name":"Guadalajara","code":"GU"},{"name":"Gipuzkoa","code":"SS"},{"name":"Huelva","code":"H"},{"name":"Huesca","code":"HU"},{"name":"Jaén","code":"J"},{"name":"La Rioja Province","code":"LO"},{"name":"Las Palmas","code":"GC"},{"name":"León","code":"LE"},{"name":"Lleida","code":"L"},{"name":"Lugo","code":"LU"},{"name":"Madrid Province","code":"M"},{"name":"Málaga","code":"MA"},{"name":"Melilla","code":"ML"},{"name":"Murcia","code":"MU"},{"name":"Navarra","code":"NA"},{"name":"Ourense","code":"OR"},{"name":"Palencia","code":"P"},{"name":"Pontevedra","code":"PO"},{"name":"Salamanca","code":"SA"},{"name":"Santa Cruz de Tenerife","code":"TF"},{"name":"Segovia","code":"SG"},{"name":"Seville","code":"SE"},{"name":"Soria","code":"SO"},{"name":"Tarragona","code":"T"},{"name":"Teruel","code":"TE"},{"name":"Toledo","code":"TO"},{"name":"Valencia","code":"V"},{"name":"Valladolid","code":"VA"},{"name":"Biscay","code":"BI"},{"name":"Zamora","code":"ZA"},{"name":"Zaragoza","code":"Z"}]},{"name":"Sri Lanka","code":"LK"},{"name":"St. Barthélemy","code":"BL"},{"name":"St. Helena","code":"SH"},{"name":"St. Kitts \u0026 Nevis","code":"KN"},{"name":"St. Lucia","code":"LC"},{"name":"St. Martin","code":"MF"},{"name":"St. Pierre \u0026 Miquelon","code":"PM"},{"name":"St. Vincent \u0026 Grenadines","code":"VC"},{"name":"Sudan","code":"SD"},{"name":"Suriname","code":"SR"},{"name":"Svalbard \u0026 Jan Mayen","code":"SJ"},{"name":"Sweden","code":"SE"},{"name":"Switzerland","code":"CH"},{"name":"Taiwan","code":"TW"},{"name":"Tajikistan","code":"TJ"},{"name":"Tanzania","code":"TZ"},{"name":"Thailand","code":"TH","provinces":[{"name":"Amnat Charoen","code":"TH-37"},{"name":"Ang Thong","code":"TH-15"},{"name":"Bangkok","code":"TH-10"},{"name":"Bueng Kan","code":"TH-38"},{"name":"Buri Ram","code":"TH-31"},{"name":"Chachoengsao","code":"TH-24"},{"name":"Chai Nat","code":"TH-18"},{"name":"Chaiyaphum","code":"TH-36"},{"name":"Chanthaburi","code":"TH-22"},{"name":"Chiang Mai","code":"TH-50"},{"name":"Chiang Rai","code":"TH-57"},{"name":"Chon Buri","code":"TH-20"},{"name":"Chumphon","code":"TH-86"},{"name":"Kalasin","code":"TH-46"},{"name":"Kamphaeng Phet","code":"TH-62"},{"name":"Kanchanaburi","code":"TH-71"},{"name":"Khon Kaen","code":"TH-40"},{"name":"Krabi","code":"TH-81"},{"name":"Lampang","code":"TH-52"},{"name":"Lamphun","code":"TH-51"},{"name":"Loei","code":"TH-42"},{"name":"Lopburi","code":"TH-16"},{"name":"Mae Hong Son","code":"TH-58"},{"name":"Maha Sarakham","code":"TH-44"},{"name":"Mukdahan","code":"TH-49"},{"name":"Nakhon Nayok","code":"TH-26"},{"name":"Nakhon Pathom","code":"TH-73"},{"name":"Nakhon Phanom","code":"TH-48"},{"name":"Nakhon Ratchasima","code":"TH-30"},{"name":"Nakhon Sawan","code":"TH-60"},{"name":"Nakhon Si Thammarat","code":"TH-80"},{"name":"Nan","code":"TH-55"},{"name":"Narathiwat","code":"TH-96"},{"name":"Nong Bua Lam Phu","code":"TH-39"},{"name":"Nong Khai","code":"TH-43"},{"name":"Nonthaburi","code":"TH-12"},{"name":"Pathum Thani","code":"TH-13"},{"name":"Pattani","code":"TH-94"},{"name":"Pattaya","code":"TH-S"},{"name":"Phang Nga","code":"TH-82"},{"name":"Phatthalung","code":"TH-93"},{"name":"Phayao","code":"TH-56"},{"name":"Phetchabun","code":"TH-67"},{"name":"Phetchaburi","code":"TH-76"},{"name":"Phichit","code":"TH-66"},{"name":"Phitsanulok","code":"TH-65"},{"name":"Phra Nakhon Si Ayutthaya","code":"TH-14"},{"name":"Phrae","code":"TH-54"},{"name":"Phuket","code":"TH-83"},{"name":"Prachin Buri","code":"TH-25"},{"name":"Prachuap Khiri Khan","code":"TH-77"},{"name":"Ranong","code":"TH-85"},{"name":"Ratchaburi","code":"TH-70"},{"name":"Rayong","code":"TH-21"},{"name":"Roi Et","code":"TH-45"},{"name":"Sa Kaeo","code":"TH-27"},{"name":"Sakon Nakhon","code":"TH-47"},{"name":"Samut Prakan","code":"TH-11"},{"name":"Samut Sakhon","code":"TH-74"},{"name":"Samut Songkhram","code":"TH-75"},{"name":"Saraburi","code":"TH-19"},{"name":"Satun","code":"TH-91"},{"name":"Sing Buri","code":"TH-17"},{"name":"Si Sa Ket","code":"TH-33"},{"name":"Songkhla","code":"TH-90"},{"name":"Sukhothai","code":"TH-64"},{"name":"Suphanburi","code":"TH-72"},{"name":"Surat Thani","code":"TH-84"},{"name":"Surin","code":"TH-32"},{"name":"Tak","code":"TH-63"},{"name":"Trang","code":"TH-92"},{"name":"Trat","code":"TH-23"},{"name":"Ubon Ratchathani","code":"TH-34"},{"name":"Udon Thani","code":"TH-41"},{"name":"Uthai Thani","code":"TH-61"},{"name":"Uttaradit","code":"TH-53"},{"name":"Yala","code":"TH-95"},{"name":"Yasothon","code":"TH-35"}]},{"name":"Timor-Leste","code":"TL"},{"name":"Togo","code":"TG"},{"name":"Tokelau","code":"TK"},{"name":"Tonga","code":"TO"},{"name":"Trinidad \u0026 Tobago","code":"TT"},{"name":"Tristan da Cunha","code":"TA"},{"name":"Tunisia","code":"TN"},{"name":"Turkey","code":"TR"},{"name":"Turkmenistan","code":"TM"},{"name":"Turks \u0026 Caicos Islands","code":"TC"},{"name":"Tuvalu","code":"TV"},{"name":"U.S. Outlying Islands","code":"UM"},{"name":"Uganda","code":"UG"},{"name":"Ukraine","code":"UA"},{"name":"United Arab Emirates","code":"AE","provinces":[{"name":"Abu Dhabi","code":"AZ"},{"name":"Ajman","code":"AJ"},{"name":"Dubai","code":"DU"},{"name":"Fujairah","code":"FU"},{"name":"Ras al-Khaimah","code":"RK"},{"name":"Sharjah","code":"SH"},{"name":"Umm al-Quwain","code":"UQ"}]},{"name":"United Kingdom","code":"GB","provinces":[{"name":"British Forces","code":"BFP"},{"name":"England","code":"ENG"},{"name":"Northern Ireland","code":"NIR"},{"name":"Scotland","code":"SCT"},{"name":"Wales","code":"WLS"}]},{"name":"United States","code":"US","provinces":[{"name":"Alabama","code":"AL"},{"name":"Alaska","code":"AK"},{"name":"American Samoa","code":"AS"},{"name":"Arizona","code":"AZ"},{"name":"Arkansas","code":"AR"},{"name":"California","code":"CA"},{"name":"Colorado","code":"CO"},{"name":"Connecticut","code":"CT"},{"name":"Delaware","code":"DE"},{"name":"Washington DC","code":"DC"},{"name":"Micronesia","code":"FM"},{"name":"Florida","code":"FL"},{"name":"Georgia","code":"GA"},{"name":"Guam","code":"GU"},{"name":"Hawaii","code":"HI"},{"name":"Idaho","code":"ID"},{"name":"Illinois","code":"IL"},{"name":"Indiana","code":"IN"},{"name":"Iowa","code":"IA"},{"name":"Kansas","code":"KS"},{"name":"Kentucky","code":"KY"},{"name":"Louisiana","code":"LA"},{"name":"Maine","code":"ME"},{"name":"Marshall Islands","code":"MH"},{"name":"Maryland","code":"MD"},{"name":"Massachusetts","code":"MA"},{"name":"Michigan","code":"MI"},{"name":"Minnesota","code":"MN"},{"name":"Mississippi","code":"MS"},{"name":"Missouri","code":"MO"},{"name":"Montana","code":"MT"},{"name":"Nebraska","code":"NE"},{"name":"Nevada","code":"NV"},{"name":"New Hampshire","code":"NH"},{"name":"New Jersey","code":"NJ"},{"name":"New Mexico","code":"NM"},{"name":"New York","code":"NY"},{"name":"North Carolina","code":"NC"},{"name":"North Dakota","code":"ND"},{"name":"Northern Mariana Islands","code":"MP"},{"name":"Ohio","code":"OH"},{"name":"Oklahoma","code":"OK"},{"name":"Oregon","code":"OR"},{"name":"Palau","code":"PW"},{"name":"Pennsylvania","code":"PA"},{"name":"Puerto Rico","code":"PR"},{"name":"Rhode Island","code":"RI"},{"name":"South Carolina","code":"SC"},{"name":"South Dakota","code":"SD"},{"name":"Tennessee","code":"TN"},{"name":"Texas","code":"TX"},{"name":"Utah","code":"UT"},{"name":"Vermont","code":"VT"},{"name":"U.S. Virgin Islands","code":"VI"},{"name":"Virginia","code":"VA"},{"name":"Washington","code":"WA"},{"name":"West Virginia","code":"WV"},{"name":"Wisconsin","code":"WI"},{"name":"Wyoming","code":"WY"},{"name":"Armed Forces Americas","code":"AA"},{"name":"Armed Forces Europe","code":"AE"},{"name":"Armed Forces Pacific","code":"AP"}]}
1634,{"name":"Uruguay","code":"UY","provinces":[{"name":"Artigas","code":"UY-AR"},{"name":"Canelones","code":"UY-CA"},{"name":"Cerro Largo","code":"UY-CL"},{"name":"Colonia","code":"UY-CO"},{"name":"Durazno","code":"UY-DU"},{"name":"Flores","code":"UY-FS"},{"name":"Florida","code":"UY-FD"},{"name":"Lavalleja","code":"UY-LA"},{"name":"Maldonado","code":"UY-MA"},{"name":"Montevideo","code":"UY-MO"},{"name":"Paysandú","code":"UY-PA"},{"name":"RÃo Negro","code":"UY-RN"},{"name":"Rivera","code":"UY-RV"},{"name":"Rocha","code":"UY-RO"},{"name":"Salto","code":"UY-SA"},{"name":"San José","code":"UY-SJ"},{"name":"Soriano","code":"UY-SO"},{"name":"Tacuarembó","code":"UY-TA"},{"name":"Treinta y Tres","code":"UY-TT"}]},{"name":"Uzbekistan","code":"UZ"},{"name":"Vanuatu","code":"VU"},{"name":"Vatican City","code":"VA"},{"name":"Venezuela","code":"VE","provinces":[{"name":"Amazonas","code":"VE-Z"},{"name":"Anzoátegui","code":"VE-B"},{"name":"Apure","code":"VE-C"},{"name":"Aragua","code":"VE-D"},{"name":"Barinas","code":"VE-E"},{"name":"BolÃvar","code":"VE-F"},{"name":"Carabobo","code":"VE-G"},{"name":"Cojedes","code":"VE-H"},{"name":"Delta Amacuro","code":"VE-Y"},{"name":"Federal Dependencies","code":"VE-W"},{"name":"Capital","code":"VE-A"},{"name":"Falcón","code":"VE-I"},{"name":"Guárico","code":"VE-J"},{"name":"Vargas","code":"VE-X"},{"name":"Lara","code":"VE-K"},{"name":"Mérida","code":"VE-L"},{"name":"Miranda","code":"VE-M"},{"name":"Monagas","code":"VE-N"},{"name":"Nueva Esparta","code":"VE-O"},{"name":"Portuguesa","code":"VE-P"},{"name":"Sucre","code":"VE-R"},{"name":"Táchira","code":"VE-S"},{"name":"Trujillo","code":"VE-T"},{"name":"Yaracuy","code":"VE-U"},{"name":"Zulia","code":"VE-V"}]},{"name":"Vietnam","code":"VN"},{"name":"Wallis \u0026 Futuna","code":"WF"},{"name":"Western Sahara","code":"EH"},{"name":"Yemen","code":"YE"},{"name":"Zambia","code":"ZM"},{"name":"Zimbabwe","code":"ZW"}], 1635 "locale": "en", 1636 1637 "localeRootPath": "\/", 1638 1639 1640 "adminIsLoggedIn": false 1641 1642 } 1643; 1644 window.CF.allCountryOptionTags = `<option value="United States" data-provinces="[["Alabama","Alabama"],["Alaska","Alaska"],["American Samoa","American Samoa"],["Arizona","Arizona"],["Arkansas","Arkansas"],["Armed Forces Americas","Armed Forces Americas"],["Armed Forces Europe","Armed Forces Europe"],["Armed Forces Pacific","Armed Forces Pacific"],["California","California"],["Colorado","Colorado"],["Connecticut","Connecticut"],["Delaware","Delaware"],["District of Columbia","Washington DC"],["Federated States of Micronesia","Micronesia"],["Florida","Florida"],["Georgia","Georgia"],["Guam","Guam"],["Hawaii","Hawaii"],["Idaho","Idaho"],["Illinois","Illinois"],["Indiana","Indiana"],["Iowa","Iowa"],["Kansas","Kansas"],["Kentucky","Kentucky"],["Louisiana","Louisiana"],["Maine","Maine"],["Marshall Islands","Marshall Islands"],["Maryland","Maryland"],["Massachusetts","Massachusetts"],["Michigan","Michigan"],["Minnesota","Minnesota"],["Mississippi","Mississippi"],["Missouri","Missouri"],["Montana","Montana"],["Nebraska","Nebraska"],["Nevada","Nevada"],["New Hampshire","New Hampshire"],["New Jersey","New Jersey"],["New Mexico","New Mexico"],["New York","New York"],["North Carolina","North Carolina"],["North Dakota","North Dakota"],["Northern Mariana Islands","Northern Mariana Islands"],["Ohio","Ohio"],["Oklahoma","Oklahoma"],["Oregon","Oregon"],["Palau","Palau"],["Pennsylvania","Pennsylvania"],["Puerto Rico","Puerto Rico"],["Rhode Island","Rhode Island"],["South Carolina","South Carolina"],["South Dakota","South Dakota"],["Tennessee","Tennessee"],["Texas","Texas"],["Utah","Utah"],["Vermont","Vermont"],["Virgin Islands","U.S. Virgin Islands"],["Virginia","Virginia"],["Washington","Washington"],["West Virginia","West Virginia"],["Wisconsin","Wisconsin"],["Wyoming","Wyoming"]]">United States</option> 1645<option value="---" data-provinces="[]">---</option> 1646<option value="Afghanistan" data-provinces="[]">Afghanistan</option> 1647<option value="Aland Islands" data-provinces="[]">à land Islands</option> 1648<option value="Albania" data-provinces="[]">Albania</option> 1649<option value="Algeria" data-provinces="[]">Algeria</option> 1650<option value="Andorra" data-provinces="[]">Andorra</option> 1651<option value="Angola" data-provinces="[]">Angola</option> 1652<option value="Anguilla" data-provinces="[]">Anguilla</option> 1653<option value="Antigua And Barbuda" data-provinces="[]">Antigua & Barbuda</option> 1654<option value="Argentina" data-provinces="[["Buenos Aires","Buenos Aires Province"],["Catamarca","Catamarca"],["Chaco","Chaco"],["Chubut","Chubut"],["Ciudad Autónoma de Buenos Aires","Buenos Aires (Autonomous City)"],["Corrientes","Corrientes"],["Córdoba","Córdoba"],["Entre RÃos","Entre RÃos"],["Formosa","Formosa"],["Jujuy","Jujuy"],["La Pampa","La Pampa"],["La Rioja","La Rioja"],["
1654Mendoza","Mendoza"],["Misiones","Misiones"],["Neuquén","Neuquén"],["RÃo Negro","RÃo Negro"],["Salta","Salta"],["San Juan","San Juan"],["San Luis","San Luis"],["Santa Cruz","Santa Cruz"],["Santa Fe","Santa Fe"],["Santiago Del Estero","Santiago del Estero"],["Tierra Del Fuego","Tierra del Fuego"],["Tucumán","Tucumán"]]">Argentina</option> 1655<option value="Armenia" data-provinces="[]">Armenia</option> 1656<option value="Aruba" data-provinces="[]">Aruba</option> 1657<option value="Ascension Island" data-provinces="[]">Ascension Island</option> 1658<option value="Australia" data-provinces="[["Australian Capital Territory","Australian Capital Territory"],["New South Wales","New South Wales"],["Northern Territory","Northern Territory"],["Queensland","Queensland"],["South Australia","South Australia"],["Tasmania","Tasmania"],["Victoria","Victoria"],["Western Australia","Western Australia"]]">Australia</option> 1659<option value="Austria" data-provinces="[]">Austria</option> 1660<option value="Azerbaijan" data-provinces="[]">Azerbaijan</option> 1661<option value="Bahamas" data-provinces="[]">Bahamas</option> 1662<option value="Bahrain" data-provinces="[]">Bahrain</option> 1663<option value="Bangladesh" data-provinces="[]">Bangladesh</option> 1664<option value="Barbados" data-provinces="[]">Barbados</option> 1665<option value="Belarus" data-provinces="[]">Belarus</option> 1666<option value="Belgium" data-provinces="[]">Belgium</option> 1667<option value="Belize" data-provinces="[]">Belize</option> 1668<option value="Benin" data-provinces="[]">Benin</option> 1669<option value="Bermuda" data-provinces="[]">Bermuda</option> 1670<option value="Bhutan" data-provinces="[]">Bhutan</option> 1671<option value="Bolivia" data-provinces="[]">Bolivia</option> 1672<option value="Bosnia And Herzegovina" data-provinces="[]">Bosnia & Herzegovina</option> 1673<option value="Botswana" data-provinces="[]">Botswana</option> 1674<option value="Brazil" data-provinces="[["Acre","Acre"],["Alagoas","Alagoas"],["Amapá","Amapá"],["Amazonas","Amazonas"],["Bahia","Bahia"],["Ceará","Ceará"],["Distrito Federal","Federal District"],["EspÃrito Santo","EspÃrito Santo"],["Goiás","Goiás"],["Maranhão","Maranhão"],["Mato Grosso","Mato Grosso"],["Mato Grosso do Sul","Mato Grosso do Sul"],["Minas Gerais","Minas Gerais"],["Paraná","Paraná"],["ParaÃba","ParaÃba"],["Pará","Pará"],["Pernambuco","Pernambuco"],["PiauÃ","PiauÃ"],["Rio Grande do Norte","Rio Grande do Norte"],["Rio Grande do Sul","Rio Grande do Sul"],["Rio de Janeiro","Rio de Janeiro"],["Rondônia","Rondônia"],["Roraima","Roraima"],["Santa Catarina","Santa Catarina"],["Sergipe","Sergipe"],["São Paulo","São Paulo"],["Tocantins","Tocantins"]]">Brazil</option> 1675<option value="British Indian Ocean Territory" data-provinces="[]">British Indian Ocean Territory</option> 1676<option value="Virgin Islands, British" data-provinces="[]">British Virgin Islands</option> 1677<option value="Brunei" data-provinces="[]">Brunei</option> 1678<option value="Bulgaria" data-provinces="[]">Bulgaria</option> 1679<option value="Burkina Faso" data-provinces="[]">Burkina Faso</option> 1680<option value="Burundi" data-provinces="[]">Burundi</option> 1681<option value="Cambodia" data-provinces="[]">Cambodia</option> 1682<option value="Republic of Cameroon" data-provinces="[]">Cameroon</option> 1683<option value="Canada" data-provinces="[["Alberta","Alberta"],["British Columbia","British Columbia"],["Manitoba","Manitoba"],["New Brunswick","New Brunswick"],["Newfoundland and Labrador","Newfoundland and Labrador"],["Northwest Territories","Northwest Territories"],["Nova Scotia","Nova Scotia"],["Nunavut","Nunavut"],["Ontario","Ontario"],["Prince Edward Island","Prince Edward Island"],["Quebec","Quebec"],["Saskatchewan","Saskatchewan"],["Yukon","Yukon"]]">Canada</option> 1684<option value="Cape Verde" data-provinces="[]">Cape Verde</option> 1685<option value="Caribbean Netherlands" data-provinces="[]">Caribbean Netherlands</option> 1686<option value="Cayman Islands" data-provinces="[]">Cayman Islands</option> 1687<option value="Central African Republic" data-provinces="[]">Central African Republic</option> 1688<option value="Chad" data-provinces="[]">Chad</option> 1689<option value="Chile" data-provinces="[["Antofagasta","Antofagasta"],["AraucanÃa","AraucanÃa"],["Arica and Parinacota","
1689Arica y Parinacota"],["Atacama","Atacama"],["Aysén","Aysén"],["BiobÃo","BÃo BÃo"],["Coquimbo","Coquimbo"],["Los Lagos","Los Lagos"],["Los RÃos","Los RÃos"],["Magallanes","Magallanes Region"],["Maule","Maule"],["O'Higgins","Libertador General Bernardo OâHiggins"],["Santiago","Santiago Metropolitan"],["Tarapacá","Tarapacá"],["ValparaÃso","ValparaÃso"],["Ãuble","Ãuble"]]">Chile</option> 1690<option value="China" data-provinces="[["Anhui","Anhui"],["Beijing","Beijing"],["Chongqing","Chongqing"],["Fujian","Fujian"],["Gansu","Gansu"],["Guangdong","Guangdong"],["Guangxi","Guangxi"],["Guizhou","Guizhou"],["Hainan","Hainan"],["Hebei","Hebei"],["Heilongjiang","Heilongjiang"],["Henan","Henan"],["Hubei","Hubei"],["Hunan","Hunan"],["Inner Mongolia","Inner Mongolia"],["Jiangsu","Jiangsu"],["Jiangxi","Jiangxi"],["Jilin","Jilin"],["Liaoning","Liaoning"],["Ningxia","Ningxia"],["Qinghai","Qinghai"],["Shaanxi","Shaanxi"],["Shandong","Shandong"],["Shanghai","Shanghai"],["Shanxi","Shanxi"],["Sichuan","Sichuan"],["Tianjin","Tianjin"],["Xinjiang","Xinjiang"],["Xizang","Tibet"],["Yunnan","Yunnan"],["Zhejiang","Zhejiang"]]">China</option> 1691<option value="Christmas Island" data-provinces="[]">Christmas Island</option> 1692<option value="Cocos (Keeling) Islands" data-provinces="[]">Cocos (Keeling) Islands</option> 1693<option value="Colombia" data-provinces="[["Amazonas","Amazonas"],["Antioquia","Antioquia"],["Arauca","Arauca"],["Atlántico","Atlántico"],["Bogotá, D.C.","Capital District"],["BolÃvar","BolÃvar"],["Boyacá","Boyacá"],["Caldas","Caldas"],["Caquetá","Caquetá"],["Casanare","Casanare"],["Cauca","Cauca"],["Cesar","Cesar"],["Chocó","Chocó"],["Cundinamarca","Cundinamarca"],["Córdoba","Córdoba"],["GuainÃa","GuainÃa"],["Guaviare","Guaviare"],["Huila","Huila"],["La Guajira","La Guajira"],["Magdalena","Magdalena"],["Meta","Meta"],["Nariño","Nariño"],["Norte de Santander","Norte de Santander"],["Putumayo","Putumayo"],["QuindÃo","QuindÃo"],["Risaralda","Risaralda"],["San Andrés, Providencia y Santa Catalina","San Andrés \u0026 Providencia"],["Santander","Santander"],["Sucre","Sucre"],["Tolima","Tolima"],["Valle del Cauca","Valle del Cauca"],["Vaupés","Vaupés"],["Vichada","Vichada"]]">Colombia</option> 1694<option value="Comoros" data-provinces="[]">Comoros</option> 1695<option value="Congo" data-provinces="[]">Congo - Brazzaville</option> 1696<option value="Congo, The Democratic Republic Of The" data-provinces="[]">Congo - Kinshasa</option> 1697<option value="Cook Islands" data-provinces="[]">Cook Islands</option> 1698<option value="Costa Rica" data-provinces="[["Alajuela","Alajuela"],["Cartago","Cartago"],["Guanacaste","Guanacaste"],["Heredia","Heredia"],["Limón","Limón"],["Puntarenas","Puntarenas"],["San José","San José"]]">Costa Rica</option> 1699<option value="Croatia" data-provinces="[]">Croatia</option> 1700<option value="Curaçao" data-provinces="[]">Curaçao</option> 1701<option value="Cyprus" data-provinces="[]">Cyprus</option> 1702<option value="Czech Republic" data-provinces="[]">Czechia</option> 1703<option value="Côte d'Ivoire" data-provinces="[]">Côte dâIvoire</option> 1704<option value="Denmark" data-provinces="[]">Denmark</option> 1705<option value="Djibouti" data-provinces="[]">Djibouti</option> 1706<option value="Dominica" data-provinces="[]">Dominica</option> 1707<option value="Dominican Republic" data-provinces="[]">Dominican Republic</option> 1708<option value="Ecuador" data-provinces="[]">Ecuador</option> 1709<option value="Egypt" data-provinces="[["6th of October","6th of October"],["Al Sharqia","Al Sharqia"],["Alexandria","Alexandria"],["Aswan","Aswan"],["Asyut","Asyut"],["Beheira","Beheira"],["Beni Suef","Beni Suef"],["Cairo","Cairo"],["Dakahlia","Dakahlia"],["Damietta","Damietta"],["Faiyum","Faiyum"],["Gharbia","Gharbia"],["Giza","Giza"],["Helwan","Helwan"],["Ismailia","Ismailia"],["Kafr el-Sheikh","Kafr el-Sheikh"],["Luxor","Luxor"],["Matrouh","Matrouh"],["Minya","Minya"],["Monufia","Monufia"],["New Valley","New Valley"],["North Sinai","North Sinai"],["Port Said","Port Said"],["Qalyubia","Qalyubia"],["Qena","Qena"],["Red Sea","Red Sea"],["Sohag","Sohag"],["South Sinai","South Sinai"],["Suez","Suez"]]">Egypt</option> 1710<option value="El Salvador" data-provinces="[["Ahuachapán","Ahuachapán"],["Cabañas","Cabañas"],["Chalatenango","Chalatenango"],["Cuscatlán","Cuscatlán"],["La Libertad","La Libertad"],["La Paz","La Paz"],["La Unión","La Unión"],["Morazán","Morazán"],["San Miguel","San Miguel"],["San Salvador","San Salvador"],["San Vicente","San Vicente"],["Santa Ana","Santa Ana"],["Sonsonate","Sonsonate"],["Usulután","Usulután"]]">El Salvador</option> 1711<option value="Equatorial Guinea" data-provinces="[]">Equatorial Guinea</option> 1712<option value="Eritrea" data-provinces="[]">Eritrea</option> 1713<option value="Estonia" data-provinces="[]">Estonia</option> 1714<option value="Eswatini" data-provinces="[]">Eswatini</option> 1715<option value="Ethiopia" data-provinces="[]">Ethiopia</option> 1716<option value="Falkland Islands (Malvinas)" data-provinces="[]">Falkland Islands</option> 1717<option value="Faroe Islands" data-provinces="[]">Faroe Islands</option> 1718<option value="Fiji" data-provinces="[]">Fiji</option> 1719<option value="Finland" data-provinces="[]">Finland</option> 1720<option value="France" data-provinces="[]">France</option> 1721<option value="French Guiana" data-provinces="[]">French Guiana</option> 1722<option value="French Polynesia" data-provinces="[]">French Polynesia</option> 1723<option value="French Southern Territories" data-provinces="[]">French Southern Territories</option> 1724<option value="Gabon" data-provinces="[]">Gabon</option> 1725<option value="Gambia" data-provinces="[]">Gambia</option> 1726<option value="Georgia" data-provinces="[]">Georgia</option> 1727<option value="Germany" data-provinces="[]">Germany</option> 1728<option value="Ghana" data-provinces="[]">Ghana</option> 1729<option value="Gibraltar" data-provinces="[]">Gibraltar</option> 1730<option value="Greece" data-provinces="[]">Greece</option> 1731<option value="Greenland" data-provinces="[]">Greenland</option> 1732<option value="Grenada" data-provinces="[]">Grenada</option> 1733<option value="Guadeloupe" data-provinces="[]">Guadeloupe</option> 1734<option value="Guatemala" data-provinces="[["Alta Verapaz","Alta Verapaz"],["Baja Verapaz","Baja Verapaz"],["Chimaltenango","Chimaltenango"],["Chiquimula","Chiquimula"],["El Progreso","El Progreso"],["Escuintla","Escuintla"],["Guatemala","Guatemala"],["Huehuetenango","Huehuetenango"],["Izabal","Izabal"],["Jalapa","Jalapa"],["Jutiapa","Jutiapa"],["Petén","Petén"],["Quetzaltenango","Quetzaltenango"],["Quiché","Quiché"],["Retalhuleu","Retalhuleu"],["Sacatepéquez","Sacatepéquez"],["San Marcos","San Marcos"],["Santa Rosa","Santa Rosa"],["Sololá","Sololá"],["Suchitepéquez","Suchitepéquez"],["Totonicapán","Totonicapán"],["Zacapa","Zacapa"]]">Guatemala</option> 1735<option value="Guernsey" data-provinces="[]">Guernsey</option> 1736<option value="Guinea" data-provinces="[]">Guinea</option> 1737<option value="Guinea Bissau" data-provinces="[]">Guinea-Bissau</option> 1738<option value="Guyana" data-provinces="[]">Guyana</option> 1739<option value="Haiti" data-provinces="[]">Haiti</option> 1740<option value="Honduras" data-provinces="[]">Honduras</option> 1741<option value="Hong Kong" data-provinces="[["Hong Kong Island","Hong Kong Island"],["Kowloon","Kowloon"],["New Territories","New Territories"]]">Hong Kong SAR</option> 1742<option value="Hungary" data-provinces="[]">Hungary</option> 1743<option value="Iceland" data-provinces="[]">Iceland</option> 1744<option value="India" data-provinces="[["Andaman and Nicobar Islands","Andaman and Nicobar Islands"],["Andhra Pradesh","Andhra Pradesh"],["Arunachal Pradesh","Arunachal Pradesh"],["Assam","Assam"],["Bihar","Bihar"],["Chandigarh","Chandigarh"],["Chhattisgarh","Chhattisgarh"],["Dadra and Nagar Haveli","Dadra and Nagar Haveli"],["Daman and Diu","Daman and Diu"],["Delhi","Delhi"],["Goa","Goa"],["Gujarat","Gujarat"],["Haryana","Haryana"],["Himachal Pradesh","Himachal Pradesh"],["Jammu and Kashmir","Jammu and Kashmir"],["Jharkhand","Jharkhand"],["Karnataka","Karnataka"],["Kerala","Kerala"],["Ladakh","Ladakh"],["Lakshadweep","Lakshadweep"],["Madhya Pradesh","Madhya Pradesh"],["Maharashtra","Maharashtra"],["Manipur","Manipur"],["Meghalaya","Meghalaya"],["Mizoram","Mizoram"],["Nagaland","Nagaland"],["Odisha","Odisha"],["Puducherry","Puducherry"],["Punjab","Punjab"],["Rajasthan","Rajasthan"],["Sikkim","Sikkim"],["Tamil Nadu","Tamil Nadu"],["Telangana","Telangana"],["Tripura","Tripura"],["Uttar Pradesh","Uttar Pradesh"],["Uttarakhand","Uttarakhand"],["West Bengal","West Bengal"]]">India</option> 1745<option value="Indonesia" data-provinces="[["Aceh","Aceh"],["Bali","Bali"],["Bangka Belitung","BangkaâBelitung Islands"],["Banten","Banten"],["Bengkulu","Bengkulu"],["Gorontalo","Gorontalo"],["Jakarta","Jakarta"],["Jambi","Jambi"],["Jawa Barat","West Java"],["Jawa Tengah","Central Java"],["Jawa Timur","East Java"],["Kalimantan Barat","West Kalimantan"],["Kalimantan Selatan","South Kalimantan"],["Kalimantan Tengah","Central Kalimantan"],["Kalimantan Timur","East Kalimantan"],["Kalimantan Utara","North Kalimantan"],["Kepulauan Riau","Riau Islands"],["
1745Lampung","Lampung"],["Maluku","Maluku"],["Maluku Utara","North Maluku"],["North Sumatra","North Sumatra"],["Nusa Tenggara Barat","West Nusa Tenggara"],["Nusa Tenggara Timur","East Nusa Tenggara"],["Papua","Papua"],["Papua Barat","West Papua"],["Riau","Riau"],["South Sumatra","South Sumatra"],["Sulawesi Barat","West Sulawesi"],["Sulawesi Selatan","South Sulawesi"],["Sulawesi Tengah","Central Sulawesi"],["Sulawesi Tenggara","Southeast Sulawesi"],["Sulawesi Utara","North Sulawesi"],["West Sumatra","West Sumatra"],["Yogyakarta","Yogyakarta"]]">Indonesia</option> 1746<option value="Iraq" data-provinces="[]">Iraq</option> 1747<option value="Ireland" data-provinces="[["Carlow","Carlow"],["Cavan","Cavan"],["Clare","Clare"],["Cork","Cork"],["Donegal","Donegal"],["Dublin","Dublin"],["Galway","Galway"],["Kerry","Kerry"],["Kildare","Kildare"],["Kilkenny","Kilkenny"],["Laois","Laois"],["Leitrim","Leitrim"],["Limerick","Limerick"],["Longford","Longford"],["Louth","Louth"],["Mayo","Mayo"],["Meath","Meath"],["Monaghan","Monaghan"],["Offaly","Offaly"],["Roscommon","Roscommon"],["Sligo","Sligo"],["Tipperary","Tipperary"],["Waterford","Waterford"],["Westmeath","Westmeath"],["Wexford","Wexford"],["Wicklow","Wicklow"]]">Ireland</option> 1748<option value="Isle Of Man" data-provinces="[]">Isle of Man</option> 1749<option value="Israel" data-provinces="[]">Israel</option> 1750<option value="Italy" data-provinces="[["Agrigento","Agrigento"],["Alessandria","Alessandria"],["Ancona","Ancona"],["Aosta","Aosta Valley"],["Arezzo","Arezzo"],["Ascoli Piceno","Ascoli Piceno"],["Asti","Asti"],["Avellino","Avellino"],["Bari","Bari"],["Barletta-Andria-Trani","Barletta-Andria-Trani"],["Belluno","Belluno"],["Benevento","Benevento"],["Bergamo","Bergamo"],["Biella","Biella"],["Bologna","Bologna"],["Bolzano","South Tyrol"],["Brescia","Brescia"],["Brindisi","Brindisi"],["Cagliari","Cagliari"],["Caltanissetta","Caltanissetta"],["Campobasso","Campobasso"],["Caserta","Caserta"],["Catania","Catania"],["Catanzaro","Catanzaro"],["Chieti","Chieti"],["Como","Como"],["Cosenza","Cosenza"],["Cremona","Cremona"],["Crotone","Crotone"],["Cuneo","Cuneo"],["Enna","Enna"],["Fermo","Fermo"],["Ferrara","Ferrara"],["Firenze","Florence"],["Foggia","Foggia"],["Forlì-Cesena","Forlì-Cesena"],["Frosinone","Frosinone"],["Gallura Nord-Est Sardegna","Gallura Nord-Est Sardegna"],["Genova","Genoa"],["Gorizia","Gorizia"],["Grosseto","Grosseto"],["Imperia","Imperia"],["Isernia","Isernia"],["L'Aquila","LâAquila"],["La Spezia","La Spezia"],["Latina","Latina"],["Lecce","Lecce"],["Lecco","Lecco"],["Livorno","Livorno"],["Lodi","Lodi"],["Lucca","Lucca"],["Macerata","Macerata"],["Mantova","Mantua"],["Massa-Carrara","Massa and Carrara"],["Matera","Matera"],["Medio Campidano","Medio Campidano"],["Messina","Messina"],["Milano","Milan"],["Modena","Modena"],["Monza e Brianza","Monza and Brianza"],["Napoli","Naples"],["Novara","Novara"],["Nuoro","Nuoro"],["Ogliastra","Ogliastra"],["Oristano","Oristano"],["Padova","Padua"],["Palermo","Palermo"],["Parma","Parma"],["Pavia","Pavia"],["Perugia","Perugia"],["Pesaro e Urbino","Pesaro and Urbino"],["Pescara","Pescara"],["Piacenza","Piacenza"],["Pisa","Pisa"],["Pistoia","Pistoia"],["Pordenone","Pordenone"],["Potenza","Potenza"],["Prato","Prato"],["Ragusa","Ragusa"],["Ravenna","Ravenna"],["Reggio Calabria","Reggio Calabria"],["Reggio Emilia","Reggio Emilia"],["Rieti","Rieti"],["Rimini","Rimini"],["Roma","Rome"],["Rovigo","Rovigo"],["Salerno","Salerno"],["Sassari","Sassari"],["Savona","Savona"],["Siena","Siena"],["Siracusa","Syracuse"],["Sondrio","Sondrio"],["Sulcis Iglesiente","Sulcis Iglesiente"],["Taranto","Taranto"],["Teramo","Teramo"],["Terni","Terni"],["Torino","Turin"],["Trapani","Trapani"],["Trento","Trentino"],["Treviso","Treviso"],["Trieste","Trieste"],["Udine","Udine"],["Varese","Varese"],["Venezia","Venice"],["Verbano-Cusio-Ossola","Verbano-Cusio-Ossola"],["Vercelli","Vercelli"],["Verona","Verona"],["Vibo Valentia","Vibo Valentia"],["Vicenza","Vicenza"],["Viterbo","Viterbo"]]">Italy</option> 1751<option value="Jamaica" data-provinces="[]">Jamaica</option> 1752<option value="Japan" data-provinces="[["Aichi","Aichi"],["Akita","Akita"],["Aomori","Aomori"],["Chiba","Chiba"],["Ehime","Ehime"],["Fukui","Fukui"],["Fukuoka","Fukuoka"],["Fukushima","Fukushima"],["Gifu","Gifu"],["Gunma","Gunma"],["Hiroshima","Hiroshima"],["HokkaidÅ","Hokkaido"],["HyÅgo","Hyogo"],["Ibaraki","Ibaraki"],["Ishikawa","Ishikawa"],["Iwate","Iwate"],["Kagawa","Kagawa"],["Kagoshima","Kagoshima"],["Kanagawa","Kanagawa"],["Kumamoto","Kumamoto"],["KyÅto","Kyoto"],["KÅchi","Kochi"],["Mie","Mie"],["Miyagi","Miyagi"],["Miyazaki","Miyazaki"],["Nagano","Nagano"],["Nagasaki","Nagasaki"],["Nara","Nara"],["Niigata","Niigata"],["Okayama","Okayama"],["Okinawa","Okinawa"],["Saga","Saga"],["Saitama","Saitama"],["Shiga","Shiga"],["Shimane","Shimane"],["Shizuoka","Shizuoka"],["Tochigi","Tochigi"],["Tokushima","Tokushima"],["Tottori","Tottori"],["Toyama","Toyama"],["TÅkyÅ","Tokyo"],["Wakayama","Wakayama"],["Yamagata","Yamagata"],["Yamaguchi","Yamaguchi"],["Yamanashi","Yamanashi"],["Åita","Oita"],["Åsaka","Osaka"]]">Japan</option> 1753<option value="Jersey" data-provinces="[]">Jersey</option> 1754<option value="Jordan" data-provinces="[]">Jordan</option> 1755<option value="Kazakhstan" data-provinces="[]">Kazakhstan</option> 1756<option value="Kenya" data-provinces="[]">Kenya</option> 1757<option value="Kiribati" data-provinces="[]">Kiribati</option> 1758<option value="Kosovo" data-provinces="[]">Kosovo</option> 1759<option value="Kuwait" data-provinces="[["Al Ahmadi","Al Ahmadi"],["Al Asimah","Al Asimah"],["Al Farwaniyah","Al Farwaniyah"],["Al Jahra","Al Jahra"],["Hawalli","Hawalli"],["Mubarak Al-Kabeer","Mubarak Al-Kabeer"]]">Kuwait</option> 1760<option value="Kyrgyzstan" data-provinces="[]">Kyrgyzstan</option> 1761<option value="Lao People's Democratic Republic" data-provinces="[]">Laos</option> 1762<option value="Latvia" data-provinces="[]">Latvia</option> 1763<option value="Lebanon" data-provinces="[]">Lebanon</option> 1764<option value="Lesotho" data-provinces="[]">Lesotho</option> 1765<option value="Liberia" data-provinces="[]">Liberia</option> 1766<option value="Libyan Arab Jamahiriya" data-provinces="[]">Libya</option> 1767<option value="Liechtenstein" data-provinces="[]">Liechtenstein</option> 1768<option value="Lithuania" data-provinces="[]">Lithuania</option> 1769<option value="Luxembourg" data-provinces="[]">Luxembourg</option> 1770<option value="Macao" data-provinces="[]">Macao SAR</option>
1771<option value="Madagascar" data-provinces="[]">Madagascar</option> 1772<option value="Malawi" data-provinces="[]">Malawi</option> 1773<option value="Malaysia" data-provinces="[["Johor","Johor"],["Kedah","Kedah"],["Kelantan","Kelantan"],["Kuala Lumpur","Kuala Lumpur"],["Labuan","Labuan"],["Melaka","Malacca"],["Negeri Sembilan","Negeri Sembilan"],["Pahang","Pahang"],["Penang","Penang"],["Perak","Perak"],["Perlis","Perlis"],["Putrajaya","Putrajaya"],["Sabah","Sabah"],["Sarawak","Sarawak"],["Selangor","Selangor"],["Terengganu","Terengganu"]]">Malaysia</option> 1774<option value="Maldives" data-provinces="[]">Maldives</option> 1775<option value="Mali" data-provinces="[]">Mali</option> 1776<option value="Malta" data-provinces="[]">Malta</option> 1777<option value="Martinique" data-provinces="[]">Martinique</option> 1778<option value="Mauritania" data-provinces="[]">Mauritania</option> 1779<option value="Mauritius" data-provinces="[]">Mauritius</option> 1780<option value="Mayotte" data-provinces="[]">Mayotte</option> 1781<option value="Mexico" data-provinces="[["Aguascalientes","Aguascalientes"],["Baja California","Baja California"],["Baja California Sur","Baja California Sur"],["Campeche","Campeche"],["Chiapas","Chiapas"],["Chihuahua","Chihuahua"],["Ciudad de México","Ciudad de Mexico"],["Coahuila","Coahuila"],["Colima","Colima"],["Durango","Durango"],["Guanajuato","Guanajuato"],["Guerrero","Guerrero"],["Hidalgo","Hidalgo"],["Jalisco","Jalisco"],["Michoacán","Michoacán"],["Morelos","Morelos"],["México","Mexico State"],["Nayarit","Nayarit"],["Nuevo León","Nuevo León"],["Oaxaca","Oaxaca"],["Puebla","Puebla"],["Querétaro","Querétaro"],["Quintana Roo","Quintana Roo"],["San Luis PotosÃ","San Luis PotosÃ"],["Sinaloa","Sinaloa"],["Sonora","Sonora"],["Tabasco","Tabasco"],["Tamaulipas","Tamaulipas"],["Tlaxcala","Tlaxcala"],["Veracruz","Veracruz"],["Yucatán","Yucatán"],["Zacatecas","Zacatecas"]]">Mexico</option> 1782<option value="Moldova, Republic of" data-provinces="[]">Moldova</option> 1783<option value="Monaco" data-provinces="[]">Monaco</option> 1784<option value="Mongolia" data-provinces="[]">Mongolia</option> 1785<option value="Montenegro" data-provinces="[]">Montenegro</option> 1786<option value="Montserrat" data-provinces="[]">Montserrat</option> 1787<option value="Morocco" data-provinces="[]">Morocco</option> 1788<option value="Mozambique" data-provinces="[]">Mozambique</option> 1789<option value="Myanmar" data-provinces="[]">Myanmar (Burma)</option> 1790<option value="Namibia" data-provinces="[]">Namibia</option> 1791<option value="Nauru" data-provinces="[]">Nauru</option> 1792<option value="Nepal" data-provinces="[]">Nepal</option> 1793<option value="Netherlands" data-provinces="[]">Netherlands</option> 1794<option value="New Caledonia" data-provinces="[]">New Caledonia</option> 1795<option value="New Zealand" data-provinces="[["Auckland","Auckland"],["Bay of Plenty","Bay of Plenty"],["Canterbury","Canterbury"],["Chatham Islands","Chatham Islands"],["Gisborne","Gisborne"],["Hawke's Bay","Hawkeâs Bay"],["Manawatu-Wanganui","ManawatÅ«-Whanganui"],["Marlborough","Marlborough"],["Nelson","Nelson"],["Northland","Northland"],["Otago","Otago"],["Southland","Southland"],["Taranaki","Taranaki"],["Tasman","Tasman"],["Waikato","Waikato"],["Wellington","Wellington"],["West Coast","West Coast"]]">New Zealand</option> 1796<option value="Nicaragua" data-provinces="[]">Nicaragua</option> 1797<option value="Niger" data-provinces="[]">Niger</option> 1798<option value="Nigeria" data-provinces="[["Abia","Abia"],["Abuja Federal Capital Territory","Federal Capital Territory"],["Adamawa","Adamawa"],["Akwa Ibom","Akwa Ibom"],["Anambra","Anambra"],["Bauchi","Bauchi"],["Bayelsa","Bayelsa"],["Benue","Benue"],["Borno","Borno"],["Cross River","Cross River"],["Delta","Delta"],["Ebonyi","Ebonyi"],["Edo","Edo"],["Ekiti","Ekiti"],["Enugu","Enugu"],["Gombe","Gombe"],["Imo","Imo"],["Jigawa","Jigawa"],["Kaduna","Kaduna"],["Kano","Kano"],["Katsina","Katsina"],["Kebbi","Kebbi"],["Kogi","Kogi"],["Kwara","Kwara"],["Lagos","Lagos"],["Nasarawa","Nasarawa"],["Niger","Niger"],["Ogun","Ogun"],["Ondo","Ondo"],["Osun","Osun"],["Oyo","Oyo"],["Plateau","Plateau"],["Rivers","Rivers"],["Sokoto","Sokoto"],["Taraba","Taraba"],["Yobe","Yobe"],["Zamfara","Zamfara"]]">Nigeria</option> 1799<option value="Niue" data-provinces="[]">Niue</option> 1800<option value="Norfolk Island" data-provinces="[]">Norfolk Island</option> 1801<option value="North Macedonia" data-provinces="[]">North Macedonia</option> 1802<option value="Norway" data-provinces="[]">Norway</option> 1803<option value="Oman" data-provinces="[]">Oman</option> 1804<option value="Pakistan" data-provinces="[]">Pakistan</option> 1805<option value="Palestinian Territory, Occupied" data-provinces="[]">Palestinian Territories</option> 1806<option value="Panama" data-provinces="[["Bocas del Toro","Bocas del Toro"],["ChiriquÃ","ChiriquÃ"],["Coclé","Coclé"],["Colón","Colón"],["Darién","Darién"],["Emberá","Emberá"],["Herrera","Herrera"],["Kuna Yala","Guna Yala"],["Los Santos","Los Santos"],["Ngöbe-Buglé","Ngöbe-Buglé"],["Panamá","Panamá"],["Panamá Oeste","West Panamá"],["Veraguas","Veraguas"]]">Panama</option> 1807<option value="Papua New Guinea" data-provinces="[]">Papua New Guinea</option> 1808<option value="Paraguay" data-provinces="[]">Paraguay</option> 1809<option value="Peru" data-provinces="[["Amazonas","Amazonas"],["ApurÃmac","ApurÃmac"],["Arequipa","Arequipa"],["Ayacucho","Ayacucho"],["Cajamarca","Cajamarca"],["Callao","El Callao"],["Cuzco","Cusco"],["Huancavelica","Huancavelica"],["Huánuco","Huánuco"],["Ica","Ica"],["JunÃn","JunÃn"],["La Libertad","La Libertad"],["Lambayeque","Lambayeque"],["Lima (departamento)","Lima (Department)"],["Lima (provincia)","Lima (Metropolitan)"],["Loreto","Loreto"],["Madre de Dios","Madre de Dios"],["Moquegua","Moquegua"],["Pasco","Pasco"],["Piura","Piura"],["Puno","Puno"],["San MartÃn","San MartÃn"],["Tacna","Tacna"],["Tumbes","Tumbes"],["Ucayali","Ucayali"],["Ãncash","Ancash"]]">
1809Peru</option> 1810<option value="Philippines" data-provinces="[["Abra","Abra"],["Agusan del Norte","Agusan del Norte"],["Agusan del Sur","Agusan del Sur"],["Aklan","Aklan"],["Albay","Albay"],["Antique","Antique"],["Apayao","Apayao"],["Aurora","Aurora"],["Basilan","Basilan"],["Bataan","Bataan"],["Batanes","Batanes"],["Batangas","Batangas"],["Benguet","Benguet"],["Biliran","Biliran"],["Bohol","Bohol"],["Bukidnon","Bukidnon"],["Bulacan","Bulacan"],["Cagayan","Cagayan"],["Camarines Norte","Camarines Norte"],["Camarines Sur","Camarines Sur"],["Camiguin","Camiguin"],["Capiz","Capiz"],["Catanduanes","Catanduanes"],["Cavite","Cavite"],["Cebu","Cebu"],["Cotabato","Cotabato"],["Davao Occidental","Davao Occidental"],["Davao Oriental","Davao Oriental"],["Davao de Oro","Compostela Valley"],["Davao del Norte","Davao del Norte"],["Davao del Sur","Davao del Sur"],["Dinagat Islands","Dinagat Islands"],["Eastern Samar","Eastern Samar"],["Guimaras","Guimaras"],["Ifugao","Ifugao"],["Ilocos Norte","Ilocos Norte"],["Ilocos Sur","Ilocos Sur"],["Iloilo","Iloilo"],["Isabela","Isabela"],["Kalinga","Kalinga"],["La Union","La Union"],["Laguna","Laguna"],["Lanao del Norte","Lanao del Norte"],["Lanao del Sur","Lanao del Sur"],["Leyte","Leyte"],["Maguindanao","Maguindanao"],["Marinduque","Marinduque"],["Masbate","Masbate"],["Metro Manila","Metro Manila"],["Misamis Occidental","Misamis Occidental"],["Misamis Oriental","Misamis Oriental"],["Mountain Province","Mountain"],["Negros Occidental","Negros Occidental"],["Negros Oriental","Negros Oriental"],["Northern Samar","Northern Samar"],["Nueva Ecija","Nueva Ecija"],["Nueva Vizcaya","Nueva Vizcaya"],["Occidental Mindoro","Occidental Mindoro"],["Oriental Mindoro","Oriental Mindoro"],["Palawan","Palawan"],["Pampanga","Pampanga"],["Pangasinan","Pangasinan"],["Quezon","Quezon"],["Quirino","Quirino"],["Rizal","Rizal"],["Romblon","Romblon"],["Samar","Samar"],["Sarangani","Sarangani"],["Siquijor","Siquijor"],["Sorsogon","Sorsogon"],["South Cotabato","South Cotabato"],["Southern Leyte","Southern Leyte"],["Sultan Kudarat","Sultan Kudarat"],["Sulu","Sulu"],["Surigao del Norte","Surigao del Norte"],["Surigao del Sur","Surigao del Sur"],["Tarlac","Tarlac"],["Tawi-Tawi","Tawi-Tawi"],["Zambales","Zambales"],["Zamboanga Sibugay","Zamboanga Sibugay"],["Zamboanga del Norte","Zamboanga del Norte"],["Zamboanga del Sur","Zamboanga del Sur"]]">Philippines</option> 1811<option value="Pitcairn" data-provinces="[]">Pitcairn Islands</option> 1812<option value="Poland" data-provinces="[]">Poland</option> 1813<option value="Portugal" data-provinces="[["Aveiro","Aveiro"],["Açores","Azores"],["Beja","Beja"],["Braga","Braga"],["Bragança","Bragança"],["Castelo Branco","Castelo Branco"],["Coimbra","Coimbra"],["Faro","Faro"],["Guarda","Guarda"],["Leiria","Leiria"],["Lisboa","Lisbon"],["Madeira","Madeira"],["Portalegre","Portalegre"],["Porto","Porto"],["Santarém","Santarém"],["Setúbal","Setúbal"],["Viana do Castelo","Viana do Castelo"],["Vila Real","Vila Real"],["Viseu","Viseu"],["Ãvora","Ãvora"]]">Portugal</option> 1814<option value="Qatar" data-provinces="[]">Qatar</option> 1815<option value="Reunion" data-provinces="[]">Réunion</option> 1816<option value="Romania" data-provinces="[["Alba","Alba"],["Arad","Arad"],["ArgeÈ","ArgeÈ"],["BacÄu","BacÄu"],["Bihor","Bihor"],["BistriÈa-NÄsÄud","BistriÅ£a-NÄsÄud"],["BotoÈani","BotoÅani"],["BraÈov","BraÅov"],["BrÄila","BrÄila"],["BucureÈti","Bucharest"],["BuzÄu","BuzÄu"],["CaraÈ-Severin","CaraÈ-Severin"],["Cluj","Cluj"],["ConstanÈa","ConstanÈa"],["Covasna","Covasna"],["CÄlÄraÈi","CÄlÄraÈi"],["Dolj","Dolj"],["DâmboviÈa","DâmboviÈa"],["GalaÈi","GalaÈi"],["Giurgiu","Giurgiu"],["Gorj","Gorj"],["Harghita","Harghita"],["Hunedoara","Hunedoara"],["IalomiÈa","IalomiÈa"],["IaÈi","IaÈi"],["Ilfov","Ilfov"],["MaramureÈ","MaramureÅ"],["MehedinÈi","MehedinÈi"],["MureÈ","MureÅ"],["NeamÈ","NeamÅ£"],["Olt","Olt"],["Prahova","Prahova"],["Satu Mare","Satu Mare"],["Sibiu","Sibiu"],["Suceava","Suceava"],["SÄlaj","SÄlaj"],["Teleorman","Teleorman"],["TimiÈ","TimiÈ"],["Tulcea","Tulcea"],["Vaslui","Vaslui"],["Vrancea","Vrancea"],["Vâlcea","Vâlcea"]]">Romania</option> 1817<option value="Russia" data-provinces="[["Altai Krai","Altai Krai"],["Altai Republic","Altai"],["Amur Oblast","Amur"],["Arkhangelsk Oblast","Arkhangelsk"],["Astrakhan Oblast","Astrakhan"],["Belgorod Oblast","Belgorod"],["Bryansk Oblast","Bryansk"],["Chechen Republic","Chechen"],["Chelyabinsk Oblast","Chelyabinsk"],["Chukotka Autonomous Okrug","Chukotka Okrug"],["Chuvash Republic","Chuvash"],["Irkutsk Oblast","Irkutsk"],["Ivanovo Oblast","Ivanovo"],["Jewish Autonomous Oblast","Jewish"],["Kabardino-Balkarian Republic","Kabardino-Balkar"],["Kaliningrad Oblast","Kaliningrad"],["Kaluga Oblast","Kaluga"],["Kamchatka Krai","Kamchatka Krai"],["KarachayâCherkess Republic","Karachay-Cherkess"],["Kemerovo Oblast","Kemerovo"],["Khabarovsk Krai","Khabarovsk Krai"],["Khanty-Mansi Autonomous Okrug","Khanty-Mansi"],["Kirov Oblast","Kirov"],["Komi Republic","Komi"],["Kostroma Oblast","Kostroma"],["Krasnodar Krai","Krasnodar Krai"],["Krasnoyarsk Krai","Krasnoyarsk Krai"],["Kurgan Oblast","Kurgan"],["Kursk Oblast","Kursk"],["Leningrad Oblast","Leningrad"],["Lipetsk Oblast","Lipetsk"],["Magadan Oblast","Magadan"],["Mari El Republic","Mari El"],["Moscow","Moscow"],["Moscow Oblast","Moscow Province"],["Murmansk Oblast","Murmansk"],["Nizhny Novgorod Oblast","Nizhny Novgorod"],["Novgorod Oblast","Novgorod"],["Novosibirsk Oblast","Novosibirsk"],["Omsk Oblast","Omsk"],["Orenburg Oblast","Orenburg"],["Oryol Oblast","Oryol"],["Penza Oblast","Penza"],["Perm Krai","Perm Krai"],["Primorsky Krai","Primorsky Krai"],["Pskov Oblast","Pskov"],["Republic of Adygeya","Adygea"],["Republic of Bashkortostan","Bashkortostan"],["Republic of Buryatia","Buryat"],["Republic of Dagestan","Dagestan"],["Republic of Ingushetia","Ingushetia"],["Republic of Kalmykia","Kalmykia"],["Republic of Karelia","Karelia"],["Republic of Khakassia","Khakassia"],["Republic of Mordovia","Mordovia"],["Republic of North OssetiaâAlania","North Ossetia-Alania"],["Republic of Tatarstan","Tatarstan"],["Rostov Oblast","Rostov"],["Ryazan Oblast","Ryazan"],["Saint Petersburg","Saint Petersburg"],["Sakha Republic (Yakutia)","Sakha"],["Sakhalin Oblast","Sakhalin"],["Samara Oblast","Samara"],["Saratov Oblast","Saratov"],["Smolensk Oblast","Smolensk"],["Stavropol Krai","Stavropol Krai"],["Sverdlovsk Oblast","Sverdlovsk"],["Tambov Oblast","Tambov"],["Tomsk Oblast","Tomsk"],["Tula Oblast","Tula"],["Tver Oblast","Tver"],["Tyumen Oblast","Tyumen"],["Tyva Republic","Tuva"],["Udmurtia","Udmurt"],["Ulyanovsk Oblast","Ulyanovsk"],["Vladimir Oblast","Vladimir"],["Volgograd Oblast","Volgograd"],["Vologda Oblast","Vologda"],["Voronezh Oblast","Voronezh"],["Yamalo-Nenets Autonomous Okrug","Yamalo-Nenets Okrug"],["Yaroslavl Oblast","Yaroslavl"],["Zabaykalsky Krai","Zabaykalsky Krai"]]">Russia</option> 1818<option value="Rwanda" data-provinces="[]">Rwanda</option> 1819<option value="Samoa" data-provinces="[]">Samoa</option> 1820<option value="San Marino" data-provinces="[]">San Marino</option> 1821<option value="Sao Tome And Principe" data-provinces="[]">São Tomé & PrÃncipe</option> 1822<option value="Saudi Arabia" data-provinces="[]">Saudi Arabia</option> 1823<option value="Senegal" data-provinces="[]">Senegal</option> 1824<option value="Serbia" data-provinces="[]">Serbia</option> 1825<option value="Seychelles" data-provinces="[]">Seychelles</option> 1826<option value="Sierra Leone" data-provinces="[]">Sierra Leone</option> 1827<option value="Singapore" data-provinces="[]">Singapore</option> 1828<option value="Sint Maarten" data-provinces="[]">Sint Maarten</option> 1829<option value="Slovakia" data-provinces="[]">Slovakia</option> 1830<option value="Slovenia" data-provinces="[]">Slovenia</option> 1831<option value="Solomon Islands" data-provinces="[]">Solomon Islands</option> 1832<option value="Somalia" data-provinces="[]">Somalia</option> 1833<option value="South Africa" data-provinces="[["Eastern Cape","Eastern Cape"],["Free State","Free State"],["Gauteng","Gauteng"],["KwaZulu-Natal","KwaZulu-Natal"],["Limpopo","Limpopo"],["Mpumalanga","Mpumalanga"],["North West","North West"],["Northern Cape","Northern Cape"],["Western Cape","Western Cape"]]">South Africa</option> 1834<option value="South Georgia And The South Sandwich Islands" data-provinces="[]">South Georgia & South Sandwich Islands</option> 1835<option value="South Korea" data-provinces="[["Busan","Busan"],["Chungbuk","North Chungcheong"],["Chungnam","South Chungcheong"],["Daegu","Daegu"],["Daejeon","Daejeon"],["Gangwon","Gangwon"],["Gwangju","Gwangju City"],["Gyeongbuk","North Gyeongsang"],["Gyeonggi","Gyeonggi"],["Gyeongnam","South Gyeongsang"],["Incheon","Incheon"],["Jeju","Jeju"],["Jeonbuk","North Jeolla"],["Jeonnam","South Jeolla"],["Sejong","Sejong"],["Seoul","Seoul"],["Ulsan","Ulsan"]]">South Korea</option> 1836<option value="South Sudan" data-provinces="[]">South Sudan</option> 1837<option value="Spain" data-provinces="[["A Coruña","A Coruña"],["Albacete","Albacete"],["Alicante","Alicante"],["AlmerÃa","AlmerÃa"],["Asturias","Asturias Province"],["Badajoz","Badajoz"],["Balears","Balears Province"],["Barcelona","Barcelona"],["Burgos","Burgos"],["Cantabria","Cantabria Province"],["Castellón","Castellón"],["Ceuta","Ceuta"],["Ciudad Real","Ciudad Real"],["Cuenca","Cuenca"],["Cáceres","Cáceres"],["Cádiz","Cádiz"],["Córdoba","Córdoba"],["Girona","Girona"],["Granada","Granada"],["Guadalajara","Guadalajara"],["
1837Guipúzcoa","Gipuzkoa"],["Huelva","Huelva"],["Huesca","Huesca"],["Jaén","Jaén"],["La Rioja","La Rioja Province"],["Las Palmas","Las Palmas"],["León","León"],["Lleida","Lleida"],["Lugo","Lugo"],["Madrid","Madrid Province"],["Melilla","Melilla"],["Murcia","Murcia"],["Málaga","Málaga"],["Navarra","Navarra"],["Ourense","Ourense"],["Palencia","Palencia"],["Pontevedra","Pontevedra"],["Salamanca","Salamanca"],["Santa Cruz de Tenerife","Santa Cruz de Tenerife"],["Segovia","Segovia"],["Sevilla","Seville"],["Soria","Soria"],["Tarragona","Tarragona"],["Teruel","Teruel"],["Toledo","Toledo"],["Valencia","Valencia"],["Valladolid","Valladolid"],["Vizcaya","Biscay"],["Zamora","Zamora"],["Zaragoza","Zaragoza"],["Ãlava","Ãlava"],["Ãvila","Ãvila"]]">Spain</option> 1838<option value="Sri Lanka" data-provinces="[]">Sri Lanka</option> 1839<option value="Saint Barthélemy" data-provinces="[]">St. Barthélemy</option> 1840<option value="Saint Helena" data-provinces="[]">St. Helena</option> 1841<option value="Saint Kitts And Nevis" data-provinces="[]">St. Kitts & Nevis</option> 1842<option value="Saint Lucia" data-provinces="[]">St. Lucia</option> 1843<option value="Saint Martin" data-provinces="[]">St. Martin</option> 1844<option value="Saint Pierre And Miquelon" data-provinces="[]">St. Pierre & Miquelon</option> 1845<option value="St. Vincent" data-provinces="[]">St. Vincent & Grenadines</option> 1846<option value="Sudan" data-provinces="[]">Sudan</option> 1847<option value="Suriname" data-provinces="[]">Suriname</option> 1848<option value="Svalbard And Jan Mayen" data-provinces="[]">Svalbard & Jan Mayen</option> 1849<option value="Sweden" data-provinces="[]">Sweden</option> 1850<option value="Switzerland" data-provinces="[]">Switzerland</option> 1851<option value="Taiwan" data-provinces="[]">Taiwan</option> 1852<option value="Tajikistan" data-provinces="[]">Tajikistan</option> 1853<option value="Tanzania, United Republic Of" data-provinces="[]">Tanzania</option> 1854<option value="Thailand" data-provinces="[["Amnat Charoen","Amnat Charoen"],["Ang Thong","Ang Thong"],["Bangkok","Bangkok"],["Bueng Kan","Bueng Kan"],["Buriram","Buri Ram"],["Chachoengsao","Chachoengsao"],["Chai Nat","Chai Nat"],["Chaiyaphum","Chaiyaphum"],["Chanthaburi","Chanthaburi"],["Chiang Mai","Chiang Mai"],["Chiang Rai","Chiang Rai"],["Chon Buri","Chon Buri"],["Chumphon","Chumphon"],["Kalasin","Kalasin"],["Kamphaeng Phet","Kamphaeng Phet"],["Kanchanaburi","Kanchanaburi"],["Khon Kaen","Khon Kaen"],["Krabi","Krabi"],["Lampang","Lampang"],["Lamphun","Lamphun"],["Loei","Loei"],["Lopburi","Lopburi"],["Mae Hong Son","Mae Hong Son"],["Maha Sarakham","Maha Sarakham"],["Mukdahan","Mukdahan"],["Nakhon Nayok","Nakhon Nayok"],["Nakhon Pathom","Nakhon Pathom"],["Nakhon Phanom","Nakhon Phanom"],["Nakhon Ratchasima","Nakhon Ratchasima"],["Nakhon Sawan","Nakhon Sawan"],["Nakhon Si Thammarat","Nakhon Si Thammarat"],["Nan","Nan"],["Narathiwat","Narathiwat"],["Nong Bua Lam Phu","Nong Bua Lam Phu"],["Nong Khai","Nong Khai"],["Nonthaburi","Nonthaburi"],["Pathum Thani","Pathum Thani"],["Pattani","Pattani"],["Pattaya","Pattaya"],["Phangnga","Phang Nga"],["Phatthalung","Phatthalung"],["Phayao","Phayao"],["Phetchabun","Phetchabun"],["Phetchaburi","Phetchaburi"],["Phichit","Phichit"],["Phitsanulok","Phitsanulok"],["
1854Phra Nakhon Si Ayutthaya","Phra Nakhon Si Ayutthaya"],["Phrae","Phrae"],["Phuket","Phuket"],["Prachin Buri","Prachin Buri"],["Prachuap Khiri Khan","Prachuap Khiri Khan"],["Ranong","Ranong"],["Ratchaburi","Ratchaburi"],["Rayong","Rayong"],["Roi Et","Roi Et"],["Sa Kaeo","Sa Kaeo"],["Sakon Nakhon","Sakon Nakhon"],["Samut Prakan","Samut Prakan"],["Samut Sakhon","Samut Sakhon"],["Samut Songkhram","Samut Songkhram"],["Saraburi","Saraburi"],["Satun","Satun"],["Sing Buri","Sing Buri"],["Sisaket","Si Sa Ket"],["Songkhla","Songkhla"],["Sukhothai","Sukhothai"],["Suphan Buri","Suphanburi"],["Surat Thani","Surat Thani"],["Surin","Surin"],["Tak","Tak"],["Trang","Trang"],["Trat","Trat"],["Ubon Ratchathani","Ubon Ratchathani"],["Udon Thani","Udon Thani"],["Uthai Thani","Uthai Thani"],["Uttaradit","Uttaradit"],["Yala","Yala"],["Yasothon","Yasothon"]]">Thailand</option> 1855<option value="Timor Leste" data-provinces="[]">Timor-Leste</option> 1856<option value="Togo" data-provinces="[]">Togo</option> 1857<option value="Tokelau" data-provinces="[]">Tokelau</option> 1858<option value="Tonga" data-provinces="[]">Tonga</option> 1859<option value="Trinidad and Tobago" data-provinces="[]">Trinidad & Tobago</option> 1860<option value="Tristan da Cunha" data-provinces="[]">Tristan da Cunha</option> 1861<option value="Tunisia" data-provinces="[]">Tunisia</option> 1862<option value="Turkey" data-provinces="[]">Türkiye</option> 1863<option value="Turkmenistan" data-provinces="[]">Turkmenistan</option> 1864<option value="Turks and Caicos Islands" data-provinces="[]">Turks & Caicos Islands</option> 1865<option value="Tuvalu" data-provinces="[]">Tuvalu</option> 1866<option value="United States Minor Outlying Islands" data-provinces="[]">U.S. Outlying Islands</option> 1867<option value="Uganda" data-provinces="[]">Uganda</option> 1868<option value="Ukraine" data-provinces="[]">Ukraine</option> 1869<option value="United Arab Emirates" data-provinces="[["Abu Dhabi","Abu Dhabi"],["Ajman","Ajman"],["Dubai","Dubai"],["Fujairah","Fujairah"],["Ras al-Khaimah","Ras al-Khaimah"],["Sharjah","Sharjah"],["Umm al-Quwain","Umm al-Quwain"]]">United Arab Emirates</option> 1870<option value="United Kingdom" data-provinces="[["British Forces","British Forces"],["England","England"],["Northern Ireland","Northern Ireland"],["Scotland","Scotland"],["Wales","Wales"]]">United Kingdom</option> 1871<option value="United States" data-provinces="[["Alabama","Alabama"],["Alaska","Alaska"],["American Samoa","American Samoa"],["Arizona","Arizona"],["Arkansas","Arkansas"],["Armed Forces Americas","Armed Forces Americas"],["Armed Forces Europe","Armed Forces Europe"],["Armed Forces Pacific","Armed Forces Pacific"],["California","California"],["Colorado","Colorado"],["Connecticut","Connecticut"],["Delaware","Delaware"],["District of Columbia","Washington DC"],["Federated States of Micronesia","Micronesia"],["Florida","Florida"],["Georgia","Georgia"],["Guam","Guam"],["Hawaii","Hawaii"],["Idaho","Idaho"],["Illinois","Illinois"],["Indiana","Indiana"],["Iowa","Iowa"],["Kansas","Kansas"],["Kentucky","Kentucky"],["Louisiana","Louisiana"],["Maine","Maine"],["Marshall Islands","Marshall Islands"],["Maryland","Maryland"],["Massachusetts","Massachusetts"],["Michigan","Michigan"],["Minnesota","Minnesota"],["Mississippi","Mississippi"],["Missouri","Missouri"],["Montana","Montana"],["Nebraska","Nebraska"],["Nevada","Nevada"],["New Hampshire","New Hampshire"],["New Jersey","New Jersey"],["New Mexico","New Mexico"],["New York","New York"],["North Carolina","North Carolina"],["North Dakota","North Dakota"],["Northern Mariana Islands","Northern Mariana Islands"],["Ohio","Ohio"],["Oklahoma","Oklahoma"],["Oregon","Oregon"],["Palau","Palau"],["Pennsylvania","Pennsylvania"],["Puerto Rico","Puerto Rico"],["Rhode Island","Rhode Island"],["South Carolina","South Carolina"],["South Dakota","South Dakota"],["Tennessee","Tennessee"],["Texas","Texas"],["Utah","Utah"],["Vermont","Vermont"],["Virgin Islands","U.S. Virgin Islands"],["Virginia","Virginia"],["Washington","Washington"],["West Virginia","West Virginia"],["Wisconsin","Wisconsin"],["Wyoming","Wyoming"]]">United States</option> 1872<option value="Uruguay" data-provinces="[["Artigas","Artigas"],["Canelones","Canelones"],["Cerro Largo","Cerro Largo"],["Colonia","Colonia"],["Durazno","Durazno"],["Flores","Flores"],["Florida","Florida"],["Lavalleja","Lavalleja"],["Maldonado","Maldonado"],["Montevideo","Montevideo"],["Paysandú","Paysandú"],["Rivera","Rivera"],["Rocha","Rocha"],["RÃo Negro","RÃo Negro"],["Salto","Salto"],["San José","San José"],["Soriano","Soriano"],["Tacuarembó","Tacuarembó"],["Treinta y Tres","Treinta y Tres"]]">Uruguay</option> 1873<option value="Uzbekistan" data-provinces="[]">Uzbekistan</option> 1874<option value="Vanuatu" data-provinces="[]">Vanuatu</option> 1875<option value="Holy See (Vatican City State)" data-provinces="[]">Vatican City</option> 1876<option value="Venezuela" data-provinces="[["Amazonas","Amazonas"],["Anzoátegui","Anzoátegui"],["Apure","Apure"],["Aragua","Aragua"],["Barinas","Barinas"],["BolÃvar","BolÃvar"],["Carabobo","Carabobo"],["Cojedes","Cojedes"],["Delta Amacuro","Delta Amacuro"],["Dependencias Federales","Federal Dependencies"],["Distrito Capital","Capital"],["Falcón","Falcón"],["Guárico","Guárico"],["La Guaira","Vargas"],["Lara","Lara"],["Miranda","Miranda"],["Monagas","Monagas"],["Mérida","Mérida"],["Nueva Esparta","Nueva Esparta"],["Portuguesa","Portuguesa"],["Sucre","Sucre"],["Trujillo","Trujillo"],["Táchira","Táchira"],["Yaracuy","Yaracuy"],["Zulia","Zulia"]]">Venezuela</option> 1877<option value="Vietnam" data-provinces="[]">Vietnam</option> 1878<option value="Wallis And Futuna" data-provinces="[]">Wallis & Futuna</option> 1879<option value="Western Sahara" data-provinces="[]">Western Sahara</option> 1880<option value="Yemen" data-provinces="[]">Yemen</option> 1881<option value="Zambia" data-provinces="[]">Zambia</option> 1882<option value="Zimbabwe" data-provinces="[]">Zimbabwe</option>`; 1883 window.CF.shippingZoneCountryOptionTags = `<option value="United States" data-provinces="[["Alabama","Alabama"],["Alaska","Alaska"],["American Samoa","American Samoa"],["Arizona","Arizona"],["Arkansas","Arkansas"],["Armed Forces Americas","Armed Forces Americas"],["Armed Forces Europe","Armed Forces Europe"],["Armed Forces Pacific","Armed Forces Pacific"],["California","California"],["Colorado","Colorado"],["Connecticut","Connecticut"],["Delaware","Delaware"],["District of Columbia","Washington DC"],["Federated States of Micronesia","Micronesia"],["Florida","Florida"],["Georgia","Georgia"],["Guam","Guam"],["Hawaii","Hawaii"],["Idaho","Idaho"],["Illinois","Illinois"],["Indiana","Indiana"],["Iowa","Iowa"],["Kansas","Kansas"],["Kentucky","Kentucky"],["Louisiana","Louisiana"],["Maine","Maine"],["Marshall Islands","Marshall Islands"],["Maryland","Maryland"],["Massachusetts","Massachusetts"],["Michigan","Michigan"],["Minnesota","Minnesota"],["Mississippi","Mississippi"],["Missouri","Missouri"],["Montana","Montana"],["Nebraska","Nebraska"],["Nevada","Nevada"],["New Hampshire","New Hampshire"],["New Jersey","New Jersey"],["New Mexico","New Mexico"],["New York","New York"],["North Carolina","North Carolina"],["North Dakota","North Dakota"],["Northern Mariana Islands","Northern Mariana Islands"],["Ohio","Ohio"],["Oklahoma","Oklahoma"],["Oregon","Oregon"],["Palau","Palau"],["Pennsylvania","Pennsylvania"],["Puerto Rico","Puerto Rico"],["Rhode Island","Rhode Island"],["South Carolina","South Carolina"],["South Dakota","South Dakota"],["Tennessee","Tennessee"],["Texas","Texas"],["Utah","Utah"],["Vermont","Vermont"],["Virgin Islands","U.S. Virgin Islands"],["Virginia","Virginia"],["Washington","Washington"],["West Virginia","West Virginia"],["Wisconsin","Wisconsin"],["Wyoming","Wyoming"]]">United States</option> 1884<option value="---" data-provinces="[]">---</option> 1885<option value="Afghanistan" data-provinces="[]">Afghanistan</option> 1886<option value="Aland Islands" data-provinces="[]">à land Islands</option> 1887<option value="Albania" data-provinces="[]">Albania</option> 1888<option value="Algeria" data-provinces="[]">Algeria</option> 1889<option value="Andorra" data-provinces="[]">Andorra</option> 1890<option value="Angola" data-provinces="[]">Angola</option> 1891<option value="Anguilla" data-provinces="[]">Anguilla</option> 1892<option value="Antigua And Barbuda" data-provinces="[]">Antigua & Barbuda</option> 1893<option value="Argentina" data-provinces="[["Buenos Aires","Buenos Aires Province"],["Catamarca","Catamarca"],["Chaco","Chaco"],["Chubut","Chubut"],["Ciudad Autónoma de Buenos Aires","Buenos Aires (Autonomous City)"],["Corrientes","Corrientes"],["Córdoba","Córdoba"],["Entre RÃos","Entre RÃos"],["Formosa","Formosa"],["Jujuy","Jujuy"],["La Pampa","La Pampa"],["La Rioja","La Rioja"],["
1893Mendoza","Mendoza"],["Misiones","Misiones"],["Neuquén","Neuquén"],["RÃo Negro","RÃo Negro"],["Salta","Salta"],["San Juan","San Juan"],["San Luis","San Luis"],["Santa Cruz","Santa Cruz"],["Santa Fe","Santa Fe"],["Santiago Del Estero","Santiago del Estero"],["Tierra Del Fuego","Tierra del Fuego"],["Tucumán","Tucumán"]]">Argentina</option> 1894<option value="Armenia" data-provinces="[]">Armenia</option> 1895<option value="Aruba" data-provinces="[]">Aruba</option> 1896<option value="Ascension Island" data-provinces="[]">Ascension Island</option> 1897<option value="Australia" data-provinces="[["Australian Capital Territory","Australian Capital Territory"],["New South Wales","New South Wales"],["Northern Territory","Northern Territory"],["Queensland","Queensland"],["South Australia","South Australia"],["Tasmania","Tasmania"],["Victoria","Victoria"],["Western Australia","Western Australia"]]">Australia</option> 1898<option value="Austria" data-provinces="[]">Austria</option> 1899<option value="Azerbaijan" data-provinces="[]">Azerbaijan</option> 1900<option value="Bahamas" data-provinces="[]">Bahamas</option> 1901<option value="Bahrain" data-provinces="[]">Bahrain</option> 1902<option value="Bangladesh" data-provinces="[]">Bangladesh</option> 1903<option value="Barbados" data-provinces="[]">Barbados</option> 1904<option value="Belarus" data-provinces="[]">Belarus</option> 1905<option value="Belgium" data-provinces="[]">Belgium</option> 1906<option value="Belize" data-provinces="[]">Belize</option> 1907<option value="Benin" data-provinces="[]">Benin</option> 1908<option value="Bermuda" data-provinces="[]">Bermuda</option> 1909<option value="Bhutan" data-provinces="[]">Bhutan</option> 1910<option value="Bolivia" data-provinces="[]">Bolivia</option> 1911<option value="Bosnia And Herzegovina" data-provinces="[]">Bosnia & Herzegovina</option> 1912<option value="Botswana" data-provinces="[]">Botswana</option> 1913<option value="Brazil" data-provinces="[["Acre","Acre"],["Alagoas","Alagoas"],["Amapá","Amapá"],["Amazonas","Amazonas"],["Bahia","Bahia"],["Ceará","Ceará"],["Distrito Federal","Federal District"],["EspÃrito Santo","EspÃrito Santo"],["Goiás","Goiás"],["Maranhão","Maranhão"],["Mato Grosso","Mato Grosso"],["Mato Grosso do Sul","Mato Grosso do Sul"],["Minas Gerais","Minas Gerais"],["Paraná","Paraná"],["ParaÃba","ParaÃba"],["Pará","Pará"],["Pernambuco","Pernambuco"],["PiauÃ","PiauÃ"],["Rio Grande do Norte","Rio Grande do Norte"],["Rio Grande do Sul","Rio Grande do Sul"],["Rio de Janeiro","Rio de Janeiro"],["Rondônia","Rondônia"],["Roraima","Roraima"],["Santa Catarina","Santa Catarina"],["Sergipe","Sergipe"],["São Paulo","São Paulo"],["Tocantins","Tocantins"]]">Brazil</option> 1914<option value="British Indian Ocean Territory" data-provinces="[]">British Indian Ocean Territory</option> 1915<option value="Virgin Islands, British" data-provinces="[]">British Virgin Islands</option> 1916<option value="Brunei" data-provinces="[]">Brunei</option> 1917<option value="Bulgaria" data-provinces="[]">Bulgaria</option> 1918<option value="Burkina Faso" data-provinces="[]">Burkina Faso</option> 1919<option value="Burundi" data-provinces="[]">Burundi</option> 1920<option value="Cambodia" data-provinces="[]">Cambodia</option> 1921<option value="Republic of Cameroon" data-provinces="[]">Cameroon</option> 1922<option value="Canada" data-provinces="[["Alberta","Alberta"],["British Columbia","British Columbia"],["Manitoba","Manitoba"],["New Brunswick","New Brunswick"],["Newfoundland and Labrador","Newfoundland and Labrador"],["Northwest Territories","Northwest Territories"],["Nova Scotia","Nova Scotia"],["Nunavut","Nunavut"],["Ontario","Ontario"],["Prince Edward Island","Prince Edward Island"],["Quebec","Quebec"],["Saskatchewan","Saskatchewan"],["Yukon","Yukon"]]">Canada</option> 1923<option value="Cape Verde" data-provinces="[]">Cape Verde</option> 1924<option value="Caribbean Netherlands" data-provinces="[]">Caribbean Netherlands</option> 1925<option value="Cayman Islands" data-provinces="[]">Cayman Islands</option> 1926<option value="Central African Republic" data-provinces="[]">Central African Republic</option> 1927<option value="Chad" data-provinces="[]">Chad</option> 1928<option value="Chile" data-provinces="[["Antofagasta","Antofagasta"],["AraucanÃa","AraucanÃa"],["Arica and Parinacota","
1928Arica y Parinacota"],["Atacama","Atacama"],["Aysén","Aysén"],["BiobÃo","BÃo BÃo"],["Coquimbo","Coquimbo"],["Los Lagos","Los Lagos"],["Los RÃos","Los RÃos"],["Magallanes","Magallanes Region"],["Maule","Maule"],["O'Higgins","Libertador General Bernardo OâHiggins"],["Santiago","Santiago Metropolitan"],["Tarapacá","Tarapacá"],["ValparaÃso","ValparaÃso"],["Ãuble","Ãuble"]]">Chile</option> 1929<option value="China" data-provinces="[["Anhui","Anhui"],["Beijing","Beijing"],["Chongqing","Chongqing"],["Fujian","Fujian"],["Gansu","Gansu"],["Guangdong","Guangdong"],["Guangxi","Guangxi"],["Guizhou","Guizhou"],["Hainan","Hainan"],["Hebei","Hebei"],["Heilongjiang","Heilongjiang"],["Henan","Henan"],["Hubei","Hubei"],["Hunan","Hunan"],["Inner Mongolia","Inner Mongolia"],["Jiangsu","Jiangsu"],["Jiangxi","Jiangxi"],["Jilin","Jilin"],["Liaoning","Liaoning"],["Ningxia","Ningxia"],["Qinghai","Qinghai"],["Shaanxi","Shaanxi"],["Shandong","Shandong"],["Shanghai","Shanghai"],["Shanxi","Shanxi"],["Sichuan","Sichuan"],["Tianjin","Tianjin"],["Xinjiang","Xinjiang"],["Xizang","Tibet"],["Yunnan","Yunnan"],["Zhejiang","Zhejiang"]]">China</option> 1930<option value="Christmas Island" data-provinces="[]">Christmas Island</option> 1931<option value="Cocos (Keeling) Islands" data-provinces="[]">Cocos (Keeling) Islands</option> 1932<option value="Colombia" data-provinces="[["Amazonas","Amazonas"],["Antioquia","Antioquia"],["Arauca","Arauca"],["Atlántico","Atlántico"],["Bogotá, D.C.","Capital District"],["BolÃvar","BolÃvar"],["Boyacá","Boyacá"],["Caldas","Caldas"],["Caquetá","Caquetá"],["Casanare","Casanare"],["Cauca","Cauca"],["Cesar","Cesar"],["Chocó","Chocó"],["Cundinamarca","Cundinamarca"],["Córdoba","Córdoba"],["GuainÃa","GuainÃa"],["Guaviare","Guaviare"],["Huila","Huila"],["La Guajira","La Guajira"],["Magdalena","Magdalena"],["Meta","Meta"],["Nariño","Nariño"],["Norte de Santander","Norte de Santander"],["Putumayo","Putumayo"],["QuindÃo","QuindÃo"],["Risaralda","Risaralda"],["San Andrés, Providencia y Santa Catalina","San Andrés \u0026 Providencia"],["Santander","Santander"],["Sucre","Sucre"],["Tolima","Tolima"],["Valle del Cauca","Valle del Cauca"],["Vaupés","Vaupés"],["Vichada","Vichada"]]">Colombia</option> 1933<option value="Comoros" data-provinces="[]">Comoros</option> 1934<option value="Congo" data-provinces="[]">Congo - Brazzaville</option> 1935<option value="Congo, The Democratic Republic Of The" data-provinces="[]">Congo - Kinshasa</option> 1936<option value="Cook Islands" data-provinces="[]">Cook Islands</option> 1937<option value="Costa Rica" data-provinces="[["Alajuela","Alajuela"],["Cartago","Cartago"],["Guanacaste","Guanacaste"],["Heredia","Heredia"],["Limón","Limón"],["Puntarenas","Puntarenas"],["San José","San José"]]">Costa Rica</option> 1938<option value="Croatia" data-provinces="[]">Croatia</option> 1939<option value="Curaçao" data-provinces="[]">Curaçao</option> 1940<option value="Cyprus" data-provinces="[]">Cyprus</option> 1941<option value="Czech Republic" data-provinces="[]">Czechia</option> 1942<option value="Côte d'Ivoire" data-provinces="[]">Côte dâIvoire</option> 1943<option value="Denmark" data-provinces="[]">Denmark</option> 1944<option value="Djibouti" data-provinces="[]">Djibouti</option> 1945<option value="Dominica" data-provinces="[]">Dominica</option> 1946<option value="Dominican Republic" data-provinces="[]">Dominican Republic</option> 1947<option value="Ecuador" data-provinces="[]">Ecuador</option> 1948<option value="Egypt" data-provinces="[["6th of October","6th of October"],["Al Sharqia","Al Sharqia"],["Alexandria","Alexandria"],["Aswan","Aswan"],["Asyut","Asyut"],["Beheira","Beheira"],["Beni Suef","Beni Suef"],["Cairo","Cairo"],["Dakahlia","Dakahlia"],["Damietta","Damietta"],["Faiyum","Faiyum"],["Gharbia","Gharbia"],["Giza","Giza"],["Helwan","Helwan"],["Ismailia","Ismailia"],["Kafr el-Sheikh","Kafr el-Sheikh"],["Luxor","Luxor"],["Matrouh","Matrouh"],["Minya","Minya"],["Monufia","Monufia"],["New Valley","New Valley"],["North Sinai","North Sinai"],["Port Said","Port Said"],["Qalyubia","Qalyubia"],["Qena","Qena"],["Red Sea","Red Sea"],["Sohag","Sohag"],["South Sinai","South Sinai"],["Suez","Suez"]]">Egypt</option> 1949<option value="El Salvador" data-provinces="[["Ahuachapán","Ahuachapán"],["Cabañas","Cabañas"],["Chalatenango","Chalatenango"],["Cuscatlán","Cuscatlán"],["La Libertad","La Libertad"],["La Paz","La Paz"],["La Unión","La Unión"],["Morazán","Morazán"],["San Miguel","San Miguel"],["San Salvador","San Salvador"],["San Vicente","San Vicente"],["Santa Ana","Santa Ana"],["Sonsonate","Sonsonate"],["Usulután","Usulután"]]">El Salvador</option> 1950<option value="Equatorial Guinea" data-provinces="[]">Equatorial Guinea</option> 1951<option value="Eritrea" data-provinces="[]">Eritrea</option> 1952<option value="Estonia" data-provinces="[]">Estonia</option> 1953<option value="Eswatini" data-provinces="[]">Eswatini</option> 1954<option value="Ethiopia" data-provinces="[]">Ethiopia</option> 1955<option value="Falkland Islands (Malvinas)" data-provinces="[]">Falkland Islands</option> 1956<option value="Faroe Islands" data-provinces="[]">Faroe Islands</option> 1957<option value="Fiji" data-provinces="[]">Fiji</option> 1958<option value="Finland" data-provinces="[]">Finland</option> 1959<option value="France" data-provinces="[]">France</option> 1960<option value="French Guiana" data-provinces="[]">French Guiana</option> 1961<option value="French Polynesia" data-provinces="[]">French Polynesia</option> 1962<option value="French Southern Territories" data-provinces="[]">French Southern Territories</option> 1963<option value="Gabon" data-provinces="[]">Gabon</option> 1964<option value="Gambia" data-provinces="[]">Gambia</option> 1965<option value="Georgia" data-provinces="[]">Georgia</option> 1966<option value="Germany" data-provinces="[]">Germany</option> 1967<option value="Ghana" data-provinces="[]">Ghana</option> 1968<option value="Gibraltar" data-provinces="[]">Gibraltar</option> 1969<option value="Greece" data-provinces="[]">Greece</option> 1970<option value="Greenland" data-provinces="[]">Greenland</option> 1971<option value="Grenada" data-provinces="[]">Grenada</option> 1972<option value="Guadeloupe" data-provinces="[]">Guadeloupe</option> 1973<option value="Guatemala" data-provinces="[["Alta Verapaz","Alta Verapaz"],["Baja Verapaz","Baja Verapaz"],["Chimaltenango","Chimaltenango"],["Chiquimula","Chiquimula"],["El Progreso","El Progreso"],["Escuintla","Escuintla"],["Guatemala","Guatemala"],["Huehuetenango","Huehuetenango"],["Izabal","Izabal"],["Jalapa","Jalapa"],["Jutiapa","Jutiapa"],["Petén","Petén"],["Quetzaltenango","Quetzaltenango"],["Quiché","Quiché"],["Retalhuleu","Retalhuleu"],["Sacatepéquez","Sacatepéquez"],["San Marcos","San Marcos"],["Santa Rosa","Santa Rosa"],["Sololá","Sololá"],["Suchitepéquez","Suchitepéquez"],["Totonicapán","Totonicapán"],["Zacapa","Zacapa"]]">Guatemala</option> 1974<option value="Guernsey" data-provinces="[]">Guernsey</option> 1975<option value="Guinea" data-provinces="[]">Guinea</option> 1976<option value="Guinea Bissau" data-provinces="[]">Guinea-Bissau</option> 1977<option value="Guyana" data-provinces="[]">Guyana</option> 1978<option value="Haiti" data-provinces="[]">Haiti</option> 1979<option value="Honduras" data-provinces="[]">Honduras</option> 1980<option value="Hong Kong" data-provinces="[["Hong Kong Island","Hong Kong Island"],["Kowloon","Kowloon"],["New Territories","New Territories"]]">Hong Kong SAR</option> 1981<option value="Hungary" data-provinces="[]">Hungary</option> 1982<option value="Iceland" data-provinces="[]">Iceland</option> 1983<option value="India" data-provinces="[["Andaman and Nicobar Islands","Andaman and Nicobar Islands"],["Andhra Pradesh","Andhra Pradesh"],["Arunachal Pradesh","Arunachal Pradesh"],["Assam","Assam"],["Bihar","Bihar"],["Chandigarh","Chandigarh"],["Chhattisgarh","Chhattisgarh"],["Dadra and Nagar Haveli","Dadra and Nagar Haveli"],["Daman and Diu","Daman and Diu"],["Delhi","Delhi"],["Goa","Goa"],["Gujarat","Gujarat"],["Haryana","Haryana"],["Himachal Pradesh","Himachal Pradesh"],["Jammu and Kashmir","Jammu and Kashmir"],["Jharkhand","Jharkhand"],["Karnataka","Karnataka"],["Kerala","Kerala"],["Ladakh","Ladakh"],["Lakshadweep","Lakshadweep"],["Madhya Pradesh","Madhya Pradesh"],["Maharashtra","Maharashtra"],["Manipur","Manipur"],["Meghalaya","Meghalaya"],["Mizoram","Mizoram"],["Nagaland","Nagaland"],["Odisha","Odisha"],["Puducherry","Puducherry"],["Punjab","Punjab"],["Rajasthan","Rajasthan"],["Sikkim","Sikkim"],["Tamil Nadu","Tamil Nadu"],["Telangana","Telangana"],["Tripura","Tripura"],["Uttar Pradesh","Uttar Pradesh"],["Uttarakhand","Uttarakhand"],["West Bengal","West Bengal"]]">India</option> 1984<option value="Indonesia" data-provinces="[["Aceh","Aceh"],["Bali","Bali"],["Bangka Belitung","BangkaâBelitung Islands"],["Banten","Banten"],["Bengkulu","Bengkulu"],["Gorontalo","Gorontalo"],["Jakarta","Jakarta"],["Jambi","Jambi"],["Jawa Barat","West Java"],["Jawa Tengah","Central Java"],["Jawa Timur","East Java"],["Kalimantan Barat","West Kalimantan"],["Kalimantan Selatan","South Kalimantan"],["Kalimantan Tengah","Central Kalimantan"],["Kalimantan Timur","East Kalimantan"],["Kalimantan Utara","North Kalimantan"],["Kepulauan Riau","Riau Islands"],["
1984Lampung","Lampung"],["Maluku","Maluku"],["Maluku Utara","North Maluku"],["North Sumatra","North Sumatra"],["Nusa Tenggara Barat","West Nusa Tenggara"],["Nusa Tenggara Timur","East Nusa Tenggara"],["Papua","Papua"],["Papua Barat","West Papua"],["Riau","Riau"],["South Sumatra","South Sumatra"],["Sulawesi Barat","West Sulawesi"],["Sulawesi Selatan","South Sulawesi"],["Sulawesi Tengah","Central Sulawesi"],["Sulawesi Tenggara","Southeast Sulawesi"],["Sulawesi Utara","North Sulawesi"],["West Sumatra","West Sumatra"],["Yogyakarta","Yogyakarta"]]">Indonesia</option> 1985<option value="Iraq" data-provinces="[]">Iraq</option> 1986<option value="Ireland" data-provinces="[["Carlow","Carlow"],["Cavan","Cavan"],["Clare","Clare"],["Cork","Cork"],["Donegal","Donegal"],["Dublin","Dublin"],["Galway","Galway"],["Kerry","Kerry"],["Kildare","Kildare"],["Kilkenny","Kilkenny"],["Laois","Laois"],["Leitrim","Leitrim"],["Limerick","Limerick"],["Longford","Longford"],["Louth","Louth"],["Mayo","Mayo"],["Meath","Meath"],["Monaghan","Monaghan"],["Offaly","Offaly"],["Roscommon","Roscommon"],["Sligo","Sligo"],["Tipperary","Tipperary"],["Waterford","Waterford"],["Westmeath","Westmeath"],["Wexford","Wexford"],["Wicklow","Wicklow"]]">Ireland</option> 1987<option value="Isle Of Man" data-provinces="[]">Isle of Man</option> 1988<option value="Israel" data-provinces="[]">Israel</option> 1989<option value="Italy" data-provinces="[["Agrigento","Agrigento"],["Alessandria","Alessandria"],["Ancona","Ancona"],["Aosta","Aosta Valley"],["Arezzo","Arezzo"],["Ascoli Piceno","Ascoli Piceno"],["Asti","Asti"],["Avellino","Avellino"],["Bari","Bari"],["Barletta-Andria-Trani","Barletta-Andria-Trani"],["Belluno","Belluno"],["Benevento","Benevento"],["Bergamo","Bergamo"],["Biella","Biella"],["Bologna","Bologna"],["Bolzano","South Tyrol"],["Brescia","Brescia"],["Brindisi","Brindisi"],["Cagliari","Cagliari"],["Caltanissetta","Caltanissetta"],["Campobasso","Campobasso"],["Caserta","Caserta"],["Catania","Catania"],["Catanzaro","Catanzaro"],["Chieti","Chieti"],["Como","Como"],["Cosenza","Cosenza"],["Cremona","Cremona"],["Crotone","Crotone"],["Cuneo","Cuneo"],["Enna","Enna"],["Fermo","Fermo"],["Ferrara","Ferrara"],["Firenze","Florence"],["Foggia","Foggia"],["Forlì-Cesena","Forlì-Cesena"],["Frosinone","Frosinone"],["Gallura Nord-Est Sardegna","Gallura Nord-Est Sardegna"],["Genova","Genoa"],["Gorizia","Gorizia"],["Grosseto","Grosseto"],["Imperia","Imperia"],["Isernia","Isernia"],["L'Aquila","LâAquila"],["La Spezia","La Spezia"],["Latina","Latina"],["Lecce","Lecce"],["Lecco","Lecco"],["Livorno","Livorno"],["Lodi","Lodi"],["Lucca","Lucca"],["Macerata","Macerata"],["Mantova","Mantua"],["Massa-Carrara","Massa and Carrara"],["Matera","Matera"],["Medio Campidano","Medio Campidano"],["Messina","Messina"],["Milano","Milan"],["Modena","Modena"],["Monza e Brianza","Monza and Brianza"],["Napoli","Naples"],["Novara","Novara"],["Nuoro","Nuoro"],["Ogliastra","Ogliastra"],["Oristano","Oristano"],["Padova","Padua"],["Palermo","Palermo"],["Parma","Parma"],["Pavia","Pavia"],["Perugia","Perugia"],["Pesaro e Urbino","Pesaro and Urbino"],["Pescara","Pescara"],["Piacenza","Piacenza"],["Pisa","Pisa"],["Pistoia","Pistoia"],["Pordenone","Pordenone"],["Potenza","Potenza"],["Prato","Prato"],["Ragusa","Ragusa"],["Ravenna","Ravenna"],["Reggio Calabria","Reggio Calabria"],["Reggio Emilia","Reggio Emilia"],["Rieti","Rieti"],["Rimini","Rimini"],["Roma","Rome"],["Rovigo","Rovigo"],["Salerno","Salerno"],["Sassari","Sassari"],["Savona","Savona"],["Siena","Siena"],["Siracusa","Syracuse"],["Sondrio","Sondrio"],["Sulcis Iglesiente","Sulcis Iglesiente"],["Taranto","Taranto"],["Teramo","Teramo"],["Terni","Terni"],["Torino","Turin"],["Trapani","Trapani"],["Trento","Trentino"],["Treviso","Treviso"],["Trieste","Trieste"],["Udine","Udine"],["Varese","Varese"],["Venezia","Venice"],["Verbano-Cusio-Ossola","Verbano-Cusio-Ossola"],["Vercelli","Vercelli"],["Verona","Verona"],["Vibo Valentia","Vibo Valentia"],["Vicenza","Vicenza"],["Viterbo","Viterbo"]]">Italy</option> 1990<option value="Jamaica" data-provinces="[]">Jamaica</option> 1991<option value="Japan" data-provinces="[["Aichi","Aichi"],["Akita","Akita"],["Aomori","Aomori"],["Chiba","Chiba"],["Ehime","Ehime"],["Fukui","Fukui"],["Fukuoka","Fukuoka"],["Fukushima","Fukushima"],["Gifu","Gifu"],["Gunma","Gunma"],["Hiroshima","Hiroshima"],["HokkaidÅ","Hokkaido"],["HyÅgo","Hyogo"],["Ibaraki","Ibaraki"],["Ishikawa","Ishikawa"],["Iwate","Iwate"],["Kagawa","Kagawa"],["Kagoshima","Kagoshima"],["Kanagawa","Kanagawa"],["Kumamoto","Kumamoto"],["KyÅto","Kyoto"],["KÅchi","Kochi"],["Mie","Mie"],["Miyagi","Miyagi"],["Miyazaki","Miyazaki"],["Nagano","Nagano"],["Nagasaki","Nagasaki"],["Nara","Nara"],["Niigata","Niigata"],["Okayama","Okayama"],["Okinawa","Okinawa"],["Saga","Saga"],["Saitama","Saitama"],["Shiga","Shiga"],["Shimane","Shimane"],["Shizuoka","Shizuoka"],["Tochigi","Tochigi"],["Tokushima","Tokushima"],["Tottori","Tottori"],["Toyama","Toyama"],["TÅkyÅ","Tokyo"],["Wakayama","Wakayama"],["Yamagata","Yamagata"],["Yamaguchi","Yamaguchi"],["Yamanashi","Yamanashi"],["Åita","Oita"],["Åsaka","Osaka"]]">Japan</option> 1992<option value="Jersey" data-provinces="[]">Jersey</option> 1993<option value="Jordan" data-provinces="[]">Jordan</option> 1994<option value="Kazakhstan" data-provinces="[]">Kazakhstan</option> 1995<option value="Kenya" data-provinces="[]">Kenya</option> 1996<option value="Kiribati" data-provinces="[]">Kiribati</option> 1997<option value="Kosovo" data-provinces="[]">Kosovo</option> 1998<option value="Kuwait" data-provinces="[["Al Ahmadi","Al Ahmadi"],["Al Asimah","Al Asimah"],["Al Farwaniyah","Al Farwaniyah"],["Al Jahra","Al Jahra"],["Hawalli","Hawalli"],["Mubarak Al-Kabeer","Mubarak Al-Kabeer"]]">Kuwait</option> 1999<option value="Kyrgyzstan" data-provinces="[]">Kyrgyzstan</option> 2000<option value="Lao People's Democratic Republic" data-provinces="[]">Laos</option> 2001<option value="Latvia" data-provinces="[]">Latvia</option> 2002<option value="Lebanon" data-provinces="[]">Lebanon</option> 2003<option value="Lesotho" data-provinces="[]">Lesotho</option> 2004<option value="Liberia" data-provinces="[]">Liberia</option> 2005<option value="Libyan Arab Jamahiriya" data-provinces="[]">Libya</option> 2006<option value="Liechtenstein" data-provinces="[]">Liechtenstein</option> 2007<option value="Lithuania" data-provinces="[]">Lithuania</option> 2008<option value="Luxembourg" data-provinces="[]">Luxembourg</option> 2009<option value="Macao" data-provinces="[]">Macao SAR</option>
2010<option value="Madagascar" data-provinces="[]">Madagascar</option> 2011<option value="Malawi" data-provinces="[]">Malawi</option> 2012<option value="Malaysia" data-provinces="[["Johor","Johor"],["Kedah","Kedah"],["Kelantan","Kelantan"],["Kuala Lumpur","Kuala Lumpur"],["Labuan","Labuan"],["Melaka","Malacca"],["Negeri Sembilan","Negeri Sembilan"],["Pahang","Pahang"],["Penang","Penang"],["Perak","Perak"],["Perlis","Perlis"],["Putrajaya","Putrajaya"],["Sabah","Sabah"],["Sarawak","Sarawak"],["Selangor","Selangor"],["Terengganu","Terengganu"]]">Malaysia</option> 2013<option value="Maldives" data-provinces="[]">Maldives</option> 2014<option value="Mali" data-provinces="[]">Mali</option> 2015<option value="Malta" data-provinces="[]">Malta</option> 2016<option value="Martinique" data-provinces="[]">Martinique</option> 2017<option value="Mauritania" data-provinces="[]">Mauritania</option> 2018<option value="Mauritius" data-provinces="[]">Mauritius</option> 2019<option value="Mayotte" data-provinces="[]">Mayotte</option> 2020<option value="Mexico" data-provinces="[["Aguascalientes","Aguascalientes"],["Baja California","Baja California"],["Baja California Sur","Baja California Sur"],["Campeche","Campeche"],["Chiapas","Chiapas"],["Chihuahua","Chihuahua"],["Ciudad de México","Ciudad de Mexico"],["Coahuila","Coahuila"],["Colima","Colima"],["Durango","Durango"],["Guanajuato","Guanajuato"],["Guerrero","Guerrero"],["Hidalgo","Hidalgo"],["Jalisco","Jalisco"],["Michoacán","Michoacán"],["Morelos","Morelos"],["México","Mexico State"],["Nayarit","Nayarit"],["Nuevo León","Nuevo León"],["Oaxaca","Oaxaca"],["Puebla","Puebla"],["Querétaro","Querétaro"],["Quintana Roo","Quintana Roo"],["San Luis PotosÃ","San Luis PotosÃ"],["Sinaloa","Sinaloa"],["Sonora","Sonora"],["Tabasco","Tabasco"],["Tamaulipas","Tamaulipas"],["Tlaxcala","Tlaxcala"],["Veracruz","Veracruz"],["Yucatán","Yucatán"],["Zacatecas","Zacatecas"]]">Mexico</option> 2021<option value="Moldova, Republic of" data-provinces="[]">Moldova</option> 2022<option value="Monaco" data-provinces="[]">Monaco</option> 2023<option value="Mongolia" data-provinces="[]">Mongolia</option> 2024<option value="Montenegro" data-provinces="[]">Montenegro</option> 2025<option value="Montserrat" data-provinces="[]">Montserrat</option> 2026<option value="Morocco" data-provinces="[]">Morocco</option> 2027<option value="Mozambique" data-provinces="[]">Mozambique</option> 2028<option value="Myanmar" data-provinces="[]">Myanmar (Burma)</option> 2029<option value="Namibia" data-provinces="[]">Namibia</option> 2030<option value="Nauru" data-provinces="[]">Nauru</option> 2031<option value="Nepal" data-provinces="[]">Nepal</option> 2032<option value="Netherlands" data-provinces="[]">Netherlands</option> 2033<option value="New Caledonia" data-provinces="[]">New Caledonia</option> 2034<option value="New Zealand" data-provinces="[["Auckland","Auckland"],["Bay of Plenty","Bay of Plenty"],["Canterbury","Canterbury"],["Chatham Islands","Chatham Islands"],["Gisborne","Gisborne"],["Hawke's Bay","Hawkeâs Bay"],["Manawatu-Wanganui","ManawatÅ«-Whanganui"],["Marlborough","Marlborough"],["Nelson","Nelson"],["Northland","Northland"],["Otago","Otago"],["Southland","Southland"],["Taranaki","Taranaki"],["Tasman","Tasman"],["Waikato","Waikato"],["Wellington","Wellington"],["West Coast","West Coast"]]">New Zealand</option> 2035<option value="Nicaragua" data-provinces="[]">Nicaragua</option> 2036<option value="Niger" data-provinces="[]">Niger</option> 2037<option value="Nigeria" data-provinces="[["Abia","Abia"],["Abuja Federal Capital Territory","Federal Capital Territory"],["Adamawa","Adamawa"],["Akwa Ibom","Akwa Ibom"],["Anambra","Anambra"],["Bauchi","Bauchi"],["Bayelsa","Bayelsa"],["Benue","Benue"],["Borno","Borno"],["Cross River","Cross River"],["Delta","Delta"],["Ebonyi","Ebonyi"],["Edo","Edo"],["Ekiti","Ekiti"],["Enugu","Enugu"],["Gombe","Gombe"],["Imo","Imo"],["Jigawa","Jigawa"],["Kaduna","Kaduna"],["Kano","Kano"],["Katsina","Katsina"],["Kebbi","Kebbi"],["Kogi","Kogi"],["Kwara","Kwara"],["Lagos","Lagos"],["Nasarawa","Nasarawa"],["Niger","Niger"],["Ogun","Ogun"],["Ondo","Ondo"],["Osun","Osun"],["Oyo","Oyo"],["Plateau","Plateau"],["Rivers","Rivers"],["Sokoto","Sokoto"],["Taraba","Taraba"],["Yobe","Yobe"],["Zamfara","Zamfara"]]">Nigeria</option> 2038<option value="Niue" data-provinces="[]">Niue</option> 2039<option value="Norfolk Island" data-provinces="[]">Norfolk Island</option> 2040<option value="North Macedonia" data-provinces="[]">North Macedonia</option> 2041<option value="Norway" data-provinces="[]">Norway</option> 2042<option value="Oman" data-provinces="[]">Oman</option> 2043<option value="Pakistan" data-provinces="[]">Pakistan</option> 2044<option value="Palestinian Territory, Occupied" data-provinces="[]">Palestinian Territories</option> 2045<option value="Panama" data-provinces="[["Bocas del Toro","Bocas del Toro"],["ChiriquÃ","ChiriquÃ"],["Coclé","Coclé"],["Colón","Colón"],["Darién","Darién"],["Emberá","Emberá"],["Herrera","Herrera"],["Kuna Yala","Guna Yala"],["Los Santos","Los Santos"],["Ngöbe-Buglé","Ngöbe-Buglé"],["Panamá","Panamá"],["Panamá Oeste","West Panamá"],["Veraguas","Veraguas"]]">Panama</option> 2046<option value="Papua New Guinea" data-provinces="[]">Papua New Guinea</option> 2047<option value="Paraguay" data-provinces="[]">Paraguay</option> 2048<option value="Peru" data-provinces="[["Amazonas","Amazonas"],["ApurÃmac","ApurÃmac"],["Arequipa","Arequipa"],["Ayacucho","Ayacucho"],["Cajamarca","Cajamarca"],["Callao","El Callao"],["Cuzco","Cusco"],["Huancavelica","Huancavelica"],["Huánuco","Huánuco"],["Ica","Ica"],["JunÃn","JunÃn"],["La Libertad","La Libertad"],["Lambayeque","Lambayeque"],["Lima (departamento)","Lima (Department)"],["Lima (provincia)","Lima (Metropolitan)"],["Loreto","Loreto"],["Madre de Dios","Madre de Dios"],["Moquegua","Moquegua"],["Pasco","Pasco"],["Piura","Piura"],["Puno","Puno"],["San MartÃn","San MartÃn"],["Tacna","Tacna"],["Tumbes","Tumbes"],["Ucayali","Ucayali"],["Ãncash","Ancash"]]">
2048Peru</option> 2049<option value="Philippines" data-provinces="[["Abra","Abra"],["Agusan del Norte","Agusan del Norte"],["Agusan del Sur","Agusan del Sur"],["Aklan","Aklan"],["Albay","Albay"],["Antique","Antique"],["Apayao","Apayao"],["Aurora","Aurora"],["Basilan","Basilan"],["Bataan","Bataan"],["Batanes","Batanes"],["Batangas","Batangas"],["Benguet","Benguet"],["Biliran","Biliran"],["Bohol","Bohol"],["Bukidnon","Bukidnon"],["Bulacan","Bulacan"],["Cagayan","Cagayan"],["Camarines Norte","Camarines Norte"],["Camarines Sur","Camarines Sur"],["Camiguin","Camiguin"],["Capiz","Capiz"],["Catanduanes","Catanduanes"],["Cavite","Cavite"],["Cebu","Cebu"],["Cotabato","Cotabato"],["Davao Occidental","Davao Occidental"],["Davao Oriental","Davao Oriental"],["Davao de Oro","Compostela Valley"],["Davao del Norte","Davao del Norte"],["Davao del Sur","Davao del Sur"],["Dinagat Islands","Dinagat Islands"],["Eastern Samar","Eastern Samar"],["Guimaras","Guimaras"],["Ifugao","Ifugao"],["Ilocos Norte","Ilocos Norte"],["Ilocos Sur","Ilocos Sur"],["Iloilo","Iloilo"],["Isabela","Isabela"],["Kalinga","Kalinga"],["La Union","La Union"],["Laguna","Laguna"],["Lanao del Norte","Lanao del Norte"],["Lanao del Sur","Lanao del Sur"],["Leyte","Leyte"],["Maguindanao","Maguindanao"],["Marinduque","Marinduque"],["Masbate","Masbate"],["Metro Manila","Metro Manila"],["Misamis Occidental","Misamis Occidental"],["Misamis Oriental","Misamis Oriental"],["Mountain Province","Mountain"],["Negros Occidental","Negros Occidental"],["Negros Oriental","Negros Oriental"],["Northern Samar","Northern Samar"],["Nueva Ecija","Nueva Ecija"],["Nueva Vizcaya","Nueva Vizcaya"],["Occidental Mindoro","Occidental Mindoro"],["Oriental Mindoro","Oriental Mindoro"],["Palawan","Palawan"],["Pampanga","Pampanga"],["Pangasinan","Pangasinan"],["Quezon","Quezon"],["Quirino","Quirino"],["Rizal","Rizal"],["Romblon","Romblon"],["Samar","Samar"],["Sarangani","Sarangani"],["Siquijor","Siquijor"],["Sorsogon","Sorsogon"],["South Cotabato","South Cotabato"],["Southern Leyte","Southern Leyte"],["Sultan Kudarat","Sultan Kudarat"],["Sulu","Sulu"],["Surigao del Norte","Surigao del Norte"],["Surigao del Sur","Surigao del Sur"],["Tarlac","Tarlac"],["Tawi-Tawi","Tawi-Tawi"],["Zambales","Zambales"],["Zamboanga Sibugay","Zamboanga Sibugay"],["Zamboanga del Norte","Zamboanga del Norte"],["Zamboanga del Sur","Zamboanga del Sur"]]">Philippines</option> 2050<option value="Pitcairn" data-provinces="[]">Pitcairn Islands</option> 2051<option value="Poland" data-provinces="[]">Poland</option> 2052<option value="Portugal" data-provinces="[["Aveiro","Aveiro"],["Açores","Azores"],["Beja","Beja"],["Braga","Braga"],["Bragança","Bragança"],["Castelo Branco","Castelo Branco"],["Coimbra","Coimbra"],["Faro","Faro"],["Guarda","Guarda"],["Leiria","Leiria"],["Lisboa","Lisbon"],["Madeira","Madeira"],["Portalegre","Portalegre"],["Porto","Porto"],["Santarém","Santarém"],["Setúbal","Setúbal"],["Viana do Castelo","Viana do Castelo"],["Vila Real","Vila Real"],["Viseu","Viseu"],["Ãvora","Ãvora"]]">Portugal</option> 2053<option value="Qatar" data-provinces="[]">Qatar</option> 2054<option value="Reunion" data-provinces="[]">Réunion</option> 2055<option value="Romania" data-provinces="[["Alba","Alba"],["Arad","Arad"],["ArgeÈ","ArgeÈ"],["BacÄu","BacÄu"],["Bihor","Bihor"],["BistriÈa-NÄsÄud","BistriÅ£a-NÄsÄud"],["BotoÈani","BotoÅani"],["BraÈov","BraÅov"],["BrÄila","BrÄila"],["BucureÈti","Bucharest"],["BuzÄu","BuzÄu"],["CaraÈ-Severin","CaraÈ-Severin"],["Cluj","Cluj"],["ConstanÈa","ConstanÈa"],["Covasna","Covasna"],["CÄlÄraÈi","CÄlÄraÈi"],["Dolj","Dolj"],["DâmboviÈa","DâmboviÈa"],["GalaÈi","GalaÈi"],["Giurgiu","Giurgiu"],["Gorj","Gorj"],["Harghita","Harghita"],["Hunedoara","Hunedoara"],["IalomiÈa","IalomiÈa"],["IaÈi","IaÈi"],["Ilfov","Ilfov"],["MaramureÈ","MaramureÅ"],["MehedinÈi","MehedinÈi"],["MureÈ","MureÅ"],["NeamÈ","NeamÅ£"],["Olt","Olt"],["Prahova","Prahova"],["Satu Mare","Satu Mare"],["Sibiu","Sibiu"],["Suceava","Suceava"],["SÄlaj","SÄlaj"],["Teleorman","Teleorman"],["TimiÈ","TimiÈ"],["Tulcea","Tulcea"],["Vaslui","Vaslui"],["Vrancea","Vrancea"],["Vâlcea","Vâlcea"]]">Romania</option> 2056<option value="Russia" data-provinces="[["Altai Krai","Altai Krai"],["Altai Republic","Altai"],["Amur Oblast","Amur"],["Arkhangelsk Oblast","Arkhangelsk"],["Astrakhan Oblast","Astrakhan"],["Belgorod Oblast","Belgorod"],["Bryansk Oblast","Bryansk"],["Chechen Republic","Chechen"],["Chelyabinsk Oblast","Chelyabinsk"],["Chukotka Autonomous Okrug","Chukotka Okrug"],["Chuvash Republic","Chuvash"],["Irkutsk Oblast","Irkutsk"],["Ivanovo Oblast","Ivanovo"],["Jewish Autonomous Oblast","Jewish"],["Kabardino-Balkarian Republic","Kabardino-Balkar"],["Kaliningrad Oblast","Kaliningrad"],["Kaluga Oblast","Kaluga"],["Kamchatka Krai","Kamchatka Krai"],["KarachayâCherkess Republic","Karachay-Cherkess"],["Kemerovo Oblast","Kemerovo"],["Khabarovsk Krai","Khabarovsk Krai"],["Khanty-Mansi Autonomous Okrug","Khanty-Mansi"],["Kirov Oblast","Kirov"],["Komi Republic","Komi"],["Kostroma Oblast","Kostroma"],["Krasnodar Krai","Krasnodar Krai"],["Krasnoyarsk Krai","Krasnoyarsk Krai"],["Kurgan Oblast","Kurgan"],["Kursk Oblast","Kursk"],["Leningrad Oblast","Leningrad"],["Lipetsk Oblast","Lipetsk"],["Magadan Oblast","Magadan"],["Mari El Republic","Mari El"],["Moscow","Moscow"],["Moscow Oblast","Moscow Province"],["Murmansk Oblast","Murmansk"],["Nizhny Novgorod Oblast","Nizhny Novgorod"],["Novgorod Oblast","Novgorod"],["Novosibirsk Oblast","Novosibirsk"],["Omsk Oblast","Omsk"],["Orenburg Oblast","Orenburg"],["Oryol Oblast","Oryol"],["Penza Oblast","Penza"],["Perm Krai","Perm Krai"],["Primorsky Krai","Primorsky Krai"],["Pskov Oblast","Pskov"],["Republic of Adygeya","Adygea"],["Republic of Bashkortostan","Bashkortostan"],["Republic of Buryatia","Buryat"],["Republic of Dagestan","Dagestan"],["Republic of Ingushetia","Ingushetia"],["Republic of Kalmykia","Kalmykia"],["Republic of Karelia","Karelia"],["Republic of Khakassia","Khakassia"],["Republic of Mordovia","Mordovia"],["Republic of North OssetiaâAlania","North Ossetia-Alania"],["Republic of Tatarstan","Tatarstan"],["Rostov Oblast","Rostov"],["Ryazan Oblast","Ryazan"],["Saint Petersburg","Saint Petersburg"],["Sakha Republic (Yakutia)","Sakha"],["Sakhalin Oblast","Sakhalin"],["Samara Oblast","Samara"],["Saratov Oblast","Saratov"],["Smolensk Oblast","Smolensk"],["Stavropol Krai","Stavropol Krai"],["Sverdlovsk Oblast","Sverdlovsk"],["Tambov Oblast","Tambov"],["Tomsk Oblast","Tomsk"],["Tula Oblast","Tula"],["Tver Oblast","Tver"],["Tyumen Oblast","Tyumen"],["Tyva Republic","Tuva"],["Udmurtia","Udmurt"],["Ulyanovsk Oblast","Ulyanovsk"],["Vladimir Oblast","Vladimir"],["Volgograd Oblast","Volgograd"],["Vologda Oblast","Vologda"],["Voronezh Oblast","Voronezh"],["Yamalo-Nenets Autonomous Okrug","Yamalo-Nenets Okrug"],["Yaroslavl Oblast","Yaroslavl"],["Zabaykalsky Krai","Zabaykalsky Krai"]]">Russia</option> 2057<option value="Rwanda" data-provinces="[]">Rwanda</option> 2058<option value="Samoa" data-provinces="[]">Samoa</option> 2059<option value="San Marino" data-provinces="[]">San Marino</option> 2060<option value="Sao Tome And Principe" data-provinces="[]">São Tomé & PrÃncipe</option> 2061<option value="Saudi Arabia" data-provinces="[]">Saudi Arabia</option> 2062<option value="Senegal" data-provinces="[]">Senegal</option> 2063<option value="Serbia" data-provinces="[]">Serbia</option> 2064<option value="Seychelles" data-provinces="[]">Seychelles</option> 2065<option value="Sierra Leone" data-provinces="[]">Sierra Leone</option> 2066<option value="Singapore" data-provinces="[]">Singapore</option> 2067<option value="Sint Maarten" data-provinces="[]">Sint Maarten</option> 2068<option value="Slovakia" data-provinces="[]">Slovakia</option> 2069<option value="Slovenia" data-provinces="[]">Slovenia</option> 2070<option value="Solomon Islands" data-provinces="[]">Solomon Islands</option> 2071<option value="Somalia" data-provinces="[]">Somalia</option> 2072<option value="South Africa" data-provinces="[["Eastern Cape","Eastern Cape"],["Free State","Free State"],["Gauteng","Gauteng"],["KwaZulu-Natal","KwaZulu-Natal"],["Limpopo","Limpopo"],["Mpumalanga","Mpumalanga"],["North West","North West"],["Northern Cape","Northern Cape"],["Western Cape","Western Cape"]]">South Africa</option> 2073<option value="South Georgia And The South Sandwich Islands" data-provinces="[]">South Georgia & South Sandwich Islands</option> 2074<option value="South Korea" data-provinces="[["Busan","Busan"],["Chungbuk","North Chungcheong"],["Chungnam","South Chungcheong"],["Daegu","Daegu"],["Daejeon","Daejeon"],["Gangwon","Gangwon"],["Gwangju","Gwangju City"],["Gyeongbuk","North Gyeongsang"],["Gyeonggi","Gyeonggi"],["Gyeongnam","South Gyeongsang"],["Incheon","Incheon"],["Jeju","Jeju"],["Jeonbuk","North Jeolla"],["Jeonnam","South Jeolla"],["Sejong","Sejong"],["Seoul","Seoul"],["Ulsan","Ulsan"]]">South Korea</option> 2075<option value="South Sudan" data-provinces="[]">South Sudan</option> 2076<option value="Spain" data-provinces="[["A Coruña","A Coruña"],["Albacete","Albacete"],["Alicante","Alicante"],["AlmerÃa","AlmerÃa"],["Asturias","Asturias Province"],["Badajoz","Badajoz"],["Balears","Balears Province"],["Barcelona","Barcelona"],["Burgos","Burgos"],["Cantabria","Cantabria Province"],["Castellón","Castellón"],["Ceuta","Ceuta"],["Ciudad Real","Ciudad Real"],["Cuenca","Cuenca"],["Cáceres","Cáceres"],["Cádiz","Cádiz"],["Córdoba","Córdoba"],["Girona","Girona"],["Granada","Granada"],["Guadalajara","Guadalajara"],["
2076Guipúzcoa","Gipuzkoa"],["Huelva","Huelva"],["Huesca","Huesca"],["Jaén","Jaén"],["La Rioja","La Rioja Province"],["Las Palmas","Las Palmas"],["León","León"],["Lleida","Lleida"],["Lugo","Lugo"],["Madrid","Madrid Province"],["Melilla","Melilla"],["Murcia","Murcia"],["Málaga","Málaga"],["Navarra","Navarra"],["Ourense","Ourense"],["Palencia","Palencia"],["Pontevedra","Pontevedra"],["Salamanca","Salamanca"],["Santa Cruz de Tenerife","Santa Cruz de Tenerife"],["Segovia","Segovia"],["Sevilla","Seville"],["Soria","Soria"],["Tarragona","Tarragona"],["Teruel","Teruel"],["Toledo","Toledo"],["Valencia","Valencia"],["Valladolid","Valladolid"],["Vizcaya","Biscay"],["Zamora","Zamora"],["Zaragoza","Zaragoza"],["Ãlava","Ãlava"],["Ãvila","Ãvila"]]">Spain</option> 2077<option value="Sri Lanka" data-provinces="[]">Sri Lanka</option> 2078<option value="Saint Barthélemy" data-provinces="[]">St. Barthélemy</option> 2079<option value="Saint Helena" data-provinces="[]">St. Helena</option> 2080<option value="Saint Kitts And Nevis" data-provinces="[]">St. Kitts & Nevis</option> 2081<option value="Saint Lucia" data-provinces="[]">St. Lucia</option> 2082<option value="Saint Martin" data-provinces="[]">St. Martin</option> 2083<option value="Saint Pierre And Miquelon" data-provinces="[]">St. Pierre & Miquelon</option> 2084<option value="St. Vincent" data-provinces="[]">St. Vincent & Grenadines</option> 2085<option value="Sudan" data-provinces="[]">Sudan</option> 2086<option value="Suriname" data-provinces="[]">Suriname</option> 2087<option value="Svalbard And Jan Mayen" data-provinces="[]">Svalbard & Jan Mayen</option> 2088<option value="Sweden" data-provinces="[]">Sweden</option> 2089<option value="Switzerland" data-provinces="[]">Switzerland</option> 2090<option value="Taiwan" data-provinces="[]">Taiwan</option> 2091<option value="Tajikistan" data-provinces="[]">Tajikistan</option> 2092<option value="Tanzania, United Republic Of" data-provinces="[]">Tanzania</option> 2093<option value="Thailand" data-provinces="[["Amnat Charoen","Amnat Charoen"],["Ang Thong","Ang Thong"],["Bangkok","Bangkok"],["Bueng Kan","Bueng Kan"],["Buriram","Buri Ram"],["Chachoengsao","Chachoengsao"],["Chai Nat","Chai Nat"],["Chaiyaphum","Chaiyaphum"],["Chanthaburi","Chanthaburi"],["Chiang Mai","Chiang Mai"],["Chiang Rai","Chiang Rai"],["Chon Buri","Chon Buri"],["Chumphon","Chumphon"],["Kalasin","Kalasin"],["Kamphaeng Phet","Kamphaeng Phet"],["Kanchanaburi","Kanchanaburi"],["Khon Kaen","Khon Kaen"],["Krabi","Krabi"],["Lampang","Lampang"],["Lamphun","Lamphun"],["Loei","Loei"],["Lopburi","Lopburi"],["Mae Hong Son","Mae Hong Son"],["Maha Sarakham","Maha Sarakham"],["Mukdahan","Mukdahan"],["Nakhon Nayok","Nakhon Nayok"],["Nakhon Pathom","Nakhon Pathom"],["Nakhon Phanom","Nakhon Phanom"],["Nakhon Ratchasima","Nakhon Ratchasima"],["Nakhon Sawan","Nakhon Sawan"],["Nakhon Si Thammarat","Nakhon Si Thammarat"],["Nan","Nan"],["Narathiwat","Narathiwat"],["Nong Bua Lam Phu","Nong Bua Lam Phu"],["Nong Khai","Nong Khai"],["Nonthaburi","Nonthaburi"],["Pathum Thani","Pathum Thani"],["Pattani","Pattani"],["Pattaya","Pattaya"],["Phangnga","Phang Nga"],["Phatthalung","Phatthalung"],["Phayao","Phayao"],["Phetchabun","Phetchabun"],["Phetchaburi","Phetchaburi"],["Phichit","Phichit"],["Phitsanulok","Phitsanulok"],["
2093Phra Nakhon Si Ayutthaya","Phra Nakhon Si Ayutthaya"],["Phrae","Phrae"],["Phuket","Phuket"],["Prachin Buri","Prachin Buri"],["Prachuap Khiri Khan","Prachuap Khiri Khan"],["Ranong","Ranong"],["Ratchaburi","Ratchaburi"],["Rayong","Rayong"],["Roi Et","Roi Et"],["Sa Kaeo","Sa Kaeo"],["Sakon Nakhon","Sakon Nakhon"],["Samut Prakan","Samut Prakan"],["Samut Sakhon","Samut Sakhon"],["Samut Songkhram","Samut Songkhram"],["Saraburi","Saraburi"],["Satun","Satun"],["Sing Buri","Sing Buri"],["Sisaket","Si Sa Ket"],["Songkhla","Songkhla"],["Sukhothai","Sukhothai"],["Suphan Buri","Suphanburi"],["Surat Thani","Surat Thani"],["Surin","Surin"],["Tak","Tak"],["Trang","Trang"],["Trat","Trat"],["Ubon Ratchathani","Ubon Ratchathani"],["Udon Thani","Udon Thani"],["Uthai Thani","Uthai Thani"],["Uttaradit","Uttaradit"],["Yala","Yala"],["Yasothon","Yasothon"]]">Thailand</option> 2094<option value="Timor Leste" data-provinces="[]">Timor-Leste</option> 2095<option value="Togo" data-provinces="[]">Togo</option> 2096<option value="Tokelau" data-provinces="[]">Tokelau</option> 2097<option value="Tonga" data-provinces="[]">Tonga</option> 2098<option value="Trinidad and Tobago" data-provinces="[]">Trinidad & Tobago</option> 2099<option value="Tristan da Cunha" data-provinces="[]">Tristan da Cunha</option> 2100<option value="Tunisia" data-provinces="[]">Tunisia</option> 2101<option value="Turkey" data-provinces="[]">Türkiye</option> 2102<option value="Turkmenistan" data-provinces="[]">Turkmenistan</option> 2103<option value="Turks and Caicos Islands" data-provinces="[]">Turks & Caicos Islands</option> 2104<option value="Tuvalu" data-provinces="[]">Tuvalu</option> 2105<option value="United States Minor Outlying Islands" data-provinces="[]">U.S. Outlying Islands</option> 2106<option value="Uganda" data-provinces="[]">Uganda</option> 2107<option value="Ukraine" data-provinces="[]">Ukraine</option> 2108<option value="United Arab Emirates" data-provinces="[["Abu Dhabi","Abu Dhabi"],["Ajman","Ajman"],["Dubai","Dubai"],["Fujairah","Fujairah"],["Ras al-Khaimah","Ras al-Khaimah"],["Sharjah","Sharjah"],["Umm al-Quwain","Umm al-Quwain"]]">United Arab Emirates</option> 2109<option value="United Kingdom" data-provinces="[["British Forces","British Forces"],["England","England"],["Northern Ireland","Northern Ireland"],["Scotland","Scotland"],["Wales","Wales"]]">United Kingdom</option> 2110<option value="United States" data-provinces="[["Alabama","Alabama"],["Alaska","Alaska"],["American Samoa","American Samoa"],["Arizona","Arizona"],["Arkansas","Arkansas"],["Armed Forces Americas","Armed Forces Americas"],["Armed Forces Europe","Armed Forces Europe"],["Armed Forces Pacific","Armed Forces Pacific"],["California","California"],["Colorado","Colorado"],["Connecticut","Connecticut"],["Delaware","Delaware"],["District of Columbia","Washington DC"],["Federated States of Micronesia","Micronesia"],["Florida","Florida"],["Georgia","Georgia"],["Guam","Guam"],["Hawaii","Hawaii"],["Idaho","Idaho"],["Illinois","Illinois"],["Indiana","Indiana"],["Iowa","Iowa"],["Kansas","Kansas"],["Kentucky","Kentucky"],["Louisiana","Louisiana"],["Maine","Maine"],["Marshall Islands","Marshall Islands"],["Maryland","Maryland"],["Massachusetts","Massachusetts"],["Michigan","Michigan"],["Minnesota","Minnesota"],["Mississippi","Mississippi"],["Missouri","Missouri"],["Montana","Montana"],["Nebraska","Nebraska"],["Nevada","Nevada"],["New Hampshire","New Hampshire"],["New Jersey","New Jersey"],["New Mexico","New Mexico"],["New York","New York"],["North Carolina","North Carolina"],["North Dakota","North Dakota"],["Northern Mariana Islands","Northern Mariana Islands"],["Ohio","Ohio"],["Oklahoma","Oklahoma"],["Oregon","Oregon"],["Palau","Palau"],["Pennsylvania","Pennsylvania"],["Puerto Rico","Puerto Rico"],["Rhode Island","Rhode Island"],["South Carolina","South Carolina"],["South Dakota","South Dakota"],["Tennessee","Tennessee"],["Texas","Texas"],["Utah","Utah"],["Vermont","Vermont"],["Virgin Islands","U.S. Virgin Islands"],["Virginia","Virginia"],["Washington","Washington"],["West Virginia","West Virginia"],["Wisconsin","Wisconsin"],["Wyoming","Wyoming"]]">United States</option> 2111<option value="Uruguay" data-provinces="[["Artigas","Artigas"],["Canelones","Canelones"],["Cerro Largo","Cerro Largo"],["Colonia","Colonia"],["Durazno","Durazno"],["Flores","Flores"],["Florida","Florida"],["Lavalleja","Lavalleja"],["Maldonado","Maldonado"],["Montevideo","Montevideo"],["Paysandú","Paysandú"],["Rivera","Rivera"],["Rocha","Rocha"],["RÃo Negro","RÃo Negro"],["Salto","Salto"],["San José","San José"],["Soriano","Soriano"],["Tacuarembó","Tacuarembó"],["Treinta y Tres","Treinta y Tres"]]">Uruguay</option> 2112<option value="Uzbekistan" data-provinces="[]">Uzbekistan</option> 2113<option value="Vanuatu" data-provinces="[]">Vanuatu</option> 2114<option value="Holy See (Vatican City State)" data-provinces="[]">Vatican City</option> 2115<option value="Venezuela" data-provinces="[["Amazonas","Amazonas"],["Anzoátegui","Anzoátegui"],["Apure","Apure"],["Aragua","Aragua"],["Barinas","Barinas"],["BolÃvar","BolÃvar"],["Carabobo","Carabobo"],["Cojedes","Cojedes"],["Delta Amacuro","Delta Amacuro"],["Dependencias Federales","Federal Dependencies"],["Distrito Capital","Capital"],["Falcón","Falcón"],["Guárico","Guárico"],["La Guaira","Vargas"],["Lara","Lara"],["Miranda","Miranda"],["Monagas","Monagas"],["Mérida","Mérida"],["Nueva Esparta","Nueva Esparta"],["Portuguesa","Portuguesa"],["Sucre","Sucre"],["Trujillo","Trujillo"],["Táchira","Táchira"],["Yaracuy","Yaracuy"],["Zulia","Zulia"]]">Venezuela</option> 2116<option value="Vietnam" data-provinces="[]">Vietnam</option> 2117<option value="Wallis And Futuna" data-provinces="[]">Wallis & Futuna</option> 2118<option value="Western Sahara" data-provinces="[]">Western Sahara</option> 2119<option value="Yemen" data-provinces="[]">Yemen</option> 2120<option value="Zambia" data-provinces="[]">Zambia</option> 2121<option value="Zimbabwe" data-provinces="[]">Zimbabwe</option>`; 2122</script>
2122 2123<!-- END app snippet --> 2124<!-- BEGIN app snippet: initialize-forms --> 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179
2180<script async> 2181 (() => { 2182 const FORM_DATA_TIMEOUT = 10000; 2183 2184 const devToolsEnabled = false; 2185 const latestEmbedVersion = "5.3.0"; 2186 const isPreviewApp = ""; 2187 2188 const nativeFormContainsErrors = false; 2189 const $preInitStyles = document.querySelector('#cf-pre-init-styles'); 2190 2191 let mountedTextEntrypoints = false; 2192 2193 // i.e. ?view=orig, or "email taken" following a form crash 2194 if (onFallbackTemplate() || nativeFormContainsErrors) { 2195 // Reveal the original form 2196 $preInitStyles.parentElement.removeChild($preInitStyles); 2197 return; 2198 } 2199 2200 function start() { 2201 initializeForms(); 2202 injectHiddenForms(); 2203 2204 // Try for the next 5s to mount any dynamically injected forms. 2205 const intervalId = setInterval(() => { 2206 initializeForms(); 2207 }, 100); 2208 2209 setTimeout(() => { 2210 clearInterval(intervalId); 2211 }, 5000); 2212 } 2213 2214 // This fires when a CF form has mounted on the page. 2215 // More reliable than putting this in start(), since developers can manually call 2216 // CF.initializeForms(). 2217 window.addEventListener('cf:ready', () => { 2218 injectHiddenForms(); 2219 }); 2220 2221 if (['interactive', 'complete', 'loaded'].includes(document.readyState)) { 2222 start(); 2223 } else { 2224 document.addEventListener('DOMContentLoaded', () => start()); 2225 } 2226 2227 window.CF.initializeForms = initializeForms; 2228 const forms = [{"id":"dGtW0L","name":"Update Profile","version":"4.15.5","updated_at":1703085538}]; 2229 2230 async function initializeForms() { 2231 // Semi-hack: Prevents older embed scripts from doing anything. 2232 // Any embed script before 4.12.0 checks only for the presence of this attribute, 2233 // not if it strictly equals "true". 2234 document.documentElement.setAttribute('data-cf-initialized', 'loading'); 2235 2236 // Only mount text entrypoints once. This is expensive and causes render blocking time on mobile. 2237 if (!mountedTextEntrypoints) { 2238 mountedTextEntrypoints = true; 2239 mountTextEntrypoints(); 2240 } 2241 2242 const reactTarget = `<!-- BEGIN app snippet: react-target-markup --> 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282<div class="cf-react-target"> 2283 <div class="cf-preload"> 2284 2285 <div class="cf-preload-label cf-preload-item"></div> 2286 <div class="cf-preload-field cf-preload-item"></div> 2287 2288 <div class="cf-preload-label cf-preload-item"></div> 2289 <div class="cf-preload-field cf-preload-item"></div> 2290 2291 <div class="cf-preload-label cf-preload-item"></div> 2292 <div class="cf-preload-field cf-preload-item"></div> 2293 2294 <div class="cf-preload-label cf-preload-item"></div> 2295 <div class="cf-preload-field cf-preload-item"></div> 2296 2297 2298 <span class="cf-preload-button cf-preload-item"></span> 2299 2300 <span class="cf-preload-button cf-preload-item"></span> 2301 2302 </div> 2303</div><!-- END app snippet -->`; 2304 const $forms = Array.from(document.querySelectorAll('form:not([data-cf-state])')); 2305 const entrypoints = []; 2306 2307 for (let $form of $forms) { 2308 if (isIgnored($form)) continue; 2309 2310 const id = getFormId($form); 2311 if (!id) continue; 2312 2313 const formData = forms.find(form => form.id === id); 2314 if (!formData) { 2315 console.error(`[Customer Fields] Unable to find form data with id ${id}`); 2316 setFormState($form, 'failed'); 2317 continue; 2318 } 2319 2320 // Do not try to mount the same form element more than once, 2321 // otherwise failures are much harder to handle. 2322 if (isDetected($form)) continue; 2323 markAsDetected($form); 2324 2325 const $originalForm = $form.cloneNode(true); 2326 2327 // Shopify's captcha script can bind to the form that CF mounted to. 2328 // Their submit handler eventually calls the submit method after generating 2329 // the captcha response token, causing native submission behavior to occur. 2330 // We do not want this, so we override it to a no-op. See #2092 2331 $form.submit = () => {}; 2332 2333 injectReactTarget($form); 2334 setFormState($form, 'loading'); 2335 2336 const entrypoint = { 2337 $form, 2338 registration: isRegistrationForm($form), 2339 formId: formData.id, 2340 updatedAt: formData.updated_at, 2341 target: formData.target, 2342 originalForm: $originalForm, 2343 version: formData.version, 2344 restore: () => restoreEntrypoint(entrypoint), 2345 }; 2346 2347 entrypoints.push(entrypoint); 2348 2349 // Required to be backwards compatible with older versions of the JS Form API, and prevent Shopify captcha 2350 $form.setAttribute('data-cf-form', formData.id); 2351 $form.setAttribute('action', ''); 2352 } 2353 2354 if ($preInitStyles && $preInitStyles.parentElement) { 2355 $preInitStyles.parentElement.removeChild($preInitStyles); 2356 } 2357 2358 if (!entrypoints.length) return; 2359 2360 2361 initializeEmbedScript(); 2362 2363 function initializeEmbedScript() { 2364 if (!window.CF.requestedEmbedJS) { 2365 const $script = document.createElement('script'); 2366 $script.src = getAssetUrl('customer-fields.js'); 2367 2368 document.head.appendChild($script); 2369 window.CF.requestedEmbedJS = true; 2370 } 2371 2372 if (!window.CF.requestedEmbedCSS) { 2373 const $link = document.createElement('link'); 2374 $link.href = getAssetUrl('customer-fields.css'); 2375 $link.rel = 'stylesheet'; 2376 $link.type = 'text/css'; 2377 2378 document.head.appendChild($link); 2379 window.CF.requestedEmbedCSS = true; 2380 } 2381 } 2382 2383 2384 const uniqueEntrypoints = entrypoints.reduce((acc, entrypoint) => { 2385 if (acc.some(e => e.formId === entrypoint.formId)) return acc; 2386 acc.push(entrypoint); 2387 2388 return acc; 2389 }, []); 2390 2391 const fullForms = await Promise.all(uniqueEntrypoints.map(e => getFormData(e.formId, e.updatedAt))); 2392
2393 fullForms.forEach((fullForm, index) => { 2394 // Could be a failed request. 2395 if (!fullForm) return; 2396 2397 const invalidFormTargets = ['customer-account']; 2398 if (invalidFormTargets.includes(fullForm.form.target)) { 2399 console.error('[Customer Fields] Invalid form target', fullForm); 2400 return; 2401 } 2402 2403 entrypoints 2404 .filter(e => e.formId === fullForm.form.id) 2405 .forEach(entrypoint => { 2406 entrypoint.form = { 2407 ...fullForm.form, 2408 currentRevision: fullForm.revision, 2409 }; 2410 }) 2411 }); 2412 2413 entrypoints.forEach(e => { 2414 if (!e.form) { 2415 // Form can be null if the request failed one way or another. 2416 restoreEntrypoint(e); 2417 return; 2418 } 2419 }); 2420 2421 if (window.CF.entrypoints) { 2422 window.CF.entrypoints.push(...entrypoints); 2423 2424 if (window.CF.mountForm) { 2425 entrypoints.forEach(entrypoint => { 2426 if (!entrypoint.form) return; 2427 2428 window.CF.mountForm(entrypoint.form); 2429 }); 2430 } 2431 } else { 2432 window.CF.entrypoints = entrypoints; 2433 2434 // The Core class has some logic that gets invoked as a result of this event 2435 // that we only want to fire once, so let's not emit this event multiple times. 2436 document.dispatchEvent(new CustomEvent('cf:entrypoints_ready')); 2437 } 2438 2439 function getFormData(formId, updatedAt) { 2440 return new Promise(resolve => { 2441 const controller = new AbortController(); 2442 const timeoutId = setTimeout(() => controller.abort(), FORM_DATA_TIMEOUT); 2443 const maxAttempts = 3; 2444 let attempts = 0; 2445 2446 const attemptFetch = () => { 2447 if (controller.signal.aborted) { 2448 resolve(null); 2449 return; 2450 } 2451 2452 attempts++; 2453 2454 fetch(`https://app.customerfields.com/embed_api/v4/forms/${formId}.json?v=${updatedAt}`, { 2455 headers: { 2456 'X-Shopify-Shop-Domain': "drinktrade.myshopify.com" 2457 }, 2458 signal: controller.signal 2459 }).then(response => { 2460 if (controller.signal.aborted) { 2461 resolve(null); 2462 return; 2463 } 2464 2465 if (response.ok) { 2466 response.json().then(resolve); 2467 return; 2468 } 2469 2470 if (attempts < maxAttempts) { 2471 pause(2000).then(() => attemptFetch()); 2472 return; 2473 } 2474 2475 console.error(`[Customer Fields] Received non-OK response from the back-end when fetching form ${formId}`) 2476 resolve(null); 2477 }).catch((err) => { 2478 if (controller.signal.aborted) { 2479 resolve(null); 2480 return; 2481 } 2482 2483 if (attempts < maxAttempts) { 2484 pause(2000).then(() => attemptFetch()); 2485 return; 2486 } 2487 2488 console.error(`[Customer Fields] Encountered unknown error while fetching form ${formId}`, err); 2489 resolve(null); 2490 }); 2491 }; 2492 2493 attemptFetch(); 2494 }); 2495 } 2496 2497 function restoreEntrypoint(entrypoint) { 2498 // This has a side effect of removing the Form class' submit handlers. 2499 // Previously this only replaced the original children within the form, but the submit event 2500 // was still being handled by our script. 2501 entrypoint.$form.replaceWith(entrypoint.originalForm); 2502 2503 // After a form has been restored, make sure we don't touch it again. 2504 // Otherwise we might treat it as an "async mounted" entrypoint and try to mount it again 2505 entrypoint.originalForm.setAttribute('data-cf-ignore', 'true'); 2506 2507 // Opacity was set to 0 with the #cf-pre-init-styles element 2508 entrypoint.$form.style.opacity = 1; 2509 2510 console.error(`[Customer Fields] Encountered an issue while mounting form, reverting to original form contents.`, entrypoint); 2511 } 2512 2513 function getAssetUrl(filename) { 2514 // We changed this to always get the latest embed assets 2515 // 4.15.7 included a crucial hotfix for recaptcha, see #2028 2516 2517 return `https://static.customerfields.com/releases/${isPreviewApp ? '' : `${latestEmbedVersion}/`}${filename}`; 2518 } 2519 2520 function injectReactTarget($form) { 2521 const containsReactTarget = !!$form.querySelector('.cf-react-target'); 2522 if (containsReactTarget) return; 2523 2524 $form.innerHTML = reactTarget; 2525 } 2526 2527 function isIgnored($form) { 2528 return $form.getAttribute('data-cf-ignore') === 'true'; 2529 } 2530 2531 function isDetected($form) { 2532 return $form.__cfDetected === true; 2533 } 2534 2535 function markAsDetected($form) { 2536 $form.__cfDetected = true; 2537 } 2538 2539 function isEditAccountForm($form) { 2540 return $form.getAttribute('data-cf-edit-account') === 'true'; 2541 } 2542 2543 function isVintageRegistrationForm($form) { 2544 return ( 2545 window.location.pathname.includes('/account/register') 2546 && $form.id === 'create_customer' 2547 && !!$form.getAttribute('data-cf-form') 2548 ); 2549 } 2550 2551 function isRegistrationForm($form) { 2552 try { 2553 const isWithinAppBlock = !!$form.closest('.cf-form-block'); 2554 if (isWithinAppBlock) return false;
2555 2556 const action = $form.getAttribute('action'); 2557 if (!action) return false; 2558 2559 const formActionUrl = new URL(action, window.location.origin); 2560 const hasAccountPath = formActionUrl.pathname.endsWith('/account'); 2561 const matchesShopDomain = formActionUrl.host === window.location.host; 2562 2563 const hasPostMethod = $form.method.toLowerCase() === 'post'; 2564 const $formTypeInput = $form.querySelector('[name="form_type"]') 2565 2566 const hasCreateCustomerFormType = $formTypeInput && $formTypeInput.value === 'create_customer'; 2567 return (matchesShopDomain && hasAccountPath && hasPostMethod) || hasCreateCustomerFormType 2568 } catch (err) { 2569 return false; 2570 } 2571 } 2572 2573 function mountTextEntrypoints() { 2574 const tree = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, (node) => { 2575 if (typeof node.data !== 'string' || !node.data) return NodeFilter.FILTER_REJECT; 2576 2577 return node.data.includes('data-cf-form="') ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; 2578 }); 2579 2580 /** 2581 * Walks through every text node on the document that contains 'data-cf-form="' and attempts to 2582 * splice a form element in place of every shortcode. 2583 * 2584 * @type Node[] 2585 */ 2586 while (tree.nextNode()) { 2587 let node = tree.currentNode; 2588 const parser = new DOMParser(); 2589 2590 while (entrypointContent = node.data.match(/<form.*data-cf-form="[a-zA-Z0-9]+".*>.*<\/form>/)) { 2591 const [match] = entrypointContent; 2592 2593 const doc = parser.parseFromString(match, 'text/html'); 2594 const $form = doc.body.firstElementChild; 2595 2596 // Substring is better than split here in case the text node contains multiple forms. 2597 const beforeText = node.data.substring(0, node.data.indexOf(match)); 2598 const afterText = node.data.substring(node.data.indexOf(match) + match.length); 2599 2600 node.replaceWith($form); 2601 node.data = node.data.replace(match, ''); 2602 2603 if (beforeText) $form.insertAdjacentText('beforebegin', beforeText); 2604 if (afterText) { 2605 $form.insertAdjacentText('afterend', afterText); 2606 2607 // Continue scanning the rest of the node text in case there are more forms 2608 node = $form.nextSibling; 2609 } 2610 } 2611 } 2612 } 2613 2614 function getFormId($form) { 2615 const currentFormId = $form.getAttribute('data-cf-form'); 2616 2617 let id; 2618 2619 if (isEditAccountForm($form)) { 2620 id = "dGtW0L"; 2621 } else if (isVintageRegistrationForm($form) || isRegistrationForm($form)) { 2622 id = ""; 2623 } 2624 2625 return id || currentFormId; 2626 } 2627 2628 function setFormState($form, state) { 2629 $form.setAttribute('data-cf-state', state); 2630 } 2631 } 2632 2633 function onFallbackTemplate() { 2634 const params = new URLSearchParams(window.location.search); 2635 2636 return location.pathname.includes('/account/register') && params.get('view') === 'orig'; 2637 } 2638 2639 function injectHiddenForms() { 2640 if (!devToolsEnabled && !CF.entrypoints?.length) return; 2641 if (document.querySelector('#cf_hidden_forms')) return; 2642 2643 const container = document.createElement('div'); 2644 2645 container.id = "cf_hidden_forms"; 2646 container.style.display = 'none'; 2647 container.setAttribute('aria-hidden', 'true'); 2648 2649 document.body.appendChild(container); 2650 2651 const loginForm = createLoginForm(); 2652 const recoverForm = createRecoverPasswordForm(); 2653 2654 container.appendChild(loginForm); 2655 container.appendChild(recoverForm); 2656 2657 if (window.Shopify.captcha) { 2658 // Only applicable for grecaptcha shops, but also safe for hcaptcha 2659 triggerShopifyRecaptchaLoad(container); 2660 2661 window.Shopify.captcha.protect(loginForm); 2662 window.Shopify.captcha.protect(recoverForm); 2663 } 2664 } 2665 2666 function triggerShopifyRecaptchaLoad(container) { 2667 if (document.getElementById('cf-hidden-recaptcha-trigger__create_customer')) return; 2668 if (document.getElementById('cf-hidden-recaptcha-trigger__contact')) return; 2669 2670 // Triggering a focus event on a form causes Shopify to load their recaptcha script. 2671 // This allows our Customer class to handle the copying/injecting of `grecaptcha` so we can 2672 // handle multiple `grecaptcha` instances. See methods `injectRecaptchaScript` 2673 // and `captureShopifyGrecaptcha` in `Customer.ts`. 2674 // Note: We have to try both types, in case the merchant has only one of the two recaptcha 2675 // options checked 2676 const $customerRecaptchaForm = createDummyRecaptchaForm('/account', 'create_customer'); 2677 container.appendChild($customerRecaptchaForm); 2678 2679 const $contactRecaptchaForm = createDummyRecaptchaForm('/contact', 'contact'); 2680 container.appendChild($contactRecaptchaForm); 2681 2682 triggerFocusEvent($customerRecaptchaForm); 2683 triggerFocusEvent($contactRecaptchaForm); 2684 } 2685 2686 function createDummyRecaptchaForm(action, type) { 2687 const dummyRecaptchaForm = document.createElement('form'); 2688 2689 dummyRecaptchaForm.action = action; 2690 dummyRecaptchaForm.method = "post"; 2691 dummyRecaptchaForm.id = `cf-hidden-recaptcha-trigger__${type}`; 2692 dummyRecaptchaForm.setAttribute('data-cf-ignore', 'true'); 2693 dummyRecaptchaForm.setAttribute('aria-hidden', 'true'); 2694 dummyRecaptchaForm.style.display = 'none'; 2695 2696 const formTypeInput = document.createElement('input'); 2697 2698 formTypeInput.name = "form_type"
2699 formTypeInput.setAttribute('value', type); 2700 2701 dummyRecaptchaForm.appendChild(formTypeInput); 2702 2703 return dummyRecaptchaForm; 2704 } 2705 2706 function triggerFocusEvent(element) { 2707 const event = new Event('focusin', { bubbles: true, cancelable: false }); 2708 element.dispatchEvent(event); 2709 } 2710 2711 function createLoginForm() { 2712 const form = createDummyRecaptchaForm('/account/login', 'customer_login'); 2713 const email = document.createElement('input'); 2714 email.name = 'customer[email]'; 2715 2716 const password = document.createElement('input'); 2717 password.name = 'customer[password]'; 2718 2719 const redirect = document.createElement('input'); 2720 redirect.name = 'return_to'; 2721 2722 form.appendChild(email); 2723 form.appendChild(password); 2724 form.appendChild(redirect); 2725 form.setAttribute('aria-hidden', 'true'); 2726 2727 return form; 2728 } 2729 2730 function createRecoverPasswordForm() { 2731 const parser = new DOMParser(); 2732 const result = parser.parseFromString(`<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="â" /><input name="email" value="" /><input name="return_to" value="" /></form>`, 'text/html'); 2733 const form = result.querySelector('form'); 2734 2735 form.setAttribute('aria-hidden', 'true'); 2736 form.id = "cf_recover_password_form"; 2737 2738 return form; 2739 } 2740 2741 function pause(ms) { 2742 return new Promise(resolve => setTimeout(resolve, ms)); 2743 } 2744 })(); 2745</script>
2745 2746 2747<!-- END app snippet --> 2748<!-- BEGIN app snippet: theme-data --> 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787
2788<script> 2789 document.addEventListener('DOMContentLoaded', async () => { 2790 let theme; 2791 2792 if (window.Shopify) { 2793 theme = { 2794 name: window.Shopify.theme.schema_name, 2795 version: window.Shopify.theme.schema_version, 2796 } 2797 } 2798 2799 if (theme) { 2800 document.documentElement.setAttribute('data-theme-name', theme.name); 2801 document.documentElement.setAttribute('data-theme-version', theme.version); 2802 } 2803 }); 2804</script>
2804<!-- END app snippet --> 2805<!-- BEGIN app snippet: form-preload-style --> 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845<style> 2846.cf-preload { 2847 margin-top: 50px; 2848 opacity: 0.5; 2849 text-align: left; 2850} 2851 2852.cf-preload-item { 2853 position: relative; 2854 overflow: hidden; 2855 background: #e2e2e2; 2856 border-radius: 4px; 2857 display: block !important; 2858} 2859 2860.cf-preload-item:before { 2861 content: ''; 2862 position: absolute; 2863 top: 0; 2864 left: 0; 2865 height: 100%; 2866 width: 100%; 2867 background: linear-gradient(to right, rgba(255,255,255,0), rgba(255,255,255,0.5), rgba(255,255,255,0.5), rgba(255,255,255,0)); 2868 animation: cf-preload 1s cubic-bezier(0.33, 0.8, 0.85, 0.77) infinite; 2869 z-index: 1; 2870} 2871 2872.cf-preload-label { 2873 display: inline-block !important; 2874 width: 50%; 2875 height: 20px; 2876 background: #eee; 2877 margin-bottom: 5px; 2878} 2879 2880.cf-preload-field { 2881 margin-bottom: 25px; 2882 height: 40px; 2883} 2884 2885.cf-preload-button { 2886 display: inline-block !important; 2887 width: 120px; 2888 margin-right: 15px; 2889 height: 40px; 2890} 2891 2892.cf-form-inner { 2893 animation: cf-fadein 500ms cubic-bezier(0.11, 0.33, 0.24, 1); 2894} 2895 2896@keyframes cf-preload { 2897 from { 2898 transform: translateX(-100%); 2899 opacity: 0; 2900 } 2901 to { 2902 transform: translateX(100%); 2903 opacity: 1; 2904 } 2905} 2906 2907@keyframes cf-fadein { 2908 from { 2909 opacity: 0; 2910 transform: translateY(30px); 2911 } 2912 to { 2913 opacity: 1; 2914 transform: translateY(0); 2915 } 2916} 2917</style><!-- END app snippet --> 2918<!-- BEGIN app snippet: inject-edit-link --> 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967
2967<script> 2968 document.addEventListener('DOMContentLoaded', () => { 2969 const target = getTargetLink(); 2970 if (!target) return; 2971 const editAccountLink = document.createElement('a'); 2972 2973 editAccountLink.href = `/tools/customr/edit-account`; 2974 editAccountLink.className = `${target.className} cf-edit-account-link`; 2975 editAccountLink.innerText = "Edit account"; 2976 2977 target.insertAdjacentElement('afterend', editAccountLink); 2978 2979 // Works reliably in both vertical and horizontal alignments. 2980 // Vertically, height will be the natural line-height based off the current font-size. 2981 // Horizontally, this will act as five space characters in between the links. 2982 // This is better than a static margin on the editAccountLink, as you don't really know what to apply. 2983 // You don't know what alignment you're in, so you'd have to apply either margin-top or margin-left. 2984 // This works as you don't have to check since it works in either situation. 2985 const spacer = document.createElement('div'); 2986 spacer.className = "cf-edit-account-link-spacer"; 2987 spacer.innerHTML = " "; 2988 2989 target.insertAdjacentElement('afterend', spacer); 2990 2991 removeVintageCFEditLink(); 2992 2993 function getTargetLink() { 2994 const main = document.querySelector('main') || document; 2995 // :not([href*="?page="]) in the querySelector below prevents the "edit account" link from being enjected on the /account/addresses page with pagination. 2996 const addressesLink = main.querySelector('[href*="/account/addresses"]:not([href*="?page="]):not([data-cf-ignore])'); 2997 const logoutLink = main.querySelector('[href*="/account/logout"]:not([data-cf-ignore])'); 2998 2999 return addressesLink || logoutLink; 3000 } 3001 3002 function removeVintageCFEditLink() { 3003 // CustomerHub requires the edit link to be present. 3004 if (window.customerHub) return; 3005 3006 // Remove it instead of changing its href attribute. 3007 // We want merchants to ultimately remove all vintage CF code, in the event they do, 3008 // this edit link will be gone. 3009 const editLink = document.querySelector('a[href*="/account?view=edit"]:not([data-cf-ignore])') 3010 if (!editLink) return; 3011 3012 editLink.parentElement.removeChild(editLink); 3013 } 3014 }); 3015 </script>
3015 3016 3017 <style> 3018 .cf-edit-account-link { 3019 display: block; 3020 } 3021 3022 /* Theme fixes */ 3023 [data-theme-name="Warehouse"] .cf-edit-account-link-spacer { 3024 display: none; 3025 } 3026 </style> 3027 3028<!-- END app snippet --> 3029<!-- BEGIN app snippet: language --> 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068
3069<script> 3070 window.CF.language = window.CF.language || {}; 3071 window.CF.language.editAccountHeading = "Edit account"; 3072 window.CF.language.editAccountBackLinkText = "Back to account"; 3073</script>
3073<!-- END app snippet --> 3074 3075<!-- BEGIN app snippet: developer-tools --> 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117
3118<script> 3119 (function() { 3120 const callbacksHandled = []; 3121 3122 function handleCallback(callback) { 3123 if (callbacksHandled.indexOf(callback) > -1) return; 3124 3125 callback(); 3126 callbacksHandled.push(callback); 3127 }; 3128 3129 function domIsReady() { 3130 return /complete|interactive|loaded/.test(document.readyState); 3131 }; 3132 3133 function customerExistsInWindow() { 3134 const customerPresent = ('customer' in window.CF); 3135 if (!customerPresent) return false; 3136 3137 const hasCaptchaEnabled = document.body.getAttribute('data-cf-captcha-enabled') === 'true'; 3138 if (hasCaptchaEnabled) { 3139 const captchaReady = document.body.getAttribute('data-cf-captcha-ready') === 'true'; 3140 if (!captchaReady) return false; 3141 } 3142 3143 return true; 3144 }; 3145 3146 function embedFormHasMounted() { 3147 return !!document.querySelector('.cf-form-inner'); 3148 }; 3149 3150 function customerReady(callback) { 3151 if (customerExistsInWindow()) { 3152 handleCallback(callback); 3153 } else { 3154 function createListener() { 3155 document.addEventListener("cf:customer_ready", function() { 3156 handleCallback(callback); 3157 }); 3158 }; 3159 3160 if (domIsReady()) { 3161 createListener(); 3162 } else { 3163 document.addEventListener("DOMContentLoaded", function() { 3164 if (customerExistsInWindow()) { 3165 handleCallback(callback); 3166 } else { 3167 createListener(); 3168 } 3169 }); 3170 } 3171 } 3172 } 3173 3174 function formsReady(callback) { 3175 if (embedFormHasMounted()) { 3176 handleCallback(callback); 3177 } else { 3178 function createListener() { 3179 document.addEventListener("cf:ready", function() { 3180 handleCallback(callback); 3181 }); 3182 }; 3183 3184 if (domIsReady()) { 3185 createListener(); 3186 } else { 3187 document.addEventListener("DOMContentLoaded", function() { 3188 if (embedFormHasMounted()) { 3189 handleCallback(callback); 3190 } else { 3191 createListener(); 3192 } 3193 }); 3194 } 3195 } 3196 }; 3197 3198 window.CF.customerReady = customerReady; 3199 window.CF.ready = formsReady; 3200 3201 3202 window.CF.customerReady = () => { 3203 console.warn('[Customer Fields] In order to access CF.customerReady, you need to enable developer tools in the Customer Fields app embed.'); 3204 } 3205 3206 3207 function initializeApiScript() { 3208 if (window.CF.requestedAPI) return; 3209 window.CF.requestedAPI = true; 3210 3211 const $script = document.createElement('script'); 3212 $script.src = getAssetUrl('cf-api.js'); 3213 3214 document.head.appendChild($script); 3215 } 3216 3217 function getAssetUrl(filename) { 3218 return `https://static.customerfields.com/releases/5.3.0/${filename}`; 3219 } 3220 })(); 3221</script>
3221 3222 3223 3224<!-- END app snippet --> 3225 3226<!-- END app block --><!-- BEGIN app block: shopify://apps/yotpo-loyalty-rewards/blocks/loader-app-embed-block/2f9660df-5018-4e02-9868-ee1fb88d6ccd --> 3227
3227<script src="https://cdn-widgetsrepository.yotpo.com/v1/loader/RE8BtND7urgOHdFDaTsGbw" async></script>
3227 3228 3229 3230 3231 3232<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245
3245<script async src="https://static.klaviyo.com/onsite/js/WmYpcv/klaviyo.js?company_id=WmYpcv"></script>
3245 3246
3246<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>
3246 3247 3248 3249 3250 3251 3252 3253
3253<script> 3254 window.klaviyoReviewsProductDesignMode = false 3255 </script>
3255 3256 3257 3258 3259 <!-- BEGIN app snippet: customer-hub-data -->
3259<script> 3260 if (!window.customerHub) { 3261 window.customerHub = {}; 3262 } 3263 window.customerHub.storefrontRoutes = { 3264 login: "https://www.drinktrade.com/customer_authentication/redirect?locale=en®ion_country=US?return_url=%2F%23k-hub", 3265 register: "https://shopify.com/79471280447/account?locale=en&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkcmlua3RyYWRlLm15c2hvcGlmeS5jb20iLCJmbGFncyI6W10sImV4cCI6MTc5MDg3ODc4OCwibmJmIjoxNzkwMjczOTg4fQ.QEQWNp3Q7-k4vtd_RM6aP1SG9v7_bYHuMxjisYwWXsI?return_url=%2F%23k-hub", 3266 logout: "/account/logout", 3267 profile: "/account", 3268 addresses: "/account/addresses", 3269 }; 3270 3271 window.customerHub.userId = null; 3272 3273 window.customerHub.storeDomain = "drinktrade.myshopify.com"; 3274 3275 3276 3277 3278 window.customerHub.storeLocale = { 3279 currentLanguage: 'en', 3280 currentCountry: 'US', 3281 availableLanguages: [ 3282 3283 { 3284 iso_code: 'en', 3285 endonym_name: 'English' 3286 } 3287 3288 ], 3289 availableCountries: [ 3290 3291 { 3292 iso_code: 'US', 3293 name: 'United States', 3294 currency_code: 'USD' 3295 } 3296 3297 ] 3298 }; 3299 3300</script>
3300 3301<!-- END app snippet --> 3302 3303 3304 3305 3306 3307 3308 3309<!-- END app block --><link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
3310<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: 79471280447,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};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 3310
3310
3311<script> 3312 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 3313</script>
vendor: 1 bytes, line 3313
3313
3314<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}
3314).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: 79471280447,storefrontBaseUrl: "https://www.drinktrade.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://www.drinktrade.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["16072cab","8450a54b"],webPixelsConfigList: [{"id":"2420801855","configuration":"{\"config_url\": \"https:\/\/shopify-gtm-suite.getelevar.com\/configs\/8a155db7e33f38378045a1700f06df67a5eeed21\/config.js\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"7ae63d00911d5ee26809bf1e3232d852","type":"APP","apiClientId":2509311,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
3314,"dataSharingState":"unrestricted"},{"id":"2414936383","configuration":"{\"shopId\":\"drinktrade.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":"2079523135","configuration":"{\"accountID\":\"WmYpcv\",\"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":"1116799295","configuration":"{\"advertiser\":\"tradecoffee\",\"userId\":\"afa61374-72b6-4fbd-b267-fb18bf532a20\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c19c52670ee3dad6480bef13cf6d1e03","type":"APP","apiClientId":39871250433,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1044316479","configuration":"{\"accountID\":\"10924\",\"micrositeDomain\":\"partners.drinktrade.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9fae8f5cb0b9c97477ac364bb3772a0c","type":"APP","apiClientId":4862993,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"225083711","configuration":"{\"shop\":\"drinktrade.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":"118489407","configuration":"{\"apiKey\":\"9V8G3W0Z8J\",\"host\":\"searchserverapi1.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"5559ea45e47b67d15b30b79e7c6719da","type":"APP","apiClientId":578825,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"95846719","configuration":"{\"campaignID\":\"9472\",\"externalExecutionURL\":\"https:\/\/engine.saasler.com\/api\/v1\/webhook_executions\/10d9f549551605c49d1ac207b4a34ac4\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7a47b06116c806e4367c27d301f4f458","type":"APP","apiClientId":3546795,"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"},{"id":"121700671","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"20","type":"CUSTOM","privacyPurposes":[],"name":"RevenueRoll"},{"id":"133005631","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"24","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Google Ads"}
3314,{"id":"135233855","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"6","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Google Ads (Dev)"},{"id":"187400511","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Wellput Tracking"},{"id":"210010431","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Elevar - Checkout Tracking"},{"id":"221544767","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Posthog Checkout Analytics"},{"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":"Trade Coffee","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"drinktrade.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/www.drinktrade.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"10539308712255","handle":"discovery-trial-essential","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"54768966205759","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10539310350655","handle":"discovery-trial-signature","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"54769221665087","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9972375879999","handle":"coffee-gift-subscription","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50875695169855","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9920991953215","handle":"mizudashi-cold-brew-coffee-maker-black-1000ml","isCollective":true,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50570934649151","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9917830693183","handle":"oxo-cold-brew-coffee-maker-40oz","isCollective":true,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50550409462079","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9917830758719","handle":"oxo-compact-cold-brew-maker-24oz","isCollective":true,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50550409494847","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9924663968063","handle":"toddy-essential-brewer","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"50602500096319","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://www.drinktrade.com/cdn","c8540278we853e1abpb62b2c4amde256306",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"188794601791","themePublished":"true","eventMetadataId":"d8b26296-d018-4720-9125-9fee3331405a","pageType":"page","resourceId":"135353368895","shopId":"79471280447","storefrontBaseUrl":"https:\/\/www.drinktrade.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"c8540278we853e1abpb62b2c4amde256306","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
3314<script> 3315 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 3316 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 3317 window.ShopifyAnalytics.meta.currency = 'USD'; 3318 var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":135353368895,"requestId":"6e00a202-f8a2-44d8-adbf-6423022562e4-1790273988"}}; 3319 for (var attr in meta) { 3320 window.ShopifyAnalytics.meta[attr] = meta[attr]; 3321 } 3322</script>
vendor: 1 bytes, line 3322
3322
3323<script class="analytics"> 3324 (function () { 3325 var customDocumentWrite = function(content) { 3326 var jquery = null; 3327 3328 if (window.jQuery) { 3329 jquery = window.jQuery; 3330 } else if (window.Checkout && window.Checkout.$) { 3331 jquery = window.Checkout.$; 3332 } 3333 3334 if (jquery) { 3335 jquery('body').append(content); 3336 } 3337 }; 3338 3339 var hasLoggedConversion = function(token) { 3340 if (token) { 3341 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 3342 } 3343 return false; 3344 } 3345 3346 var setCookieIfConversion = function(token) { 3347 if (token) { 3348 var twoMonthsFromNow = new Date(Date.now()); 3349 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 3350 3351 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 3352 } 3353 } 3354 3355 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 3356 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 3357 if (trekkie.integrations) { 3358 return; 3359 } 3360 trekkie.methods = [ 3361 'identify', 3362 'page', 3363 'ready', 3364 'track', 3365 'trackForm', 3366 'trackLink' 3367 ]; 3368 trekkie.factory = function(method) { 3369 return function() { 3370 var args = Array.prototype.slice.call(arguments); 3371 args.unshift(method); 3372 trekkie.push(args); 3373 if (method == 'track' || method == 'page') { 3374 try { 3375 if (window.__TREKKIE_SHIM_QUEUE == null) { 3376 window.__TREKKIE_SHIM_QUEUE = []; 3377 } 3378 window.__TREKKIE_SHIM_QUEUE.push({ 3379 from: 'trekkie-stub', 3380 method: method, 3381 args: args.slice(1) 3382 }); 3383 } catch (e) { 3384 // no-op 3385 } 3386 } 3387 return trekkie; 3388 }; 3389 }; 3390 for (var i = 0; i < trekkie.methods.length; i++) { 3391 var key = trekkie.methods[i]; 3392 trekkie[key] = trekkie.factory(key); 3393 } 3394 trekkie.load = function(config) { 3395 trekkie.config = config || {}; 3396 trekkie.config.initialDocumentCookie = document.cookie; 3397 var first = document.getElementsByTagName('script')[0]; 3398var script = document.createElement('script'); 3399script.type = 'text/javascript'; 3400script.onerror = function(e) { 3401 var scriptFallback = document.createElement('script'); 3402 scriptFallback.type = 'text/javascript'; 3403 scriptFallback.onerror = function(error) { 3404 var Monorail = { 3405 produce: function produce(monorailDomain, schemaId, payload) { 3406 var currentMs = new Date().getTime(); 3407 var event = { 3408 schema_id: schemaId, 3409 payload: payload, 3410 metadata: { 3411 event_created_at_ms: currentMs, 3412 event_sent_at_ms: currentMs 3413 } 3414 }; 3415 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 3416 }, 3417 sendRequest: function sendRequest(endpointUrl, payload) { 3418 // Try the sendBeacon API 3419 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 3420 var blobData = new window.Blob([payload], { 3421 type: 'text/plain' 3422 }); 3423 3424 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 3425 return true; 3426 } // sendBeacon was not successful 3427 3428 } // XHR beacon 3429 3430 var xhr = new XMLHttpRequest(); 3431 3432 try { 3433 xhr.open('POST', endpointUrl); 3434 xhr.setRequestHeader('Content-Type', 'text/plain'); 3435 xhr.send(payload); 3436 } catch (e) { 3437 console.log(e); 3438 } 3439 3440 return false; 3441 }, 3442 isIos12: function isIos12() { 3443 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 3444 } 3445 }; 3446 Monorail.produce('monorail-edge.shopifysvc.com', 3447 'trekkie_storefront_load_errors/1.1', 3448 {shop_id: 79471280447, 3449 theme_id: 188794601791, 3450 app_name: "storefront", 3451 context_url: window.location.href, 3452 source_url: "//www.drinktrade.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js"}); 3453 3454 }; 3455 scriptFallback.async = true; 3456 scriptFallback.src = '//www.drinktrade.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js'; 3457 first.parentNode.insertBefore(scriptFallback, first); 3458}; 3459script.async = true; 3460script.src = '//www.drinktrade.com/cdn/s/trekkie.storefront.f1ba865b3fecd812ad617f74ac079261075e9edb.min.js'; 3461first.parentNode.insertBefore(script, first); 3462 3463 }; 3464 trekkie.load( 3465 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":79471280447,"isMerchantRequest":null,"themeId":188794601791,"themeCityHash":"18286585190089777245","contentLanguage":"en","currency":"USD","eventMetadataId":"d8b26296-d018-4720-9125-9fee3331405a"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 3466 ); 3467 3468 var loaded = false;
3469 trekkie.ready(function() { 3470 if (loaded) return; 3471 loaded = true; 3472 3473 window.ShopifyAnalytics.lib = window.trekkie; 3474 3475 var originalDocumentWrite = document.write; 3476 document.write = customDocumentWrite; 3477 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 3478 document.write = originalDocumentWrite; 3479 3480 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 3481 var token = match? match[1]: undefined; 3482 if (!hasLoggedConversion(token)) { 3483 setCookieIfConversion(token); 3484 3485 } 3486 }); 3487 3488 window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":135353368895,"requestId":"6e00a202-f8a2-44d8-adbf-6423022562e4-1790273988","shopifyEmitted":true}); 3489 3490 var eventsListenerScript = document.createElement('script'); 3491 eventsListenerScript.async = true; 3492 eventsListenerScript.src = "//www.drinktrade.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 3493 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 3494})();</script>
vendor: 1 bytes, line 3494
3494
3495<script 3496 defer 3497 src="https://www.drinktrade.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 3498 data-application="storefront-renderer" 3499 data-shop-id="79471280447" 3500 data-render-region="gcp-us-central1" 3501 data-page-type="page" 3502 data-theme-instance-id="188794601791" 3503 data-theme-name="Shopify Shell theme" 3504 data-theme-version="2.0.0" 3505 data-monorail-region="shop_domain" 3506 data-resource-timing-sampling-rate="10" 3507 data-shs="true" 3508 data-shs-beacon="true" 3509 data-shs-export-with-fetch="true" 3510 data-shs-logs-sample-rate="1" 3511 data-shs-beacon-endpoint="https://www.drinktrade.com/api/collect" 3512></script>
3512 3513<meta name="shopify-y" content="300dea49-bd40-4e46-8c2b-64f7aa1a8e20" data-expiration="1821831588000"><meta name="shopify-s" content="549cd075-a59b-4634-a4e4-611ba79ccb39" data-expiration="1790275788000"><meta name="new-cookie-storage-activated" content="t"> 3514</head> 3515 3516 <body class="gradient"><div id="shopify-section-announcement" class="shopify-section announcement__section"> 3517 3518 3519 3520 <div class="announcement" style="background-color: #ebff88; color: #252525;"> 3521 <p>Free bag of coffee with our Discovery Trial</p> 3522 </div> 3523 3524 3525 3526</div> 3527<div id="shopify-section-header" class="shopify-section header__section"> 3528<div style="display: none;"> 3529 <span id="hidden-yotpo-points" class="swell-point-balance"></span> 3530</div> 3531<header class="header" data-sg-section="header"> 3532 <div class="header__wrapper"> 3533 <div class="header__content header__content--desktop-logo-left header__content--desktop-cta-right"> 3534 <nav class="header__leftMenu header__leftMenu--no-cta" data-sg-sub-section="menu"> 3535 3536 3537 3538 <a 3539 href="/pages/find-my-match" 3540 class="btn btn-black header__getStartBtn header__getStartBtn--mobile-only" 3541 data-sg-track="true" 3542 data-sg-label="build-my-trial" 3543 3544 data-sg-location="find-my-match-quiz" 3545 3546 data-sg-section="header" 3547 data-sg-sub-section="menu" 3548 data-element-type="cta" 3549 > 3550 Build my trial 3551 </a> 3552 3553 3554 3555 3556 <div class="header__logo header__logo--desktop header__logo--desktop-left " data-sg-sub-section="logo"> 3557 <a 3558 href="/" 3559 data-sg-label="logo" 3560 data-sg-track="true" 3561 data-sg-section="header" 3562 data-sg-sub-section="logo" 3563 data-element-type="logo" 3564 > 3565 <img src="//www.drinktrade.com/cdn/shop/files/Asset_1.svg?crop=center&height=31&v=1694809237&width=96" alt="Trade Coffee" width="96" height="31"> 3566 </a> 3567 </div> 3568 3569 3570 <div class="header__desktop-only" data-sg-sub-section="desktop-cta"> 3571 3572 </div> 3573 <ul class="header__list"> 3574 3575 3576 3577 3578 3579 <li class="header__linkItem js-mega-menu"> 3580 3581 <span 3582 class="header__linkList header__linkList--disabled text-trade-black" 3583 data-mega-menu-title="shop-all" 3584 > 3585 Shop All 3586 </span> 3587 3588 3589<div class="megaMenu" data-mega-menu="Shop All" data-sg-section="shop-all-menu"> 3590 <div class="megaMenu__wrapper"> 3591 <div class="wrapper"> 3592 <h6 class="megaMenu__header">Shop All</h6> 3593 <div class="megaMenu__row"> 3594 <ul class="megaMenu__leftNav"> 3595 3596 <li class="megaMenu__leftNavItem"> 3597 <a 3598 href="/pages/discover" 3599 class="megaMenu__leftNavLink text-trade-black" 3600 data-sg-track="true" 3601 data-sg-label="build-my-discovery-trial" 3602 3603 data-sg-location="find-my-match-quiz-page" 3604 3605 data-sg-section="header" 3606 data-sg-sub-section="shop-all-submenu" 3607 > 3608 Build my Discovery Trial 3609 </a> 3610 </li> 3611 3612 <li class="megaMenu__leftNavItem"> 3613 <a 3614 href="/collections/all" 3615 class="megaMenu__leftNavLink text-trade-black" 3616 data-sg-track="true" 3617 data-sg-label="browse-coffee" 3618 3619 data-sg-location="find-my-match-quiz-page" 3620 3621 data-sg-section="header" 3622 data-sg-sub-section="shop-all-submenu" 3623 > 3624 Browse Coffee 3625 </a> 3626 </li> 3627 3628 <li class="megaMenu__leftNavItem"> 3629 <a 3630 href="/collections/equipment" 3631 class="megaMenu__leftNavLink text-trade-black" 3632 data-sg-track="true" 3633 data-sg-label="browse-coffee-equipment" 3634 3635 data-sg-location="find-my-match-quiz-page" 3636 3637 data-sg-section="header" 3638 data-sg-sub-section="shop-all-submenu" 3639 > 3640 Browse Coffee Equipment 3641 </a> 3642 </li> 3643 3644 <li class="megaMenu__leftNavItem"> 3645 <a 3646 href="/pages/trade-secrets" 3647 class="megaMenu__leftNavLink text-trade-black" 3648 data-sg-track="true" 3649 data-sg-label="discover-rare-coffees" 3650 3651 data-sg-location="find-my-match-quiz-page" 3652 3653 data-sg-section="header" 3654 data-sg-sub-section="shop-all-submenu" 3655 > 3656 Discover Rare Coffees 3657 </a> 3658 </li> 3659 3660 </ul> 3661 3662 <div class="megaMenu__nav"> 3663 3664 </div> 3665 3666 <div class="megaMenu__promotion" data-sg-sub-section="promotion"> 3667 3668 <div class="megaMenu__promotionItem"> 3669 <div class="megaMenu__promotionImage"> 3670 3671 <a 3672 href="/pages/espresso-hub" 3673 data-sg-label="browse-espresso" 3674 > 3675 3676 <img 3677 src="//www.drinktrade.com/cdn/shop/files/NavImage_Desktop.webp?crop=center&height=600&v=1784739787&width=800" 3678 alt="Promotion Image" 3679 > 3680 3681 </a> 3682 3683 </div> 3684 3685 <h6 class="megaMenu__promotionHeading">Browse espresso</h6> 3686 3687 3688 <p class="megaMenu__promotionText">Get tips and techniques to help you brew with confidence.</p> 3689 3690 </div> 3691 3692 3693 3694 <div class="megaMenu__promotionItem"> 3695 <div class="megaMenu__promotionImage"> 3696 3697 <a 3698 href="/pages/cold-brew-offer" 3699 data-sg-label="cold-brew-youll-crave" 3700 > 3701 3702 <img 3703 src="//www.drinktrade.com/cdn/shop/files/Nav_Shop_LoggedOut_d88045c1-79b0-4653-aee1-ab172ad74f1a.jpg?crop=center&height=600&v=1757952118&width=800" 3704 alt="Secondary Promotion Image" 3705 > 3706 3707 </a> 3708 3709 </div> 3710 3711 <h6 class="megaMenu__promotionHeading">Cold brew you'll crave</h6> 3712 3713 3714 <p class="megaMenu__promotionText">From smooth and chocolatey to bright & refreshing.</p> 3715 3716 </div> 3717 3718 </div> 3719 </div> 3720 </div> 3721 </div> 3722</div> 3723 3724</li> 3725 3726 3727 <li class="header__linkItem js-mega-menu"> 3728
3729 <span 3730 class="header__linkList header__linkList--disabled text-trade-black" 3731 data-mega-menu-title="gifts" 3732 > 3733 Gifts 3734 </span> 3735 3736 3737 3738<div class="megaMenu" data-mega-menu="Gifts" data-sg-section="gifts-menu"> 3739 <div class="megaMenu__wrapper"> 3740 <div class="wrapper"> 3741 <h6 class="megaMenu__header">Gifts</h6> 3742 <div class="megaMenu__row"> 3743 <ul class="megaMenu__leftNav"> 3744 3745 <li class="megaMenu__leftNavItem"> 3746 <a 3747 href="/pages/gifts" 3748 class="megaMenu__leftNavLink text-trade-black" 3749 data-sg-track="true" 3750 data-sg-label="shop-gifts" 3751 3752 data-sg-location="find-my-match-quiz-page" 3753 3754 data-sg-section="header" 3755 data-sg-sub-section="gifts-submenu" 3756 > 3757 Shop Gifts 3758 </a> 3759 </li> 3760 3761 <li class="megaMenu__leftNavItem"> 3762 <a 3763 href="/pages/redeem" 3764 class="megaMenu__leftNavLink text-trade-black" 3765 data-sg-track="true" 3766 data-sg-label="redeem-a-gift" 3767 3768 data-sg-location="find-my-match-quiz-page" 3769 3770 data-sg-section="header" 3771 data-sg-sub-section="gifts-submenu" 3772 > 3773 Redeem a Gift 3774 </a> 3775 </li> 3776 3777 <li class="megaMenu__leftNavItem"> 3778 <a 3779 href="/pages/corporate-gifts" 3780 class="megaMenu__leftNavLink text-trade-black" 3781 data-sg-track="true" 3782 data-sg-label="corporate-gifting" 3783 3784 data-sg-location="find-my-match-quiz-page" 3785 3786 data-sg-section="header" 3787 data-sg-sub-section="gifts-submenu" 3788 > 3789 Corporate Gifting 3790 </a> 3791 </li> 3792 3793 </ul> 3794 3795 <div class="megaMenu__nav"> 3796 3797 </div> 3798 3799 <div class="megaMenu__promotion" data-sg-sub-section="promotion"> 3800 3801 <div class="megaMenu__promotionItem"> 3802 <div class="megaMenu__promotionImage"> 3803 3804 <a 3805 href="/products/coffee-gift-subscription" 3806 data-sg-label="gift-a-coffee-subscription" 3807 > 3808 3809 <img 3810 src="//www.drinktrade.com/cdn/shop/files/Frame_1321323024_df263da2-effc-47b6-9877-6da22c906752.webp?crop=center&height=600&v=1766006898&width=800" 3811 alt="Promotion Image" 3812 > 3813 3814 </a> 3815 3816 </div> 3817 3818 <h6 class="megaMenu__promotionHeading">Gift a Coffee Subscription</h6> 3819 3820 3821 <p class="megaMenu__promotionText">Choose a subscription length, and we'll handle the rest.</p> 3822 3823 </div> 3824 3825 3826 3827 <div class="megaMenu__promotionItem"> 3828 <div class="megaMenu__promotionImage"> 3829 3830 <a 3831 href="/pages/redeem" 3832 data-sg-label="redeem-a-gift" 3833 > 3834 3835 <img 3836 src="//www.drinktrade.com/cdn/shop/files/NavigationBar_Desktop.webp?crop=center&height=600&v=1780578703&width=800" 3837 alt="Secondary Promotion Image" 3838 > 3839 3840 </a> 3841 3842 </div> 3843 3844 <h6 class="megaMenu__promotionHeading">Redeem a gift</h6> 3845 3846 3847 <p class="megaMenu__promotionText">Got a gift? Let's turn it into something delicious.</p> 3848 3849 </div> 3850 3851 </div> 3852 </div> 3853 </div> 3854 </div> 3855</div> 3856 3857</li> 3858 3859 3860 <li class="header__linkItem js-mega-menu"> 3861
3862 <span 3863 class="header__linkList header__linkList--disabled text-trade-black" 3864 data-mega-menu-title="about-us" 3865 > 3866 About Us 3867 </span> 3868 3869 3870 3871 3872<div class="megaMenu" data-mega-menu="About Us" data-sg-section="about-us-menu"> 3873 <div class="megaMenu__wrapper"> 3874 <div class="wrapper"> 3875 <h6 class="megaMenu__header">About Us</h6> 3876 <div class="megaMenu__row"> 3877 <ul class="megaMenu__leftNav"> 3878 3879 <li class="megaMenu__leftNavItem"> 3880 <a 3881 href="/pages/our-story" 3882 class="megaMenu__leftNavLink text-trade-black" 3883 data-sg-track="true" 3884 data-sg-label="our-story" 3885 3886 data-sg-location="find-my-match-quiz-page" 3887 3888 data-sg-section="header" 3889 data-sg-sub-section="about-us-submenu" 3890 > 3891 Our Story 3892 </a> 3893 </li> 3894 3895 <li class="megaMenu__leftNavItem"> 3896 <a 3897 href="https://www.drinktrade.com/pages/roasters" 3898 class="megaMenu__leftNavLink text-trade-black" 3899 data-sg-track="true" 3900 data-sg-label="our-roasters" 3901 3902 data-sg-location="find-my-match-quiz-page" 3903 3904 data-sg-section="header" 3905 data-sg-sub-section="about-us-submenu" 3906 > 3907 Our Roasters 3908 </a> 3909 </li> 3910 3911 <li class="megaMenu__leftNavItem"> 3912 <a 3913 href="https://www.drinktrade.com/pages/blog" 3914 class="megaMenu__leftNavLink text-trade-black" 3915 data-sg-track="true" 3916 data-sg-label="learn" 3917 3918 data-sg-location="find-my-match-quiz-page" 3919 3920 data-sg-section="header" 3921 data-sg-sub-section="about-us-submenu" 3922 > 3923 Learn 3924 </a> 3925 </li> 3926 3927 </ul> 3928 3929 <div class="megaMenu__nav"> 3930 3931 </div> 3932 3933 <div class="megaMenu__promotion" data-sg-sub-section="promotion"> 3934 3935 <div class="megaMenu__promotionItem"> 3936 <div class="megaMenu__promotionImage"> 3937 3938 <a 3939 href="/blogs/culture" 3940 data-sg-label="coffee-101" 3941 > 3942 3943 <img 3944 src="//www.drinktrade.com/cdn/shop/files/LS_trade_031725_7576_1_1.jpg?crop=center&height=600&v=1757952384&width=800" 3945 alt="Promotion Image" 3946 > 3947 3948 </a> 3949 3950 </div> 3951 3952 <h6 class="megaMenu__promotionHeading">Coffee 101</h6> 3953 3954 3955 <p class="megaMenu__promotionText">Venture into all things coffee.</p> 3956 3957 </div> 3958 3959 3960 3961 <div class="megaMenu__promotionItem"> 3962 <div class="megaMenu__promotionImage"> 3963 3964 <a 3965 href="/pages/espresso-hub" 3966 data-sg-label="explore-our-espresso-guide" 3967 > 3968 3969 <img 3970 src="//www.drinktrade.com/cdn/shop/files/NavImage_Desktop.webp?crop=center&height=600&v=1784739787&width=800" 3971 alt="Secondary Promotion Image" 3972 > 3973 3974 </a> 3975 3976 </div> 3977 3978 <h6 class="megaMenu__promotionHeading">Explore our espresso guide</h6> 3979 3980 3981 <p class="megaMenu__promotionText">Get tips and techniques to help you brew with confidence.</p> 3982 3983 </div> 3984 3985 </div> 3986 </div> 3987 </div> 3988 </div> 3989</div> 3990 3991</li> 3992 3993 3994 <li class="header__linkItem "> 3995 3996 <a 3997 href="/pages/subscribe" 3998 class="header__linkList text-trade-black" 3999 data-mega-menu-title="subscribe" 4000 data-sg-track="true" 4001 data-sg-label="subscribe" 4002 4003 data-sg-location="find-my-match-quiz-page" 4004 4005 data-sg-section="header" 4006 data-sg-sub-section="menu" 4007 data-element-type="page" 4008 > 4009 Subscribe 4010 </a> 4011 4012</li> 4013 4014 4015 </ul> 4016 </nav> 4017 4018 <div class="header__logo header__logo--mobile" data-sg-sub-section="logo"> 4019 <a 4020 href="/" 4021 data-sg-label="logo" 4022 data-sg-track="true" 4023 data-sg-section="header" 4024 data-sg-sub-section="logo" 4025 data-element-type="logo" 4026 > 4027 <img src="//www.drinktrade.com/cdn/shop/files/Asset_1.svg?crop=center&height=24&v=1694809237&width=72" alt="Trade Coffee" width="72" height="24"> 4028 </a> 4029 </div> 4030 4031 4032 <nav class="header__rightMenu" data-sg-sub-section="secondary-menu"> 4033 <ul class="header__list"> 4034 4035 4036 4037 4038 4039 </ul> 4040 <div class="header__icons" data-sg-sub-section="header-icons"> 4041 <a 4042 href="#" 4043 class="header__icon header__iconSearch js-search-icon" 4044 data-sg-track="true" 4045 data-sg-label="search" 4046 4047 data-sg-location="find-my-match-quiz-page" 4048 4049 data-sg-section="header" 4050 data-sg-sub-section="menu" 4051> 4052 4053 4054 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4055 <path d="M23.8403 20.0547C26.3394 16.4068 26.2021 11.4035 23.2013 7.87263C19.6073 3.64575 13.267 3.13188 9.04013 6.72484C4.8
40551223 10.3198 4.29837 16.6591 7.89234 20.887C11.4853 25.1149 17.8256 25.6288 22.0535 22.0348L26.5 27.2659" stroke="#252525" stroke-width="1.61538" stroke-linecap="round" stroke-linejoin="round"/> 4056 </svg> 4057 4058 4059 4060</a> 4061 <a 4062 href="https://account.drinktrade.com" 4063 class="header__icon header__iconAccount header__iconAccount-mobile" 4064 data-sg-track="true" 4065 data-sg-label="account" 4066 4067 data-sg-location="find-my-match-quiz-page" 4068 4069 data-sg-section="header" 4070 data-sg-sub-section="menu" 4071 data-element-type="cta" 4072 > 4073 4074 4075 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4076 <path fill-rule="evenodd" clip-rule="evenodd" d="M15.9993 4.6768C9.74495 4.6768 4.67582 9.74593 4.67582 16.0003C4.67582 19.4961 6.25993 22.6221 8.74966 24.6993C9.78167 21.6899 12.6339 19.5262 15.9946 19.5262C17.4841 19.5262 18.6912 18.3191 18.6912 16.8297C18.6912 15.3414 17.4843 14.1342 15.9947 14.1342C14.5051 14.1342 13.2982 15.3414 13.2982 16.8297C13.2982 17.1387 13.3501 17.4345 13.4446 17.7082C13.5149 17.9093 13.6058 18.0982 13.7145 18.2697C13.9376 18.6219 13.833 19.0883 13.4808 19.3114C13.1286 19.5345 12.6622 19.4299 12.4391 19.0777C12.2661 18.8046 12.1256 18.5107 12.0188 18.2049L12.0181 18.2027C11.8692 17.7721 11.7884 17.3093 11.7884 16.8297C11.7884 14.5073 13.6716 12.6244 15.9947 12.6244C18.3179 12.6244 20.201 14.5073 20.201 16.8297C20.201 19.1531 18.3178 21.036 15.9946 21.036C13.1351 21.036 10.7314 22.9884 10.0441 25.6333C11.7742 26.7051 13.8144 27.3239 15.9993 27.3239C18.1806 27.3239 20.2179 26.707 21.9462 25.6382C21.5557 24.1311 20.6074 22.8455 19.3326 22.02C18.9826 21.7934 18.8826 21.326 19.1092 20.9761C19.3358 20.6261 19.8032 20.5261 20.1532 20.7527C21.5808 21.6771 22.6808 23.0658 23.2415 24.7052C25.7354 22.6281 27.3229 19.4994 27.3229 16.0003C27.3229 9.74597 22.2528 4.6768 15.9993 4.6768ZM3.16602 16.0003C3.16602 8.91208 8.91111 3.16699 15.9993 3.16699C23.0865 3.16699 28.8327 8.91204 28.8327 16.0003C28.8327 23.0876 23.0866 28.8337 15.9993 28.8337C8.91107 28.8337 3.16602 23.0875 3.16602 16.0003Z" fill="#252525"/> 4077 </svg> 4078 4079 4080 4081 </a> 4082 4083<a 4084 href="#" 4085 class="header__icon header__iconCart" 4086 onclick="window.openCart()" 4087 data-sg-track="true" 4088 data-sg-label="cart-drawer" 4089 4090 data-sg-location="find-my-match-quiz-page" 4091 4092 data-sg-section="header" 4093 data-sg-sub-section="menu" 4094 data-element-type="cta" 4095> 4096 <span class="js-cart-count " data-cart="0"> 4097 4098 </span> 4099 4100 4101 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4102 <path d="M11.0664 18.1743L20.0492 17.1089C23.3916 16.8305 24.1419 16.1004 24.5124 12.767C24.8828 9.43368 25.2656 7.5498 25.2656 7.5498" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4103 <path d="M11.0664 7.14941L26.8164 7.14941" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4104 <path d="M3.71484 4H4.89819C6.05543 4 7.06417 4.76512 7.34484 5.85579L10.9895 17.9187" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4105 <path d="M21.0418 27.1002C21.9116 27.1002 22.6168 26.395 22.6168 25.5252C22.6168 24.6553 21.9116 23.9502 21.0418 23.9502C20.1719 23.9502 19.4668 24.6553 19.4668 25.5252C19.4668 26.395 20.1719 27.1002 21.0418 27.1002Z" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4106 <path d="M12.6414 27.1002C13.5113 27.1002 14.2164 26.395 14.2164 25.5252C14.2164 24.6553 13.5113 23.9502 12.6414 23.9502C11.7716 23.9502 11.0664 24.6553 11.0664 25.5252C11.0664 26.395 11.7716 27.1002 12.6414 27.1002Z" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4107 <path d="M11.002 17.6499L10.7256 18.6816C10.3684 20.0153 11.3734 21.3249 12.7541 21.3249H22.552" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4108 </svg> 4109 4110 4111</a> 4112 4113 <a 4114 href="#" 4115 class="header__icon header__iconHamburger js-mobile-nav-open" 4116 data-sg-track="true" 4117 data-sg-label="hamburger" 4118 4119 data-sg-location="find-my-match-quiz-page" 4120 4121 data-sg-section="mobile-menu" 4122 data-sg-sub-section="mobile-menu-icon" 4123 data-element-type="cta" 4124 > 4125 4126 4127 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4128 <path d="M7 23H25" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4129 <path d="M7 16H25" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4130 <path d="M7 9H25" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4131 </svg> 4132 4133 4134 4135 </a> 4136 </div> 4137 4138 <div class="header__accountMenu js-account-menu"> 4139 <div class="header__accountHeader"> 4140 <a href="#" class="header__accountClose js-mobile-account-close"> 4141 4142 4143 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4144 <g clip-path="url(#clip0_114_4717)"> 4145 <path d="M18.3636 18.364L5.63566 5.63604M5.63566 18.364L18.3636 5.63604" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4146 </g> 4147 <defs> 4148 <clipPath id="clip0_114_4717"> 4149 <rect width="24" height="24" fill="white" transform="translate(24 1.04907e-06) rotate(90)"/> 4150 </clipPath> 4151 </defs> 4152 </svg> 4153 4154 4155 4156 </a> 4157 </div> 4158 <ul class="header__accounList"> 4159 4160 4161 4162 4163 <li class="header__accounItem"> 4164 <a href="/account?view=order_history" class="header__accounLink">Order History</a> 4165 </li> 4166 4167 <li class="header__accounItem"> 4168 <a href="/account" class="header__accounLink">Account Details</a> 4169 </li> 4170 4171 <li class="header__accounItem"> 4172 <a href="/account/addresses" class="header__accounLink">Shipping Addresses</a> 4173 </li> 4174 4175 <li class="header__accounItem"> 4176 <a href="/account/payment" class="header__accounLink">Payment Methods</a> 4177 </li> 4178 4179 <li class="header__accounItem"> 4180 <a href="/collections" class="header__accounLink">Trade Credit</a> 4181 </li> 4182 4183 <li class="header__accounItem"> 4184 <a href="/pages/refer-a-friend" class="header__accounLink">Refer A Friend</a> 4185 </li> 4186 4187 <li class="header__accounItem"> 4188 <a href="https://trade-coffee.gorgias.help/en-US/articles" class="header__accounLink">Help Center</a> 4189 </li> 4190 4191 4192 <li class="header__accounItem"> 4193 <a 4194 href="/account/logout" 4195 id="customer_logout_link" 4196 class="header__accounLink header__accounLink--red" 4197 > 4198 Logout 4199 </a> 4200 </li> 4201 </ul> 4202 </div> 4203 </nav> 4204 4205 <div class="header__desktop-only" data-sg-sub-section="desktop-cta"> 4206 4207 4208 4209 4210 <a 4211 href="/pages/find-my-match" 4212 class="btn btn-black header__getStartBtn header__getStartBtn--desktop-right header__getStartBtn--desktop-only" 4213 data-sg-track="true" 4214 data-sg-label="build-my-trial" 4215 4216 data-sg-location="find-my-match-quiz" 4217 4218 data-sg-section="header" 4219 data-sg-sub-section="menu" 4220 data-element-type="cta" 4221 > 4222 Build my trial 4223 </a> 4224 4225 4226 4227 </div> 4228 </div> 4229 </div> 4230</header><div class="mobileNav js-mobile-nav" data-sg-section="mobile-nav" data-sg-sub-section="mobile-navigation"> 4231 <div class="mobileNav__wrapper"> 4232 <div class="mobileNav__row mobileNav__levelOne"> 4233 <div class="mobileNav__header"> 4234 4235 <div class="header__logo mobileNav__logo"> 4236 <a 4237 href="/" 4238 data-sg-label="logo" 4239 > 4240 <img src="//www.drinktrade.com/cdn/shop/files/Asset_1.svg?crop=center&height=96&v=1694809237&width=300" alt="Trade Coffee" width="300" height="96"> 4241 </a> 4242 </div> 4243 4244 <div class="mobileNav__icons"> 4245 <a 4246 href="#" 4247 class="header__icon header__iconSearch js-search-icon" 4248 data-sg-track="true" 4249 data-sg-label="search" 4250 4251 data-sg-location="find-my-match-quiz-page" 4252 4253 data-sg-section="header" 4254 data-sg-sub-section="menu" 4255> 4256 4257 4258 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4259 <path d="M23.8403 20.0547C26.3394 16.4068 26.2021 11.4035 23.2013 7.87263C19.6073 3.64575 13.267 3.13188 9.04013 6.72484C4.8
42591223 10.3198 4.29837 16.6591 7.89234 20.887C11.4853 25.1149 17.8256 25.6288 22.0535 22.0348L26.5 27.2659" stroke="#252525" stroke-width="1.61538" stroke-linecap="round" stroke-linejoin="round"/> 4260 </svg> 4261 4262 4263 4264</a> 4265 <a 4266 href="https://account.drinktrade.com" 4267 class="header__icon header__iconAccount header__iconAccount-mobile" 4268 data-sg-track="true" 4269 data-sg-label="account" 4270 4271 data-sg-location="find-my-match-quiz-page" 4272 4273 data-sg-section="header" 4274 data-sg-sub-section="menu" 4275 data-element-type="cta" 4276 > 4277 4278 4279 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4280 <path fill-rule="evenodd" clip-rule="evenodd" d="M15.9993 4.6768C9.74495 4.6768 4.67582 9.74593 4.67582 16.0003C4.67582 19.4961 6.25993 22.6221 8.74966 24.6993C9.78167 21.6899 12.6339 19.5262 15.9946 19.5262C17.4841 19.5262 18.6912 18.3191 18.6912 16.8297C18.6912 15.3414 17.4843 14.1342 15.9947 14.1342C14.5051 14.1342 13.2982 15.3414 13.2982 16.8297C13.2982 17.1387 13.3501 17.4345 13.4446 17.7082C13.5149 17.9093 13.6058 18.0982 13.7145 18.2697C13.9376 18.6219 13.833 19.0883 13.4808 19.3114C13.1286 19.5345 12.6622 19.4299 12.4391 19.0777C12.2661 18.8046 12.1256 18.5107 12.0188 18.2049L12.0181 18.2027C11.8692 17.7721 11.7884 17.3093 11.7884 16.8297C11.7884 14.5073 13.6716 12.6244 15.9947 12.6244C18.3179 12.6244 20.201 14.5073 20.201 16.8297C20.201 19.1531 18.3178 21.036 15.9946 21.036C13.1351 21.036 10.7314 22.9884 10.0441 25.6333C11.7742 26.7051 13.8144 27.3239 15.9993 27.3239C18.1806 27.3239 20.2179 26.707 21.9462 25.6382C21.5557 24.1311 20.6074 22.8455 19.3326 22.02C18.9826 21.7934 18.8826 21.326 19.1092 20.9761C19.3358 20.6261 19.8032 20.5261 20.1532 20.7527C21.5808 21.6771 22.6808 23.0658 23.2415 24.7052C25.7354 22.6281 27.3229 19.4994 27.3229 16.0003C27.3229 9.74597 22.2528 4.6768 15.9993 4.6768ZM3.16602 16.0003C3.16602 8.91208 8.91111 3.16699 15.9993 3.16699C23.0865 3.16699 28.8327 8.91204 28.8327 16.0003C28.8327 23.0876 23.0866 28.8337 15.9993 28.8337C8.91107 28.8337 3.16602 23.0875 3.16602 16.0003Z" fill="#252525"/> 4281 </svg> 4282 4283 4284 4285 </a> 4286 4287<a 4288 href="#" 4289 class="header__icon header__iconCart" 4290 onclick="window.openCart()" 4291 data-sg-track="true" 4292 data-sg-label="cart-drawer" 4293 4294 data-sg-location="find-my-match-quiz-page" 4295 4296 data-sg-section="header" 4297 data-sg-sub-section="menu" 4298 data-element-type="cta" 4299> 4300 <span class="js-cart-count " data-cart="0"> 4301 4302 </span> 4303 4304 4305 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 4306 <path d="M11.0664 18.1743L20.0492 17.1089C23.3916 16.8305 24.1419 16.1004 24.5124 12.767C24.8828 9.43368 25.2656 7.5498 25.2656 7.5498" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4307 <path d="M11.0664 7.14941L26.8164 7.14941" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4308 <path d="M3.71484 4H4.89819C6.05543 4 7.06417 4.76512 7.34484 5.85579L10.9895 17.9187" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4309 <path d="M21.0418 27.1002C21.9116 27.1002 22.6168 26.395 22.6168 25.5252C22.6168 24.6553 21.9116 23.9502 21.0418 23.9502C20.1719 23.9502 19.4668 24.6553 19.4668 25.5252C19.4668 26.395 20.1719 27.1002 21.0418 27.1002Z" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4310 <path d="M12.6414 27.1002C13.5113 27.1002 14.2164 26.395 14.2164 25.5252C14.2164 24.6553 13.5113 23.9502 12.6414 23.9502C11.7716 23.9502 11.0664 24.6553 11.0664 25.5252C11.0664 26.395 11.7716 27.1002 12.6414 27.1002Z" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4311 <path d="M11.002 17.6499L10.7256 18.6816C10.3684 20.0153 11.3734 21.3249 12.7541 21.3249H22.552" stroke="#252525" stroke-width="1.5" stroke-linecap="round"/> 4312 </svg> 4313 4314 4315</a> 4316 4317 <a href="#" class="header__icon header__iconClose js-mobile-nav-close"> 4318 4319 4320 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4321 <g clip-path="url(#clip0_114_4717)"> 4322 <path d="M18.3636 18.364L5.63566 5.63604M5.63566 18.364L18.3636 5.63604" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4323 </g> 4324 <defs> 4325 <clipPath id="clip0_114_4717"> 4326 <rect width="24" height="24" fill="white" transform="translate(24 1.04907e-06) rotate(90)"/> 4327 </clipPath> 4328 </defs> 4329 </svg> 4330 4331 4332 4333 </a> 4334 </div> 4335 </div> 4336 <div class="mobileNav__content"> 4337 <div class="mobileNav__auth"> 4338 <a 4339 href="https://account.drinktrade.com" 4340 class="mobileNav__authLink" 4341 data-sg-track="true" 4342 data-sg-label="create-account" 4343 data-sg-location="Find My Match Quiz" 4344 data-sg-section="mobile-nav" 4345 data-sg-sub-section="mobile-menu" 4346 data-element-type="cta" 4347 > 4348 Create account 4349 </a>
4350 <span class="mobileNav__authSeparator">or</span> 4351 <a 4352 href="https://account.drinktrade.com" 4353 class="mobileNav__authLink" 4354 data-sg-track="true" 4355 data-sg-label="log-in" 4356 data-sg-location="Find My Match Quiz" 4357 data-sg-section="mobile-nav" 4358 data-sg-sub-section="mobile-menu" 4359 data-element-type="cta" 4360 > 4361 Log in 4362 </a> 4363 </div> 4364 4365 <ul class="mobileNav__list"> 4366 4367 <li class="mobileNav__linkItem mobileNav__linkAccordion"> 4368 <a 4369 href="#" 4370 class="mobileNav__linkList js-mobile-accordion" 4371 data-sg-label="shop-all"role="button" 4372 aria-expanded="false"> 4373 Shop All 4374<span class="mobileNav__accordionIcon"> 4375 <span class="mobileNav__accordionIconPlus"> 4376 4377 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4378 <path d="M12 5V19" stroke="#252525" stroke-width="2" stroke-linecap="round"/> 4379 <path d="M5 12H19" stroke="#252525" stroke-width="2" stroke-linecap="round"/> 4380 </svg> 4381 4382 4383</span> 4384 <span class="mobileNav__accordionIconMinus"> 4385 4386 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4387 <path d="M20 12H4" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4388 </svg> 4389 4390</span> 4391 </span></a><div class="mobileNav__accordionContent"> 4392<ul class="mobileNav__accordionList"> 4393 4394 <li class="mobileNav__accordionItem"> 4395 <a 4396 href="/pages/discover" 4397 class="mobileNav__accordionLink" 4398 data-sg-track="true" 4399 data-sg-label="build-my-discovery-trial" 4400 data-sg-section="header" 4401 data-sg-sub-section="shop-all-submenu" 4402 data-element-type="page" 4403 > 4404 Build my Discovery Trial 4405 </a> 4406 </li> 4407 4408 <li class="mobileNav__accordionItem"> 4409 <a 4410 href="/collections/all" 4411 class="mobileNav__accordionLink" 4412 data-sg-track="true" 4413 data-sg-label="browse-coffee" 4414 data-sg-section="header" 4415 data-sg-sub-section="shop-all-submenu" 4416 data-element-type="page" 4417 > 4418 Browse Coffee 4419 </a> 4420 </li> 4421 4422 <li class="mobileNav__accordionItem"> 4423 <a 4424 href="/collections/equipment" 4425 class="mobileNav__accordionLink" 4426 data-sg-track="true" 4427 data-sg-label="browse-coffee-equipment" 4428 data-sg-section="header" 4429 data-sg-sub-section="shop-all-submenu" 4430 data-element-type="page" 4431 > 4432 Browse Coffee Equipment 4433 </a> 4434 </li> 4435 4436 <li class="mobileNav__accordionItem"> 4437 <a 4438 href="/pages/trade-secrets" 4439 class="mobileNav__accordionLink" 4440 data-sg-track="true" 4441 data-sg-label="discover-rare-coffees" 4442 data-sg-section="header" 4443 data-sg-sub-section="shop-all-submenu" 4444 data-element-type="page" 4445 > 4446 Discover Rare Coffees 4447 </a> 4448 </li> 4449 4450</ul> 4451 4452 4453 <div class="mobileNav__accordionPromotion"> 4454 4455 <div class="mobileNav__accordionPromotionItem"> 4456 <div class="mobileNav__accordionPromotionImage"> 4457 <a href="/pages/espresso-hub" data-sg-label="browse-espresso"> 4458 <img 4459 src="//www.drinktrade.com/cdn/shop/files/NavImage_Mobile.webp?crop=center&height=236&v=1784739778&width=444" 4460 alt="Browse espresso" 4461 loading="lazy" 4462 > 4463 </a> 4464 </div> 4465 4466 <h6 class="mobileNav__accordionPromotionHeading">Browse espresso</h6> 4467 4468 4469 <p class="mobileNav__accordionPromotionText">Get tips and techniques to help you brew with confidence.</p> 4470 4471 </div> 4472 4473 4474 4475 <div class="mobileNav__accordionPromotionItem"> 4476 <div class="mobileNav__accordionPromotionImage"> 4477 <a href="/pages/cold-brew-offer" data-sg-label="cold-brew-youll-crave"> 4478 <img 4479 src="//www.drinktrade.com/cdn/shop/files/Nav_Shop_LoggedOut-1_0d592370-c9bd-41da-8f63-535b99388ac9.jpg?crop=center&height=236&v=1782502935&width=444" 4480 alt="Cold brew you'll crave" 4481 loading="lazy" 4482 > 4483 </a> 4484 </div> 4485 4486 <h6 class="mobileNav__accordionPromotionHeading">Cold brew you'll crave</h6> 4487 4488 4489 <p class="mobileNav__accordionPromotionText">From smooth and chocolatey to bright & refreshing.</p> 4490 4491 </div> 4492 4493 </div> 4494 4495 4496</div></li> 4497 4498 4499 <li class="mobileNav__linkItem mobileNav__linkAccordion"> 4500 <a 4501 href="#" 4502 class="mobileNav__linkList js-mobile-accordion" 4503 data-sg-label="gifts"role="button" 4504 aria-expanded="false"> 4505 Gifts 4506<span class="mobileNav__accordionIcon">
4507 <span class="mobileNav__accordionIconPlus"> 4508 4509 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4510 <path d="M12 5V19" stroke="#252525" stroke-width="2" stroke-linecap="round"/> 4511 <path d="M5 12H19" stroke="#252525" stroke-width="2" stroke-linecap="round"/> 4512 </svg> 4513 4514 4515</span> 4516 <span class="mobileNav__accordionIconMinus"> 4517 4518 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4519 <path d="M20 12H4" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4520 </svg> 4521 4522</span> 4523 </span></a><div class="mobileNav__accordionContent"> 4524 4525<ul class="mobileNav__accordionList"> 4526 4527 <li class="mobileNav__accordionItem"> 4528 <a 4529 href="/pages/gifts" 4530 class="mobileNav__accordionLink" 4531 data-sg-track="true" 4532 data-sg-label="shop-gifts" 4533 data-sg-section="header" 4534 data-sg-sub-section="gifts-submenu" 4535 data-element-type="page" 4536 > 4537 Shop Gifts 4538 </a> 4539 </li> 4540 4541 <li class="mobileNav__accordionItem"> 4542 <a 4543 href="/pages/redeem" 4544 class="mobileNav__accordionLink" 4545 data-sg-track="true" 4546 data-sg-label="redeem-a-gift" 4547 data-sg-section="header" 4548 data-sg-sub-section="gifts-submenu" 4549 data-element-type="page" 4550 > 4551 Redeem a Gift 4552 </a> 4553 </li> 4554 4555 <li class="mobileNav__accordionItem"> 4556 <a 4557 href="/pages/corporate-gifts" 4558 class="mobileNav__accordionLink" 4559 data-sg-track="true" 4560 data-sg-label="corporate-gifting" 4561 data-sg-section="header" 4562 data-sg-sub-section="gifts-submenu" 4563 data-element-type="page" 4564 > 4565 Corporate Gifting 4566 </a> 4567 </li> 4568 4569</ul> 4570 4571 4572 <div class="mobileNav__accordionPromotion"> 4573 4574 <div class="mobileNav__accordionPromotionItem"> 4575 <div class="mobileNav__accordionPromotionImage"> 4576 <a href="/products/coffee-gift-subscription" data-sg-label="gift-a-coffee-subscription"> 4577 <img 4578 src="//www.drinktrade.com/cdn/shop/files/Frame_1321323024_df263da2-effc-47b6-9877-6da22c906752.webp?crop=center&height=236&v=1766006898&width=444" 4579 alt="Gift a Coffee Subscription" 4580 loading="lazy" 4581 > 4582 </a> 4583 </div> 4584 4585 <h6 class="mobileNav__accordionPromotionHeading">Gift a Coffee Subscription</h6> 4586 4587 4588 <p class="mobileNav__accordionPromotionText">Choose a subscription length, and we'll handle the rest.</p> 4589 4590 </div> 4591 4592 4593 4594 <div class="mobileNav__accordionPromotionItem"> 4595 <div class="mobileNav__accordionPromotionImage"> 4596 <a href="/pages/redeem" data-sg-label="redeem-a-gift"> 4597 <img 4598 src="//www.drinktrade.com/cdn/shop/files/NavigationBar_Mobile.webp?crop=center&height=236&v=1780578712&width=444" 4599 alt="Redeem a gift" 4600 loading="lazy" 4601 > 4602 </a> 4603 </div> 4604 4605 <h6 class="mobileNav__accordionPromotionHeading">Redeem a gift</h6> 4606 4607 4608 <p class="mobileNav__accordionPromotionText">Got a gift? Let's turn it into something delicious.</p> 4609 4610 </div> 4611 4612 </div> 4613 4614 4615</div></li> 4616 4617 4618 <li class="mobileNav__linkItem mobileNav__linkAccordion"> 4619 <a 4620 href="#" 4621 class="mobileNav__linkList js-mobile-accordion" 4622 data-sg-label="about-us"role="button" 4623 aria-expanded="false"> 4624 About Us 4625<span class="mobileNav__accordionIcon"> 4626 <span class="mobileNav__accordionIconPlus"> 4627 4628 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4629 <path d="M12 5V19" stroke="#252525" stroke-width="2" stroke-linecap="round"/> 4630 <path d="M5 12H19" stroke="#252525" stroke-width="2" stroke-linecap="round"/> 4631 </svg> 4632 4633 4634</span> 4635 <span class="mobileNav__accordionIconMinus"> 4636 4637 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 4638 <path d="M20 12H4" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 4639 </svg> 4640 4641</span> 4642 </span></a><div class="mobileNav__accordionContent"> 4643 4644 4645<ul class="mobileNav__accordionList"> 4646 4647 <li class="mobileNav__accordionItem"> 4648 <a 4649 href="/pages/our-story" 4650 class="mobileNav__accordionLink" 4651 data-sg-track="true" 4652 data-sg-label="our-story" 4653 data-sg-section="header" 4654 data-sg-sub-section="about-us-submenu" 4655 data-element-type="page" 4656 > 4657 Our Story 4658 </a> 4659 </li> 4660 4661 <li class="mobileNav__accordionItem"> 4662 <a 4663 href="https://www.drinktrade.com/pages/roasters" 4664 class="mobileNav__accordionLink" 4665 data-sg-track="true" 4666 data-sg-label="our-roasters" 4667 data-sg-section="header" 4668 data-sg-sub-section="about-us-submenu" 4669 data-element-type="page" 4670 > 4671 Our Roasters 4672 </a> 4673 </li> 4674 4675 <li class="mobileNav__accordionItem"> 4676 <a 4677 href="https://www.drinktrade.com/pages/blog" 4678 class="mobileNav__accordionLink" 4679 data-sg-track="true" 4680 data-sg-label="learn" 4681 data-sg-section="header" 4682 data-sg-sub-section="about-us-submenu" 4683 data-element-type="page" 4684 > 4685 Learn 4686 </a> 4687 </li> 4688 4689</ul> 4690 4691 4692 <div class="mobileNav__accordionPromotion"> 4693 4694 <div class="mobileNav__accordionPromotionItem"> 4695 <div class="mobileNav__accordionPromotionImage"> 4696 <a href="/blogs/culture" data-sg-label="coffee-101"> 4697 <img 4698 src="//www.drinktrade.com/cdn/shop/files/LS_trade_031725_7576_1_1.jpg?crop=center&height=236&v=1757952384&width=444" 4699 alt="Coffee 101" 4700 loading="lazy" 4701 > 4702 </a> 4703 </div> 4704 4705 <h6 class="mobileNav__accordionPromotionHeading">Coffee 101</h6> 4706 4707 4708 <p class="mobileNav__accordionPromotionText">Venture into all things coffee.</p> 4709 4710 </div> 4711 4712 4713 4714 <div class="mobileNav__accordionPromotionItem"> 4715 <div class="mobileNav__accordionPromotionImage"> 4716 <a href="/pages/espresso-hub" data-sg-label="explore-our-espresso-guide"> 4717 <img 4718 src="//www.drinktrade.com/cdn/shop/files/NavImage_Mobile.webp?crop=center&height=236&v=1784739778&width=444" 4719 alt="Explore our espresso guide" 4720 loading="lazy" 4721 > 4722 </a> 4723 </div> 4724 4725 <h6 class="mobileNav__accordionPromotionHeading">Explore our espresso guide</h6> 4726 4727 4728 <p class="mobileNav__accordionPromotionText">Get tips and techniques to help you brew with confidence.</p> 4729 4730 </div> 4731 4732 </div> 4733 4734 4735</div></li> 4736 4737 4738 <li class="mobileNav__linkItem"> 4739 <a 4740 href="/pages/subscribe" 4741 class="mobileNav__linkList" 4742 data-sg-label="subscribe"> 4743 Subscribe 4744</a></li> 4745 4746 4747 </ul> 4748 4749 4750 <div class="mobileNav__cta"> 4751 <a 4752 href="/pages/find-my-match" 4753 class="btn btn-black mobileNav__ctaBtn" 4754 data-sg-track="true" 4755 data-sg-label="build-my-trial" 4756 data-sg-location="Find My Match Quiz" 4757 data-sg-section="mobile-nav" 4758 data-sg-sub-section="mobile-menu" 4759 data-element-type="cta" 4760 > 4761 Build my trial 4762 </a> 4763 </div> 4764 4765 4766 </div> 4767 </div> 4768 </div> 4769</div> 4770 4771 4772<div 4773 id="account-modal-settings" 4774 style="display: none;" 4775 data-login-heading="Log in to your account" 4776 data-login-subheading="Enter your account details to access your dashboard and coffee preferences." 4777 data-signup-heading="Create your account" 4778 data-signup-subheading="Join Trade to easily manage your dashboard, update coffee preferences, edit deliveries, and more!" 4779 data-forgot-heading="Reset your password" 4780 data-forgot-subheading="Enter your email and we'll send you a link to reset your password." 4781></div> 4782 4783 4784</div>
4785<main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1"> 4786 <div id="shopify-section-template--27489131954495__quiz_app_hnjkmF" class="shopify-section">
4786<script> 4787 window.quizConfig = { 4788 combinedBagSelector: false, 4789 subscriptionBuilderMode: "multi_page_regular", 4790 classicSubscriptionProductId: null, 4791 premiumSubscriptionProductId: null, 4792 classicSubscriptionProductPrice: 0.0, 4793 premiumSubscriptionProductPrice: 0.0, 4794 classicPrepayHackProductId: null, 4795 premiumPrepayHackProductId: null, 4796 assetBase: "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/", 4797 promoBanner: { 4798 text: "Free bag of coffee with our Discovery Trial", 4799 bgColor: "#ebff88", 4800 textColor: "#252525", 4801 }, 4802 prepayTiers: { 4803 standardPayPerFreeShipping: false, 4804 standardTier1Discount: 0.2, 4805 standardTier2Discount: 0.4, 4806 doubleStandardPayPerFreeShipping: true, 4807 doubleStandardTier1Discount: 0.2, 4808 doubleStandardTier2Discount: 0.4, 4809 twoLbPayPerFreeShipping: true, 4810 twoLbTier1Discount: 0.2, 4811 twoLbTier2Discount: 0.4, 4812 }, 4813 discountConfigs: { 4814 standard_three: { signature: "3d124bcf168b10fee7ff9bffcd09a97064716051", value: 20, type: 'percentage', message: "20% off + free shipping", limit: 1 },
4815 standard_six: { signature: "f1a7eefa4fa0ebe3df80ad40a48703b3414163dc", value: 40, type: 'percentage', message: "40% off + free shipping", limit: 1 }, 4816 double_standard_three: { signature: "bf1d73247d8d5fd5955d536889667bc7b26b2747", value: 20, type: 'percentage', message: "20% off + free shipping", limit: 2 }, 4817 double_standard_six: { signature: "914a0a49ac4a870fea537deda25d96f56892fbb0", value: 40, type: 'percentage', message: "40% off + free shipping", limit: 2 }, 4818 two_lb_three: { signature: "bf1d73247d8d5fd5955d536889667bc7b26b2747", value: 20, type: 'percentage', message: "20% off + free shipping", limit: 2 }, 4819 two_lb_six: { signature: "914a0a49ac4a870fea537deda25d96f56892fbb0", value: 40, type: 'percentage', message: "40% off + free shipping", limit: 2 }, 4820 }, 4821 shippingConfig: { signature: "419788ed593a8c11c1291720ac725532ec04f639", blockId: "quiz_free_shipping", value: true }, 4822 pricingTier: { 4823 enabled: true, 4824 gatingDisabled: true,mobileLayout: "toggle", 4825 signatureBadgePersonalized: "Recommended for you", 4826 essential: { 4827 name: "Essential", 4828 coffeeCount: "150+", 4829 roasterCount: 30, 4830 whatsIncluded: "A new coffee youâll love with each delivery\nRoasted to order for peak freshness", 4831 promoMessaging: "Start your coffee journey with balanced, well-loved classicsâan easy way to explore what Trade has to offer.", 4832 badge: "", 4833 }, 4834 signature: { 4835 name: "Signature", 4836 coffeeCount: "500+", 4837 roasterCount: 55, 4838 promoMessaging: "Go beyond the basics with our full range of coffees, from adventurous single origins to decafs and espressos.", 4839 badge: "Most popular",whatsIncluded: "Access 180+ single origins, updated weekly\nExplore adventurous coffees \u0026 seasonal releases\nUnlock more espresso \u0026 decaf options", 4840 }, 4841 }, 4842 espressoBranched: { 4843 enabled: true, 4844 }, 4845 // Per-file asset URLs that include the `?v=<modified_time>` cache-bust 4846 // (assetBase deliberately strips it, which is fine for stable assets 4847 // but breaks the browser cache for any file whose content gets 4848 // replaced under the same filename â like the branched-quiz intent 4849 // images and the swapped Moka Pot icon). 4850 quizAssetUrls: { 4851 'quiz-intent-brewed.png': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-intent-brewed.png?v=167958451262979157131789675682", 4852 'quiz-intent-espresso.png': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-intent-espresso.png?v=14295433266180846381789675682", 4853 'quiz-espresso-machine.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-espresso-machine.svg?v=166870017327608665211789670861", 4854 'brew-cold-brew.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-cold-brew.svg?v=12606041987637483261789670831", 4855 'brew-moka-pot.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-moka-pot.svg?v=74750273230240012411789670830", 4856 'quiz-location-icon.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-location-icon.svg?v=53341661290541587671789670863", 4857 'quiz-reviews-icon.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-reviews-icon.svg?v=112771684609512876131789670863", 4858 // Imagery lifted out of the JS bundle: the world-map backdrop behind the 4859 // origin maps, the reveal loader's US states geometry, and the 14 4860 // Design-System flavor-category icons. 4861 'quiz-world-continents.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-world-continents.svg?v=69304439031631811661789670862", 4862 'quiz-us-states.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-us-states.svg?v=84903894520868569531789670864", 4863 'quiz-flavor-berry-fruit.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-berry-fruit.svg?v=98762958165014399121789670861", 4864 'quiz-flavor-brown-sugar.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-brown-sugar.svg?v=11960334023735233601789670862", 4865 'quiz-flavor-citrus.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-citrus.svg?v=98548115797749927211789670862", 4866 'quiz-flavor-earthiness.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-earthiness.svg?v=50375908625038505021789670863", 4867 'quiz-flavor-florals.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-florals.svg?v=44963994435065611991789670864", 4868 'quiz-flavor-fresh-herb.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-fresh-herb.svg?v=150607185982748253361789670860", 4869 'quiz-flavor-milk-chocolate.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-milk-chocolate.svg?v=167543783734695750771789670861", 4870 'quiz-flavor-nut.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-nut.svg?v=70760651502088748451789670861", 4871 'quiz-flavor-ripe-fruit.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-ripe-fruit.svg?v=1707940193261013221789670862", 4872 'quiz-flavor-roastiness.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-roastiness.svg?v=96804046202412280621789670862", 4873 'quiz-flavor-savoriness.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-savoriness.svg?v=63830588873619514451789670863", 4874 'quiz-flavor-spice.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-spice.svg?v=155114319468968092521789670863", 4875 'quiz-flavor-sweet-vanilla.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-sweet-vanilla.svg?v=49381977623662317891789670864", 4876 'quiz-flavor-tropical-fruit.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-flavor-tropical-fruit.svg?v=99423233257195993111789670864", 4877 // Already in Shopify assets, but were resolving through the un-cache-busted 4878 // assetBase fallback: the quiz logo lockup, the brew-method icons and 4879 // the Profile Reveal value-prop icons. 4880 'logos.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/logos.svg?v=132696985408093144811789670859", 4881 'brew-drip.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-drip.svg?v=144341049699429923411789670832", 4882 'brew-espresso.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-espresso.svg?v=16856703635738165841789670828", 4883 'brew-french-press.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-french-press.svg?v=140009584876721692501789670829", 4884 'brew-pourover.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-pourover.svg?v=56617631107919985541789670832", 4885 'brew-aeropress.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/brew-aeropress.svg?v=81867866561007485751789670830", 4886 'tailored-to-your-taste-charcoal.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/tailored-to-your-taste-charcoal.svg?v=116948872125123968031789670873", 4887 'roasted-to-order-always-charcoal.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/roasted-to-order-always-charcoal.svg?v=81544657799946923331789670865", 4888 'risk-free-charcoal.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/risk-free-charcoal.svg?v=115602272698015548391789670862", 4889 }, 4890 }; 4891</script>
4891 4892<link href="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.page.quiz.css?v=145856553445927932471789670840" rel="stylesheet" type="text/css" media="all" /> 4893 4894<div id="quiz-app"></div> 4895 4896<style data-shopify> 4897 #shopify-section-header header.header { 4898 display: none; 4899 } 4900 4901 #shopify-section-footer { 4902 display: none; 4903 } 4904 4905 #shopify-section-announcement { 4906 display: none; 4907 } 4908</style>
4909<script defer src="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.page.quiz.js?v=48935622743110601691790173848"></script>
4909 4910 4911 4912</div><div id="shopify-section-template--27489131954495__subscription_builder_harness_AwEPYe" class="shopify-section"><div 4913 data-sb-harness 4914 4915 data-subscription-product-id="10539310350655" 4916 class="max-w-[760px] mx-auto px-5 py-10" 4917><div data-subscription-builder-root></div>
4917<script type="application/json" data-sb-config> 4918{"experience":"discovery_trail","products":{"classic":10539308712255,"premium":10539310350655},"prepayBadges":{"tier1":"First Bag Free + free shipping","tier2":"First 2 Bags Free + free shipping"}} 4919</script>
4919 4920</div>
4920<script> 4921 window.quizConfig = window.quizConfig || {}; 4922 // Presence of the Subscription Builder section IS the shared-builder 4923 // activation signal â there is no per-host "Use shared Subscription Builder" 4924 // toggle anymore. This snippet merges over the host's quiz-config, so setting 4925 // this flag flips the quiz (order_bags step) and collection-detail-v2 4926 // ("Choose this plan") onto the shared <SubscriptionBuilder>. Drop the section 4927 // and the host falls back to its legacy flow (flag absent â falsy). 4928 window.quizConfig.useSubscriptionBuilder = true; 4929 window.quizConfig.classicSubscriptionProductId = 10539308712255; 4930 window.quizConfig.classicSubscriptionProductPrice = 16.99; 4931 4932 window.quizConfig.premiumSubscriptionProductId = 10539310350655; 4933 window.quizConfig.premiumSubscriptionProductPrice = 21.99; 4934 // The "Prepay 2/4 hack product" is retired: 2/4 prepay is now a native 4935 // selling plan on the subscription products above. This snippet is the 4936 // source of truth wherever the Subscription Builder section is placed, and it 4937 // runs AFTER any host's quiz-config â so actively null the hack ids (not just 4938 // omit them) to clear a stale value a host may have set and guarantee no cart 4939 // path falls back to the obsolete hack products. 4940 window.quizConfig.classicPrepayHackProductId = null; 4941 window.quizConfig.premiumPrepayHackProductId = null;window.quizConfig.assetBase = window.quizConfig.assetBase || "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/"; 4942 window.quizConfig.quizAssetUrls = window.quizConfig.quizAssetUrls || { 4943 'quiz-location-icon.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-location-icon.svg?v=53341661290541587671789670863", 4944 'quiz-reviews-icon.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-reviews-icon.svg?v=112771684609512876131789670863",'quiz-us-states.svg': "\/\/www.drinktrade.com\/cdn\/shop\/t\/2106\/assets\/quiz-us-states.svg?v=84903894520868569531789670864", 4945 }; 4946 window.quizConfig.prepayTiers = { 4947 discountMode: "free_bags", 4948 priceDisplay: "total",standardTier1Orders: 3, 4949 standardTier2Orders: 6, 4950 doubleStandardTier1Orders: 2, 4951 doubleStandardTier2Orders: 4, 4952 twoLbTier1Orders: 2, 4953 twoLbTier2Orders: 4, 4954 tier1Discount: 0.0, 4955 tier2Discount: 0.0, 4956 tier1FreeBags: 1, 4957 tier2FreeBags: 2, 4958 tier1DollarOff: 0, 4959 tier2DollarOff: 0, 4960 standardPayPerFreeShipping: false, 4961 standardTier1Discount: 0.0, 4962 standardTier2Discount: 0.0, 4963 doubleStandardPayPerFreeShipping: true, 4964 doubleStandardTier1Discount: 0.0, 4965 doubleStandardTier2Discount: 0.0, 4966 twoLbPayPerFreeShipping: true, 4967 twoLbTier1Discount: 0.0, 4968 twoLbTier2Discount: 0.0, 4969 standardTier1FreeBags: 1, 4970 standardTier2FreeBags: 2, 4971 doubleStandardTier1FreeBags: 1, 4972 doubleStandardTier2FreeBags: 2, 4973 twoLbTier1FreeBags: 1, 4974 twoLbTier2FreeBags: 2, 4975 standardTier1DollarOff: 0, 4976 standardTier2DollarOff: 0, 4977 doubleStandardTier1DollarOff: 0, 4978 doubleStandardTier2DollarOff: 0, 4979 twoLbTier1DollarOff: 0, 4980 twoLbTier2DollarOff: 0, 4981 }; 4982 window.quizConfig.discountConfigs = { "standard_three_classic":{"signature":"73cddef77338b2ee96cb9feab101f2395eace65b","value":"16.99","type":"fixedAmount","message":"First Bag Free + free shipping","limit":1},"standard_three_premium":{"signature":"f7727a8cf2844e1c9e724ebcbeaa47f130d00eaf","value":"21.99","type":"fixedAmount","message":"First Bag Free + free shipping","limit":1},"standard_six_classic":{"signature":"3fc864ae0949159d8f9598e0e8c7346663349d76","value":"33.98","type":"fixedAmount","message":"First 2 Bags Free + free shipping","limit":1},"standard_six_premium":{"signature":"4887af1bc5cae81f009e79c24d63220b4fe51468","value":"43.98","type":"fixedAmount","message":"First 2 Bags Free + free shipping","limit":1},"double_standard_three_classic":{"signature":"73cddef77338b2ee96cb9feab101f2395eace65b","value":"16.99","type":"fixedAmount","message":"First Bag Free + free shipping","limit":1},"double_standard_three_premium":{"signature":"f7727a8cf2844e1c9e724ebcbeaa47f130d00eaf","value":"21.99","type":"fixedAmount","message":"First Bag Free + free shipping","limit":1},"double_standard_six_classic":{"signature":"3fc864ae0949159d8f9598e0e8c7346663349d76","value":"33.98","type":"fixedAmount","message":"First 2 Bags Free + free shipping","limit":1},"double_standard_six_premium":{"signature":"4887af1bc5cae81f009e79c24d63220b4fe51468","value":"43.98","type":"fixedAmount","message":"First 2 Bags Free + free shipping","limit":1},"two_lb_three_classic":{"signature":"51a80782fa275733ee6447d30dd772ad192986cc","value":"39.99","type":"fixedAmount","message":"First Bag Free + free shipping","limit":1},"two_lb_three_premium":{"signature":"a056ddc7a8d618321418b62666529c2936c8ca10","value":"49.99","type":"fixedAmount","message":"First Bag Free + free shipping","limit":1},"two_lb_six_classic":{"signature":"c56987c75ad246010b5a0beeb9d3e758d5ecd2ab","value":"79.98","type":"fixedAmount","message":"First 2 Bags Free + free shipping","limit":1},"two_lb_six_premium":{"signature":"a1871ffc68e469cfbdaca966ecebea494510065c","value":"99.98","type":"fixedAmount","message":"First 2 Bags Free + free shipping","limit":1}, }; 4983 window.quizConfig.shippingConfig = { signature: "419788ed593a8c11c1291720ac725532ec04f639", blockId: "quiz_free_shipping", value: true }; 4984</script>
vendor: 1 bytes, line 4984
4984
4985<script 4986 defer 4987 src="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.section.subscription-builder-harness.js?v=46115488430291570931790173856" 4988></script>
4988 4989</div><div id="shopify-section-template--27489131954495__active_subscriber_redirect_XaJm7R" class="shopify-section"> 4990 4991 4992</div> 4993 </main><div id="shopify-section-footer" class="shopify-section">
4994<script> 4995 if (!document.querySelector('link[href="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.section.tailwind.css?v=178082145445371909981790173858"]')) { 4996 const link = document.createElement('link'); 4997 link.setAttribute('rel', 'stylesheet'); 4998 link.setAttribute('href', '//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.section.tailwind.css?v=178082145445371909981790173858'); 4999 document.head.appendChild(link); 5000 } 5001</script>
5001 5002 5003<footer class="bg-charcoal-600 text-charcoal-100 pt-[52px] px-4 pb-[40px] md:pt-[62px] md:px-7 md:pb-[40px] xl:py-14 xl:px-11 3xl:px-[124px]"> 5004 <div class="max-w-[1920px] mx-auto"> 5005 <div class="mb-16 md:mb-[93px] xl:flex xl:justify-between xl:mb-16"> 5006 <div class="flex flex-wrap lg:gap-x-6 xl:w-auto xl:flex-nowrap xl:gap-12 2xl:gap-14"> 5007 5008 <div class="w-1/2 mb-[50px] [&:nth-child(n+3)]:mb-0 md:w-[170px] md:mb-0"> 5009 <h6 class="font-serif text-xl font-light leading-6 xl:leading-[22px] text-charcoal-100 mb-7">Shop</h6> 5010 <ul class="list-none m-0 p-0"><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5011 5012 <a 5013 href="/collections/all" 5014 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5015 data-sg-track="true" 5016 data-sg-label="all-coffee" 5017 5018 data-sg-location="find-my-match-quiz-page" 5019 5020 data-sg-section="footer" 5021 data-sg-sub-section="menu" 5022 data-element-type="page" 5023 > 5024 All Coffee 5025 </a> 5026 5027 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5028 5029 <a 5030 href="/collections/equipment" 5031 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5032 data-sg-track="true" 5033 data-sg-label="equipment" 5034 5035 data-sg-location="find-my-match-quiz-page" 5036 5037 data-sg-section="footer" 5038 data-sg-sub-section="menu" 5039 data-element-type="page" 5040 > 5041 Equipment 5042 </a> 5043 5044 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5045 5046 <a 5047 href="/pages/gifts" 5048 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5049 data-sg-track="true" 5050 data-sg-label="coffee-gifts" 5051 5052 data-sg-location="find-my-match-quiz-page" 5053 5054 data-sg-section="footer" 5055 data-sg-sub-section="menu" 5056 data-element-type="page" 5057 > 5058 Coffee Gifts 5059 </a> 5060 5061 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5062 5063 <a 5064 href="/pages/refer-a-friend" 5065 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5066 data-sg-track="true" 5067 data-sg-label="refer-a-friend" 5068 5069 data-sg-location="find-my-match-quiz-page" 5070 5071 data-sg-section="footer" 5072 data-sg-sub-section="menu" 5073 data-element-type="page" 5074 > 5075 Refer a Friend 5076 </a> 5077 5078 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5079 5080 <a 5081 href="https://www.studentbeans.com/en-us/us/beansid-connect/hosted/trade-coffee" 5082 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5083 data-sg-track="true" 5084 data-sg-label="student-discounts" 5085 5086 data-sg-location="find-my-match-quiz-page" 5087 5088 data-sg-section="footer" 5089 data-sg-sub-section="menu" 5090 data-element-type="page" 5091 > 5092 Student Discounts 5093 </a> 5094 5095 </li></ul> 5096 </div> 5097 5098 <div class="w-1/2 mb-[50px] [&:nth-child(n+3)]:mb-0 md:w-[170px] md:mb-0"> 5099 <h6 class="font-serif text-xl font-light leading-6 xl:leading-[22px] text-charcoal-100 mb-7">Learn</h6> 5100 <ul class="list-none m-0 p-0"><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5101 5102 <a 5103 href="/blogs/how-to" 5104 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5105 data-sg-track="true" 5106 data-sg-label="brewing-how-tos" 5107 5108 data-sg-location="find-my-match-quiz-page" 5109 5110 data-sg-section="footer" 5111 data-sg-sub-section="menu" 5112 data-element-type="page" 5113 > 5114 Brewing How-To's 5115 </a> 5116 5117 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5118 5119 <a 5120 href="/pages/blog" 5121 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5122 data-sg-track="true" 5123 data-sg-label="blog" 5124 5125 data-sg-location="find-my-match-quiz-page" 5126 5127 data-sg-section="footer" 5128 data-sg-sub-section="menu" 5129 data-element-type="page" 5130 > 5131 Blog 5132 </a> 5133 5134 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5135 5136 <a 5137 href="/pages/roasters" 5138 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5139 data-sg-track="true" 5140 data-sg-label="our-roasters" 5141 5142 data-sg-location="find-my-match-quiz-page" 5143 5144 data-sg-section="footer" 5145 data-sg-sub-section="menu" 5146 data-element-type="page" 5147 > 5148 Our Roasters 5149 </a> 5150 5151 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5152 5153 <a 5154 href="/pages/find-my-match" 5155 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5156 data-sg-track="true" 5157 data-sg-label="take-the-quiz" 5158 5159 data-sg-location="find-my-match-quiz-page" 5160 5161 data-sg-section="footer" 5162 data-sg-sub-section="menu" 5163 data-element-type="page" 5164 > 5165 Take the Quiz 5166 </a> 5167 5168 </li></ul> 5169 </div> 5170 5171 <div class="w-1/2 mb-[50px] [&:nth-child(n+3)]:mb-0 md:w-[170px] md:mb-0"> 5172 <h6 class="font-serif text-xl font-light leading-6 xl:leading-[22px] text-charcoal-100 mb-7">Support</h6> 5173 <ul class="list-none m-0 p-0"><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5174 5175 <a 5176 href="https://trade-coffee.gorgias.help/en-US/articles/frequently-asked-questions-93360" 5177 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5178 data-sg-track="true" 5179 data-sg-label="faqs" 5180 5181 data-sg-location="find-my-match-quiz-page" 5182 5183 data-sg-section="footer" 5184 data-sg-sub-section="menu" 5185 data-element-type="page" 5186 > 5187 FAQs 5188 </a> 5189 5190 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5191 5192 <a 5193 href="/pages/contact-us" 5194 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5195 data-sg-track="true" 5196 data-sg-label="contact-us" 5197 5198 data-sg-location="find-my-match-quiz-page" 5199 5200 data-sg-section="footer" 5201 data-sg-sub-section="menu" 5202 data-element-type="page" 5203 > 5204 Contact Us 5205 </a> 5206 5207 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5208
5209 <span class="text-charcoal-100 font-sans text-base font-normal leading-normal">Mon-Fri 9-5 PM EST</span> 5210 5211 </li></ul> 5212 </div> 5213 5214 <div class="w-1/2 mb-[50px] [&:nth-child(n+3)]:mb-0 md:w-[170px] md:mb-0"> 5215 <h6 class="font-serif text-xl font-light leading-6 xl:leading-[22px] text-charcoal-100 mb-7">Company</h6> 5216 <ul class="list-none m-0 p-0"><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5217 5218 <a 5219 href="/pages/our-story" 5220 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5221 data-sg-track="true" 5222 data-sg-label="about-us" 5223 5224 data-sg-location="find-my-match-quiz-page" 5225 5226 data-sg-section="footer" 5227 data-sg-sub-section="menu" 5228 data-element-type="page" 5229 > 5230 About Us 5231 </a> 5232 5233 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5234 5235 <a 5236 href="/a/careers" 5237 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5238 data-sg-track="true" 5239 data-sg-label="careers" 5240 5241 data-sg-location="find-my-match-quiz-page" 5242 5243 data-sg-section="footer" 5244 data-sg-sub-section="menu" 5245 data-element-type="page" 5246 > 5247 Careers 5248 </a> 5249 5250 </li><li class="mb-[19px] md:mb-4 xl:mb-5 last:mb-0"> 5251 5252 <a 5253 href="https://form.typeform.com/to/roOgS3" 5254 class="no-underline text-charcoal-100 font-sans text-base font-normal leading-normal hover:underline hover:text-charcoal-100" 5255 data-sg-track="true" 5256 data-sg-label="roaster-submissions" 5257 5258 data-sg-location="find-my-match-quiz-page" 5259 5260 data-sg-section="footer" 5261 data-sg-sub-section="menu" 5262 data-element-type="page" 5263 > 5264 Roaster Submissions 5265 </a> 5266 5267 </li></ul> 5268 </div> 5269 5270 </div> 5271 <div class="mt-[78px] md:mt-[70px] xl:w-[324px] xl:shrink-0 xl:mt-0"> 5272 <div> 5273 5274 <h4 class="font-serif text-[32px] md:text-4xl font-medium leading-[34px] md:leading-none tracking-[-0.96px] md:tracking-[-1.08px] text-charcoal-100 mb-[21px] md:mb-[23px]">Sign up for email updates</h4> 5275 5276 <div class="footer__form w-full border-b border-charcoal-400 pb-[5px] xl:pb-0 mb-[30px] xl:mb-[19px]" id="footer__form"> 5277 <div class="klaviyo-form-Xp9YtH"></div> 5278 </div> 5279 </div> 5280 5281 <div class="flex items-center gap-8 [&_a]:flex [&_a]:items-center [&_a]:justify-center [&_a]:w-6 [&_a]:h-6 [&_svg]:w-6 [&_svg]:h-6"> 5282 5283 <a 5284 target="_blank" 5285 href="https://www.facebook.com/tradecoffeeco" 5286 title="Facebook" 5287 aria-label="Facebook" 5288 data-sg-track="true" 5289 data-sg-label="facebook" 5290 5291 data-sg-location="find-my-match-quiz-page" 5292 5293 data-sg-section="footer" 5294 data-sg-sub-section="social-menu" 5295 > 5296 <svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 5297 <g clip-path="url(#clip0_730_1106)"> 5298 <path fill-rule="evenodd" clip-rule="evenodd" d="M24 12.1499C24 5.52248 18.6274 0.149902 12 0.149902C5.37258 0.149902 0 5.52248 0 12.1499C0 18.1395 4.38823 23.1039 10.125 24.0041V15.6187H7.07812V12.1499H10.125V9.50615C10.125 6.49865 11.9165 4.8374 14.6576 4.8374C15.9705 4.8374 17.3438 5.07178 17.3438 5.07178V8.0249H15.8306C14.3399 8.0249 13.875 8.94991 13.875 9.89889V12.1499H17.2031L16.6711 15.6187H13.875V24.0041C19.6118 23.1039 24 18.1395 24 12.1499Z" fill="white"/> 5299 </g> 5300 <defs> 5301 <clipPath id="clip0_730_1106"> 5302 <rect width="24" height="23.86" fill="white" transform="translate(0 0.149902)"/> 5303 </clipPath> 5304 </defs> 5305 </svg> 5306 </a> 5307 5308 5309 <a 5310 target="_blank" 5311 href="https://www.instagram.com/tradecoffeeco/" 5312 title="Instagram" 5313 aria-label="Instagram" 5314 data-sg-track="true" 5315 data-sg-label="instagram" 5316 5317 data-sg-location="find-my-match-quiz-page" 5318 5319 data-sg-section="footer" 5320 data-sg-sub-section="social-menu" 5321 data-element-type="cta" 5322 >
5323 <svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 5324 <g clip-path="url(#clip0_730_1109)"> 5325 <path d="M12 2.3129C15.204 2.3129 15.584 2.3249 16.85 2.3829C20.102 2.5309 21.621 4.0739 21.769 7.3019C21.827 8.5669 21.838 8.9469 21.838 12.1509C21.838 15.3559 21.826 15.7349 21.769 16.9999C21.62 20.2249 20.105 21.7709 16.85 21.9189C15.584 21.9769 15.206 21.9889 12 21.9889C8.796 21.9889 8.416 21.9769 7.151 21.9189C3.891 21.7699 2.38 20.2199 2.232 16.9989C2.174 15.7339 2.162 15.3549 2.162 12.1499C2.162 8.9459 2.175 8.5669 2.232 7.3009C2.381 4.0739 3.896 2.5299 7.151 2.3819C8.417 2.3249 8.796 2.3129 12 2.3129ZM12 0.149902C8.741 0.149902 8.333 0.163902 7.053 0.221902C2.695 0.421902 0.273 2.8399 0.073 7.2019C0.014 8.4829 0 8.8909 0 12.1499C0 15.4089 0.014 15.8179 0.072 17.0979C0.272 21.4559 2.69 23.8779 7.052 24.0779C8.333 24.1359 8.741 24.1499 12 24.1499C15.259 24.1499 15.668 24.1359 16.948 24.0779C21.302 23.8779 23.73 21.4599 23.927 17.0979C23.986 15.8179 24 15.4089 24 12.1499C24 8.8909 23.986 8.4829 23.928 7.2029C23.732 2.8489 21.311 0.422902 16.949 0.222902C15.668 0.163902 15.259 0.149902 12 0.149902ZM12 5.9879C8.597 5.9879 5.838 8.7469 5.838 12.1499C5.838 15.5529 8.597 18.3129 12 18.3129C15.403 18.3129 18.162 15.5539 18.162 12.1499C18.162 8.7469 15.403 5.9879 12 5.9879ZM12 16.1499C9.791 16.1499 8 14.3599 8 12.1499C8 9.9409 9.791 8.1499 12 8.1499C14.209 8.1499 16 9.9409 16 12.1499C16 14.3599 14.209 16.1499 12 16.1499ZM18.406 4.3049C17.61 4.3049 16.965 4.9499 16.965 5.7449C16.965 6.5399 17.61 7.1849 18.406 7.1849C19.201 7.1849 19.845 6.5399 19.845 5.7449C19.845 4.9499 19.201 4.3049 18.406 4.3049Z" fill="white"/> 5326 </g> 5327 <defs> 5328 <clipPath id="clip0_730_1109"> 5329 <rect width="24" height="24" fill="white" transform="translate(0 0.149902)"/> 5330 </clipPath> 5331 </defs> 5332 </svg> 5333 </a> 5334 5335 5336 5337 <a 5338 target="_blank" 5339 href="https://cffe.me/3bun17q" 5340 title="Youtube" 5341 aria-label="Youtube" 5342 data-sg-track="true" 5343 data-sg-label="youtube" 5344 5345 data-sg-location="find-my-match-quiz-page" 5346 5347 data-sg-section="footer" 5348 data-sg-sub-section="social-menu" 5349 data-element-type="cta" 5350 > 5351 <svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 5352 <g clip-path="url(#clip0_730_1115)"> 5353 <path d="M19.615 3.33391C16.011 3.08791 7.984 3.08891 4.385 3.33391C0.488 3.59991 0.029 5.95391 0 12.1499C0.029 18.3349 0.484 20.6989 4.385 20.9659C7.985 21.2109 16.011 21.2119 19.615 20.9659C23.512 20.6999 23.971 18.3459 24 12.1499C23.971 5.96491 23.516 3.60091 19.615 3.33391ZM9 16.1499V8.14991L17 12.1429L9 16.1499Z" fill="white"/> 5354 </g> 5355 <defs> 5356 <clipPath id="clip0_730_1115"> 5357 <rect width="24" height="24" fill="white" transform="translate(0 0.149902)"/> 5358 </clipPath> 5359 </defs> 5360 </svg> 5361 </a> 5362 5363 </div> 5364 5365 </div> 5366 </div> 5367 <div class="md:flex md:flex-row-reverse md:items-end xl:flex-row xl:justify-between"> 5368 <div class="mb-10 md:mb-0 md:ml-auto md:text-right xl:ml-0 xl:text-left"> 5369 <div class="flex flex-wrap gap-2 gap-x-6 md:gap-x-4 md:justify-end xl:justify-start xl:gap-x-8 mb-[5px] md:mb-1 xl:mb-2"> 5370 5371 5372 <a 5373 href="/pages/commercial-terms" 5374 class="text-sm xl:text-base leading-[1.6] xl:leading-normal font-normal text-charcoal-100 no-underline hover:underline hover:text-charcoal-100" 5375 data-sg-track="true" 5376 data-sg-label="terms" 5377 5378 data-sg-location="find-my-match-quiz-page" 5379 5380 data-sg-section="footer" 5381 data-sg-sub-section="menu" 5382 data-element-type="page" 5383 > 5384 Terms 5385 </a> 5386 5387 5388 5389 <a 5390 href="/policies/privacy-policy" 5391 class="text-sm xl:text-base leading-[1.6] xl:leading-normal font-normal text-charcoal-100 no-underline hover:underline hover:text-charcoal-100" 5392 data-sg-track="true" 5393 data-sg-label="privacy" 5394 5395 data-sg-location="find-my-match-quiz-page" 5396 5397 data-sg-section="footer" 5398 data-sg-sub-section="menu" 5399 data-element-type="page" 5400 > 5401 Privacy 5402 </a> 5403 5404 5405 5406 <a 5407 href="/pages/california-privacy-notice" 5408 class="text-sm xl:text-base leading-[1.6] xl:leading-normal font-normal text-charcoal-100 no-underline hover:underline hover:text-charcoal-100" 5409 data-sg-track="true" 5410 data-sg-label="ccpa" 5411 5412 data-sg-location="find-my-match-quiz-page" 5413 5414 data-sg-section="footer" 5415 data-sg-sub-section="menu" 5416 data-element-type="page" 5417 > 5418 CCPA 5419 </a> 5420 5421 5422 5423 <a 5424 href="/pages/california-privacy-notice#do-not-sell" 5425 class="text-sm xl:text-base leading-[1.6] xl:leading-normal font-normal text-charcoal-100 no-underline hover:underline hover:text-charcoal-100" 5426 data-sg-track="true"
5427 data-sg-label="do-not-sell-my-personal-information" 5428 5429 data-sg-location="find-my-match-quiz-page" 5430 5431 data-sg-section="footer" 5432 data-sg-sub-section="menu" 5433 data-element-type="page" 5434 > 5435 Do Not Sell My Personal Information 5436 </a> 5437 5438 5439 </div> 5440 <p class="text-sm xl:text-base leading-[1.6] xl:leading-normal font-normal text-charcoal-100 m-0 md:text-right xl:text-left"> 5441 <span>Copyright</span> © Seed Leaf Inc. 2026 All Rights Reserved 5442 </p> 5443 </div> 5444 5445 <div class="max-w-[343px] mt-[53px] md:w-[417px] md:max-w-none md:mr-auto md:mt-0 xl:max-w-[355px] xl:w-auto xl:mr-0 xl:ml-auto 2xl:max-w-[403px] [&_svg]:w-full [&_svg]:h-auto" data-footer-logo> 5446 <svg width="343" height="115" viewbox="0 0 343 115" fill="none" xmlns="http://www.w3.org/2000/svg"> 5447<path fill-rule="evenodd" clip-rule="evenodd" d="M4.18292 6.86847V28.3621H21.6993V112.622H44.1092V28.3621H61.6256V6.86847H4.18292Z" fill="white"></path> 5448<mask id="mask0_747_1201" style="mask-type:luminance" maskunits="userSpaceOnUse" x="172" y="0" width="83" height="114"> 5449<path fill-rule="evenodd" clip-rule="evenodd" d="M172.475 0.9422H254.496V113.998H172.475V0.9422Z" fill="white"></path> 5450</mask> 5451<g mask="url(#mask0_747_1201)"> 5452<path fill-rule="evenodd" clip-rule="evenodd" d="M213.451 93.8704C225.051 93.8704 233.216 85.0411 233.216 71.6793C233.216 59.0244 225.617 49.4858 213.451 49.4858C201.35 49.4858 193.551 59.0973 193.551 71.6793C193.551 85.6064 202.277 93.8704 213.451 93.8704ZM234.731 104.525C230.25 110.449 221.734 113.998 212.585 113.998C189.349 113.998 172.475 96.5819 172.475 71.9832C172.475 48.3021 187.323 29.5106 211.858 29.5106C220.19 29.5106 227.627 31.9016 233.423 36.3139V0.9422H254.496V112.624H234.731V104.525Z" fill="white"></path> 5453</g> 5454<mask id="mask1_747_1201" style="mask-type:luminance" maskunits="userSpaceOnUse" x="262" y="29" width="77" height="85"> 5455<path fill-rule="evenodd" clip-rule="evenodd" d="M262.519 29.5116H338.815V113.997H262.519V29.5116Z" fill="white"></path> 5456</mask> 5457<g mask="url(#mask1_747_1201)"> 5458<path fill-rule="evenodd" clip-rule="evenodd" d="M285.046 62.5013H317.014C315.275 54.1019 310.01 48.453 300.633 48.453C292.707 48.453 286.474 54.0093 285.046 62.5013ZM284.609 79.6346C285.833 88.6673 292.491 94.1373 302.338 94.1373C310.856 94.1373 316.098 89.6649 320.168 82.9416L336.527 92.9695C330.356 105.499 317.833 113.998 302.338 113.998C278.795 113.998 262.519 97.955 262.519 71.9842C262.519 47.5398 278.214 29.5116 300.739 29.5116C324.136 29.5116 338.815 45.9255 338.815 70.3699C338.815 73.7901 338.685 76.9625 338.434 79.6346H284.609Z" fill="white"></path> 5459</g> 5460<path fill-rule="evenodd" clip-rule="evenodd" d="M133.833 96.2326C128.28 96.2326 123.779 91.5005 123.779 85.664C123.779 79.8266 128.28 75.0953 133.833 75.0953C139.385 75.0953 143.886 79.8266 143.886 85.664C143.886 91.5005 139.385 96.2326 133.833 96.2326ZM134.93 29.97C118.323 29.97 106.512 43.2963 106.512 56.1894H126.015C126.542 51.5167 130.14 47.6729 135.094 47.6729C140.43 47.6729 143.959 51.8065 143.959 57.4696V62.0347C140.768 60.1441 136.135 58.9977 130.97 58.9977C114.998 58.9977 104.23 72.4704 104.23 86.3579C104.23 103.157 116.7 113.693 131.101 113.693C138.058 113.693 143.404 111.258 146.866 107.429V112.623H164.741V59.924C164.741 40.8736 152.719 29.97 134.93 29.97Z" fill="white"></path> 5461<path fill-rule="evenodd" clip-rule="evenodd" d="M100.607 53.7091H95.6634C88.1068 53.7091 85.4936 57.5284 85.4936 64.5557V112.623L64.4279 112.623V30.887H85.4936V37.4559C88.2552 33.3319 92.6126 30.5814 100.607 30.5814V53.7091Z" fill="white"></path> 5462</svg> 5463 </div> 5464 5465 </div> 5466 </div> 5467</footer> 5468 5469 5470</div> 5471<!-- New Cart Drawer --> 5472 <vue-mini-cart 5473 data-add-on-discounts="[]" 5474 data-upsell-products="[ 5475 5476 { 5477 "product": { 5478 "id": 9920991953215, 5479 "title": "Hario Mizudashi Cold Brew Maker", 5480 "handle": "mizudashi-cold-brew-coffee-maker-black-1000ml", 5481 "featured_image": "\/\/www.drinktrade.com\/cdn\/shop\/files\/Hario_01.png?crop=center\u0026height=80\u0026v=1
5481750791899\u0026width=80", 5482 "price": 2950, 5483 "variants": [{"id":50570934649151,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"HARIOMCPN14BEX","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Hario Mizudashi Cold Brew Maker","public_title":null,"options":["Default Title"],"price":2950,"weight":907,"compare_at_price":null,"inventory_management":"shopify","barcode":"4977642164444","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}] 5484 }, 5485 "brand_name": "Hario" 5486 } 5487 , 5488 5489 { 5490 "product": { 5491 "id": 9917830693183, 5492 "title": "OXO Cold Brew Coffee Maker", 5493 "handle": "oxo-cold-brew-coffee-maker-40oz", 5494 "featured_image": "\/\/www.drinktrade.com\/cdn\/shop\/files\/OXOColdBrew02_1.png?crop=center\u0026height=80\u0026v=1750793326\u0026width=80", 5495 "price": 5999, 5496 "variants": [{"id":50550409462079,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"1272880","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"OXO Cold Brew Coffee Maker","public_title":null,"options":["Default Title"],"price":5999,"weight":3629,"compare_at_price":null,"inventory_management":"shopify","barcode":"719812037288","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}] 5497 }, 5498 "brand_name": "OXO" 5499 } 5500 , 5501 5502 { 5503 "product": { 5504 "id": 9917830758719, 5505 "title": "OXO Compact Cold Brew Maker", 5506 "handle": "oxo-compact-cold-brew-maker-24oz", 5507 "featured_image": "\/\/www.drinktrade.com\/cdn\/shop\/files\/OXO_Compact_Cold_Brew_02_1.png?crop=center\u0026height=80\u0026v=1750794427\u0026width=80", 5508 "price": 3999, 5509 "variants": [{"id":50550409494847,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"11237500","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"OXO Compact Cold Brew Maker","public_title":null,"options":["Default Title"],"price":3999,"weight":907,"compare_at_price":null,"inventory_management":"shopify","barcode":"719812685311","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}] 5510 }, 5511 "brand_name": "OXO" 5512 } 5513 , 5514 5515 { 5516 "product": { 5517 "id": 9924663968063, 5518 "title": "Toddy Essential Brewer", 5519 "handle": "toddy-essential-brewer", 5520 "featured_image": "\/\/www.drinktrade.com\/cdn\/shop\/files\/Toddy_03.png?crop=center\u0026height=80\u0026v=1750795973\u0026width=80", 5521 "price": 3999, 5522 "variants": [{"id":50602500096319,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"CER-TODDY","requires_shipping":true,"taxable":true,"featured_image":null,"available":false,"name":"Toddy Essential Brewer","public_title":null,"options":["Default Title"],"price":3999,"weight":1361,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}] 5523 }, 5524 "brand_name": "Toddy" 5525 } 5526 5527 5528 ]" 5529 data-upsell-title="""" 5530 data-force-mobile="true" 5531 data-upsell-offer-group="null" 5532 data-upsell-target-offer="null" 5533 data-empty-heading=""
5533Your cart is craving delicious coffee."" 5534 data-empty-button-text=""Shop Coffee"" 5535 data-empty-button-url=""\/collections\/all"" 5536 data-empty-background-image=""\/\/www.drinktrade.com\/cdn\/shop\/files\/Star_7.svg?v=1768508731\u0026width=480"" 5537 data-empty-icon=""\/\/www.drinktrade.com\/cdn\/shop\/files\/Ico-Coffee_d87007bd-3e01-4163-a2e7-70a51863d656.svg?v=1768508733\u0026width=80"" 5538 data-savings-icon=""\/\/www.drinktrade.com\/cdn\/shop\/files\/Ico-percentage_b17f45a9-ae53-4cea-9ec3-bdb6c998dd79.svg?v=1770738368\u0026width=32"" 5539></vue-mini-cart> 5540 5541<div class="search js-search-modal"> 5542 <div class="search__wrapper"> 5543 <div class="search__content"> 5544 <form class="search__form" action="/pages/search-results-page"> 5545 <input 5546 type="text" 5547 placeholder="Search coffee, roasters, and more" 5548 class="search__input" 5549 name="q" 5550 value="" 5551 > 5552 <button type="submit" class="search__button"> 5553 5554 5555 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 5556 <path d="M23.8403 20.0547C26.3394 16.4068 26.2021 11.4035 23.2013 7.87263C19.6073 3.64575 13.267 3.13188 9.04013 6.72484C4.81223 10.3198 4.29837 16.6591 7.89234 20.887C11.4853 25.1149 17.8256 25.6288 22.0535 22.0348L26.5 27.2659" stroke="#252525" stroke-width="1.61538" stroke-linecap="round" stroke-linejoin="round"/> 5557 </svg> 5558 5559 5560 5561 </button> 5562 </form> 5563 <a href="#" class="search__close js-search-close"> 5564 5565 5566 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 5567 <g clip-path="url(#clip0_114_4717)"> 5568 <path d="M18.3636 18.364L5.63566 5.63604M5.63566 18.364L18.3636 5.63604" stroke="#252525" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 5569 </g> 5570 <defs> 5571 <clipPath id="clip0_114_4717"> 5572 <rect width="24" height="24" fill="white" transform="translate(24 1.04907e-06) rotate(90)"/> 5573 </clipPath> 5574 </defs> 5575 </svg> 5576 5577 5578 5579 </a> 5580 </div> 5581 </div> 5582</div> 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593<div 5594 class="fixed top-0 left-0 w-full h-screen bg-[rgba(37,37,37,0.5)] md:bg-[rgba(26,26,26,0.8)] z-[102] overflow-y-auto opacity-0 invisible transition-all duration-100 pt-16 px-4 pb-4 md:pt-[118px] md:px-8 md:pb-8 xl:pt-20 js-account-modal" 5595 style="transition: opacity 0.1s ease-in, visibility 0.1s ease-out;" 5596 role="dialog" 5597 aria-modal="true" 5598 aria-labelledby="accountModalHeading-login" 5599> 5600 <div class="w-full max-w-[358px] md:w-[605px] md:max-w-none mx-auto bg-white px-6 py-10 md:px-16 md:py-10 rounded-24 shadow-[0px_100px_80px_0px_rgba(0,0,0,0.07),0px_64.815px_46.852px_0px_rgba(0,0,0,0.05),0px_38.519px_25.481px_0px_rgba(0,0,0,0.04),0px_20px_13px_0px_rgba(0,0,0,0.04),0px_8.148px_6.519px_0px_rgba(0,0,0,0.03),0px_1.852px_3.148px_0px_rgba(0,0,0,0.02)] "> 5601 <div class="mx-auto"> 5602 5603 <div class="flex items-start justify-between px-4 mb-10" role="tablist" aria-label="Account actions"> 5604 <div class="flex-1 flex flex-col gap-2.5 items-center cursor-pointer js-account-login-tab" data-tab="login" role="tab" aria-selected="true" aria-controls="accountModalPanel-login" tabindex="0"> 5605 <p class="text-body-14 font-bold text-charcoal-600 w-full text-center js-login-tab-text">Login</p> 5606 <div class="w-full h-0 relative"> 5607 <div class="absolute -top-0.5 left-0 right-0 h-0.5 bg-trade-red js-login-tab-indicator"></div> 5608 </div> 5609 </div> 5610 <div class="flex-1 flex flex-col gap-2.5 items-center cursor-pointer js-account-signup-tab" data-tab="signup" role="tab" aria-selected="false" aria-controls="accountModalPanel-signup" tabindex="-1"> 5611 <p class="text-body-14 text-charcoal-400 w-full text-center js-signup-tab-text">Sign up</p> 5612 <div class="w-full h-0 relative"> 5613 <div class="absolute -top-0.5 left-0 right-0 h-0.5 bg-charcoal-200 js-signup-tab-indicator"></div> 5614 </div> 5615 </div> 5616 </div> 5617 5618 5619 <div class="js-account-modal-login" id="accountModalPanel-login" role="tabpanel" aria-labelledby="accountModalHeading-login"> 5620 <div class="flex flex-col gap-2 items-start mb-8 text-center"> 5621 <h2 id="accountModalHeading-login" class="font-serif text-display-36 max-md:text-[28px] text-charcoal-600 w-full">Log in to your account</h2> 5622 <p class="text-body-16 max-md:text-[14px] text-charcoal-600 w-full">Enter your account details to access your dashboard and coffee preferences.</p> 5623 </div> 5624 5625 <div id="loginForm"> 5626 <form method="post" action="/account/login" id="customer_login" accept-charset="UTF-8" data-login-with-shop-sign-in="true"><input type="hidden" name="form_type" value="customer_login" /><input type="hidden" name="utf8" value="â" /> 5627 5628 <input type="hidden" name="return_to" value="/account?view=my_trade"> 5629 5630 5631 5632 5633 5634 5635 5636<div class="w-full mb-4"> 5637 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5638 <input 5639 type="email" 5640 name="customer[email]" 5641 id="customeremail-email" 5642 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input " 5643 required 5644 autocomplete="email" 5645 5646 placeholder=" " 5647 style="padding: 14px 0px 0px;" 5648 data-input 5649 > 5650 <label for="customeremail-email" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">Email</label> 5651 5652 5653 </div> 5654 5655 5656 5657 5658 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a valid email</p> 5659 5660</div> 5661 5662<style> 5663 .js-form-error.js-form-error--active { 5664 display: block !important; 5665 } 5666 5667 /* Add red border to input wrapper when error is active (sibling selector) */ 5668 .js-input-field:has(~ .js-form-error--active) { 5669 border-color: #F45048 !important; 5670 } 5671</style> 5672 5673 5674 5675 5676 5677 5678 5679<div class="w-full mb-4"> 5680 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5681 <input 5682 type="password" 5683 name="customer[password]" 5684 id="customerpassword-password" 5685 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input js-form-input-password " 5686 required 5687 autocomplete="current-password" 5688 5689 placeholder=" " 5690 style="padding: 14px 0px 0px;" 5691 data-input 5692 > 5693 <label for="customerpassword-password" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">Password</label> 5694 5695 5696 <button 5697 type="button" 5698 class="flex-shrink-0 w-4 h-4 ml-4 p-0 border-0 bg-transparent cursor-pointer hover:opacity-70 transition-opacity js-toggle-password" 5699 aria-label="Toggle password visibility" 5700 data-password-toggle 5701 >
5702 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="js-password-icon-visible w-4 h-4"> 5703 <path d="M8.00008 10.6667C8.83342 10.6667 9.54175 10.375 10.1251 9.79169C10.7084 9.20835 11.0001 8.50002 11.0001 7.66669C11.0001 6.83335 10.7084 6.12502 10.1251 5.54169C9.54175 4.95835 8.83342 4.66669 8.00008 4.66669C7.16675 4.66669 6.45842 4.95835 5.87508 5.54169C5.29175 6.12502 5.00008 6.83335 5.00008 7.66669C5.00008 8.50002 5.29175 9.20835 5.87508 9.79169C6.45842 10.375 7.16675 10.6667 8.00008 10.6667ZM8.00008 9.46669C7.50008 9.46669 7.07508 9.29169 6.72508 8.94169C6.37508 8.59169 6.20008 8.16669 6.20008 7.66669C6.20008 7.16669 6.37508 6.74169 6.72508 6.39169C7.07508 6.04169 7.50008 5.86669 8.00008 5.86669C8.50008 5.86669 8.92508 6.04169 9.27508 6.39169C9.62508 6.74169 9.80008 7.16669 9.80008 7.66669C9.80008 8.16669 9.62508 8.59169 9.27508 8.94169C8.92508 9.29169 8.50008 9.46669 8.00008 9.46669ZM8.00008 12.6667C6.37786 12.6667 4.90008 12.2139 3.56675 11.3084C2.23341 10.4028 1.26675 9.18891 0.666748 7.66669C1.26675 6.14446 2.23341 4.93058 3.56675 4.02502C4.90008 3.11946 6.37786 2.66669 8.00008 2.66669C9.6223 2.66669 11.1001 3.11946 12.4334 4.02502C13.7667 4.93058 14.7334 6.14446 15.3334 7.66669C14.7334 9.18891 13.7667 10.4028 12.4334 11.3084C11.1001 12.2139 9.6223 12.6667 8.00008 12.6667ZM8.00008 11.3334C9.25564 11.3334 10.4084 11.0028 11.4584 10.3417C12.5084 9.68058 13.3112 8.78891 13.8667 7.66669C13.3112 6.54446 12.5084 5.6528 11.4584 4.99169C10.4084 4.33058 9.25564 4.00002 8.00008 4.00002C6.74453 4.00002 5.59175 4.33058 4.54175 4.99169C3.49175 5.6528 2.68897 6.54446 2.13341 7.66669C2.68897 8.78891 3.49175 9.68058 4.54175 10.3417C5.59175 11.0028 6.74453 11.3334 8.00008 11.3334Z" fill="#252525"/> 5704 </svg> 5705 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="js-password-icon-hidden w-4 h-4 hidden"> 5706 <path d="M1 1.33333L13.3333 13.6667" stroke="#1A1A1A"/> 5707 <path d="M8.00008 10.6667C8.83342 10.6667 9.54175 10.375 10.1251 9.79169C10.7084 9.20835 11.0001 8.50002 11.0001 7.66669C11.0001 6.83335 10.7084 6.12502 10.1251 5.54169C9.54175 4.95835 8.83342 4.66669 8.00008 4.66669C7.16675 4.66669 6.45842 4.95835 5.87508 5.54169C5.29175 6.12502 5.00008 6.83335 5.00008 7.66669C5.00008 8.50002 5.29175 9.20835 5.87508 9.79169C6.45842 10.375 7.16675 10.6667 8.00008 10.6667ZM8.00008 9.46669C7.50008 9.46669 7.07508 9.29169 6.72508 8.94169C6.37508 8.59169 6.20008 8.16669 6.20008 7.66669C6.20008 7.16669 6.37508 6.74169 6.72508 6.39169C7.07508 6.04169 7.50008 5.86669 8.00008 5.86669C8.50008 5.86669 8.92508 6.04169 9.27508 6.39169C9.62508 6.74169 9.80008 7.16669 9.80008 7.66669C9.80008 8.16669 9.62508 8.59169 9.27508 8.94169C8.92508 9.29169 8.50008 9.46669 8.00008 9.46669ZM8.00008 12.6667C6.37786 12.6667 4.90008 12.2139 3.56675 11.3084C2.23341 10.4028 1.26675 9.18891 0.666748 7.66669C1.26675 6.14446 2.23341 4.93058 3.56675 4.02502C4.90008 3.11946 6.37786 2.66669 8.00008 2.66669C9.6223 2.66669 11.1001 3.11946 12.4334 4.02502C13.7667 4.93058 14.7334 6.14446 15.3334 7.66669C14.7334 9.18891 13.7667 10.4028 12.4334 11.3084C11.1001 12.2139 9.6223 12.6667 8.00008 12.6667ZM8.00008 11.3334C9.25564 11.3334 10.4084 11.0028 11.4584 10.3417C12.5084 9.68058 13.3112 8.78891 13.8667 7.66669C13.3112 6.54446 12.5084 5.6528 11.4584 4.99169C10.4084 4.33058 9.25564 4.00002 8.00008 4.00002C6.74453 4.00002 5.59175 4.33058 4.54175 4.99169C3.49175 5.6528 2.68897 6.54446 2.13341 7.66669C2.68897 8.78891 3.49175 9.68058 4.54175 10.3417C5.59175 11.0028 6.74453 11.3334 8.00008 11.3334Z" fill="#1A1A1A"/> 5708 </svg> 5709 </button> 5710 5711 </div> 5712 5713 5714 5715 5716 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a valid password</p> 5717 5718</div> 5719 5720<style> 5721 .js-form-error.js-form-error--active { 5722 display: block !important; 5723 } 5724 5725 /* Add red border to input wrapper when error is active (sibling selector) */ 5726 .js-input-field:has(~ .js-form-error--active) { 5727 border-color: #F45048 !important; 5728 } 5729</style> 5730 5731 5732 5733 5734 <p class="text-body-16 text-charcoal-600 text-center underline mb-8 cursor-pointer js-account-reset"> 5735 Forgot password? 5736 </p> 5737 5738 <div class="flex flex-col gap-4"> 5739 <button 5740 type="submit" 5741 class="w-full h-[52px] px-6 bg-charcoal-600 text-white text-body-16 rounded-lg hover:bg-charcoal-500 transition-colors flex items-center justify-center" 5742 > 5743 Log in 5744 </button> 5745 <button 5746 type="button" 5747 class="w-full h-[52px] px-6 border border-[rgba(37,37,37,0.25)] text-charcoal-600 text-body-16 rounded-lg hover:bg-charcoal-50 transition-colors flex items-center justify-center js-account-close" 5748 aria-label="Close modal" 5749 > 5750 Close 5751 </button> 5752 </div> 5753 </form> 5754 </div> 5755 </div> 5756 5757 5758 <div class="hidden js-account-modal-signup" id="accountModalPanel-signup" role="tabpanel" aria-labelledby="accountModalHeading-signup"> 5759 <div class="flex flex-col gap-2 items-start mb-8 text-center"> 5760 <h2 id="accountModalHeading-signup" class="font-serif text-display-36 text-charcoal-600 w-full">Create your account</h2> 5761 <p class="text-body-16 text-charcoal-600 w-full">Join Trade to easily manage your dashboard, update coffee preferences, edit deliveries, and more!</p> 5762 </div> 5763 5764 <div id="registerForm"> 5765 <form method="post" action="/account" id="create_customer" accept-charset="UTF-8" data-login-with-shop-sign-up="true"><input type="hidden" name="form_type" value="create_customer" /><input type="hidden" name="utf8" value="â" /> 5766 5767 5768 5769 5770 5771 5772 5773<div class="w-full mb-4"> 5774 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5775 <input 5776 type="text" 5777 name="customer[first_name]" 5778 id="customerfirst_name-text" 5779 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input " 5780 required 5781 autocomplete="given-name" 5782 5783 placeholder=" " 5784 style="padding: 14px 0px 0px;" 5785 data-input 5786 > 5787 <label for="customerfirst_name-text" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">First Name</label> 5788 5789 5790 </div> 5791 5792 5793 5794 5795 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a first name</p> 5796 5797</div> 5798 5799<style> 5800 .js-form-error.js-form-error--active { 5801 display: block !important; 5802 } 5803 5804 /* Add red border to input wrapper when error is active (sibling selector) */ 5805 .js-input-field:has(~ .js-form-error--active) { 5806 border-color: #F45048 !important; 5807 } 5808</style> 5809 5810 5811 5812 5813 5814 5815 5816<div class="w-full mb-4"> 5817 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5818 <input 5819 type="text" 5820 name="customer[last_name]" 5821 id="customerlast_name-text" 5822 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input " 5823 required 5824 autocomplete="family-name" 5825 5826 placeholder=" " 5827 style="padding: 14px 0px 0px;" 5828 data-input 5829 > 5830 <label for="customerlast_name-text" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">Last Name</label> 5831 5832 5833 </div> 5834 5835 5836 5837 5838 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a last name</p> 5839 5840</div> 5841 5842<style> 5843 .js-form-error.js-form-error--active { 5844 display: block !important; 5845 } 5846 5847 /* Add red border to input wrapper when error is active (sibling selector) */ 5848 .js-input-field:has(~ .js-form-error--active) { 5849 border-color: #F45048 !important; 5850 } 5851</style> 5852 5853 5854 5855 5856 5857 5858 5859<div class="w-full mb-4"> 5860 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5861 <input 5862 type="email" 5863 name="customer[email]" 5864 id="customeremail-email" 5865 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input " 5866 required 5867 autocomplete="email" 5868 5869 placeholder=" " 5870 style="padding: 14px 0px 0px;" 5871 data-input 5872 > 5873 <label for="customeremail-email" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">Email</label> 5874 5875 5876 </div> 5877 5878 5879 5880 5881 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a valid email</p> 5882 5883</div> 5884 5885<style> 5886 .js-form-error.js-form-error--active { 5887 display: block !important; 5888 } 5889 5890 /* Add red border to input wrapper when error is active (sibling selector) */ 5891 .js-input-field:has(~ .js-form-error--active) { 5892 border-color: #F45048 !important; 5893 } 5894</style> 5895 5896 5897 5898 5899 5900 5901 5902<div class="w-full mb-4"> 5903 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5904 <input 5905 type="password" 5906 name="customer[password]" 5907 id="customerpassword-password" 5908 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input js-form-input-password " 5909 required 5910 autocomplete="new-password" 5911 5912 placeholder=" " 5913 style="padding: 14px 0px 0px;" 5914 data-input 5915 > 5916 <label for="customerpassword-password" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">Password</label> 5917 5918 5919 <button 5920 type="button" 5921 class="flex-shrink-0 w-4 h-4 ml-4 p-0 border-0 bg-transparent cursor-pointer hover:opacity-70 transition-opacity js-toggle-password" 5922 aria-label="Toggle password visibility" 5923 data-password-toggle 5924 >
5925 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="js-password-icon-visible w-4 h-4"> 5926 <path d="M8.00008 10.6667C8.83342 10.6667 9.54175 10.375 10.1251 9.79169C10.7084 9.20835 11.0001 8.50002 11.0001 7.66669C11.0001 6.83335 10.7084 6.12502 10.1251 5.54169C9.54175 4.95835 8.83342 4.66669 8.00008 4.66669C7.16675 4.66669 6.45842 4.95835 5.87508 5.54169C5.29175 6.12502 5.00008 6.83335 5.00008 7.66669C5.00008 8.50002 5.29175 9.20835 5.87508 9.79169C6.45842 10.375 7.16675 10.6667 8.00008 10.6667ZM8.00008 9.46669C7.50008 9.46669 7.07508 9.29169 6.72508 8.94169C6.37508 8.59169 6.20008 8.16669 6.20008 7.66669C6.20008 7.16669 6.37508 6.74169 6.72508 6.39169C7.07508 6.04169 7.50008 5.86669 8.00008 5.86669C8.50008 5.86669 8.92508 6.04169 9.27508 6.39169C9.62508 6.74169 9.80008 7.16669 9.80008 7.66669C9.80008 8.16669 9.62508 8.59169 9.27508 8.94169C8.92508 9.29169 8.50008 9.46669 8.00008 9.46669ZM8.00008 12.6667C6.37786 12.6667 4.90008 12.2139 3.56675 11.3084C2.23341 10.4028 1.26675 9.18891 0.666748 7.66669C1.26675 6.14446 2.23341 4.93058 3.56675 4.02502C4.90008 3.11946 6.37786 2.66669 8.00008 2.66669C9.6223 2.66669 11.1001 3.11946 12.4334 4.02502C13.7667 4.93058 14.7334 6.14446 15.3334 7.66669C14.7334 9.18891 13.7667 10.4028 12.4334 11.3084C11.1001 12.2139 9.6223 12.6667 8.00008 12.6667ZM8.00008 11.3334C9.25564 11.3334 10.4084 11.0028 11.4584 10.3417C12.5084 9.68058 13.3112 8.78891 13.8667 7.66669C13.3112 6.54446 12.5084 5.6528 11.4584 4.99169C10.4084 4.33058 9.25564 4.00002 8.00008 4.00002C6.74453 4.00002 5.59175 4.33058 4.54175 4.99169C3.49175 5.6528 2.68897 6.54446 2.13341 7.66669C2.68897 8.78891 3.49175 9.68058 4.54175 10.3417C5.59175 11.0028 6.74453 11.3334 8.00008 11.3334Z" fill="#252525"/> 5927 </svg> 5928 <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="js-password-icon-hidden w-4 h-4 hidden"> 5929 <path d="M1 1.33333L13.3333 13.6667" stroke="#1A1A1A"/> 5930 <path d="M8.00008 10.6667C8.83342 10.6667 9.54175 10.375 10.1251 9.79169C10.7084 9.20835 11.0001 8.50002 11.0001 7.66669C11.0001 6.83335 10.7084 6.12502 10.1251 5.54169C9.54175 4.95835 8.83342 4.66669 8.00008 4.66669C7.16675 4.66669 6.45842 4.95835 5.87508 5.54169C5.29175 6.12502 5.00008 6.83335 5.00008 7.66669C5.00008 8.50002 5.29175 9.20835 5.87508 9.79169C6.45842 10.375 7.16675 10.6667 8.00008 10.6667ZM8.00008 9.46669C7.50008 9.46669 7.07508 9.29169 6.72508 8.94169C6.37508 8.59169 6.20008 8.16669 6.20008 7.66669C6.20008 7.16669 6.37508 6.74169 6.72508 6.39169C7.07508 6.04169 7.50008 5.86669 8.00008 5.86669C8.50008 5.86669 8.92508 6.04169 9.27508 6.39169C9.62508 6.74169 9.80008 7.16669 9.80008 7.66669C9.80008 8.16669 9.62508 8.59169 9.27508 8.94169C8.92508 9.29169 8.50008 9.46669 8.00008 9.46669ZM8.00008 12.6667C6.37786 12.6667 4.90008 12.2139 3.56675 11.3084C2.23341 10.4028 1.26675 9.18891 0.666748 7.66669C1.26675 6.14446 2.23341 4.93058 3.56675 4.02502C4.90008 3.11946 6.37786 2.66669 8.00008 2.66669C9.6223 2.66669 11.1001 3.11946 12.4334 4.02502C13.7667 4.93058 14.7334 6.14446 15.3334 7.66669C14.7334 9.18891 13.7667 10.4028 12.4334 11.3084C11.1001 12.2139 9.6223 12.6667 8.00008 12.6667ZM8.00008 11.3334C9.25564 11.3334 10.4084 11.0028 11.4584 10.3417C12.5084 9.68058 13.3112 8.78891 13.8667 7.66669C13.3112 6.54446 12.5084 5.6528 11.4584 4.99169C10.4084 4.33058 9.25564 4.00002 8.00008 4.00002C6.74453 4.00002 5.59175 4.33058 4.54175 4.99169C3.49175 5.6528 2.68897 6.54446 2.13341 7.66669C2.68897 8.78891 3.49175 9.68058 4.54175 10.3417C5.59175 11.0028 6.74453 11.3334 8.00008 11.3334Z" fill="#1A1A1A"/> 5931 </svg> 5932 </button> 5933 5934 </div> 5935 5936 5937 5938 5939 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a password</p> 5940 5941</div> 5942 5943<style> 5944 .js-form-error.js-form-error--active { 5945 display: block !important; 5946 } 5947 5948 /* Add red border to input wrapper when error is active (sibling selector) */ 5949 .js-input-field:has(~ .js-form-error--active) { 5950 border-color: #F45048 !important; 5951 } 5952</style> 5953 5954 5955 <div class="flex flex-col gap-4 mt-8"> 5956 <button 5957 type="submit" 5958 class="w-full h-[52px] px-6 bg-charcoal-600 text-white text-body-16 rounded-lg hover:bg-charcoal-500 transition-colors flex items-center justify-center" 5959 > 5960 Create Account 5961 </button> 5962 <button 5963 type="button" 5964 class="w-full h-[52px] px-6 border border-[rgba(37,37,37,0.25)] text-charcoal-600 text-body-16 rounded-lg hover:bg-charcoal-50 transition-colors flex items-center justify-center js-account-close" 5965 aria-label="Close modal" 5966 > 5967 Close 5968 </button> 5969 </div> 5970 </form> 5971 </div> 5972 </div> 5973 5974 5975 <div class="hidden js-account-modal-reset" id="accountModalPanel-reset" aria-labelledby="accountModalHeading-reset"> 5976 <div class="flex flex-col gap-2 items-start mb-8 text-center"> 5977 <h2 id="accountModalHeading-reset" class="font-serif text-display-36 text-charcoal-600 w-full">Reset your password</h2> 5978 <p class="text-body-16 text-charcoal-600 w-full">Enter your email and we'll send you a link to reset your password.</p> 5979 </div> 5980 5981 <div id="resetForm"> 5982 <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="â" /> 5983 5984 5985 5986 5987 5988 5989 5990<div class="w-full mb-4"> 5991 <div class="relative flex items-center w-full h-14 px-4 bg-surface-white border border-charcoal-200 focus-within:border-charcoal-600 rounded-lg transition-colors duration-200 js-input-field" data-input-wrapper> 5992 <input 5993 type="email" 5994 name="email" 5995 id="email-email" 5996 class="flex-1 w-full h-full pt-0 pb-0 border-0 bg-transparent text-body-16 text-charcoal-600 outline-none focus:outline-none focus-visible:outline-none transition-[padding] duration-200 placeholder:text-transparent focus:pt-4 peer js-form-input " 5997 required 5998 autocomplete="email" 5999 6000 placeholder=" " 6001 style="padding: 14px 0px 0px;" 6002 data-input 6003 > 6004 <label for="email-email" class="absolute left-4 top-1/2 -translate-y-1/2 text-body-16 text-charcoal-300 pointer-events-none transition-all duration-200 peer-focus:top-2 peer-focus:translate-y-0 peer-focus:text-body-12 peer-focus:text-charcoal-400 peer-[:not(:placeholder-shown)]:top-2 peer-[:not(:placeholder-shown)]:translate-y-0 peer-[:not(:placeholder-shown)]:text-body-12 peer-[:not(:placeholder-shown)]:text-charcoal-400 peer-focus:!text-trade-red">Email</label> 6005 6006 6007 </div> 6008 6009 6010 6011 6012 <p class="mt-2 text-body-12 font-bold text-trade-red js-form-error" style="display: none;" role="alert">Please enter a valid email</p> 6013 6014</div> 6015 6016<style> 6017 .js-form-error.js-form-error--active { 6018 display: block !important; 6019 } 6020 6021 /* Add red border to input wrapper when error is active (sibling selector) */ 6022 .js-input-field:has(~ .js-form-error--active) { 6023 border-color: #F45048 !important; 6024 } 6025</style> 6026 6027 6028 <div class="flex flex-col gap-4 mt-8"> 6029 <button 6030 type="submit" 6031 class="w-full h-[52px] px-6 bg-charcoal-600 text-white text-body-16 rounded-lg hover:bg-charcoal-500 transition-colors flex items-center justify-center" 6032 > 6033 Reset password 6034 </button> 6035 <p class="text-body-16 text-charcoal-600 text-center underline cursor-pointer js-account-login"> 6036 Back to Login 6037 </p> 6038 </div> 6039 </form> 6040 </div> 6041 </div> 6042 </div> 6043 </div> 6044</div> 6045
6046<script> 6047 document.addEventListener('DOMContentLoaded', function () { 6048 // Load modal settings from header section data attributes 6049 const settingsEl = document.getElementById('account-modal-settings'); 6050 if (settingsEl) { 6051 const modal = document.querySelector('.js-account-modal'); 6052 if (modal) { 6053 // Update login section 6054 const loginHeading = settingsEl.dataset.loginHeading; 6055 const loginSubheading = settingsEl.dataset.loginSubheading; 6056 if (loginHeading) { 6057 const loginHeadingEl = modal.querySelector('.js-account-modal-login h2'); 6058 if (loginHeadingEl) loginHeadingEl.textContent = loginHeading; 6059 } 6060 if (loginSubheading) { 6061 const loginSubheadingEl = modal.querySelector('.js-account-modal-login h2 + p'); 6062 if (loginSubheadingEl) loginSubheadingEl.textContent = loginSubheading; 6063 } 6064 6065 // Update signup section 6066 const signupHeading = settingsEl.dataset.signupHeading; 6067 const signupSubheading = settingsEl.dataset.signupSubheading; 6068 if (signupHeading) { 6069 const signupHeadingEl = modal.querySelector('.js-account-modal-signup h2'); 6070 if (signupHeadingEl) signupHeadingEl.textContent = signupHeading; 6071 } 6072 if (signupSubheading) { 6073 const signupSubheadingEl = modal.querySelector('.js-account-modal-signup h2 + p'); 6074 if (signupSubheadingEl) signupSubheadingEl.textContent = signupSubheading; 6075 } 6076 6077 // Update forgot password section 6078 const forgotHeading = settingsEl.dataset.forgotHeading; 6079 const forgotSubheading = settingsEl.dataset.forgotSubheading; 6080 if (forgotHeading) { 6081 const forgotHeadingEl = modal.querySelector('.js-account-modal-reset h2'); 6082 if (forgotHeadingEl) forgotHeadingEl.textContent = forgotHeading; 6083 } 6084 if (forgotSubheading) { 6085 const forgotSubheadingEl = modal.querySelector('.js-account-modal-reset h2 + p'); 6086 if (forgotSubheadingEl) forgotSubheadingEl.textContent = forgotSubheading; 6087 } 6088 } 6089 } 6090 6091 // Password visibility toggle 6092 const toggleButtons = document.querySelectorAll('.js-toggle-password'); 6093 toggleButtons.forEach((button) => { 6094 button.addEventListener('click', function () { 6095 const wrapper = this.closest('.js-input-field'); 6096 const input = wrapper.querySelector('.js-form-input-password'); 6097 const visibleIcon = this.querySelector('.js-password-icon-visible'); 6098 const hiddenIcon = this.querySelector('.js-password-icon-hidden'); 6099 6100 if (input.type === 'password') { 6101 input.type = 'text'; 6102 visibleIcon.classList.add('hidden'); 6103 hiddenIcon.classList.remove('hidden'); 6104 } else { 6105 input.type = 'password'; 6106 visibleIcon.classList.remove('hidden'); 6107 hiddenIcon.classList.add('hidden'); 6108 } 6109 }); 6110 }); 6111 }); 6112</script>
6112 6113 6114<!-- Vendor Modules --> 6115
6116<script src="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.vendors.js?v=118887118964782433581790173859" type="text/javascript"></script>
6116 6117 6118<!-- Common Modules --> 6119
6120<script src="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.common.js?v=121417447354656180351790173857" type="text/javascript"></script>
6120 6121 6122<!-- Layout Modules --> 6123
6124<script src="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.theme.js?v=166949724950009917481790173857" type="text/javascript"></script>
6124 6125 6126<!-- Template Modules --> 6127
6128<script src="//www.drinktrade.com/cdn/shop/t/2106/assets/bundle.page.js?v=117859048990827806731790173847" type="text/javascript"></script>
6128 6129
6130<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
6130 6131</body> 6132</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.