{"version":3,"sources":["ActivateGtm.js","Datalayer/Datalayer.js","Helper/ElementExist.js","Helper/GenericEventListener.js","EventListener/CheckoutIntractions/BeginCheckoutEventListener.js","EventListener/CheckoutIntractions/PurchaseCheckoutEventListener.js","EventListener/CheckoutIntractions/SelectPaymentMethodEventListener.js","EventListener/CheckoutIntractions/SelectShippingEventListener.js","EventListener/ProductViewsIntractions/ProductListViewEventListener.js","EventListener/ProductViewsIntractions/ProductSelectItemListener.js","EventListener/ProductViewsIntractions/ProductViewEventListener.js","EventListener/Promotions/SelectPromotionEventListener.js","EventListener/ShoppingCartIntrations/AddToCartEventListener.js","EventListener/ShoppingCartIntrations/AddToWishListEventListener.js","EventListener/ShoppingCartIntrations/RemoveFromCartEventListener.js","EventListener/ShoppingCartIntrations/ViewCartEventListener.js","EventListener/UserIntractions/ProductSearchEventListener.js","EventListener/UserIntractions/UserLoginEventListener.js"],"names":["ActivateGtm","[object Object]","isFull","this","activateGtm","activateAddToCart","activateRemoveFromCart","activateRemoveFromAllCart","activateViewCart","activateViewDetailProduct","activateViewListProduct","activateAddToWishList","activateSearchProduct","activateUserLogin","activateChangeShipping","activateSelectPaymentMethod","activateBeginCheckout","activatePurchaseCheckout","activateSelectItemProduct","error","console","log","waitForElm","then","elm","activateSelectors","AddToCartEventListener","catch","waitForAngularElement","RemoveFromCartEventListener","viewCart","ViewCartEventListener","callback","viewProduct","ProductViewEventListener","ProductSelectItemListener","ProductListViewEventListener","AddToWishListEventListener","ProductSearchEventListener","UserLoginEventListener","first","elm1","SelectShippingEventListener","shipping","listen","SelectPaymentMethodEventListener","payment","BeginCheckoutEventListener","paymentSuccess","PurchaseCheckoutEventListener","SelectPromotionEventListener","DataLayer","window","dataLayer","gtag","push","arguments","Date","gtmCode","data","selector","Promise","resolve","document","querySelector","observer","MutationObserver","mutations","disconnect","observe","body","childList","subtree","angular","element","scope","ownerDocument","attributes","typeofEventListener","elements","querySelectorAll","i","length","genericEventListener","CheckoutProducts","DefaultEventName","eventName","clear","items","checkoutProducts","prototype","cartItem","analyticsData","dataset","analytics","JSON","parse","analticsDataProducts","products","price","Number","replace","toFixed","pricewithdiscount","item","item_id","code","item_name","name","item_brand","brand","item_category","category","currency","quantity","categories","splitCategories","split","j","variant","Object","values","join","event","ecommerce","warn","event_category","event_label","SendData","addEventListener","removeEventListener","paymentSuccessData","paymentProducts","Analytics","affiliation","Quantity","transaction_id","value","Total","tax","PaymentMethod","CheckoutCart","methodName","totalPrice","bank","checkoutCart","carttotal","cartcurrency","payment_type","setTimeout","ShippingName","shippingName","shippings","index","checked","cargo","shipping_tier","ProductList","AllDetailProductSelector","AddTypes","category_product_list","related_product_list","lastview_product_list","product_collection","type","addtype","typeName","allProductArry","getElementsByClassName","arrayUniqueByKey","Map","map","product","priceWithDiscount","item_list_id","item_list_name","ProductAddCart","addCartProduct","headPrice","classList","contains","cartItems","couponCode","couponName","pushItems","quantites","coupon","parseFloat","promotion_id","promotion_name","addToCartAmount","id","cartAmount","$","val","AllCartRemoveTag","AllCartRemoveQuantitiesTag","AllCartRemoveSelector","SingleProductQunatityTag","AllCartRemove","total","className","includes","that","parent","find","SingleProductRemove","ProductSearchButton","ProductSearchText","search_key","search_term","method"],"mappings":"AAAA,MAAAA,YACAC,YAAAC,GACAA,GACAC,KAAAC,cAGAH,cACA,IACAE,KAAAE,oBACAF,KAAAG,yBACAH,KAAAI,4BACAJ,KAAAK,mBACAL,KAAAM,4BACAN,KAAAO,0BACAP,KAAAQ,wBACAR,KAAAS,wBACAT,KAAAU,oBACAV,KAAAW,wBAAA,GACAX,KAAAY,6BAAA,GACAZ,KAAAa,wBACAb,KAAAc,2BACAd,KAAAe,4BACA,MAAAC,GACAC,QAAAC,IAAAF,IAIAlB,oBACAqB,WAAA,oBACAC,KAAA,SAAAC,GACAC,kBAAA,mBAAAC,0BAEAC,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,yBACAqB,WAAA,yBACAC,KAAA,SAAAC,GACAI,sBAAA,yBACAL,KAAA,SAAAC,GACAC,kBACA,wBACAI,+BAGAF,MAAA,SAAAR,GACAC,QAAAC,IAAAF,OAGAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,4BACAqB,WAAA,4BACAC,KAAA,SAAAC,GACAI,sBAAA,4BACAL,KAAA,SAAAC,GACAC,kBACA,2BACAI,+BAGAF,MAAA,SAAAR,GACAC,QAAAC,IAAAF,OAGAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,mBACAqB,WAAA,kBACAC,KAAA,SAAAC,GACA,IAAAM,EAAA,IAAAC,sBACA,IACAD,EAAAE,WACA,MAAAb,GACAC,QAAAD,MAAAA,MAGAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,4BACAqB,WAAA,mBACAC,KAAA,SAAAC,GACA,IAAAS,EAAA,IAAAC,yBAAAV,GACA,IACAS,EAAAD,WACA,MAAAb,GACAC,QAAAD,MAAAA,MAGAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAIAlB,4BACAqB,WAAA,sBACAC,KAAA,SAAAC,GACAC,kBACA,qBACAU,6BAGAR,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAIAlB,0BACAqB,WAAA,qBACAC,KAAA,SAAAC,GACA,IAAAS,EAAA,IAAAG,6BAAAZ,GACA,IACAS,EAAAD,WACA,MAAAb,GACAC,QAAAD,MAAAA,MAGAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,wBACAqB,WAAA,qBACAC,KAAA,SAAAC,GACAC,kBACA,oBACAY,8BAGAV,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,wBACAqB,WAAA,sBACAC,KAAA,SAAAC,GACAC,kBACA,qBACAa,8BAGAX,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,oBACAqB,WAAA,iBACAC,KAAA,SAAAC,GACAC,kBAAA,gBAAAc,0BAEAZ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,uBAAAuC,GACAlB,WAAA,sBAAAC,KAAA,SAAAC,GACAI,sBAAA,sBACAL,KAAA,SAAAkB,GAKA,GAJAhB,kBACA,qBACAiB,6BAEAF,EAAA,CACA,IAAAG,EAAA,IAAAD,4BAAAlB,GACA,IACAmB,EAAAX,WACAW,EAAAC,SACA,MAAAzB,GACAC,QAAAD,MAAAA,OAIAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAEAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,OAIAlB,4BAAAuC,GACAlB,WAAA,uBACAC,KAAA,SAAAC,GAKA,GAJAC,kBACA,sBACAoB,kCAEAL,EAAA,CACA,IAAAM,EAAA,IAAAD,iCAAArB,GACA,IACAsB,EAAAd,WACAc,EAAAF,SACA,MAAAzB,GACAC,QAAAD,MAAAA,OAIAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,wBACAqB,WAAA,uBACAC,KAAA,SAAAC,GACAC,kBACA,sBACAsB,8BAGApB,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAGAlB,2BACAqB,WAAA,wBACAC,KAAA,SAAAC,GACA,IAAAwB,EAAA,IAAAC,8BAAAzB,GACA,IACAwB,EAAAhB,WACA,MAAAb,GACAC,QAAAD,MAAAA,MAGAQ,MAAA,SAAAR,GACAC,QAAAC,IAAAF,KAIAlB,6BACAqB,WAAA,yBACAC,KAAA,SAAAC,GACAC,kBACA,wBACAyB,gCAGAvB,MAAA,SAAAR,GACAC,QAAAC,IAAAF,MCpPA,MAAAgC,UAEAlD,cACA,IAAAmD,OAAAC,UAAA,CAGA,SAAAC,IACAD,UAAAE,KAAAC,WAHAJ,OAAAC,UAAAD,OAAAC,WAAA,GAKAC,EAAA,KAAA,IAAAG,MACAH,EAAA,SAAAF,OAAAM,SAEAvD,KAAAkD,UAAAD,OAAAC,WAAA,GAIApD,WAAA0D,GACAxD,KAAAkD,UAAAE,KAAAI,GAGA1D,UCpBA,SAAAqB,WAAAsC,GACA,OAAA,IAAAC,QAAAC,IACA,GAAAC,SAAAC,cAAAJ,GACA,OAAAE,EAAAC,SAAAC,cAAAJ,IAGA,MAAAK,EAAA,IAAAC,iBAAAC,IACAJ,SAAAC,cAAAJ,KACAE,EAAAC,SAAAC,cAAAJ,IACAK,EAAAG,gBAIAH,EAAAI,QAAAN,SAAAO,KAAA,CACAC,WAAA,EACAC,SAAA,MAKA,SAAA5C,sBAAAgC,GACA,OAAA,IAAAC,QAAAC,IACA,GAAAW,QAAAC,QAAAd,GAAAe,QACA,OAAAb,EAAAW,QAAAC,QAAAd,GAAAe,SAGA,MAAAV,EAAA,IAAAC,iBAAAC,IACAM,QAAAC,QAAAd,GAAAe,UACAb,EAAAW,QAAAC,QAAAd,GAAAe,SACAV,EAAAG,gBAIAK,QAAAC,QAAAd,GAAAe,SACAV,EAAAI,QAAAI,QAAAC,QAAAd,GAAA,GAAAgB,cAAAN,KAAA,CACAC,WAAA,EACAC,SAAA,EACAK,YAAA,MCrCA,SAAApD,kBAAAmC,EAAAkB,GAEA,IADA,IAAAC,EAAAhB,SAAAiB,iBAAApB,GACAqB,EAAA,EAAAA,EAAAF,EAAAG,OAAAD,IAAA,CACA,IAAAE,EAAA,IAAAL,EAAAC,EAAAE,IACA,IACAE,EAAAvC,SACA,MAAAzB,GACAC,QAAAD,MAAAA,KCLA,MAAA4B,2BAKAqC,uBACA,MAAA,yBAGAC,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QAOA,IANA,IAAAC,EAAA,GAEAC,EAAA1B,SAAAiB,iBACAjC,2BAAA2C,UAAAN,kBAGAH,EAAA,EAAAA,EAAAQ,EAAAP,OAAAD,IAAA,CACA,IAAAU,EAAAF,EAAAR,GACAW,EAAAD,EAAAE,QAAAC,UACAC,KAAAC,MAAAL,EAAAE,QAAAC,WACA,KAEA,GAAAF,GAAAD,EAAAE,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KAEAC,EAAAC,OACAH,EAAAE,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBAAAF,QAAA,IAAA,MACAC,QAAA,GAEAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAC,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAC,SAAAhB,EAAAgB,SACAd,MAAAI,EACAW,SAAAvB,EAAAE,QAAAqB,UAGA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKA,GAAA3B,EAAAE,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAAL,EAAAE,QAAA0B,SACAA,IACAf,EAAA,aAAAgB,OAAAC,OAAAF,GAAAG,KAAA,MAIAvB,GAAAI,IACAC,EAAA,MAAAL,EACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAd,EAAAjC,KAAAiD,IAIAhB,EAAAN,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,iBACAC,UAAA,CACApC,MAAAA,KAGAjE,KAAA,MACA,IAAAvB,aACAiB,2BACAG,QAAAC,IAAA,qCAEAM,MAAAR,IACAC,QAAAyG,KAAA,iCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,iBAAA,CACAwE,eAAA,qBACAC,YAAA,iBACAvC,MAAAA,IAxBAwC,CAAA3E,GA8BApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAvC,2BAAA2C,UAAA1D,UAGA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAvC,2BAAA2C,UAAA1D,WC3HA,MAAAiB,8BAKAmC,uBACA,MAAA,yBAGAC,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QACA,IAAAC,EAAA,GACAd,EAAAX,SAAAC,cAAA,wBAEA,GAAAU,GAAAA,EAAAmB,QAAA,CACA,IAAA7C,EAAA0B,EAAAmB,QAAA/C,QACA,GAAAE,EAAA,CACA,IAAAmF,EAAApC,KAAAC,MAAAhD,GACA,IAAA,MAAAoF,KAAAD,EAAAjC,SAAA,CACA,IAAAN,EAAAwC,EAAAC,UACAtC,KAAAC,MAAAoC,EAAAC,WACA,KAEA,GAAAzC,EAAA,CACA,IAAAK,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KAEAC,EAAAC,OACAH,EAAAE,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBAAAF,QACA,IACA,MAEAC,QAAA,GAEAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACA0B,YAAA5D,EAAAmB,QAAAyC,YACAzB,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAC,SAAAhB,EAAAgB,SACAd,MAAAI,EACAW,SAAAkB,EAAAG,UAGA,GAAAtC,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GACAF,EAAAE,GAKA,GAAAc,EAAAb,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAAoC,EAAAb,SACAA,IACAf,EAAA,aACAgB,OAAAC,OAAAF,GAAAG,KAAA,MAIAvB,GAAAI,IACAC,EAAA,MAAAL,EACAK,EAAA,UACAL,EAAAI,GACAD,QAAA,IAGAd,EAAAjC,KAAAiD,IAIAhB,EAAAN,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,WACAC,UAAA,CACAY,eACAL,EAAAK,eACAF,YAAAH,EAAAG,YACAG,MAAAN,EAAAO,MACAC,IAAAR,EAAAQ,IACAhG,SAAAwF,EAAAxF,SACAsE,SAAAkB,EAAAlB,SACAzB,MAAAA,KAGAjE,KAAA,KACAH,QAAAC,IAAA,+BAEAM,MAAAR,IACAC,QAAAyG,KAAA,2BAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,WAAA,CACAwE,eAAA,qBACAC,YAAA,WACAU,MAAAN,EAAAO,MACAzB,SAAAkB,EAAAlB,SACAuB,eAAAL,EAAAK,eACAF,YAAAH,EAAAG,YACAK,IAAAR,EAAAQ,IACAhG,SAAAwF,EAAAxF,SACA6C,MAAAA,IAnCAwC,CAAA3E,KA2CApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACArC,8BAAAyC,UAAA1D,UAGA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACArC,8BAAAyC,UAAA1D,WChJA,MAAAa,iCAKA+F,oBACA,MAAA,sBAEAxD,uBACA,MAAA,yBAEAyD,mBACA,MAAA,qBAEAxD,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,WACAmB,QAAAC,IAAAlB,MACA,MAAAkD,EAAA,IAAAF,UAEA,IAAA2F,EACAC,EAFA1F,EAAAkC,QAGA,IACA0B,EADAzB,EAAA,GAGAsD,EAAA3I,KAAA0F,QACA1F,KAAA0F,QAAAmD,KACA7I,KAAAuE,QAAAmB,QAAAmD,KASA,IAPA,IAAAvD,EAAA1B,SAAAiB,iBACAnC,iCAAA6C,UAAAN,kBAEA6D,EAAAlF,SAAAC,cACAnB,iCAAA6C,UAAAmD,cAGA5D,EAAA,EAAAA,EAAAQ,EAAAP,OAAAD,IAAA,CACA,IAAAU,EAAAF,EAAAR,GACAW,EAAAD,EAAAE,QAAAC,UACAC,KAAAC,MAAAL,EAAAE,QAAAC,WACA,KAEA,GAAAF,GAAAD,EAAAE,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACA6C,EAAAE,EAAApD,QAAAqD,UACAjC,EAAAgC,EAAApD,QAAAsD,aAEA,IAAA3C,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAC,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,UAGA,GAAAf,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAAO,cAAAK,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKA9B,EAAAjC,KAAAiD,IAIAhB,EAAAN,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,mBACAC,UAAA,CACAX,SAAAA,EACAwB,MAAAM,EACAK,aAAAN,EACAtD,MAAAA,KAGAjE,KAAA,KACA8H,WAAA,MACA,IAAArJ,aACAe,6BAAA,IACA,KACAK,QAAAC,IAAA,uCAEAM,MAAAR,IACAC,QAAAyG,KAAA,mCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,mBAAA,CACAwE,eAAA,qBACAC,YAAA,mBACAU,MAAAM,EACA9B,SAAAA,EACAmC,aAAAN,EACAtD,MAAAA,IAhCAwC,CAAA3E,GAsCApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAzC,iCAAA6C,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAzC,iCAAA6C,UAAA1D,WC/HA,MAAAU,4BAKA4G,mBACA,MAAA,qBAEAlE,uBACA,MAAA,yBAEAyD,mBACA,MAAA,qBAEAxD,uBACA,MAAA,QAGApF,YACAyE,EACAY,EAAA5C,4BAAAgD,UAAAL,kBAEAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,WACA,MAAAoD,EAAA,IAAAF,UAEA,IAAAoG,EACAR,EAFA1F,EAAAkC,QAGA,IACA0B,EADAzB,EAAA,GAGAgE,EAAAzF,SAAAiB,iBACAtC,4BAAAgD,UAAA4D,cAEA7D,EAAA1B,SAAAiB,iBACAtC,4BAAAgD,UAAAN,kBAGA,IAAA,IAAAqE,EAAA,EAAAA,EAAAD,EAAAtE,OAAAuE,IACAD,EAAAC,GAAAC,UACAH,EAAAC,EAAAC,GAAA5D,QAAA8D,OAQA,IAJA,IAAAV,EAAAlF,SAAAC,cACAtB,4BAAAgD,UAAAmD,cAGA5D,EAAA,EAAAA,EAAAQ,EAAAP,OAAAD,IAAA,CACA,IAAAU,EAAAF,EAAAR,GACAW,EAAAD,EAAAE,QAAAC,UACAC,KAAAC,MAAAL,EAAAE,QAAAC,WACA,KAEA,GAAAF,GAAAD,EAAAE,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACA6C,EAAAE,EAAApD,QAAAqD,UACAjC,EAAAgC,EAAApD,QAAAsD,aAEA,IAAA3C,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAC,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,UAGA,GAAAf,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKA9B,EAAAjC,KAAAiD,IAIAhB,EAAAN,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,oBACAC,UAAA,CACAX,SAAAA,EACAwB,MAAAM,EACAa,cAAAL,EACA/D,MAAAA,KAGAjE,KAAA,KACA8H,WAAA,MACA,IAAArJ,aACAc,wBAAA,IACA,KACAM,QAAAC,IAAA,wCAEAM,MAAAR,IACAC,QAAAyG,KAAA,oCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,oBAAA,CACAwE,eAAA,qBACAC,YAAA,oBACAU,MAAAM,EACA9B,SAAAA,EACA2C,cAAAL,EACA/D,MAAAA,IAhCAwC,CAAA3E,GAsCApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACA5C,4BAAAgD,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACA5C,4BAAAgD,UAAA1D,WCzIA,MAAAI,6BAKAyH,kBACA,MAAA,oBAEAC,+BACA,MAAA,kBAEAzE,uBACA,MAAA,QAEA0E,eACA,MAAA,CACAC,sBAAA,wBACAC,qBAAA,uBACAC,sBAAA,wBACAC,mBAAA,sBAIAlK,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QACA,IAAA6E,EAAAjK,KAAAuE,QAAAmB,QAAAwE,SAAA,wBACAC,EAAAnI,0BAAAuD,UAAAqE,SAAAK,GAIAG,EAAA,IADApK,KAAAuE,QAAA8F,uBAAA,sBAEAhF,EAAA,GACA,MACAiF,EAAA,IACA,IAAAC,IACAH,EAAAI,IAAAnE,GAAA,CAAAA,EAAAX,QAAA,KAAAW,KACAiB,UAGA,IAAA,MAAAmD,KAAAH,EAAA,CACA,IAAA7E,EAAAgF,EAAA/E,QAAAC,UACAC,KAAAC,MAAA4E,EAAA/E,QAAAC,WACA,KACA,GAAAF,GAAAgF,EAAA/E,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KAEAC,EAAAC,OACAwE,EAAA/E,QAAAM,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAwE,EAAA/E,QAAAgF,kBAAAxE,QAAA,IAAA,MACAC,QAAA,GACAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAb,MAAAI,EACAW,SAAAjB,EAAAiB,UAGA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKAnB,GAAAI,IACAC,EAAA,MAAAP,EAAAE,MACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAd,EAAAjC,KAAAiD,IAIAhB,EAAAN,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,iBACAC,UAAA,CACAkD,aAAAV,EACAW,eAAAT,EACA9E,MAAAA,KAGAjE,KAAA,KACAH,QAAAC,IAAA,mCACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,iCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,iBAAA,CACAwE,eAAA,qBACAC,YAAA,iBACA+C,aAAAV,EACAW,eAAAT,EACA9E,MAAAA,IA9BAwC,CAAA3E,GAoCApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAlD,6BAAAsD,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAlD,6BAAAsD,UAAA1D,WC1IA,MAAAG,0BAKA0H,kBACA,MAAA,oBAEAC,+BACA,MAAA,kBAEAzE,uBACA,MAAA,QAEA0E,eACA,MAAA,CACAC,sBAAA,wBACAC,qBAAA,uBACAC,sBAAA,yBAIAjK,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,IAAAoK,EAAAtG,SAAAC,cACA7B,0BAAAuD,UAAAmE,aAEA9F,SAAAC,cACA7B,0BAAAuD,UAAAmE,aACAhE,QAAAwE,QACA,KAEAC,EAAAnI,0BAAAuD,UAAAqE,SAAAM,GACA,MAAAhH,EAAA,IAAAF,UACAE,EAAAkC,QACA,IAAAK,EAAAzF,KAAA0F,QAAAC,UACAC,KAAAC,MAAA7F,KAAA0F,QAAAC,WACA,KAEA,GAAAF,GAAAzF,KAAA0F,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACA4E,EAAAT,GAAA,OAEAlE,EAAAC,OACAH,EAAAE,MACAF,EAAAE,MAAAE,QAAA,IAAA,KACAlG,KAAA0F,QAAAM,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBACAN,EAAAM,kBAAAF,QAAA,IAAA,KACAlG,KAAA0F,QAAAgF,kBAAAxE,QAAA,IAAA,MACAC,QAAA,GAEAE,EAAA,CACAC,QAAAtG,KAAA0F,QAAAa,KACAvG,KAAA0F,QAAAa,KACAT,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACA8D,aAAAA,EACA3E,MAAAI,EACAW,SAAAjB,EAAAiB,UAEA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACApC,EAAA,EAAAA,EAAAmC,EAAAlC,OAAAD,IACA,GAAAA,EACAuB,EAAA,cAAAY,EAAAnC,GAEAuB,EAAA,gBAAAvB,GAAAmC,EAAAnC,GAQA,GAJA9E,KAAA0F,QAAAwE,UACA7D,EAAA,aAAArG,KAAA0F,QAAAwE,SAGAlK,KAAA0F,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAA7F,KAAA0F,QAAA0B,SACAA,IACAf,EAAA,aAAAgB,OAAAC,OAAAF,GAAAG,KAAA,MAGAvB,GAAAI,IACAC,EAAA,MAAAL,EACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAjD,EACAE,KAAA,CAEAoE,MAAA,cACAmD,aAAAA,EACAC,eAAAT,EACA1C,UAAA,CACApC,MAAA,CAAAgB,MAGAjF,KAAA,KACAH,QAAAC,IAAA,gCACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,8BAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,cAAA,CACAwE,eAAA,qBACAC,YAAA,uBACA+C,aAAAA,EACAC,eAAAT,EACA9E,MAAA,CAAAgB,MAMAvG,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAnD,0BAAAuD,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAnD,0BAAAuD,UAAA1D,WC7IA,MAAAE,yBAKA8I,qBACA,MAAA,uBAEAlB,+BACA,MAAA,kBAEAzE,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QAEA,IAAA0F,EAAAlH,SAAAC,cAAA7D,KAAA6K,gBAQAT,EAAA,IANAU,EACAA,EAAAT,uBACArK,KAAA2J,0BAEA/F,SAAAyG,uBAAArK,KAAA2J,2BAGAtE,EAAA,GACA0F,EAAA,EACA,MACAT,EAAA,IACA,IAAAC,IACAH,EAAAI,IAAAnE,GAAA,CAAAA,EAAAX,QAAA,KAAAW,KACAiB,UAGA,IAAA,MAAAmD,KAAAH,EACA,GACA,GAAAA,EAAAvF,SACA0F,EAAAO,UAAA1C,MAAA2C,SAAA,mBACA,CACA,IAAAxF,EAAAgF,EAAA/E,QAAAC,UACAC,KAAAC,MAAA4E,EAAA/E,QAAAC,WACA,KACA,GAAAF,GAAAgF,EAAA/E,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KAEAC,EAAAC,OACAwE,EAAA/E,QAAAM,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAwE,EAAA/E,QAAAgF,kBAAAxE,QAAA,IAAA,MACAC,QAAA,GACA4E,EAAA3E,EACA,IAAAW,EAAA0D,EAAAO,UAAA1C,MAAA2C,SACA,gBAEA,EACAR,EAAA/E,QAAAqB,SACAV,EAAA,CACAC,QAAAmE,EAAA/E,QAAAa,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAb,MAAAI,EACAW,SAAAA,GAGA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAWA,GANAnB,GAAAI,IACAC,EAAA,MAAAP,EAAAE,MACAK,EAAA,UAAAL,EAAAI,GAAAD,QACA,IAGAsE,EAAA/E,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAA4E,EAAA/E,QAAA0B,SACAA,IACAf,EAAA,aACAgB,OAAAC,OAAAF,GAAAG,KAAA,MAGAlC,EAAAjC,KAAAiD,IAKAhB,EAAAN,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,YACAC,UAAA,CACAX,SAAAA,SACAwB,MAAAyC,EACA1F,MAAAA,KAGAjE,KAAA,KACAH,QAAAC,IAAA,8BACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,4BAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,YAAA,CACAwE,eAAA,qBACAC,YAAA,YACAU,MAAAyC,EACAjE,SAAAA,SACAzB,MAAAA,IA9BAwC,CAAA3E,GAoCApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACApD,yBAAAwD,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACApD,yBAAAwD,UAAA1D,WCxJA,MAAAkB,6BAIAkC,uBACA,MAAA,yBAEAiG,gBACA,MAAA,iBAEAhG,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,SAAAqL,EAAAC,GACA,MAAAlI,EAAA,IAAAF,UAEA,IAAAqC,EADAnC,EAAAkC,QAEA,IAAAiG,EAAA,GAEAH,EAAAtH,SAAAiB,iBACA9B,6BAAAwC,UAAA2F,WAEA5F,EAAA1B,SAAAiB,iBACA9B,6BAAAwC,UAAAN,kBAEAqG,EAAA1H,SAAAiB,iBACA9B,6BAAAwC,UAAA2F,UACA,uBAEAK,EAAA,CACAJ,WAAAA,EACAC,WAAAA,GAOA,GAJAF,GAAAA,EAAAnG,OAAA,IAAAM,EAAA6F,GACA5F,GAAAA,EAAAP,OAAA,IACAM,EAAAC,GAEAD,EAAA,CACA,IAAA,IAAAP,EAAA,EAAAA,EAAAO,EAAAN,OAAAD,IAAA,CACA,IAAAU,EAAAH,EAAAP,GACAW,EAAAD,EAAAE,QAAAC,UACAC,KAAAC,MAAAL,EAAAE,QAAAC,WACA,KAEA,GAAAF,GAAAD,EAAAE,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACAgB,EAAAvB,EAAAE,QAAAqB,SACAvB,EAAAE,QAAAqB,SACAyE,WAAAF,EAAAxG,GAAAwD,OAEAtC,EAAAC,OACAH,EAAAE,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBAAAF,QAAA,IAAA,MACAC,QAAA,GAEAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACA8E,OAAAA,EAAAH,WACA1E,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAC,SAAAhB,EAAAgB,SACAd,MAAAI,EACAW,SAAAA,GAGA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKA,GAAA3B,EAAAE,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAAL,EAAAE,QAAA0B,SACAA,IACAf,EAAA,aACAgB,OAAAC,OAAAF,GAAAG,KAAA,MAIAvB,GAAAI,IACAC,EAAA,MAAAL,EACAK,EAAA,UAAAL,EAAAI,GAAAD,QACA,IAIAkF,EAAAjI,KAAAiD,IAIAgF,EAAAtG,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,mBACAC,UAAA,CACApC,MAAAgG,KAGAjK,KAAA,MACA,IAAAvB,aACAiB,2BACAG,QAAAC,IAAA,uCAEAM,MAAAR,IACAC,QAAAyG,KAAA,mCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,mBAAA,CACAwE,eAAA,qBACAC,YAAA,mBACA6D,aAAAF,EAAAJ,WACAO,eAAAH,EAAAH,WACA/F,MAAAgG,IA1BAxD,CAAA3E,IAiCApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACApC,6BAAAwC,UAAA1D,UAGA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACApC,6BAAAwC,UAAA1D,WCtJA,MAAAN,uBAIAmI,kBACA,MAAA,oBAEAE,eACA,MAAA,CACAC,sBAAA,wBACAC,qBAAA,uBACAC,sBAAA,yBAIAjK,YAAAyE,EAAAY,EAAA,SACAnF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QAEA,IAAA8E,EAAAtG,SAAAC,cACAtC,uBAAAgE,UAAAmE,aAEA9F,SAAAC,cACAtC,uBAAAgE,UAAAmE,aACAhE,QAAAwE,QACA,KACAzE,EAAAzF,KAAA0F,QAAAC,UACAC,KAAAC,MAAA7F,KAAA0F,QAAAC,WACA,KAEA,GAAAF,GAAAzF,KAAA0F,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACA4F,EAAA/H,SAAAC,cACA,qCACAiC,EAAA8F,GACA,MAEA7E,EAAAyE,WACAG,EAAAA,EAAArD,MAAA,GAEAqC,EAAAT,GAAA,OAEAlE,EAAAC,OACAH,EAAAE,MACAF,EAAAE,MAAAE,QAAA,IAAA,KACAlG,KAAA0F,QAAAM,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBACAN,EAAAM,kBAAAF,QAAA,IAAA,KACAlG,KAAA0F,QAAAgF,kBAAAxE,QAAA,IAAA,MACAC,QAAA,GAEAE,EAAA,CACAC,QAAAtG,KAAA0F,QAAAa,KACAvG,KAAA0F,QAAAa,KACAT,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACA8D,aAAAA,EACA3E,MAAAI,EACAW,SAAAA,GAAA/G,KAAA0F,QAAAqB,UAEA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACApC,EAAA,EAAAA,EAAAmC,EAAAlC,OAAAD,IACA,GAAAA,EACAuB,EAAA,cAAAY,EAAAnC,GAEAuB,EAAA,gBAAAvB,GAAAmC,EAAAnC,GAQA,GAJA9E,KAAA0F,QAAAwE,UACA7D,EAAA,aAAArG,KAAA0F,QAAAwE,SAGAlK,KAAA0F,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAA7F,KAAA0F,QAAA0B,SACAA,IACAf,EAAA,aAAAgB,OAAAC,OAAAF,GAAAG,KAAA,MAGAvB,GAAAI,IACAC,EAAA,MAAAL,EACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAjD,EACAE,KAAA,CAEAoE,MAAA,cACAC,UAAA,CACApC,MAAA,CAAAgB,MAGAjF,KAAA,KACAH,QAAAC,IAAA,gCACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,8BAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,cAAA,CACAwE,eAAA,qBACAC,YAAA,cACAvC,MAAA,CAAAgB,MAMAvG,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACA5D,uBAAAgE,UAAA1D,UAGA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACA5D,uBAAAgE,UAAA1D,WCvIA,MAAAK,2BAKApC,YAAAyE,EAAAY,EAAA,SACAnF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QACA,IAAAK,EAAAzF,KAAA0F,QAAAC,UACAC,KAAAC,MAAA7F,KAAA0F,QAAAC,WACA,KAEA,GAAAF,GAAAzF,KAAA0F,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KAEA8F,EAAAjI,SAAAC,cACA,qCACAiC,EAAA8F,GACA,MAEAD,EAAAE,EACAA,EAAAvD,MACA1E,SAAAC,cACA,qCACA7D,KAAA0F,QAAAkG,GACA,MAEA7E,EAAAyE,WAAAM,EAAAH,GAAAI,OAGA/F,EAAAC,OACAH,EAAAE,MACAF,EAAAE,MAAAE,QAAA,IAAA,KACAlG,KAAA0F,QAAAM,OACAG,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBACAN,EAAAM,kBAAAF,QAAA,IAAA,KACAlG,KAAA0F,QAAAgF,kBAAAxE,QAAA,IAAA,MACAC,QAAA,GAEAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAhB,EAAAgB,SACA9G,KAAA0F,QAAAoB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACA8D,aArBA,OAsBA3E,MAAAI,EACAW,SAAAA,GAAA/G,KAAA0F,QAAAqB,UAEA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACApC,EAAA,EAAAA,EAAAmC,EAAAlC,OAAAD,IACA,GAAAA,EACAuB,EAAA,cAAAY,EAAAnC,GAEAuB,EAAA,gBAAAvB,GAAAmC,EAAAnC,GAQA,GAJA9E,KAAA0F,QAAAwE,UACA7D,EAAA,aAAArG,KAAA0F,QAAAwE,SAGAlK,KAAA0F,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAA7F,KAAA0F,QAAA0B,SACAA,IACAf,EAAA,aAAAgB,OAAAC,OAAAF,GAAAG,KAAA,MAGAvB,GAAAI,IACAC,EAAA,MAAAL,EACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAjD,EACAE,KAAA,CAEAoE,MAAA,kBACAC,UAAA,CACApC,MAAA,CAAAgB,MAGAjF,KAAA,KACAH,QAAAC,IAAA,oCACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,kCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,kBAAA,CACAwE,eAAA,qBACAC,YAAA,kBACAvC,MAAA,CAAAgB,MAMAvG,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAjD,2BAAAqD,UAAA1D,UAGA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAjD,2BAAAqD,UAAA1D,WC5HA,MAAAH,4BAKAsK,uBACA,MAAA,iBAEAC,iCACA,MAAA,oCAEAC,4BACA,MAAA,0BAEAC,+BACA,MAAA,2BAEAjH,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,MAAAoD,EAAA,IAAAF,UAGA,SAAAoJ,IAqBA,IApBA,IAgBAxD,EAEA9B,EAlBAoE,EAAAtH,SAAAiB,iBACAnD,4BAAA6D,UAAAyG,kBAEAV,EACA1H,SAAAiB,iBACAnD,4BAAA6D,UACA0G,4BACAlH,OAAA,EACAnB,SAAAiB,iBACAnD,4BAAA6D,UACA0G,4BAEArI,SAAAiB,iBACA,sCAIAQ,EAAA,GAGAP,EAAA,EAAAA,EAAAoG,EAAAnG,OAAAD,IAAA,CACA,IAAAU,EAAA0F,EAAApG,GACAW,EAAAD,EAAAE,QAAAC,UACAC,KAAAC,MAAAL,EAAAE,QAAAC,WACA,KAEA,GAAAF,GAAAD,EAAAE,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACAgB,EAAAyE,WAAAF,EAAAxG,GAAAwD,OACAM,EAAApD,EAAAE,QAAA2G,MACAvF,EAAAtB,EAAAE,QAAAsD,aAEA,IAAAhD,EAAAC,OACAH,EAAAE,MACAF,EAAAE,MAAAE,QAAA,IAAA,KACAV,EAAAE,QAAAM,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBACAN,EAAAM,kBAAAF,QACA,IACA,KAEAV,EAAAE,QAAAgF,kBAAAxE,QACA,IACA,MAEAC,QAAA,GACAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAb,MAAAI,EACAW,SAAAA,GAGA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKAnB,GAAAI,IACAC,EAAA,MAAAP,EAAAE,MACAK,EAAA,UAAAL,EAAAI,GAAAD,QACA,IAIAd,EAAAjC,KAAAiD,IAIAhB,EAAAN,OAAA,GAGA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,mBACAC,UAAA,CACAX,SAAAA,EACAwB,MAAAM,EACAvD,MAAAA,KAGAjE,KAAA,KACAH,QAAAC,IAAA,qCACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,mCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,mBAAA,CACAwE,eAAA,qBACAC,YAAA,mBACAU,MAAAM,EACA9B,SAAAA,EACAzB,MAAAA,IA7BAwC,CAAA3E,GAvFAA,EAAAkC,QA2NApF,KAAAuE,SACAvE,KAAAuE,QAAA+H,UAAAC,SACA7K,4BAAA6D,UAAA2G,uBAGAE,IAEApM,KAAAsM,UAAAC,SACA7K,4BAAA6D,UAAA2G,uBAGAE,IA5GA,SAAAI,GACA,IAAA/G,EAAA+G,EAAA9G,QAAAC,UACAC,KAAAC,MAAA2G,EAAA9G,QAAAC,WACA,KAEA,GAAAF,GAAA+G,EAAA9G,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACA4F,EAAAG,EAAAU,GACAC,SACAC,KAAAF,EAAAL,0BACApF,EAAAyE,WAAAM,EAAAH,GAAAI,OAEA/F,EAAAC,OACAH,EAAAE,MACAF,EAAAE,MAAAE,QAAA,IAAA,KACAsG,EAAA9G,QAAAM,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBACAN,EAAAM,kBAAAF,QACA,IACA,KAEAsG,EAAA9G,QAAAgF,kBAAAxE,QAAA,IAAA,MACAC,QAAA,GAEAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAb,MAAAI,EACAW,SAAAA,GAAAyF,EAAA9G,QAAAqB,UAEA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACApC,EAAA,EAAAA,EAAAmC,EAAAlC,OAAAD,IACA,GAAAA,EACAuB,EAAA,cAAAY,EAAAnC,GAEAuB,EAAA,gBAAAvB,GAAAmC,EAAAnC,GAKA,GAAA0H,EAAA9G,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAA2G,EAAA9G,QAAA0B,SACAA,IACAf,EAAA,aAAAgB,OAAAC,OAAAF,GAAAG,KAAA,MAIAvB,GAAAI,IACAC,EAAA,MAAAP,EAAAE,MACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAjD,EACAE,KAAA,CAEAoE,MAAA,mBACAC,UAAA,CACAX,SAAAhB,EAAAgB,SACAwB,OAAAlC,EAAAC,EAAAU,UAAAZ,QACA,GAEAd,MAAA,CAAAgB,MAGAjF,KAAA,KACAH,QAAAC,IAAA,qCACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,mCAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,mBAAA,CACAwE,eAAA,qBACAC,YAAA,mBACAU,OAAAlC,EAAAC,EAAAU,UAAAZ,QAAA,GACAW,SAAAhB,EAAAgB,SACAzB,MAAA,CAAAgB,MAoBAsG,CAAA3M,MAIAF,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAzD,4BAAA6D,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAzD,4BAAA6D,UAAA1D,WCjRA,MAAAD,sBAKA9B,YAAAyE,EAAAY,EAAA,QACAnF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAGArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QAeA,IAbA,IASAwD,EAEA9B,EAXAoE,EAAAtH,SAAAiB,iBAAA,kBACAyG,EACA1H,SAAAiB,iBAAA,qCACAE,OAAA,EACAnB,SAAAiB,iBAAA,qCACAjB,SAAAiB,iBACA,sCAIAQ,EAAA,GAGAP,EAAA,EAAAA,EAAAoG,EAAAnG,OAAAD,IAAA,CACA,IAAAU,EAAA0F,EAAApG,GACAW,EAAAD,EAAAE,QAAAC,UACAC,KAAAC,MAAAL,EAAAE,QAAAC,WACA,KAEA,GAAAF,GAAAD,EAAAE,QAAA,CACA,IAAAI,EAAAL,EAAAM,SACAN,EAAAM,SAAA,GACA,KACAgB,EAAAyE,WAAAF,EAAAxG,GAAAwD,OACAM,EAAApD,EAAAE,QAAA2G,MACAvF,EAAAtB,EAAAE,QAAAsD,aAEA,IAAAhD,EAAAC,OACAH,EAAAE,MAAAE,QAAA,IAAA,MACAC,QAAA,GACAC,EAAAH,OACAH,EAAAM,kBAAAF,QAAA,IAAA,MACAC,QAAA,GACAE,EAAA,CACAC,QAAAR,EAAAS,KACAC,UAAAV,EAAAW,KACAK,SAAAhB,EAAAgB,SACAJ,WAAAZ,EAAAa,MACAC,cAAAd,EAAAe,SACAb,MAAAI,EACAW,SAAAA,GAGA,GAAAjB,EAAAkB,WAGA,IAFA,IAAAC,EACAnB,EAAAkB,WAAAE,MAAA,KACAC,EAAA,EAAAA,EAAAF,EAAAlC,OAAAoC,IACA,GAAAA,EACAd,EAAA,cAAAY,EAAAE,GAEAd,EAAA,gBAAAc,GAAAF,EAAAE,GAKA,GAAA3B,EAAAE,QAAA0B,QAAA,CACA,IAAAA,EAAAxB,KAAAC,MAAAL,EAAAE,QAAA0B,SACAA,IACAf,EAAA,aAAAgB,OAAAC,OAAAF,GAAAG,KAAA,MAIAvB,GAAAI,IACAC,EAAA,MAAAP,EAAAE,MACAK,EAAA,UAAAL,EAAAI,GAAAD,QAAA,IAGAd,EAAAjC,KAAAiD,IAIA6E,EAAAnG,OAAA,GAIA,SAAA7B,GACAA,EACAE,KAAA,CACAoE,MAAA,YACAC,UAAA,CACAX,SAAAA,EACAwB,MAAAM,EACAvD,MAAAA,KAGAjE,KAAA,KACAH,QAAAC,IAAA,8BACAgI,WAAA,MACA,IAAArJ,aACAM,0BACA,OAEAqB,MAAAR,IACAC,QAAAyG,KAAA,4BAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,YAAA,CACAwE,eAAA,qBACAC,YAAA,YACAU,MAAAM,EACA9B,SAAAA,EACAzB,MAAAA,IA9BAwC,CAAA3E,GAoCApD,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAvD,sBAAA2D,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAvD,sBAAA2D,UAAA1D,WCpIA,MAAAM,2BAKAyK,0BACA,MAAA,qBAEAC,wBACA,MAAA,iBAEA3H,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QAEA,IAAA0H,EAAAlJ,SAAAC,cACA1B,2BAAAoD,UAAAsH,mBACAvE,MACApF,EACAE,KAAA,CAEAoE,MAAA,SACAuF,YAAAD,IAEA1L,KAAA,KACAH,QAAAC,IAAA,6BAEAM,MAAAR,IACAC,QAAAyG,KAAA,yBAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,SAAA,CACAwE,eAAA,qBACAC,YAAA,SACAmF,YAAAD,IAKAhN,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAhD,2BAAAoD,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBAAA/H,KAAAmF,UAAAnF,KAAA6B,WCxDA,MAAAO,uBAIA8C,uBACA,MAAA,QAGApF,YAAAyE,EAAAY,EAAAnF,KAAAkF,kBACAlF,KAAAuE,QAAAA,EACAvE,KAAAmF,UAAAA,EAEArF,WACA,MAAAoD,EAAA,IAAAF,UACAE,EAAAkC,QAEA,IAAA4H,EAAAhN,KAAAsI,MACApF,EACAE,KAAA,CACAoE,MAAA,QACAwF,OAAAA,IAEA5L,KAAA,KACAH,QAAAC,IAAA,iCAEAM,MAAAR,IACAC,QAAAyG,KAAA,6BAAA1G,KAGA,oBAAAmC,MAAAA,MACAA,KAAA,QAAA,QAAA,CACA6J,OAAAA,IAKAlN,SACAE,KAAAuE,QAAAuD,iBACA9H,KAAAmF,UACAhD,2BAAAoD,UAAA1D,UAIA/B,SACAE,KAAAuE,QAAAwD,oBACA/H,KAAAmF,UACAhD,2BAAAoD,UAAA1D","file":"mazakacore-analytics.js","sourcesContent":["class ActivateGtm {\n    constructor(isFull) {\n        if (isFull) {\n            this.activateGtm();\n        }\n    }\n    activateGtm() {\n        try {\n            this.activateAddToCart();\n            this.activateRemoveFromCart();\n            this.activateRemoveFromAllCart();\n            this.activateViewCart();\n            this.activateViewDetailProduct();\n            this.activateViewListProduct();\n            this.activateAddToWishList();\n            this.activateSearchProduct();\n            this.activateUserLogin();\n            this.activateChangeShipping(true);\n            this.activateSelectPaymentMethod(true);\n            this.activateBeginCheckout();\n            this.activatePurchaseCheckout();\n            this.activateSelectItemProduct();\n        } catch (error) {\n            console.log(error);\n        }\n    }\n\n    activateAddToCart() {\n        waitForElm(\".gtm-add-to-cart\")\n            .then(function (elm) {\n                activateSelectors(\".gtm-add-to-cart\", AddToCartEventListener);\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateRemoveFromCart() {\n        waitForElm(\".gtm-remove-from-cart\")\n            .then(function (elm) {\n                waitForAngularElement(\".gtm-remove-from-cart\")\n                    .then(function (elm) {\n                        activateSelectors(\n                            \".gtm-remove-from-cart\",\n                            RemoveFromCartEventListener\n                        );\n                    })\n                    .catch(function (error) {\n                        console.log(error);\n                    });\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateRemoveFromAllCart() {\n        waitForElm(\".gtm-remove-from-allcart\")\n            .then(function (elm) {\n                waitForAngularElement(\".gtm-remove-from-allcart\")\n                    .then(function (elm) {\n                        activateSelectors(\n                            \".gtm-remove-from-allcart\",\n                            RemoveFromCartEventListener\n                        );\n                    })\n                    .catch(function (error) {\n                        console.log(error);\n                    });\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateViewCart() {\n        waitForElm(\".gtm-view-cart\")\n            .then(function (elm) {\n                var viewCart = new ViewCartEventListener();\n                try {\n                    viewCart.callback();\n                } catch (error) {\n                    console.error(error);\n                }\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateViewDetailProduct() {\n        waitForElm(\".product-detail\")\n            .then(function (elm) {\n                var viewProduct = new ProductViewEventListener(elm);\n                try {\n                    viewProduct.callback();\n                } catch (error) {\n                    console.error(error);\n                }\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n\n    activateSelectItemProduct() {\n        waitForElm(\".gtm-product-click\")\n            .then(function (elm) {\n                activateSelectors(\n                    \".gtm-product-click\",\n                    ProductSelectItemListener\n                );\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n\n    activateViewListProduct() {\n        waitForElm(\".gtm-product-list\")\n            .then(function (elm) {\n                var viewProduct = new ProductListViewEventListener(elm);\n                try {\n                    viewProduct.callback();\n                } catch (error) {\n                    console.error(error);\n                }\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateAddToWishList() {\n        waitForElm(\".gtm-add-wishlist\")\n            .then(function (elm) {\n                activateSelectors(\n                    \".gtm-add-wishlist\",\n                    AddToWishListEventListener\n                );\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateSearchProduct() {\n        waitForElm(\".gtm-search-button\")\n            .then(function (elm) {\n                activateSelectors(\n                    \".gtm-search-button\",\n                    ProductSearchEventListener\n                );\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateUserLogin() {\n        waitForElm(\".social-login\")\n            .then(function (elm) {\n                activateSelectors(\".social-login\", UserLoginEventListener);\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateChangeShipping(first) {\n        waitForElm(\".gtm-shipping-info\").then(function (elm) {\n            waitForAngularElement(\".gtm-shipping-info\")\n                .then(function (elm1) {\n                    activateSelectors(\n                        \".gtm-shipping-info\",\n                        SelectShippingEventListener\n                    );\n                    if (first) {\n                        var shipping = new SelectShippingEventListener(elm);\n                        try {\n                            shipping.callback();\n                            shipping.listen();\n                        } catch (error) {\n                            console.error(error);\n                        }\n                    }\n                })\n                .catch(function (error) {\n                    console.log(error);\n                })\n                .catch(function (error) {\n                    console.log(error);\n                });\n        });\n    }\n    activateSelectPaymentMethod(first) {\n        waitForElm(\".gtm-payment-method\")\n            .then(function (elm) {\n                activateSelectors(\n                    \".gtm-payment-method\",\n                    SelectPaymentMethodEventListener\n                );\n                if (first) {\n                    var payment = new SelectPaymentMethodEventListener(elm);\n                    try {\n                        payment.callback();\n                        payment.listen();\n                    } catch (error) {\n                        console.error(error);\n                    }\n                }\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activateBeginCheckout() {\n        waitForElm(\".gtm-begin-checkout\")\n            .then(function (elm) {\n                activateSelectors(\n                    \".gtm-begin-checkout\",\n                    BeginCheckoutEventListener\n                );\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n    activatePurchaseCheckout() {\n        waitForElm(\".gtm-payment-success\")\n            .then(function (elm) {\n                var paymentSuccess = new PurchaseCheckoutEventListener(elm);\n                try {\n                    paymentSuccess.callback();\n                } catch (error) {\n                    console.error(error);\n                }\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n\n    activatePromotionSelection() {\n        waitForElm(\".gtm-select-promotion\")\n            .then(function (elm) {\n                activateSelectors(\n                    \".gtm-select-promotion\",\n                    SelectPromotionEventListener\n                );\n            })\n            .catch(function (error) {\n                console.log(error);\n            });\n    }\n}\n","class DataLayer  {\n\n    constructor() {\n        if (!window.dataLayer) {\n            window.dataLayer = window.dataLayer || [];\n\n            function gtag() {\n                dataLayer.push(arguments);\n            }\n            gtag('js', new Date());\n            gtag('config', window.gtmCode);\n        }\n        this.dataLayer = window.dataLayer || [];\n    }\n\n\n    async push(data) {\n        this.dataLayer.push(data);\n    }\n\n    clear() {\n       // window.dataLayer.push(function() {\n            //this.reset();\n         // }); // Clear the previous ecommerce object.\n    }\n\n}","function waitForElm(selector) {\n    return new Promise(resolve => {\n        if (!!document.querySelector(selector)) {\n            return resolve(document.querySelector(selector));\n        }\n\n        const observer = new MutationObserver(mutations => {\n            if (!!document.querySelector(selector)) {\n                resolve(document.querySelector(selector));\n                observer.disconnect();\n            }\n        });\n\n        observer.observe(document.body, {\n            childList: true,\n            subtree: true\n        });\n    });\n}\n\nfunction waitForAngularElement(selector){\n    return new Promise(resolve => {\n        if(!!angular.element(selector).scope()){\n            return resolve(angular.element(selector).scope());\n        }\n\n        const observer = new MutationObserver(mutations => {\n            if(!!angular.element(selector).scope()) {\n               resolve(angular.element(selector).scope());\n                observer.disconnect();\n            }\n        });\n\n        if(!!angular.element(selector).scope()){\n            observer.observe(angular.element(selector)[0].ownerDocument.body, {\n                childList: true,\n                subtree: true,\n                attributes: true\n            });\n        }\n    });\n\n    \n\n}\n","function activateSelectors(selector, typeofEventListener) {\n    var elements = document.querySelectorAll(selector);\n    for (var i = 0; i < elements.length; i++) {\n        var genericEventListener = new typeofEventListener(elements[i]);\n        try {\n            genericEventListener.listen();\n        } catch (error) {\n            console.error(error);\n        }\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_cart\n\nclass BeginCheckoutEventListener {\n    // Language: javascript\n    // Path: BeginCheckoutEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get CheckoutProducts() {\n        return \".gtm-checkout-products\";\n    }\n\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var items = [];\n\n        var checkoutProducts = document.querySelectorAll(\n            BeginCheckoutEventListener.prototype.CheckoutProducts\n        );\n\n        for (var i = 0; i < checkoutProducts.length; i++) {\n            var cartItem = checkoutProducts[i];\n            var analyticsData = cartItem.dataset.analytics\n                ? JSON.parse(cartItem.dataset.analytics)\n                : null;\n\n            if (analyticsData && cartItem.dataset) {\n                var analticsDataProducts = analyticsData.products\n                    ? analyticsData.products[0]\n                    : null;\n\n                var price = Number(\n                    analticsDataProducts.price.replace(\",\", \".\")\n                ).toFixed(2);\n                var pricewithdiscount = Number(\n                    analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\n                ).toFixed(2);\n\n                var item = {\n                    item_id: analticsDataProducts.code,\n                    item_name: analticsDataProducts.name,\n                    item_brand: analticsDataProducts.brand,\n                    item_category: analticsDataProducts.category,\n                    currency: analticsDataProducts.currency,\n                    price: pricewithdiscount,\n                    quantity: cartItem.dataset.quantity,\n                };\n\n                if (analticsDataProducts.categories) {\n                    var splitCategories =\n                        analticsDataProducts.categories.split(\";\");\n                    for (var j = 0; j < splitCategories.length; j++) {\n                        if (j == 0) {\n                            item[\"item_category\"] = splitCategories[j];\n                        } else {\n                            item[\"item_category\" + j] = splitCategories[j];\n                        }\n                    }\n                }\n\n                if (cartItem.dataset.variant) {\n                    var variant = JSON.parse(cartItem.dataset.variant);\n                    if (variant) {\n                        item[\"item_variant\"] = Object.values(variant).join(\",\");\n                    }\n                }\n\n                if (price != pricewithdiscount) {\n                    item[\"price\"] = price;\n                    item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n                }\n\n                items.push(item);\n            }\n        }\n\n        if (items.length > 0) {\n            SendData(dataLayer);\n        }\n\n        function SendData(dataLayer) {\n            dataLayer\n                .push({\n                    event: \"begin_checkout\",\n                    ecommerce: {\n                        items: items,\n                    },\n                })\n                .then(() => {\n                    var instanceActivate = new ActivateGtm();\n                    instanceActivate.activatePurchaseCheckout();\n                    console.log(\"GTM pushed begin_checkout event\");\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error begin_checkout event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"begin_checkout\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"begin checkout\",\n                    items: items,\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            BeginCheckoutEventListener.prototype.callback\n        );\n    }\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            BeginCheckoutEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#purchase\n\nclass PurchaseCheckoutEventListener {\n    // Language: javascript\n    // Path: PurchaseCheckoutEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get CheckoutProducts() {\n        return \".gtm-checkout-products\";\n    }\n\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var items = [];\n        var element = document.querySelector(\".gtm-payment-success\");\n\n        if (element && element.dataset) {\n            var paymentSuccess = element.dataset.payment;\n            if (paymentSuccess) {\n                var paymentSuccessData = JSON.parse(paymentSuccess);\n                for (const paymentProducts of paymentSuccessData.products) {\n                    var analyticsData = paymentProducts.Analytics\n                        ? JSON.parse(paymentProducts.Analytics)\n                        : null;\n\n                    if (analyticsData) {\n                        var analticsDataProducts = analyticsData.products\n                            ? analyticsData.products[0]\n                            : null;\n\n                        var price = Number(\n                            analticsDataProducts.price.replace(\",\", \".\")\n                        ).toFixed(2);\n                        var pricewithdiscount = Number(\n                            analticsDataProducts.pricewithdiscount.replace(\n                                \",\",\n                                \".\"\n                            )\n                        ).toFixed(2);\n\n                        var item = {\n                            item_id: analticsDataProducts.code,\n                            item_name: analticsDataProducts.name,\n                            affiliation: element.dataset.affiliation,\n                            item_brand: analticsDataProducts.brand,\n                            item_category: analticsDataProducts.category,\n                            currency: analticsDataProducts.currency,\n                            price: pricewithdiscount,\n                            quantity: paymentProducts.Quantity,\n                        };\n\n                        if (analticsDataProducts.categories) {\n                            var splitCategories =\n                                analticsDataProducts.categories.split(\";\");\n                            for (var j = 0; j < splitCategories.length; j++) {\n                                if (j == 0) {\n                                    item[\"item_category\"] = splitCategories[j];\n                                } else {\n                                    item[\"item_category\" + j] =\n                                        splitCategories[j];\n                                }\n                            }\n                        }\n\n                        if (paymentProducts.variant) {\n                            var variant = JSON.parse(paymentProducts.variant);\n                            if (variant) {\n                                item[\"item_variant\"] =\n                                    Object.values(variant).join(\",\");\n                            }\n                        }\n\n                        if (price != pricewithdiscount) {\n                            item[\"price\"] = price;\n                            item[\"discount\"] = (\n                                price - pricewithdiscount\n                            ).toFixed(2);\n                        }\n\n                        items.push(item);\n                    }\n                }\n\n                if (items.length > 0) {\n                    SendData(dataLayer);\n                }\n\n                function SendData(dataLayer) {\n                    dataLayer\n                        .push({\n                            event: \"purchase\",\n                            ecommerce: {\n                                transaction_id:\n                                    paymentSuccessData.transaction_id,\n                                affiliation: paymentSuccessData.affiliation,\n                                value: paymentSuccessData.Total,\n                                tax: paymentSuccessData.tax,\n                                shipping: paymentSuccessData.shipping,\n                                currency: paymentSuccessData.currency,\n                                items: items,\n                            },\n                        })\n                        .then(() => {\n                            console.log(\"GTM pushed purchase event\");\n                        })\n                        .catch((error) => {\n                            console.warn(\"GTM error purchase event\", error);\n                        });\n\n                    if (typeof gtag !== \"undefined\" && !!gtag) {\n                        gtag(\"event\", \"purchase\", {\n                            event_category: \"Enhanced Ecommerce\",\n                            event_label: \"purchase\",\n                            value: paymentSuccessData.Total,\n                            currency: paymentSuccessData.currency,\n                            transaction_id: paymentSuccessData.transaction_id,\n                            affiliation: paymentSuccessData.affiliation,\n                            tax: paymentSuccessData.tax,\n                            shipping: paymentSuccessData.shipping,\n                            items: items,\n                        });\n                    }\n                }\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            PurchaseCheckoutEventListener.prototype.callback\n        );\n    }\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            PurchaseCheckoutEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_shipping_info\n\nclass SelectPaymentMethodEventListener {\n    // Language: javascript\n    // Path: SelectShippingEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get PaymentMethod() {\n        return \".gtm-payment-method\";\n    }\n    get CheckoutProducts() {\n        return \".gtm-checkout-products\";\n    }\n    get CheckoutCart() {\n        return \".gtm-checkout-cart\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback() {\n        console.log(this);\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var methodName;\n        var totalPrice;\n        var items = [];\n        var currency;\n\n        methodName = !!this.dataset\n            ? this.dataset.bank\n            : this.element.dataset.bank;\n\n        var checkoutProducts = document.querySelectorAll(\n            SelectPaymentMethodEventListener.prototype.CheckoutProducts\n        );\n        var checkoutCart = document.querySelector(\n            SelectPaymentMethodEventListener.prototype.CheckoutCart\n        );\n\n        for (var i = 0; i < checkoutProducts.length; i++) {\n            var cartItem = checkoutProducts[i];\n            var analyticsData = cartItem.dataset.analytics\n                ? JSON.parse(cartItem.dataset.analytics)\n                : null;\n\n            if (analyticsData && cartItem.dataset) {\n                var analticsDataProducts = analyticsData.products\n                    ? analyticsData.products[0]\n                    : null;\n                totalPrice = checkoutCart.dataset.carttotal;\n                currency = checkoutCart.dataset.cartcurrency;\n\n                var item = {\n                    item_id: analticsDataProducts.code,\n                    item_name: analticsDataProducts.name,\n                    item_brand: analticsDataProducts.brand,\n                    item_category: analticsDataProducts.category,\n                };\n\n                if (analticsDataProducts.categories) {\n                    var splitCategories =\n                        analticsDataProducts.categories.split(\";\");\n                    for (var j = 0; j < splitCategories.length; j++) {\n                        if (j == 0) {\n                            item.item_category = splitCategories[j];\n                        } else {\n                            item[\"item_category\" + j] = splitCategories[j];\n                        }\n                    }\n                }\n\n                items.push(item);\n            }\n        }\n\n        if (items.length > 0) {\n            SendData(dataLayer);\n        }\n\n        function SendData(dataLayer) {\n            dataLayer\n                .push({\n                    event: \"add_payment_info\",\n                    ecommerce: {\n                        currency: currency,\n                        value: totalPrice,\n                        payment_type: methodName,\n                        items: items,\n                    },\n                })\n                .then(() => {\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateSelectPaymentMethod(false);\n                    }, 1000);\n                    console.log(\"GTM pushed add_payment_info event\");\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error add_payment_info event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"add_payment_info\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"add payment info\",\n                    value: totalPrice,\n                    currency: currency,\n                    payment_type: methodName,\n                    items: items,\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            SelectPaymentMethodEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            SelectPaymentMethodEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_shipping_info\n\nclass SelectShippingEventListener {\n    // Language: javascript\n    // Path: SelectShippingEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get ShippingName() {\n        return \".gtm-shipping-info\";\n    }\n    get CheckoutProducts() {\n        return \".gtm-checkout-products\";\n    }\n    get CheckoutCart() {\n        return \".gtm-checkout-cart\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(\n        element,\n        eventName = SelectShippingEventListener.prototype.DefaultEventName\n    ) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var shippingName;\n        var totalPrice;\n        var items = [];\n        var currency;\n\n        var shippings = document.querySelectorAll(\n            SelectShippingEventListener.prototype.ShippingName\n        );\n        var checkoutProducts = document.querySelectorAll(\n            SelectShippingEventListener.prototype.CheckoutProducts\n        );\n\n        for (let index = 0; index < shippings.length; index++) {\n            if (shippings[index].checked) {\n                shippingName = shippings[index].dataset.cargo;\n            }\n        }\n\n        var checkoutCart = document.querySelector(\n            SelectShippingEventListener.prototype.CheckoutCart\n        );\n\n        for (var i = 0; i < checkoutProducts.length; i++) {\n            var cartItem = checkoutProducts[i];\n            var analyticsData = cartItem.dataset.analytics\n                ? JSON.parse(cartItem.dataset.analytics)\n                : null;\n\n            if (analyticsData && cartItem.dataset) {\n                var analticsDataProducts = analyticsData.products\n                    ? analyticsData.products[0]\n                    : null;\n                totalPrice = checkoutCart.dataset.carttotal;\n                currency = checkoutCart.dataset.cartcurrency;\n\n                var item = {\n                    item_id: analticsDataProducts.code,\n                    item_name: analticsDataProducts.name,\n                    item_brand: analticsDataProducts.brand,\n                    item_category: analticsDataProducts.category,\n                };\n\n                if (analticsDataProducts.categories) {\n                    var splitCategories =\n                        analticsDataProducts.categories.split(\";\");\n                    for (var j = 0; j < splitCategories.length; j++) {\n                        if (j == 0) {\n                            item[\"item_category\"] = splitCategories[j];\n                        } else {\n                            item[\"item_category\" + j] = splitCategories[j];\n                        }\n                    }\n                }\n\n                items.push(item);\n            }\n        }\n\n        if (items.length > 0) {\n            SendData(dataLayer);\n        }\n\n        function SendData(dataLayer) {\n            dataLayer\n                .push({\n                    event: \"add_shipping_info\",\n                    ecommerce: {\n                        currency: currency,\n                        value: totalPrice,\n                        shipping_tier: shippingName,\n                        items: items,\n                    },\n                })\n                .then(() => {\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateChangeShipping(false);\n                    }, 1000);\n                    console.log(\"GTM pushed add_shipping_info event\");\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error add_shipping_info event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"add_shipping_info\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"add shipping info\",\n                    value: totalPrice,\n                    currency: currency,\n                    shipping_tier: shippingName,\n                    items: items,\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            SelectShippingEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            SelectShippingEventListener.prototype.callback\n        );\n    }\n}\n","class ProductListViewEventListener {\n    // Language: javascript\n    // Path: ProductListViewEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get ProductList() {\n        return \".gtm-product-list\";\n    }\n    get AllDetailProductSelector() {\n        return \"gtm-add-to-cart\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n    get AddTypes() {\n        return {\n            category_product_list: \"Category Product List\",\n            related_product_list: \"Related Product List\",\n            lastview_product_list: \"LastView Product List\",\n            product_collection: \"Product Collection\",\n        };\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var type = this.element.dataset.addtype || \"category_product_list\";\n        var typeName = ProductSelectItemListener.prototype.AddTypes[type];\n\n        var allProduct =\n            this.element.getElementsByClassName(\"gtm-product-click\");\n        var allProductArry = [...allProduct];\n        var items = [];\n        const key = \"code\";\n        const arrayUniqueByKey = [\n            ...new Map(\n                allProductArry.map((item) => [item.dataset[key], item])\n            ).values(),\n        ];\n\n        for (const product of arrayUniqueByKey) {\n            var analyticsData = product.dataset.analytics\n                ? JSON.parse(product.dataset.analytics)\n                : null;\n            if (analyticsData && product.dataset) {\n                var analticsDataProducts = analyticsData.products\n                    ? analyticsData.products[0]\n                    : null;\n\n                var price = Number(\n                    product.dataset.price.replace(\",\", \".\")\n                ).toFixed(2);\n                var pricewithdiscount = Number(\n                    product.dataset.priceWithDiscount.replace(\",\", \".\")\n                ).toFixed(2);\n                var item = {\n                    item_id: analticsDataProducts.code,\n                    item_name: analticsDataProducts.name,\n                    currency: analticsDataProducts.currency,\n                    item_brand: analticsDataProducts.brand,\n                    item_category: analticsDataProducts.category,\n                    price: pricewithdiscount,\n                    quantity: analticsDataProducts.quantity,\n                };\n\n                if (analticsDataProducts.categories) {\n                    var splitCategories =\n                        analticsDataProducts.categories.split(\";\");\n                    for (var j = 0; j < splitCategories.length; j++) {\n                        if (j == 0) {\n                            item[\"item_category\"] = splitCategories[j];\n                        } else {\n                            item[\"item_category\" + j] = splitCategories[j];\n                        }\n                    }\n                }\n\n                if (price != pricewithdiscount) {\n                    item[\"price\"] = analticsDataProducts.price;\n                    item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n                }\n\n                items.push(item);\n            }\n        }\n\n        if (items.length > 0) {\n            SendData(dataLayer);\n        }\n\n        function SendData(dataLayer) {\n            dataLayer\n                .push({\n                    event: \"view_item_list\",\n                    ecommerce: {\n                        item_list_id: type,\n                        item_list_name: typeName,\n                        items: items,\n                    },\n                })\n                .then(() => {\n                    console.log(\"GTM pushed view_item_list event\");\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateRemoveFromCart();\n                    }, 2000);\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error view_item_list event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"view_item_list\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"view item list\",\n                    item_list_id: type,\n                    item_list_name: typeName,\n                    items: items,\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            ProductListViewEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            ProductListViewEventListener.prototype.callback\n        );\n    }\n}\n","class ProductSelectItemListener {\n    // Language: javascript\n    // Path: ProductSelectItemListener.js\n    // Compare this snippet from EventListener.js:\n\n    get ProductList() {\n        return \".gtm-product-list\";\n    }\n    get AllDetailProductSelector() {\n        return \"gtm-add-to-cart\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n    get AddTypes() {\n        return {\n            category_product_list: \"Category Product List\",\n            related_product_list: \"Related Product List\",\n            lastview_product_list: \"LastView Product List\",\n        };\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        var addtype = document.querySelector(\n            ProductSelectItemListener.prototype.ProductList\n        )\n            ? document.querySelector(\n                  ProductSelectItemListener.prototype.ProductList\n              ).dataset.addtype\n            : null;\n\n        var typeName = ProductSelectItemListener.prototype.AddTypes[addtype];\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var analyticsData = this.dataset.analytics\n            ? JSON.parse(this.dataset.analytics)\n            : null;\n\n        if (analyticsData && this.dataset) {\n            var analticsDataProducts = analyticsData.products\n                ? analyticsData.products[0]\n                : null;\n            var item_list_id = addtype ? addtype : \"base\";\n\n            var price = Number(\n                analticsDataProducts.price\n                    ? analticsDataProducts.price.replace(\",\", \".\")\n                    : this.dataset.price.replace(\",\", \".\")\n            ).toFixed(2);\n            var pricewithdiscount = Number(\n                analticsDataProducts.pricewithdiscount\n                    ? analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\n                    : this.dataset.priceWithDiscount.replace(\",\", \".\")\n            ).toFixed(2);\n\n            var item = {\n                item_id: this.dataset.code\n                    ? this.dataset.code\n                    : analticsDataProducts.code,\n                item_name: analticsDataProducts.name,\n                currency: analticsDataProducts.currency,\n                item_brand: analticsDataProducts.brand,\n                item_category: analticsDataProducts.category,\n                item_list_id: item_list_id,\n                price: pricewithdiscount,\n                quantity: analticsDataProducts.quantity,\n            };\n            if (analticsDataProducts.categories) {\n                var splitCategories =\n                    analticsDataProducts.categories.split(\";\");\n                for (var i = 0; i < splitCategories.length; i++) {\n                    if (i == 0) {\n                        item[\"item_category\"] = splitCategories[i];\n                    } else {\n                        item[\"item_category\" + i] = splitCategories[i];\n                    }\n                }\n            }\n            if (this.dataset.addtype) {\n                item[\"item_list_id\"] = this.dataset.addtype;\n            }\n\n            if (this.dataset.variant) {\n                var variant = JSON.parse(this.dataset.variant);\n                if (variant) {\n                    item[\"item_variant\"] = Object.values(variant).join(\",\");\n                }\n            }\n            if (price != pricewithdiscount) {\n                item[\"price\"] = price;\n                item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n            }\n\n            dataLayer\n                .push({\n                    // eslint-disable-line\n                    event: \"select_item\",\n                    item_list_id: item_list_id,\n                    item_list_name: typeName,\n                    ecommerce: {\n                        items: [item],\n                    },\n                })\n                .then(() => {\n                    console.log(\"GTM pushed select_item event\");\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateRemoveFromCart();\n                    }, 1000);\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error select_item event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"select_item\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"add select_item cart\",\n                    item_list_id: item_list_id,\n                    item_list_name: typeName,\n                    items: [item],\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            ProductSelectItemListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            ProductSelectItemListener.prototype.callback\n        );\n    }\n}\n","class ProductViewEventListener {\n    // Language: javascript\n    // Path: ProductViewEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get ProductAddCart() {\n        return \".product-add-to-cart\";\n    }\n    get AllDetailProductSelector() {\n        return \"gtm-add-to-cart\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n\n        var addCartProduct = document.querySelector(this.ProductAddCart);\n\n        var allProduct = addCartProduct\n            ? addCartProduct.getElementsByClassName(\n                  this.AllDetailProductSelector\n              )\n            : document.getElementsByClassName(this.AllDetailProductSelector);\n\n        var allProductArry = [...allProduct];\n        var items = [];\n        var headPrice = 0.0;\n        const key = \"code\";\n        const arrayUniqueByKey = [\n            ...new Map(\n                allProductArry.map((item) => [item.dataset[key], item])\n            ).values(),\n        ];\n\n        for (const product of arrayUniqueByKey) {\n            if (\n                arrayUniqueByKey.length == 1 ||\n                !product.classList.value.contains(\"main buton-main\")\n            ) {\n                var analyticsData = product.dataset.analytics\n                    ? JSON.parse(product.dataset.analytics)\n                    : null;\n                if (analyticsData && product.dataset) {\n                    var analticsDataProducts = analyticsData.products\n                        ? analyticsData.products[0]\n                        : null;\n\n                    var price = Number(\n                        product.dataset.price.replace(\",\", \".\")\n                    ).toFixed(2);\n                    var pricewithdiscount = Number(\n                        product.dataset.priceWithDiscount.replace(\",\", \".\")\n                    ).toFixed(2);\n                    headPrice = pricewithdiscount;\n                    var quantity = product.classList.value.contains(\n                        \"out-of-stock\"\n                    )\n                        ? 0\n                        : product.dataset.quantity;\n                    var item = {\n                        item_id: product.dataset.code,\n                        item_name: analticsDataProducts.name,\n                        currency: analticsDataProducts.currency,\n                        item_brand: analticsDataProducts.brand,\n                        item_category: analticsDataProducts.category,\n                        price: pricewithdiscount,\n                        quantity: quantity,\n                    };\n\n                    if (analticsDataProducts.categories) {\n                        var splitCategories =\n                            analticsDataProducts.categories.split(\";\");\n                        for (var j = 0; j < splitCategories.length; j++) {\n                            if (j == 0) {\n                                item[\"item_category\"] = splitCategories[j];\n                            } else {\n                                item[\"item_category\" + j] = splitCategories[j];\n                            }\n                        }\n                    }\n\n                    if (price != pricewithdiscount) {\n                        item[\"price\"] = analticsDataProducts.price;\n                        item[\"discount\"] = (price - pricewithdiscount).toFixed(\n                            2\n                        );\n                    }\n                    if (product.dataset.variant) {\n                        var variant = JSON.parse(product.dataset.variant);\n                        if (variant) {\n                            item[\"item_variant\"] =\n                                Object.values(variant).join(\",\");\n                        }\n                    }\n                    items.push(item);\n                }\n            }\n        }\n\n        if (items.length > 0) {\n            SendData(dataLayer);\n        }\n\n        function SendData(dataLayer) {\n            dataLayer\n                .push({\n                    event: \"view_item\",\n                    ecommerce: {\n                        currency: currency,\n                        value: headPrice,\n                        items: items,\n                    },\n                })\n                .then(() => {\n                    console.log(\"GTM pushed view_item event\");\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateRemoveFromCart();\n                    }, 2000);\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error view_item event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"view_item\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"view item\",\n                    value: headPrice,\n                    currency: currency,\n                    items: items,\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            ProductViewEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            ProductViewEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#select_promotion\n\nclass SelectPromotionEventListener {\n    // Language: javascript\n    // Path: SelectPromotionEventListener.js\n    // Compare this snippet from EventListener.js:\n    get CheckoutProducts() {\n        return \".gtm-checkout-products\";\n    }\n    get cartItems() {\n        return \".gtm-view-cart\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback(couponCode, couponName) {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var items;\n        var pushItems = [];\n\n        var cartItems = document.querySelectorAll(\n            SelectPromotionEventListener.prototype.cartItems\n        );\n        var checkoutProducts = document.querySelectorAll(\n            SelectPromotionEventListener.prototype.CheckoutProducts\n        );\n        var quantites = document.querySelectorAll(\n            SelectPromotionEventListener.prototype.cartItems +\n                \" .number-unit input\"\n        );\n        var coupon = {\n            couponCode: couponCode,\n            couponName: couponName,\n        };\n\n        if (!!cartItems && cartItems.length > 0) items = cartItems;\n        if (!!checkoutProducts && checkoutProducts.length > 0)\n            items = checkoutProducts;\n\n        if (!!items) {\n            for (var i = 0; i < items.length; i++) {\n                var cartItem = items[i];\n                var analyticsData = cartItem.dataset.analytics\n                    ? JSON.parse(cartItem.dataset.analytics)\n                    : null;\n\n                if (analyticsData && cartItem.dataset) {\n                    var analticsDataProducts = analyticsData.products\n                        ? analyticsData.products[0]\n                        : null;\n                    var quantity = !!cartItem.dataset.quantity\n                        ? cartItem.dataset.quantity\n                        : parseFloat(quantites[i].value);\n\n                    var price = Number(\n                        analticsDataProducts.price.replace(\",\", \".\")\n                    ).toFixed(2);\n                    var pricewithdiscount = Number(\n                        analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\n                    ).toFixed(2);\n\n                    var item = {\n                        item_id: analticsDataProducts.code,\n                        item_name: analticsDataProducts.name,\n                        coupon: coupon.couponName,\n                        item_brand: analticsDataProducts.brand,\n                        item_category: analticsDataProducts.category,\n                        currency: analticsDataProducts.currency,\n                        price: pricewithdiscount,\n                        quantity: quantity,\n                    };\n\n                    if (analticsDataProducts.categories) {\n                        var splitCategories =\n                            analticsDataProducts.categories.split(\";\");\n                        for (var j = 0; j < splitCategories.length; j++) {\n                            if (j == 0) {\n                                item[\"item_category\"] = splitCategories[j];\n                            } else {\n                                item[\"item_category\" + j] = splitCategories[j];\n                            }\n                        }\n                    }\n\n                    if (cartItem.dataset.variant) {\n                        var variant = JSON.parse(cartItem.dataset.variant);\n                        if (variant) {\n                            item[\"item_variant\"] =\n                                Object.values(variant).join(\",\");\n                        }\n                    }\n\n                    if (price != pricewithdiscount) {\n                        item[\"price\"] = price;\n                        item[\"discount\"] = (price - pricewithdiscount).toFixed(\n                            2\n                        );\n                    }\n\n                    pushItems.push(item);\n                }\n            }\n\n            if (pushItems.length > 0) {\n                SendData(dataLayer);\n            }\n\n            function SendData(dataLayer) {\n                dataLayer\n                    .push({\n                        event: \"select_promotion\",\n                        ecommerce: {\n                            items: pushItems,\n                        },\n                    })\n                    .then(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activatePurchaseCheckout();\n                        console.log(\"GTM pushed select_promotion event\");\n                    })\n                    .catch((error) => {\n                        console.warn(\"GTM error select_promotion event\", error);\n                    });\n\n                if (typeof gtag !== \"undefined\" && !!gtag) {\n                    gtag(\"event\", \"select_promotion\", {\n                        event_category: \"Enhanced Ecommerce\",\n                        event_label: \"select promotion\",\n                        promotion_id: coupon.couponCode,\n                        promotion_name: coupon.couponName,\n                        items: pushItems,\n                    });\n                }\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            SelectPromotionEventListener.prototype.callback\n        );\n    }\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            SelectPromotionEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_cart\n\nclass AddToCartEventListener {\n    // Language: javascript\n    // Path: AddToCartEventListener.js\n    // Compare this snippet from EventListener.js:\n    get ProductList() {\n        return \".gtm-product-list\";\n    }\n    get AddTypes() {\n        return {\n            category_product_list: \"Category Product List\",\n            related_product_list: \"Related Product List\",\n            lastview_product_list: \"LastView Product List\",\n        };\n    }\n\n    constructor(element, eventName = \"click\") {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n\n        var addtype = document.querySelector(\n            AddToCartEventListener.prototype.ProductList\n        )\n            ? document.querySelector(\n                  AddToCartEventListener.prototype.ProductList\n              ).dataset.addtype\n            : null;\n        var analyticsData = this.dataset.analytics\n            ? JSON.parse(this.dataset.analytics)\n            : null;\n\n        if (analyticsData && this.dataset) {\n            var analticsDataProducts = analyticsData.products\n                ? analyticsData.products[0]\n                : null;\n            var addToCartAmount = document.querySelector(\n                '[name=\"addToCartAmount\"][data-id=\"' +\n                    analticsDataProducts.id +\n                    '\"]'\n            );\n            var quantity = parseFloat(\n                !!addToCartAmount ? addToCartAmount.value : 1\n            );\n            var item_list_id = addtype ? addtype : \"base\";\n\n            var price = Number(\n                analticsDataProducts.price\n                    ? analticsDataProducts.price.replace(\",\", \".\")\n                    : this.dataset.price.replace(\",\", \".\")\n            ).toFixed(2);\n            var pricewithdiscount = Number(\n                analticsDataProducts.pricewithdiscount\n                    ? analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\n                    : this.dataset.priceWithDiscount.replace(\",\", \".\")\n            ).toFixed(2);\n\n            var item = {\n                item_id: this.dataset.code\n                    ? this.dataset.code\n                    : analticsDataProducts.code,\n                item_name: analticsDataProducts.name,\n                currency: analticsDataProducts.currency,\n                item_brand: analticsDataProducts.brand,\n                item_category: analticsDataProducts.category,\n                item_list_id: item_list_id,\n                price: pricewithdiscount,\n                quantity: quantity ? quantity : this.dataset.quantity,\n            };\n            if (analticsDataProducts.categories) {\n                var splitCategories =\n                    analticsDataProducts.categories.split(\";\");\n                for (var i = 0; i < splitCategories.length; i++) {\n                    if (i == 0) {\n                        item[\"item_category\"] = splitCategories[i];\n                    } else {\n                        item[\"item_category\" + i] = splitCategories[i];\n                    }\n                }\n            }\n            if (this.dataset.addtype) {\n                item[\"item_list_id\"] = this.dataset.addtype;\n            }\n\n            if (this.dataset.variant) {\n                var variant = JSON.parse(this.dataset.variant);\n                if (variant) {\n                    item[\"item_variant\"] = Object.values(variant).join(\",\");\n                }\n            }\n            if (price != pricewithdiscount) {\n                item[\"price\"] = price;\n                item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n            }\n\n            dataLayer\n                .push({\n                    // eslint-disable-line\n                    event: \"add_to_cart\",\n                    ecommerce: {\n                        items: [item],\n                    },\n                })\n                .then(() => {\n                    console.log(\"GTM pushed add_to_cart event\");\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateRemoveFromCart();\n                    }, 1000);\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error add_to_cart event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"add_to_cart\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"add to cart\",\n                    items: [item],\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            AddToCartEventListener.prototype.callback\n        );\n    }\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            AddToCartEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#add_to_wishlist\n\nclass AddToWishListEventListener {\n    // Language: javascript\n    // Path: AddToWishListEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    constructor(element, eventName = \"click\") {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n        var analyticsData = this.dataset.analytics\n            ? JSON.parse(this.dataset.analytics)\n            : null;\n\n        if (analyticsData && this.dataset) {\n            var analticsDataProducts = analyticsData.products\n                ? analyticsData.products[0]\n                : null;\n\n            var cartAmount = document.querySelector(\n                '[name=\"addToCartAmount\"][data-id=\"' +\n                    analticsDataProducts.id +\n                    '\"]'\n            );\n            var addToCartAmount = cartAmount\n                ? cartAmount.value\n                : document.querySelector(\n                      '[name=\"addToCartAmount\"][data-id=\"' +\n                          this.dataset.id +\n                          '\"]'\n                  );\n            var quantity = parseFloat($(addToCartAmount).val());\n            var item_list_id = \"base\";\n\n            var price = Number(\n                analticsDataProducts.price\n                    ? analticsDataProducts.price.replace(\",\", \".\")\n                    : this.dataset.price\n            ).toFixed(2);\n            var pricewithdiscount = Number(\n                analticsDataProducts.pricewithdiscount\n                    ? analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\n                    : this.dataset.priceWithDiscount.replace(\",\", \".\")\n            ).toFixed(2);\n\n            var item = {\n                item_id: analticsDataProducts.code,\n                item_name: analticsDataProducts.name,\n                currency: analticsDataProducts.currency\n                    ? analticsDataProducts.currency\n                    : this.dataset.currency,\n                item_brand: analticsDataProducts.brand,\n                item_category: analticsDataProducts.category,\n                item_list_id: item_list_id,\n                price: pricewithdiscount,\n                quantity: quantity ? quantity : this.dataset.quantity,\n            };\n            if (analticsDataProducts.categories) {\n                var splitCategories =\n                    analticsDataProducts.categories.split(\";\");\n                for (var i = 0; i < splitCategories.length; i++) {\n                    if (i == 0) {\n                        item[\"item_category\"] = splitCategories[i];\n                    } else {\n                        item[\"item_category\" + i] = splitCategories[i];\n                    }\n                }\n            }\n            if (this.dataset.addtype) {\n                item[\"item_list_id\"] = this.dataset.addtype;\n            }\n\n            if (this.dataset.variant) {\n                var variant = JSON.parse(this.dataset.variant);\n                if (variant) {\n                    item[\"item_variant\"] = Object.values(variant).join(\",\");\n                }\n            }\n            if (price != pricewithdiscount) {\n                item[\"price\"] = price;\n                item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n            }\n\n            dataLayer\n                .push({\n                    // eslint-disable-line\n                    event: \"add_to_wishlist\",\n                    ecommerce: {\n                        items: [item],\n                    },\n                })\n                .then(() => {\n                    console.log(\"GTM pushed add_to_wishlist event\");\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateRemoveFromCart();\n                    }, 1000);\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error add_to_wishlist event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"add_to_wishlist\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"add to wishlist\",\n                    items: [item],\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            AddToWishListEventListener.prototype.callback\n        );\n    }\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            AddToWishListEventListener.prototype.callback\n        );\n    }\n}\n","//https://developers.google.com/analytics/devguides/collection/ga4/reference/events#remove_from_cart\nclass RemoveFromCartEventListener {\n    // Language: javascript\n    // Path: RemoveFromCartEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get AllCartRemoveTag() {\n        return \".gtm-view-cart\";\n    }\n    get AllCartRemoveQuantitiesTag() {\n        return \".gtm-view-cart .number-unit input\";\n    }\n    get AllCartRemoveSelector() {\n        return \"gtm-remove-from-allcart\";\n    }\n    get SingleProductQunatityTag() {\n        return \"[name='addToCartAmount']\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n\n        function AllCartRemove() {\n            var cartItems = document.querySelectorAll(\n                RemoveFromCartEventListener.prototype.AllCartRemoveTag\n            );\n            var quantites =\n                document.querySelectorAll(\n                    RemoveFromCartEventListener.prototype\n                        .AllCartRemoveQuantitiesTag\n                ).length > 0\n                    ? document.querySelectorAll(\n                          RemoveFromCartEventListener.prototype\n                              .AllCartRemoveQuantitiesTag\n                      )\n                    : document.querySelectorAll(\n                          \".cart-body__quantity-control-input\"\n                      );\n\n            var totalPrice;\n            var items = [];\n            var currency;\n\n            for (var i = 0; i < cartItems.length; i++) {\n                var cartItem = cartItems[i];\n                var analyticsData = cartItem.dataset.analytics\n                    ? JSON.parse(cartItem.dataset.analytics)\n                    : null;\n\n                if (analyticsData && cartItem.dataset) {\n                    var analticsDataProducts = analyticsData.products\n                        ? analyticsData.products[0]\n                        : null;\n                    var quantity = parseFloat(quantites[i].value);\n                    totalPrice = cartItem.dataset.total;\n                    currency = cartItem.dataset.cartcurrency;\n\n                    var price = Number(\n                        analticsDataProducts.price\n                            ? analticsDataProducts.price.replace(\",\", \".\")\n                            : cartItem.dataset.price.replace(\",\", \".\")\n                    ).toFixed(2);\n                    var pricewithdiscount = Number(\n                        analticsDataProducts.pricewithdiscount\n                            ? analticsDataProducts.pricewithdiscount.replace(\n                                  \",\",\n                                  \".\"\n                              )\n                            : cartItem.dataset.priceWithDiscount.replace(\n                                  \",\",\n                                  \".\"\n                              )\n                    ).toFixed(2);\n                    var item = {\n                        item_id: analticsDataProducts.code,\n                        item_name: analticsDataProducts.name,\n                        currency: analticsDataProducts.currency,\n                        item_brand: analticsDataProducts.brand,\n                        item_category: analticsDataProducts.category,\n                        price: pricewithdiscount,\n                        quantity: quantity,\n                    };\n\n                    if (analticsDataProducts.categories) {\n                        var splitCategories =\n                            analticsDataProducts.categories.split(\";\");\n                        for (var j = 0; j < splitCategories.length; j++) {\n                            if (j == 0) {\n                                item[\"item_category\"] = splitCategories[j];\n                            } else {\n                                item[\"item_category\" + j] = splitCategories[j];\n                            }\n                        }\n                    }\n\n                    if (price != pricewithdiscount) {\n                        item[\"price\"] = analticsDataProducts.price;\n                        item[\"discount\"] = (price - pricewithdiscount).toFixed(\n                            2\n                        );\n                    }\n\n                    items.push(item);\n                }\n            }\n\n            if (items.length > 0) {\n                SendData(dataLayer);\n            }\n            function SendData(dataLayer) {\n                dataLayer\n                    .push({\n                        event: \"remove_from_cart\",\n                        ecommerce: {\n                            currency: currency,\n                            value: totalPrice,\n                            items: items,\n                        },\n                    })\n                    .then(() => {\n                        console.log(\"GTM pushed remove_from_cart event\");\n                        setTimeout(() => {\n                            var instanceActivate = new ActivateGtm();\n                            instanceActivate.activateRemoveFromCart();\n                        }, 2000);\n                    })\n                    .catch((error) => {\n                        console.warn(\"GTM error remove_from_cart event\", error);\n                    });\n\n                if (typeof gtag !== \"undefined\" && !!gtag) {\n                    gtag(\"event\", \"remove_from_cart\", {\n                        event_category: \"Enhanced Ecommerce\",\n                        event_label: \"Remove from cart\",\n                        value: totalPrice,\n                        currency: currency,\n                        items: items,\n                    });\n                }\n            }\n        }\n\n        function SingleProductRemove(that) {\n            var analyticsData = that.dataset.analytics\n                ? JSON.parse(that.dataset.analytics)\n                : null;\n\n            if (analyticsData && that.dataset) {\n                var analticsDataProducts = analyticsData.products\n                    ? analyticsData.products[0]\n                    : null;\n                var addToCartAmount = $(that)\n                    .parent()\n                    .find(that.SingleProductQunatityTag);\n                var quantity = parseFloat($(addToCartAmount).val());\n\n                var price = Number(\n                    analticsDataProducts.price\n                        ? analticsDataProducts.price.replace(\",\", \".\")\n                        : that.dataset.price.replace(\",\", \".\")\n                ).toFixed(2);\n                var pricewithdiscount = Number(\n                    analticsDataProducts.pricewithdiscount\n                        ? analticsDataProducts.pricewithdiscount.replace(\n                              \",\",\n                              \".\"\n                          )\n                        : that.dataset.priceWithDiscount.replace(\",\", \".\")\n                ).toFixed(2);\n\n                var item = {\n                    item_id: analticsDataProducts.code,\n                    item_name: analticsDataProducts.name,\n                    currency: analticsDataProducts.currency,\n                    item_brand: analticsDataProducts.brand,\n                    item_category: analticsDataProducts.category,\n                    price: pricewithdiscount,\n                    quantity: quantity ? quantity : that.dataset.quantity,\n                };\n                if (analticsDataProducts.categories) {\n                    var splitCategories =\n                        analticsDataProducts.categories.split(\";\");\n                    for (var i = 0; i < splitCategories.length; i++) {\n                        if (i == 0) {\n                            item[\"item_category\"] = splitCategories[i];\n                        } else {\n                            item[\"item_category\" + i] = splitCategories[i];\n                        }\n                    }\n                }\n\n                if (that.dataset.variant) {\n                    var variant = JSON.parse(that.dataset.variant);\n                    if (variant) {\n                        item[\"item_variant\"] = Object.values(variant).join(\",\");\n                    }\n                }\n\n                if (price != pricewithdiscount) {\n                    item[\"price\"] = analticsDataProducts.price;\n                    item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n                }\n\n                dataLayer\n                    .push({\n                        // eslint-disable-line\n                        event: \"remove_from_cart\",\n                        ecommerce: {\n                            currency: analticsDataProducts.currency,\n                            value: (pricewithdiscount * item.quantity).toFixed(\n                                2\n                            ),\n                            items: [item],\n                        },\n                    })\n                    .then(() => {\n                        console.log(\"GTM pushed remove_from_cart event\");\n                        setTimeout(() => {\n                            var instanceActivate = new ActivateGtm();\n                            instanceActivate.activateRemoveFromCart();\n                        }, 1000);\n                    })\n                    .catch((error) => {\n                        console.warn(\"GTM error remove_from_cart event\", error);\n                    });\n\n                if (typeof gtag !== \"undefined\" && !!gtag) {\n                    gtag(\"event\", \"remove_from_cart\", {\n                        event_category: \"Enhanced Ecommerce\",\n                        event_label: \"Remove from cart\",\n                        value: (pricewithdiscount * item.quantity).toFixed(2),\n                        currency: analticsDataProducts.currency,\n                        items: [item],\n                    });\n                }\n            }\n        }\n\n        if (\n            this.element &&\n            this.element.className.includes(\n                RemoveFromCartEventListener.prototype.AllCartRemoveSelector\n            )\n        ) {\n            AllCartRemove();\n        } else if (\n            this.className.includes(\n                RemoveFromCartEventListener.prototype.AllCartRemoveSelector\n            )\n        ) {\n            AllCartRemove();\n        } else {\n            SingleProductRemove(this);\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            RemoveFromCartEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            RemoveFromCartEventListener.prototype.callback\n        );\n    }\n}\n","//https://developers.google.com/analytics/devguides/collection/ga4/reference/events#view_cart\n\nclass ViewCartEventListener {\n    // Language: javascript\n    // Path: ViewCartEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    constructor(element, eventName = \"show\") {\n        this.element = element;\n        this.eventName = eventName;\n    }\n\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n\n        var cartItems = document.querySelectorAll(\".gtm-view-cart\");\n        var quantites =\n            document.querySelectorAll(\".gtm-view-cart .number-unit input\")\n                .length > 0\n                ? document.querySelectorAll(\".gtm-view-cart .number-unit input\")\n                : document.querySelectorAll(\n                      \".cart-body__quantity-control-input\"\n                  );\n\n        var totalPrice;\n        var items = [];\n        var currency;\n\n        for (var i = 0; i < cartItems.length; i++) {\n            var cartItem = cartItems[i];\n            var analyticsData = cartItem.dataset.analytics\n                ? JSON.parse(cartItem.dataset.analytics)\n                : null;\n\n            if (analyticsData && cartItem.dataset) {\n                var analticsDataProducts = analyticsData.products\n                    ? analyticsData.products[0]\n                    : null;\n                var quantity = parseFloat(quantites[i].value);\n                totalPrice = cartItem.dataset.total;\n                currency = cartItem.dataset.cartcurrency;\n\n                var price = Number(\n                    analticsDataProducts.price.replace(\",\", \".\")\n                ).toFixed(2);\n                var pricewithdiscount = Number(\n                    analticsDataProducts.pricewithdiscount.replace(\",\", \".\")\n                ).toFixed(2);\n                var item = {\n                    item_id: analticsDataProducts.code,\n                    item_name: analticsDataProducts.name,\n                    currency: analticsDataProducts.currency,\n                    item_brand: analticsDataProducts.brand,\n                    item_category: analticsDataProducts.category,\n                    price: pricewithdiscount,\n                    quantity: quantity,\n                };\n\n                if (analticsDataProducts.categories) {\n                    var splitCategories =\n                        analticsDataProducts.categories.split(\";\");\n                    for (var j = 0; j < splitCategories.length; j++) {\n                        if (j == 0) {\n                            item[\"item_category\"] = splitCategories[j];\n                        } else {\n                            item[\"item_category\" + j] = splitCategories[j];\n                        }\n                    }\n                }\n\n                if (cartItem.dataset.variant) {\n                    var variant = JSON.parse(cartItem.dataset.variant);\n                    if (variant) {\n                        item[\"item_variant\"] = Object.values(variant).join(\",\");\n                    }\n                }\n\n                if (price != pricewithdiscount) {\n                    item[\"price\"] = analticsDataProducts.price;\n                    item[\"discount\"] = (price - pricewithdiscount).toFixed(2);\n                }\n\n                items.push(item);\n            }\n        }\n\n        if (cartItems.length > 0) {\n            SendData(dataLayer);\n        }\n\n        function SendData(dataLayer) {\n            dataLayer\n                .push({\n                    event: \"view_cart\",\n                    ecommerce: {\n                        currency: currency,\n                        value: totalPrice,\n                        items: items,\n                    },\n                })\n                .then(() => {\n                    console.log(\"GTM pushed view_cart event\");\n                    setTimeout(() => {\n                        var instanceActivate = new ActivateGtm();\n                        instanceActivate.activateRemoveFromCart();\n                    }, 2000);\n                })\n                .catch((error) => {\n                    console.warn(\"GTM error view_cart event\", error);\n                });\n\n            if (typeof gtag !== \"undefined\" && !!gtag) {\n                gtag(\"event\", \"view_cart\", {\n                    event_category: \"Enhanced Ecommerce\",\n                    event_label: \"view cart\",\n                    value: totalPrice,\n                    currency: currency,\n                    items: items,\n                });\n            }\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            ViewCartEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.addEventListener(\n            this.eventName,\n            ViewCartEventListener.prototype.callback\n        );\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#search\n\nclass ProductSearchEventListener {\n    // Language: javascript\n    // Path: ProductSearchEventListener.js\n    // Compare this snippet from EventListener.js:\n\n    get ProductSearchButton() {\n        return \".gtm-search-button\";\n    }\n    get ProductSearchText() {\n        return \".gtm-searchkey\";\n    }\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n\n        var search_key = document.querySelector(\n            ProductSearchEventListener.prototype.ProductSearchText\n        ).value;\n        dataLayer\n            .push({\n                // eslint-disable-line\n                event: \"search\",\n                search_term: search_key,\n            })\n            .then(() => {\n                console.log(\"GTM pushed search event\");\n            })\n            .catch((error) => {\n                console.warn(\"GTM error search event\", error);\n            });\n\n        if (typeof gtag !== \"undefined\" && !!gtag) {\n            gtag(\"event\", \"search\", {\n                event_category: \"Enhanced Ecommerce\",\n                event_label: \"search\",\n                search_term: search_key,\n            });\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            ProductSearchEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(this.eventName, this.callback);\n    }\n}\n","//=> https://developers.google.com/analytics/devguides/collection/ga4/reference/events#login\n\nclass UserLoginEventListener {\n    // Language: javascript\n    // Path: UserLoginEventListener.js\n    // Compare this snippet from EventListener.js:\n    get DefaultEventName() {\n        return \"click\";\n    }\n\n    constructor(element, eventName = this.DefaultEventName) {\n        this.element = element;\n        this.eventName = eventName;\n    }\n    callback() {\n        const dataLayer = new DataLayer();\n        dataLayer.clear();\n\n        var method = this.value;\n        dataLayer\n            .push({\n                event: \"login\",\n                method: method,\n            })\n            .then(() => {\n                console.log(\"GTM pushed user_login event\");\n            })\n            .catch((error) => {\n                console.warn(\"GTM error user_login event\", error);\n            });\n\n        if (typeof gtag !== \"undefined\" && !!gtag) {\n            gtag(\"event\", \"login\", {\n                method: method,\n            });\n        }\n    }\n\n    listen() {\n        this.element.addEventListener(\n            this.eventName,\n            ProductSearchEventListener.prototype.callback\n        );\n    }\n\n    remove() {\n        this.element.removeEventListener(\n            this.eventName,\n            ProductSearchEventListener.prototype.callback\n        );\n    }\n}\n"]}