1<!doctype html> 2<html class="no-js" lang="en"> 3<head> 4 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 4-5
4 5<script async src="https://www.googletagmanager.com/gtag/js?id=
5G-20DTR3EY60
vendor: 12 bytes, line 5
5"></script>
6<script> 7
vendor: 134 bytes, lines 7-11
7window.dataLayer = window.dataLayer || []; 8 function gtag(){dataLayer.push(arguments);} 9 gtag('js', new Date()); 10 11 gtag('config', '
11G-20DTR3EY60
vendor: 4 bytes, line 11
11');
12</script>
12 13 14 15 <meta charset="utf-8"> 16 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 17 <meta name="viewport" content="width=device-width,initial-scale=1"> 18 <meta name="theme-color" content="#557b97"> 19 <link rel="canonical" href="https://spring-beautiful.myshopify.com/cart"><title>Your Shopping Cart 20– Kawaii Presenter</title><!-- /snippets/social-meta-tags.liquid --> 21 22 23 24 25<meta property="og:site_name" content="Kawaii Presenter"> 26<meta property="og:url" content="https://spring-beautiful.myshopify.com/cart"> 27<meta property="og:title" content="Your Shopping Cart"> 28<meta property="og:type" content="website"> 29<meta property="og:description" content="Being born in Japan and traveled to over 45 countries, I have seen many beautiful handcrafts in different parts of the world. From my personal experience, I know that using favorite handmade coffee cup or using a handwoven scarfs or giving loved ones such crafts can make you and your loved ones life a little richer. "> 30 31<meta property="og:image" content="http://spring-beautiful.myshopify.com/cdn/shop/files/1_1200x1200.png?v=1685889299"> 32<meta property="og:image:secure_url" content="https://spring-beautiful.myshopify.com/cdn/shop/files/1_1200x1200.png?v=1685889299"> 33 34 35<meta name="twitter:card" content="summary_large_image"> 36<meta name="twitter:title" content="Your Shopping Cart"> 37<meta name="twitter:description" content="Being born in Japan and traveled to over 45 countries, I have seen many beautiful handcrafts in different parts of the world. From my personal experience, I know that using favorite handmade coffee cup or using a handwoven scarfs or giving loved ones such crafts can make you and your loved ones life a little richer. "> 38 39 40 <link href="//spring-beautiful.myshopify.com/cdn/shop/t/1/assets/theme.scss.css?v=102791964601954677891775823713" rel="stylesheet" type="text/css" media="all" /> 41 42
42<script> 43 var theme = { 44 breakpoints: { 45 medium: 750, 46 large: 990, 47 widescreen: 1400 48 }, 49 strings: { 50 addToCart: "Add to cart", 51 soldOut: "Sold out", 52 unavailable: "Unavailable", 53 regularPrice: "Regular price", 54 salePrice: "Sale price", 55 sale: "Sale", 56 showMore: "Show More", 57 showLess: "Show Less", 58 addressError: "Error looking up that address", 59 addressNoResults: "No results for that address", 60 addressQueryLimit: "You have exceeded the Google API usage limit. Consider upgrading to a \u003ca href=\"https:\/\/developers.google.com\/maps\/premium\/usage-limits\"\u003ePremium Plan\u003c\/a\u003e.", 61 authError: "There was a problem authenticating your Google Maps account.", 62 newWindow: "Opens in a new window.", 63 external: "Opens external website.", 64 newWindowExternal: "Opens external website in a new window.", 65 removeLabel: "Remove [product]", 66 update: "Update", 67 quantity: "Quantity", 68 discountedTotal: "Discounted total", 69 regularTotal: "Regular total", 70 priceColumn: "See Price column for discount details.", 71 quantityMinimumMessage: "Quantity must be 1 or more", 72 cartError: "There was an error while updating your cart. Please try again.", 73 removedItemMessage: "Removed \u003cspan class=\"cart__removed-product-details\"\u003e([quantity]) [link]\u003c\/span\u003e from your cart.", 74 unitPrice: "Unit price", 75 unitPriceSeparator: "per", 76 oneCartCount: "1 item", 77 otherCartCount: "[count] items", 78 quantityLabel: "Quantity: [count]" 79 }, 80 moneyFormat: "${{amount}}", 81 moneyFormatWithCurrency: "${{amount}} USD" 82 } 83 84 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 85 </script>
85<script src="//spring-beautiful.myshopify.com/cdn/shop/t/1/assets/lazysizes.js?v=94224023136283657951576435306" async="async"></script>
85 86
86<script src="//spring-beautiful.myshopify.com/cdn/shop/t/1/assets/vendor.js?v=12001839194546984181576435308" defer="defer"></script>
86 87
87<script src="//spring-beautiful.myshopify.com/cdn/shop/t/1/assets/theme.js?v=3190015394565850101576435307" defer="defer"></script>
87 88 89
89<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
89<meta name="facebook-domain-verification" content="e5053vl3itu85ooamt8fh20kd12z32"> 90<meta name="google-site-verification" content="jGBjRdD18jgb_6SmCWlA9Z-de0rpEi1JikHGM8Eds5Y"> 91<meta name="facebook-domain-verification" content="e5053vl3itu85ooamt8fh20kd12z32"> 92<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/27649998986/digital_wallets/dialog"> 93<meta id="in-context-paypal-metadata" data-shop-id="27649998986" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> 94<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" hreflang="x-default" href="https://www.kawaii-presenter.com/cart"> 95<link rel="alternate" hreflang="en" href="https://www.kawaii-presenter.com/cart"> 96<link rel="alternate" hreflang="de" href="https://www.kawaii-presenter.com/de/cart"> 97<link rel="alternate" hreflang="en-AD" href="https://spring-beautiful.myshopify.com/cart"> 98<link rel="alternate" hreflang="ja-AD" href="https://spring-beautiful.myshopify.com/ja/cart"> 99<link rel="alternate" hreflang="en-AL" href="https://spring-beautiful.myshopify.com/cart"> 100<link rel="alternate" hreflang="ja-AL" href="https://spring-beautiful.myshopify.com/ja/cart"> 101<link rel="alternate" hreflang="en-AM" href="https://spring-beautiful.myshopify.com/cart"> 102<link rel="alternate" hreflang="ja-AM" href="https://spring-beautiful.myshopify.com/ja/cart"> 103<link rel="alternate" hreflang="en-AU" href="https://spring-beautiful.myshopify.com/cart"> 104<link rel="alternate" hreflang="ja-AU" href="https://spring-beautiful.myshopify.com/ja/cart"> 105<link rel="alternate" hreflang="en-AX" href="https://spring-beautiful.myshopify.com/cart"> 106<link rel="alternate" hreflang="ja-AX" href="https://spring-beautiful.myshopify.com/ja/cart"> 107<link rel="alternate" hreflang="en-AZ" href="https://spring-beautiful.myshopify.com/cart"> 108<link rel="alternate" hreflang="ja-AZ" href="https://spring-beautiful.myshopify.com/ja/cart"> 109<link rel="alternate" hreflang="en-BA" href="https://www.kawaii-presenter.com/en-es/cart"> 110<link rel="alternate" hreflang="fr-BA" href="https://www.kawaii-presenter.com/fr-es/cart"> 111<link rel="alternate" hreflang="de-BA" href="https://www.kawaii-presenter.com/de-es/cart"> 112<link rel="alternate" hreflang="es-BA" href="https://www.kawaii-presenter.com/es-es/cart"> 113<link rel="alternate" hreflang="sv-BA" href="https://www.kawaii-presenter.com/sv-es/cart"> 114<link rel="alternate" hreflang="it-BA" href="https://www.kawaii-presenter.com/it-es/cart"> 115<link rel="alternate" hreflang="is-BA" href="https://www.kawaii-presenter.com/is-es/cart"> 116<link rel="alternate" hreflang="nl-BA" href="https://www.kawaii-presenter.com/nl-es/cart"> 117<link rel="alternate" hreflang="el-BA" href="https://www.kawaii-presenter.com/el-es/cart"> 118<link rel="alternate" hreflang="da-BA" href="https://www.kawaii-presenter.com/da-es/cart"> 119<link rel="alternate" hreflang="no-BA" href="https://www.kawaii-presenter.com/no-es/cart"> 120<link rel="alternate" hreflang="fi-BA" href="https://www.kawaii-presenter.com/fi-es/cart"> 121<link rel="alternate" hreflang="en-BY" href="https://spring-beautiful.myshopify.com/cart"> 122<link rel="alternate" hreflang="ja-BY" href="https://spring-beautiful.myshopify.com/ja/cart"> 123<link rel="alternate" hreflang="en-CA" href="https://spring-beautiful.myshopify.com/cart"> 124<link rel="alternate" hreflang="ja-CA" href="https://spring-beautiful.myshopify.com/ja/cart"> 125<link rel="alternate" hreflang="en-CH" href="https://spring-beautiful.myshopify.com/cart"> 126<link rel="alternate" hreflang="ja-CH" href="https://spring-beautiful.myshopify.com/ja/cart"> 127<link rel="alternate" hreflang="en-DZ" href="https://spring-beautiful.myshopify.com/cart"> 128<link rel="alternate" hreflang="ja-DZ" href="https://spring-beautiful.myshopify.com/ja/cart"> 129<link rel="alternate" hreflang="en-EG" href="https://spring-beautiful.myshopify.com/cart"> 130<link rel="alternate" hreflang="ja-EG" href="https://spring-beautiful.myshopify.com/ja/cart"> 131<link rel="alternate" hreflang="en-FO" href="https://spring-beautiful.myshopify.com/cart"> 132<link rel="alternate" hreflang="ja-FO" href="https://spring-beautiful.myshopify.com/ja/cart"> 133<link rel="alternate" hreflang="en-GB" href="https://spring-beautiful.myshopify.com/cart"> 134<link rel="alternate" hreflang="ja-GB" href="https://spring-beautiful.myshopify.com/ja/cart"> 135<link rel="alternate" hreflang="en-GE" href="https://spring-beautiful.myshopify.com/cart"> 136<link rel="alternate" hreflang="ja-GE" href="https://spring-beautiful.myshopify.com/ja/cart"> 137<link rel="alternate" hreflang="en-GI" href="https://spring-beautiful.myshopify.com/cart"> 138<link rel="alternate" hreflang="ja-GI" href="https://spring-beautiful.myshopify.com/ja/cart"> 139<link rel="alternate" hreflang="en-GL" href="https://spring-beautiful.myshopify.com/cart"> 140<link rel="alternate" hreflang="ja-GL" href="https://spring-beautiful.myshopify.com/ja/cart"> 141<link rel="alternate" hreflang="en-ID" href="https://spring-beautiful.myshopify.com/cart"> 142<link rel="alternate" hreflang="ja-ID" href="https://spring-beautiful.myshopify.com/ja/cart"> 143<link rel="alternate" hreflang="en-IL" href="https://spring-beautiful.myshopify.com/cart"> 144<link rel="alternate" hreflang="ja-IL" href="https://spring-beautiful.myshopify.com/ja/cart"> 145<link rel="alternate" hreflang="en-IN" href="https://spring-beautiful.myshopify.com/cart"> 146<link rel="alternate" hreflang="ja-IN" href="https://spring-beautiful.myshopify.com/ja/cart"> 147<link rel="alternate" hreflang="en-JO" href="https://spring-beautiful.myshopify.com/cart"> 148<link rel="alternate" hreflang="ja-JO" href="https://spring-beautiful.myshopify.com/ja/cart"> 149<link rel="alternate" hreflang="en-JP" href="https://spring-beautiful.myshopify.com/cart"> 150<link rel="alternate" hreflang="ja-JP" href="https://spring-beautiful.myshopify.com/ja/cart"> 151<link rel="alternate" hreflang="en-KH" href="https://spring-beautiful.myshopify.com/cart"> 152<link rel="alternate" hreflang="ja-KH" href="https://spring-beautiful.myshopify.com/ja/cart"> 153<link rel="alternate" hreflang="en-KR" href="https://spring-beautiful.myshopify.com/cart"> 154<link rel="alternate" hreflang="ja-KR" href="https://spring-beautiful.myshopify.com/ja/cart"> 155<link rel="alternate" hreflang="en-KZ" href="https://spring-beautiful.myshopify.com/cart"> 156<link rel="alternate" hreflang="ja-KZ" href="https://spring-beautiful.myshopify.com/ja/cart"> 157<link rel="alternate" hreflang="en-LA" href="https://spring-beautiful.myshopify.com/cart"> 158<link rel="alternate" hreflang="ja-LA" href="https://spring-beautiful.myshopify.com/ja/cart"> 159<link rel="alternate" hreflang="en-LB" href="https://spring-beautiful.myshopify.com/cart"> 160<link rel="alternate" hreflang="ja-LB" href="https://spring-beautiful.myshopify.com/ja/cart"> 161<link rel="alternate" hreflang="en-LI" href="https://www.kawaii-presenter.com/en-es/cart"> 162<link rel="alternate" hreflang="fr-LI" href="https://www.kawaii-presenter.com/fr-es/cart"> 163<link rel="alternate" hreflang="de-LI" href="https://www.kawaii-presenter.com/de-es/cart"> 164<link rel="alternate" hreflang="es-LI" href="https://www.kawaii-presenter.com/es-es/cart"> 165<link rel="alternate" hreflang="sv-LI" href="https://www.kawaii-presenter.com/sv-es/cart"> 166<link rel="alternate" hreflang="it-LI" href="https://www.kawaii-presenter.com/it-es/cart"> 167<link rel="alternate" hreflang="is-LI" href="https://www.kawaii-presenter.com/is-es/cart"> 168<link rel="alternate" hreflang="nl-LI" href="https://www.kawaii-presenter.com/nl-es/cart"> 169<link rel="alternate" hreflang="el-LI" href="https://www.kawaii-presenter.com/el-es/cart"> 170<link rel="alternate" hreflang="da-LI" href="https://www.kawaii-presenter.com/da-es/cart"> 171<link rel="alternate" hreflang="no-LI" href="https://www.kawaii-presenter.com/no-es/cart"> 172<link rel="alternate" hreflang="fi-LI" href="https://www.kawaii-presenter.com/fi-es/cart"> 173<link rel="alternate" hreflang="en-LK" href="https://spring-beautiful.myshopify.com/cart"> 174<link rel="alternate" hreflang="ja-LK" href="https://spring-beautiful.myshopify.com/ja/cart"> 175<link rel="alternate" hreflang="en-LY" href="https://spring-beautiful.myshopify.com/cart"> 176<link rel="alternate" hreflang="ja-LY" href="https://spring-beautiful.myshopify.com/ja/cart"> 177<link rel="alternate" hreflang="en-MA" href="https://spring-beautiful.myshopify.com/cart"> 178<link rel="alternate" hreflang="ja-MA" href="https://spring-beautiful.myshopify.com/ja/cart"> 179<link rel="alternate" hreflang="en-MC" href="https://www.kawaii-presenter.com/en-es/cart"> 180<link rel="alternate" hreflang="fr-MC" href="https://www.kawaii-presenter.com/fr-es/cart"> 181<link rel="alternate" hreflang="de-MC" href="https://www.kawaii-presenter.com/de-es/cart"> 182<link rel="alternate" hreflang="es-MC" href="https://www.kawaii-presenter.com/es-es/cart"> 183<link rel="alternate" hreflang="sv-MC" href="https://www.kawaii-presenter.com/sv-es/cart"> 184<link rel="alternate" hreflang="it-MC" href="https://www.kawaii-presenter.com/it-es/cart"> 185<link rel="alternate" hreflang="is-MC" href="https://www.kawaii-presenter.com/is-es/cart"> 186<link rel="alternate" hreflang="nl-MC" href="https://www.kawaii-presenter.com/nl-es/cart"> 187<link rel="alternate" hreflang="el-MC" href="https://www.kawaii-presenter.com/el-es/cart"> 188<link rel="alternate" hreflang="da-MC" href="https://www.kawaii-presenter.com/da-es/cart"> 189<link rel="alternate" hreflang="no-MC" href="https://www.kawaii-presenter.com/no-es/cart"> 190<link rel="alternate" hreflang="fi-MC" href="https://www.kawaii-presenter.com/fi-es/cart"> 191<link rel="alternate" hreflang="en-MD" href="https://www.kawaii-presenter.com/en-es/cart"> 192<link rel="alternate" hreflang="fr-MD" href="https://www.kawaii-presenter.com/fr-es/cart"> 193<link rel="alternate" hreflang="de-MD" href="https://www.kawaii-presenter.com/de-es/cart"> 194<link rel="alternate" hreflang="es-MD" href="https://www.kawaii-presenter.com/es-es/cart"> 195<link rel="alternate" hreflang="sv-MD" href="https://www.kawaii-presenter.com/sv-es/cart"> 196<link rel="alternate" hreflang="it-MD" href="https://www.kawaii-presenter.com/it-es/cart"> 197<link rel="alternate" hreflang="is-MD" href="https://www.kawaii-presenter.com/is-es/cart"> 198<link rel="alternate" hreflang="nl-MD" href="https://www.kawaii-presenter.com/nl-es/cart"> 199<link rel="alternate" hreflang="el-MD" href="https://www.kawaii-presenter.com/el-es/cart"> 200<link rel="alternate" hreflang="da-MD" href="https://www.kawaii-presenter.com/da-es/cart"> 201<link rel="alternate" hreflang="no-MD" href="https://www.kawaii-presenter.com/no-es/cart"> 202<link rel="alternate" hreflang="fi-MD" href="https://www.kawaii-presenter.com/fi-es/cart"> 203<link rel="alternate" hreflang="en-ME" href="https://www.kawaii-presenter.com/en-es/cart"> 204<link rel="alternate" hreflang="fr-ME" href="https://www.kawaii-presenter.com/fr-es/cart"> 205<link rel="alternate" hreflang="de-ME" href="https://www.kawaii-presenter.com/de-es/cart"> 206<link rel="alternate" hreflang="es-ME" href="https://www.kawaii-presenter.com/es-es/cart"> 207<link rel="alternate" hreflang="sv-ME" href="https://www.kawaii-presenter.com/sv-es/cart"> 208<link rel="alternate" hreflang="it-ME" href="https://www.kawaii-presenter.com/it-es/cart"> 209<link rel="alternate" hreflang="is-ME" href="https://www.kawaii-presenter.com/is-es/cart"> 210<link rel="alternate" hreflang="nl-ME" href="https://www.kawaii-presenter.com/nl-es/cart"> 211<link rel="alternate" hreflang="el-ME" href="https://www.kawaii-presenter.com/el-es/cart"> 212<link rel="alternate" hreflang="da-ME" href="https://www.kawaii-presenter.com/da-es/cart"> 213<link rel="alternate" hreflang="no-ME" href="https://www.kawaii-presenter.com/no-es/cart"> 214<link rel="alternate" hreflang="fi-ME" href="https://www.kawaii-presenter.com/fi-es/cart"> 215<link rel="alternate" hreflang="en-MK" href="https://www.kawaii-presenter.com/en-es/cart"> 216<link rel="alternate" hreflang="fr-MK" href="https://www.kawaii-presenter.com/fr-es/cart"> 217<link rel="alternate" hreflang="de-MK" href="https://www.kawaii-presenter.com/de-es/cart"> 218<link rel="alternate" hreflang="es-MK" href="https://www.kawaii-presenter.com/es-es/cart"> 219<link rel="alternate" hreflang="sv-MK" href="https://www.kawaii-presenter.com/sv-es/cart"> 220<link rel="alternate" hreflang="it-MK" href="https://www.kawaii-presenter.com/it-es/cart"> 221<link rel="alternate" hreflang="is-MK" href="https://www.kawaii-presenter.com/is-es/cart"> 222<link rel="alternate" hreflang="nl-MK" href="https://www.kawaii-presenter.com/nl-es/cart"> 223<link rel="alternate" hreflang="el-MK" href="https://www.kawaii-presenter.com/el-es/cart"> 224<link rel="alternate" hreflang="da-MK" href="https://www.kawaii-presenter.com/da-es/cart"> 225<link rel="alternate" hreflang="no-MK" href="https://www.kawaii-presenter.com/no-es/cart"> 226<link rel="alternate" hreflang="fi-MK" href="https://www.kawaii-presenter.com/fi-es/cart"> 227<link rel="alternate" hreflang="en-MM" href="https://spring-beautiful.myshopify.com/cart"> 228<link rel="alternate" hreflang="ja-MM" href="https://spring-beautiful.myshopify.com/ja/cart"> 229<link rel="alternate" hreflang="en-MY" href="https://spring-beautiful.myshopify.com/cart"> 230<link rel="alternate" hreflang="ja-MY" href="https://spring-beautiful.myshopify.com/ja/cart"> 231<link rel="alternate" hreflang="en-NZ" href="https://spring-beautiful.myshopify.com/cart"> 232<link rel="alternate" hreflang="ja-NZ" href="https://spring-beautiful.myshopify.com/ja/cart"> 233<link rel="alternate" hreflang="en-PS" href="https://spring-beautiful.myshopify.com/cart"> 234<link rel="alternate" hreflang="ja-PS" href="https://spring-beautiful.myshopify.com/ja/cart"> 235<link rel="alternate" hreflang="en-RS" href="https://spring-beautiful.myshopify.com/cart"> 236<link rel="alternate" hreflang="ja-RS" href="https://spring-beautiful.myshopify.com/ja/cart"> 237<link rel="alternate" hreflang="en-SG" href="https://spring-beautiful.myshopify.com/cart"> 238<link rel="alternate" hreflang="ja-SG" href="https://spring-beautiful.myshopify.com/ja/cart"> 239<link rel="alternate" hreflang="en-SM" href="https://spring-beautiful.myshopify.com/cart"> 240<link rel="alternate" hreflang="ja-SM" href="https://spring-beautiful.myshopify.com/ja/cart"> 241<link rel="alternate" hreflang="en-TH" href="https://spring-beautiful.myshopify.com/cart"> 242<link rel="alternate" hreflang="ja-TH" href="https://spring-beautiful.myshopify.com/ja/cart"> 243<link rel="alternate" hreflang="en-TN" href="https://spring-beautiful.myshopify.com/cart"> 244<link rel="alternate" hreflang="ja-TN" href="https://spring-beautiful.myshopify.com/ja/cart"> 245<link rel="alternate" hreflang="en-TR" href="https://spring-beautiful.myshopify.com/cart"> 246<link rel="alternate" hreflang="ja-TR" href="https://spring-beautiful.myshopify.com/ja/cart"> 247<link rel="alternate" hreflang="en-TW" href="https://spring-beautiful.myshopify.com/cart"> 248<link rel="alternate" hreflang="ja-TW" href="https://spring-beautiful.myshopify.com/ja/cart"> 249<link rel="alternate" hreflang="en-UA" href="https://spring-beautiful.myshopify.com/cart"> 250<link rel="alternate" hreflang="ja-UA" href="https://spring-beautiful.myshopify.com/ja/cart"> 251<link rel="alternate" hreflang="en-US" href="https://spring-beautiful.myshopify.com/cart"> 252<link rel="alternate" hreflang="ja-US" href="https://spring-beautiful.myshopify.com/ja/cart"> 253<link rel="alternate" hreflang="en-VA" href="https://www.kawaii-presenter.com/en-es/cart"> 254<link rel="alternate" hreflang="fr-VA" href="https://www.kawaii-presenter.com/fr-es/cart"> 255<link rel="alternate" hreflang="de-VA" href="https://www.kawaii-presenter.com/de-es/cart"> 256<link rel="alternate" hreflang="es-VA" href="https://www.kawaii-presenter.com/es-es/cart"> 257<link rel="alternate" hreflang="sv-VA" href="https://www.kawaii-presenter.com/sv-es/cart"> 258<link rel="alternate" hreflang="it-VA" href="https://www.kawaii-presenter.com/it-es/cart"> 259<link rel="alternate" hreflang="is-VA" href="https://www.kawaii-presenter.com/is-es/cart"> 260<link rel="alternate" hreflang="nl-VA" href="https://www.kawaii-presenter.com/nl-es/cart"> 261<link rel="alternate" hreflang="el-VA" href="https://www.kawaii-presenter.com/el-es/cart"> 262<link rel="alternate" hreflang="da-VA" href="https://www.kawaii-presenter.com/da-es/cart"> 263<link rel="alternate" hreflang="no-VA" href="https://www.kawaii-presenter.com/no-es/cart"> 264<link rel="alternate" hreflang="fi-VA" href="https://www.kawaii-presenter.com/fi-es/cart"> 265<link rel="alternate" hreflang="en-VN" href="https://spring-beautiful.myshopify.com/cart"> 266<li
266nk rel="alternate" hreflang="ja-VN" href="https://spring-beautiful.myshopify.com/ja/cart"> 267<link rel="alternate" hreflang="en-XK" href="https://www.kawaii-presenter.com/en-es/cart"> 268<link rel="alternate" hreflang="fr-XK" href="https://www.kawaii-presenter.com/fr-es/cart"> 269<link rel="alternate" hreflang="de-XK" href="https://www.kawaii-presenter.com/de-es/cart"> 270<link rel="alternate" hreflang="es-XK" href="https://www.kawaii-presenter.com/es-es/cart"> 271<link rel="alternate" hreflang="sv-XK" href="https://www.kawaii-presenter.com/sv-es/cart"> 272<link rel="alternate" hreflang="it-XK" href="https://www.kawaii-presenter.com/it-es/cart"> 273<link rel="alternate" hreflang="is-XK" href="https://www.kawaii-presenter.com/is-es/cart"> 274<link rel="alternate" hreflang="nl-XK" href="https://www.kawaii-presenter.com/nl-es/cart"> 275<link rel="alternate" hreflang="el-XK" href="https://www.kawaii-presenter.com/el-es/cart"> 276<link rel="alternate" hreflang="da-XK" href="https://www.kawaii-presenter.com/da-es/cart"> 277<link rel="alternate" hreflang="no-XK" href="https://www.kawaii-presenter.com/no-es/cart"> 278<link rel="alternate" hreflang="fi-XK" href="https://www.kawaii-presenter.com/fi-es/cart"> 279<link rel="alternate" hreflang="en-ES" href="https://www.kawaii-presenter.com/en-es/cart"> 280<link rel="alternate" hreflang="fr-ES" href="https://www.kawaii-presenter.com/fr-es/cart"> 281<link rel="alternate" hreflang="de-ES" href="https://www.kawaii-presenter.com/de-es/cart"> 282<link rel="alternate" hreflang="es-ES" href="https://www.kawaii-presenter.com/es-es/cart"> 283<link rel="alternate" hreflang="sv-ES" href="https://www.kawaii-presenter.com/sv-es/cart"> 284<link rel="alternate" hreflang="it-ES" href="https://www.kawaii-presenter.com/it-es/cart"> 285<link rel="alternate" hreflang="is-ES" href="https://www.kawaii-presenter.com/is-es/cart"> 286<link rel="alternate" hreflang="nl-ES" href="https://www.kawaii-presenter.com/nl-es/cart"> 287<link rel="alternate" hreflang="el-ES" href="https://www.kawaii-presenter.com/el-es/cart"> 288<link rel="alternate" hreflang="da-ES" href="https://www.kawaii-presenter.com/da-es/cart"> 289<link rel="alternate" hreflang="no-ES" href="https://www.kawaii-presenter.com/no-es/cart"> 290<link rel="alternate" hreflang="fi-ES" href="https://www.kawaii-presenter.com/fi-es/cart"> 291<link rel="alternate" hreflang="en-SE" href="https://www.kawaii-presenter.com/en-es/cart"> 292<link rel="alternate" hreflang="fr-SE" href="https://www.kawaii-presenter.com/fr-es/cart"> 293<link rel="alternate" hreflang="de-SE" href="https://www.kawaii-presenter.com/de-es/cart"> 294<link rel="alternate" hreflang="es-SE" href="https://www.kawaii-presenter.com/es-es/cart"> 295<link rel="alternate" hreflang="sv-SE" href="https://www.kawaii-presenter.com/sv-es/cart"> 296<link rel="alternate" hreflang="it-SE" href="https://www.kawaii-presenter.com/it-es/cart"> 297<link rel="alternate" hreflang="is-SE" href="https://www.kawaii-presenter.com/is-es/cart"> 298<link rel="alternate" hreflang="nl-SE" href="https://www.kawaii-presenter.com/nl-es/cart"> 299<link rel="alternate" hreflang="el-SE" href="https://www.kawaii-presenter.com/el-es/cart"> 300<link rel="alternate" hreflang="da-SE" href="https://www.kawaii-presenter.com/da-es/cart"> 301<link rel="alternate" hreflang="no-SE" href="https://www.kawaii-presenter.com/no-es/cart"> 302<link rel="alternate" hreflang="fi-SE" href="https://www.kawaii-presenter.com/fi-es/cart"> 303<link rel="alternate" hreflang="en-DK" href="https://www.kawaii-presenter.com/en-es/cart"> 304<link rel="alternate" hreflang="fr-DK" href="https://www.kawaii-presenter.com/fr-es/cart"> 305<link rel="alternate" hreflang="de-DK" href="https://www.kawaii-presenter.com/de-es/cart"> 306<link rel="alternate" hreflang="es-DK" href="https://www.kawaii-presenter.com/es-es/cart"> 307<link rel="alternate" hreflang="sv-DK" href="https://www.kawaii-presenter.com/sv-es/cart"> 308<link rel="alternate" hreflang="it-DK" href="https://www.kawaii-presenter.com/it-es/cart"> 309<link rel="alternate" hreflang="is-DK" href="https://www.kawaii-presenter.com/is-es/cart"> 310<link rel="alternate" hreflang="nl-DK" href="https://www.kawaii-presenter.com/nl-es/cart"> 311<link rel="alternate" hreflang="el-DK" href="https://www.kawaii-presenter.com/el-es/cart"> 312<link rel="alternate" hreflang="da-DK" href="https://www.kawaii-presenter.com/da-es/cart"> 313<link rel="alternate" hreflang="no-DK" href="https://www.kawaii-presenter.com/no-es/cart"> 314<link rel="alternate" hreflang="fi-DK" href="https://www.kawaii-presenter.com/fi-es/cart"> 315<link rel="alternate" hreflang="en-IT" href="https://www.kawaii-presenter.com/en-es/cart"> 316<link rel="alternate" hreflang="fr-IT" href="https://www.kawaii-presenter.com/fr-es/cart"> 317<link rel="alternate" hreflang="de-IT" href="https://www.kawaii-presenter.com/de-es/cart"> 318<link rel="alternate" hreflang="es-IT" href="https://www.kawaii-presenter.com/es-es/cart"> 319<link rel="alternate" hreflang="sv-IT" href="https://www.kawaii-presenter.com/sv-es/cart"> 320<link rel="alternate" hreflang="it-IT" href="https://www.kawaii-presenter.com/it-es/cart"> 321<link rel="alternate" hreflang="is-IT" href="https://www.kawaii-presenter.com/is-es/cart"> 322<link rel="alternate" hreflang="nl-IT" href="https://www.kawaii-presenter.com/nl-es/cart"> 323<link rel="alternate" hreflang="el-IT" href="https://www.kawaii-presenter.com/el-es/cart"> 324<link rel="alternate" hreflang="da-IT" href="https://www.kawaii-presenter.com/da-es/cart"> 325<link rel="alternate" hreflang="no-IT" href="https://www.kawaii-presenter.com/no-es/cart"> 326<link rel="alternate" hreflang="fi-IT" href="https://www.kawaii-presenter.com/fi-es/cart"> 327<link rel="alternate" hreflang="en-FI" href="https://www.kawaii-presenter.com/en-es/cart"> 328<link rel="alternate" hreflang="fr-FI" href="https://www.kawaii-presenter.com/fr-es/cart"> 329<link rel="alternate" hreflang="de-FI" href="https://www.kawaii-presenter.com/de-es/cart"> 330<link rel="alternate" hreflang="es-FI" href="https://www.kawaii-presenter.com/es-es/cart"> 331<link rel="alternate" hreflang="sv-FI" href="https://www.kawaii-presenter.com/sv-es/cart"> 332<link rel="alternate" hreflang="it-FI" href="https://www.kawaii-presenter.com/it-es/cart"> 333<link rel="alternate" hreflang="is-FI" href="https://www.kawaii-presenter.com/is-es/cart"> 334<link rel="alternate" hreflang="nl-FI" href="https://www.kawaii-presenter.com/nl-es/cart"> 335<link rel="alternate" hreflang="el-FI" href="https://www.kawaii-presenter.com/el-es/cart"> 336<link rel="alternate" hreflang="da-FI" href="https://www.kawaii-presenter.com/da-es/cart"> 337<link rel="alternate" hreflang="no-FI" href="https://www.kawaii-presenter.com/no-es/cart"> 338<link rel="alternate" hreflang="fi-FI" href="https://www.kawaii-presenter.com/fi-es/cart"> 339<link rel="alternate" hreflang="en-BE" href="https://www.kawaii-presenter.com/en-es/cart"> 340<link rel="alternate" hreflang="fr-BE" href="https://www.kawaii-presenter.com/fr-es/cart"> 341<link rel="alternate" hreflang="de-BE" href="https://www.kawaii-presenter.com/de-es/cart"> 342<link rel="alternate" hreflang="es-BE" href="https://www.kawaii-presenter.com/es-es/cart"> 343<link rel="alternate" hreflang="sv-BE" href="https://www.kawaii-presenter.com/sv-es/cart"> 344<link rel="alternate" hreflang="it-BE" href="https://www.kawaii-presenter.com/it-es/cart"> 345<link rel="alternate" hreflang="is-BE" href="https://www.kawaii-presenter.com/is-es/cart"> 346<link rel="alternate" hreflang="nl-BE" href="https://www.kawaii-presenter.com/nl-es/cart"> 347<link rel="alternate" hreflang="el-BE" href="https://www.kawaii-presenter.com/el-es/cart"> 348<link rel="alternate" hreflang="da-BE" href="https://www.kawaii-presenter.com/da-es/cart"> 349<link rel="alternate" hreflang="no-BE" href="https://www.kawaii-presenter.com/no-es/cart"> 350<link rel="alternate" hreflang="fi-BE" href="https://www.kawaii-presenter.com/fi-es/cart"> 351<link rel="alternate" hreflang="en-BG" href="https://www.kawaii-presenter.com/en-es/cart"> 352<link rel="alternate" hreflang="fr-BG" href="https://www.kawaii-presenter.com/fr-es/cart"> 353<link rel="alternate" hreflang="de-BG" href="https://www.kawaii-presenter.com/de-es/cart"> 354<link rel="alternate" hreflang="es-BG" href="https://www.kawaii-presenter.com/es-es/cart"> 355<link rel="alternate" hreflang="sv-BG" href="https://www.kawaii-presenter.com/sv-es/cart"> 356<link rel="alternate" hreflang="it-BG" href="https://www.kawaii-presenter.com/it-es/cart"> 357<link rel="alternate" hreflang="is-BG" href="https://www.kawaii-presenter.com/is-es/cart"> 358<link rel="alternate" hreflang="nl-BG" href="https://www.kawaii-presenter.com/nl-es/cart"> 359<link rel="alternate" hreflang="el-BG" href="https://www.kawaii-presenter.com/el-es/cart"> 360<link rel="alternate" hreflang="da-BG" href="https://www.kawaii-presenter.com/da-es/cart"> 361<link rel="alternate" hreflang="no-BG" href="https://www.kawaii-presenter.com/no-es/cart"> 362<link rel="alternate" hreflang="fi-BG" href="https://www.kawaii-presenter.com/fi-es/cart"> 363<link rel="alternate" hreflang="en-HR" href="https://www.kawaii-presenter.com/en-es/cart"> 364<link rel="alternate" hreflang="fr-HR" href="https://www.kawaii-presenter.com/fr-es/cart"> 365<link rel="alternate" hreflang="de-HR" href="https://www.kawaii-presenter.com/de-es/cart"> 366<link rel="alternate" hreflang="es-HR" href="https://www.kawaii-presenter.com/es-es/cart"> 367<link rel="alternate" hreflang="sv-HR" href="https://www.kawaii-presenter.com/sv-es/cart"> 368<link rel="alternate" hreflang="it-HR" href="https://www.kawaii-presenter.com/it-es/cart">
369<link rel="alternate" hreflang="is-HR" href="https://www.kawaii-presenter.com/is-es/cart"> 370<link rel="alternate" hreflang="nl-HR" href="https://www.kawaii-presenter.com/nl-es/cart"> 371<link rel="alternate" hreflang="el-HR" href="https://www.kawaii-presenter.com/el-es/cart"> 372<link rel="alternate" hreflang="da-HR" href="https://www.kawaii-presenter.com/da-es/cart"> 373<link rel="alternate" hreflang="no-HR" href="https://www.kawaii-presenter.com/no-es/cart"> 374<link rel="alternate" hreflang="fi-HR" href="https://www.kawaii-presenter.com/fi-es/cart"> 375<link rel="alternate" hreflang="en-CZ" href="https://www.kawaii-presenter.com/en-es/cart"> 376<link rel="alternate" hreflang="fr-CZ" href="https://www.kawaii-presenter.com/fr-es/cart"> 377<link rel="alternate" hreflang="de-CZ" href="https://www.kawaii-presenter.com/de-es/cart"> 378<link rel="alternate" hreflang="es-CZ" href="https://www.kawaii-presenter.com/es-es/cart"> 379<link rel="alternate" hreflang="sv-CZ" href="https://www.kawaii-presenter.com/sv-es/cart"> 380<link rel="alternate" hreflang="it-CZ" href="https://www.kawaii-presenter.com/it-es/cart"> 381<link rel="alternate" hreflang="is-CZ" href="https://www.kawaii-presenter.com/is-es/cart"> 382<link rel="alternate" hreflang="nl-CZ" href="https://www.kawaii-presenter.com/nl-es/cart"> 383<link rel="alternate" hreflang="el-CZ" href="https://www.kawaii-presenter.com/el-es/cart"> 384<link rel="alternate" hreflang="da-CZ" href="https://www.kawaii-presenter.com/da-es/cart"> 385<link rel="alternate" hreflang="no-CZ" href="https://www.kawaii-presenter.com/no-es/cart"> 386<link rel="alternate" hreflang="fi-CZ" href="https://www.kawaii-presenter.com/fi-es/cart"> 387<link rel="alternate" hreflang="en-EE" href="https://www.kawaii-presenter.com/en-es/cart"> 388<link rel="alternate" hreflang="fr-EE" href="https://www.kawaii-presenter.com/fr-es/cart"> 389<link rel="alternate" hreflang="de-EE" href="https://www.kawaii-presenter.com/de-es/cart"> 390<link rel="alternate" hreflang="es-EE" href="https://www.kawaii-presenter.com/es-es/cart"> 391<link rel="alternate" hreflang="sv-EE" href="https://www.kawaii-presenter.com/sv-es/cart"> 392<link rel="alternate" hreflang="it-EE" href="https://www.kawaii-presenter.com/it-es/cart"> 393<link rel="alternate" hreflang="is-EE" href="https://www.kawaii-presenter.com/is-es/cart"> 394<link rel="alternate" hreflang="nl-EE" href="https://www.kawaii-presenter.com/nl-es/cart"> 395<link rel="alternate" hreflang="el-EE" href="https://www.kawaii-presenter.com/el-es/cart"> 396<link rel="alternate" hreflang="da-EE" href="https://www.kawaii-presenter.com/da-es/cart"> 397<link rel="alternate" hreflang="no-EE" href="https://www.kawaii-presenter.com/no-es/cart"> 398<link rel="alternate" hreflang="fi-EE" href="https://www.kawaii-presenter.com/fi-es/cart"> 399<link rel="alternate" hreflang="en-GR" href="https://www.kawaii-presenter.com/en-es/cart"> 400<link rel="alternate" hreflang="fr-GR" href="https://www.kawaii-presenter.com/fr-es/cart"> 401<link rel="alternate" hreflang="de-GR" href="https://www.kawaii-presenter.com/de-es/cart"> 402<link rel="alternate" hreflang="es-GR" href="https://www.kawaii-presenter.com/es-es/cart"> 403<link rel="alternate" hreflang="sv-GR" href="https://www.kawaii-presenter.com/sv-es/cart"> 404<link rel="alternate" hreflang="it-GR" href="https://www.kawaii-presenter.com/it-es/cart"> 405<link rel="alternate" hreflang="is-GR" href="https://www.kawaii-presenter.com/is-es/cart"> 406<link rel="alternate" hreflang="nl-GR" href="https://www.kawaii-presenter.com/nl-es/cart"> 407<link rel="alternate" hreflang="el-GR" href="https://www.kawaii-presenter.com/el-es/cart"> 408<link rel="alternate" hreflang="da-GR" href="https://www.kawaii-presenter.com/da-es/cart"> 409<link rel="alternate" hreflang="no-GR" href="https://www.kawaii-presenter.com/no-es/cart"> 410<link rel="alternate" hreflang="fi-GR" href="https://www.kawaii-presenter.com/fi-es/cart"> 411<link rel="alternate" hreflang="en-HU" href="https://www.kawaii-presenter.com/en-es/cart"> 412<link rel="alternate" hreflang="fr-HU" href="https://www.kawaii-presenter.com/fr-es/cart"> 413<link rel="alternate" hreflang="de-HU" href="https://www.kawaii-presenter.com/de-es/cart"> 414<link rel="alternate" hreflang="es-HU" href="https://www.kawaii-presenter.com/es-es/cart"> 415<link rel="alternate" hreflang="sv-HU" href="https://www.kawaii-presenter.com/sv-es/cart"> 416<link rel="alternate" hreflang="it-HU" href="https://www.kawaii-presenter.com/it-es/cart"> 417<link rel="alternate" hreflang="is-HU" href="https://www.kawaii-presenter.com/is-es/cart"> 418<link rel="alternate" hreflang="nl-HU" href="https://www.kawaii-presenter.com/nl-es/cart"> 419<link rel="alternate" hreflang="el-HU" href="https://www.kawaii-presenter.com/el-es/cart"> 420<link rel="alternate" hreflang="da-HU" href="https://www.kawaii-presenter.com/da-es/cart"> 421<link rel="alternate" hreflang="no-HU" href="https://www.kawaii-presenter.com/no-es/cart"> 422<link rel="alternate" hreflang="fi-HU" href="https://www.kawaii-presenter.com/fi-es/cart"> 423<link rel="alternate" hreflang="en-IE" href="https://www.kawaii-presenter.com/en-es/cart"> 424<link rel="alternate" hreflang="fr-IE" href="https://www.kawaii-presenter.com/fr-es/cart"> 425<link rel="alternate" hreflang="de-IE" href="https://www.kawaii-presenter.com/de-es/cart"> 426<link rel="alternate" hreflang="es-IE" href="https://www.kawaii-presenter.com/es-es/cart"> 427<link rel="alternate" hreflang="sv-IE" href="https://www.kawaii-presenter.com/sv-es/cart"> 428<link rel="alternate" hreflang="it-IE" href="https://www.kawaii-presenter.com/it-es/cart"> 429<link rel="alternate" hreflang="is-IE" href="https://www.kawaii-presenter.com/is-es/cart"> 430<link rel="alternate" hreflang="nl-IE" href="https://www.kawaii-presenter.com/nl-es/cart"> 431<link rel="alternate" hreflang="el-IE" href="https://www.kawaii-presenter.com/el-es/cart"> 432<link rel="alternate" hreflang="da-IE" href="https://www.kawaii-presenter.com/da-es/cart"> 433<link rel="alternate" hreflang="no-IE" href="https://www.kawaii-presenter.com/no-es/cart"> 434<link rel="alternate" hreflang="fi-IE" href="https://www.kawaii-presenter.com/fi-es/cart"> 435<link rel="alternate" hreflang="en-LV" href="https://www.kawaii-presenter.com/en-es/cart"> 436<link rel="alternate" hreflang="fr-LV" href="https://www.kawaii-presenter.com/fr-es/cart"> 437<link rel="alternate" hreflang="de-LV" href="https://www.kawaii-presenter.com/de-es/cart"> 438<link rel="alternate" hreflang="es-LV" href="https://www.kawaii-presenter.com/es-es/cart"> 439<link rel="alternate" hreflang="sv-LV" href="https://www.kawaii-presenter.com/sv-es/cart"> 440<link rel="alternate" hreflang="it-LV" href="https://www.kawaii-presenter.com/it-es/cart"> 441<link rel="alternate" hreflang="is-LV" href="https://www.kawaii-presenter.com/is-es/cart"> 442<link rel="alternate" hreflang="nl-LV" href="https://www.kawaii-presenter.com/nl-es/cart"> 443<link rel="alternate" hreflang="el-LV" href="https://www.kawaii-presenter.com/el-es/cart"> 444<link rel="alternate" hreflang="da-LV" href="https://www.kawaii-presenter.com/da-es/cart"> 445<link rel="alternate" hreflang="no-LV" href="https://www.kawaii-presenter.com/no-es/cart"> 446<link rel="alternate" hreflang="fi-LV" href="https://www.kawaii-presenter.com/fi-es/cart"> 447<link rel="alternate" hreflang="en-LT" href="https://www.kawaii-presenter.com/en-es/cart"> 448<link rel="alternate" hreflang="fr-LT" href="https://www.kawaii-presenter.com/fr-es/cart"> 449<link rel="alternate" hreflang="de-LT" href="https://www.kawaii-presenter.com/de-es/cart"> 450<link rel="alternate" hreflang="es-LT" href="https://www.kawaii-presenter.com/es-es/cart"> 451<link rel="alternate" hreflang="sv-LT" href="https://www.kawaii-presenter.com/sv-es/cart"> 452<link rel="alternate" hreflang="it-LT" href="https://www.kawaii-presenter.com/it-es/cart"> 453<link rel="alternate" hreflang="is-LT" href="https://www.kawaii-presenter.com/is-es/cart"> 454<link rel="alternate" hreflang="nl-LT" href="https://www.kawaii-presenter.com/nl-es/cart"> 455<link rel="alternate" hreflang="el-LT" href="https://www.kawaii-presenter.com/el-es/cart"> 456<link rel="alternate" hreflang="da-LT" href="https://www.kawaii-presenter.com/da-es/cart"> 457<link rel="alternate" hreflang="no-LT" href="https://www.kawaii-presenter.com/no-es/cart"> 458<link rel="alternate" hreflang="fi-LT" href="https://www.kawaii-presenter.com/fi-es/cart"> 459<link rel="alternate" hreflang="en-LU" href="https://www.kawaii-presenter.com/en-es/cart"> 460<link rel="alternate" hreflang="fr-LU" href="https://www.kawaii-presenter.com/fr-es/cart"> 461<link rel="alternate" hreflang="de-LU" href="https://www.kawaii-presenter.com/de-es/cart"> 462<link rel="alternate" hreflang="es-LU" href="https://www.kawaii-presenter.com/es-es/cart"> 463<link rel="alternate" hreflang="sv-LU" href="https://www.kawaii-presenter.com/sv-es/cart"> 464<link rel="alternate" hreflang="it-LU" href="https://www.kawaii-presenter.com/it-es/cart"> 465<link rel="alternate" hreflang="is-LU" href="https://www.kawaii-presenter.com/is-es/cart"> 466<link rel="alternate" hreflang="nl-LU" href="https://www.kawaii-presenter.com/nl-es/cart"> 467<link rel="alternate" hreflang="el-LU" href="https://www.kawaii-presenter.com/el-es/cart"> 468<link rel="alternate" hreflang="da-LU" href="https://www.kawaii-presenter.com/da-es/cart"> 469<link rel="alternate" hreflang="no-LU" href="https://www.kawaii-presenter.com/no-es/cart"> 470<link rel="alternate" hreflang="fi-LU" href="https://www.kawaii-presenter.com/fi-es/cart"> 471<link rel="alternate" hreflang="en-MT" href="https://www.kawaii-presenter.com/en-es/cart"> 472<link rel="alternate" hreflang="fr-MT" href="https://www.kawaii-presenter.com/fr-es/cart"> 473<link rel="alternate" hreflang="de-MT" href="https://www.kawaii-presenter.com/de-es/cart"> 474<link rel="alternate" hreflang="es-MT" href="https://www.kawaii-presenter.com/es-es/cart"> 475<link rel="alternate" hreflang="sv-MT" href="https://www.kawaii-presenter.com/sv-es/cart"> 476<link rel="alternate" hreflang="it-MT" href="https://www.kawaii-presenter.com/it-es/cart"> 477<link rel="alternate" hreflang="is-MT" href="https://www.kawaii-presenter.com/is-es/cart"> 478<link rel="alternate" hreflang="nl-MT" href="https://www.kawaii-presenter.com/nl-es/cart"> 479<link rel="alternate" hreflang="el-MT" href="https://www.kawaii-presenter.com/el-es/cart"> 480<link rel="alternate" hreflang="da-MT" href="https://www.kawaii-presenter.com/da-es/cart"> 481<link rel="alternate" hreflang="no-MT" href="https://www.kawaii-presenter.com/no-es/cart"> 482<link rel="alternate" hreflang="fi-MT" href="https://www.kawaii-presenter.com/fi-es/cart"> 483<link rel="alternate" hreflang="en-NL" href="https://www.kawaii-presenter.com/en-es/cart"> 484<link rel="alternate" hreflang="fr-NL" href="https://www.kawaii-presenter.com/fr-es/cart"> 485<link rel="alternate" hreflang="de-NL" href="https://www.kawaii-presenter.com/de-es/cart"> 486<link rel="alternate" hreflang="es-NL" href="https://www.kawaii-presenter.com/es-es/cart"> 487<link rel="alternate" hreflang="sv-NL" href="https://www.kawaii-presenter.com/sv-es/cart"> 488<link rel="alternate" hreflang="it-NL" href="https://www.kawaii-presenter.com/it-es/cart"> 489<link rel="alternate" hreflang="is-NL" href="https://www.kawaii-presenter.com/is-es/cart"> 490<link rel="alternate" hreflang="nl-NL" href="https://www.kawaii-presenter.com/nl-es/cart"> 491<link rel="alternate" hreflang="el-NL" href="https://www.kawaii-presenter.com/el-es/cart"> 492<link rel="alternate" hreflang="da-NL" href="https://www.kawaii-presenter.com/da-es/cart"> 493<link rel="alternate" hreflang="no-NL" href="https://www.kawaii-presenter.com/no-es/cart"> 494<link rel="alternate" hreflang="fi-NL" href="https://www.kawaii-presenter.com/fi-es/cart"> 495<link rel="alternate" hreflang="en-PL" href="https://www.kawaii-presenter.com/en-es/cart"> 496<link rel="alternate" hreflang="fr-PL" href="https://www.kawaii-presenter.com/fr-es/cart"> 497<link rel="alternate" hreflang="de-PL" href="https://www.kawaii-presenter.com/de-es/cart"> 498<link rel="alternate" hreflang="es-PL" href="https://www.kawaii-presenter.com/es-es/cart"> 499<link rel="alternate" hreflang="sv-PL" href="https://www.kawaii-presenter.com/sv-es/cart"> 500<link rel="alternate" hreflang="it-PL" href="https://www.kawaii-presenter.com/it-es/cart"> 501<link rel="alternate" hreflang="is-PL" href="https://www.kawaii-presenter.com/is-es/cart"> 502<link rel="alternate" hreflang="nl-PL" href="https://www.kawaii-presenter.com/nl-es/cart"> 503<link rel="alternate" hreflang="el-PL" href="https://www.kawaii-presenter.com/el-es/cart"> 504<link rel="alternate" hreflang="da-PL" href="https://www.kawaii-presenter.com/da-es/cart"> 505<link rel="alternate" hreflang="no-PL" href="https://www.kawaii-presenter.com/no-es/cart"> 506<link rel="alternate" hreflang="fi-PL" href="https://www.kawaii-presenter.com/fi-es/cart"> 507<link rel="alternate" hreflang="en-PT" href="https://www.kawaii-presenter.com/en-es/cart"> 508<link rel="alternate" hreflang="fr-PT" href="https://www.kawaii-presenter.com/fr-es/cart"> 509<link rel="alternate" hreflang="de-PT" href="https://www.kawaii-presenter.com/de-es/cart"> 510<link rel="alternate" hreflang="es-PT" href="https://www.kawaii-presenter.com/es-es/cart"> 511<link rel="alternate" hreflang="sv-PT" href="https://www.kawaii-presenter.com/sv-es/cart"> 512<link rel="alternate" hreflang="it-PT" href="https://www.kawaii-presenter.com/it-es/cart"> 513<link rel="alternate" hreflang="is-PT" href="https://www.kawaii-presenter.com/is-es/cart"> 514<link rel="alternate" hreflang="nl-PT" href="https://www.kawaii-presenter.com/nl-es/cart"> 515<link rel="alternate" hreflang="el-PT" href="https://www.kawaii-presenter.com/el-es/cart"> 516<link rel="alternate" hreflang="da-PT" href="https://www.kawaii-presenter.com/da-es/cart"> 517<link rel="alternate" hreflang="no-PT" href="https://www.kawaii-presenter.com/no-es/cart"> 518<link rel="alternate" hreflang="fi-PT" href="https://www.kawaii-presenter.com/fi-es/cart"> 519<link rel="alternate" hreflang="en-RO" href="https://www.kawaii-presenter.com/en-es/cart"> 520<link rel="alternate" hreflang="fr-RO" href="https://www.kawaii-presenter.com/fr-es/cart"> 521<link rel="alternate" hreflang="de-RO" href="https://www.kawaii-presenter.com/de-es/cart"> 522<link rel="alternate" hreflang="es-RO" href="https://www.kawaii-presenter.com/es-es/cart"> 523<link rel="alternate" hreflang="sv-RO" href="https://www.kawaii-presenter.com/sv-es/cart"> 524<link rel="alternate" hreflang="it-RO" href="https://www.kawaii-presenter.com/it-es/cart"> 525<link rel="alternate" hreflang="is-RO" href="https://www.kawaii-presenter.com/is-es/cart"> 526<link rel="alternate" hreflang="nl-RO" href="https://www.kawaii-presenter.com/nl-es/cart"> 527<link rel="alternate" hreflang="el-RO" href="https://www.kawaii-presenter.com/el-es/cart"> 528<link rel="alternate" hreflang="da-RO" href="https://www.kawaii-presenter.com/da-es/cart"> 529<link rel="alternate" hreflang="no-RO" href="https://www.kawaii-presenter.com/no-es/cart"> 530<link rel="alternate" hreflang="fi-RO" href="https://www.kawaii-presenter.com/fi-es/cart"> 531<link rel="alternate" hreflang="en-SK" href="https://www.kawaii-presenter.com/en-es/cart"> 532<link rel="alternate" hreflang="fr-SK" href="https://www.kawaii-presenter.com/fr-es/cart"> 533<link rel="alternate" hreflang="de-SK" href="https://www.kawaii-presenter.com/de-es/cart"> 534<link rel="alternate" hreflang="es-SK" href="https://www.kawaii-presenter.com/es-es/cart"> 535<link rel="alternate" hreflang="sv-SK" href="https://www.kawaii-presenter.com/sv-es/cart"> 536<link rel="alternate" hreflang="it-SK" href="https://www.kawaii-presenter.com/it-es/cart"> 537<link rel="alternate" hreflang="is-SK" href="https://www.kawaii-presenter.com/is-es/cart"> 538<link rel="alternate" hreflang="nl-SK" href="https://www.kawaii-presenter.com/nl-es/cart"> 539<link rel="alternate" hreflang="el-SK" href="https://www.kawaii-presenter.com/el-es/cart"> 540<link rel="alternate" hreflang="da-SK" href="https://www.kawaii-presenter.com/da-es/cart"> 541<link rel="alternate" hreflang="no-SK" href="https://www.kawaii-presenter.com/no-es/cart"> 542<link rel="alternate" hreflang="fi-SK" href="https://www.kawaii-presenter.com/fi-es/cart"> 543<link rel="alternate" hreflang="en-SI" href="https://www.kawaii-presenter.com/en-es/cart"> 544<link rel="alternate" hreflang="fr-SI" href="https://www.kawaii-presenter.com/fr-es/cart"> 545<link rel="alternate" hreflang="de-SI" href="https://www.kawaii-presenter.com/de-es/cart"> 546<link rel="alternate" hreflang="es-SI" href="https://www.kawaii-presenter.com/es-es/cart"> 547<link rel="alternate" hreflang="sv-SI" href="https://www.kawaii-presenter.com/sv-es/cart"> 548<link rel="alternate" hreflang="it-SI" href="https://www.kawaii-presenter.com/it-es/cart"> 549<lin
549k rel="alternate" hreflang="is-SI" href="https://www.kawaii-presenter.com/is-es/cart"> 550<link rel="alternate" hreflang="nl-SI" href="https://www.kawaii-presenter.com/nl-es/cart"> 551<link rel="alternate" hreflang="el-SI" href="https://www.kawaii-presenter.com/el-es/cart"> 552<link rel="alternate" hreflang="da-SI" href="https://www.kawaii-presenter.com/da-es/cart"> 553<link rel="alternate" hreflang="no-SI" href="https://www.kawaii-presenter.com/no-es/cart"> 554<link rel="alternate" hreflang="fi-SI" href="https://www.kawaii-presenter.com/fi-es/cart"> 555<link rel="alternate" hreflang="en-NO" href="https://www.kawaii-presenter.com/en-es/cart"> 556<link rel="alternate" hreflang="fr-NO" href="https://www.kawaii-presenter.com/fr-es/cart"> 557<link rel="alternate" hreflang="de-NO" href="https://www.kawaii-presenter.com/de-es/cart"> 558<link rel="alternate" hreflang="es-NO" href="https://www.kawaii-presenter.com/es-es/cart"> 559<link rel="alternate" hreflang="sv-NO" href="https://www.kawaii-presenter.com/sv-es/cart"> 560<link rel="alternate" hreflang="it-NO" href="https://www.kawaii-presenter.com/it-es/cart"> 561<link rel="alternate" hreflang="is-NO" href="https://www.kawaii-presenter.com/is-es/cart"> 562<link rel="alternate" hreflang="nl-NO" href="https://www.kawaii-presenter.com/nl-es/cart"> 563<link rel="alternate" hreflang="el-NO" href="https://www.kawaii-presenter.com/el-es/cart"> 564<link rel="alternate" hreflang="da-NO" href="https://www.kawaii-presenter.com/da-es/cart"> 565<link rel="alternate" hreflang="no-NO" href="https://www.kawaii-presenter.com/no-es/cart"> 566<link rel="alternate" hreflang="fi-NO" href="https://www.kawaii-presenter.com/fi-es/cart"> 567<link rel="alternate" hreflang="en-FR" href="https://www.kawaii-presenter.com/en-es/cart"> 568<link rel="alternate" hreflang="fr-FR" href="https://www.kawaii-presenter.com/fr-es/cart"> 569<link rel="alternate" hreflang="de-FR" href="https://www.kawaii-presenter.com/de-es/cart"> 570<link rel="alternate" hreflang="es-FR" href="https://www.kawaii-presenter.com/es-es/cart"> 571<link rel="alternate" hreflang="sv-FR" href="https://www.kawaii-presenter.com/sv-es/cart"> 572<link rel="alternate" hreflang="it-FR" href="https://www.kawaii-presenter.com/it-es/cart"> 573<link rel="alternate" hreflang="is-FR" href="https://www.kawaii-presenter.com/is-es/cart"> 574<link rel="alternate" hreflang="nl-FR" href="https://www.kawaii-presenter.com/nl-es/cart"> 575<link rel="alternate" hreflang="el-FR" href="https://www.kawaii-presenter.com/el-es/cart"> 576<link rel="alternate" hreflang="da-FR" href="https://www.kawaii-presenter.com/da-es/cart"> 577<link rel="alternate" hreflang="no-FR" href="https://www.kawaii-presenter.com/no-es/cart"> 578<link rel="alternate" hreflang="fi-FR" href="https://www.kawaii-presenter.com/fi-es/cart"> 579<link rel="alternate" hreflang="en-AT" href="https://www.kawaii-presenter.com/en-es/cart"> 580<link rel="alternate" hreflang="fr-AT" href="https://www.kawaii-presenter.com/fr-es/cart"> 581<link rel="alternate" hreflang="de-AT" href="https://www.kawaii-presenter.com/de-es/cart"> 582<link rel="alternate" hreflang="es-AT" href="https://www.kawaii-presenter.com/es-es/cart"> 583<link rel="alternate" hreflang="sv-AT" href="https://www.kawaii-presenter.com/sv-es/cart"> 584<link rel="alternate" hreflang="it-AT" href="https://www.kawaii-presenter.com/it-es/cart"> 585<link rel="alternate" hreflang="is-AT" href="https://www.kawaii-presenter.com/is-es/cart"> 586<link rel="alternate" hreflang="nl-AT" href="https://www.kawaii-presenter.com/nl-es/cart"> 587<link rel="alternate" hreflang="el-AT" href="https://www.kawaii-presenter.com/el-es/cart"> 588<link rel="alternate" hreflang="da-AT" href="https://www.kawaii-presenter.com/da-es/cart"> 589<link rel="alternate" hreflang="no-AT" href="https://www.kawaii-presenter.com/no-es/cart"> 590<link rel="alternate" hreflang="fi-AT" href="https://www.kawaii-presenter.com/fi-es/cart"> 591<link rel="alternate" hreflang="en-IS" href="https://www.kawaii-presenter.com/en-es/cart"> 592<link rel="alternate" hreflang="fr-IS" href="https://www.kawaii-presenter.com/fr-es/cart"> 593<link rel="alternate" hreflang="de-IS" href="https://www.kawaii-presenter.com/de-es/cart"> 594<link rel="alternate" hreflang="es-IS" href="https://www.kawaii-presenter.com/es-es/cart"> 595<link rel="alternate" hreflang="sv-IS" href="https://www.kawaii-presenter.com/sv-es/cart"> 596<link rel="alternate" hreflang="it-IS" href="https://www.kawaii-presenter.com/it-es/cart"> 597<link rel="alternate" hreflang="is-IS" href="https://www.kawaii-presenter.com/is-es/cart"> 598<link rel="alternate" hreflang="nl-IS" href="https://www.kawaii-presenter.com/nl-es/cart"> 599<link rel="alternate" hreflang="el-IS" href="https://www.kawaii-presenter.com/el-es/cart"> 600<link rel="alternate" hreflang="da-IS" href="https://www.kawaii-presenter.com/da-es/cart"> 601<link rel="alternate" hreflang="no-IS" href="https://www.kawaii-presenter.com/no-es/cart"> 602<link rel="alternate" hreflang="fi-IS" href="https://www.kawaii-presenter.com/fi-es/cart">
603<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
603 604<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
605<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=27649998986" crossorigin="anonymous"></script>
vendor: 1 bytes, line 605
605
606<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":27649998986,"countryCode":"DE","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/27649998986","merchantName":"Kawaii Presenter","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","maestro"],"total":{"type":"pending","label":"Kawaii Presenter","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 606
606
607<script id="shopify-features" type="application/json">{"accessToken":"43a67a320cdf20c9d0ca596e9903c36b","betas":["rich-media-storefront-analytics"],"domain":"spring-beautiful.myshopify.com","predictiveSearch":true,"shopId":27649998986,"locale":"en"}</script>
vendor: 1 bytes, line 607
607
608<script>var Shopify = Shopify || {}; 609Shopify.shop = "spring-beautiful.myshopify.com"; 610Shopify.locale = "en"; 611Shopify.currency = {"active":"USD","rate":"1.1426754"}; 612Shopify.country = "US"; 613Shopify.theme = {"name":"Debut","id":80146268298,"schema_name":"Debut","schema_version":"14.4.0","theme_store_id":796,"role":"main"}; 614Shopify.theme.handle = "null"; 615Shopify.theme.style = {"id":null,"handle":null}; 616Shopify.cdnHost = "spring-beautiful.myshopify.com/cdn"; 617Shopify.routes = Shopify.routes || {}; 618Shopify.routes.root = "/"; 619Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 620Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 621Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 622Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 622
622
623<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 623
623
624<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 624
624
625<script> 626 window.ShopifyPay = window.ShopifyPay || {}; 627 window.ShopifyPay.apiHost = "shop.app\/pay"; 628 window.ShopifyPay.redirectState = null; 629</script>
vendor: 1 bytes, line 629
629
630<script> 631 window.Shopify = window.Shopify || {}; 632 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 633 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 634 window.Shopify.SignInWithShop.eligible = true; 635</script>
vendor: 1 bytes, line 635
635
636<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 636
636
637<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 637
637
638<script type="module"> 639 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 640 641 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 642 643</script>
vendor: 1 bytes, line 643
643
644<script> 645 window.Shopify = window.Shopify || {}; 646 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 647 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"]}; 648</script>
vendor: 1 bytes, line 648
648
649<script id="__st">var __st={"a":27649998986,"offset":7200,"reqid":"db889716-56fb-46a8-aac7-f30157cbd676-1791599925","pageurl":"spring-beautiful.myshopify.com\/cart","u":"ff5895b880ce","p":"cart"};</script>
vendor: 1 bytes, line 649
649
650<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 650
650
651<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 651
651
652<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//spring-beautiful.myshopify.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 652
652
653<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 = "//spring-beautiful.myshopify.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>
653<script crossorigin="anonymous" defer="defer" src="//spring-beautiful.myshopify.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-f0e26bdf.js?v=20250812"></script>
vendor: 1 bytes, line 653
653
654<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 654
654
655<script> 656 window.Shopify = window.Shopify || {}; 657 window.Shopify.MCP = window.Shopify.MCP || {}; 658 window.Shopify.MCP.enabled = true; 659 window.Shopify.MCP.shop = "spring-beautiful.myshopify.com"; 660 window.Shopify.MCP.mcpEndpoint = "https:\/\/spring-beautiful.myshopify.com\/api\/mcp"; 661 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?\"\nSet policy_types to also get the store's written policies (full text and URL).\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."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 662</script>
vendor: 1 bytes, line 662
662
663<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("\/\/spring-beautiful.myshopify.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-f427de6a.js","sha256-ypGF+5vIq4Psw4WG7nsVtdd\/TCfsJWnrNuACdqLCElY=");})(); 664</script>
vendor: 1 bytes, line 664
664
665<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://spring-beautiful.myshopify.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 666</script>
vendor: 1 bytes, line 666
666
667<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 668 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); 669</script>
vendor: 1 bytes, line 669
669
670<script> 671 function portableWalletsCleanup(e){e&&e.src&&console.error("Failed to load portable wallets script "+e.src);var t=document.querySelectorAll("shopify-accelerated-checkout .shopify-payment-button__skeleton, shopify-accelerated-checkout-cart .wallet-cart-button__skeleton"),e=document.getElementById("shopify-buyer-consent");for(let e=0;e<t.length;e++)t[e].remove();e&&e.remove()}function portableWalletsNotLoadedAsModule(e){e instanceof ErrorEvent&&"string"==typeof e.message&&e.message.includes("import.meta")&&"string"==typeof e.filename&&e.filename.includes("portable-wallets")&&(window.removeEventListener("error",portableWalletsNotLoadedAsModule),window.Shopify.PaymentButton.failedToLoad=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",window.Shopify.PaymentButton.init):window.Shopify.PaymentButton.init())}window.addEventListener("error",portableWalletsNotLoadedAsModule); 672</script>
672 673
674<script type="module" src="https://spring-beautiful.myshopify.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js" onError="portableWalletsCleanup(this)" crossorigin="anonymous"></script>
vendor: 1 bytes, line 674
674
675<script nomodule> 676 document.addEventListener("DOMContentLoaded", portableWalletsCleanup); 677</script>
677 678
679<script id='scb4127' type='text/javascript' async='' src='https://spring-beautiful.myshopify.com/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
679<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://spring-beautiful.myshopify.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 680<style id="shopify-accelerated-checkout-cart"> 681 #shopify-buyer-consent { 682 margin-top: 1em; 683 display: inline-block; 684 width: 100%; 685} 686 687#shopify-buyer-consent.hidden { 688 display: none; 689} 690 691#shopify-subscription-policy-button { 692 background: none; 693 border: none; 694 padding: 0; 695 text-decoration: underline; 696 font-size: inherit; 697 cursor: pointer; 698} 699 700#shopify-subscription-policy-button::before { 701 box-shadow: none; 702} 703 704 </style> 705
706<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
706 707<!-- BEGIN app block: shopify://apps/nospy/blocks/app-block/0ea824f6-5b8e-445c-b27f-1d4763c81aa3 -->
707<script> 708 709 const noSpySettings = {"v":1,"activation_status":true,"protect_sales":true,"analytic_log":false,"access_token":"xSuolvBnVzxdyqyMPsRdUY4Vy7Cw4GJYvJprLo1Le9L9wDU2HFoy5EO5EXr2bEinODCLFzbKftxQc2YNzRwljOzR1US05SgK94G4b7yz1t3v744WZelBrWxSCpBXPgCLyQf25RCmWetLlIZvo","token_session_days":1,"settings":{"image_drag":false,"right_click":false,"text_selection":false,"copy_paste":false,"keys_shortcuts":false,"spy_extensions":1,"spy_extensions_block_mode":1,"spy_extensions_redirect_url":null,"inspect_elements":false,"web_page_print":false,"inspect_elements_message":"WARNING - This website is legally protected. Our content is copyrighted and our trademark is registered. ð« Any copy is prohibited and may lead to legal action.","block_spam_bots":1,"proxy_vpn_block":1,"proxy_vpn_redirect_url":null,"tor_block":1,"redirect":0},"excludes":[],"allowed_bots":null}; 710 711 712 713 const noSpyRedirects = {"v":1,"rules":[]}; 714 715 716 717 const noSpyInternalPages = []; 718 719 720 let my_shop = Shopify.shop; 721 const noSpyBaseUrl = "https://visitors.nospyapp.com/api"; 722 const noSpyLegacyUrl = "https://app.nospyapp.com/api"; 723 724 // Destinations are stored as bare hosts, but some legacy rows carry a scheme. 725 // Prepending unconditionally produced "https://https://example.com". 726 const toExternalUrl = (value) => { 727 const v = String(value ?? '').trim(); 728 return /^https?:\/\//i.test(v) ? v : `https://${v}`; 729 }; 730 let isNoSpyLogCreated = false; 731 732 window.NoSpyStore = { 733 ip: null, 734 geolocation: null, 735 sessionId: null, 736 sessionStart: null, 737 reached: null, 738 }; 739 // =========================================== 740 // BROWSER/ALLOWED BOTS DETECTION 741 // =========================================== 742 743 const userAgent = navigator?.userAgent || 'unknown-user-agent'; 744 745 const isLighthouseMode = /Lighthouse/i.test(userAgent); 746 const isGoogleBot = /Googlebot|Google-InspectionTool|Storebot-Google|AdsBot-Google|Lighthouse|GoogleOther|Google-CloudVertexBot|Google-Extended|APIs-Google|Mediapartners-Google|Google-Safety|DuplexWeb-Google|googleweblight|FeedFetcher-Google|GoogleProducer|Google-Read-Aloud|Google-Site-Verification/i.test(userAgent); 747 const isFacebookBot = /facebookexternalhit|facebookcatalog|meta-webindexer|meta-externalads|meta-externalagent|meta-externalfetcher|Facebot/i.test(userAgent); 748 const isBingBot = /bingbot|adidxbot/i.test(userAgent); 749 const isWhitelistBots = isLighthouseMode || isGoogleBot || isFacebookBot || isBingBot; 750 751 // Check Iframe 752 function isLoadedInIframe() { 753 try { 754 return window.self !== window.top; 755 } catch (e) { 756 return true; 757 } 758 } 759 760 const createHit = (data) => { 761 fetch(`${noSpyBaseUrl}/hit?shop=${Shopify.shop}`, { 762 method: "POST", 763 headers: { 764 "Content-Type": "application/json", 765 }, 766 body: JSON.stringify(data), 767 }); 768 }; 769 770 const createBlockLog = (payload) => { 771 const data = JSON.stringify(payload); 772 if (navigator.sendBeacon) { 773 navigator.sendBeacon(`${noSpyBaseUrl}/block/log`, data); 774 } else { 775 fetch(`${noSpyBaseUrl}/block/log`, { 776 method: 'POST', 777 body: data, 778 headers: { 'Content-Type': 'application/json' } 779 }); 780 } 781 } 782 783 class SessionService { 784 constructor() { 785 this.sessionKey = 'no_spy_session_id'; 786 this.lastSeenKey = 'no_spy_last_seen_at'; 787 this.timeout = 30 * 60 * 1000; 788 } 789 790 getSessionId() { 791 return sessionStorage.getItem(this.sessionKey); 792 } 793 794 init() { 795 const now = Date.now(); 796 let sessionId = this.getSessionId(); 797 let lastSeen = parseInt(localStorage.getItem(this.lastSeenKey) || "0"); 798 799 if (!sessionId || (now - lastSeen) > this.timeout) { 800 sessionId = crypto.randomUUID(); 801 sessionStorage.setItem(this.sessionKey, sessionId); 802 } 803 804 NoSpyStore.sessionId = sessionId; 805 NoSpyStore.sessionStart = now; 806 this.updateLastSeen(); 807 this.attachListeners(); 808 } 809 810 updateLastSeen() { 811 const now = Date.now(); 812 const lastUpdated = parseInt(localStorage.getItem(this.lastSeenKey), 10) || 0; 813 if (now - lastUpdated > 5000) { 814 // Update local storage 815 localStorage.setItem(this.lastSeenKey, now.toString()); 816 } 817 } 818 819 attachListeners() { 820 const update = this.updateLastSeen.bind(this); 821 document.addEventListener('visibilitychange', update); 822 document.addEventListener('mousemove', update); 823 document.addEventListener('keydown', update); 824 } 825 826 sendBeacon(ip) { 827 if (!ip) return; 828 829 const duration = Math.floor((Date.now() - NoSpyStore.sessionStart) / 1000); 830 const payload = JSON.stringify({ 831 duration, 832 ip_address: ip, 833 session_id: NoSpyStore.sessionId 834 }); 835 836 if (navigator.sendBeacon) { 837 navigator.sendBeacon(`${noSpyBaseUrl}/track-session`, payload); 838 } else { 839 fetch(`${noSpyBaseUrl}/track-session`, { 840 method: 'POST', 841 body: payload, 842 headers: { 843 'Content-Type': 'application/json' 844 } 845 }).then(); 846 } 847 } 848 }; 849 850 class GeoService { 851 constructor() { 852 this.cacheKey = 'no-spy-geo-location'; 853 this.reachedKey = 'no-spy-geo-reached'; 854 } 855 856 loadFromCache() { 857 const cached = localStorage.getItem(this.cacheKey); 858 if (!cached) return null; 859 860 const { expireTime, value } = JSON.parse(cached); 861 if (Date.now() > expireTime) return null; 862 863 return value; 864 } 865 866 saveToCache(data, reached) { 867 localStorage.setItem(this.cacheKey, JSON.stringify({ 868 expireTime: Date.now() + 10800 * 1000, // 3 hours 869 value: data 870 })); 871 localStorage.setItem(this.reachedKey, reached); 872 NoSpyStore.geolocation = data; 873 NoSpyStore.ip = data.ip; 874 NoSpyStore.reached = reached; 875 } 876 877 fetch() { 878 const cached = this.loadFromCache(); 879 if (cached) { 880 NoSpyStore.geolocation = cached; 881 NoSpyStore.ip = cached.ip; 882 return cached; 883 } 884 885 // const res = await fetch(`${noSpyBaseUrl}/geolocation`, { 886 // method: "POST", 887 // headers: { "Content-Type": "application/json" }, 888 // body: JSON.stringify({ ip: this.requestIp, shop }), 889 // }); 890 891 // const json = await res.json(); 892 // if (json.status === 201) { 893 // this.saveToCache(json.data, json.reached); 894 // NoSpyStore.geolocation = json.data; 895 // NoSpyStore.ip = json.data.ip; 896 // NoSpyStore.reached = json.reached; 897 // return this.loadFromCache(); 898 // } 899 return null; 900 } 901 }; 902 903 const IpUtils = { 904 isIPv4(ip) { 905 return /^(\d{1,3}\.){3}\d{1,3}$/.test(ip) && 906 ip.split('.').every(n => parseInt(n) >= 0 && parseInt(n) <= 255); 907 }, 908 909 isIPv6(ip) { 910 return /^[0-9a-fA-F:]+$/.test(ip) && ip.includes(':'); 911 }, 912 913 detectVersion(ip) { 914 if (this.isIPv4(ip)) return 'ipv4'; 915 if (this.isIPv6(ip)) return 'ipv6';
916 return 'invalid'; 917 }, 918 919 ipv4ToLong(ip) { 920 const parts = ip.split('.').map(Number); 921 return ((parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8) | parts[3]) >>> 0; 922 }, 923 924 ipv6ToBigInt(ip) { 925 // Expand :: shorthand 926 let expanded = ip; 927 if (expanded.includes('::')) { 928 const halves = expanded.split('::'); 929 const left = halves[0] ? halves[0].split(':') : []; 930 const right = halves[1] ? halves[1].split(':') : []; 931 const missing = 8 - left.length - right.length; 932 const middle = Array(missing).fill('0000'); 933 expanded = [...left, ...middle, ...right].join(':'); 934 } 935 const parts = expanded.split(':'); 936 let result = BigInt(0); 937 for (const part of parts) { 938 result = (result << BigInt(16)) | BigInt(parseInt(part || '0', 16)); 939 } 940 return result; 941 }, 942 943 isInCidrRange(ip, cidr) { 944 if (!cidr.includes('/')) { 945 return ip.trim() === cidr.trim(); 946 } 947 const [rangeIp, maskStr] = cidr.split('/'); 948 const mask = parseInt(maskStr); 949 const ipVersion = this.detectVersion(ip); 950 const rangeVersion = this.detectVersion(rangeIp); 951 if (ipVersion !== rangeVersion || ipVersion === 'invalid') return false; 952 953 if (ipVersion === 'ipv4') { 954 const ipLong = this.ipv4ToLong(ip); 955 const rangeLong = this.ipv4ToLong(rangeIp); 956 const maskLong = mask === 0 ? 0 : (~0 << (32 - mask)) >>> 0; 957 return (ipLong & maskLong) === (rangeLong & maskLong); 958 } else { 959 const ipBig = this.ipv6ToBigInt(ip); 960 const rangeBig = this.ipv6ToBigInt(rangeIp); 961 const shift = BigInt(128 - mask); 962 return (ipBig >> shift) === (rangeBig >> shift); 963 } 964 }, 965 966 isInRange(ip, startIp, endIp) { 967 const ipVersion = this.detectVersion(ip); 968 const startVersion = this.detectVersion(startIp); 969 const endVersion = this.detectVersion(endIp); 970 if (ipVersion !== startVersion || ipVersion !== endVersion || ipVersion === 'invalid') return false; 971 972 if (ipVersion === 'ipv4') { 973 const ipLong = this.ipv4ToLong(ip); 974 return ipLong >= this.ipv4ToLong(startIp) && ipLong <= this.ipv4ToLong(endIp); 975 } else { 976 const ipBig = this.ipv6ToBigInt(ip); 977 return ipBig >= this.ipv6ToBigInt(startIp) && ipBig <= this.ipv6ToBigInt(endIp); 978 } 979 } 980 }; 981 982 function applyBlockingPage() { 983 const bt = noSpySettings?.blocking_template; 984 const landingEffect = bt?.landing_effect !== false; 985 const html = bt?.html; 986 const pageUrl = bt?.page_url; 987 if (html && landingEffect) { 988 try { 989 if (window.stop) window.stop(); 990 document.head.innerHTML = '<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Access Restricted</title>'; 991 document.body.innerHTML = html; 992 } catch(e) { 993 document.body.innerHTML = html; 994 } 995 } else if (pageUrl) { 996 location.href = pageUrl; 997 } else { 998 const fallbackHtml = '<main style="min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;font-family:Arial,sans-serif;"><div><h1 style="margin:0 0 12px;font-size:32px;">Access Restricted</h1><p style="margin:0;font-size:16px;">This store is not available from your location.</p></div></main>'; 999 try { 1000 if (window.stop) window.stop(); 1001 document.head.innerHTML = '<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Access Restricted</title>'; 1002 document.body.innerHTML = fallbackHtml; 1003 } catch(e) { 1004 document.body.innerHTML = fallbackHtml; 1005 } 1006 } 1007 } 1008 1009 const RedirectMatcher = { 1010 evaluate(rules, geoData, pageHandle, referrer, ip, internetProvider) { 1011 if (!rules || !Array.isArray(rules) || rules.length === 0) return null; 1012 1013 const countryCode = geoData?.countryCode || ''; 1014 const regionName = geoData?.regionName || ''; 1015 const cityName = geoData?.cityName || ''; 1016 const ispName = internetProvider || geoData?.isp_name || ''; 1017 1018 const isRegionEmpty = !regionName || regionName === 'NULL'; 1019 const isCityEmpty = !cityName || cityName === 'NULL'; 1020 1021 // Empty value rule check 1022 if (isRegionEmpty || isCityEmpty) { 1023 for (const rule of rules) { 1024 if (rule.condition !== 'empty_value') continue; 1025 const payload = rule.payload; 1026 if (!payload || payload.value === 'ALL' || payload.value === countryCode) { 1027 return rule; 1028 } 1029 } 1030 } 1031 1032 let matchedRules = []; 1033 1034 for (const rule of rules) { 1035 const redirectUrl = this._getRedirectUrl(rule); 1036 1037 if (!this._shouldRedirect(rule, ip, countryCode, pageHandle, regionName, cityName, ispName, redirectUrl, referrer)) { 1038 continue; 1039 } 1040 1041 // Whitelist break 1042 if (rule.action === 'whitelist') { 1043 break; 1044 } 1045 1046 matchedRules.push(rule); 1047 } 1048 1049 if (matchedRules.length === 0) return null; 1050 1051 // Prioritize internal/blocking_page redirects 1052 const internal = matchedRules.find(r => r.redirect_type === 'internal' || r.redirect_type === 'blocking_page'); 1053 return internal || matchedRules[0]; 1054 }, 1055 1056 _getRedirectUrl(rule) { 1057 if (rule.redirect_type === 'blocking_page') { 1058 return noSpySettings?.blocking_template?.page_url || null; 1059 } 1060 let url = rule.redirect_url; 1061 if (rule.redirect_type === 'internal') { 1062 for (const prefix of ['/pages', '/collections', '/products']) { 1063 if (url && url.startsWith(prefix)) { 1064 url = url.replace(prefix, ''); 1065 break; 1066 } 1067 } 1068 } 1069 return url; 1070 }, 1071 1072 _shouldRedirect(rule, ip, countryCode, pageHandle, regionName, cityName, ispName, redirectUrl, referrer) { 1073 const condition = rule.condition; 1074 const payload = rule.payload; 1075 if (!payload) return false;
1076 1077 if (condition === 'ip' || condition === 'ip_range') { 1078 return this._matchIP(condition, ip, payload, redirectUrl, pageHandle); 1079 } 1080 if (condition === 'province') { 1081 return this._matchProvince(payload, countryCode, regionName, cityName, redirectUrl, pageHandle); 1082 } 1083 if (condition === 'country') { 1084 return this._matchCountry(payload, countryCode, redirectUrl, pageHandle); 1085 } 1086 if (condition === 'referrer_url') { 1087 return this._matchReferrer(payload, countryCode, redirectUrl, pageHandle, referrer); 1088 } 1089 if (condition === 'specific_pages' || condition === 'specific_collections') { 1090 return this._matchUrlPath(condition, payload, countryCode, redirectUrl, pageHandle); 1091 } 1092 if (condition === 'internet_provider') { 1093 return this._matchInternetProvider(payload, ispName, redirectUrl, pageHandle); 1094 } 1095 return false; 1096 }, 1097 1098 _norm(handle) { 1099 return handle && !handle.startsWith('/') ? '/' + handle : (handle || '/'); 1100 }, 1101 1102 _matchIP(condition, customerIp, payload, redirectUrl, pageHandle) { 1103 customerIp = (customerIp || '').trim(); 1104 pageHandle = this._norm(pageHandle); 1105 1106 if (condition === 'ip') { 1107 const payloadIp = (payload.ip || '').trim(); 1108 return customerIp === payloadIp && redirectUrl !== pageHandle; 1109 } 1110 1111 if (condition === 'ip_range') { 1112 const ipBlock = payload.ip_block; 1113 if (ipBlock) { 1114 return IpUtils.isInCidrRange(customerIp, ipBlock) && redirectUrl !== pageHandle; 1115 } 1116 const startIp = payload.ip_range_start; 1117 const endIp = payload.ip_range_end; 1118 if (startIp && endIp) { 1119 return IpUtils.isInRange(customerIp, startIp, endIp) && redirectUrl !== pageHandle; 1120 } 1121 } 1122 return false; 1123 }, 1124 1125 _matchCountry(payload, countryCode, redirectUrl, pageHandle) { 1126 const country = payload.country || payload; 1127 if (!country || !country.value) return false; 1128 pageHandle = this._norm(pageHandle); 1129 if (country.value === 'ALL') return redirectUrl !== pageHandle; 1130 return country.value === countryCode && redirectUrl !== pageHandle; 1131 }, 1132 1133 _matchProvince(payload, countryCode, regionName, cityName, redirectUrl, pageHandle) { 1134 const country = payload.country; 1135 if (!country || !country.value) return false; 1136 if (country.value !== countryCode) return false; 1137 1138 pageHandle = this._norm(pageHandle); 1139 if (redirectUrl === pageHandle) return false; 1140 1141 const province = payload.province; 1142 if (!province || !province.label) return false; 1143 if (!regionName) return false; 1144 1145 if (!this._matchLocationName(province.label, regionName)) return false; 1146 1147 const city = payload.city; 1148 if (city && city.label) { 1149 if (!cityName) return false; 1150 return this._matchLocationName(city.label, cityName); 1151 } 1152 return true; 1153 }, 1154 1155 _matchLocationName(storedName, visitorName) { 1156 const stored = (storedName || '').trim(); 1157 const visitor = (visitorName || '').trim(); 1158 if (stored.toLowerCase() === visitor.toLowerCase()) return true; 1159 1160 const suffixes = [' division', ' province', ' state', ' district', ' region', ' prefecture', ' oblast', ' territory']; 1161 let sLow = stored.toLowerCase(); 1162 let vLow = visitor.toLowerCase(); 1163 for (const suffix of suffixes) { 1164 if (sLow.endsWith(suffix)) sLow = sLow.slice(0, -suffix.length); 1165 if (vLow.endsWith(suffix)) vLow = vLow.slice(0, -suffix.length); 1166 } 1167 if (sLow === vLow) return true; 1168 1169 const sFirst = sLow.split(' ')[0]; 1170 const vFirst = vLow.split(' ')[0]; 1171 if (sFirst === vFirst && sFirst.length > 2) return true; 1172 1173 if (sLow.includes(vLow) || vLow.includes(sLow)) return true; 1174 1175 return false;
1176 }, 1177 1178 _matchReferrer(payload, countryCode, redirectUrl, pageHandle, referrer) { 1179 if (!payload.referrer) return false; 1180 const country = payload.country; 1181 if (!country || !country.value) return false; 1182 pageHandle = this._norm(pageHandle); 1183 1184 // Check if referrer matches 1185 if (referrer && referrer.includes(payload.referrer)) { 1186 if (country.value === 'ALL' && redirectUrl !== pageHandle) return true; 1187 return country.value === countryCode && redirectUrl !== pageHandle; 1188 } 1189 return false; 1190 }, 1191 1192 _matchUrlPath(condition, payload, countryCode, redirectUrl, pageHandle) { 1193 const country = payload.country; 1194 let keyValue; 1195 if (condition === 'specific_pages') { 1196 if (!payload.page) return false; 1197 keyValue = payload.page; 1198 } else { 1199 if (!payload.collection) return false; 1200 keyValue = payload.collection; 1201 } 1202 if (!country || !country.value) return false; 1203 1204 const handle = this._norm(keyValue.handle); 1205 pageHandle = this._norm(pageHandle); 1206 1207 if (country.value === 'ALL' && handle === pageHandle && redirectUrl !== pageHandle) return true; 1208 1209 return country.value === countryCode && handle === pageHandle && redirectUrl !== pageHandle; 1210 }, 1211 1212 _matchInternetProvider(payload, internetProvider, redirectUrl, pageHandle) { 1213 const payloadProvider = (payload.internet_provider || '').trim(); 1214 if (!payloadProvider || !internetProvider) return false; 1215 pageHandle = this._norm(pageHandle); 1216 return internetProvider.trim().toLowerCase() === payloadProvider.toLowerCase() && redirectUrl !== pageHandle; 1217 } 1218 }; 1219 1220 class RedirectFeature { 1221 constructor(ip, geoData, botVerification = null) { 1222 if (isLoadedInIframe()) return; 1223 1224 this.ip = ip; 1225 this.geoData = geoData; 1226 this.bot_verification = botVerification; 1227 this.sessionService = new SessionService(); 1228 1229 this.evaluateRedirects().catch(() => {}); 1230 } 1231 1232 async init() { 1233 // kept for compatibility â not used in new flow 1234 this.evaluateRedirects(); 1235 } 1236 1237 async evaluateRedirects() { 1238 const rules = noSpyRedirects ? (noSpyRedirects.rules || []) : []; 1239 isNoSpyLogCreated = true; 1240 if (rules.length === 0) return; 1241 1242 const isBot = this.bot_verification?.is_whitelisted_bot ?? false; 1243 if (isBot) return; 1244 1245 let pageHandle = location.pathname; 1246 if (pageHandle !== '/collections' && pageHandle !== '/collections/all' && pageHandle.startsWith('/collections/')) { 1247 pageHandle = pageHandle.replace('/collections/', ''); 1248 } else if (pageHandle.startsWith('/pages/')) { 1249 pageHandle = pageHandle.replace('/pages/', ''); 1250 } 1251 1252 const referrer = document.referrer || ''; 1253 const ispName = this.geoData?.isp_name || ''; 1254 1255 const matched = RedirectMatcher.evaluate(rules, this.geoData, pageHandle, referrer, this.ip, ispName); 1256 1257 isNoSpyLogCreated = true; 1258 1259 if (matched) { 1260 try { 1261 await fetch(`${noSpyBaseUrl}/block/log`, { 1262 method: 'POST', 1263 headers: { 'Content-Type': 'application/json' }, 1264 body: JSON.stringify({ 1265 shop: Shopify.shop, 1266 session_id: NoSpyStore.sessionId, 1267 status: false, 1268 action_type: 'redirect', 1269 ...this.geoData, 1270 }), 1271 }); 1272 } catch (e) { 1273 // Log failed, redirect anyway 1274 } 1275 this.handleRedirect(matched); 1276 } 1277 } 1278 1279 handleRedirect(rule) { 1280 if (rule.redirect_type === 'blocking_page') { 1281 applyBlockingPage(); 1282 return; 1283 } 1284 if (!rule.redirect_url) return; 1285 1286 if (rule.redirect_type === 'internal') { 1287 location.href = rule.redirect_url; 1288 } else { 1289 const url = toExternalUrl(rule.redirect_url); 1290 location.replace(url); 1291 } 1292 } 1293 }; 1294 1295 class LegacyRedirectFeature { 1296 constructor(ip, bot_verification = null) { 1297 if (isLoadedInIframe()) return; 1298 1299 this.ip = ip; 1300 this.bot_verification = bot_verification; 1301 1302 this.geoService = new GeoService(); 1303 this.sessionService = new SessionService(); 1304 1305 this.init(); 1306 } 1307
1308 async init() { 1309 this.geoService.fetch(); 1310 this.sessionService.init(); 1311 1312 this.fetchRedirect(); 1313 1314 // Run on unload 1315 window.addEventListener("beforeunload", () => { 1316 this.sessionService.sendBeacon(this.ip); 1317 }); 1318 // Run when page visibility changes (e.g., user closes tab or switches) 1319 document.addEventListener("visibilitychange", () => { 1320 console.log('NCG!'); 1321 if (document.visibilityState === 'hidden') { 1322 this.sessionService.sendBeacon(this.ip); 1323 } 1324 }); 1325 } 1326 1327 async fetchRedirect() { 1328 const handle = location.pathname.replace('/pages/', ''); 1329 const isBot = this.bot_verification?.is_whitelisted_bot ?? false; 1330 1331 const res = await fetch(`${noSpyLegacyUrl}/redirect-record`, { 1332 method: "POST", 1333 headers: { "Content-Type": "application/json" }, 1334 body: JSON.stringify({ 1335 shop: Shopify.shop, 1336 session_id: NoSpyStore.sessionId, 1337 handle, 1338 bot_verification: isBot, 1339 reached: NoSpyStore.reached, 1340 ...NoSpyStore.geolocation 1341 }), 1342 }); 1343 1344 const json = await res.json(); 1345 isNoSpyLogCreated = true; 1346 if (json?.data?.is_redirect && !isBot) { 1347 this.handleRedirect(json.data.rule); 1348 } 1349 } 1350 1351 handleRedirect(rule) { 1352 if (rule.redirect_type === 'blocking_page') { 1353 applyBlockingPage(); 1354 return; 1355 } 1356 if (!rule.redirect_url) return; 1357 1358 if (rule.redirect_type === 'internal') { 1359 location.href = rule.redirect_url; 1360 } else { 1361 const url = toExternalUrl(rule.redirect_url); 1362 location.replace(url); 1363 } 1364 } 1365 }; 1366 1367 class BlockSpamBotsFeature { 1368 constructor(options = {}) { 1369 this.threshold = options.threshold || 2.5; 1370 this.botScore = 0; 1371 this.mouseMoved = false; 1372 this.debug = options.debug || false; 1373 this.honeypotFieldName = "custom_field"; 1374 this.honeypotFieldClass = "nsp-custom-field"; 1375 this.botVerification = options.bot_verification; 1376 this.allowedBots = options.allowed_bots || {}; 1377 this.geoService = new GeoService(); 1378 this.sessionService = new SessionService(); 1379 this.run(options.is_block).then(); 1380 } 1381 1382 // Enhanced whitelist checking with multiple verification methods 1383 async isWhitelistedBot() { 1384 let checkFromFront = this.checkUserAgent(); 1385 let isWhitelistedBot = this.botVerification?.is_whitelisted_bot ?? false; 1386 if (checkFromFront || isWhitelistedBot) return true; 1387 return false; 1388 } 1389 1390 checkUserAgent() { 1391 const ua = navigator.userAgent.toLowerCase(); 1392 1393 const botPatterns = { 1394 'google_bot': ['googlebot', 'google-bot'], 1395 'facebook_bot': ['facebookexternalhit', 'facebookcatalog'], 1396 'bing_bot': ['bingbot', 'msnbot'], 1397 'apple_bot': ['applebot', 'apple-bot'], 1398 'ahref_bot': ['ahrefsbot', 'ahrefs-bot'], 1399 'lighthouse_bot': ['lighthouse', 'chrome-lighthouse'], 1400 'linkedin_bot': ['linkedinbot', 'linkedin-bot'], 1401 'pinterest_bot': ['pinterestbot', 'pinterest-bot'], 1402 'semrush_bot': ['semrushbot', 'semrush-bot'], 1403 'claude_bot': ['claudebot'], 1404 'meta_external_agent': ['meta-externalagent'], 1405 'amazon_bot': ['amazonbot'], 1406 'bytespider': ['bytespider'], 1407 'oai_search_bot': ['oai-searchbot'], 1408 'gpt_bot': ['gptbot'], 1409 'chatgpt_user': ['ChatGPT-User', 'openai.com/bot'], 1410 'perplexitybot': ['PerplexityBot'] 1411 }; 1412 1413 for (const [botName, isAllowed] of Object.entries(this.allowedBots)) { 1414 if (!isAllowed) continue; 1415 1416 const patterns = botPatterns[botName]; 1417 if (patterns) { 1418 for (const pattern of patterns) { 1419 if (ua.includes(pattern.toLowerCase())) { 1420 this.detectedBotType = botName; 1421 return true; 1422 } 1423 } 1424 } 1425 } 1426 1427 return false;
1428 } 1429 1430 log(...args) { 1431 if (this.debug) console.log(...args); 1432 } 1433 1434 isHeadless() { 1435 const headless = ( 1436 navigator.webdriver || 1437 !navigator.plugins.length || 1438 !navigator.languages || 1439 /HeadlessChrome/.test(navigator.userAgent) || 1440 /puppeteer/.test(navigator.userAgent) 1441 ); 1442 if (headless) this.botScore += 1; 1443 return headless; 1444 } 1445 1446 detectMouseMovement() { 1447 const handler = () => (this.mouseMoved = true); 1448 window.addEventListener("mousemove", handler); 1449 setTimeout(() => { 1450 if (!this.mouseMoved) { 1451 this.botScore += 1; 1452 this.log("Mouse movement: â"); 1453 } else { 1454 this.log("Mouse movement: â "); 1455 } 1456 window.removeEventListener("mousemove", handler); 1457 }, 3000); 1458 } 1459 1460 getCanvasFingerprint() { 1461 try { 1462 const canvas = document.createElement("canvas"); 1463 const ctx = canvas.getContext("2d"); 1464 ctx.textBaseline = "top"; 1465 ctx.font = "14px Arial"; 1466 ctx.fillStyle = "#f60"; 1467 ctx.fillRect(125, 1, 62, 20); 1468 ctx.fillStyle = "#069"; 1469 ctx.fillText("canvas-fingerprint", 2, 15); 1470 const fp = canvas.toDataURL(); 1471 this.log("Canvas fingerprint:", fp.slice(0, 30) + "..."); 1472 return fp; 1473 } catch { 1474 this.botScore += 0.5; 1475 return "blocked"; 1476 } 1477 } 1478 1479 async getAudioFingerprint() { 1480 try { 1481 const ctx = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1, 44100, 44100); 1482 const osc = ctx.createOscillator(); 1483 const comp = ctx.createDynamicsCompressor(); 1484 osc.type = "triangle"; 1485 osc.frequency.value = 10000; 1486 osc.connect(comp); 1487 comp.connect(ctx.destination); 1488 osc.start(0); 1489 const buffer = await ctx.startRendering(); 1490 let hash = 0; 1491 for (let i = 0; i < buffer.length; i++) { 1492 hash += Math.abs(buffer.getChannelData(0)[i]); 1493 } 1494 this.log("Audio fingerprint hash:", hash.toFixed(2)); 1495 return hash.toFixed(2); 1496 } catch { 1497 this.botScore += 0.5; 1498 return "blocked"; 1499 } 1500 } 1501 1502 getWebGLFingerprint() { 1503 try { 1504 const canvas = document.createElement("canvas"); 1505 const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); 1506 const debugInfo = gl.getExtension("WEBGL_debug_renderer_info"); 1507 const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL); 1508 const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); 1509 this.log("WebGL vendor/renderer:", vendor, renderer); 1510 return `${vendor}~${renderer}`; 1511 } catch { 1512 this.botScore += 0.5; 1513 return "blocked"; 1514 } 1515 } 1516 1517 detectTimingDrift() { 1518 const start = performance.now(); 1519 for (let i = 0; i < 1000000; i++) { 1520 Math.sqrt(i); 1521 } 1522 const duration = performance.now() - start; 1523 if (duration < 10) this.botScore += 0.5; 1524 this.log("Timing drift:", duration.toFixed(2)); 1525 return duration.toFixed(2); 1526 } 1527 1528 injectHoneypotIntoForms() { 1529 const style = document.createElement("style"); 1530 style.textContent = `.${this.honeypotFieldClass} { display: none !important; }`; 1531 document.head.appendChild(style); 1532 1533 document.querySelectorAll("form").forEach((form) => { 1534 // Check if already injected 1535 if (form.querySelector(`input[name="${this.honeypotFieldName}"]`)) return; 1536 1537 const input = document.createElement("input"); 1538 input.type = "text"; 1539 input.name = this.honeypotFieldName; 1540 input.className = this.honeypotFieldClass; 1541 input.tabIndex = -1; 1542 form.appendChild(input); 1543 1544 form.addEventListener("submit", (e) => { 1545 const honeypotValue = input.value; 1546 if (honeypotValue.trim() !== "") { 1547 e.preventDefault(); 1548 this.botScore += 2; 1549 this.log("â ï¸ Honeypot triggered! Value:", honeypotValue); 1550 this.blockBotActions().then(); 1551 } 1552 }); 1553 }); 1554 } 1555 1556 async blockBotActions(is_block = true) { 1557 this.log("ð¨ Bot Detected - Blocking interaction. Score:", this.botScore); 1558 alert("â ï¸ Suspicious activity detected. Submission blocked."); 1559 document.body.innerHTML = "<h1>Access Denied</h1>"; 1560 let actionType = is_block ? "block" : "threat"; 1561 createHit({ 1562 type: "spam_bot", 1563 name: "Spam Bot", 1564 pathname: window.location.pathname, 1565 action_type: actionType 1566 }); 1567 if (actionType === 'block' && isNoSpyLogCreated) { 1568 let geoData = NoSpyStore.geolocation; 1569 if (geoData === null) { 1570 geoData = this.geoService.fetch(); 1571 } 1572 let sessionId = NoSpyStore.sessionId; 1573 if (sessionId === null) { 1574 this.sessionService.init(); 1575 sessionId = this.sessionService.getSessionId(); 1576 } 1577 createBlockLog({ 1578 shop: Shopify.shop, 1579 session_id: sessionId, 1580 status: false, 1581 action_type: 'blocked', 1582 ...geoData, 1583 }); 1584 } 1585 throw new Error("Bot access denied"); 1586 } 1587 1588 async runDetection(is_block = true) { 1589 // let isHeadless = this.isHeadless(); 1590 // if (isHeadless) { 1591 // let actionType = is_block ? "block" : "threat"; 1592 // createHit({ 1593 // type: "spam_bot", 1594 // name: "Spam Bot", 1595 // pathname: window.location.pathname, 1596 // action_type: actionType 1597 // }); 1598 // } 1599 this.getCanvasFingerprint(); 1600 await this.getAudioFingerprint(); 1601 this.getWebGLFingerprint(); 1602 this.detectTimingDrift(); 1603 1604 if (this.botScore >= this.threshold) { 1605 this.blockBotActions(is_block).then(); 1606 } else { 1607 this.log("â Human verified. Score:", this.botScore); 1608 } 1609 return false;
1610 } 1611 1612 async run(is_block) { 1613 // Check if current user agent is whitelisted BEFORE running detection 1614 if (document.readyState === "complete") { 1615 if (await this.isWhitelistedBot()) { 1616 this.log("â Whitelisted bot - skipping detection"); 1617 return false; 1618 } 1619 this.detectMouseMovement(); 1620 this.injectHoneypotIntoForms(); 1621 this.runDetection(is_block).then(); 1622 } else { 1623 window.addEventListener("load", async () => { 1624 if (await this.isWhitelistedBot()) { 1625 this.log("â Whitelisted bot - skipping detection"); 1626 return false; 1627 } 1628 this.detectMouseMovement(); 1629 this.injectHoneypotIntoForms(); 1630 this.runDetection(is_block).then(); 1631 }); 1632 } 1633 } 1634 }; 1635 1636 class ProxyVpnTorBlockFeature { 1637 constructor(proxy_vpn_block = false, tor_block = false, proxy_vpn_redirect_url = null, blockingTemplateOptions = {}) { 1638 this.proxy_vpn_block = proxy_vpn_block; 1639 this.tor_block = tor_block; 1640 this.proxy_vpn_redirect_url = proxy_vpn_redirect_url; 1641 this.proxy_vpn_show_blocking_page = !!blockingTemplateOptions.proxy_vpn_show_blocking_page; 1642 this.tor_show_blocking_page = !!blockingTemplateOptions.tor_show_blocking_page; 1643 this.blocking_template_landing_effect = blockingTemplateOptions.blocking_template_landing_effect !== false; 1644 this.blocking_template_html = blockingTemplateOptions.blocking_template_html || null; 1645 this.blocking_template_page_url = blockingTemplateOptions.blocking_template_page_url || null; 1646 this.geoService = new GeoService(); 1647 this.sessionService = new SessionService(); 1648 if (this.proxy_vpn_block || this.tor_block) { 1649 this.run(); 1650 } 1651 } 1652 1653 // Returns the action to take, or null when the merchant configured no 1654 // destination â the caller must not record a block it cannot enforce. 1655 resolveBlockingAction(reasonShowBlockingPage) { 1656 if (reasonShowBlockingPage && this.blocking_template_html && this.blocking_template_landing_effect) { 1657 return {type: 'template'}; 1658 } 1659 if (reasonShowBlockingPage && !this.blocking_template_landing_effect && this.blocking_template_page_url) { 1660 return {type: 'page', url: this.blocking_template_page_url}; 1661 } 1662 if (this.proxy_vpn_redirect_url) { 1663 return {type: 'redirect', url: toExternalUrl(this.proxy_vpn_redirect_url)}; 1664 } 1665 return null; 1666 } 1667 1668 applyBlockingResponse(action) { 1669 if (!action) return; 1670 if (action.type === 'template') { 1671 try { 1672 if (window.stop) window.stop(); 1673 document.head.innerHTML = '<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Access Restricted</title>'; 1674 document.body.innerHTML = this.blocking_template_html; 1675 } catch (e) { 1676 document.body.innerHTML = this.blocking_template_html; 1677 } 1678 return; 1679 } 1680 window.location.href = action.url; 1681 } 1682 1683 isUsingProxy(geoLocation) { 1684 if (geoLocation) { 1685 return geoLocation.is_proxy ?? false; 1686 } 1687 return false; 1688 } 1689 1690 isUsingVPN(geoLocation) { 1691 if (geoLocation) { 1692 return geoLocation.is_vpn ?? false; 1693 } 1694 return false; 1695 } 1696 1697 isUsingTor(geoLocation) { 1698 if (geoLocation) { 1699 return geoLocation.is_tor ?? false; 1700 } 1701 return false; 1702 } 1703 1704 async storeBlockLog(geoData) { 1705 let sessionId = NoSpyStore.sessionId; 1706 if (sessionId === null) { 1707 this.sessionService.init(); 1708 sessionId = this.sessionService.getSessionId(); 1709 } 1710 createBlockLog({ 1711 shop: Shopify.shop, 1712 session_id: sessionId, 1713 status: false, 1714 action_type: 'blocked', 1715 ...geoData, 1716 }); 1717 return true; 1718 } 1719 1720 async getGeoLocation() { 1721 let geoData = NoSpyStore.geolocation; 1722 if (geoData === null) { 1723 geoData = await this.geoService.fetch(); 1724 } 1725 return geoData; 1726 } 1727 1728 run() { 1729 // Check until get the geo location from local storage use setInterval 1730 let interval = setInterval(async () => { 1731 if (isNoSpyLogCreated) { 1732 this.getGeoLocation().then((geoLocation) => { 1733 const proxyHit = (this.isUsingProxy(geoLocation) || this.isUsingVPN(geoLocation)) && this.proxy_vpn_block; 1734 const torHit = this.isUsingTor(geoLocation) && this.tor_block; 1735 if (proxyHit || torHit) { 1736 clearInterval(interval); 1737 const showBlockingPage = (proxyHit && this.proxy_vpn_show_blocking_page) || (torHit && this.tor_show_blocking_page); 1738 const action = this.resolveBlockingAction(showBlockingPage); 1739 if (!action) return; 1740 this.storeBlockLog(geoLocation).then(() => { 1741 this.applyBlockingResponse(action); 1742 }); 1743 } else { 1744 clearInterval(interval); 1745 } 1746 }); 1747 } 1748 }, 500); // 0.5 second interval 1749 } 1750 }; 1751 1752 const generateRandomString = (length) => { 1753 let result = ""; 1754 const characters = 1755 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 1756 const charactersLength = characters.length; 1757 for (let i = 0; i < length; i++) { 1758 result += characters.charAt(Math.floor(Math.random() * charactersLength)); 1759 } 1760 return result; 1761 }; 1762 1763 const handleOtherBug = () => { 1764 let isLastOperation = false;
1765 let intervalCount = 0; 1766 let interval = setInterval(function () { 1767 let getAllBodyChilds = document.body.children; 1768 Array.from(getAllBodyChilds).forEach((item) => { 1769 let smileUIFrame = item.querySelector("#smile-ui-container"); 1770 if (smileUIFrame && smileUIFrame.style.zIndex == "2147483647") { 1771 smileUIFrame.style.zIndex = "2147483646"; 1772 isLastOperation = true; 1773 } 1774 1775 let chat1 = item.querySelector("[class*='psmtc_']"); 1776 if (chat1 && chat1.style.zIndex == "2147483647") { 1777 chat1.style.zIndex = "2147483646"; 1778 } 1779 let chat2 = item.querySelector("[class*='psmw_']"); 1780 if (chat2 && chat2.style.zIndex == "2147483647") { 1781 chat2.style.zIndex = "2147483646"; 1782 } 1783 1784 let trustBadgeContainer = document.querySelector('*[id^="trustbadge-container"]'); 1785 if (trustBadgeContainer && trustBadgeContainer.style.zIndex == "2147483647") { 1786 trustBadgeContainer.style.zIndex = "2147483646"; 1787 } 1788 1789 if ( 1790 item.hasAttribute("id") && 1791 item.getAttribute("id") === "smile-ui-lite-container" 1792 ) { 1793 let getFrame = item.querySelector( 1794 "#smile-ui-lite-launcher-frame-container" 1795 ); 1796 if (getFrame) { 1797 getFrame.style.width = "146px"; 1798 } 1799 if (item.style.zIndex == "2147483647") { 1800 item.style.zIndex = "2147483646"; 1801 } 1802 } 1803 1804 if ( 1805 !item.hasAttribute("id") && 1806 item.nodeName === "DIV" && 1807 item.style.zIndex 1808 ) { 1809 if (item.style.zIndex == "2147483647") { 1810 item.style.zIndex = "2147483646"; 1811 console.log("zIndex found!"); 1812 } 1813 } 1814 1815 if ( 1816 item.hasAttribute("id") && 1817 item.getAttribute("id") === "reve-chat-container-div" 1818 ) { 1819 if (item.style.zIndex == "2147483647") { 1820 item.style.zIndex = "2147483646"; 1821 } 1822 } 1823 }); 1824 if (intervalCount >= 30 && isLastOperation) { 1825 clearInterval(interval); 1826 } 1827 intervalCount++; 1828 }, 1000); 1829 }; 1830 1831 const handleCssData = () => { 1832 let intervalCount = 0; 1833 let cssId = generateRandomString(15); 1834 const cssExceptions = ':not(#pandectes-banner):not(.pd-cookie-banner-window)'; 1835 let css = 1836 'div[style*="2147483647"]' + cssExceptions + ' {display: none !important;}.extension-container {display: none !important;}#shopify-raise-container {display: none !important;}.ppspy-container {display: none !important;}#shopify_app_wrapper {display: none !important;}html.shinecommerce-modal-open #shinecommerce-extension-div {display: none !important;}html.shinecommerce-modal-open, html.shinecommerce-modal-open body {overflow: auto !important;} .ixspy-tools {display: none !important;} #simplytrends-main-extension-root {display: none !important;} #my-extension-root {display: none !important;} plasmo-csui {display: none !important;} #shop-analysis-shadow-host {display: none !important;} #kins-kins-popup {display: none !important;} #ah-app {display: none !important;}'; 1837 let head = document.head || document.getElementsByTagName("head")[0]; 1838 let styles = document.createElement("style"); 1839 head.appendChild(styles); 1840 styles.type = "text/css"; 1841 styles.id = cssId; 1842 if (styles.styleSheet) { 1843 styles.styleSheet.cssText = css; 1844 } else { 1845 styles.appendChild(document.createTextNode(css)); 1846 } 1847 const myCssInterval = setInterval(myCssTimer, 10); 1848 function myCssTimer() { 1849 let getStlye = document.getElementById(cssId); 1850 if (getStlye === null) { 1851 head.appendChild(styles); 1852 } 1853 if (intervalCount === 1000) { 1854 clearInterval(myCssInterval); 1855 } 1856 intervalCount += 1; 1857 } 1858 }; 1859 1860 const handleTextSelection = (id, is_text, is_image) => { 1861 var css = document.createElement("style"); 1862 var head = document.head; 1863 head.appendChild(css); 1864 1865 css.type = 'text/css'; 1866 css.id = id; 1867 1868 css.innerText = ''; 1869 1870 if (is_text) { 1871 css.innerText += ` 1872 * { 1873 -webkit-user-select: none !important; 1874 -moz-user-select: none !important;
1875 -ms-user-select: none !important; 1876 user-select: none !important; 1877 } 1878 body { 1879 -webkit-user-select: none !important; 1880 -webkit-touch-callout: none !important; 1881 -moz-user-select: none !important; 1882 -ms-user-select: none !important; 1883 user-select: none !important; 1884 } 1885 .no_spy_allowed_element, .no_spy_allowed_element * { 1886 -webkit-user-select: text !important; 1887 -webkit-touch-callout: text !important; 1888 -moz-user-select: text !important; 1889 -ms-user-select: text !important; 1890 user-select: text !important; 1891 } 1892 .no_spy_allowed_element::selection, .no_spy_allowed_element *::selection { 1893 background: #CECECD; 1894 }`; 1895 } 1896 if (is_image) { 1897 css.innerText += ` 1898 img { 1899 -webkit-user-drag: none !important; 1900 -khtml-user-drag: none !important; 1901 -moz-user-drag: none !important; 1902 -o-user-drag: none !important; 1903 user-drag: none !important; 1904 pointer-events: none !important; 1905 }`; 1906 } 1907 1908 var elements = document.querySelectorAll("*"); 1909 1910 for (var i = 0; i < elements.length; i++) { 1911 if (elements[i].classList.contains('no_spy_allowed_element')) { 1912 continue; 1913 } 1914 if (elements[i].style.userSelect == 'auto') { 1915 elements[i].style.userSelect = 'none'; 1916 } 1917 if (elements[i].style.userSelect == 'text') { 1918 elements[i].style.userSelect = 'none'; 1919 } 1920 } 1921 } 1922 1923 const handleRightClick = () => { 1924 function init() { 1925 window.addEventListener('contextmenu', function handleEvent(event) { 1926 event.stopPropagation(); 1927 event.stopImmediatePropagation(); 1928 var handler = new EventHandler(event); 1929 window.removeEventListener(event.type, handleEvent, true); 1930 var EventsCallBback = new EventsCall(function() {}); 1931 handler.fire(); 1932 window.addEventListener(event.type, handleEvent, true); 1933 if (!handler.isCanceled && (!EventsCallBback.isCalled)) { 1934 event.preventDefault(); 1935 } 1936 }, true); 1937 } 1938 setInterval(init, 1000); 1939 1940 function EventsCall(callback) { 1941 this.events = ['DOMAttrModified', 'DOMNodeInserted', 'DOMNodeRemoved', 'DOMCharacterDataModified', 'DOMSubtreeModified']; 1942 this.bind(); 1943 } 1944 1945 EventsCall.prototype.bind = function() { 1946 this.events.forEach(function(event) { 1947 document.addEventListener(event, this, true); 1948 }.bind(this)); 1949 }; 1950 1951 EventsCall.prototype.handleEvent = function() { 1952 this.isCalled = false; 1953 }; 1954 1955 EventsCall.prototype.unbind = function() { 1956 this.events.forEach(function(event) {}.bind(this)); 1957 }; 1958 1959 function EventHandler(event) { 1960 this.event = event; 1961 this.contextmenuEvent = this.createEvent(this.event.type); 1962 } 1963 1964 EventHandler.prototype.createEvent = function(type) { 1965 var target = this.event.target; 1966 var event = target.ownerDocument.createEvent('MouseEvents'); 1967 event.initMouseEvent( 1968 type, this.event.bubbles, this.event.cancelable, 1969 target.ownerDocument.defaultView, this.event.detail, 1970 this.event.screenX, this.event.screenY, this.event.clientX, this.event.clientY, 1971 this.event.ctrlKey, this.event.altKey, this.event.shiftKey, this.event.metaKey, 1972 this.event.button, this.event.relatedTarget 1973 ); 1974 return event; 1975 }; 1976 1977 EventHandler.prototype.fire = function() { 1978 var target = this.event.target; 1979 var contextmenuHandler = function(event) { 1980 event.preventDefault(); 1981 }.bind(this); 1982 target.dispatchEvent(this.contextmenuEvent); 1983 this.contextmenuEvent.defaultPrevented; 1984 this.isCanceled = false;
1985 }; 1986 }; 1987 1988 const createAndPreviewMode = (expiresAt) => { 1989 // Create style 1990 const style = document.createElement('style'); 1991 style.textContent = ` 1992 .preview-bar { 1993 position: fixed; 1994 bottom: 0; 1995 left: 0; 1996 width: 100%; 1997 background-color: #1e293b; 1998 color: white; 1999 display: flex; 2000 justify-content: space-between; 2001 align-items: center; 2002 padding: 10px 20px; 2003 font-family: sans-serif; 2004 font-size: 14px; 2005 z-index: 2147483647; 2006 box-shadow: 0 2px 4px rgba(0,0,0,0.2); 2007 min-height: 55px; 2008 } 2009 .session-time { 2010 font-weight: bold; 2011 } 2012 iframe#PBarNextFrame { 2013 display: none !important; 2014 } 2015 `; 2016 document.head.appendChild(style); 2017 2018 // Calculate remaining time from expiresAt 2019 const now = new Date().getTime(); 2020 const remainingTime = expiresAt - now; 2021 2022 const days = Math.floor(remainingTime / (1000 * 60 * 60 * 24)); 2023 const hours = Math.floor((remainingTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 2024 const minutes = Math.floor((remainingTime % (1000 * 60 * 60)) / (1000 * 60)); 2025 const seconds = Math.floor((remainingTime % (1000 * 60)) / 1000); 2026 2027 const formatted = `${String(days)}d ${String(hours).padStart(2, '0')}h ${String(minutes).padStart(2, '0')}m ${String(seconds).padStart(2, '0')}s`; 2028 2029 // Create preview bar HTML 2030 const bar = document.createElement('div'); 2031 bar.className = 'preview-bar'; 2032 bar.innerHTML = ` 2033 <div class="session-time" id="sessionTimer">â³ ${formatted} left</div> 2034 <div>ð NoSpy Unlocked Preview</div> 2035 `; 2036 document.body.prepend(bar); 2037 2038 // Timer logic 2039 let remainingTotalSeconds = Math.floor(remainingTime / 1000); 2040 2041 function formatTime(seconds) { 2042 const d = Math.floor(seconds / 86400); // 86400 = 24*60*60 2043 const h = Math.floor((seconds % 86400) / 3600).toString().padStart(2, '0'); 2044 const m = Math.floor((seconds % 3600) / 60).toString().padStart(2, '0'); 2045 const s = (seconds % 60).toString().padStart(2, '0'); 2046 return `${d}
2046d ${h}h ${m}m ${s}s`; 2047 } 2048 2049 function updateTimer() { 2050 if (remainingTotalSeconds > 0) { 2051 remainingTotalSeconds--; 2052 document.getElementById('sessionTimer').textContent = `â³ ${formatTime(remainingTotalSeconds)} left`; 2053 } else { 2054 document.getElementById('sessionTimer').textContent = `â³ Session expired`; 2055 // reload the page and remove the preview bar 2056 setTimeout(() => document.querySelector('.preview-bar').remove(), 1000); 2057 setTimeout(() => window.location.href = '/', 3000); 2058 clearInterval(timerInterval); 2059 } 2060 } 2061 2062 const timerInterval = setInterval(updateTimer, 1000); 2063 } 2064 2065 const getNoSpyAccessToken = () => { 2066 const now = Date.now(); 2067 // get no spy access token from URL params 2068 const urlParams = new URLSearchParams(window.location.search); 2069 let getNoSpyAccessTokenFromUrl = urlParams.get('nospy_access_token'); 2070 2071 let noSpyAccessTokenFromLocalStorage = JSON.parse(localStorage.getItem('nospy_access_token')); 2072 2073 if (getNoSpyAccessTokenFromUrl != null) { 2074 return getNoSpyAccessTokenFromUrl; 2075 } else if (noSpyAccessTokenFromLocalStorage !== null) { 2076 // check if no spy access token is expired 2077 let expiresAtLocal = parseInt(noSpyAccessTokenFromLocalStorage.expiresAt, 10); // e.g., 1718801120000 2078 if (now > expiresAtLocal) { 2079 localStorage.removeItem('nospy_access_token'); 2080 return null; 2081 } 2082 return noSpyAccessTokenFromLocalStorage.token; 2083 } 2084 return null; 2085 }; 2086 2087 const storeNoSpyAccessToken = (token, expireDays = 1) => { 2088 const now = Date.now(); 2089 const hours = expireDays * 24; 2090 const expiresAt = now + hours * 60 * 60 * 1000; 2091 let noSpyAccessTokenFromLocalStorage = JSON.parse(localStorage.getItem('nospy_access_token')); 2092 if (noSpyAccessTokenFromLocalStorage === null) { 2093 localStorage.setItem('nospy_access_token', JSON.stringify({ 2094 token: token, 2095 expiresAt: expiresAt 2096 })); 2097 } else { 2098 return noSpyAccessTokenFromLocalStorage.expiresAt; 2099 } 2100 return expiresAt; 2101 } 2102 2103 const getPrivacyDataLegacy = async () => { 2104 if (noSpyInternalPages.length > 0) { 2105 const currentPath = window.location.pathname; 2106 const normalizedPath = currentPath.startsWith('/') ? currentPath : '/' + currentPath; 2107 const isInternalTarget = noSpyInternalPages.some(p => { 2108 const np = p.startsWith('/') ? p : '/' + p; 2109 return np === normalizedPath; 2110 }); 2111 if (isInternalTarget) return; 2112 } 2113 2114 let activation_status = false; 2115 let is_exclude = false; 2116 let redirect = 1; 2117 let copy_paste = 1; 2118 let image_drag = 1; 2119 let right_click = 1; 2120 let keys_shortcuts = 1; 2121 let text_selection = 1; 2122 let web_page_print = 1; 2123 let spy_extensions = 1; 2124 let spy_extensions_block_mode = 1; 2125 let spy_extensions_redirect_url = null; 2126 let inspect_elements = 1; 2127 let inspect_elements_message = 1; 2128 let block_spam_bots = 1; 2129 let proxy_vpn_block = 1; 2130 let proxy_vpn_redirect_url = null; 2131 let tor_block = 1; 2132 2133 let no_spy_access_token = getNoSpyAccessToken(); 2134 let geoLocation = new GeoService(); 2135 let geoLocationData = geoLocation.fetch(); 2136 2137 let url = `${noSpyLegacyUrl}/getSettings?shop=${Shopify.shop}${no_spy_access_token != null ? `&access_token=${no_spy_access_token}` : ''}`; 2138 if (geoLocationData) { 2139 url += `&asn=${geoLocationData.asn}`; 2140 } else { 2141 url += `&asn=0`; 2142 } 2143 let data = await fetch(url); 2144 let response = await data.json(); 2145 if (response.status) { 2146 if (response.preview === true) { 2147 let expiresAt = 0; 2148 if (no_spy_access_token !== null && response.data.session_duration) { 2149 expiresAt = storeNoSpyAccessToken(no_spy_access_token, response.data.session_duration); 2150 } 2151 createAndPreviewMode(expiresAt); 2152 return; 2153 } 2154 if (response.data[0].activation_status == 1) { 2155 activation_status = true; 2156 redirect = response.data[1].redirect; 2157 copy_paste = response.data[1].copy_paste; 2158 image_drag = response.data[1].image_drag; 2159 right_click = response.data[1].right_click; 2160 keys_shortcuts = response.data[1].keys_shortcuts; 2161 text_selection = response.data[1].text_selection; 2162 web_page_print = response.data[1].web_page_print; 2163 spy_extensions = response.data[1].spy_extensions; 2164 spy_extensions_block_mode = response.data[1].spy_extensions_block_mode; 2165 spy_extensions_redirect_url = response.data[1].spy_extensions_redirect_url; 2166 inspect_elements = response.data[1].inspect_elements; 2167 inspect_elements_message = response.data[1].inspect_elements_message; 2168 block_spam_bots = response.data[1].block_spam_bots; 2169 proxy_vpn_block = response.data[1].proxy_vpn_block; 2170 proxy_vpn_redirect_url = response.data[1].proxy_vpn_redirect_url; 2171 tor_block = response.data[1].tor_block; 2172 } 2173 // Check for exclude list 2174 if (response.data[2]) { 2175 const { collections, pages } = response.data[2]; 2176 let pathname = window.location.pathname.split('/'); 2177 if (pathname.length > 2) { 2178 if (pages) { 2179 if (pages.includes(pathname[2])) { 2180 is_exclude = true; 2181 } else if (pathname[1] === 'products' && pages.includes('/products/{handle}')) { 2182 is_exclude = true; 2183 } else if (pathname[1] === 'account') { 2184 if (pages.includes(window.location.pathname)) { 2185 is_exclude = true; 2186 } else if (pathname[2] === 'orders' && pages.includes('/account/orders/{handle}')) { 2187 is_exclude = true; 2188 } else if (pathname[2] === 'login' && pages.includes('/account/login')) { 2189 is_exclude = true; 2190 } else if (pathname[2] === 'register' && pages.includes('/account/register')) { 2191 is_exclude = true; 2192 } 2193 } else if (pages.includes(window.location.pathname)) { 2194 is_exclude = true; 2195 } 2196 } 2197 if (collections) { 2198 if (pathname[1] === 'collections' && collections.includes(pathname[2])) { 2199 is_exclude = true; 2200 } 2201 } 2202 } else { 2203 // check '/' is existed inside pages array or not 2204 if (pages && pages.includes(window.location.pathname)) { 2205 is_exclude = true; 2206 } 2207 } 2208 } 2209 } 2210 2211 // If geo location data is not null, then set the geo location data to the NoSpyStore 2212 if (response.geo_location && response.geo_location !== null) { 2213 geoLocation.saveToCache(response.geo_location, response.reached); 2214 } 2215 // If current user agent is not whitelisted and activation status is true, then run the detection 2216 if (!isWhitelistBots && activation_status) { 2217 const bot_verification = response.bot_verification; 2218 if (bot_verification && bot_verification.is_whitelisted_bot == true) { 2219 return false;
2220 } 2221 2222 if (redirect == 0) { 2223 new LegacyRedirectFeature(response.ip, bot_verification); 2224 } 2225 2226 if (proxy_vpn_block == 0 || tor_block == 0) { 2227 new ProxyVpnTorBlockFeature(proxy_vpn_block == 0, tor_block == 0, proxy_vpn_redirect_url, { 2228 proxy_vpn_show_blocking_page: !!response.data[1].proxy_vpn_show_blocking_page, 2229 tor_show_blocking_page: !!response.data[1].tor_show_blocking_page, 2230 blocking_template_landing_effect: response.blocking_template?.landing_effect !== false, 2231 blocking_template_html: response.blocking_template?.html || null, 2232 blocking_template_page_url: response.blocking_template?.page_url || null, 2233 }); 2234 } 2235 2236 if (block_spam_bots == 0) { 2237 new BlockSpamBotsFeature({ 2238 ip: response.ip, 2239 threshold: 2.5, 2240 debug: false, 2241 is_block: true, 2242 bot_verification: {...bot_verification, allowed_bots: response.allowed_bots}, 2243 allowed_bots: response.allowed_bots || {}, 2244 }); 2245 } 2246 2247 if (is_exclude) { 2248 return false; 2249 } 2250 2251 applyProtections({copy_paste, image_drag, right_click, keys_shortcuts, text_selection, web_page_print, spy_extensions, spy_extensions_block_mode, spy_extensions_redirect_url, inspect_elements, inspect_elements_message, inspect_elements_show_blocking_page: !!response.data[1].inspect_elements_show_blocking_page, blocking_template_html: response.blocking_template?.html || null, blocking_template_landing_effect: response.blocking_template?.landing_effect !== false, blocking_template_page_url: response.blocking_template?.page_url || null}); 2252 } else { 2253 return false; 2254 } 2255 }; 2256 2257 const applyProtections = (opts) => { 2258 const {copy_paste, image_drag, right_click, keys_shortcuts, text_selection, web_page_print, spy_extensions, spy_extensions_block_mode, spy_extensions_redirect_url, inspect_elements, inspect_elements_message, inspect_elements_show_blocking_page, blocking_template_html, blocking_template_landing_effect, blocking_template_page_url} = opts; 2259 2260 let devToolsBlocked = false; 2261 const handleDevToolsDetected = () => { 2262 if (devToolsBlocked) return; 2263 devToolsBlocked = true; 2264 if (inspect_elements_show_blocking_page && blocking_template_html && blocking_template_landing_effect) { 2265 try { 2266 if (window.stop) window.stop(); 2267 document.head.innerHTML = '<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Access Restricted</title>'; 2268 document.body.innerHTML = blocking_template_html; 2269 } catch (e) { 2270 document.body.innerHTML = blocking_template_html; 2271 } 2272 } else if (inspect_elements_show_blocking_page && !blocking_template_landing_effect && blocking_template_page_url) { 2273 window.location.href = blocking_template_page_url; 2274 } 2275 // No blocking page configured: take no action. Never navigate the 2276 // visitor to a destination the merchant did not choose. 2277 }; 2278 2279 const block = (type, bool, event) => { 2280 // createHit({'type': type, 'pathname': window.location.pathname}); 2281 let allowed_events = ['text_selection', 'copy_paste']; 2282 2283 if (allowed_events.includes(type)) { 2284 let target = event.target; 2285 let parent = target.parentNode; 2286 let mother_Parent = parent.parentNode; 2287 let last_mother_Parent = mother_Parent.parentNode; 2288 let allowed_element = "no_spy_allowed_element"; 2289 2290 if (target && target.classList && target.classList.contains(allowed_element)) { 2291 return true; 2292 } 2293 2294 if (parent && parent.classList && parent.classList.contains(allowed_element)) { 2295 return true; 2296 } 2297 2298 if (mother_Parent && mother_Parent.classList && mother_Parent.classList.contains(allowed_element)) { 2299 return true; 2300 } 2301 2302 if (last_mother_Parent && last_mother_Parent.classList && last_mother_Parent.classList.contains(allowed_element)) { 2303 return true; 2304 } 2305 } 2306 const allowed = Boolean(bool); 2307 2308 if (!allowed) { 2309 event.preventDefault(); 2310 event.stopPropagation(); 2311 } 2312 2313 return allowed; 2314 }; 2315 2316 document.onselectstart = function (event) { 2317 return block("text_selection", text_selection, event); 2318 }; 2319 2320 document.onpaste = function (event) { 2321 return block("copy_paste", copy_paste, event); 2322 }; 2323 2324 document.oncopy = function (event) { 2325 return block("copy_paste", copy_paste, event); 2326 }; 2327 2328 document.oncut = function (event) { 2329 return block("copy_paste", copy_paste, event); 2330 }; 2331 2332 document.ondragstart = function (event) { 2333 return block("image_drag", image_drag, event); 2334 }; 2335 2336 document.ondrag = function (event) { 2337 return block("image_drag", image_drag, event); 2338 }; 2339 2340 document.ondrop = function (event) { 2341 return block("image_drag", image_drag, event); 2342 }; 2343 2344 document.oncontextmenu = function (event) { 2345 return block("right_click", right_click, event); 2346 }; 2347 2348 if (web_page_print == 0) { 2349 // Disable Print Command from Keyboard 2350 // let isPOkay = { cmd: false, p: false }; 2351 // let keyPrints = ['Meta', 'Control', 'P', 'p']; 2352 // const undoPCommand = () => { 2353 // isPOkay.cmd = false;
2354 // isPOkay.p = false; 2355 // }; 2356 // document.addEventListener("keydown", (event) => { 2357 // let find = keyPrints.find((k) => k === event.key); 2358 // if (find) { 2359 // if (find === 'Meta' || find === 'Control') { 2360 // isPOkay.cmd = true; 2361 // } 2362 // if (find === 'P' || find === 'p') { 2363 // isPOkay.p = true; 2364 // } 2365 // } else { 2366 // undoPCommand(); 2367 // } 2368 // if (isPOkay.cmd === true && isPOkay.p === true) { 2369 // event.preventDefault(); 2370 // return false; 2371 // } 2372 // }); 2373 // Empty Webpage 2374 let getBodyVar = generateRandomString(32); 2375 window[getBodyVar] = null; 2376 window.addEventListener('beforeprint', function() { 2377 window[getBodyVar] = document.querySelector('body').innerHTML; 2378 document.querySelector('body').innerHTML = "<p><pretecting</p>"; 2379 }); 2380 2381 window.addEventListener('afterprint', function() { 2382 document.querySelector('body').innerHTML = window[getBodyVar]; 2383 window[getBodyVar] = null; 2384 }); 2385 // Print disable for extension 2386 function initDisablePrint() { 2387 let extension_1 = document.querySelector('iframe#pf-core'); 2388 if (extension_1 !== null) { 2389 let pf_div = document.querySelector('#pf-mask'); 2390 if (pf_div) pf_div.remove(); 2391 extension_1.remove(); 2392 let get_body = document.querySelector('body'); 2393 if (get_body) get_body.setAttribute('style', 'overflow: auto !important') 2394 } 2395 } 2396 setInterval(initDisablePrint, 100); 2397 } 2398 2399 if (right_click == 0) { 2400 handleRightClick(); 2401 } 2402 2403 document.onkeydown = function (event) { 2404 if (event.keyCode == 123) { 2405 return block("keys_shortcuts", keys_shortcuts, event); 2406 } 2407 if (event.ctrlKey && event.keyCode == "U".charCodeAt(0)) { 2408 return block("keys_shortcuts", keys_shortcuts, event); 2409 } 2410 2411 if (event.ctrlKey && event.shiftKey && event.keyCode == "I".charCodeAt(0)) { 2412 return block("inspect_elements", inspect_elements, event); 2413 } 2414 if (event.ctrlKey && event.shiftKey && event.keyCode == "J".charCodeAt(0)) { 2415 return block("inspect_elements", inspect_elements, event); 2416 } 2417 2418 if (event.ctrlKey && event.shiftKey && event.keyCode == "C".charCodeAt(0)) { 2419 return block("inspect_elements", inspect_elements, event); 2420 } 2421 }; 2422 2423 let is_image_drag = false; 2424 if (image_drag == 0) { 2425 is_image_drag = true; 2426 } 2427 2428 if (text_selection == 0) { 2429 let textSelectionId = generateRandomString(15); 2430 setInterval(textSelectionTimer, 1000); 2431 function textSelectionTimer() { 2432 let getStlye = document.getElementById(textSelectionId); 2433 if (getStlye !== null) { 2434 getStlye.remove(); 2435 } 2436 textSelectionId = generateRandomString(15); 2437 handleTextSelection(textSelectionId, true, is_image_drag); 2438 } 2439 } 2440 2441 // List of extensions to be blocked 2442 const handleExtensions = (is_block) => { 2443 let list_extensions = [ 2444 {name: "Shopify raise", selector: "#shopify-raise-container", hit: true}, 2445 {name: "Extension", selector: ".extension-container", hit: false}, 2446 {name: "PPSpy", selector: ".ppspy-container", hit: true}, 2447 {name: "Shopify Hunter", selector: "#shopify_app_wrapper", hit: true}, 2448 {name: "Shine Commerce", selector: "#shinecommerce-extension-div", hit: true}, 2449 {name: "Shopify Analyzer", selector: ".ixspy-tools", hit: true}, 2450 {name: "Simply Trends", selector: "#simplytrends-main-extension-root", hit: true}, 2451 {name: "My Extension", selector: "#my-extension-root", hit: false}, 2452 {name: "Minea", selector: "plasmo-csui", hit: true}, 2453 {name: "Koala", selector: "#kins-kins-popup", hit: true}, 2454 {name: "AliHunter", selector: "#ah-app", hit: true}, 2455 ]; 2456 // Handle all script handlers 2457 let otherExtensionsCount = 0; 2458 let allExtensionsInterval = setInterval(function () { 2459 list_extensions.forEach(function (ext) { 2460 // let actionType = is_block ? "block" : "threat"; 2461 let actionType = is_block ? ((spy_extensions_block_mode == 0 && spy_extensions_redirect_url) ? "redirect" : "block") : "threat"; 2462 let containerDom = document.querySelector(ext.selector); 2463 if (containerDom) { 2464 if (is_block) containerDom.remove(); 2465 if (ext.hit) { 2466 createHit({ 2467 type: "spy_extensions", 2468 name: ext.name, 2469 pathname: window.location.pathname, 2470 action_type: actionType 2471 }); 2472 ext.hit = false;
2473 } 2474 if (actionType == "redirect") { 2475 window.location.href = toExternalUrl(spy_extensions_redirect_url); 2476 } 2477 } 2478 }); 2479 otherExtensionsCount++; 2480 if (otherExtensionsCount > 20) { 2481 clearInterval(allExtensionsInterval); 2482 } 2483 }, 250); 2484 2485 let ppspyCreateHit = false; 2486 let extensionsInterval = setInterval(function () { 2487 // let actionType = is_block ? "block" : "threat"; 2488 let actionType = is_block ? ((spy_extensions_block_mode == 0 && spy_extensions_redirect_url) ? "redirect" : "block") : "threat"; 2489 let ppspyContainer = document.querySelector(".ppspy-exp-view-root"); 2490 if (ppspyContainer) { 2491 if (is_block) ppspyContainer.style.display = "none"; 2492 if (!ppspyCreateHit) { 2493 createHit({ 2494 type: "spy_extensions", 2495 name: "PPSpy", 2496 pathname: window.location.pathname, 2497 action_type: actionType 2498 }); 2499 ppspyCreateHit = true; 2500 } 2501 if (actionType == "redirect") { 2502 window.location.href = toExternalUrl(spy_extensions_redirect_url); 2503 } 2504 clearInterval(extensionsInterval); 2505 } 2506 }, 10); 2507 }; 2508 2509 if (spy_extensions == 0) { 2510 // Handle CSS Part 2511 handleCssData(); 2512 // Handle other issue bug 2513 handleOtherBug(); 2514 2515 handleExtensions(true); 2516 2517 // FIRST SCRIPT 2518 var startTime = new Date().getTime(); 2519 var interval = setInterval(function () { 2520 if (new Date().getTime() - startTime > 10000) 2521 return clearInterval(interval), void 0; 2522 2523 var e = document.querySelectorAll("div"); 2524 2525 for (i = 0; i < e.length; i++) { 2526 var zIndex = document.querySelectorAll("div")[i].style.Zindex; 2527 if (zIndex === "2147483647") { 2528 createHit({ 2529 type: "spy_extensions", 2530 name: "", 2531 pathname: window.location.pathname, 2532 }); 2533 document 2534 .querySelectorAll("div") 2535 [i].parentNode.parentNode.parentNode.remove(); 2536 } 2537 } 2538 }, 699); 2539 2540 // SECOND SCRIPT 2541 var facebook = [ 2542 { 2543 id: "kefmekfmfacbdefimlancoccpocmgmpb", 2544 image: "icons/extension-icon-x16.png", 2545 }, 2546 { 2547 id: "lppbajkahdbbadheilijoeegnfndhlab", 2548 image: "icons/extension-icon-x16.png", 2549 }, 2550 { 2551 id: "hjbfbllnfhppnhjdhhbmjabikmkfekgf", 2552 image: "icons/extension-icon-x16.png", 2553 }, 2554 { 2555 id: "hdpfnbgfohonaplgnaahcefglgclmdpo", 2556 image: "icons/extension-icon-x16.png", 2557 }, 2558 { 2559 id: "amolhiihcpdbkjimhlffamgieibhfapi", 2560 image: "icons/extension-icon-x16.png", 2561 }, 2562 ]; 2563 const querySelectorAll = (node, selector) => { 2564 const nodes = [...node.querySelectorAll(selector)], 2565 nodeIterator = document.createNodeIterator(node, Node.ELEMENT_NODE); 2566 let currentNode; 2567 while ((currentNode = nodeIterator.nextNode())) { 2568 if (currentNode.shadowRoot) { 2569 nodes.push(...querySelectorAll(currentNode.shadowRoot, selector)); 2570 } 2571 } 2572 return nodes; 2573 }; 2574 const checkfacebook = (id, src, callback) => { 2575 let e = new Image(); 2576 e.src = "chrome-extension://" + id + "/" + src; 2577 (e.onload = () => callback(1)), (e.onerror = () => callback(0)); 2578 }; 2579 window.addEventListener("load", function () { 2580 [...document.getElementsByClassName("extension-container")].forEac
2580h( 2581 (e) => (e.style.display = "none") 2582 ); 2583 }); 2584 var blockCallback = function (items) { 2585 chrome.app.installState(function (e) { 2586 if (e === "not_installed") { 2587 return false; 2588 } 2589 }); 2590 }; 2591 window.addEventListener("load", function () { 2592 var tags = querySelectorAll(document, "iframe"); 2593 var ext = tags.filter((item) => { 2594 return ![ 2595 "intercom-frame", 2596 "admin-bar-iframe", 2597 "preview-bar-iframe", 2598 "^$", 2599 "__JSBridgeIframe_SetResult_1.0__", 2600 "__JSBridgeIframe__", 2601 "__JSBridgeIframe_SetResult__", 2602 "__JSBridgeIframe_1.0__", 2603 "looxReviewsFram", 2604 "looxReviewsFrame", 2605 "^paypal-offers--iframe-(.*)-(.*)-(.*)-(.*)-(.*)$", 2606 "^(.*)paypalLight(.*)$", 2607 "^fb(.*)$", 2608 "^snap(.*)$", 2609 "^tiktok(.*)$", 2610 "^bytedance(.*)$", 2611 ].find((value) => new RegExp(value).test(item.id)); 2612 }); 2613 if (ext.length > 0) { 2614 blockCallback(ext); 2615 } else { 2616 facebook.forEach((element) => {
2617 checkfacebook(element.id, element.image, (ok) => { 2618 if (ok) { 2619 blockCallback(element); 2620 } 2621 }); 2622 }); 2623 } 2624 }); 2625 } else { 2626 handleExtensions(false); 2627 } 2628 2629 if (inspect_elements == 0) { 2630 const devtools = { 2631 isOpen: false, 2632 orientation: undefined, 2633 }; 2634 2635 /* 2636 const threshold = 160; 2637 2638 const emitEvent = (isOpen, orientation) => { 2639 globalThis.dispatchEvent( 2640 new globalThis.CustomEvent("devtoolschange", { 2641 detail: { 2642 isOpen, 2643 orientation, 2644 }, 2645 }) 2646 ); 2647 2648 if (isOpen) { 2649 // createHit({'type': 'inspect_elements', 'pathname': window.location.pathname}) 2650 } 2651 }; 2652 2653 const main = ({ emitEvents = true } = {}) => { 2654 const widthThreshold = 2655 globalThis.outerWidth - globalThis.innerWidth > threshold; 2656 const heightThreshold = 2657 globalThis.outerHeight - globalThis.innerHeight > threshold; 2658 const orientation = widthThreshold ? "vertical" : "horizontal"; 2659 2660 if ( 2661 !(heightThreshold && widthThreshold) && 2662 ((globalThis.Firebug && 2663 globalThis.Firebug.chrome && 2664 globalThis.Firebug.chrome.isInitialized) || 2665 widthThreshold || 2666 heightThreshold) 2667 ) { 2668 if ( 2669 (!devtools.isOpen || devtools.orientation !== orientation) && 2670 emitEvents 2671 ) { 2672 emitEvent(true, orientation); 2673 } 2674 2675 devtools.isOpen = true; 2676 devtools.orientation = orientation; 2677 } else { 2678 if (devtools.isOpen && emitEvents) { 2679 emitEvent(false, undefined); 2680 } 2681 2682 devtools.isOpen = false; 2683 devtools.orientation = undefined; 2684 } 2685 }; 2686 2687 main({ emitEvents: false }); 2688 setInterval(main, 500); 2689 */ 2690 2691 window.addEventListener("devtoolschange", (event) => { 2692 if ( 2693 /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( 2694 navigator.userAgent 2695 ) 2696 ) { 2697 } else { 2698 if (event.detail.isOpen) { 2699 // createHit({'type': 'inspect_elements', 'pathname': window.location.pathname}) 2700 console.log(`%c ${inspect_elements_message}`, "font-size:32px;"); 2701 handleDevToolsDetected(); 2702 } 2703 // else { 2704 // window.localStorage.removeItem("is_inspect_open"); 2705 // } 2706 } 2707 }); 2708 2709 // Check Iframe 2710 function isLoadedInIframeLocal() { 2711 try { 2712 return window.self !== window.top; 2713 } catch (e) { 2714 return true; 2715 } 2716 } 2717 2718 2719 // Second way for devtools check 2720 const devtools3 = { 2721 isOpen: false, 2722 }; 2723 2724 // Check for keyboard shortcuts commonly used in developer tools 2725 function checkShortcuts() { 2726 if ( 2727 (window.outerWidth - window.innerWidth) > 160 || 2728 window.outerHeight - window.innerHeight > 160 2729 ) { 2730 if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { 2731 devtools3.isOpen = false;
2732 } else { 2733 if (window.innerWidth > 768) { 2734 devtools3.isOpen = true; 2735 } 2736 } 2737 } 2738 } 2739 2740 // Check for console.log output 2741 function checkForConsole() { 2742 if (window.console && window.console.firebug) { 2743 devtools3.isOpen = true; 2744 } 2745 } 2746 2747 // Check for changes in the user agent string 2748 function checkUserAgent() { 2749 if (navigator.userAgent.includes('Chrome')) { 2750 devtools.isOpen = true; 2751 } 2752 } 2753 2754 // Check for other indicators of developer tools (customize as needed) 2755 function checkOtherIndicators() { 2756 if ( 2757 window.location.href.indexOf('debugger') > -1 || 2758 window.location.href.indexOf('inspect') > -1 2759 ) { 2760 devtools3.isOpen = true; 2761 } 2762 } 2763 2764 // Combine checks 2765 function checkForDevTools() { 2766 checkShortcuts(); 2767 checkForConsole(); 2768 checkUserAgent(); 2769 checkOtherIndicators(); 2770 } 2771 2772 // Interval to check for developer tools 2773 if (!isLoadedInIframeLocal()) { 2774 setInterval(() => { 2775 checkForDevTools(); 2776 if (devtools3.isOpen) { 2777 handleDevToolsDetected(); 2778 } 2779 }, 1000); 2780 } 2781 2782 let isOkay = { cmd: false, option: false, i: false }; 2783 const undoCommand = () => { 2784 isOkay.cmd = false; 2785 isOkay.option = false; 2786 isOkay.i = false; 2787 }; 2788 let keyLists = [91, 18, 73]; 2789 document.addEventListener("keydown", (event) => { 2790 let find = keyLists.find((k) => k === event.keyCode); 2791 if (find) { 2792 if (find === 91) { 2793 isOkay.cmd = true; 2794 } 2795 if (find === 18) { 2796 isOkay.option = true; 2797 } 2798 if (find === 73) { 2799 isOkay.i = true; 2800 setTimeout(() => undoCommand(), 500); 2801 } 2802 } else { 2803 undoCommand(); 2804 } 2805 if (isOkay.cmd === true && isOkay.option === true && isOkay.i === true) { 2806 event.preventDefault(); 2807 return false; 2808 } 2809 }); 2810 let is_prev_open_console = window.localStorage.getItem("is_inspect_open"); 2811 if (is_prev_open_console !== null) { 2812 const obj = JSON.parse(is_prev_open_console); 2813 let currentTime = new Date().getTime(); 2814 if (obj.timestamp > currentTime) { 2815 handleDevToolsDetected(); 2816 } 2817 } 2818 } 2819 }; 2820 2821 const getPrivacyData = async () => { 2822 // When on the blocking template page, show the template as an overlay and stop 2823 const blockingPageUrl = noSpySettings?.blocking_template?.page_url; 2824 const _shopifyRoot = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/'; 2825 const _localePrefix = _shopifyRoot === '/' ? '' : _shopifyRoot.replace(/\/$/, ''); 2826 if (blockingPageUrl && (window.location.pathname === blockingPageUrl || window.location.pathname === _localePrefix + blockingPageUrl)) { 2827 const html = noSpySettings.blocking_template?.html; 2828 if (html) { 2829 const applyOverlay = () => { 2830 try { 2831 if (window.stop) window.stop(); 2832 document.head.innerHTML = '<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Access Restricted</title>'; 2833 document.body.innerHTML = html; 2834 } catch (e) { 2835 document.body.innerHTML = html; 2836 } 2837 }; 2838 if (document.body) { 2839 applyOverlay(); 2840 } else { 2841 document.addEventListener('DOMContentLoaded', applyOverlay); 2842 } 2843 } 2844 return; 2845 } 2846 2847 // Check internal redirect pages 2848 if (noSpyInternalPages.length > 0) { 2849 const currentPath = window.location.pathname; 2850 const normalizedPath = currentPath.startsWith('/') ? currentPath : '/' + currentPath; 2851 const isInternalTarget = noSpyInternalPages.some(p => { 2852 const np = p.startsWith('/') ? p : '/' + p; 2853 return np === normalizedPath; 2854 }); 2855 if (isInternalTarget) return; 2856 } 2857 2858 // No settings metafield â app not migrated yet, use legacy flow 2859 if (!noSpySettings) { 2860 return getPrivacyDataLegacy(); 2861 } 2862 2863 // Check activation status 2864 if (!noSpySettings.activation_status) return; 2865 2866 const settings = noSpySettings.settings || {}; 2867 2868 // Access token / preview mode check (client-side) 2869 let noSpyAccessToken = getNoSpyAccessToken(); 2870 if (noSpyAccessToken && noSpySettings.access_token && noSpyAccessToken === noSpySettings.access_token) { 2871 const tokenSessionDays = noSpySettings.token_session_days || 1; 2872 const expiresAt = storeNoSpyAccessToken(noSpyAccessToken, tokenSessionDays); 2873 createAndPreviewMode(expiresAt); 2874 return; 2875 } 2876 2877 // Check excludes from metafield 2878 let is_exclude = false;
2879 const excludes = noSpySettings.excludes || {}; 2880 const exPages = excludes.pages || []; 2881 const exCollections = excludes.collections || []; 2882 2883 if (exPages.length > 0 || exCollections.length > 0) { 2884 let pathname = window.location.pathname.split('/'); 2885 if (pathname.length > 2) { 2886 if (exPages.length > 0) { 2887 if (exPages.includes(pathname[2])) { 2888 is_exclude = true; 2889 } else if (pathname[1] === 'products' && exPages.includes('/products/{handle}')) { 2890 is_exclude = true; 2891 } else if (pathname[1] === 'account') { 2892 if (exPages.includes(window.location.pathname)) { 2893 is_exclude = true; 2894 } else if (pathname[2] === 'orders' && exPages.includes('/account/orders/{handle}')) { 2895 is_exclude = true; 2896 } else if (pathname[2] === 'login' && exPages.includes('/account/login')) { 2897 is_exclude = true; 2898 } else if (pathname[2] === 'register' && exPages.includes('/account/register')) { 2899 is_exclude = true; 2900 } 2901 } else if (exPages.includes(window.location.pathname)) { 2902 is_exclude = true; 2903 } 2904 } 2905 if (exCollections.length > 0) { 2906 if (pathname[1] === 'collections' && exCollections.includes(pathname[2])) { 2907 is_exclude = true; 2908 } 2909 } 2910 } else { 2911 if (exPages.includes(window.location.pathname)) { 2912 is_exclude = true; 2913 } 2914 } 2915 } 2916 2917 // Read settings values 2918 let redirect = settings.redirect ?? 1; 2919 let copy_paste = settings.copy_paste ?? 1; 2920 let image_drag = settings.image_drag ?? 1; 2921 let right_click = settings.right_click ?? 1; 2922 let keys_shortcuts = settings.keys_shortcuts ?? 1; 2923 let text_selection = settings.text_selection ?? 1; 2924 let web_page_print = settings.web_page_print ?? 1; 2925 let spy_extensions = settings.spy_extensions ?? 1; 2926 let spy_extensions_block_mode = settings.spy_extensions_block_mode ?? 1; 2927 let spy_extensions_redirect_url = settings.spy_extensions_redirect_url ?? null; 2928 // These flags are INVERTED: 0/false means the feature is ON, which is why 2929 // every check below reads `== 0`. The admin toggle matches (SettingsToggle 2930 // renders `!enabled ? on : off`), so a stored `true` displays as "Off". 2931 // The default of 1 here therefore means "off" for a shop with no settings. 2932 let inspect_elements = settings.inspect_elements ?? 1; 2933 let inspect_elements_message = settings.inspect_elements_message ?? ''; 2934 let block_spam_bots = settings.block_spam_bots ?? 1; 2935 let proxy_vpn_block = settings.proxy_vpn_block ?? 1; 2936 let proxy_vpn_redirect_url = settings.proxy_vpn_redirect_url ?? null; 2937 let tor_block = settings.tor_block ?? 1; 2938 2939 // Single API call: verify-visitor (geo-location + bot verification) 2940 let geoService = new GeoService(); 2941 let cachedGeo = geoService.fetch(); // returns null if expired or missing 2942 2943 let ip = null; 2944 let geoLocationData = cachedGeo; // use cache immediately for redirect matching 2945 let botVerification = null; 2946 let reached = cachedGeo ? (localStorage.getItem('no-spy-geo-reached') === 'true') : false; 2947 2948 // Always call verify-visitor for bot verification + IP resolution. 2949 // Pass cached ASN so server skips the geo lookup when we already have geo. 2950 const sessionService = new SessionService(); 2951 sessionService.init(); 2952 try { 2953 const verifyRes = await fetch(`${noSpyBaseUrl}/verify-visitor`, { 2954 method: 'POST', 2955 headers: { 'Content-Type': 'application/json' }, 2956 body: JSON.stringify({ 2957 shop: Shopify.shop, 2958 session_id: NoSpyStore.sessionId || crypto.randomUUID(), 2959 handle: window.location.pathname, 2960 asn: cachedGeo?.asn || 0, 2961 reached: reached ? 'true' : 'false', 2962 geo: cachedGeo || null, 2963 }), 2964 }); 2965 const verifyJson = await verifyRes.json(); 2966 ip = verifyJson.ip; 2967 botVerification = verifyJson.bot_verification; 2968 2969 if (verifyJson.geo_location) { 2970 // Fresh geo from server (cache was empty) â cache it and use it 2971 geoLocationData = verifyJson.geo_location; 2972 geoService.saveToCache(geoLocationData, verifyJson.reached); 2973 reached = verifyJson.reached; 2974 } 2975
2976 // Attach session beacon unconditionally so duration is tracked regardless of which 2977 // features are enabled. Must happen before any potential redirect below. 2978 if (ip) { 2979 let beaconSent = false; 2980 const sendOnce = () => { 2981 if (beaconSent) return; 2982 beaconSent = true; 2983 sessionService.sendBeacon(ip); 2984 }; 2985 window.addEventListener('beforeunload', sendOnce); 2986 document.addEventListener('visibilitychange', () => { 2987 if (document.visibilityState === 'hidden') sendOnce(); 2988 }); 2989 } 2990 2991 // Server pre-matched a redirect rule â act on it immediately (log already has correct status) 2992 if (redirect == 0 && verifyJson.redirect_matched && verifyJson.redirect_rule) { 2993 const rule = verifyJson.redirect_rule; 2994 if (rule.redirect_type === 'blocking_page') { 2995 applyBlockingPage(); 2996 return; 2997 } 2998 if (rule.redirect_url) { 2999 if (rule.redirect_type === 'internal') { 3000 location.href = rule.redirect_url; 3001 } else { 3002 location.replace(toExternalUrl(rule.redirect_url)); 3003 } 3004 return; 3005 } 3006 } 3007 } catch (e) { 3008 // verify-visitor failed â continue with cached geo if available, skip bot check 3009 } 3010 3011 if (!isWhitelistBots) { 3012 // Check server-side bot verification 3013 if (botVerification && botVerification.is_whitelisted_bot === true) { 3014 return false; 3015 } 3016 3017 // Client-side redirect evaluation (fallback when server didn't match) 3018 if (redirect == 0) { 3019 new RedirectFeature(ip, geoLocationData, botVerification); 3020 } 3021 3022 if (proxy_vpn_block == 0 || tor_block == 0) { 3023 const blockingTemplate = noSpySettings.blocking_template || null; 3024 new ProxyVpnTorBlockFeature(proxy_vpn_block == 0, tor_block == 0, proxy_vpn_redirect_url, { 3025 proxy_vpn_show_blocking_page: !!settings.proxy_vpn_show_blocking_page, 3026 tor_show_blocking_page: !!settings.tor_show_blocking_page, 3027 blocking_template_landing_effect: blockingTemplate ? blockingTemplate.landing_effect !== false : true, 3028 blocking_template_html: blockingTemplate?.html || null, 3029 blocking_template_page_url: blockingTemplate?.page_url || null, 3030 }); 3031 } 3032 3033 if (block_spam_bots == 0) { 3034 const allowedBots = noSpySettings.allowed_bots || {}; 3035 new BlockSpamBotsFeature({ 3036 ip: ip, 3037 threshold: 2.5, 3038 debug: false, 3039 is_block: true, 3040 bot_verification: botVerification || { is_whitelisted_bot: false }, 3041 allowed_bots: allowedBots, 3042 }); 3043 } 3044 3045 if (is_exclude) { 3046 return false; 3047 } 3048 3049 const blockingTemplate = noSpySettings.blocking_template || null; 3050 applyProtections({copy_paste, image_drag, right_click, keys_shortcuts, text_selection, web_page_print, spy_extensions, spy_extensions_block_mode, spy_extensions_redirect_url, inspect_elements, inspect_elements_message, inspect_elements_show_blocking_page: !!settings.inspect_elements_show_blocking_page, blocking_template_html: blockingTemplate?.html || null, blocking_template_landing_effect: blockingTemplate ? blockingTemplate.landing_effect !== false : true, blocking_template_page_url: blockingTemplate?.page_url || null}); 3051 } else { 3052 return false; 3053 } 3054 }; 3055 3056 // Theme editor (Shopify.designMode === true): never redirect, block, or log â the merchant 3057 // must be able to design the page without NoSpy navigating away or hiding content. 3058 if (window.Shopify && window.Shopify.designMode) { 3059 // no-op in the theme editor 3060 } else if (noSpySettings) { 3061 getPrivacyData(); 3062 } else { 3063 getPrivacyDataLegacy(); 3064 } 3065 3066 if(window.Shopify && window.Shopify.currency && window.Shopify.currency.rate) { 3067 window.localStorage.setItem('nospyExchangeRate', window.Shopify.currency.rate); 3068 } 3069</script>
3069 3070 3071 3072<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> 3073 3074 3075 3076 3077 3078 3079 3080<link rel="dns-prefetch" href="https://cdn.judge.me"> 3081<link rel="dns-prefetch" href="https://cdn1.judge.me"> 3082<link rel="dns-prefetch" href="https://api.judge.me"> 3083
3084<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"{{ n }} review/reviews","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Display name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Display name","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email address","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Your email address","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review content","widget_review_body_placeholder_text":"Start writing here...","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank y
3084ou! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_reviewer_name_as_initial":"","widget_rating_filter_color":"#fbcd0a","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","verified_badge_text":"Verified","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"default","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_other_products_reviews_text":"Reviews for other products","widget_store_reviews_subtab_text":"Store reviews","widget_no_store_reviews_text":"This store hasn't received any reviews yet","widget_web_restriction_product_reviews_text":"This product hasn't received any reviews yet","widget_no_items_text":"No items found","widget_show_more_text":"Show more","widget_write_a_store_review_text":"Write a Store Review","widget_other_languages_heading":"Reviews in Other Languages","widget_translate_review_text":"Translate review to {{ language }}","widget_translating_review_text":"Translating...","widget_show_original_translation_text":"Show original ({{ language }})","widget_translate_review_failed_text":"Review couldn't be translated.","widget_translate_review_retry_text":"Retry","widget_translate_review_try_again_later_text":"Try again later","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Pictures First","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"â
Reviews","floating_tab_title":"Let customers speak for us","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":true,"featured_carousel_show_header":true,"featured_carousel_title":"Let customers speak for us","testimonials_carousel_title":"Customers are saying","videos_carousel_title":"Real customer stories","cards_carousel_title":"Customers are saying","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"branded","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":false,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":false,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":false,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Search","widget_sorting_verified_only_text":"Verified only","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"true","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Load More Reviews","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verified by Shop","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subt
3084itle":"Tag us to see your picture featured in our page","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Buy Now","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Load More","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"View Reviews","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#108474","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verified by Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":true,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"collected by Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Load More","widget_load_more_color":"#108474","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_verified_text":"Verified","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"How reviews are collected?","widget_show_review_keywords":false,"widget_gdpr_statement":"How we use your data: We'll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me's \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":false,"all_reviews_product_variant_label_text":"Variant: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Customers say","widget_ai_summary_disclaimer":"AI-powered review summary based on recent customer reviews","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"widget_show_review_title_input":true,"redirect_reviewers_invited_via_email":"review_widget","request_store_review_after_product_review":false,"request_review_other_products_in_order":false,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":{},"review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":{},"review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_content_screen_title_text":"How would you rate this product?","review_content_introduction_text":"We would love it if you would share a bit about your experience.","store_review_form_title_text":"How would you rate this store?","store_review_form_introduction_text":"We would love it if you would share a bit about your experience.","show_review_guidance_text":true,"one_star_review_guidance_text":"Poor","five_star_review_guidance_text":"Great","customer_information_screen_title_text":"About you","customer_information_introduction_text":"Please tell us more about you.","custom_questions_screen_title_text":"Your experience in more detail","custom_questions_introduction_text":"Here are a few questions to help us understand more about your experience.","review_submitted_screen_title_text":"Thanks for your review!","review_submitted_screen_thank_you_text":"We are processing it and it will appear on the store soon.","review_submitted_screen_email_verification_text":"Please confirm your email by clicking the link we just sent you. This helps us keep reviews authentic.","review_submitted_request_store_review_text":"Would you like to share your experience of shopping with us?","review_submitted_review_other_products_text":"Would you like to review these products?","store_review_screen_title_text":"Would you like to share your experience of shopping with us?","store_review_introduction_text":"We value your feedback and use it to improve. Please share any thoughts or suggestions you have.","reviewer_media_screen_title_picture_text":"Share a picture","reviewer_media_introduction_picture_text":"Upload a photo to support your review.","reviewer_media_screen_title_video_text":"Share a video","reviewer_media_introduction_video_text":"Upload a video to support your review.","reviewer_media_screen_title_picture_or_video_text":"Share a picture or video","reviewer_media_introduction_picture_or_video_text":"Upload a photo or video to support your review.","reviewer_media_
3084youtube_url_text":"Paste your Youtube URL here","advanced_settings_next_step_button_text":"Next","advanced_settings_close_review_button_text":"Close","modal_write_review_flow":false,"write_review_flow_required_text":"Required","write_review_flow_privacy_message_text":"We respect your privacy.","write_review_flow_anonymous_text":"Post review as anonymous","write_review_flow_visibility_text":"This won't be visible to other customers.","write_review_flow_multiple_selection_help_text":"Select as many as you like","write_review_flow_single_selection_help_text":"Select one option","write_review_flow_required_field_error_text":"This field is required","write_review_flow_invalid_email_error_text":"Please enter a valid email address","write_review_flow_max_length_error_text":"Max. {{ max_length }} characters.","write_review_flow_media_upload_text":"\u003cb\u003eClick to upload\u003c/b\u003e or drag and drop","write_review_flow_gdpr_statement":"We'll only contact you about your review if necessary. By submitting your review, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Tell us more","negative_review_resolution_text":"Your experience matters to us. If there were issues with your purchase, we're here to help. Feel free to reach out to us, we'd love the opportunity to make things right.","negative_review_resolution_button_text":"Contact us","negative_review_resolution_proceed_with_review_text":"Leave a review","negative_review_resolution_subject":"Issue with purchase from {{ shop_name }}.{{ order_name }}","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":false,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Review collected via store invitation","transparency_badges_from_another_provider_text":"Review collected from another provider","transparency_badges_collected_from_store_visitor_text":"Review collected from a store visitor","transparency_badges_written_in_google_text":"Review written in Google","transparency_badges_written_in_etsy_text":"Review written in Etsy","transparency_badges_written_in_shop_app_text":"Review written in Shop App","transparency_badges_earned_reward_text":"Review earned a reward for future purchase","product_review_widget_per_page":10,"widget_store_review_label_text":"Review about the store","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"review","review_widget_review_word_plural"
3084:"reviews","review_widget_voting_label":"Helpful?","review_widget_shop_reply_label":"Reply from {{ shop_name }}:","review_widget_filters_title":"Filters","qna_widget_question_word_singular":"Question","qna_widget_question_word_plural":"Questions","qna_widget_answer_reply_label":"Answer from {{ answerer_name }}:","qna_content_screen_title_text":"Ask a question about this product","qna_widget_question_required_field_error_text":"Please enter your question.","qna_widget_flow_gdpr_statement":"We'll only contact you about your question if necessary. By submitting your question, you agree to our \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms and conditions\u003c/a\u003e and \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy policy\u003c/a\u003e.","qna_widget_question_submitted_text":"Thanks for your question!","qna_widget_close_form_text_question":"Close","qna_widget_question_submit_success_text":"Weâll notify you by email when your question is answered.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"bold_badge","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Customer reviews","all_reviews_widget_v2025_ai_summary_title":"Customers say about this store","all_reviews_widget_v2025_no_review_text":"Be the first to write a review","platform":"shopify","branding_url":"https://app.judge.me/reviews","branding_text":"Powered by Judge.me","locale":"en","reply_name":"Kawaii Presenter","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"shop_locale":"en","enable_multi_locales_translations":false,"show_review_title_input":true,"review_verification_email_status":"always","can_be_branded":false,"reply_name_text":"Kawaii Presenter"};</script>
3084 <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #108474;--jdgm-secondary-color: rgba(16,132,116,0.1);--jdgm-star-color: #108474;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #108474;--jdgm-paginate-color: #108474;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #108474}.jdgm-histogram__bar-content{background-color:#108474}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#108474}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__variant-label:before{content:'Variant: '}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_etsy"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_google_business"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_written_in_shop_app"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'Kawaii Presenter'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )} 3085</style> <style class='jdgm-settings-style'></style> 3086 3087 3088 3089 3090 <style class='jdgm-miracle-styles'> 3091 @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK
3091/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-prev-badge{display:block !important} 3092 3093</style> 3094 3095 3096 3097 3098 3099 3100 3101 3102
3103<script data-cfasync='false' class='jdgm-script'> 3104!function(e){window.jdgm=window.jdgm||{}; 3105/* INF-1976 */ 3106var _jdgmBlocked=function(){var raw=(window.jdgmSettings||{}).hostname_allowlist;var list=(raw==null?"":""+raw).split(/[\s,]+/).map(function(h){return h.trim().toLowerCase().replace(/\.$/,"");}).filter(function(h){return h;});if(!list.length)return false;var host=(e.location.hostname||"").toLowerCase().replace(/\.$/,"");if(/(^|\.)shopifypreview\.com$/.test(host))return false;var bare=host.replace(/^www\./,"");for(var i=0;i<list.length;i++){var en=list[i];if(en.indexOf("*.")===0){var b=en.slice(2);if(host===b||host.slice(-(b.length+1))==="."+b)return false;}else if(bare===en.replace(/^www\./,""))return false;}return true;}(); 3107if(_jdgmBlocked){jdgm._loaderExecuted=true;jdgm._blocked=true;var _jdgmS=e.createElement("style");_jdgmS.textContent='[class^="jdgm-"],[class*=" jdgm-"]{display:none !important}';(e.head||e.documentElement).appendChild(_jdgmS);return;} 3108jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/01a11b30-98d5-7ae3-b2f4-f79b3c6f32c4/judgeme-775/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/", 3109jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? 3110setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ 3111!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), 3112(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", 3113a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, 3114jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; 3115t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))}, 3116t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll( 3117".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? 3118parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"): 3119jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css") 3120)}))}(document); 3121</script>
3121 3122<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a11b30-98d5-7ae3-b2f4-f79b3c6f32c4/judgeme-775/assets/shopify_v2.css"></noscript> 3123 3124<!-- BEGIN app snippet: theme_fix_tags -->
3124<script> 3125 (function() { 3126 var jdgmThemeFixes = null; 3127 if (!jdgmThemeFixes) return; 3128 3129 // "All themes" fix: CSS and JS applied on every theme. CSS is injected 3130 // before the per-theme fix so the theme-specific CSS wins the cascade. 3131 // HTML is never applied globally (too risky). 3132 var allThemesFix = jdgmThemeFixes['all']; 3133 if (allThemesFix && allThemesFix.css) { 3134 var allStyleTag = document.createElement('style'); 3135 allStyleTag.classList.add('jdgm-theme-fix-style-all'); 3136 allStyleTag.innerHTML = allThemesFix.css; 3137 document.head.append(allStyleTag); 3138 }; 3139 3140 if (allThemesFix && allThemesFix.js) { 3141 var allScriptTag = document.createElement('script'); 3142 allScriptTag.classList.add('jdgm-theme-fix-script-all'); 3143 allScriptTag.innerHTML = allThemesFix.js; 3144 document.head.append(allScriptTag); 3145 }; 3146 3147 var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; 3148 if (!thisThemeFix) return; 3149 3150 if (thisThemeFix.html) { 3151 document.addEventListener("DOMContentLoaded", function() { 3152 var htmlDiv = document.createElement('div'); 3153 htmlDiv.classList.add('jdgm-theme-fix-html'); 3154 htmlDiv.innerHTML = thisThemeFix.html; 3155 document.body.append(htmlDiv); 3156 }); 3157 }; 3158 3159 if (thisThemeFix.css) { 3160 var styleTag = document.createElement('style'); 3161 styleTag.classList.add('jdgm-theme-fix-style'); 3162 styleTag.innerHTML = thisThemeFix.css; 3163 document.head.append(styleTag); 3164 }; 3165 3166 if (thisThemeFix.js) { 3167 var scriptTag = document.createElement('script'); 3168 scriptTag.classList.add('jdgm-theme-fix-script'); 3169 scriptTag.innerHTML = thisThemeFix.js; 3170 document.head.append(scriptTag); 3171 }; 3172 })(); 3173</script>
3173 3174<!-- END app snippet --> 3175<!-- End of Judge.me Core --> 3176 3177 3178 3179<!-- END app block -->
3179<script src="https://cdn.shopify.com/extensions/01a11b30-98d5-7ae3-b2f4-f79b3c6f32c4/judgeme-775/assets/loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 3179
3179
3180<script src="https://cdn.shopify.com/extensions/01a11b6a-2f99-7223-88fd-ab07e15ef29c/omnisend-58/assets/omnisend-in-shop.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 3180
3180
3181<script src="https://cdn.shopify.com/extensions/01a11f5e-ecd8-7271-a763-920f41042782/TMS-Prod-v-8abd617-64-1/assets/tms-translator.min.js" type="text/javascript" defer="defer"></script>
3181 3182<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
3183<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: 27649998986,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};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 3183
3183
3184<script> 3185 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 3186</script>
vendor: 1 bytes, line 3186
3186
3187<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}
3187).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: 27649998986,storefrontBaseUrl: "https://www.kawaii-presenter.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://spring-beautiful.myshopify.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab"],webPixelsConfigList: [{"id":"2195292427","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
3187,"dataSharingState":"unrestricted"},{"id":"929399051","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-BVLMH2F6E7\\\",\\\"GT-TXZ6S97\\\",\\\"G-20DTR3EY60\\\"],\\\"target_country\\\":\\\"DE\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-BVLMH2F6E7\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"MC-SZ14NGJ3TT\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-BVLMH2F6E7\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"MC-SZ14NGJ3TT\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"MC-SZ14NGJ3TT\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-BVLMH2F6E7\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-BVLMH2F6E7\\\",\\\"G-20DTR3EY60\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-BVLMH2F6E7\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"442073355","configuration":"{\"pixel_id\":\"372288827283242\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"130089227","configuration":"{\"tagID\":\"2613537740287\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"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":"Kawaii Presenter","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"spring-beautiful.myshopify.com","countryCode":"DE","storefrontUrl":"https:\/\/spring-beautiful.myshopify.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://spring-beautiful.myshopify.com/cdn","7ec887c8w14f9f074p854094e1m1370c602",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"80146268298","themeStoreId":"796","themePublished":"true","eventMetadataId":"72f1a518-e9f2-494a-8ac4-80c0d7aa96c2","pageType":"cart","shopId":"27649998986","storefrontBaseUrl":"https:\/\/www.kawaii-presenter.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\"]","isMerchantRequest":"false","hashVersion":"7ec887c8w14f9f074p854094e1m1370c602","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
3187<script> 3188 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 3189 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 3190 window.ShopifyAnalytics.meta.currency = 'USD'; 3191 var meta = {"page":{"pageType":"cart","requestId":"db889716-56fb-46a8-aac7-f30157cbd676-1791599925"}}; 3192 for (var attr in meta) { 3193 window.ShopifyAnalytics.meta[attr] = meta[attr]; 3194 } 3195</script>
vendor: 1 bytes, line 3195
3195
3196<script class="analytics"> 3197 (function () { 3198 var customDocumentWrite = function(content) { 3199 var jquery = null; 3200 3201 if (window.jQuery) { 3202 jquery = window.jQuery; 3203 } else if (window.Checkout && window.Checkout.$) { 3204 jquery = window.Checkout.$; 3205 } 3206 3207 if (jquery) { 3208 jquery('body').append(content); 3209 } 3210 }; 3211 3212 var hasLoggedConversion = function(token) { 3213 if (token) { 3214 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 3215 } 3216 return false; 3217 } 3218 3219 var setCookieIfConversion = function(token) { 3220 if (token) { 3221 var twoMonthsFromNow = new Date(Date.now()); 3222 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 3223 3224 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 3225 } 3226 } 3227 3228 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 3229 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 3230 if (trekkie.integrations) { 3231 return; 3232 } 3233 trekkie.methods = [ 3234 'identify', 3235 'page', 3236 'ready', 3237 'track', 3238 'trackForm', 3239 'trackLink' 3240 ]; 3241 trekkie.factory = function(method) { 3242 return function() { 3243 var args = Array.prototype.slice.call(arguments); 3244 args.unshift(method); 3245 trekkie.push(args); 3246 if (method == 'track' || method == 'page') { 3247 var pageUrl; 3248 try { 3249 pageUrl = window.location.href; 3250 } catch (e) {} 3251 var pageReferrer; 3252 try { 3253 pageReferrer = document.referrer; 3254 } catch (e) {} 3255 try { 3256 if (window.__TREKKIE_SHIM_QUEUE == null) { 3257 window.__TREKKIE_SHIM_QUEUE = []; 3258 } 3259 window.__TREKKIE_SHIM_QUEUE.push({ 3260 from: 'trekkie-stub', 3261 method: method, 3262 args: args.slice(1), 3263 pageContext: { 3264 url: pageUrl, 3265 referrer: pageReferrer 3266 } 3267 }); 3268 } catch (e) { 3269 // no-op 3270 } 3271 } 3272 return trekkie; 3273 }; 3274 }; 3275 for (var i = 0; i < trekkie.methods.length; i++) { 3276 var key = trekkie.methods[i]; 3277 trekkie[key] = trekkie.factory(key); 3278 } 3279 trekkie.load = function(config) { 3280 trekkie.config = config || {}; 3281 trekkie.config.initialDocumentCookie = document.cookie; 3282 var first = document.getElementsByTagName('script')[0]; 3283var script = document.createElement('script'); 3284script.type = 'text/javascript'; 3285script.onerror = function(e) { 3286 var scriptFallback = document.createElement('script'); 3287 scriptFallback.type = 'text/javascript'; 3288 scriptFallback.onerror = function(error) { 3289 var Monorail = { 3290 produce: function produce(monorailDomain, schemaId, payload) { 3291 var currentMs = new Date().getTime(); 3292 var event = { 3293 schema_id: schemaId, 3294 payload: payload, 3295 metadata: { 3296 event_created_at_ms: currentMs, 3297 event_sent_at_ms: currentMs 3298 } 3299 }; 3300 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 3301 }, 3302 sendRequest: function sendRequest(endpointUrl, payload) { 3303 // Try the sendBeacon API 3304 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 3305 var blobData = new window.Blob([payload], { 3306 type: 'text/plain' 3307 }); 3308 3309 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 3310 return true; 3311 } // sendBeacon was not successful 3312 3313 } // XHR beacon 3314 3315 var xhr = new XMLHttpRequest(); 3316 3317 try { 3318 xhr.open('POST', endpointUrl); 3319 xhr.setRequestHeader('Content-Type', 'text/plain'); 3320 xhr.send(payload); 3321 } catch (e) { 3322 console.log(e); 3323 } 3324 3325 return false; 3326 }, 3327 isIos12: function isIos12() { 3328 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 3329 } 3330 }; 3331 Monorail.produce('monorail-edge.shopifysvc.com', 3332 'trekkie_storefront_load_errors/1.1', 3333 {shop_id: 27649998986, 3334 theme_id: 80146268298, 3335 app_name: "storefront", 3336 context_url: window.location.href, 3337 source_url: "//spring-beautiful.myshopify.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js"}); 3338 3339 }; 3340 scriptFallback.async = true; 3341 scriptFallback.src = '//spring-beautiful.myshopify.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 3342 first.parentNode.insertBefore(scriptFallback, first); 3343}; 3344script.async = true; 3345script.src = '//spring-beautiful.myshopify.com/cdn/s/trekkie.storefront.51e69540e15035ae012ec8cc42e8f9cd792233a0.min.js'; 3346first.parentNode.insertBefore(script, first); 3347 3348 }; 3349 trekkie.load( 3350 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":27649998986,"isMerchantRequest":null,"themeId":80146268298,"themeCityHash":"4836931372574331698","contentLanguage":"en","currency":"USD","eventMetadataId":"72f1a518-e9f2-494a-8ac4-80c0d7aa96c2"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 3351 ); 3352 3353 var loaded = false;
3354 trekkie.ready(function() { 3355 if (loaded) return; 3356 loaded = true; 3357 3358 window.ShopifyAnalytics.lib = window.trekkie; 3359 3360 var originalDocumentWrite = document.write; 3361 document.write = customDocumentWrite; 3362 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 3363 document.write = originalDocumentWrite; 3364 3365 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 3366 var token = match? match[1]: undefined; 3367 if (!hasLoggedConversion(token)) { 3368 setCookieIfConversion(token); 3369 3370 } 3371 }); 3372 3373 window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"db889716-56fb-46a8-aac7-f30157cbd676-1791599925","shopifyEmitted":true}); 3374 3375 var eventsListenerScript = document.createElement('script'); 3376 eventsListenerScript.async = true; 3377 eventsListenerScript.src = "//spring-beautiful.myshopify.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 3378 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 3379})();</script>
3379 3380
3380<script> 3381 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 3382 window.ga = function ga() { 3383 (window.ga.q = window.ga.q || []).push(arguments); 3384 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 3385 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 3386 } 3387 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 3388 }; 3389 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 3390 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 3391 } 3392 } 3393</script>
vendor: 1 bytes, line 3393
3393
3394<script 3395 defer 3396 src="https://spring-beautiful.myshopify.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.10.1.min.js" 3397 data-application="storefront-renderer" 3398 data-shop-id="27649998986" 3399 data-render-region="gcp-us-west1" 3400 data-page-type="cart" 3401 data-theme-instance-id="80146268298" 3402 data-theme-name="Debut" 3403 data-theme-version="14.4.0" 3404 data-monorail-region="shop_domain" 3405 data-resource-timing-sampling-rate="10" 3406 data-shs="true" 3407 data-shs-beacon="true" 3408 data-shs-export-with-fetch="true" 3409 data-shs-logs-sample-rate="1" 3410 data-shs-beacon-endpoint="https://spring-beautiful.myshopify.com/api/collect" 3411></script>
3411 3412<meta name="shopify-y" content="580d1940-86c4-443e-ab60-755519f5df80" data-expiration="1823157525000"><meta name="shopify-s" content="ac1e55b0-6ebf-4eda-930c-8b19bebd2bda" data-expiration="1791601725000"> 3413</head> 3414 3415<body class="template-cart"> 3416 3417 <a class="in-page-link visually-hidden skip-link" href="#MainContent">Skip to content</a> 3418 3419 <div id="SearchDrawer" class="search-bar drawer drawer--top" role="dialog" aria-modal="true" aria-label="Search"> 3420 <div class="search-bar__table"> 3421 <div class="search-bar__table-cell search-bar__form-wrapper"> 3422 <form class="search search-bar__form" action="/search" method="get" role="search"> 3423 <input class="search__input search-bar__input" type="search" name="q" value="" placeholder="Search" aria-label="Search"> 3424 <button class="search-bar__submit search__submit btn--link" type="submit"> 3425 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 37 40"><path d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z"/></svg> 3426 <span class="icon__fallback-text">Submit</span> 3427 </button> 3428 </form> 3429 </div> 3430 <div class="search-bar__table-cell text-right"> 3431 <button type="button" class="btn--link search-bar__close js-drawer-close"> 3432 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 40 40"><path d="M23.868 20.015L39.117 4.78c1.11-1.108 1.11-2.77 0-3.877-1.109-1.108-2.773-1.108-3.882 0L19.986 16.137 4.737.904C3.628-.204 1.965-.204.856.904c-1.11 1.108-1.11 2.77 0 3.877l15.249 15.234L.855 35.248c-1.108 1.108-1.108 2.77 0 3.877.555.554 1.248.831 1.942.831s1.386-.277 1.94-.83l15.25-15.234 15.248 15.233c.555.554 1.248.831 1.941.831s1.387-.277 1.941-.83c1.11-1.109 1.11-2.77 0-3.878L23.868 20.015z" class="layer"/></svg> 3433 <span class="icon__fallback-text">Close search</span> 3434 </button> 3435 </div> 3436 </div> 3437 </div><style data-shopify> 3438 3439 .cart-popup { 3440 box-shadow: 1px 1px 10px 2px rgba(232, 233, 235, 0.5); 3441 }</style><div class="cart-popup-wrapper cart-popup-wrapper--hidden" role="dialog" aria-modal="true" aria-labelledby="CartPopupHeading" data-cart-popup-wrapper> 3442 <div class="cart-popup" data-cart-popup tabindex="-1"> 3443 <h2 id="CartPopupHeading" class="cart-popup__heading">Just added to your cart</h2> 3444 <button class="cart-popup__close" aria-label="Close" data-cart-popup-close><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 40 40"><path d="M23.868 20.015L39.117 4.78c1.11-1.108 1.11-2.77 0-3.877-1.109-1.108-2.773-1.108-3.882 0L19.986 16.137 4.737.904C3.628-.204 1.965-.204.856.904c-1.11 1.108-1.11 2.77 0 3.877l15.249 15.234L.855 35.248c-1.108 1.108-1.108 2.77 0 3.877.555.554 1.248.831 1.942.831s1.386-.277 1.94-.83l15.25-15.234 15.248 15.233c.555.554 1.248.831 1.941.831s1.387-.277 1.941-.83c1.11-1.109 1.11-2.77 0-3.878L23.868 20.015z" class="layer"/></svg></button> 3445 3446 <div class="cart-popup-item"> 3447 <div class="cart-popup-item__image-wrapper hide" data-cart-popup-image-wrapper> 3448 <div class="cart-popup-item__image cart-popup-item__image--placeholder" data-cart-popup-image-placeholder> 3449 <div data-placeholder-size></div> 3450 <div class="placeholder-background placeholder-background--animation"></div> 3451 </div> 3452 </div> 3453 <div class="cart-popup-item__description"> 3454 <div> 3455 <div class="cart-popup-item__title" data-cart-popup-title></div> 3456 <ul class="product-details" aria-label="Product details" data-cart-popup-product-details></ul> 3457 </div> 3458 <div class="cart-popup-item__quantity"> 3459 <span class="visually-hidden" data-cart-popup-quantity-label></span> 3460 <span aria-hidden="true">Qty:</span> 3461 <span aria-hidden="true" data-cart-popup-quantity></span> 3462 </div> 3463 </div> 3464 </div> 3465 3466 <a href="/cart" class="cart-popup__cta-link btn btn--secondary-accent"> 3467 View cart (<span data-cart-popup-cart-quantity></span>) 3468 </a> 3469 3470 <div class="cart-popup__dismiss"> 3471 <button class="cart-popup__dismiss-button text-link text-link--accent" data-cart-popup-dismiss> 3472 Continue shopping 3473 </button> 3474 </div> 3475 </div> 3476</div> 3477 3478<div id="shopify-section-header" class="shopify-section"> 3479 <style> 3480 3481 .site-header__logo-image { 3482 max-width: 250px; 3483 } 3484 3485 3486 3487 </style> 3488 3489 3490<div data-section-id="header" data-section-type="header-section"> 3491 3492 3493 3494 3495 <header class="site-header logo--center" role="banner"> 3496 <div class="grid grid--no-gutters grid--table site-header__mobile-nav"> 3497 3498 3499 <div class="grid__item medium-up--one-third medium-up--push-one-third logo-align--center"> 3500 3501 3502 <div class="h2 site-header__logo"> 3503 3504 3505<a href="/" class="site-header__logo-image site-header__logo-image--centered"> 3506 3507 <img class="lazyload js" 3508 src="//spring-beautiful.myshopify.com/cdn/shop/files/Handdrawn_Circle_Logo_1_300x300.png?v=1659106244" 3509 data-src="//spring-beautiful.myshopify.com/cdn/shop/files/Handdrawn_Circle_Logo_1_{width}x.png?v=1659106244"
3510 data-widths="[180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 2048]" 3511 data-aspectratio="1.0" 3512 data-sizes="auto" 3513 alt="Kawaii Presenter" 3514 style="max-width: 250px"> 3515 <noscript> 3516 3517 <img src="//spring-beautiful.myshopify.com/cdn/shop/files/Handdrawn_Circle_Logo_1_250x.png?v=1659106244" 3518 srcset="//spring-beautiful.myshopify.com/cdn/shop/files/Handdrawn_Circle_Logo_1_250x.png?v=1659106244 1x, //spring-beautiful.myshopify.com/cdn/shop/files/[email protected]?v=1659106244 2x" 3519 alt="Kawaii Presenter" 3520 style="max-width: 250px;"> 3521 </noscript> 3522 </a> 3523 3524 3525 </div> 3526 3527 </div> 3528 3529 3530 3531 <div class="grid__item medium-up--one-third medium-up--push-one-third text-right site-header__icons site-header__icons--plus"> 3532 <div class="site-header__icons-wrapper"> 3533 <div class="site-header__search site-header__icon"> 3534 3535<form action="/search" method="get" class="search-header search" role="search"> 3536 <input class="search-header__input search__input" 3537 type="search" 3538 name="q" 3539 placeholder="Search" 3540 aria-label="Search"> 3541 <button class="search-header__submit search__submit btn--link site-header__icon" type="submit"> 3542 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 37 40"><path d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z"/></svg> 3543 <span class="icon__fallback-text">Submit</span> 3544 </button> 3545</form> 3546 3547 </div> 3548 3549 <button type="button" class="btn--link site-header__icon site-header__search-toggle js-drawer-open-top"> 3550 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 37 40"><path d="M35.6 36l-9.8-9.8c4.1-5.4 3.6-13.2-1.3-18.1-5.4-5.4-14.2-5.4-19.7 0-5.4 5.4-5.4 14.2 0 19.7 2.6 2.6 6.1 4.1 9.8 4.1 3 0 5.9-1 8.3-2.8l9.8 9.8c.4.4.9.6 1.4.6s1-.2 1.4-.6c.9-.9.9-2.1.1-2.9zm-20.9-8.2c-2.6 0-5.1-1-7-2.9-3.9-3.9-3.9-10.1 0-14C9.6 9 12.2 8 14.7 8s5.1 1 7 2.9c3.9 3.9 3.9 10.1 0 14-1.9 1.9-4.4 2.9-7 2.9z"/></svg> 3551 <span class="icon__fallback-text">Search</span> 3552 </button> 3553 3554 3555 3556 <a href="https://spring-beautiful.myshopify.com/customer_authentication/redirect?locale=en®ion_country=US" class="site-header__icon site-header__account"> 3557 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-login" viewBox="0 0 28.33 37.68"><path d="M14.17 14.9a7.45 7.45 0 1 0-7.5-7.45 7.46 7.46 0 0 0 7.5 7.45zm0-10.91a3.45 3.45 0 1 1-3.5 3.46A3.46 3.46 0 0 1 14.17 4zM14.17 16.47A14.18 14.18 0 0 0 0 30.68c0 1.41.66 4 5.11 5.66a27.17 27.17 0 0 0 9.06 1.34c6.54 0 14.17-1.84 14.17-7a14.18 14.18 0 0 0-14.17-14.21zm0 17.21c-6.3 0-10.17-1.77-10.17-3a10.17 10.17 0 1 1 20.33 0c.01 1.23-3.86 3-10.16 3z"/></svg> 3558 <span class="icon__fallback-text">Log in</span> 3559 </a> 3560 3561 3562 3563 <a href="/cart" class="site-header__icon site-header__cart"> 3564 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-cart" viewBox="0 0 37 40"><path d="M36.5 34.8L33.3 8h-5.9C26.7 3.9 23 .8 18.5.8S10.3 3.9 9.6 8H3.7L.5 34.8c-.2 1.5.4 2.4.9 3 .5.5 1.4 1.2 3.1 1.2h28c1.3 0 2.4-.4 3.1-1.3.7-.7 1-1.8.9-2.9zm-18-30c2.2 0 4.1 1.4 4.7 3.2h-9.5c.7-1.9 2.6-3.2 4.8-3.2zM4.5 35l2.8-23h2.2v3c0 1.1.9 2 2 2s2-.9 2-2v-3h10v3c0 1.1.9 2 2 2s2-.9 2-2v-3h2.2l2.8 23h-28z"/></svg> 3565 <span class="icon__fallback-text">Cart</span> 3566 <div id="CartCount" class="site-header__cart-count hide" data-cart-count-bubble> 3567 <span data-cart-count>0</span>
3568 <span class="icon__fallback-text medium-up--hide">items</span> 3569 </div> 3570 </a> 3571 3572 3573 <form method="post" action="/cart/update" id="currency_form" accept-charset="UTF-8" class="currency-selector small--hide" enctype="multipart/form-data"><input type="hidden" name="form_type" value="currency" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="return_to" value="/cart" /> 3574 <label for="CurrencySelector" class="visually-hidden">Currency</label> 3575 <div class="currency-selector__input-wrapper select-group"> 3576 <select name="currency" id="CurrencySelector" class="currency-selector__dropdown" aria-describedby="a11y-refresh-page-message a11y-selection-message" data-currency-selector> 3577 3578 <option value="ALL">ALL</option> 3579 3580 <option value="AMD">AMD</option> 3581 3582 <option value="AUD">AUD</option> 3583 3584 <option value="AZN">AZN</option> 3585 3586 <option value="BAM">BAM</option> 3587 3588 <option value="CAD">CAD</option> 3589 3590 <option value="CHF">CHF</option> 3591 3592 <option value="CZK">CZK</option> 3593 3594 <option value="DKK">DKK</option> 3595 3596 <option value="DZD">DZD</option> 3597 3598 <option value="EGP">EGP</option> 3599 3600 <option value="EUR">EUR</option> 3601 3602 <option value="GBP">GBP</option> 3603 3604 <option value="HUF">HUF</option> 3605 3606 <option value="IDR">IDR</option> 3607 3608 <option value="ILS">ILS</option> 3609 3610 <option value="INR">INR</option> 3611 3612 <option value="ISK">ISK</option> 3613 3614 <option value="JPY">JPY</option> 3615 3616 <option value="KHR">KHR</option> 3617 3618 <option value="KRW">KRW</option> 3619 3620 <option value="KZT">KZT</option> 3621 3622 <option value="LAK">LAK</option> 3623 3624 <option value="LBP">LBP</option> 3625 3626 <option value="LKR">LKR</option> 3627 3628 <option value="MAD">MAD</option> 3629 3630 <option value="MDL">MDL</option> 3631 3632 <option value="MKD">MKD</option> 3633 3634 <option value="MMK">MMK</option> 3635 3636 <option value="MYR">MYR</option> 3637 3638 <option value="NZD">NZD</option> 3639 3640 <option value="PLN">PLN</option> 3641 3642 <option value="RON">RON</option> 3643 3644 <option value="RSD">RSD</option> 3645 3646 <option value="SEK">SEK</option> 3647 3648 <option value="SGD">SGD</option> 3649 3650 <option value="THB">THB</option> 3651 3652 <option value="TWD">TWD</option> 3653 3654 <option value="UAH">UAH</option> 3655 3656 <option value="USD" selected="true">USD</option> 3657 3658 <option value="VND">VND</option> 3659 3660 </select> 3661 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-chevron-down" viewBox="0 0 498.98 284.49"><defs><style>.cls-1{fill:#231f20}</style></defs><path class="cls-1" d="M80.93 271.76A35 35 0 0 1 140.68 247l189.74 189.75L520.16 247a35 35 0 1 1 49.5 49.5L355.17 511a35 35 0 0 1-49.5 0L91.18 296.5a34.89 34.89 0 0 1-10.25-24.74z" transform="translate(-80.93 -236.76)"/></svg> 3662 </div> 3663 </form> 3664 3665 3666 3667 <button type="button" class="btn--link site-header__icon site-header__menu js-mobile-nav-toggle mobile-nav--open" aria-controls="MobileNav" aria-expanded="false" aria-label="Menu"> 3668 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-hamburger" viewBox="0 0 37 40"><path d="M33.5 25h-30c-1.1 0-2-.9-2-2s.9-2 2-2h30c1.1 0 2 .9 2 2s-.9 2-2 2zm0-11.5h-30c-1.1 0-2-.9-2-2s.9-2 2-2h30c1.1 0 2 .9 2 2s-.9 2-2 2zm0 23h-30c-1.1 0-2-.9-2-2s.9-2 2-2h30c1.1 0 2 .9 2 2s-.9 2-2 2z"/></svg> 3669 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 40 40"><path d="M23.868 20.015L39.117 4.78c1.11-1.108 1.11-2.77 0-3.877-1.109-1.108-2.773
3669-1.108-3.882 0L19.986 16.137 4.737.904C3.628-.204 1.965-.204.856.904c-1.11 1.108-1.11 2.77 0 3.877l15.249 15.234L.855 35.248c-1.108 1.108-1.108 2.77 0 3.877.555.554 1.248.831 1.942.831s1.386-.277 1.94-.83l15.25-15.234 15.248 15.233c.555.554 1.248.831 1.941.831s1.387-.277 1.941-.83c1.11-1.109 1.11-2.77 0-3.878L23.868 20.015z" class="layer"/></svg> 3670 </button> 3671 3672 </div> 3673 3674 </div> 3675 </div> 3676 3677 <nav class="mobile-nav-wrapper medium-up--hide" role="navigation"> 3678 <ul id="MobileNav" class="mobile-nav"> 3679 3680<li class="mobile-nav__item border-bottom"> 3681 3682 3683 <button type="button" class="btn--link js-toggle-submenu mobile-nav__link" data-target="catalog-1" data-level="1" aria-expanded="false"> 3684 <span class="mobile-nav__label">Catalog</span> 3685 <div class="mobile-nav__icon"> 3686 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-chevron-right" viewBox="0 0 7 11"><path d="M1.5 11A1.5 1.5 0 0 1 .44 8.44L3.38 5.5.44 2.56A1.5 1.5 0 0 1 2.56.44l4 4a1.5 1.5 0 0 1 0 2.12l-4 4A1.5 1.5 0 0 1 1.5 11z" fill="#fff"/></svg> 3687 </div> 3688 </button> 3689 <ul class="mobile-nav__dropdown" data-parent="catalog-1" data-level="2"> 3690 <li class="visually-hidden" tabindex="-1" data-menu-title="2">Catalog Menu</li> 3691 <li class="mobile-nav__item border-bottom"> 3692 <div class="mobile-nav__table"> 3693 <div class="mobile-nav__table-cell mobile-nav__return"> 3694 <button class="btn--link js-toggle-submenu mobile-nav__return-btn" type="button" aria-expanded="true" aria-label="Catalog"> 3695 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-chevron-left" viewBox="0 0 7 11"><path d="M5.5.037a1.5 1.5 0 0 1 1.06 2.56l-2.94 2.94 2.94 2.94a1.5 1.5 0 0 1-2.12 2.12l-4-4a1.5 1.5 0 0 1 0-2.12l4-4A1.5 1.5 0 0 1 5.5.037z" fill="#fff" class="layer"/></svg> 3696 </button> 3697 </div> 3698 <span class="mobile-nav__sublist-link mobile-nav__sublist-header mobile-nav__sublist-header--main-nav-parent"> 3699 <span class="mobile-nav__label">Catalog</span> 3700 </span> 3701 </div> 3702 </li> 3703 3704 3705 <li class="mobile-nav__item border-bottom"> 3706 3707 <a href="/collections/products-from-japan/Made-in-Japan" 3708 class="mobile-nav__sublist-link" 3709 3710 > 3711 <span class="mobile-nav__label">Japanese collection</span> 3712 </a> 3713 3714 </li> 3715 3716 <li class="mobile-nav__item border-bottom"> 3717 3718 <a href="/collections/products-from-uzbekistan" 3719 class="mobile-nav__sublist-link" 3720 3721 > 3722 <span class="mobile-nav__label">Uzbekistan collection</span> 3723 </a> 3724 3725 </li> 3726 3727 <li class="mobile-nav__item border-bottom"> 3728 3729 <a href="/collections/kitchenware" 3730 class="mobile-nav__sublist-link" 3731 3732 > 3733 <span class="mobile-nav__label">Kitchen & Dining</span> 3734 </a> 3735 3736 </li> 3737 3738 <li class="mobile-nav__item border-bottom"> 3739 3740 <a href="/collections/accessories-earrings-hair-accessory" 3741 class="mobile-nav__sublist-link" 3742 3743 > 3744 <span class="mobile-nav__label">Accessories (earrings, hair accessory)</span> 3745 </a> 3746 3747 </li> 3748 3749 <li class="mobile-nav__item border-bottom"> 3750 3751 <a href="/collections/home-decoration" 3752 class="mobile-nav__sublist-link" 3753 3754 >
3755 <span class="mobile-nav__label">Home decoration</span> 3756 </a> 3757 3758 </li> 3759 3760 <li class="mobile-nav__item border-bottom"> 3761 3762 <a href="/collections/textiles" 3763 class="mobile-nav__sublist-link" 3764 3765 > 3766 <span class="mobile-nav__label">Textiles</span> 3767 </a> 3768 3769 </li> 3770 3771 <li class="mobile-nav__item"> 3772 3773 <a href="/collections/pottery-porcelain-and-lacquerware" 3774 class="mobile-nav__sublist-link" 3775 3776 > 3777 <span class="mobile-nav__label">Pottery, porcelain and lacquer-ware</span> 3778 </a> 3779 3780 </li> 3781 3782 </ul> 3783 3784 </li> 3785 3786<li class="mobile-nav__item border-bottom"> 3787 3788 <a href="/blogs/news" 3789 class="mobile-nav__link" 3790 3791 > 3792 <span class="mobile-nav__label">Blog</span> 3793 </a> 3794 3795 </li> 3796 3797<li class="mobile-nav__item border-bottom"> 3798 3799 <a href="/pages/contact" 3800 class="mobile-nav__link" 3801 3802 > 3803 <span class="mobile-nav__label">Contact</span> 3804 </a> 3805 3806 </li> 3807 3808<li class="mobile-nav__item"> 3809 3810 <a href="/pages/about-us" 3811 class="mobile-nav__link" 3812 3813 > 3814 <span class="mobile-nav__label">About us</span> 3815 </a> 3816 3817 </li> 3818 3819 3820 <li class="mobile-nav__item border-top"> 3821 <form method="post" action="/cart/update" id="currency_form" accept-charset="UTF-8" class="currency-selector" enctype="multipart/form-data"><input type="hidden" name="form_type" value="currency" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="return_to" value="/cart" /> 3822 <label for="CurrencySelectorMobile" class="currency-selector__label">Currency</label> 3823 <div class="currency-selector__input-wrapper select-group"> 3824 <select name="currency" id="CurrencySelectorMobile" class="currency-selector__dropdown" aria-describedby="a11y-refresh-page-message a11y-selection-message" data-currency-selector> 3825 3826 <option value="ALL">ALL</option> 3827 3828 <option value="AMD">AMD</option> 3829 3830 <option value="AUD">AUD</option> 3831 3832 <option value="AZN">AZN</option> 3833 3834 <option value="BAM">BAM</option> 3835 3836 <option value="CAD">CAD</option> 3837 3838 <option value="CHF">CHF</option> 3839 3840 <option value="CZK">CZK</option> 3841 3842 <option value="DKK">DKK</option> 3843 3844 <option value="DZD">DZD</option> 3845 3846 <option value="EGP">EGP</option> 3847 3848 <option value="EUR">EUR</option> 3849 3850 <option value="GBP">GBP</option> 3851 3852 <option value="HUF">HUF</option> 3853 3854 <option value="IDR">IDR</option> 3855 3856 <option value="ILS">ILS</option> 3857 3858 <option value="INR">INR</option> 3859 3860 <option value="ISK">ISK</option> 3861 3862 <option value="JPY">JPY</option> 3863 3864 <option value="KHR">KHR</option> 3865 3866 <option value="KRW">KRW</option> 3867 3868 <option value="KZT">KZT</option> 3869 3870 <option value="LAK">LAK</option> 3871 3872 <option value="LBP">LBP</option> 3873 3874 <option value="LKR">LKR</option> 3875 3876 <option value="MAD">MAD</option> 3877 3878 <option value="MDL">MDL</option> 3879 3880 <option value="MKD">MKD</option> 3881 3882 <option value="MMK">MMK</option> 3883 3884 <option value="MYR">MYR</option> 3885 3886 <option value="NZD">NZD</option> 3887 3888 <option value="PLN">PLN</option> 3889 3890 <option value="RON">RON</option> 3891 3892 <option value="RSD">RSD</option> 3893 3894 <option value="SEK">SEK</option> 3895 3896 <option value="SGD">SGD</option> 3897 3898 <option value="THB">THB</option> 3899 3900 <option value="TWD">TWD</option> 3901 3902 <option value="UAH">UAH</option> 3903 3904 <option value="USD" selected="true">USD</option> 3905 3906 <option value="VND">VND</option> 3907 3908 </select> 3909 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-chevron-down" viewB
3909ox="0 0 498.98 284.49"><defs><style>.cls-1{fill:#231f20}</style></defs><path class="cls-1" d="M80.93 271.76A35 35 0 0 1 140.68 247l189.74 189.75L520.16 247a35 35 0 1 1 49.5 49.5L355.17 511a35 35 0 0 1-49.5 0L91.18 296.5a34.89 34.89 0 0 1-10.25-24.74z" transform="translate(-80.93 -236.76)"/></svg> 3910 </div> 3911 </form> 3912 </li> 3913 3914 </ul> 3915 </nav> 3916 </header> 3917 3918 3919 <nav class="small--hide border-bottom" id="AccessibleNav" role="navigation"> 3920 3921<ul class="site-nav list--inline site-nav--centered" id="SiteNav"> 3922 3923 3924 3925 3926 3927 <li class="site-nav--has-dropdown" data-has-dropdowns> 3928 <button class="site-nav__link site-nav__link--main site-nav__link--button" type="button" aria-expanded="false" aria-controls="SiteNavLabel-catalog"> 3929 <span class="site-nav__label">Catalog</span><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-chevron-down" viewBox="0 0 498.98 284.49"><defs><style>.cls-1{fill:#231f20}</style></defs><path class="cls-1" d="M80.93 271.76A35 35 0 0 1 140.68 247l189.74 189.75L520.16 247a35 35 0 1 1 49.5 49.5L355.17 511a35 35 0 0 1-49.5 0L91.18 296.5a34.89 34.89 0 0 1-10.25-24.74z" transform="translate(-80.93 -236.76)"/></svg> 3930 </button> 3931 3932 <div class="site-nav__dropdown" id="SiteNavLabel-catalog"> 3933 3934 <ul> 3935 3936 <li> 3937 <a href="/collections/products-from-japan/Made-in-Japan" 3938 class="site-nav__link site-nav__child-link" 3939 3940 > 3941 <span class="site-nav__label">Japanese collection</span> 3942 </a> 3943 </li> 3944 3945 <li> 3946 <a href="/collections/products-from-uzbekistan" 3947 class="site-nav__link site-nav__child-link" 3948 3949 > 3950 <span class="site-nav__label">Uzbekistan collection</span> 3951 </a> 3952 </li> 3953 3954 <li> 3955 <a href="/collections/kitchenware" 3956 class="site-nav__link site-nav__child-link" 3957 3958 > 3959 <span class="site-nav__label">Kitchen & Dining</span> 3960 </a> 3961 </li> 3962 3963 <li> 3964 <a href="/collections/accessories-earrings-hair-accessory" 3965 class="site-nav__link site-nav__child-link" 3966 3967 > 3968 <span class="site-nav__label">Accessories (earrings, hair accessory)</span> 3969 </a> 3970 </li> 3971 3972 <li> 3973 <a href="/collections/home-decoration" 3974 class="site-nav__link site-nav__child-link" 3975 3976 > 3977 <span class="site-nav__label">Home decoration</span> 3978 </a> 3979 </li> 3980 3981 <li> 3982 <a href="/collections/textiles" 3983 class="site-nav__link site-nav__child-link" 3984 3985 > 3986 <span class="site-nav__label">Textiles</span> 3987 </a> 3988 </li> 3989 3990 <li> 3991 <a href="/collections/pottery-porcelain-and-lacquerware" 3992 class="site-nav__link site-nav__child-link site-nav__link--last" 3993 3994 > 3995 <span class="site-nav__label">Pottery, porcelain and lacquer-ware</span> 3996 </a> 3997 </li> 3998 3999 </ul> 4000 4001 </div> 4002 </li> 4003 4004 4005 4006 4007 4008 4009 <li > 4010 <a href="/blogs/news" 4011 class="site-nav__link site-nav__link--main" 4012 4013 > 4014 <span class="site-nav__label">Blog</span> 4015 </a> 4016 </li> 4017 4018 4019 4020 4021 4022 4023 <li > 4024 <a href="/pages/contact" 4025 class="site-nav__link site-nav__link--main" 4026 4027 > 4028 <span class="site-nav__label">Contact</span> 4029 </a> 4030 </li> 4031 4032 4033 4034 4035 4036 4037 <li > 4038 <a href="/pages/about-us" 4039 class="site-nav__link site-nav__link--main" 4040 4041 >
4042 <span class="site-nav__label">About us</span> 4043 </a> 4044 </li> 4045 4046 4047</ul> 4048 4049 </nav> 4050 4051</div> 4052 4053 4054
4055<script type="application/ld+json"> 4056{ 4057 "@context": "http://schema.org", 4058 "@type": "Organization", 4059 "name": "Kawaii Presenter", 4060 4061 4062 "logo": "https:\/\/spring-beautiful.myshopify.com\/cdn\/shop\/files\/Handdrawn_Circle_Logo_1_1500x.png?v=1659106244", 4063 4064 "sameAs": [ 4065 "", 4066 "https:\/\/www.facebook.com\/SpringBeautiful-102335188043446", 4067 "https:\/\/www.pinterest.co.uk\/inakamura0602\/pins\/", 4068 "https:\/\/www.instagram.com\/kawaii_presenter0704", 4069 "", 4070 "", 4071 "", 4072 "" 4073 ], 4074 "url": "https:\/\/www.kawaii-presenter.com" 4075} 4076</script>
4076 4077 4078 4079 4080 4081</div> 4082 4083 <div class="page-container" id="PageContainer"> 4084 4085 <main class="main-content js-focus-hidden" id="MainContent" role="main" tabindex="-1"> 4086 4087 4088<div id="shopify-section-cart-template" class="shopify-section"><div class="page-width" data-section-id="cart-template" data-section-type="cart-template" data-ajax-enabled="true"> 4089 4090 <div class="hide" data-cart-wrapper> 4091 <div class="cart-header"> 4092 <h1 class="cart-header__title">Your cart</h1> 4093 <a href="/collections/all" class="text-link text-link--accent"> 4094 Continue shopping 4095 </a> 4096 </div> 4097 4098 <form action="/cart" method="post" novalidate class="cart"> 4099 <table> 4100 <thead class="cart__row cart__row--heading"> 4101 <th scope="col">Product</th> 4102 <th class="text-right" scope="col">Price</th> 4103 <th class="text-right small--hide" scope="col">Quantity</th> 4104 <th class="text-right small--hide" scope="col">Total</th> 4105 </thead> 4106 <tbody data-cart-line-items></tbody> 4107 </table> 4108 4109 <div class="cart__footer"> 4110 <div class="grid"><div class="grid__item text-right small--text-center"><div class="hide" data-cart-discount-wrapper> 4111 <div class="order-discount-card-wrapper" data-cart-discount><span class="order-discount order-discount--title order-discount--cart"> 4112 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-saletag"><path d="M10 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0-3H7a1 1 0 0 0-.71.29l-6 6a1 1 0 0 0 0 1.42l4 4a1 1 0 0 0 1.42 0c.19-.2 5.8-5.81 6-6A1 1 0 0 0 12 5V2a2 2 0 0 0-2-2z" fill="#231F20"/></svg><span class="visually-hidden">Discount:</span><span data-cart-discount-title></span> 4113 </span> 4114 <span class="order-discount order-discount--cart order-discount--cart-total"> 4115 -<span data-cart-discount-amount></span> 4116 </span></div> 4117 </div> 4118 4119 <div class="cart-subtotal"> 4120 <span class="cart-subtotal__title">Subtotal</span> 4121 <span class="cart-subtotal__price" data-cart-subtotal>$0.00 USD</span> 4122 </div><div class="cart__shipping rte">Tax included. <a href="/policies/shipping-policy">Shipping</a> calculated at checkout. 4123</div> 4124 <div class="cart__buttons-container"> 4125 <div class="cart__submit-controls"><input type="submit" name="checkout" 4126 class="cart__submit btn btn--small-wide" 4127 value="Check out"> 4128 </div> 4129 4130 <div class="cart__error-message-wrapper hide" role="alert" data-cart-error-message-wrapper> 4131 <span class="visually-hidden">Error </span> 4132 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error" viewBox="0 0 14 14"><g fill="none" fill-rule="evenodd"><path d="M7 0a7 7 0 0 1 7 7 7 7 0 1 1-7-7z"/><path class="icon-error__symbol" d="M6.328 8.396l-.252-5.4h1.836l-.24 5.4H6.328zM6.04 10.16c0-.528.432-.972.96-.972s.972.444.972.972c0 .516-.444.96-.972.96a.97.97 0 0 1-.96-.96z" fill-rule="nonzero"/></g></svg> 4133 <span class="cart__error-message" data-cart-error-message></span> 4134 </div><div class="additional-checkout-buttons"><div class="dynamic-checkout__content" id="dynamic-checkout-cart" data-shopify="dynamic-checkout-cart"> <shopify-accelerated-checkout-cart wallet-configs="[{"supports_subs":true,"supports_def_opts":false,"name":"shop_pay","wallet_params":{"shopId":27649998986,"merchantName":"Kawaii Presenter","personalized":true}},{"supports_subs":false,"supports_def_opts":false,"name":"paypal","wallet_params":{"shopId":27649998986,"countryCode":"DE","merchantName":"Kawaii Presenter","phoneRequired":false,"companyRequired":false,"shippingType":"shipping","shopifyPaymentsEnabled":true,"hasManagedSellingPlanState":null,"requiresBillingAgreement":false,"gatewayType":"CONNECTED","merchantId":"US469JD7PTR6U","sdkUrl":"https://www.paypal.com/sdk/js?components=buttons\u0026commit=false\u0026currency=USD\u0026locale=en_US\u0026client-id=AexZEtAxk09Ncgj6FSWFFyGKbxxAZ_LTyJ2DPdJWl1YUlecinmc5AfIaRF2qYjWlusWahlzz6SVkY5Ci\u0026merchant-id=US469JD7PTR6U\u0026intent=authorize","serviceableCountryCodes":["DE"]}}]" access-token="43a67a320cdf20c9d0ca596e9903c36b" buyer-country="US" buyer-locale="en" buyer-currency="USD" shop-id="27649998986" cart-id="a1c432370f58605909c6b9b3236c999d" enabled-flags="["1172c16a","a1d1f9a1","f5afabb3","370070f3"]" > <div class="wallet-button-wrapper"> <ul class='wallet-cart-grid wallet-cart-grid--skeleton' role="list" data-shopify-buttoncontainer="true"> <li data-testid='grid-cell' class='wallet-cart-button-container'><div class='wallet-cart-button wallet-cart-button__skeleton' role='button' disabled aria-hidden='true'> </div></li><li data-testid='grid-cell' class='wallet-cart-button-container'><div class='wallet-cart-button wallet-cart-button__skeleton' role='button' disabled aria-hidden='true'> </div></li> </ul> </div> </shopify-accelerated-checkout-cart> </div></div></div> 4135 </div> 4136 </div> 4137 </div> 4138 </form> 4139 4140 <p class="visually-hidden" data-cart-status
4141 aria-live="polite" 4142 role="status" 4143 ></p> 4144 </div> 4145 4146 <div class="empty-page-content text-center" data-empty-page-content> 4147 <h1>Your cart</h1> 4148 <p class="cart--empty-message">Your cart is currently empty.</p> 4149 <div class="cookie-message"> 4150 <p>Enable cookies to use the shopping cart</p> 4151 </div> 4152 <a href="/" class="btn btn--has-icon-after cart__continue-btn">Continue shopping<svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-arrow-right" viewBox="0 0 20 8"><path d="M15.186.445c.865.944 1.614 1.662 2.246 2.154.631.491 1.227.857 1.787 1.098v.44a9.933 9.933 0 0 0-1.875 1.196c-.606.485-1.328 1.196-2.168 2.134h-.752c.612-1.309 1.253-2.315 1.924-3.018H.77v-.986h15.577c-.495-.632-.84-1.1-1.035-1.406-.196-.306-.486-.843-.87-1.612h.743z" fill="#000" fill-rule="evenodd"/></svg></a> 4153 </div> 4154</div> 4155 4156 4157 4158 4159</div> 4160 4161 4162 </main> 4163 4164 <div id="shopify-section-footer" class="shopify-section"> 4165<style> 4166 .site-footer__hr { 4167 border-bottom: 1px solid #dcdcdc; 4168 } 4169 4170 .site-footer p, 4171 .site-footer__linklist-item a, 4172 .site-footer__rte a, 4173 .site-footer h4, 4174 .site-footer small, 4175 .site-footer__copyright-content a, 4176 .site-footer__newsletter-error { 4177 color: #3d4246; 4178 } 4179 4180 .site-footer { 4181 color: #3d4246; 4182 background-color: #f5f5f5; 4183 } 4184 4185 .site-footer__rte a { 4186 border-bottom: 1px solid #3d4246; 4187 } 4188 4189 .site-footer__rte a:hover, 4190 .site-footer__linklist-item a:hover, 4191 .site-footer__copyright-content a:hover { 4192 color: #61696f; 4193 border-bottom: 1px solid #61696f; 4194 } 4195</style> 4196 4197<footer class="site-footer" role="contentinfo"> 4198 <div class="page-width"> 4199 <div class="site-footer__content"><div class="site-footer__item 4200 4201 site-footer__item--one-half 4202 " 4203 > 4204 <div class="site-footer__item-inner site-footer__item-inner--text"><p class="h4">About us</p><div class="site-footer__rte 4205 "> 4206 <p>This is an online select shop, where the owner collects beautiful handmade artifacts from different cultures around the world to be used in your daily life. It is based in Offenburg, Germany although there is no physical shop. We source the artifacts from local artisans and local partners that are ethically & environmentally friendly producing the crafts. </p> 4207 </div></div> 4208 </div><div class="site-footer__item 4209 4210 site-footer__item--one-half 4211 " 4212 > 4213 <div class="site-footer__item-inner site-footer__item-inner--text"><p class="h4">Impressum</p><div class="site-footer__rte 4214 "> 4215 <p>Publisher: Izumi Nakamura</p><p>Address: </p><p>77652 Offenburg, Germany</p><p>Email: [email protected]</p> 4216 </div></div> 4217 </div></div> 4218 </div> 4219 4220 <hr class="site-footer__hr"><div class="page-width"> 4221 <div class="grid grid--no-gutters small--text-center"> 4222 <div class="grid__item one-half small--one-whole"><ul class="list--inline site-footer__social-icons social-icons site-footer__icon-list"><li> 4223 <a class="social-icons__link" href="https://www.facebook.com/SpringBeautiful-102335188043446" aria-describedby="a11y-external-message"><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook" viewBox="0 0 20 20"><path fill="#444" d="M18.05.811q.439 0 .744.305t.305.744v16.637q0 .439-.305.744t-.744.305h-4.732v-7.221h2.415l.342-2.854h-2.757v-1.83q0-.659.293-1t1.073-.342h1.488V3.762q-.976-.098-2.171-.098-1.634 0-2.635.964t-1 2.72V9.47H7.951v2.854h2.415v7.221H1.413q-.439 0-.744-.305t-.305-.744V1.859q0-.439.305-.744T1.413.81H18.05z"/></svg><span class="icon__fallback-text">Facebook</span> 4224 </a> 4225 </li><li> 4226 <a class="social-icons__link" href="https://www.pinterest.co.uk/inakamura0602/pins/" aria-describedby="a11y-external-message"><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-pinterest" viewBox="0 0 20 20"><path fill="#444" d="M9.958.811q1.903 0 3.635.744t2.988 2 2 2.988.744 3.635q0 2.537-1.256 4.696t-3.415 3.415-4.696 1.256q-1.39 0-2.659-.366.707-1.147.951-2.025l.659-2.561q.244.463.903.817t1.39.354q1.464 0 2.622-.842t1.793-2.305.634-3.293q0-2.171-1.671-3.769t-4.257-1.598q-1.586 0-2.903.537T5.298 5.897 4.066 7.775t-.427 2.037q0 1.268.476 2.22t1.427 1.342q.171.073.293.012t.171-.232q.171-.61.195-.756.098-.268-.122-.512-.634-.707-.634-1.83 0-1.854 1.281-3.183t3.354-1.329q1.83 0 2.854 1t1.025 2.61q0 1.342-.366 2.476t-1.049 1.817-1.561.683q-.732 0-1.195-.537t-.293-1.269q.098-.342.256-.878t.268-.915.207-.817.098-.732q0-.61-.317-1t-.927-.39q-.756 0-1.269.695t-.512 1.744q0 .39.061.756t.134.537l.073.171q-1 4.342-1.22 5.098-.195.927-.146 2.171-2.513-1.122-4.062-3.44T.59 10.177q0-3.879 2.744-6.623T9.957.81z"/></svg><span class="icon__fallback-text">Pinterest</span> 4227 </a> 4228 </li><li> 4229 <a class="social-icons__link" href="https://www.instagram.com/kawaii_presenter0704" aria-describedby="a11y-external-message"><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram" viewBox="0 0 512 512"><path d="M256 49.5c67.3 0 75.2.3 101.8 1.5 24.6 1.1 37.9 5.2 46.8 8.7 11.8 4.6 20.2 10 29 18.8s14.3 17.2 18.8 29c3.4 8.9 7.6 22.2 8.7 46.8 1.2 26.6 1.5 34.5 1.5 101.8s-.3 75.2-1.5 101.8c-1.1 24.6-5.2 37.9-8.7 46.8-4.6 11.8-10 20.2-18.8 29s-17.2 14.3-29 18.8c-8.9 3.4-22.2 7.6-46.8 8.7-26.6 1.2-34.5 1.5-101.8 1.5s-75.2-.3-101.8-1.5c-24.6-1.1-37.9-5.2-46.8-8.7-11.8-4.6-20.2-10-29-18.8s-14.3-17.2-18.8-29c-3.4-8.9-7.6-22.2-8.7-46.8-1.2-26.6-1.5-34.5-1.5-101.8s.3-75.2 1.5-101.8c1.1-24.6 5.2-37.9 8.7-46.8 4.6-11.8 10-20.2
422918.8-29s17.2-14.3 29-18.8c8.9-3.4 22.2-7.6 46.8-8.7 26.6-1.3 34.5-1.5 101.8-1.5m0-45.4c-68.4 0-77 .3-103.9 1.5C125.3 6.8 107 11.1 91 17.3c-16.6 6.4-30.6 15.1-44.6 29.1-14 14-22.6 28.1-29.1 44.6-6.2 16-10.5 34.3-11.7 61.2C4.4 179 4.1 187.6 4.1 256s.3 77 1.5 103.9c1.2 26.8 5.5 45.1 11.7 61.2 6.4 16.6 15.1 30.6 29.1 44.6 14 14 28.1 22.6 44.6 29.1 16 6.2 34.3 10.5 61.2 11.7 26.9 1.2 35.4 1.5 103.9 1.5s77-.3 103.9-1.5c26.8-1.2 45.1-5.5 61.2-11.7 16.6-6.4 30.6-15.1 44.6-29.1 14-14 22.6-28.1 29.1-44.6 6.2-16 10.5-34.3 11.7-61.2 1.2-26.9 1.5-35.4 1.5-103.9s-.3-77-1.5-103.9c-1.2-26.8-5.5-45.1-11.7-61.2-6.4-16.6-15.1-30.6-29.1-44.6-14-14-28.1-22.6-44.6-29.1-16-6.2-34.3-10.5-61.2-11.7-27-1.1-35.6-1.4-104-1.4z"/><path d="M256 126.6c-71.4 0-129.4 57.9-129.4 129.4s58 129.4 129.4 129.4 129.4-58 129.4-129.4-58-129.4-129.4-129.4zm0 213.4c-46.4 0-84-37.6-84-84s37.6-84 84-84 84 37.6 84 84-37.6 84-84 84z"/><circle cx="390.5" cy="121.5" r="30.2"/></svg><span class="icon__fallback-text">Instagram</span> 4230 </a> 4231 </li></ul></div> 4232 4233 <div class="grid__item one-half small--one-whole"> 4234 4235 <div class="grid__item site-footer__payment-icons"> 4236 4237 <span class="visually-hidden">Payment methods</span> 4238 <ul class="payment-icons list--inline site-footer__icon-list"> 4239 4240 <li class="payment-icon"> 4241 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/><path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 4242 4243 </li> 4244 4245 <li class="payment-icon"> 4246 <svg class="icon icon--full-color" version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558
42460 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" /><path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg> 4247 4248 </li> 4249 4250 <li class="payment-icon"> 4251 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" aria-labelledby="pi-bancontact" role="img" viewBox="0 0 38 24" width="38" height="24"><title id="pi-bancontact">Bancontact</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M4.703 3.077h28.594c.139 0 .276.023.405.068.128.045.244.11.343.194a.9.9 0 0 1 .229.29c.053.107.08.223.08.34V20.03a.829.829 0 0 1-.31.631 1.164 1.164 0 0 1-.747.262H4.703a1.23 1.23 0 0 1-.405-.068 1.09 1.09 0 0 1-.343-.194.9.9 0 0 1-.229-.29.773.773 0 0 1-.08-.34V3.97c0-.118.027-.234.08-.342a.899.899 0 0 1 .23-.29c.098-.082.214-.148.342-.193a1.23 1.23 0 0 1 .405-.068Z" fill="#fff"/><path d="M6.38 18.562v-3.077h1.125c.818 0 1.344.259 1.344.795 0 .304-.167.515-.401.638.338.132.536.387.536.734 0 .62-.536.91-1.37.91H6.38Zm.724-1.798h.537c.328 0 .468-.136.468-.387 0-.268-.255-.356-.599-.356h-.406v.743Zm0 1.262h.448c.438 0 .693-.093.693-.383 0-.286-.219-.404-.63-.404h-.51v.787Zm3.284.589c-.713 0-1.073-.295-1.073-.69 0-.436.422-.69 1.047-.695.156.002.31.014.464.035v-.105c0-.269-.183-.396-.531-.396a2.128 2.128 0 0 0-.688.105l-.13-.474a3.01 3.01 0 0 1 .9-.132c.767 0 1.147.343 1.147.936v1.222c-.214.093-.615.194-1.136.194Zm.438-.497v-.47a2.06 2.06 0 0 0-.37-.036c-.24 0-.427.08-.427.286 0 .185.156.281.432.281a.947.947 0 0 0 .365-.061Zm1.204.444v-2.106a3.699 3.699 0 0 1 1.177-.193c.76 0 1.198.316 1.198.9v1.399h-.719v-1.354c0-.303-.167-.444-.484-.444a1.267 1.267 0 0 0-.459.079v1.719h-.713Zm4.886-2.167-.135.479a1.834 1.834 0 0 0-.588-.11c-.422 0-.652.25-.652.664 0 .453.24.685.688.685.2-.004.397-.043.578-.114l.115.488a2.035 2.035 0 0 1-.75.128c-.865 0-1.365-.453-1.365-1.17 0-.712.495-1.182 1.323-1.182.27-.
4251001.538.043.787.132Zm1.553 2.22c-.802 0-1.302-.47-1.302-1.178 0-.704.5-1.174 1.302-1.174.807 0 1.297.47 1.297 1.173 0 .708-.49 1.179-1.297 1.179Zm0-.502c.37 0 .563-.259.563-.677 0-.413-.193-.672-.563-.672-.364 0-.568.26-.568.672 0 .418.204.677.568.677Zm1.713.449v-2.106a3.699 3.699 0 0 1 1.177-.193c.76 0 1.198.316 1.198.9v1.399h-.719v-1.354c0-.303-.166-.444-.484-.444a1.268 1.268 0 0 0-.459.079v1.719h-.713Zm3.996.053c-.62 0-.938-.286-.938-.866v-.95h-.354v-.484h.355v-.488l.718-.03v.518h.578v.484h-.578v.94c0 .256.125.374.36.374.093 0 .185-.008.276-.026l.036.488c-.149.028-.3.041-.453.04Zm1.814 0c-.713 0-1.073-.295-1.073-.69 0-.436.422-.69 1.047-.695.155.002.31.014.464.035v-.105c0-.269-.183-.396-.532-.396a2.128 2.128 0 0 0-.687.105l-.13-.474a3.01 3.01 0 0 1 .9-.132c.766 0 1.146.343 1.146.936v1.222c-.213.093-.614.194-1.135.194Zm.438-.497v-.47a2.06 2.06 0 0 0-.37-.036c-.24 0-.427.08-.427.286 0 .185.156.281.432.281a.946.946 0 0 0 .365-.061Zm3.157-1.723-.136.479a1.834 1.834 0 0 0-.588-.11c-.422 0-.651.25-.651.664 0 .453.24.685.687.685.2-.004.397-.043.578-.114l.115.488a2.035 2.035 0 0 1-.75.128c-.865 0-1.365-.453-1.365-1.17 0-.712.495-1.182 1.323-1.182.27-.001.538.043.787.132Zm1.58 2.22c-.62 0-.938-.286-.938-.866v-.95h-.354v-.484h.354v-.488l.72-.03v.518h.577v.484h-.578v.94c0 .256.125.374.36.374.092 0 .185-.008.276-.026l.036.488c-.149.028-.3.041-.453.04Z" fill="#1E3764"/><path d="M11.394 13.946c3.803 0 5.705-2.14 7.606-4.28H6.38v4.28h5.014Z" fill="url(#pi-bancontact-a)"/><path d="M26.607 5.385c-3.804 0-5.705 2.14-7.607 4.28h12.62v-4.28h-5.013Z" fill="url(#pi-bancontact-b)"/><defs><linearGradient id="pi-bancontact-a" x1="8.933" y1="12.003" x2="17.734" y2="8.13" gradientUnits="userSpaceOnUse"><stop stop-color="#005AB9"/><stop offset="1" stop-color="#1E3764"/></linearGradient><linearGradient id="pi-bancontact-b" x1="19.764" y1="10.037" x2="29.171" y2="6.235" gradientUnits="userSpaceOnUse"><stop stop-color="#FBA900"/><stop offset="1" stop-color="#FFD800"/></linearGradient></defs></svg> 4252 </li> 4253 4254 <li class="payment-icon"> 4255 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-blik"><title id="pi-blik">BLIK</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="url(#pi-blik-paint0_linear)"/><path d="M30.343 17.155l-2.785-3.639 2.563-3.236h-2.185l-2.456 3.138V6.78h-1.848v10.375h1.848v-3.532l2.456 3.532h2.407zM18.613 6.78h-1.848v10.366h1.848V6.78zm3.433 3.508h-1.848v6.867h1.848v-6.867z" fill="#fff"/><path d="M13.849 9.573a1.651 1.651 0 100-3.302 1.651 1.651 0 000 3.302z" fill="url(#pi-blik-paint1_radial)"/><path d="M12.041 10.206c-.574 0-1.138.144-1.642.419V6.82H8.534v6.9a3.516 3.516 0 103.507-3.515zm0 5.175a1.643 1.643 0 110-3.286 1.643 1.643 0 010 3.286z" fill="#fff"/><defs><radialGradient id="pi-blik-paint1_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(12.51 6.18) scale(5.41297)"><stop stop-color="red"/><stop offset=".49" stop-color="#E83E49"/><stop offset="1" stop-color="#F0F"/></radialGradient><linearGradient id="pi-blik-paint0_linear" x1="19" y1="4.977" x2="19" y2="55.605" gradientUnits="userSpaceOnUse"><stop/><stop offset=".732" stop-color="#fff"/><stop offset="1" stop-color="#fff"/></linearGradient></defs></svg> 4256 </li> 4257 4258 <li class="payment-icon"> 4259 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
425906zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg> 4260 4261 </li> 4262 4263 <li class="payment-icon"> 4264 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" viewBox="0 0 38 24" aria-labelledby="pi-klarna" fill="none"><title id="pi-klarna">Klarna</title><rect width="38" height="24" rx="2" fill="#FFA8CD"/><rect x=".5" y=".5" width="37" height="23" rx="1.5" stroke="#000" stroke-opacity=".07"/><path d="M30.62 14.755c-.662 0-1.179-.554-1.179-1.226 0-.673.517-1.226 1.18-1.226.663 0 1.18.553 1.18 1.226 0 .672-.517 1.226-1.18 1.226zm-.33 1.295c.565 0 1.286-.217 1.686-1.068l.04.02c-.176.465-.176.742-.176.81v.11h1.423v-4.786H31.84v.109c0 .069 0 .346.175.81l-.039.02c-.4-.85-1.121-1.068-1.687-1.068-1.355 0-2.31 1.088-2.31 2.522 0 1.433.955 2.521 2.31 2.521zm-4.788-5.043c-.643 0-1.15.228-1.56 1.068l-.039-.02c.175-.464.175-.741.175-.81v-.11h-1.423v4.787h1.462V13.4c0-.662.38-1.078.995-1.078.614 0 .917.356.917 1.068v2.532h1.462v-3.046c0-1.088-.838-1.869-1.989-1.869zm-4.963 1.068l-.039-.02c.176-.464.176-.741.176-.81v-.11h-1.424v4.787h1.463l.01-2.304c0-.673.35-1.078.926-1.078.156 0 .282.02.429.06v-1.464c-.644-.139-1.22.109-1.54.94zm-4.65 2.68c-.664 0-1.18-.554-1.18-1.226 0-.673.516-1.226 1.18-1.226.662 0 1.179.553 1.179 1.226 0 .672-.517 1.226-1.18 1.226zm-.332 1.295c.565 0 1.287-.217 1.687-1.068l.038.02c-.175.465-.175.742-.175.81v.11h1.424v-4.786h-1.424v.109c0 .069 0 .346.175.81l-.038.02c-.4-.85-1.122-1.068-1.687-1.068-1.356 0-2.311 1.088-2.311 2.522 0 1.433.955 2.521 2.31 2.521zm-4.349-.128h1.463V9h-1.463v6.922zM10.136 9H8.644c0 1.236-.751 2.343-1.892 3.134l-.448.317V9h-1.55v6.922h1.55V12.49l2.564 3.43h1.892L8.293 12.64c1.121-.82 1.852-2.096 1.843-3.639z" fill="#0B051D"/></svg> 4265 </li> 4266 4267 <li class="payment-icon"> 4268 <svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-maestro"><title id="pi-maestro">Maestro</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><circle fill="#EB001B" cx="15" cy="12" r="7"/><circle fill="#00A2E5" cx="23" cy="12" r="7"/><path fill="#7375CF" d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"/></svg> 4269 </li> 4270 4271 <li class="payment-icon"> 4272 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/>
4272<path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg> 4273 4274 </li> 4275 4276 <li class="payment-icon"> 4277 <svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-mobilepay"><title id="pi-mobilepay">MobilePay</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill-rule="evenodd" clip-rule="evenodd" d="M20.05 15.296s2.53-.771 4.282-.776c2.896-.007 4.857 1.15 4.857 1.15V10.06s-1.97-1.02-4.453-1.09c-2.481-.068-4.687 1.012-4.687 1.012v5.313z" fill="#5A78FF"/><path fill-rule="evenodd" clip-rule="evenodd" d="M17.308 9.19l2.082 4.957V9.396s1.646-.882 3.485-1.13c1.84-.249 4.181.08 4.181.08l-1.133-2.707s-2.461-.159-4.69.794c-2.228.952-3.925 2.756-3.925 2.756z" fill="#5A78FF"/><path d="M21.428 5.676l-.82-1.99a1.818 1.818 0 00-2.37-.996l-5.663 2.334a1.818 1.818 0 00-.98 2.376l5.46 13.247a1.818 1.818 0 002.37.995l5.662-2.334a1.817 1.817 0 00.98-2.376l-.677-1.642s-.462-.027-.676-.033c-.226-.006-.644-.001-.644-.001l.88 2.136a.606.606 0 01-.326.793l-5.663 2.333a.606.606 0 01-.79-.331L12.711 6.94a.606.606 0 01.327-.792L18.7 3.814a.606.606 0 01.79.332l.83 2.011s.383-.187.59-.27c.206-.082.518-.211.518-.211z" fill="#5A78FF"/></svg> 4278 </li> 4279 4280 <li class="payment-icon"> 4281 <svg class="icon icon--full-color" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal"><title id="pi-paypal">PayPal</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"/><path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"/><path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2
42810-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"/></svg> 4282 </li> 4283 4284 <li class="payment-icon"> 4285 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg> 4286 4287 </li> 4288 4289 <li class="payment-icon"> 4290 <svg class="icon icon--full-color" viewBox="-36 25 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-unionpay"><title id="pi-unionpay">Union Pay</title><path fill="#005B9A" d="M-36 46.8v.7-.7zM-18.3 25v24h-7.2c-1.3 0-2.1-1-1.8-2.3l4.4-19.4c.3-1.3 1.9-2.3 3.2-2.3h1.4zm12.6 0c-1.3 0-2.9 1-3.2 2.3l-4.5 19.4c-.3 1.3.5 2.3 1.8 2.3h-4.9V25h10.8z"/><path fill="#E9292D" d="M-19.7 25c-1.3 0-2.9 1.1-3.2 2.3l-4.4 19.4c-.3 1.3.5 2.3 1.8 2.3h-8.9c-.8 0-1.5-.6-1.5-1.4v-21c0-.8.7-1.6 1.5-1.6h14.7z"/><path fill="#0E73B9" d="M-5.7 25c-1.3 0-2.9 1.1-3.2 2.3l-4.4 19.4c-.3 1.3.5 2.3 1.8 2.3H-26h.5c-1.3 0-2.1-1-1.8-2.3l4.4-19.4c.3-1.3 1.9-2.3 3.2-2.3h14z"/><path fill="#059DA4" d="M2 26.6v21c0 .8-.6 1.4-1.5 1.4h-12.1c-1.3 0-2.1-1.1-1.8-2.3l4.5-19.4C-8.6 26-7 25-5.7 25H.5c.9 0 1.5.7 1.5 1.6z"/><path fill="#fff" d="M-21.122 38.645h.14c.14 0 .28-.07.28-.14l.42-.63h1.19l-.21.35h1.4l-.21.63h-1.68c-.21.28-.42.42-.7.42h-.84l.21-.63m-.21.91h3.01l-.21.7h-1.19l-.21.7h1.19l-.21.7h-1.19l-.28 1.05c-.07.14 0 .28.28.21h.98l-.21.7h-1.89c-.35 0-.49-.21-.35-.63l.35-1.33h-.77l.21-.7h.77l.21-.7h-.7l.21-.7zm4.83-1.75v.42s.56-.42 1.12-.42h1.96l-.77 2.66c-.07.28-.35.49-.77.49h-2.24l-.49 1.89c0 .07 0 .14.14.14h.42l-.14.56h-1.12c-.42 0-.56-.14-.49-.35l1.47-5.39h.91zm1.68.77h-1.75l-.21.7s.28-.21.77-.21h1.05l.14-.49zm-.63 1.68c.14 0 .21 0 .21-.14l.14-.35h-1.75l-.14.56 1.54-.07zm-1.19.84h.98v.42h.28c.14 0 .21-.07.21-.14l.07-.28h.84l-.14.49c-.07.35-.35.49-.77.56h-.56v.77c0 .14.07.21.35.21h.49l-.14.56h-1.19c-.35 0-.49-.14-.49-.49l.07-2.1zm4.2-2.45l.21-.84h1.19l-.07.28s.56-.28 1.05-.28h1.47l-.21.84h-.21l-1.12 3.85h.21l-.21.77h-.21l-.07.35h-1.19l.07-.35h-2.17l.21-.77h.21l1.12-3.85h-.28m1.26 0l-.28 1.05s.49-.21.91-.28c.07-.35.21-.77.21-.77h-.84zm-.49 1.54l-.28 1.12s.56-.28.98-.28c.14-.42.21-.77.21-.77l-.91-.07zm.21 2.31l.21-.77h-.84l-.21.77h.84zm2.87-4.69h1.12l.07.42c0 .07.07.14.21.14h.21l-.21.7h-.77c-.28 0-.49-.07-.49-.35l-.14-.91zm-.35 1.47h3.57l-.21.77h-1.19l-.21.7h1.12l-.21.77h-1.26l-.28.42h.63l.14.84c0 .07.07.14.21.14h.21l-.21.7h-.7c-.35 0-.56-.07-.56-.35l-.14-.77-.56.84c-.14.21-.35.35-.63.35h-1.05l.21-.7h.35c.14 0 .21-.07.35-.21l.84-1.26h-1.05l.21-.77h1.19l.21-.7h-1.19l.21-.77zm-19.74-5.04c-.14.7-.42 1.19-.91 1.54-.49.35-1.12.56-1.89.56-.7 0-1.26-.21-1.54-.56-.21-.28-.35-.56-.35-.98 0-.14 0-.35.07-.56l.84-3.92h1.19l-.77 3.92v.28c0 .21.07.35.14.49.14.21.35.28.7.28s.7-.07.91-.28c.21-.21.42-.42.49-.77l.77-3.92h1.19l-.84 3.92m1.12-1.54h.84l-.07.49.14-.14c.28-.28.63-.42 1.05-.42.35 0 .63.14.77.35.14.21.21.49.14.91l-.49 2.38h-.91l.42-2.17c.07-.28.07-.49 0-.56-.07-.14-.21-.14-.35-.14-.21 0-.42.07-.56.21-.14.14-.28.35-.28.63l-.42 2.03h-.91l.63-3.57m9.8 0h.84l-.07.49.14-.14c.28-.28.63-.42 1.05-.42.35 0 .63.14.77.35s.21.49.14.91l-.49 2.38h-.91l.42-2.24c.07-.21 0-.42-.07-.49-.07-.14-.21-.14-.35-.14-.21 0-.42.07-.56.21-.14.14-.28.35-.28.63l-.42 2.03h-.91l.7-3.57m-5.81 0h.98l-.77 3.5h-.98l.77-3.5m.35-1.33h.98l-.21.84h-.98l.21-.84zm1.4 4.55c-.21-.21-.35-.56-.35-.98v-.21c0-.07 0-.21.07-.28.14-.56.35-1.05.7-1.33.35-.35.84-.49 1.33-.49.42 0 .77.14 1.05.35.21.21.35.56.35.98v.21c0 .07 0 .21-.07.28-.14.56-.35.98-.7 1.33-.35.35-.84.49-1.33.49-.35 0-.7-.14-1.05-.35m1.89-.7c.14-.21.28-.49.35-.84v-.35c0-.21-.07-.35-.14-.49a.
4290635.635 0 0 0-.49-.21c-.28 0-.49.07-.63.28-.14.21-.28.49-.35.84v.28c0 .21.07.35.14.49.14.14.28.21.49.21.28.07.42 0 .63-.21m6.51-4.69h2.52c.49 0 .84.14 1.12.35.28.21.35.56.35.91v.28c0 .07 0 .21-.07.28-.07.49-.35.98-.7 1.26-.42.35-.84.49-1.4.49h-1.4l-.42 2.03h-1.19l1.19-5.6m.56 2.59h1.12c.28 0 .49-.07.7-.21.14-.14.28-.35.35-.63v-.28c0-.21-.07-.35-.21-.42-.14-.07-.35-.14-.7-.14h-.91l-.35 1.68zm8.68 3.71c-.35.77-.7 1.26-.91 1.47-.21.21-.63.7-1.61.7l.07-.63c.84-.28 1.26-1.4 1.54-1.96l-.28-3.78h1.19l.07 2.38.91-2.31h1.05l-2.03 4.13m-2.94-3.85l-.42.28c-.42-.35-.84-.56-1.54-.21-.98.49-1.89 4.13.91 2.94l.14.21h1.12l.7-3.29-.91.07m-.56 1.82c-.21.56-.56.84-.91.77-.28-.14-.35-.63-.21-1.19.21-.56.56-.84.91-.77.28.14.35.63.21 1.19"/></svg> 4291 </li> 4292 4293 <li class="payment-icon"> 4294 <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778
429416.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 4295 4296 </li> 4297 4298 </ul> 4299 4300 </div> 4301 4302 </div> 4303 <div class="grid__item"> 4304 <small class="site-footer__copyright-content">© 2026, <a href="/" title="">Kawaii Presenter</a></small> 4305 <small class="site-footer__copyright-content site-footer__copyright-content--powered-by"><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&utm_medium=shopify&utm_source=onlinestore">Powered by Shopify</a></small> 4306 </div> 4307 </div> 4308 </div> 4309</footer> 4310 4311 4312 4313 4314</div> 4315 4316 <div id="slideshow-info" class="visually-hidden" aria-hidden="true">Use left/right arrows to navigate the slideshow or swipe left/right if using a mobile device</div> 4317 4318 </div> 4319 4320 <ul hidden> 4321 <li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li> 4322 <li id="a11y-selection-message">Press the space key then arrow keys to make a selection.</li> 4323 </ul> 4324 4325<!-- **BEGIN** Hextom TMS Translator // Main Include - DO NOT MODIFY --> 4326
4326<script src="//spring-beautiful.myshopify.com/cdn/shop/t/1/assets/tms-translator.js?v=40893480092279687071676689850" defer="defer"></script>
4326 4327 <!-- **END** Hextom TMS Translator // Main Include - DO NOT MODIFY --> 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349<!-- **BEGIN** Hextom TMS Integration // Main Include - DO NOT MODIFY --> 4350 <!-- **BEGIN** Hextom TMS Integration // Dropdown - DO NOT MODIFY -->
4351<script> 4352 var hextom_tms = { 4353 selectorInsertType: "float", 4354 regionType: "region_name_currency_symbol", 4355 floatingPosition: "bottom_right", 4356 floatingPaddingHorizontal: 15, 4357 floatingPaddingVertical: 15, 4358 availableLocalesById: {}, 4359 availableLocales: [], 4360 primaryLocaleById: {}, 4361 merchantSelectedLocale: "shop_base", 4362 hasFlag: "yes", 4363 selectorFlagMap: {'es': 'es', 'de': 'de', 'en': 'en', 'fr': 'fr', 'ja': 'ja', 'da': 'da', 'sv': 'sv', 'fi': 'fi', 'it': 'it', 'no': 'no'}, 4364 displayType: "language_name", 4365 fontColor: "#000000", 4366 backgroundColor: "#FFFFFF", 4367 backgroundOpacity: "1.0", 4368 buttonFontColor: "#FFFFFF", 4369 buttonBackgroundColor: "#000000", 4370 selectorType: "market_language", 4371 selectorStyle: "dropdown", 4372 hasFlagRegion: "yes", 4373 defaultRegion: "shop_base", 4374 primaryRegionById: {}, 4375 availableRegionsByCode: {}, 4376 availableRegions: [], 4377 primaryDomain: "", 4378 popupEnable: false, 4379 popupTextColor: "#000000", 4380 popupBgColor: "#FFFFFF", 4381 popupBtnTextColor: "#FFFFFF", 4382 popupBtnBgColor: "#000000", 4383 regions: [{"name": "Germany", "code": "DE", "currency": {"code": "EUR", "symbol": "\u20ac"}, "languages": {"English": {"name": "English", "native_name": "English", "code": "en", "default": true}, "\u65e5\u672c\u8a9e": {"name": "\u65e5\u672c\u8a9e (Japanese)", "native_name": "\u65e5\u672c\u8a9e", "code": "ja", "default": false}, "Espa\u00f1ol": {"name": "Espa\u00f1ol (Spanish)", "native_name": "Espa\u00f1ol", "code": "es", "default": false}, "Svenska": {"name": "Svenska (Swedish)", "native_name": "Svenska", "code": "sv", "default": false}, "Deutsch": {"name": "Deutsch (German)", "native_name": "Deutsch", "code": "de", "default": false}, "Fran\u00e7ais": {"name": "Fran\u00e7ais (French)", "native_name": "Fran\u00e7ais", "code": "fr", "default": false}, "Italiano": {"name": "Italiano (Italian)", "native_name": "Italiano", "code": "it", "default": false}}, "primary": true}], 4384 }; 4385</script>
vendor: 1 bytes, line 4385
4385
4386<script src="//spring-beautiful.myshopify.com/cdn/shop/t/1/assets/tms.js?v=4363873873501317481662947133" defer="defer"></script>
4386 4387<!-- **END** Hextom TMS Integration // Dropdown - DO NOT MODIFY --> 4388 4389 <!-- **END** Hextom TMS Integration // Main Include - DO NOT MODIFY -->
4390<script src="//cdn.shopify.com/s/files/1/0194/1736/6592/t/1/assets/booster-page-speed-optimizer.js?23" type="text/javascript"></script>
4390 4391<div id="shopify-block-AYkpjcWFINkF3RWlJV__1513253815146976218" class="shopify-block shopify-app-block"> 4392</div><div id="shopify-block-ARGE2emF2THkrZnJLS__9670189827046205946" class="shopify-block shopify-app-block">
4392<script type="application/javascript"> 4393 4394window.TMS_SHOPIFY_EXTENSION_CDN = 'https://cdn.shopify.com/extensions/01a11f5e-ecd8-7271-a763-920f41042782/TMS-Prod-v-8abd617-64-1/assets/'; 4395var tmsOnPageMoneyFormat = "${{amount}}"; 4396var tmsShopBaseCurrencyCode = "EUR"; 4397</script>
vendor: 1 bytes, line 4397
4397
4398<script type="application/javascript"><!-- BEGIN app snippet: tms_data_mo --> 4399var tmsRegionData = {"SE":{"region_name":"Sweden","region_code":"SE","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"DK":{"region_name":"Denmark","region_code":"DK","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"IT":{"region_name":"Italy","region_code":"IT","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"FI":{"region_name":"Finland","region_code":"FI","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"BE":{"region_name":"Belgium","region_code":"BE","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"BG":{"region_name":"Bulgaria","region_code":"BG","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"DE":{"region_name":"Germany","region_code":"DE","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":true,"is_tms_managed":true},"AD":{"region_name":"Andorra","region_code":"AD","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"AX":{"region_name":"à land Islands","region_code":"AX","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"BY":{"region_name":"Belarus","region_code":"BY","currency_code":"BYN","currency_symbol":"Br","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"GE":{"region_name":"Georgia","region_code":"GE","currency_code":"GEL","currency_symbol":"","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":true}
4399,"GI":{"region_name":"Gibraltar","region_code":"GI","currency_code":"GIP","currency_symbol":"£","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":true},"JO":{"region_name":"Jordan","region_code":"JO","currency_code":"JOD","currency_symbol":"","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount","primary":false,"is_tms_managed":true},"LY":{"region_name":"Libya","region_code":"LY","currency_code":"LYD","currency_symbol":"LD","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"MC":{"region_name":"Monaco","region_code":"MC","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"ME":{"region_name":"Montenegro","region_code":"ME","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"SM":{"region_name":"San Marino","region_code":"SM","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"SY":{"region_name":"Syria","region_code":"SY","currency_code":"SYP","currency_symbol":"S£","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":true},"TN":{"region_name":"Tunisia","region_code":"TN","currency_code":"TND","currency_symbol":"","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount","primary":false,"is_tms_managed":true},"TR":{"region_name":"Turkey","region_code":"TR","currency_code":"TRY","currency_symbol":"TL","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount","primary":false,"is_tms_managed":true},"VA":{"region_name":"Vatican City","region_code":"VA","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"XK":{"region_name":"Kosovo","region_code":"XK","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"NO":{"region_name":"Norway","region_code":"NO","currency_code":"NOK","currency_symbol":"kr","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"ES":{"region_name":"Spain","region_code":"ES","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"HR":{"region_name":"Croatia","region_code":"HR","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"CY":{"region_name":"Cyprus","region_code":"CY","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"CZ":{"region_name":"Czechia","region_code":"CZ","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"EE":{"region_name":"Estonia","region_code":"EE","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"GR":{"region_name":"Greece","region_code":"GR","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"HU":{"region_name":"Hungary","region_code":"HU","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"IE":{"region_name":"Ireland","region_code":"IE","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"LV":{"region_name":"Latvia","region_code":"LV","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"LT":{"region_name":"Lithuania","region_code":"LT","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"LU":{"region_name":"Luxembourg","region_code":"LU","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"MT":{"region_name":"Malta","region_code":"MT","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"NL":{"region_name":"Netherlands","region_code":"NL","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"PL":{"region_name":"Poland","region_code":"PL","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"PT":{"region_name":"Portugal","region_code":"PT","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"RO":{"region_name":"Romania","region_code":"RO","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"SK":{"region_name":"Slovakia","region_code":"SK","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"SI":{"region_name":"Slovenia","region_code":"SI","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"FR":{"region_name":"France","region_code":"FR","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"AT":{"region_name":"Austria","region_code":"AT","currency_code":"EUR","currency_symbol":"â¬","shopify_payment":false,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":true},"AL":{"region_name":"Albania","region_code":"AL","currency_code":"ALL","currency_symbol":"Lek","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"AM":{"region_name":"Armenia","region_code":"AM","currency_code":"AMD","currency_symbol":"","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"AU":{"region_name":"Australia","region_code":"AU","currency_code":"AUD","currency_symbol":"$","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"AZ":{"region_name":"Azerbaijan","region_code":"AZ","currency_code":"AZN","currency_symbol":"m.","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"BA":{"region_name":"Bosnia & Herzegovina","region_code":"BA","currency_code":"BAM","currency_symbol":"KM","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":false},"CA":{"region_name":"Canada","region_code":"CA","currency_code":"CAD","currency_symbol":"$","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"CH":{"region_name":"Switzerland","region_code":"CH","currency_code":"CHF","currency_symbol":"CHF","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"DZ":{"region_name":"Algeria","region_code":"DZ","currency_code":"DZD","currency_symbol":"DA","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false}
4399,"EG":{"region_name":"Egypt","region_code":"EG","currency_code":"EGP","currency_symbol":"LE","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"FO":{"region_name":"Faroe Islands","region_code":"FO","currency_code":"DKK","currency_symbol":"kr","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":false},"GB":{"region_name":"United Kingdom","region_code":"GB","currency_code":"GBP","currency_symbol":"£","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"GL":{"region_name":"Greenland","region_code":"GL","currency_code":"DKK","currency_symbol":"kr","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":false},"ID":{"region_name":"Indonesia","region_code":"ID","currency_code":"IDR","currency_symbol":"Rp","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_with_comma_separator","primary":false,"is_tms_managed":false},"IL":{"region_name":"Israel","region_code":"IL","currency_code":"ILS","currency_symbol":"NIS","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount","primary":false,"is_tms_managed":false},"IN":{"region_name":"India","region_code":"IN","currency_code":"INR","currency_symbol":"Rs.","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"JP":{"region_name":"Japan","region_code":"JP","currency_code":"JPY","currency_symbol":"Â¥","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_no_decimals","primary":false,"is_tms_managed":false},"KH":{"region_name":"Cambodia","region_code":"KH","currency_code":"KHR","currency_symbol":"KHR","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"KR":{"region_name":"South Korea","region_code":"KR","currency_code":"KRW","currency_symbol":"â©","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount_no_decimals","primary":false,"is_tms_managed":false},"KZ":{"region_name":"Kazakhstan","region_code":"KZ","currency_code":"KZT","currency_symbol":"","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"LA":{"region_name":"Laos","region_code":"LA","currency_code":"LAK","currency_symbol":"â","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"LB":{"region_name":"Lebanon","region_code":"LB","currency_code":"LBP","currency_symbol":"L£","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"LI":{"region_name":"Liechtenstein","region_code":"LI","currency_code":"CHF","currency_symbol":"CHF","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"LK":{"region_name":"Sri Lanka","region_code":"LK","currency_code":"LKR","currency_symbol":"Rs","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"MA":{"region_name":"Morocco","region_code":"MA","currency_code":"MAD","currency_symbol":"Dh","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"MD":{"region_name":"Moldova","region_code":"MD","currency_code":"MDL","currency_symbol":"","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"MK":{"region_name":"North Macedonia","region_code":"MK","currency_code":"MKD","currency_symbol":"ден","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"MM":{"region_name":"Myanmar (Burma)","region_code":"MM","currency_code":"MMK","currency_symbol":"K","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"MY":{"region_name":"Malaysia","region_code":"MY","currency_code":"MYR","currency_symbol":"RM","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"NZ":{"region_name":"New Zealand","region_code":"NZ","currency_code":"NZD","currency_symbol":"$","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"PS":{"region_name":"Palestinian Territories","region_code":"PS","currency_code":"ILS","currency_symbol":"âª","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"RS":{"region_name":"Serbia","region_code":"RS","currency_code":"RSD","currency_symbol":"","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false}
4399,"SG":{"region_name":"Singapore","region_code":"SG","currency_code":"SGD","currency_symbol":"$","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"TH":{"region_name":"Thailand","region_code":"TH","currency_code":"THB","currency_symbol":"฿","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount","primary":false,"is_tms_managed":false},"TW":{"region_name":"Taiwan","region_code":"TW","currency_code":"TWD","currency_symbol":"$","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"UA":{"region_name":"Ukraine","region_code":"UA","currency_code":"UAH","currency_symbol":"â´","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"US":{"region_name":"United States","region_code":"US","currency_code":"USD","currency_symbol":"$","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"before","currency_format":"amount","primary":false,"is_tms_managed":false},"VN":{"region_name":"Vietnam","region_code":"VN","currency_code":"VND","currency_symbol":"â«","shopify_payment":true,"shopify_markets":true,"manual_exchange_rate_base_currency":"EUR","manual_exchange_rate":0.0,"rounding_rule":"no","rounding_decimal":"0","symbol_placement":"after","currency_format":"amount_no_decimals_with_comma_separator","primary":false,"is_tms_managed":false}};<!-- END app snippet --> 4400</script>
vendor: 1 bytes, line 4400
4400
4401<script type="application/javascript"><!-- BEGIN app snippet: tms_data_mf --> 4402var tmsFileTranslationData = [];<!-- END app snippet --> 4403</script>
vendor: 1 bytes, line 4403
4403
4404<script type="application/javascript"><!-- BEGIN app snippet: tms_file --> 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414<!-- END app snippet --> 4415</script>
vendor: 1 bytes, line 4415
4415
4416<script type="application/javascript"><!-- BEGIN app snippet: tms_data_mf --> 4417var tmsVETranslationData = [];<!-- END app snippet --> 4418</script>
vendor: 1 bytes, line 4418
4418
4419<script type="application/javascript"><!-- BEGIN app snippet: tms_ve --> 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429<!-- END app snippet --> 4430</script>
4430 4431
4432<script type="application/javascript"> 4433var tmsAbsLinkData = "https:\/\/cdn3.hextom.com\/"; 4434var tmsShopBaseLocaleCodeData = "en"; 4435var tmsSelectorEnabledData = true; 4436var tmsCartNoteData = {"base_text":"We handle all orders in EUR. Although the content of your cart is currently shown in your selected or localized currency, you will proceed to checkout using EUR at the prevailing exchange rate.","trans_text_dict":{}}; 4437var tmsBasicTransLanguageData = {"sv":false,"no":false,"nl":false,"it":false,"is":false,"fr":false,"fi":false,"es":false,"el":false,"da":false,"ja":false,"de":false}; 4438var tmsAutoCoverageLanguageData = {"sv":false,"no":false,"nl":false,"it":false,"is":false,"fr":false,"fi":false,"es":false,"el":false,"da":false,"ja":false,"de":false}; 4439var tmsRegionGroupMapping = {}; 4440var tmsRegionLanguageDefaultsData = {};</script>
4440 4441</div>
4441<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4441 4442</body> 4443</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.