{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/clientSideValidation.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/tencentCaptcha.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/scrollAnimate.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/base.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/util.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/setDetails.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/components/socialList.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/modalUtilities.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/bannerSlider.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/contactPdp.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/detail.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/search/search.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/listingPage/listingPage.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/product/wishlistHeart.js","webpack:///./cartridges/app_bc/cartridge/client/default/js/common/urlUtil.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","firstError","scrollAnimate","require","validateForm","event","config","arguments","length","undefined","valid","this","checkValidity","shouldValidate","preventDefault","stopPropagation","stopImmediatePropagation","errorFields","$","find","each","validity","hasClass","removeClass","parent","is","siblings","addClass","children","text","invalidateForm","formSubmit","currentError","concat","split","splice","join","indexOf","push","$form","target","document","trigger","message","additionalData","type","category","attr","country","val","validateFields","closest","clearForm","form","remove","e","setCustomValidity","validationMessage","patternMismatch","data","rangeOverflow","rangeUnderflow","tooLong","tooShort","valueMissing","typeMismatch","parents","eq","skipFocus","center","scrollableParent","focus","invalid","on","submit","focusOut","validateContactUsPDPform","validateRequesSizePDPform","errorText","validateFindInStorePDPform","validatecontactOrderform","validateHelpWithSizeform","validateLoginOfCanvas","validateRepairFormMyAccount","validateGenericCusForm","validateRegistration","validateOverlayNewsletter","$scrollableParent","$lines","areLinesSelected","privacyGranted","$privacyField","isPrivacyConsentGranted","$errorMsg","fields","buttonClick","noOrientalCheck","validationMsg","test","validateRequestAppointmentform","currentTarget","validateAppointmentformUser","functions","validateContactUsform","el","_successCallback","_failCallback","_captchaID","tencetCaptchaCallback","res","ret","randstr","ticket","errorCode","showCaptcha","captchaID","success","fail","captchaAppID","TencentCaptcha","show","error","querySelector","script","setAttribute","getAttribute","verify","ajax","url","isAlreadyLoaded","initialize","$tencentCaptchaEl","promise","$captchaInput","resolve","reject","invalidateCaptcha","elementOrPosition","options","position","disableScroll","duration","delay","setTimeout","window","innerHeight","animate","scrollTop","complete","scrollToPosition","parseInt","element","jQuery","offset","top","scrollToElement","appendToUrl","getPidValue","getQuantitySelected","updateAttrs","attrs","$productContainer","msgs","attrsWithSwatches","forEach","id","values","attrValue","$attrValue","selected","assistiveSelectedText","images","swatch","resizedUrls","map","idx","$colorText","empty","sizeStartIndex","sizeEndIndex","partOne","substring","partTwo","eIndex","partTwoMod","finalUrl","removeAttr","selectable","processSwatchValues","attributeSelector","prop","numberofsizes","first","size","isOnlyOneLeft","online","hideNotifyMeProduct","processNonSwatchValues","updateVideo","htmlVideo","$videoContainerVertical","$videoContainerHorizontalDesktop","$videoContainerHorizontalMobile","ImageandVideoContainer","replaceWith","desktopVideo","filter","mobileVideo","append","insertAfter","prepend","handleVariantResponse","response","imagesCanChange","product","variationAttributes","resources","imgs","buildSrcSet","imageSet","prevArrStartIndex","$imageContainer","getElementById","innerHTML","$imagesDivs","singleImage","$ResizedUrlsFirstSource","$ResizedUrlsSecondSource","$image","$picture","$sources","alt","cloneImage","clone","appendTo","imgLength","$imagesOld","j","oldimg","updateImages","large","hasHorizontalVideo","videoH","CLDvideoHURL","videoCloudinaryPdpHtml","hasVerticalVideo","videoV","CLDvideoVURL","price","html","availabilityValue","availabilityMessages","availability","messages","readyToOrder","info_selectforstock","updateAvailability","attributeSelect","selectedValueUrl","container","method","imgVal","enableDisclaimerShipment","pfas","Tag","toUpperCase","spinner","stop","getAddToCartUrl","miniCartReportingUrl","performAddToCartCall","addToCartUrl","pid","pidsObj","childProducts","quantity","onSuccess","onError","customFrom","masterPid","start","generalPid","totPid","skuMaster","productColor","posC","lastIndexOf","charAt","substr","selectorPrefix","isDesktop","addToCartLiveContent","urlAnalytics","dataType","minicartAnalytics","err","responseJSON","redirectUrl","location","href","colorAttribute","dat","sku","stickyBar","attributeSelectLook","colorSelect","productPid","action","SKU","toLowerCase","colorAttributeLook","scrollTo","selectAttribute","available","sizeCode","_idx","$el","performAddToCart","newStickyAddToCartButton","isMobile","isStickyTop","isMicroSticky","resData","reportingURL","performAddToCartLook","addToCart","_typeof","iterator","constructor","include","keys","processInclude","ready","MutationObserver","WebKitMutationObserver","mutations","className","toString","includes","stikyHeight","height","css","bottom","right","isTablet","display","visibility","observe","subtree","attributes","socialNetwork","socialAction","socialBaseLink","socialTarget","dataLayer","observer","attributeFilter","_defineProperties","configurable","writable","_toPropertyKey","toPrimitive","TypeError","String","Number","_toPrimitive","FOCUSABLE","Modal","custom","a","_classCallCheck","modal","_onKeyDown","_onKeyDownFn","_open","_previouslyFocussedElement","_config","assign","onShow","onClose","focusableNodes","toArray","offsetParent","focusedItemIndex","activeElement","shiftKey","keyCode","close","_trapFocus","_this","one","addEventListener","$modal","_registerEvents","apply","_this2","removeEventListener","getBannerHeigth","initializeBannerHeader","heightBanner","tot","timeToShift","slick","infinite","autoplay","focusOnSelect","centerMode","autoplaySpeed","speed","slidesToScroll","slidesToShow","variableWidth","dots","arrow","fade","prevArrow","nextArrow","commonAria","prevSlide","label","nextSlide","slidesContainer","unobserveTimeout","resizeObserver","ResizeObserver","h","clearTimeout","unobserve","navigationCountry","updateSuccessPage","$selector","succesPageHtml","liveChatEnable","setButtonAttribute","selectpicker","labels","innerText","$button","targets","$select","$dropdown","fixLayoutForModalOpen","fixLayoutForModalClose","fixLayoutForModalBoutiqueOverlayClose","openContactUsModal","ajaxData","page","$grecaptcha","body","dispatchEvent","CustomEvent","detail","open","submitContactUsModal","productID","information","readyToSubmit","Deferred","done","serialize","eventCategory","eventAction","eventLabel","dimension23","dimension24","openFindInStoreModal","color","sizeText","preselectSize","selectedSize","sizes","dataset","parentElement","classList","add","click","selectSizeFindInStore","searchFindInStore","modalClose","selectedCountry","countryCode","analyticsCallStore","productId","filterSize","boutiqueId","boutique","boutiqueName","analyticsBookAppointment","updateListOfStores","listOfStoresHtml","fadeIn","filterListOfStores","submitFindInStoreModal","selectedNation","selectedBoutique","replace","openHelpWithSizeModal","sticky","submitHelpWithSizeModal","base","openFromBuyButton","closeModal","modalTarget","off","closeSizeChartModal","toggleClass","loggedCustomerEmail","uploadFormRequestSize","openSizeChartModal","mod","totHeigth","footerElement","getElementsByTagName","viewportHeight","documentElement","clientHeight","uploadSuccesPage","fadeOut","liveChatDisable","liveChatPositionStikyUp","fixLayoutForModalOpenSize","updateSizeList","checkSize","$size","$RequestSize","updateSizeListLook","recommendationSlider","arialabelPrev","arialabelNext","arrowNext","arrowPrev","accessibility","dotsClass","appendDots","responsive","breakpoint","settings","removeWishlistinRecommendation","updatePrice","productIds","loadVideo","$videoContainer","videoURL","discoverMore","productName","fourGift","changeProductLook","imageToChange","microCategoryAcme","mainColor","productLink","isInSticky","analyticsOwn","accessType","buttonType","fixStickybarHidingOnClick","now","Date","visibleCheckElement","getElementsByClassName","isAddToCartVisible","getBoundingClientRect","stickyCanAppear","isFooterVisible","heightHeader","canStickybarAppear","not","openStickySelector","isCurrentModalOpen","isSizeBtn","removeData","originalEvent","openStickySelectorLook","zoomElement","zoomCounter","imageToZoom","fullResolution","src","sixeClass","width","fullResolutionSrcSet","srcset","$zoomedImage","outerContent","innerContent","scrollLeft","positionStickyElement","scrollTimer","closeAllOpenSubwindow","$sticky","$stickyOverlay","$stickyColor","has","openRequestSizeFromPlp","openSizeSelector","performOpenSizeSelector","contains","openSizeSelectorFromRequestSize","openRequestSize","overlay","urlGetParameter","strokeClose","ecomSize","sizehtml","$stickyModal","_this3","submitRequestSize","trim","updateAttributesAndDetails","attributesHtml","requestSizeHtml","shortDescription","longDescription","showSpinner","updateAttribute","skuWColor","colorAttr","queryString","search","queryPid","completeUrl","querySelectorAll","video","endPoint","updateAddToCart","applePayButton","manageApplePayButtonApperance","sizeChart","$prodSizeChart","buttonPressed","buttonID","updateLinksWithTemplate","urlParams","URLSearchParams","template","parameter","regex","currentLink","updatedLink","RegExp","closeSizeChart","sizeOverlay","mobile","sizeChartMeasure","measureSelected","tableSelectedId","oldSelected","oldTableID","hide","setNumberPageCarouselReccomandation","slideTosho","currentSlide","totalSlide","slideCount","shippingPackaging","$menu","myScrollPos","left","outerWidth","initializeSize","autoSelectForOneSize","setIdForModalDialogattributes","ariaDescribedBy","ariaLabelledby","$wishListMessage","newAriaDescribedByWish","newAriaLabelledbyWish","copyProductLink","copyText","navigator","clipboard","writeText","copiedLink","loadRecommendations","addToCartAutomatic","fixSelectDropdowns","closeRefinements","resize","sort","currTemplate","selectedUrl","updateDom","$results","selector","$updates","handleRefinements","activeDiv","parseResults","specialHandlers","changeWallLayout","replaceOrAddQueryParam","sizePage","sizeToAdd","liveChatDiseble","closeMobileSortingWindow","zIndex","getQueryParams","qs","result","decodeURIComponent","applyAccessibilityFix","$selectElement","$buttonElement","next","selectId","ariaControls","handleBtnAccessibilityFunction","handleBtnAccessibility","fixAccessibilitySelectpicker","sortDesktop","kindSort","optionSelect","urlWithNewTemplate","actualQueryParam","queryTemplate","isSwitch","link","decodeURI","history","replaceState","urlPath","newUrlPath","urlSwitch","filerType","filterValue","sortMobile","showMore","showMoreUrl","actionType","isPageDesignerLook","startIndex","option","updateSortOptions","positionTemplate","pageSize","applyFilter","refinment","refinmentValue","srule","srulePresent","filters","filteModalOpen","hover","blur","keydown","plus","currentID","filteModalClose","widthSortingDiv","sortingOptionList","toggle","closeSortingOptionList","onclick","matches","dropdowns","openDropdown","changeTemplateViewContainer","templateData","currenSorting","isSearch","urlPathLook","sizeOfPage","analyticsTemplate","templateName","listingType","pageCategory","pagesubCategory","pageDetail","HTMLImageElement","img","urls1","urls2","imgUrl","newUrl","openSortingDivMobile","closeSortingDivMobile","openFilterDivMobile","closeFilterDivMobile","showOverlayWallHover","mouseenter","mouseleave","closeMobileOverlayClickOnBody","showStickyBarPLP","liveChatPositionStikyDown","$plpBanner","filterButtonHeigt","changeWallLayoutOnLoad","startpositionLiveChatButton","accessibilityWall","setHistoryStatus","pushState","scrollY","reloadIframes","currentPage","displayMessageAndChangeIcon","status","messageModalDiv","statusSuccessClass","statusErrorClass","colorId","backgroundProduct","msg","background","updateHeartIcon","fill","$product","$heart","getSelectedVariantPid","$analytics","checkProductInWishlist","$plpProduct","initWishlistScrollCheck","rootMargin","threshold","IntersectionObserver","entries","entry","isIntersecting","$element","_","productTile","addToWishlist","optionId","optionVal","checkProductsInWishlist","intersectionObserver","disconnect","slice","params","encodeURIComponent"],"mappings":"aACE,IAAIA,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EACAC,GAAG,EACHH,QAAS,CAAC,GAUX,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,OACf,CAIAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,GAEhE,EAGAZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,GACvD,EAOArB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGAZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,EAAW,EAGpH/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,I,mCCjFrD,IAAIC,GAAa,EAEbC,EAAgBC,EAAQ,GAW5B,SAASC,EAAaC,GAAoB,IAAbC,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC/BG,GAAQ,EAEZ,GAAIC,KAAKC,gBAAkBD,KAAKC,gBAAiB,CAEvCN,EAAOO,iBAAgBH,GAAQ,GACjCL,IACAA,EAAMS,iBACNT,EAAMU,kBACNV,EAAMW,4BAEVf,GAAa,EACb,IAAIgB,EAAc,GAyClB,GAxCAC,EAAEP,MAAMQ,KAAK,sDAAsDC,MAAK,WACpE,IAAId,EAAOO,gBAAmBP,EAAOO,eAAeF,MAGpD,GAAKA,KAAKU,SAASX,MAoBXQ,EAAEP,MAAMW,SAAS,cACjBJ,EAAEP,MAAMY,YAAY,YAChBL,EAAEP,MAAMW,SAAS,cACjBJ,EAAEP,MAAMa,SAASD,YAAY,aAGjCL,EAAEP,MAAMc,GAAG,iBACXP,EAAEP,MAAMe,SAAS,wBAAwBC,SAAS,gBAC3CT,EAAEP,MAAMc,GAAG,SAClBP,EAAEP,MAAMe,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,IAE3EX,EAAEP,MAAMa,SAASA,SAASE,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,SAvBjG,GAPAnB,GAAQ,EACJQ,EAAEP,MAAMc,GAAG,kBACXP,EAAEP,MAAMe,SAAS,wBAAwBH,YAAY,gBAGzDO,EAAenB,KAAMN,EAAOC,GAExBA,EAAOyB,WACP,IAAK,IAAIvC,KAAOmB,KAAKU,SACjB,GAAIV,KAAKU,SAAS7B,GAAM,CACpB,IAAIwC,EAAe,GAAHC,OAAMtB,KAAKnC,KAAK0D,MAAM,KAAKC,QAAQ,GAAGC,KAAK,KAAI,KAAAH,OAAIzC,IACxB,IAAvCyB,EAAYoB,QAAQL,IACpBf,EAAYqB,KAAKN,EAEzB,CAmBhB,IAEIf,EAAYT,OAAQ,CACpB,IAAI+B,EAAQrB,EAAEb,EAAMmC,QACpBtB,EAAEuB,UAAUC,QAAQ,kBAAmB,CACnCC,QAAS1B,EAAYmB,KAAK,MAC1BQ,eAAgB,CACZC,KAAM,mBACNC,SAAUP,EAAMQ,KAAK,mBAAqBR,EAAMQ,KAAK,QACrDC,QAAS9B,EAAE,kBAAkB+B,MAAMf,MAAM,KAAK,KAG1D,CACJ,CACA,OAAOxB,CACX,CAWA,SAASwC,EAAe7C,EAAOC,GAC3B,IAAII,GAAQ,EAERL,IACAA,EAAMS,iBACNT,EAAMU,kBACNV,EAAMW,4BAEVf,GAAa,EACb,IAAIgB,EAAc,GA4ClB,GA3CAC,EAAEP,MAAMS,MAAK,WACT,IAAId,IAAUA,EAAOO,gBAAmBP,EAAOO,eAAeF,MAG9D,GAAKA,KAAKU,SAASX,MAqBXQ,EAAEP,MAAMW,SAAS,cACjBJ,EAAEP,MAAMY,YAAY,YAChBL,EAAEP,MAAMW,SAAS,cACjBJ,EAAEP,MAAMa,SAASD,YAAY,aAGjCL,EAAEP,MAAMc,GAAG,iBACXP,EAAEP,MAAMe,SAAS,wBAAwBC,SAAS,gBAC3CT,EAAEP,MAAMc,GAAG,SAClBP,EAAEP,MAAMe,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,IAE3EX,EAAEP,MAAMa,SAASA,SAASE,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,IAGjGX,EAAEP,MAAMwC,QAAQ,qBAAqBJ,KAAK,yBAA0B,aAnC9C,CAQtB,GAPArC,GAAQ,EACJQ,EAAEP,MAAMc,GAAG,kBACXP,EAAEP,MAAMe,SAAS,wBAAwBH,YAAY,gBAGzDL,EAAEP,MAAM+B,QAAQ,UAAW,CAACrB,SAAUV,KAAKU,SAAUf,OAAQA,IAEzDA,EAAOyB,WACP,IAAK,IAAIvC,KAAOmB,KAAKU,SACjB,GAAIV,KAAKU,SAAS7B,GAAM,CACpB,IAAIwC,EAAe,GAAHC,OAAMtB,KAAKnC,KAAK0D,MAAM,KAAKC,QAAQ,GAAGC,KAAK,KAAI,KAAAH,OAAIzC,IACxB,IAAvCyB,EAAYoB,QAAQL,IACpBf,EAAYqB,KAAKN,GAErB,KACJ,CAGRd,EAAEP,MAAMwC,QAAQ,qBAAqBJ,KAAK,yBAA0B,UACxE,CAiBJ,IAEI9B,EAAYT,OAAQ,CACpB,IAAI+B,EAAQrB,EAAEP,MAAMwC,QAAQ,QAC5BjC,EAAEuB,UAAUC,QAAQ,kBAAmB,CACnCC,QAAS1B,EAAYmB,KAAK,MAC1BQ,eAAgB,CACZC,KAAM,mBACNC,SAAUP,EAAMQ,KAAK,mBAAqBR,EAAMQ,KAAK,QACrDC,QAAS9B,EAAE,kBAAkB+B,MAAMf,MAAM,KAAK,KAG1D,CAEA,OAAOxB,CACX,CAOA,SAAS0C,EAAUC,GACfnC,EAAEmC,GAAMlC,KAAK,sBAAsBI,YAAY,YAC/CL,EAAEmC,GAAMlC,KAAK,uBAAuBI,YAAY,YAChDL,EAAEmC,GAAMlC,KAAK,wBAAwBS,SAAS,oBAAoBC,KAAK,IACvEX,EAAE,SAAUmC,GAAMC,QACtB,CACA,SAASxB,EAAgBnC,EAAQ4D,GAAc,IAAXjD,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAC,CAAC,EAKxC,GAJIgD,GAAGA,EAAEzC,iBACmC,WAAvCI,EAAEvB,GAAQoD,KAAK,qBAChBpD,EAAO6D,kBAAkB,KAExB7D,EAAO0B,SAASX,MAAO,CACxB,IAAI+C,EAAoB9D,EAAO8D,kBAC/BvC,EAAEvB,GAAQgC,SAAS,YACfT,EAAEvB,GAAQ2B,SAAS,cACnBJ,EAAEvB,GAAQ6B,SAASG,SAAS,YAE5BhC,EAAO0B,SAASqC,iBAAmBxC,EAAEvB,GAAQgE,KAAK,sBAClDF,EAAoBvC,EAAEvB,GAAQgE,KAAK,qBAEI,UAAvCzC,EAAEvB,GAAQoD,KAAK,sBACfU,EAAoBvC,EAAEvB,GAAQgE,KAAK,oBAElChE,EAAO0B,SAASuC,eAAiBjE,EAAO0B,SAASwC,iBAC3C3C,EAAEvB,GAAQgE,KAAK,iBACtBF,EAAoBvC,EAAEvB,GAAQgE,KAAK,iBAElChE,EAAO0B,SAASyC,SAAWnE,EAAO0B,SAAS0C,WACrC7C,EAAEvB,GAAQgE,KAAK,iBACtBF,EAAoBvC,EAAEvB,GAAQgE,KAAK,gBAEnChE,EAAO0B,SAAS2C,cAAgB9C,EAAEvB,GAAQgE,KAAK,mBAC/CF,EAAoBvC,EAAEvB,GAAQgE,KAAK,kBAEnChE,EAAO0B,SAAS4C,cAAgB/C,EAAEvB,GAAQgE,KAAK,mBAC/CF,EAAoBvC,EAAEvB,GAAQgE,KAAK,kBAEI,UAAvCzC,EAAEvB,GAAQoD,KAAK,sBACfU,EAAoBvC,EAAEvB,GAAQgE,KAAK,mBAEvCzC,EAAEvB,GAAQuE,QAAQ,kBAAkB/C,KAAK,wBAAwBS,SAAS,oBACrEuC,GAAG,GAAGtC,KAAK4B,GAEhBvC,EAAEP,MAAMwC,QAAQ,qBAAqBJ,KAAK,yBAA0B,IAEhE9C,IACKK,EAAO8D,YACRlE,EAAcgB,EAAEvB,GAAS,CAAC0E,QAAQ,EAAMC,iBAAkBhE,EAAOgE,oBAChEpD,EAAEvB,IAAWuB,EAAE,eAAeqD,SAEnCtE,GAAa,EAErB,CACJ,CACAjC,EAAOD,QAAU,CACbyG,QAAS,WACLtD,EAAEuB,UAAUgC,GAAG,UAAW,2BAA2B,SAAUlB,EAAGI,GAC9D7B,EAAenB,KAAM4C,EAAGI,EAAOA,EAAKrD,OAAS,KACjD,IACAY,EAAE,wBAAwBuD,GAAG,SAAS,WAClCxE,GAAa,CACjB,GACJ,EAEAyE,OAAQ,WACJxD,EAAE,QAAQuD,GAAG,UAAU,SAAUlB,GAC7B,OAAOnD,EAAahC,KAAKuC,KAAM4C,EAAG,CAACxB,YAAY,GACnD,GACJ,EAEA4C,SAAU,WACNzD,EAAE,kCAAkCuD,GAAG,YAAY,SAAUpE,GACrDa,EAAEP,MAAMW,SAAS,2BAETX,KAAKU,SAASX,OAIlBQ,EAAEP,MAAMW,SAAS,aACjBJ,EAAEP,MAAMY,YAAY,YAEpBL,EAAEP,MAAMc,GAAG,SACXP,EAAEP,MAAMe,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,IAE3EX,EAAEP,MAAMa,SAASA,SAASE,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,MATjGX,EAAEP,MAAM+B,QAAQ,UAAW/B,KAAKU,UAChCS,EAAenB,KAAMN,IAW7B,IACAa,EAAEuB,UAAUgC,GAAG,oBAAqB,UAAU,SAAUpE,GAC9Ca,EAAEP,MAAMsC,QAETtC,KAAKU,SAASX,OAIXQ,EAAEP,MAAMW,SAAS,aACbJ,EAAEP,MAAMW,SAAS,eACjBJ,EAAEP,MAAMa,SAASD,YAAY,YAC7BL,EAAEP,MAAMY,YAAY,aAGhBL,EAAEP,MAAMa,SAASA,SAASI,SAAS,wBAAwBA,SAAS,oBAAoBC,KAAK,IAAIrB,QAEzGU,EAAEP,MAAMwC,QAAQ,kBAAkBhC,KAAK,yCAAyCU,KAAK,MAXzFX,EAAEP,MAAM+B,QAAQ,UAAW/B,KAAKU,UAChCS,EAAenB,KAAMN,IAa7B,IACAa,EAAE,uBAAuBuD,GAAG,gBAAgB,SAAUpE,GAC7CM,KAAKU,SAASX,OAIXQ,EAAEP,MAAMW,SAAS,aACjBJ,EAAEP,MAAMY,YAAY,YAExBL,EAAEP,MAAMwC,QAAQ,WAAWzB,SAAS,wBAAwBE,SAAS,oBAAoBC,KAAK,MAN9FX,EAAEP,MAAM+B,QAAQ,UAAW/B,KAAKU,UAChCS,EAAenB,KAAMN,GAO7B,GACJ,EAEAuE,yBAA0B,WACtB1D,EAAEuB,UAAUgC,GAAG,QAAS,oBAAoB,SAASlB,GACjD,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACAsB,0BAA2B,WACvB3D,EAAEuB,UAAUgC,GAAG,QAAS,0BAA0B,SAASlB,GAOvD,MAN2D,KAAvDrC,EAAEP,KAAK0C,MAAMlC,KAAK,2BAA2B8B,OAC7C/B,EAAEP,KAAK0C,MAAMlC,KAAK,2BAA2BC,MAAK,WAC9C,IAAI0D,EAAY5D,EAAEP,MAAMgD,KAAK,WAC7BhD,KAAK6C,kBAAkBsB,EAC3B,IAEG1E,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACAwB,2BAA4B,WACxB7D,EAAEuB,UAAUgC,GAAG,QAAS,0BAA0B,SAASlB,GACvD,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACAyB,yBAA0B,WACtB9D,EAAEuB,UAAUgC,GAAG,QAAS,wBAAwB,SAASlB,GACrD,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA0B,yBAA0B,WACtB/D,EAAEuB,UAAUgC,GAAG,QAAS,wBAAwB,SAASlB,GACrD,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA2B,sBAAuB,WACnBhE,EAAEuB,UAAUgC,GAAG,QAAS,0CAA0C,SAASlB,GACvE,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA4B,4BAA6B,WACzBjE,EAAEuB,UAAUgC,GAAG,QAAS,mDAAmD,SAASlB,GAChF,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA6B,uBAAwB,WACpBlE,EAAEuB,UAAUgC,GAAG,QAAS,yBAAyB,SAASlB,GACtD,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA8B,qBAAsB,WAClBnE,EAAEuB,UAAUgC,GAAG,QAAS,yCAAyC,SAASlB,GACtE,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,IAEArC,EAAEuB,UAAUgC,GAAG,QAAS,8CAA8C,SAASlB,GAC3E,OAAOnD,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA+B,0BAA2B,WAEvBpE,EAAEuB,UAAUgC,GAAG,QAAS,iEAAiE,WACrF,IAAIlC,EAAQrB,EAAEP,KAAK0C,MACnBnC,EAAE,oBAAqBqB,GAAOZ,SAAS,eAC3C,IAaAT,EAAEuB,UAAUgC,GAAG,QAAS,qDAAqD,SAASlB,GAClF,IAAIhB,EAAQrB,EAAEP,KAAK0C,MACfkC,EAAoBhD,EAAMY,QAAQ,oBAOtC,GAJAjC,EAAE,sCAAuCqB,GAAOZ,SAAS,iBACvCY,EAAMjB,SAAS,qCAZZ,SAASiB,GAC9B,IAAIiD,EAAStE,EAAE,kCAAmCqB,GAClD,SAAWiD,EAAOhF,SAAUU,EAAE,uBAAwBsE,GAAQhF,OAClE,CAYwBiF,GAAoB,CACpC,IAAIC,EArBoB,SAASnD,GACrC,IAAIoD,EAAgBzE,EAAE,oCAAqCqB,GAC3D,SAAWoD,EAAcnF,SAAUmF,EAAclE,GAAG,YACxD,CAkB6BmE,CAAwBrD,GAC7C,IAAMmD,EAAgB,CAClBnC,EAAEzC,iBACFyC,EAAExC,kBACFwC,EAAEvC,2BACF,IAAI6E,EAAY3E,EAAE,oBAAqBqB,GAIvC,OAHAsD,EAAUtE,YAAY,gBACtBrB,EAAc2F,EAAW,CAACvB,iBAAkBiB,IAC5CnF,EAAahC,KAAKuC,KAAK0C,KAAME,EAAG,CAACe,iBAAkBiB,KAC5C,CACX,CACJ,CAEA,OAAOnF,EAAahC,KAAKuC,KAAK0C,KAAME,EAAG,CAACe,iBAAkBiB,GAC9D,GACJ,EACArC,eAAgB,SAAU4C,EAAQxF,GAC9B,GAAIwF,EACA,OAAO5C,EAAe9E,KAAK0H,EAAQ,KAAMxF,EAEjD,EAMAyF,YAAa,WACT7E,EAAE,yDAAyDuD,GAAG,SAAS,WAEnErB,EAAUlC,EAAEP,MAAMuD,QAAQ,QAC9B,GACJ,EAEA8B,gBAAiB,WACb9E,EAAEuB,UAAUgC,GAAG,WAAY,mBAAmB,WAC1C,GAAsChE,MAAlCS,EAAEP,MAAMgD,KAAK,kBAAgC,CAC7C,IAAIsC,EAAgB/E,EAAEP,MAAMgD,KAAK,kBAE7BzE,EAAQgC,EAAEP,MAAMsC,MAChBvC,EAFQ,yXAEMwF,KAAKhH,GACnBA,GAAmB,KAAVA,IACJwB,EAQGQ,EAAEP,MAAMW,SAAS,cACjBJ,EAAEP,MACGY,YAAY,YACZG,SAAS,wBAAwBE,SAAS,oBAC1CC,KAAK,IACVlB,KAAK6C,kBAAkB,IACvBtC,EAAEP,MAAMoC,KAAK,oBAAoB,KAbrC7B,EAAEP,MACGgB,SAAS,YACTD,SAAS,wBAAwBE,SAAS,oBAC1CC,KAAKoE,GACVtF,KAAK6C,kBAAkByC,GACvB/E,EAAEP,MAAMoC,KAAK,oBAAoB,IAY7C,CACJ,GACJ,EACAoD,+BAAgC,WAC5BjF,EAAEuB,UAAUgC,GAAG,QAAS,+BAA+B,SAASlB,GAE5D,OADAA,EAAE6C,cAAgBlF,EAAEP,MAAMwC,QAAQ,oBAC3B/C,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EAEA8C,4BAA6B,WACzBnF,EAAEuB,UAAUgC,GAAG,QAAS,kDAAkD,SAASlB,GAE/E,OADAA,EAAE6C,cAAgBlF,EAAEP,MAAMwC,QAAQ,QAC3B/C,EAAahC,KAAKuC,KAAK0C,KAAME,EACxC,GACJ,EACA+C,UAAW,CACPlG,aAAc,SAAUiD,EAAMhD,GAC1BD,EAAahC,KAAK8C,EAAEmC,GAAOhD,GAAS,KACxC,EACAkG,sBAAuB,WAKnB,OAAOnG,EAAahC,KAAK8C,EAAE,kBAAkBpC,IAAI,GAAkB,KAAM,CAAC+B,eAJpD,SAAU2F,GAC5B,OAAkD,IAA3CtF,EAAEsF,GAAItC,QAAQ,kBAAkB1D,MAC3C,GAGJ,EACA4C,UAAWA,G,8BCncnB,IAAIqD,EACAC,EACAC,EAYJ,SAASC,EAAsBC,GACX,IAAZA,EAAIC,KAEJ5F,EAAE,yCAADe,OAA0C0E,EAAU,uCAAsC1D,IAAI4D,EAAIE,SACnG7F,EAAE,yCAADe,OAA0C0E,EAAU,sCAAqC1D,IAAI4D,EAAIG,QAE5FH,EAAII,UASFP,GAAeA,IARfD,GACAA,EAAiB,CACbM,QAASF,EAAIE,QACbC,OAAQH,EAAIG,UAQpBN,GAAeA,GAG3B,CAMA,SAASQ,IAA0B,IAAb5G,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7BoG,EAAarG,EAAO6G,UACpBV,EAAmBnG,EAAO8G,QAC1BV,EAAgBpG,EAAO+G,KAEvB,IACI,IAAIC,EAAepG,EAAE,2BAA2B+B,MAClC,IAAIsE,eAAeD,EAAcV,EAAuB,CAAC,GAC/DY,MACZ,CAAE,MAAOC,GAZJf,GAAeA,GAcpB,CACH,EAjDA,WAEI,IADuBjE,SAASiF,cAAc,8BACtB,CACpB,IAAIC,EAASlF,SAASiF,cAAc,oCAChCC,GACAA,EAAOC,aAAa,MAAOD,EAAOE,aAAa,YAEvD,CACH,CARD,GAmDA7J,EAAOD,QAAU,CACb+J,OAAQ,WACJ5G,EAAE6G,KAAK,CACHlF,KAAM,OACNmF,IAAK9G,EAAE,4CAA4C+B,MACnDU,KAAM,CACFoD,QAAS7F,EAAE,yCAADe,OAA0C0E,EAAU,uCAAsC1D,MACpG+D,OAAS9F,EAAE,yCAADe,OAA0C0E,EAAU,sCAAqC1D,OAEvGmE,QAAS,SAASzD,GACVA,EAAKyD,QACDX,GAAkBA,EAAiB9C,IAEnC+C,GAAeA,EAAc/C,GACjCzC,EAAE,yCAADe,OAA0C0E,EAAU,sCAAqC1D,IAAI,IAEtG,EACAwE,MAAO,SAAS9D,GACR+C,GAAeA,EAAc/C,GACjCzC,EAAE,yCAADe,OAA0C0E,EAAU,sCAAqC1D,IAAI,GAClG,GAER,EAKAgF,gBAAiB,WACb,OAAO/G,EAAE,yBAAyBV,MACtC,EAOA0H,WAAY,SAASC,EAAmBC,GACpC,IAAIC,EAAgBnH,EAAE,uCAAwCiH,GAC1DE,EAAc7H,SAAY6H,EAAcpF,MACxCiE,EAAY,CACRC,UAAWgB,EAAkBpF,KAAK,WAClCqE,QAAS,SAACzD,GAAI,OAAKyE,EAAQE,QAAQ3E,EAAK,EACxC0D,KAAM,WAAF,OAAQe,EAAQG,QAAQ,IAGhCH,EAAQE,SAEhB,EAMAE,kBAAmB,SAASL,GACxBjH,EAAE,uCAAwCiH,GAAmBlF,IAAI,GACrE,E,6BCFJjF,EAAOD,QAbP,SAAgB0K,GAAiC,IAAdC,EAAOnI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1C,GAAiC,iBAAtBkI,EAAgC,EA7C/C,SAA0BE,GAAwB,IAAdD,EAAOnI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACvC8D,EAA4DqE,EAA5DrE,OAAQuE,EAAoDF,EAApDE,cAAeC,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,MAAOxE,EAAoBoE,EAApBpE,iBAC7CyE,YAAW,WACF1E,IACAsE,GAAYK,OAAOC,YAAc,GAGjCL,GACA1H,EAAE,QAAQS,SAAS,uBAGjB2C,IACFA,EAAmBpD,EAAE,eAGzBA,EAAEoD,GAAkB4E,QAChB,CAAEC,UAAWR,GAAY,GACzB,CACIE,SAAUA,GAAY,IACtBO,SAAU,WACFR,GACAG,YAAW,WACP7H,EAAE,QAAQK,YAAY,sBAC1B,GAAG,IAEX,GAGZ,GAAGuH,GAAS,EAChB,CAkBQO,CADeC,SAASb,GACGC,EAC/B,KAAO,CACH,IAAIa,EAAUd,GACRc,aAAmBC,SACrBD,EAAUrI,EAAEqI,IAtGxB,SAAyBA,GAAuB,IAAdb,EAAOnI,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpC8D,EAA2EqE,EAA3ErE,OAAQoF,EAAmEf,EAAnEe,OAAQlF,EAA2DmE,EAA3DnE,MAAOqE,EAAoDF,EAApDE,cAAeC,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,MAAOxE,EAAoBoE,EAApBpE,iBAC5DyE,YAAW,WACP,GAAIQ,GAAWA,EAAQ/I,OAAQ,CACvB+I,EAAQ/I,OAAS,IACjB+I,EAAUA,EAAQpF,GAAG,IAEzB,IAAIwE,EAAWY,EAAQE,SAASC,KAAO,EACjCf,IACFA,EAAWY,EAAQ/H,SAAShB,OAAS+I,EAAQ/H,SAASiI,SAASC,IAAM,GAGrErF,IACAsE,GAAYK,OAAOC,YAAc,GAGjCQ,IACAd,GAAsBc,GAGtBb,GACA1H,EAAE,QAAQS,SAAS,uBAGjB2C,IACFA,EAAmBpD,EAAE,eAGzBA,EAAEoD,GAAkB4E,QAChB,CAAEC,UAAWR,GACb,CACIE,SAAUA,GAAY,IACtBO,SAAU,WACNL,YAAW,WACHxE,GACAgF,EAAQhF,QAERqE,GACA1H,EAAE,QAAQK,YAAY,sBAE9B,GAAG,IACP,GAGZ,MACIL,EAAE,6BAA6BiD,GAAG,GAAGI,OAE7C,GAAGuE,GAAS,EAChB,CAwDQa,CAAgBJ,EAASb,EAC7B,CACJ,C,kCC3GA,IAAMkB,EAAgBzJ,EAAQ,GAAxByJ,YAON,SAASC,IAEL,OADU3I,EAAE,mBAAmByC,KAAK,MAExC,CAMA,SAASmG,IACL,MAAO,GACX,CAmKA,SAASC,EAAYC,EAAOC,EAAmBC,GAE3C,IAAIC,EAAoB,CAAC,SAEzBH,EAAMI,SAAQ,SAAUrH,GAChBoH,EAAkB9H,QAAQU,EAAKsH,KAAO,EAvJlD,SAA6BtH,EAAMkH,EAAmBC,GAClDnH,EAAKuH,OAAOF,SAAQ,SAAUG,GAC1B,IAAIC,EAAaP,EAAkB9I,KAAK,eAAiB4B,EAAKsH,GAAK,wBAC/DE,EAAUrL,MAAQ,MAEtB,GAAIqL,EAAUE,SAAU,CACpBD,EAAW7I,SAAS,aACpB6I,EAAW9I,SAAS,4BAA4BG,KAAKqI,EAAKQ,uBAM1DxJ,EAAE,sBACG6B,KAAK,MAAOwH,EAAUI,OAAOC,OAAO,GAAG5C,KACvCjF,KAAK,SAAsBwH,EAAUI,OAAOC,OAAO,GAAGC,YANvCC,KAAI,SAAC9C,EAAK+C,GACtB,OAAO/C,EAAM,IAAmB,KAAX+C,EAAM,GAAY,GAC3C,IAAG3I,KAAK,MAMZ,IAAI4I,EAAaR,EAAW5I,SAAS,kBACjCoJ,GACAA,EAAWzJ,YAAY,SAE/B,KAAO,CACHiJ,EAAWjJ,YAAY,aACvBiJ,EAAW9I,SAAS,4BAA4BuJ,QAChD,IAAID,EAAaR,EAAW5I,SAAS,kBACjCoJ,GACAA,EAAWrJ,SAAS,SAE5B,CAEA,GAAI4I,EAAUvC,IAAK,CAEf,IAAIA,EAAMuC,EAAUvC,IAChBkD,EAAiBlD,EAAI3F,QAAQ,UACjC,GAAI6I,EAAiB,EAAG,CACpB,IAAIC,EAAeD,EAAiB,EAChCE,EAAUpD,EAAIqD,UAAU,EAAGF,GAC3BG,EAAUtD,EAAIqD,UAAUF,GACxBI,EAASD,GAAWA,EAAQ9K,OAAS,EAAI8K,EAAQjJ,QAAQ,MAAQ,EACjEmJ,EAAa,GACbD,EAAS,IACTC,EAAaF,EAAQD,UAAUE,IAEnC,IAAIE,EAAWL,EAAUI,EACzBhB,EAAWzH,KAAK,WAAY0I,EAChC,MACIjB,EAAWzH,KAAK,WAAYwH,EAAUvC,IAE9C,MACIwC,EAAWkB,WAAW,YAI1BlB,EAAWjJ,YAAY,2BAEvBiJ,EAAW7I,SAAS4I,EAAUoB,WAAa,aAAe,eAE9D,GACJ,CA8FYC,CAAoB7I,EAAMkH,EAAmBC,GA7EzD,SAAgCnH,EAAMkH,GAClC,IAAI4B,EAAoB,eAAiB9I,EAAKsH,GAAK,KACnDtH,EAAKuH,OAAOF,SAAQ,SAAUG,GAC1B,IAAIC,EAAaP,EACZ9I,KAAK0K,EAAoB,sBAAwBtB,EAAUrL,MAAQ,MAUxE,GATAsL,EACKsB,KAAK,YAAY,GACjBvK,YAAY,aACZA,YAAY,mBAEZgJ,EAAUoB,aACXnB,EAAWsB,KAAK,YAAY,GAC5BtB,EAAW7I,SAAS,oBAEpB4I,EAAUE,SAAU,CACpB,IAAIsB,EAAgB7K,EAAE,sBAAsByC,KAAK,iBACjD,GAAIoI,GAA6C,IAA5BzC,SAASyC,IAAwB7K,EAAE,uBAAyBA,EAAE,sBAAsBU,YAAcV,EAAE,sBAAsBU,WAAWoK,QAAS,CAC/JxB,EAAW7G,KAAK,QAAS4G,EAAUvC,KACnCwC,EAAW7I,SAAS,aACpB,IAAIsK,EAAO/K,EAAE,4BAA4BV,OAAS,EAC5CU,EAAE,4BAA4BC,KAAK,kBAAkBU,OACrDX,EAAE,+BAA+BC,KAAK,kBAAkBU,OAE9DX,EAAE,yBAAyBS,SAAS,UACpCT,EAAE,0BAA0BK,YAAY,UACxCL,EAAE,0BAA0BW,KAAKoK,GAEjC/K,EAAE,gCAAgCS,SAAS,UAC3CT,EAAE,iCAAiCK,YAAY,UAC/CL,EAAE,iCAAiCW,KAAKoK,EAC5C,MACIzB,EAAW7I,SAAS,YAE5B,MACI6I,EAAW7G,KAAK,QAAS4G,EAAUvC,KAEvCwC,EAAWrJ,KAAK,4BAA4BQ,SAAS,UACrD6I,EAAWjJ,YAAY,kBACvBiJ,EAAW7I,SAAS,UACpB6I,EAAWhJ,SAASL,KAAK,0BAA0BQ,SAAS,UAExD4I,EAAU2B,eACV1B,EAAWrJ,KAAK,4BAA4BI,YAAY,UAExDgJ,EAAU4B,OACV3B,EAAWhJ,OAAO,sBAAsBD,YAAY,UAEpDiJ,EAAWhJ,OAAO,sBAAsBG,SAAS,UAGhD4I,EAAUoB,aACXnB,EAAWjJ,YAAY,UACvBiJ,EAAW7I,SAAS,kBACpB6I,EAAWhJ,SAASL,KAAK,0BAA0BI,YAAY,UAC/DiJ,EAAWhJ,SAASL,KAAK,0BAA0BK,SAASD,YAAY,WAGxEgJ,EAAU6B,qBACV5B,EAAWhJ,SAASL,KAAK,0BAA0BK,SAASG,SAAS,SAE7E,GACJ,CAkBY0K,CAAuBtJ,EAAMkH,EAErC,GACJ,CAuFA,SAASqC,EAAYrC,EAAmBsC,EAAW5D,GAC/C,IAAI6D,EAA0BvC,EAAkB9I,KAAK,kBAAkBA,KAAK,4CACxEsL,EAAmCxC,EAAkB9I,KAAK,qCAC1DuL,EAAkCzC,EAAkB9I,KAAK,oCACzDwL,EAAyB1C,EAAkB9I,KAAK,kBACpD,GAAIqL,EAAwBhM,OAAS,EACjC,GAAiB,aAAbmI,EACA6D,EAAwBI,YAAYL,OACjC,CACHtC,EAAkB9I,KAAK,oCAAoCmC,SAC3D,IAAIuJ,EAAe3L,EAAEqL,GAAWO,OAAO,qCACnCC,EAAc7L,EAAEqL,GAAWO,OAAO,oCACtC5L,EAAEyL,GAAwBK,OAAOD,GACjC7L,EAAE2L,GAAcI,YAAY,gBAChC,MACG,GAAIR,EAAiCjM,OAAS,GAAKkM,EAAgClM,OAAS,EAC/F,GAAiB,aAAbmI,EACAsB,EAAkB9I,KAAK,qCAAqCmC,SAC5D2G,EAAkB9I,KAAK,oCAAoCmC,SAC3DpC,EAAEyL,GAAwBO,QAAQX,OAC/B,CACCM,EAAe3L,EAAEqL,GAAWO,OAAO,qCACnCC,EAAc7L,EAAEqL,GAAWO,OAAO,oCACtCL,EAAiCG,YAAYC,GAC7CH,EAAgCE,YAAYG,EAChD,MAEA,GAAiB,aAAbpE,EACAzH,EAAEyL,GAAwBO,QAAQX,OAC/B,CACCM,EAAe3L,EAAEqL,GAAWO,OAAO,qCACnCC,EAAc7L,EAAEqL,GAAWO,OAAO,oCACtC5L,EAAEyL,GAAwBK,OAAOD,GACjC7L,EAAE2L,GAAcI,YAAY,gBAChC,CAER,CAmBA,SAASE,EAAsBC,EAAUnD,EAAmBoD,IACpDD,EAASE,QAAQC,qBACjBxD,EAAYqD,EAASE,QAAQC,oBAAqBtD,EAAmBmD,EAASI,WAG9EH,MAjHR,SAAsBI,EAAMxD,GAUxB,IATA,IAAMyD,EAAc,SAACC,EAAUC,GAC3B,OAAOD,EAAS7C,KAAI,SAAC9C,EAAK+C,GACtB,OAAO/C,EAAM,IAAuC,KAA/B+C,EAAM,EAAI6C,GAA4B,GAC/D,IAAGxL,KAAK,IACZ,EACIyL,EAAkB5D,EAAkB9I,KAAK,kBAIpClD,GADWwE,SAASqL,eAAe,kBAAkBC,UACjD,GAAG9P,EAAIwP,EAAKjN,OAAQvC,IAAK,CAClC,IAAI+P,EAAcH,EAAgB1M,KAAK,qBACnC8M,EAAcD,EAAYlP,IAAIb,GAC9BiQ,EAA2BT,EAAKxP,GAAG4M,YAAa1I,OAAO,EAAG,GAC1DgM,EAA4BV,EAAKxP,GAAG4M,YACxC,GAAIoD,EAAa,CACb,IACIG,GADAC,EAAWnN,EAAE+M,GAAa9M,KAAK,YACbA,KAAK,QACvBmN,EAAWD,EAASlN,KAAK,WACpBgD,GAAG,GAAGpB,KAAK,SAAU2K,EAAYQ,EAAyB,IACnEI,EAASnK,GAAG,GAAGpB,KAAK,SAAU2K,EAAYS,EAA0B,IACpEC,EAAOrL,KAAK,MAAO0K,EAAKxP,GAAG+J,KAC3BoG,EAAOrL,KAAK,MAAO0K,EAAKxP,GAAGsQ,IAAM,gBAAkBtQ,GAC/CmQ,EAAO9M,SAAS,aAChB8M,EAAO7M,YAAY,WAE3B,KAAO,CACH,IAII8M,EAEAC,EANAE,EAAaR,EAAYlP,IAAIb,EAAI,GACrCiD,EAAEsN,GAAYC,QAAQC,SAASb,GAE/BW,GADAR,EAAcH,EAAgB1M,KAAK,sBACVrC,IAAIb,GAEzBmQ,GADAC,EAAWnN,EAAEsN,GAAYrN,KAAK,YACZA,KAAK,QACvBmN,EAAWD,EAASlN,KAAK,WACpBgD,GAAG,GAAGpB,KAAK,SAAU2K,EAAYQ,EAAyB,IACnEI,EAASnK,GAAG,GAAGpB,KAAK,SAAU2K,EAAYS,EAA0B,IACpEC,EAAOrL,KAAK,MAAO0K,EAAKxP,GAAG+J,KAC3BoG,EAAOrL,KAAK,MAAO0K,EAAKxP,GAAGsQ,IAAM,gBAAkBtQ,GAC/CmQ,EAAO9M,SAAS,aAChB8M,EAAO7M,YAAY,WAE3B,CACJ,CACA,IAAIoN,EAAYd,EAAgB1M,KAAK,qBAAqBX,OAC1D,GAAIiN,EAAKjN,OAASmO,EAEd,IADA,IAAIC,EAAaf,EAAgB1M,KAAK,qBAC7B0N,EAAKF,EAAY,EAAIE,EAAKpB,EAAKjN,OAAS,EAAIqO,IAAK,CACtD,IAAIC,EAASF,EAAW9P,IAAI+P,GAC5B3N,EAAE4N,GAAQxL,QACd,CAER,CAiEQyL,CADuB3B,EAASE,QAAQ3C,OAAOqE,MAChB/E,GAC3BmD,EAASE,QAAQ2B,mBACb7B,EAASE,QAAQ4B,OAAOC,eAAiBjO,EAAE,iEAAiE6B,KAAK,QACjHuJ,EAAYrC,EAAmBmD,EAASE,QAAQ8B,uBAAwB,cAErEhC,EAASE,QAAQ+B,iBACpBjC,EAASE,QAAQgC,OAAOC,eAAiBrO,EAAE,2CAA2C6B,KAAK,QAC3FuJ,EAAYrC,EAAmBmD,EAASE,QAAQ8B,uBAAwB,aAG5EnF,EAAkB9I,KAAK,oCAAoCmC,SAC3D2G,EAAkB9I,KAAK,qCAAqCmC,SAC5D2G,EAAkB9I,KAAK,oCAAoCmC,YAK9CpC,EAAE,uBAAwB+I,GAAmBzJ,OAC5DU,EAAE,uBAAwB+I,GAC1B/I,EAAE,yBACO0L,YAAYQ,EAASE,QAAQkC,MAAMC,MAjKtD,SAA4BrC,EAAUnD,GAElC,IAAIyF,EAAoB,GACpBC,EAAuBvC,EAASE,QAAQsC,aAAaC,SACpDzC,EAASE,QAAQwC,aAGlBH,EAAqBvF,SAAQ,SAAUzH,GACnC+M,GAAqB,YAAc/M,EAAU,aACjD,IAJA+M,EAAoB,YAActC,EAASI,UAAUuC,oBAAsB,cAO/E7O,EAAE+I,GAAmBvH,QAAQ,6BAA8B,CACvD4K,QAASF,EAASE,QAClBrD,kBAAmBA,EACnBtH,QAAS+M,EACTlC,UAAWJ,EAASI,WAE5B,CAiJIwC,CAAmB5C,EAAUnD,GAG7B/I,EAAE,oFAAoFwB,QAAQ,0BAA2B,CACrH4K,QAASF,EAASE,QAASrD,kBAAmBA,IAC/CvH,QAAQ,uBAAwB0K,EAASE,QAChD,CASA,SAAS2C,EAAgBC,EAAkBjG,EAAmBoD,GACtD6C,IACAhP,EAAE,QAAQwB,QAAQ,gCACd,CAAEsF,IAAKkI,EAAkBC,UAAWlG,IAExC/I,EAAE6G,KAAK,CACHC,IAAKkI,EACLE,OAAQ,MACRhJ,QAAS,SAAUzD,GACf,GAAI0J,EAAiB,CACjB,IAAIgD,EAASnP,EAAE,gBAAgB+B,MACTgH,EAAkB9I,KAAK,kBAC7BA,KAAK,qBAAqBA,KAAK,kBAAkB4B,KAAK,SAAUsN,EACpF,CAGI1M,EAAK2J,QAAQgD,0BAA4BpP,EAAE,2BAA2BV,OACtEU,EAAE,2BAA2BK,YAAY,UACjCL,EAAE,2BAA2BI,SAAS,WAC9CJ,EAAE,2BAA2BS,SAAS,UAItCgC,EAAK2J,QAAQiD,MAAQrP,EAAE,mBAAmBV,OAC1CU,EAAE,mBAAmBK,YAAY,UACzBL,EAAE,mBAAmBI,SAAS,WACtCJ,EAAE,mBAAmBS,SAAS,UAI9BgC,EAAK2J,QAAQkD,KACbtP,EAAE,yBAA0B+I,GAAmBpI,KAAK8B,EAAK2J,QAAQkD,IAAIC,eACrEvP,EAAE,oBAAqB+I,GAAmBlH,KAAK,UAAU,KAEzD7B,EAAE,oBAAqB+I,GAAmBlH,KAAK,UAAU,GACzD7B,EAAE,yBAA0B+I,GAAmBpI,KAAK,KAExDsL,EAAsBxJ,EAAMsG,EAAmBoD,GAC/CnM,EAAE,QAAQwB,QAAQ,+BACd,CAAEiB,KAAMA,EAAMwM,UAAWlG,IAC7B/I,EAAEwP,UAAUC,MAChB,EACAlJ,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,IAGZ,CA8EA,SAASC,IACL,OAAO1P,EAAE,oBAAoB+B,KACjC,CAOA,SAAS4N,EAAqB7I,GACtBA,GACA9G,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,MACRhJ,QAAS,WACL,EAEJK,MAAO,WACH,GAIhB,CAEA,SAASqJ,EAAqBC,EAAcC,EAAKC,EAASC,EAAeC,EAAUC,EAAWC,EAASC,GACnG,IAAI3N,EAAO,CACPqN,IAAKA,EACLC,QAASA,EACTC,cAAeA,EACfC,SAAUA,GAEVI,EAAYrQ,EAAE,kBAAkB+B,MACpC,GAAI8N,EAAc,CACd7P,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAK+I,EACLX,OAAQ,OACRzM,KAAMA,EACNyD,QAAS,SAAUzD,GAGf,GADAzC,EAAEwP,UAAUC,OACK,MAAbS,EAAmB,CAInB,IACIK,EADAC,EAASV,EAEb,GAAIrN,EAAKgO,UACLF,EAAa9N,EAAKgO,eACf,GAAIJ,EACPE,EAAaF,OACV,GAAI5N,EAAKiO,aAAc,CAC1B,IAAI1P,EAAQwP,EAAOxP,MAAMyB,EAAKiO,cAC1B1P,IACAuP,EAAavP,EAAM,GAE3B,CACA,IAAMuP,EAAY,CACd,IAAII,EAAOH,EAAOI,YAAY,KACE,MAA5BJ,EAAOK,OAAOF,EAAO,KACrBA,GAAc,GAGdJ,GADU,IAAVI,EACaH,EAAOM,OAAO,EAAGH,GAEjBH,CAErB,CAGA,IAAIO,EAAiB,iFACjB3E,EAAUpM,EAAE+Q,EAAiBR,GAC7BvQ,EAAE,SAASyC,KAAK,YAAgE,IAAnDzC,EAAE,SAASyC,KAAK,UAAUtB,QAAQ,aAC3DiL,EAAQ9M,OAAS,IACjB8M,EAAUpM,EAAEA,EAAE+Q,EAAiBR,EAAa,gBAAkB9N,EAAKiO,aAAe,MAAM,KAG5FtE,EAAQ9M,QAAU,IAClB8M,EAAUpM,EAAE+Q,EAAiBP,IAE7BpE,EAAQ9M,QAAU,IAClB8M,EAAUpM,EAAE+Q,EAAiBP,EAAOrG,UAAU,EAAGqG,EAAOlR,OAAS,KAEjE8M,EAAQ9M,QAAU,IAClB8M,EAAUpM,EAAE+Q,EAAiBR,EAAa,MAG1CnE,EAAQ9M,OAAS,IAEb8M,EADAtE,OAAOkJ,UACGhR,EAAEoM,EAAQ,IACPpM,EAAEoM,EAAQ,KAG3BgE,GACAhE,EAAQvK,KAAK,cAAeuO,GAGhCpQ,EAAE,QAAQwB,QAAQ,0BAA2B4K,GAI7CpM,EAAE,wBAAwBW,KAAK8B,EAAKwO,sBAEpCf,EAAUzN,EACd,CACJ,EACA8D,MAAO,WACHvG,EAAEwP,UAAUC,OACG,MAAXU,GACAA,GAER,IAGJ,IAAIe,EAAelR,EAAE,8BAA8B+B,MAInDmP,EAAexI,EAAYwI,EAHX,CACZpB,IAAKA,IAGT9P,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKoK,EACLvP,KAAM,MACNwP,SAAU,OACVjL,QAAS,SAAUzD,GACfzC,EAAE,0BAA0B8L,OAAOrJ,EAAK2O,mBACxCpR,EAAEwP,UAAUC,MAChB,EACAlJ,MAAO,SAAU8K,GACTA,EAAIC,aAAaC,YACjBzJ,OAAO0J,SAASC,KAAOJ,EAAIC,aAAaC,YAExCvR,EAAEwP,UAAUC,MAEpB,GAER,CACJ,CAEA3S,EAAOD,QAAU,CACbkS,gBAAiBA,EAEjB2C,eAAgB,WACZ1R,EAAEuB,UAAUgC,GAAG,QAAS,8CAA8C,SAAUlB,GAI5E,GAFArC,EAAE,kCAAkC6B,KAAK,aAAc7B,EAAEP,MAAMoC,KAAK,8BAEhE7B,EAAEP,MAAMW,SAAS,iCA7LjC,SAA6B4O,GACzB,GAAIA,EAAkB,CAClB,IAAIlI,EAAM9G,EAAE,+BAA+ByC,KAAK,QAEhDzC,EAAE6G,KAAK,CACHC,IAAKkI,EACLE,OAAQ,MACRhJ,QAAS,SAAUzD,GACf,IACIkP,EAAM,CACN7B,IAFMrN,EAAK2J,QAAQwF,KAKvB5R,EAAE6G,KAAK,CACHC,IAAKA,EACLrE,KAAMkP,EACNzC,OAAQ,MACRhJ,QAAS,SAAUgG,GACXA,EAAS2F,WACT7R,EAAE,6BAA6BuO,KAAKrC,EAAS2F,UAErD,EACAtL,MAAO,WACP,IAKJvG,EAAEwP,UAAUC,MAChB,EACAlJ,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,CACJ,CA2JgBqC,CAAoB9R,EAAEP,MAAMoC,KAAK,iBAC9B,CAGH,GAFAQ,EAAEzC,iBACFI,EAAEuB,UAAUtB,KAAK,4BAA4BI,YAAY,YACrDL,EAAEP,MAAMoC,KAAK,YACb,OAEJ,IAAIkH,EAAoB/I,EAAEP,MAAMwC,QAAQ,aACnC8G,EAAkBzJ,SACnByJ,EAAoB/I,EAAEP,MAAMwC,QAAQ,oBAExC8M,EAAgB/O,EAAEP,MAAMoC,KAAK,YAAakH,GAAmB,GAE7D/I,EAAE,yBAAyBK,YAAY,UACvCL,EAAE,0BAA0BS,SAAS,UACrCT,EAAE,0BAA0BW,KAAK,IAEjCX,EAAE,gCAAgCK,YAAY,UAC9CL,EAAE,iCAAiCS,SAAS,UAC5CT,EAAE,iCAAiCW,KAAK,IAExC,IAAIoR,EAAc/R,EAAEP,MAAMgD,KAAK,cAC3BuP,EAAahS,EAAEuB,UAAUtB,KAAK,cAAc8B,MAC5CkQ,EAASjS,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,UAEpDyP,EAAMF,EAAaD,EADR/R,EAAEuB,UAAUtB,KAAK,6BAA6BwC,KAAK,cAElEzC,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,aAAcwP,EAASC,EAAIC,cAC1E,CACJ,GACJ,EAEAC,mBAAoB,WAChBpS,EAAEuB,UAAUgC,GAAG,QAAS,2EAA2E,SAAUlB,GAIzG,GAHAyF,OAAOuK,SAAS,EAAG,GACnBhQ,EAAEzC,kBAEEI,EAAEP,MAAMoC,KAAK,YAAjB,CAGA,IAAIkH,EAAoB/I,EAAEP,MAAMwC,QAAQ,aACnC8G,EAAkBzJ,SACnByJ,EAAoB/I,EAAEP,MAAMwC,QAAQ,oBAExC8M,EAAgB/O,EAAEP,MAAMoC,KAAK,YAAakH,GAAmB,GAE7D/I,EAAE,yBAAyBK,YAAY,UACvCL,EAAE,0BAA0BS,SAAS,UACrCT,EAAE,0BAA0BW,KAAK,IAEjCX,EAAE,gCAAgCK,YAAY,UAC9CL,EAAE,iCAAiCS,SAAS,UAC5CT,EAAE,iCAAiCW,KAAK,IAExC,IAAIoR,EAAc/R,EAAEP,MAAMgD,KAAK,cAC3BuP,EAAahS,EAAEuB,UAAUtB,KAAK,cAAc8B,MAC5CkQ,EAASjS,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,UAEpDyP,EAAMF,EAAaD,EADR/R,EAAEuB,UAAUtB,KAAK,6BAA6BwC,KAAK,cAElEzC,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,aAAcwP,EAASC,EAAIC,cApBtE,CAqBJ,GACJ,EAEAG,gBAAiB,WACbtS,EAAEuB,UAAUgC,GAAG,QAAS,mBAAmB,SAAUlB,GACjDA,EAAEzC,iBACF,IA1RqBoP,EA0RjBjG,EAAoB/I,EAAEP,MAAMwC,QAAQ,aAIxC,GAHK8G,EAAkBzJ,SACnByJ,EAAoB/I,EAAEP,MAAMwC,QAAQ,oBAEpCjC,EAAEP,MAAMwC,QAAQ,kCAAkC7B,SAAS,8BAA+B,EA9RzE4O,EA+ROhP,EAAEqC,EAAE6C,eAAezC,KAAK,WA7RxDzC,EAAE6G,KAAK,CACHC,IAAKkI,EACLE,OAAQ,MACRhJ,QAAS,SAAUzD,GACfzC,EAAE,2BAA2ByC,KAAK,MAAOA,EAAK2J,QAAQjD,IACtDnJ,EAAE,sBAAsByC,KAAK,YAAcA,EAAK2J,QAAQwC,eAAiBnM,EAAK2J,QAAQmG,WAEtFvS,EAAEwP,UAAUC,OAEZzP,EAAE,QAAQwB,QAAQ,iCACtB,EACA+E,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,IAiRIzP,EAAE,mBAAmBC,KAAK,sBAAsBI,YAAY,aAC5DL,EAAE,mBAAmBC,KAAK,mBAAmBI,YAAY,aACzDL,EAAEP,MAAMgB,SAAS,aACjBT,EAAEP,MAAMa,SAASG,SAAS,aAC1B,IAAIsK,EAAO/K,EAAEP,MAAMiB,SAAS,kBAAkBC,OAC1C6R,EAAWxS,EAAEP,MAAMgD,KAAK,cAC5BzC,EAAE,qBAAqB+B,IAAIyQ,GAC3BxS,EAAE,6BAA6B+B,IAAIyQ,GACnCxS,EAAE,gCAAgC+B,IAAIyQ,GAEtCxS,EAAE,yBAAyBS,SAAS,UACpCT,EAAE,0BAA0BK,YAAY,UACxCL,EAAE,0BAA0BW,KAAKoK,GAEjC/K,EAAE,gCAAgCS,SAAS,UAC3CT,EAAE,iCAAiCK,YAAY,UAC/CL,EAAE,iCAAiCW,KAAKoK,GACxC/K,EAAE,0BAA0BE,MAAK,SAACuS,EAAMnN,GACpC,IAAIoN,EAAM1S,EAAEsF,GACZoN,EAAIrS,YAAY,WAChBL,EAAE0S,EAAIjQ,KAAK,WAAWpC,YAAY,UACtC,GAGJ,KAAO,CACH0O,EAAgB/O,EAAEqC,EAAE6C,eAAezC,KAAK,SAAUsG,GAAmB,GACrE,IAAIgC,EAAO/K,EAAEP,MAAMiB,SAAS,kBAAkBC,OAC1C6R,EAAWxS,EAAEP,MAAMgD,KAAK,cAC5BzC,EAAE,qBAAqB+B,IAAIyQ,GAC3BxS,EAAE,6BAA6B+B,IAAIyQ,GACnCxS,EAAE,gCAAgC+B,IAAIyQ,GAEtCxS,EAAE,yBAAyBS,SAAS,UACpCT,EAAE,0BAA0BK,YAAY,UACxCL,EAAE,0BAA0BW,KAAKoK,GAEjC/K,EAAE,gCAAgCS,SAAS,UAC3CT,EAAE,iCAAiCK,YAAY,UAC/CL,EAAE,iCAAiCW,KAAKoK,GAExC,IAAIgH,EAAc/R,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAClEuP,EAAahS,EAAEuB,UAAUtB,KAAK,cAAc8B,MAC5CkQ,EAASjS,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,UACpDyP,EAAMF,EAAaD,EAAcS,EACrCxS,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,aAAcwP,EAASC,EAAIC,cAC1E,CACJ,GACJ,EAEAQ,iBAAkB,SAAUrR,GACxB,IAAIuO,EACAC,EACAC,EAEJ/P,EAAE,QAAQwB,QAAQ,0BAA2BF,IAE7CwO,EAAMnH,EAAY3I,EAAEsB,OAEhBwO,EAAM9P,EAAEsB,GAAQmB,KAAK,QAEzBoN,EAAeH,IACf,IAAIM,EAAgB,GAChBC,GAA+BjQ,EAAEsB,GAhwBlC,KAiwBCa,EAAO,CACP2N,IAAKA,EACLC,QAASA,EACTC,cAAeA,EACfC,SAAUA,GAEV2C,EAA2B,GAC/B,GAAI9K,OAAO+K,UAAY7S,EAAEsB,GAAQW,QAAQ,iBAAiB3C,OAAQ,CAC9D,IAAIwT,EAAc9S,EAAEsB,GAAQW,QAAQ,iBAAiB7B,SAAS,qBAC1D0S,IACAF,EAA2B,wBAE/B,IAAIG,EAAgB/S,EAAEsB,GAAQlB,SAAS,wBACnC2S,IACAH,EAA2B,uBAC3B5S,EAAEsB,GAAQjB,YAAY,yBAErB0S,GAAkBD,IACnBF,EAA2B,oBAEnC,MACIA,EAA2B5S,EAAEsB,GAAQO,KAAK,eAG9C7B,EAAEsB,GAAQE,QAAQ,0BAA2BW,GAE7CyN,EAAqBC,EAAcC,EAAKC,EAASC,EAAeC,GAAU,SAAU+C,GAChFrD,EAAqBqD,EAAQC,cAC7BjT,EAAE,QAAQwB,QAAQ,yBAA0BwR,EAChD,IAAG,WACC,GACDJ,EACP,EAEAM,qBAAsB,SAAS5R,GAC3B,IAEIyO,EADAD,EAAM9P,EAAE,2BAA2ByC,KAAK,OAIxCuN,EAAgB,GAQpBJ,EATeF,IASoBI,EAAKC,EAASC,EAPlC,GAO2D,SAAUgD,GAChFrD,EAAqBqD,EAAQC,cAC7BjT,EAAE,QAAQwB,QAAQ,yBAA0BwR,EAChD,IAAG,WACC,GACDhT,EAAEsB,GAAQO,KAAK,eACtB,EAEAsR,UAAW,WACP,IAAIlV,EAAIwB,KACRO,EAAEuB,UAAUgC,GAAG,QAAS,iDAAiD,WACrE,GAAIvD,EAAEP,MAAMW,SAAS,8BAA+B,CAChD,IAEI2P,EADAD,EAAM9P,EAAE,2BAA2ByC,KAAK,OAIxCuN,EAAgB,GAQpBJ,EATeF,IASoBI,EAAKC,EAASC,EAPlC,GAO2D,SAAUgD,GAChFrD,EAAqBqD,EAAQC,cAC7BjT,EAAE,QAAQwB,QAAQ,yBAA0BwR,EAChD,IAAG,WACC,GACDhT,EAAEsB,QAAQO,KAAK,eACtB,MACI5D,EAAE0U,iBAAiBlT,KAE3B,GACJ,EAEAkJ,YAAaA,EACbC,oBAAqBA,EACrB+G,qBAAsBA,EACtBC,qBAAsBA,E,6BC32Bb,SAAAwD,EAAA5V,GAAA,OAAA4V,EAAA,mBAAAtV,QAAA,iBAAAA,OAAAuV,SAAA,SAAA7V,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAM,QAAAN,EAAA8V,cAAAxV,QAAAN,IAAAM,OAAAa,UAAA,gBAAAnB,CAAA,EAAA4V,EAAA5V,EAAA,CAEbV,EAAOD,QAAU,SAAU0W,GACA,mBAAZA,EACPA,IAC0B,WAAnBH,EAAOG,IACd9V,OAAO+V,KAAKD,GAASrK,SAAQ,SAAU5K,GACP,mBAAjBiV,EAAQjV,IACfiV,EAAQjV,IAEhB,GAER,C,mCCVA,IAAImV,EAAiBxU,EAAQ,GAE7Be,EAAEuB,UAAUmS,OAAM,WACdD,EAAexU,EAAQ,KACvBwU,EAAexU,EAAQ,KACvBwU,EAAexU,EAAQ,KACvBwU,EAAexU,EAAQ,KACvBwU,EAAexU,EAAQ,KAEvBwU,EAAexU,EAAQ,KAEvBwU,EAAexU,EAAQ,IAC3B,IAIe,IAFQ6I,OAAO6L,kBAAoB7L,OAAO8L,yBAErB,SAASC,GACzC,IAAK,IAAI9W,EAAI,EAAGA,EAAI8W,EAAUvU,OAAQvC,IAClC,GAAI8W,EAAU9W,GAAGuE,OAAOwS,UAAUC,WAAWC,SAAS,qBAAsB,CACxE,IAAIC,EAAcjU,EAAE,0BAA0BkU,SAC1CpM,OAAO+K,UACP7S,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQH,EAAc,GACtBI,MAAO,SAEPrU,EAAE,+BAA+BO,GAAG,aACpCP,EAAE,qDAAqDmU,IAAI,UAAW,UAEnErM,OAAOwM,UAAYtU,EAAE,0BAA0BI,SAAS,YAKxD0H,OAAOkJ,WAAahR,EAAE,0BAA0BI,SAAS,aAJhEJ,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQH,EAAc,GACtBI,MAAO,QAQnB,CAGJ,IAAStX,EAAI,EAAGA,EAAI8W,EAAUvU,OAAQvC,IAClC,GAAI8W,EAAU9W,GAAGuE,OAAOwS,UAAUC,WAAWC,SAAS,qBAAsB,CACpEC,EAAcjU,EAAE,sBAAsBkU,SACtClU,EAAE,6BAA6BV,OAAS,IACxC2U,EAAcjU,EAAE,8BAA8BkU,UAE9CpM,OAAO+K,WAEP7S,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQH,EACRI,MAAO,SAENrU,EAAE,wBAAwBI,SAAS,WACpCJ,EAAE,qDAAqDmU,IAAI,CACvDI,QAAS,OACTC,WAAY,WAGfxU,EAAE,uBAAuBI,SAAS,WACnCJ,EAAE,qDAAqDmU,IAAI,CACvDI,QAAS,OACTC,WAAY,WAI5B,CAER,IACSC,QAAQlT,SAAU,CACvBmT,SAAS,EACTC,YAAY,G,8BCxEhB7X,EAAOD,QAAU,WAGjBmD,EAAEuB,UAAUgC,GAAG,QAAS,qDAAqD,SAAUlB,GACnFA,EAAEzC,iBAEF,IAAIgV,EAAgB5U,EAAEP,MAAMgD,KAAK,MAC7BoS,EAAe,GACfC,EAAiB9U,EAAEP,MAAMgD,KAAK,aAElC,OAAQmS,GACR,IAAK,QACDC,EAAe,OACf,MAEJ,IAAK,YACDA,EAAe,MACf,MAEJ,QACIA,EAAe,QAInB,IAAIE,EAAeD,EAAe3K,UAAW2K,EAAe3K,UAAU,EAAG2K,EAAexV,QAAQ6B,QAAQ,KAAO,EAAI2T,EAAexV,QAE/HU,EAAEP,MAAMuD,QAAQ,gCAAgC1D,OAE/C0V,UAAU5T,KAAK,CACX,MAAS,eACT,cAAiB,YACjB,YAAe,QACf,WAAcwT,IAIlBI,UAAU5T,KAAK,CACX,MAAS,SACT,cAAiBwT,EACjB,aAAgBC,EAChB,aAAgBE,GAG5B,IAEA/U,EAAEuB,UAAUmS,OAAM,WACd,GAAI1T,EAAE,gCAAgCV,OAAO,CAEzC,IAAM2V,EAAW,IAAItB,kBAAiB,WAElC,IAAK3T,EAAE,+BAA+BV,OAAO,CACzC,IAAI2P,EAAYjP,EAAE,gCACd8G,EAAMmI,EAAUxM,KAAK,OACZwM,EAAUvO,SAAS,OACzBmB,KAAK,MAAOiF,GACnBmI,EAAUxO,SAAS,8BACnBwO,EAAU5O,YAAY,8BAC1B,CACJ,IAEA4U,EAASR,QAAQlT,SAASiF,cAAc,qBAAsB,CAC1DmO,YAAY,EACZO,gBAAiB,CAAC,WAGtBD,EAASR,QAAQlT,SAASiF,cAAc,4BAA6B,CACjEmO,YAAY,EACZO,gBAAiB,CAAC,WAGtBD,EAASR,QAAQlT,SAASiF,cAAc,qBAAsB,CAC1DmO,YAAY,EACZO,gBAAiB,CAAC,UAE1B,CACJ,GAEA,C,6BC/Ea,SAAA9B,EAAA5V,GAAA,OAAA4V,EAAA,mBAAAtV,QAAA,iBAAAA,OAAAuV,SAAA,SAAA7V,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAM,QAAAN,EAAA8V,cAAAxV,QAAAN,IAAAM,OAAAa,UAAA,gBAAAnB,CAAA,EAAA4V,EAAA5V,EAAA,UAAA2X,EAAA9S,EAAAxE,GAAA,QAAAI,EAAA,EAAAA,EAAAJ,EAAAyB,OAAArB,IAAA,KAAAT,EAAAK,EAAAI,GAAAT,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAA4X,cAAA,YAAA5X,MAAA6X,UAAA,GAAA5X,OAAAC,eAAA2E,EAAAiT,EAAA9X,EAAAc,KAAAd,EAAA,WAAA8X,EAAArX,GAAA,IAAAlB,EAAA,SAAAkB,EAAAJ,GAAA,aAAAuV,EAAAnV,OAAA,OAAAA,EAAA,IAAAoE,EAAApE,EAAAH,OAAAyX,aAAA,YAAAlT,EAAA,KAAAtF,EAAAsF,EAAAnF,KAAAe,EAAAJ,GAAA,wBAAAuV,EAAArW,GAAA,OAAAA,EAAA,UAAAyY,UAAA,kEAAA3X,EAAA4X,OAAAC,QAAAzX,EAAA,CAAA0X,CAAA1X,EAAA,0BAAAmV,EAAArW,OAAA,GAEb,IAAM6Y,EAAY,0DAElB9Y,EAAOD,QAAO,WAQT,OAZQwF,EAKT,SAAAwT,EAAaxN,EAASjJ,GAAmB,IAAX0W,EAAMzW,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAC,CAAC,GAL7B,SAAA0W,EAAAvX,GAAA,KAAAuX,aAAAvX,GAAA,UAAAgX,UAAA,qCAK8BQ,CAAA,KAAAH,GACnCpW,KAAKwW,MAAQ5N,EACb5I,KAAKyW,WAAazW,KAAK0W,aAAa5X,KAAKkB,MACzCA,KAAK2W,OAAQ,EACb3W,KAAK4W,2BAA6B,KAClC5W,KAAK6W,QAAU7Y,OAAO8Y,OAAO,CAAEC,OAAQ,KAAMC,QAAS,MAAQrX,GAC9DK,KAAKqW,OAASA,CAClB,EAZSjY,EAYR,EAAAS,IAAA,aAAAN,MAED,SAAYmB,GACR,IAAIuX,EAAiB1W,EAAEP,KAAKwW,OAAOhW,KAAK2V,GAAWe,UAAU/K,QAAO,SAACpN,GAAQ,OAAOA,EAAEoY,YAAc,IAC9FC,EAAmBH,EAAevV,QAAQI,SAASuV,eACrD3X,EAAM4X,UAAiC,IAArBF,IAClBH,EAAeA,EAAepX,OAAS,GAAG+D,QAC1ClE,EAAMS,mBAELT,EAAM4X,UAAYL,EAAepX,OAAS,GAAKuX,IAAqBH,EAAepX,OAAS,IAC7FoX,EAAe,GAAGrT,QAClBlE,EAAMS,iBAEd,GAAC,CAAAtB,IAAA,eAAAN,MAED,SAAamB,GACa,KAAlBA,EAAM6X,QACNvX,KAAKwX,QACoB,IAAlB9X,EAAM6X,SACbvX,KAAKyX,WAAW/X,EAExB,GAAC,CAAAb,IAAA,kBAAAN,MAED,WAAkB,IAAAmZ,EAAA,KAKdnX,EAAEP,KAAKwW,OAAOmB,IAAI,QAAS,YAJV,SAAC/U,GACdA,EAAExC,kBACFsX,EAAKF,OACT,EACiD1Y,KAAKkB,OACtD8B,SAAS8V,iBAAiB,UAAW5X,KAAKyW,WAC9C,GAAC,CAAA5X,IAAA,OAAAN,MAED,WACIyB,KAAK4W,2BAA6B9U,SAASuV,cAC3C,IAAIQ,EAAStX,EAAEP,KAAKwW,OACpBjW,EAAE,QAAQS,SAAS,cACnB6W,EAAOjX,YAAY,UAAUwB,KAAK,cAAe,SAMjDpC,KAAK8X,kBAEL,IAAItZ,EAAIwB,KACRoI,YAAW,WACPyP,EAAO7W,SAAS,WARK6W,EAAOrX,KAAK2V,GAAWe,UAAU/K,QAAO,SAACpN,GAAQ,OAAOA,EAAEoY,YAAc,IAC9E,GAAGvT,QASdpF,EAAEqY,QAAQE,QACVvY,EAAEqY,QAAQE,OAAOgB,MAAM,KAAMvZ,EAAEoB,UAEvC,GAAG,GAEHI,KAAK2W,OAAQ,CACjB,GAAC,CAAA9X,IAAA,QAAAN,MAED,WAAQ,IAAAyZ,EAAA,KACJ,GAAKhY,KAAK2W,OAGN3W,KAAK4W,2BAA4B,CACjC,IAAIiB,EAAStX,EAAEP,KAAKwW,OACpBqB,EAAOjX,YAAY,WACnBiX,EAAOF,IAAI,iBAAiB,WAClBE,EAAOlX,SAAS,aAClBkX,EAAO7W,SAAS,UAAUoB,KAAK,cAAe,QAC9C4V,EAAKrB,OAAQ,EACPpW,EAAEyX,EAAKpB,4BAA4B9V,GAAG,WACxCkX,EAAKpB,2BAA2BhT,QAG5C,IACI5D,KAAK6W,QAAQG,SACbhX,KAAK6W,QAAQG,QAAQe,MAAM,KAAMnY,WAErCW,EAAE,QAAQK,YAAY,cACtBkB,SAASmW,oBAAoB,UAAWjY,KAAKyW,WACjD,CACJ,GAAC,CAAA5X,IAAA,SAAAN,MAED,WACI,OAAOyB,KAAK2W,KAChB,IA9FSvY,GAAAsX,EAAA9S,EAAA1D,UAAAd,GAAAI,GAAAkX,EAAA9S,EAAApE,GAAAR,OAAAC,eAAA2E,EAAA,aAAAgT,UAAA,IAAAhT,EAAA,IAAAA,EAAAxE,EAAAI,CA8FR,CA1FS,E,8BCHd,SAAS0Z,IAIL,OAHA3X,EAAEuB,UAAUtB,KAAK,qBAAqBI,YAAY,UAC1CL,EAAEuB,UAAUtB,KAAK,8BAA8BiU,QAG3D,CAiGApX,EAAOD,QAAU,CACb+a,uBAhGJ,WACI,IAAI1D,EAAQ2D,EAAcC,EAAKC,EAC/B,GAAI/X,EAAEuB,UAAUtB,KAAK,qBAAqBX,OAAS,EAC/CyY,EAA2ExY,MAA7DS,EAAEuB,UAAUtB,KAAK,qBAAqBwC,KAAK,eAA8BzC,EAAEuB,UAAUtB,KAAK,0BAA0BwC,KAAK,eAAiB,IACxJoV,EAAeF,IACf3X,EAAE,qBAAqBE,MAAK,WACFF,EAAEP,MAERuY,MAAM,CAClBC,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAeN,EACfO,MAAO,IACPC,eAAgB,EAChBC,aAAc,EACdC,eAAe,EACfC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,UAAW,wGACXC,UAAW,0GAGf9Y,EAAE,mBAAmB6B,KAAK,aAAciG,OAAOiR,WAAWC,UAAUC,OACpEjZ,EAAE,mBAAmB6B,KAAK,aAAciG,OAAOiR,WAAWG,UAAUD,MACxE,IAEA/E,EAAS,EAELA,EADAlU,EAAE,QAAQI,SAAS,cAAgBJ,EAAE,QAAQI,SAAS,sBAC7C,GAEA,IAEb0X,EAAM1P,SAAS8L,EAAS2D,GACxB7X,EAAE,8DAA8DmU,IAAI,CAAE,aAAc2D,SACjF,GAAI9X,EAAEuB,UAAUtB,KAAK,0BAA0BX,OAAS,IAC3DyY,EAAgFxY,MAAlES,EAAEuB,UAAUtB,KAAK,0BAA0BwC,KAAK,eAA8BzC,EAAEuB,UAAUtB,KAAK,0BAA0BwC,KAAK,eAAiB,IAC7JoV,EAAeF,IACf3X,EAAE,0BAA0BE,MAAK,WAC7B,IAAIiZ,EAAkBnZ,EAAEP,MACnBO,EAAEP,MAAMW,SAAS,sBAClB+Y,EAAgBnB,MAAM,CAClBC,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAeN,EACfO,MAAO,IACPC,eAAgB,EAChBC,aAAc,EACdC,eAAe,EACfC,MAAM,EACNC,OAAO,EACPC,MAAM,EAGNC,UAAW,wGACXC,UAAW,0GAGnB9Y,EAAE,mBAAmB6B,KAAK,aAAciG,OAAOiR,WAAWC,UAAUC,OACpEjZ,EAAE,mBAAmB6B,KAAK,aAAciG,OAAOiR,WAAWG,UAAUD,MAExE,IAEAjZ,EAAE,0BAA0BuD,GAAG,gBAAgB,WAC3CvD,EAAEuB,UAAUtB,KAAK,mCAAmCI,YAAY,uBAAuB8T,IAAI,CAAC,QAAW,IAAK,WAAc,gBAC9H,IACAnU,EAAE,0BAA0BuD,GAAG,eAAe,WAC1CsE,YAAW,WACP7H,EAAEuB,UAAUtB,KAAK,mCAAmCQ,SAAS,uBAAuB0T,IAAI,CAAC,QAAW,IAAK,WAAc,gBAC3H,GAAG,GACP,IAGInU,EAAE,QAAQI,SAAS,cAAgBJ,EAAE,QAAQI,SAAS,cAAc,CACpE,IAAIgZ,EACEC,EAAiB,IAAIC,gBAAe,WACtC,IAAIC,EAAIvZ,EAAE,cAAckU,SACxBlU,EAAE,8DAA8DmU,IAAI,CAAE,aAAcoF,IAGhFH,GACAtR,OAAO0R,aAAaJ,GAExBA,EAAmBvR,YAAW,WAC1BwR,EAAeI,UAAUzZ,EAAE,qBAAqB,GACpD,GAAG,IACP,IACAqZ,EAAe5E,QAAQzU,EAAE,qBAAqB,GAClD,CAER,E,kCCrGA,IAAM6V,EAAQ5W,EAAQ,GAChBya,EAAoB1Z,EAAE,SAAS6B,KAAK,2BAE1C,GAA0B,OAAtB6X,EACA,IAAIrT,EAAiBpH,EAAQ,IAGjC,SAAS0a,EAAkBC,EAAWnX,GAClCmX,EAAU7P,QAAQwE,KAAK9L,EAAKoX,eAChC,CAIA,SAASC,IACL9Z,EAAE,qDAAqDmU,IAAI,CACvDI,QAAS,QACTC,WAAY,WAEpB,CAQA,SAASuF,IACL/Z,EAAE,iBAAiBga,eACnBha,EAAE,iBAAiBE,MAAK,WAIpB,IAAI+Y,EAHJjZ,EAAEP,MAAM0U,IAAI,CACRI,QAAS,SAKT0E,EADAxZ,KAAKwa,OAAO3a,OAAS,EACbG,KAAKwa,OAAO,GAAGC,UAEfla,EAAEP,MAAMwC,QAAQ,kBAAkBhC,KAAK,aAAasO,OAEhE,IAAI4L,EAAUna,EAAEP,MAAMe,SAAS,UAKf2Z,EAAQ3Z,SAAS,kBAAkBE,SAAS,UAClDmB,KAAK,aAAcoX,GAC7BkB,EAAQtY,KAAK,aAAcoX,GAC3BkB,EAAQtY,KAAK,OAAQ,YAAYA,KAAK,wBAAyB,IAC/D7B,EAAEP,MAAMua,aAAa,WAErBha,EAAEP,MAAMa,SAASL,KAAK,oBAAoB4B,KAAK,WAAY,IAC/D,IACA7B,EAAE,yBAAyBwK,WAAW,yBAEtC,IAAI4P,EAAUpa,EAAE,0BAA0BQ,SAAS,kBAAkBE,SAAS,UAAU8J,WAAW,yBAAyB5M,MACxHwc,GAEAA,EAAQlR,SAAQ,SAAS5H,GACN,IAAIqS,kBAAiB,SAASE,GACrCA,EAAUvU,QACVU,EAAEsB,GAAQkJ,WAAW,wBAI7B,IAMSiK,QAAQnT,EALJ,CACTqT,YAAY,GAKpB,IAIJ3U,EAAEuB,UAAUgC,GAAG,UAAW,0BAA0B,SAAClB,GACjD,GAAc,QAAVA,EAAE/D,IAAN,CACA,IAAI+b,EAAUra,EAAE,iBACZsa,EAAYta,EAAE,oBACdqa,EAAQxY,KAAK,cAAgByY,EAAUzY,KAAK,aAC5CwY,EAAQxY,KAAK,WAAY,IAJD,CAMhC,GACJ,CAEA,SAAS0Y,IAjELva,EAAE,qDAAqDmU,IAAI,CACvDI,QAAS,OACTC,WAAY,WAiEhBxU,EAAE,yEAAyEmU,IAAI,UAAW,KAC9F,CAEA,SAASqG,IACLxa,EAAE,yEAAyEmU,IAAI,UAAW,KAC1F2F,GACJ,CAEA,SAASW,IACLza,EAAE,yEAAyEmU,IAAI,UAAW,KAC9F,CAEArX,EAAOD,QAAU,CACb6d,mBAAoB,WAChB1a,EAAEuB,UAAUgC,GAAG,QAAS,oBAAoB,WACxC,IAAIpG,EAAI,IAAI0Y,EAAM,oBAAqB,CAAEW,OAAQ+D,EAAuB9D,QAAS+D,IAC7E1T,EAAM9G,EAAE,oBAAoByC,KAAK,cAEjCkY,EAAW,CAAEC,KAAM,mBAEG,OAAtBlB,GAA+BrT,EAAeU,oBAC9C4T,EAA6B,oBAAI,GAGrC3a,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAMkY,EACNzU,QAAS,SAAUzD,GACfzC,EAAE,iCAAiCuO,KAAK9L,GACxCsX,IACA/Z,EAAE,wBAAwBE,MAAK,YACM,IAA7BF,EAAEP,MAAMmL,KAAK,aAAyB5K,EAAEP,MAAMW,SAAS,oBACvDJ,EAAE,iBAAiBQ,WAAWP,KAAK,8BAA8BkU,IAAI,QAAS,UAEtF,IACAnU,EAAE,eAAe+B,IAAI/B,EAAE,oBAAoByC,KAAK,QAChD,IAAIoY,EAAc7a,EAAE,kDAChB6a,EAAYvb,QACZiC,SAASuZ,KAAKC,cAAc,IAAIC,YAAY,kBAAmB,CAACC,OAAQJ,KAE5E1d,EAAE+d,MACN,GAER,GACJ,EAEAC,qBAAsB,WAClBnb,EAAEuB,UAAUgC,GAAG,QAAS,oBAAoB,WACxC,IAAIuD,EAAM9G,EAAE,wBAAwByC,KAAK,UACrCN,EAAOnC,EAAE,gBACTob,EAAYpb,EAAE,eAAe+B,MAC7BsZ,EAAcrb,EAAE,iBAAiB+B,MAC/BuZ,EAAgBtb,EAAEub,WAExB,GAA0B,OAAtB7B,EAA4B,CAE5B,IAAIzS,EAAoBjH,EAAE,gCAAiCmC,GAC3DkE,EAAeW,WAAWC,EAAmBqU,EACjD,MACIA,EAAclU,UAGlBkU,EAAcE,MAAK,WACfrZ,EAAKqN,UAAUc,QACftQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAMN,EAAKsZ,YACXvV,QAAS,SAAUzD,GACXA,EAAKyD,QAEL8O,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,YACbC,WAAY,aAAeP,EAC3BQ,YAAaT,EACbU,YAAa,KAGjB9G,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,cACbC,WAAY,aAAeP,EAC3BQ,YAAaT,EACbU,YAAa,KAGrB3Z,EAAKqN,UAAUC,OACfkK,EAAkB3Z,EAAE,gBAAiByC,EAEzC,EACA8D,MAAO,SAAU9D,GACbN,EAAKqN,UAAUC,OACfkK,EAAkB3Z,EAAE,gBAAiByC,EAAK6O,cAE1C0D,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,cACbC,WAAY,aAAeP,EAC3BQ,YAAaT,EACbU,YAAa,IAGrB,GAER,GACJ,GACJ,EACAC,qBAAsB,WAClB,IACI9F,EAAQ,IAAIJ,EADE,yBACiB,CAAEW,OAAQ+D,EAAuB9D,QAAS+D,IAC7Exa,EAAEuB,UAAUgC,GAAG,QAAS,2BAA2B,WAC/C,IAAIkN,EAAYzQ,EAAEP,MAAMgD,KAAK,aACzBuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5DwZ,EAAWjc,EAAE,0BAA0BI,SAAS,UAAY,KAAOJ,EAAE,0BAA0BW,OAC/FsY,EAAqB,OAAbgD,EAAoBxL,EAAYuL,EAAQ,MAAQC,EAAWxL,EAAYuL,EACnF,GAAiB,OAAbC,EAAmB,CACnB,IAAIC,EAAgBlc,EAAEuB,UAAUtB,KAAK,yDAAyDwC,KAAK,cACnGzC,EAAE,6BAA6B+B,IAAIma,EACvC,CACA,IAAIC,EAAenc,EAAE,6BAA6B+B,MAClD,GAAqB,KAAjBoa,EAAqB,CACrBnc,EAAE,2BAA2BM,OAAO,sBAAsBD,YAAY,aAEtE,IADA,IAAI+b,EAAQpc,EAAE,2BACLjD,EAAI,EAAGA,EAAIqf,EAAM9c,OAAQvC,IAC1Bqf,EAAMrf,GAAGsf,QAAQhT,YAAc8S,GAC/BC,EAAMrf,GAAGuf,cAAcC,UAAUC,IAAI,aAG7Cxc,EAAE,4BAA4Byc,OAClC,MACIxG,EAAMiF,OAELlb,EAAE,yBAAyBI,SAAS,WACrCJ,EAAE,yBAAyBS,SAAS,UAExCT,EAAE,QAAQwB,QAAQ,6BAA8B,CAC5CrC,MAAO,eACPuc,cAAe,gBACfC,YAAa,aACbC,WAAY3C,GAEpB,IAEAjZ,EAAEuB,UAAUgC,GAAG,QAAS,2BAA2B,WAC/C0S,EAAMgB,OAEV,GACJ,EAEAyF,sBAAuB,WACnB1c,EAAEuB,UAAUgC,GAAG,QAAS,2BAA2B,WAC/C,IAAI4Y,EAAenc,EAAEP,MAAMgD,KAAK,cAChCzC,EAAE,6BAA6B+B,IAAIoa,GACnCnc,EAAE,2BAA2BM,OAAO,sBAAsBD,YAAY,aACtEL,EAAEP,MAAMa,OAAO,sBAAsBG,SAAS,aAC1CT,EAAE,yBAAyBI,SAAS,WACpCJ,EAAE,yBAAyBS,SAAS,UAExCT,EAAE,4BAA4Byc,OAClC,GACJ,EAEAE,kBAAmB,WAEf3c,EAAEuB,UAAUgC,GAAG,QAAS,4BAA4B,WAChD,GAAKvD,EAAE,0BAA0BI,SAAS,WAGtCwc,EAAanC,OAFb,IAAImC,EAAapC,EAIrB,IAAIvE,EAAQ,IAAIJ,EAPF,0BAOqB,CAAEW,OAAQ+D,EAAuB9D,QAASmG,IACzET,EAAenc,EAAE,6BAA6B+B,MAClD,GAAoB,IAAhBoa,EACAnc,EAAE,yBAAyBK,YAAY,cACpC,CACH,IAAIoQ,EAAYzQ,EAAE,4BAA4B6B,KAAK,kBAC/Cma,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5DwZ,EAAWjc,EAAE,uDAAuDC,KAAK,kBAAkBU,OAC3Fkc,GAAkB,EAC4B,IAA9C7c,EAAE,mCAAmC+B,QACrC8a,EAAkB7c,EAAE,mCAAmC+B,OAE3D,IAAI6P,EAAMnB,EAAYuL,EAAQG,EAC1BlD,EAAQxI,EAAYuL,EAAQ,MAAQC,EACpCnV,EAAM9G,EAAEP,MAAMgD,KAAK,OACvBzC,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAM,CACFmP,IAAKA,EACLiL,gBAAiBA,GAErB3W,QAAS,SAAUzD,GACfzC,EAAE,6BAA6BuO,KAAK9L,GACpCsX,IACA/Z,EAAE,+BAA+BE,MAAK,YACD,IAA7BF,EAAEP,MAAMmL,KAAK,aAAyB5K,EAAEP,MAAMW,SAAS,oBACvDJ,EAAE,wBAAwBQ,WAAWP,KAAK,8BAA8BkU,IAAI,QAAS,UAE7F,IACA8B,EAAMiF,OACNlb,EAAEwP,UAAUC,MAChB,EACAlJ,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,IAEJzP,EAAE,QAAQwB,QAAQ,6BAA8B,CAC5CrC,MAAO,eACPuc,cAAe,gBACfC,YAAa,gBACbC,WAAY3C,GAEpB,CACAjZ,EAAE,QAAQuD,GAAG,QAAS,4BAA4B,SAASlB,GACvDA,EAAEzC,iBACFqW,EAAMgB,OACV,GACJ,IAEAjX,EAAEuB,UAAUgC,GAAG,SAAU,wBAAwB,WAC7CvD,EAAEwP,UAAUc,QACZ,IAAIwM,EAAc9c,EAAE,wBAAwB+B,MAC5C/B,EAAE,mCAAmC+B,IAAI+a,GAGzC,IAEIlL,EAFY5R,EAAE,4BAA4B6B,KAAK,kBACvC7B,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAE5D0Z,EAAenc,EAAE,6BAA6B+B,MAE9CkX,EAAQrH,EAAM,MADH5R,EAAE,uDAAuDC,KAAK,kBAAkBU,OAE/FiR,GAAYuK,EACZ,IAAIrV,EAAM9G,EAAEP,MAAMgD,KAAK,OACvBzC,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAM,CACFmP,IAAKA,EACLiL,gBAAiBC,GAErB5W,QAAS,SAAUzD,GACfzC,EAAE,6BAA6BuO,KAAK9L,GACpCsX,IACA/Z,EAAE,+BAA+BE,MAAK,YACD,IAA7BF,EAAEP,MAAMmL,KAAK,aAAyB5K,EAAEP,MAAMW,SAAS,oBACvDJ,EAAE,wBAAwBQ,WAAWP,KAAK,8BAA8BkU,IAAI,QAAS,UAE7F,IACAnU,EAAE,wBAAwBga,aAAa,WACvChF,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,iBACbC,WAAY3C,IAEhBjZ,EAAEwP,UAAUC,MAChB,EACAlJ,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,GAEJ,EAEAsN,mBAAoB,WAChB/c,EAAEuB,UAAUgC,GAAG,QAAS,2BAA2B,WAC/C,IAAIyZ,EAAYhd,EAAEP,MAAMgD,KAAK,eACzBwa,EAAajd,EAAEP,MAAMgD,KAAK,gBAC1Bya,EAAald,EAAEP,MAAMgD,KAAK,kBAE1BwW,EAAQ+D,EAAY,MAAQC,EAC5BE,EAFend,EAAEP,MAAMgD,KAAK,oBAEF,MAAQya,EACtClI,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAY3C,EACZmE,aAAcD,GAEtB,GACJ,EAEAE,yBAA0B,WACtBrd,EAAEuB,UAAUgC,GAAG,QAAS,qCAAqC,WACzD,IAAIyZ,EAAYhd,EAAEP,MAAMgD,KAAK,eACzBwa,EAAajd,EAAEP,MAAMgD,KAAK,gBAC1Bya,EAAald,EAAEP,MAAMgD,KAAK,kBAE1BwW,EAAQ+D,EAAY,MAAQC,EAC5BE,EAFend,EAAEP,MAAMgD,KAAK,oBAEF,MAAQya,EACtClI,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,uBACbC,WAAY3C,EACZmE,aAAcD,IAElBnI,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,oBACfC,YAAa,mBACbC,WAAYra,SAASiQ,SAASC,KAC9B2L,aAAcD,GAEtB,GACJ,EAEAG,mBAAoB,WAChBtd,EAAEuB,UAAUgC,GAAG,SAAU,2BAA2B,WAChD,IAAIuD,EAAM9G,EAAE,yBAAyByC,KAAK,cACtCqa,EAAc9c,EAAE,2BAA2B+B,MAC/C/B,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,MACRzM,KAAM,CACFqa,YAAaA,EACblC,KAAM,mBAEV1U,QAAS,SAAUzD,GACfzC,EAAEwP,UAAUC,OArZhC,SAA4BhN,GACxBzC,EAAE,yBAAyB+J,QAAQwE,KAAK9L,EAAK8a,iBACjD,CAoZoBD,CAAmB7a,GACnBsX,IACA/Z,EAAE,2BAA2Bwd,QACjC,GAER,GACJ,EACAC,mBAAoB,WAChBzd,EAAEuB,UAAUgC,GAAG,SAAU,uBAAuB,WACxCvD,EAAE,uBAAuB4K,KAAK,WAC9B5K,EAAE,gCAAgC6B,KAAK,QAAS,4BAC7C7B,EAAE,gCAAgC6B,KAAK,QAAS,iBAC3D,GACJ,EACA6b,uBAAwB,WACpB1d,EAAEuB,UAAUgC,GAAG,QAAS,sBAAsB,WAC1C,IAAIuD,EAAM9G,EAAE,wBAAwByC,KAAK,UACrCN,EAAOnC,EAAE,gBACTob,EAAYpb,EAAE,iBAAiB+B,MAC/B4b,EAAiB3d,EAAE,qCAAqCW,OACxDid,EAAmB5d,EAAE,yBAAyB+B,MAClD6b,EAAmBD,EAAiB,IAAMC,EAAiBC,QAAQ,KAAM,KACzE1b,EAAKqN,UAAUc,QACftQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAMN,EAAKsZ,YACXvV,QAAS,SAAUzD,GACXA,EAAKyD,QAEL8O,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,YACbC,WAAY,+BACZC,YAAaT,EACbU,YAAa8B,IAGjB5I,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,cACbC,WAAY,+BACZC,YAAaT,EACbU,YAAa8B,IAGrBzb,EAAKqN,UAAUC,OACfkK,EAAkB3Z,EAAE,gBAAiByC,EACzC,EACA8D,MAAO,WAEHyO,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,cACbC,WAAY,+BACZC,YAAaT,EACbU,YAAa8B,GAGrB,GAER,GACJ,EACAE,sBAAuB,WACnB9d,EAAEuB,UAAUgC,GAAG,QAAS,yBAAyB,WAC7C,IAMIpG,EANA2J,EAAM9G,EAAEP,MAAMgD,KAAK,UACnBsb,GAAS,EACG,qBAAZte,KAAK0J,KACL4U,GAAS,GAKT5gB,EAAI,IAAI0Y,EAAM,yBADdkI,EACwC,CAAEvH,OAAQ+D,EAAuB9D,QAAS+D,GAI1C,CAAEhE,OAAQ+D,EAAuB9D,QAASqD,IAGtF,IAAIa,EAAW,CAAEC,KAAM,oBAEG,OAAtBlB,GAA+BrT,EAAeU,oBAC9C4T,EAA6B,oBAAI,GAGrC3a,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAMkY,EACNzU,QAAS,SAAUzD,GACfzC,EAAEwP,UAAUC,OACZzP,EAAE,oCAAoCuO,KAAK9L,GAC3CzC,EAAE,2BAA2B+B,IAAI/B,EAAE,oBAAoByC,KAAK,QAC5DsX,IACA/Z,EAAE,oCAAoCE,MAAK,YACN,IAA7BF,EAAEP,MAAMmL,KAAK,aAAyB5K,EAAEP,MAAMW,SAAS,oBACvDJ,EAAE,6BAA6BQ,WAAWP,KAAK,8BAA8BkU,IAAI,QAAS,UAElG,IACAnU,EAAE,8CAA8C6B,KAAK,CACjD,gBAAiB,OACjB,mBAAoB,4BAExB,IAAIgZ,EAAc7a,EAAE,iEAChB6a,EAAYvb,QACZiC,SAASuZ,KAAKC,cAAc,IAAIC,YAAY,kBAAmB,CAACC,OAAQJ,KAE5E1d,EAAE+d,MACN,EACA3U,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,GACJ,EAEAuO,wBAAyB,WACrBhe,EAAEuB,UAAUgC,GAAG,QAAS,wBAAwB,WAC5C,IAAIuD,EAAM9G,EAAE,wBAAwByC,KAAK,UACrCN,EAAOnC,EAAE,sBACTob,EAAYpb,EAAE,2BAA2B+B,MAG7C,KAFoB/B,EAAE,uBAAuB+B,MAClBzC,OAAS,GACvB,CACT,IAAMgc,EAAgBtb,EAAEub,WACxB,GAA0B,OAAtB7B,EAA4B,CAE5B,IAAIzS,EAAoBjH,EAAE,gCAAiCmC,GAC3DkE,EAAeW,WAAWC,EAAmBqU,EACjD,MACIA,EAAclU,UAGlBkU,EAAcE,MAAK,WACfrZ,EAAKqN,UAAUc,QACftQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAMN,EAAKsZ,YACXvV,QAAS,SAAUzD,GACXA,EAAKyD,QAEL8O,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,YACbC,WAAY,iBACZC,YAAaT,EACbU,YAAa,KAGjB9G,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,cACbC,WAAY,iBACZC,YAAaT,EACbU,YAAa,KAGrB3Z,EAAKqN,UAAUC,OACfkK,EAAkB3Z,EAAE,sBAAuByC,EAC/C,EACA8D,MAAO,SAAU9D,GACbN,EAAKqN,UAAUC,OACfkK,EAAkB3Z,EAAE,sBAAuByC,EAAK6O,cAChD0D,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,mBACfC,YAAa,cACbC,WAAY,iBACZC,YAAaT,EACbU,YAAa,IAErB,GAER,GACJ,CACJ,GACJ,E,kCCxlBJ,IAAImC,EAAOhf,EAAQ,IACb4W,EAAQ5W,EAAQ,GAElBif,GADSjf,EAAQ,KACG,GA0BlBkf,EAAa,SAAC9V,GAChB,IAAM+V,EAAc/V,EAAQgU,QAAQ/a,OACpCtB,EAAEoe,GAAa/d,YAAY,WAAWge,IAAI,SAC1Cre,EAAEqI,GAAShI,YAAY,6BAA6BA,YAAY,WAChEyZ,GACJ,EAEMwE,EAAsB,WAEpBxW,OAAO+K,UACP7S,EAAE,0DAA0DmU,IAAI,UAAW,KAC3EnU,EAAE,mBAAmBK,YAAY,WACjCyZ,KAGe,SADF9Z,EAAE,wBAAwB+B,OAEnC/B,EAAE,sBAAsBue,YAAY,WACpCve,EAAE,0DAA0DmU,IAAI,UAAW,MAE3EnU,EAAE,QAAQS,SAAS,cAG3B,IAAI+d,EAAsBxe,EAAE,yBAAyByC,KAAK,YAClB,OAAxB+b,GAAwD,cAAxBA,GAE5Ctc,EAAUlC,EAAE,iCAEhBye,GACJ,EACMC,EAAqB,WAEvB,GAAI5W,OAAO+K,SAAU,CACjB,IAAI8L,EAAM3e,EAAE,8BAA8BC,KAAK,mDAE3C2e,EADe,GAEnB,GAAI5e,EAAE,uBAAuBV,OAAS,EAGlCsf,GAFmB5e,EAAE,uBAAuBM,OAAO,OACnB4T,SAGpCyK,EAAIxK,IAAI,cAAeyK,EAAY,KACvC,KAAO,CAEY,SADF5e,EAAE,wBAAwB+B,OAEnC/B,EAAE,sBAAsBue,YAAY,UAE5C,CACAve,EAAE,0DAA0DmU,IAAI,UAAW,KAC/E,EAEM0K,EAAgBtd,SAASud,qBAAqB,UAAU,GACxDC,EAAiBxd,SAASyd,gBAAgBC,aAEhD,SAASC,EAAiBtF,EAAWnX,GACjCmX,EAAU7P,QAAQwE,KAAK9L,EAAKoX,eAChC,CAEA,SAAS4E,IACLze,EAAE,gCAAgCwd,SAClCxd,EAAE,gCAAgCmf,SACtC,CAEA,SAASjd,EAAUC,GACfnC,EAAEmC,GAAMlC,KAAK,sBAAsBI,YAAY,YAC/CL,EAAEmC,GAAMlC,KAAK,wBAAwBS,SAAS,oBAAoBC,KAAK,IACvEX,EAAEmC,GAAMlC,KAAK,sCAAsC8B,IAAI,IACvD/B,EAAEmC,GAAMlC,KAAK,qCAAqC8B,IAAI,IACtD/B,EAAEmC,GAAMlC,KAAK,kCAAkC8B,IAAI,IACnD/B,EAAE,yBAAyBga,aAAa,MAAO,IAE/Cha,EAAE,SAAUmC,GAAMC,QACtB,CA4CA,SAAS0X,IACL9Z,EAAE,eAAemU,IAAI,CACjBI,QAAS,QACTC,WAAY,WAEpB,CACA,SAAS4K,IACLpf,EAAE,eAAemU,IAAI,CACjBI,QAAS,OACTC,WAAY,UAEpB,CACA,SAAS6K,IACL,IAAIpL,EAAcjU,EAAE,0BAA0BkU,SAC1CpM,OAAO+K,SACP7S,EAAE,eAAemU,IAAI,CACjBC,OAAQH,EAAc,GACtBI,MAAO,UAEJvM,OAAOwM,SACdtU,EAAE,eAAemU,IAAI,CACjBC,OAAQH,EAAc,GACtBI,MAAO,SAQnB,CAEA,SAASkG,IACL6E,IACApf,EAAE,0DAA0DmU,IAAI,UAAW,KAC/E,CAEA,SAASmL,IACLtf,EAAE,0DAA0DmU,IAAI,UAAW,KAC/E,CAEA,SAASqG,IACLxa,EAAE,0DAA0DmU,IAAI,UAAW,KAC3EnU,EAAE,mBAAmBK,YAAY,WACjC,IAAIme,EAAsBxe,EAAE,yBAAyByC,KAAK,YAClB,OAAxB+b,GAAwD,cAAxBA,GAE5Ctc,EAAUlC,EAAE,iCAEhBye,IACA3E,GACJ,CA4BA,SAASyF,IACL,IAAI3N,EAAM5R,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,OAClDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5DqE,EAAM9G,EAAE,uCAAuCyC,KAAK,cACnDzC,EAAE,mBAAmBI,SAAS,0BAC/BJ,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,MACRzM,KAAM,CACFmP,IAAKA,EACLoK,MAAOA,GAEX9V,QAAS,SAAUzD,GACf,IAAK,IAAI1F,EAAI,EAAGA,EAAI0F,EAAK+c,UAAUlgB,OAAQvC,IAAK,CAC5C,IAAIuI,EAAK7C,EAAK+c,UAAUziB,GACpB0iB,EAAQzf,EAAEuB,UAAUtB,KAAK,iBAAmBqF,EAAGtH,OAC/C0hB,EAAe1f,EAAEuB,UAAUtB,KAAK,wBAA0BqF,EAAGtH,OAC7DsH,EAAGmF,YACHgV,EAAMpf,YAAY,SAASA,YAAY,YAAYI,SAAS,UAC5Dgf,EAAMpf,YAAY,mBAClBof,EAAMjV,WAAW,YACjBiV,EAAMnf,SAASD,YAAY,mBACvBiF,EAAG0F,eACHyU,EAAMxf,KAAK,4BAA4BI,YAAY,UAEvDqf,EAAajf,SAAS,UACtBif,EAAapf,SAASG,SAAS,WACvB6E,EAAGmF,WAUJgV,EAAMrf,SAAS,WAAakF,EAAGmF,aACtCnF,EAAG0F,cAAgByU,EAAMxf,KAAK,4BAA4BI,YAAY,UAAYof,EAAMxf,KAAK,4BAA4BQ,SAAS,YAVlIgf,EAAM5d,KAAK,YACX4d,EAAMhf,SAAS,SAASA,SAAS,YAAYJ,YAAY,UACzDof,EAAMhf,SAAS,mBACfgf,EAAMnf,SAASG,SAAS,mBACxBgf,EAAMxf,KAAK,4BAA4BQ,SAAS,UAC3C6E,EAAG4F,sBACJwU,EAAarf,YAAY,UACzBqf,EAAapf,SAASD,YAAY,WAK9C,CACAL,EAAEwP,UAAUC,MAChB,KAGRzP,EAAEuB,UAAUtB,KAAK,oCAAoCI,YAAY,aACjEL,EAAEuB,UAAUtB,KAAK,kCAAkCK,SAASG,SAAS,YACzE,CAEA,SAASkf,IACL,IAAI/N,EAAM5R,EAAEuB,UAAUtB,KAAK,2BAA2BwC,KAAK,OACvDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,2BAA2BwC,KAAK,SACzDqE,EAAM9G,EAAE,uCAAuCyC,KAAK,cACnDzC,EAAE,mBAAmBI,SAAS,0BAC/BJ,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,MACRzM,KAAM,CACFmP,IAAKA,EACLoK,MAAOA,GAEX9V,QAAS,SAAUzD,GACf,IAAK,IAAI1F,EAAI,EAAGA,EAAI0F,EAAK+c,UAAUlgB,OAAQvC,IAAK,CAC5C,IAAIuI,EAAK7C,EAAK+c,UAAUziB,GACpB0iB,EAAQzf,EAAEuB,UAAUtB,KAAK,iBAAmBqF,EAAGtH,OAC/C0hB,EAAe1f,EAAEuB,UAAUtB,KAAK,wBAA0BqF,EAAGtH,OAC7DsH,EAAGmF,YACHgV,EAAMpf,YAAY,SAASA,YAAY,YAAYI,SAAS,UAC5Dgf,EAAMpf,YAAY,mBAClBof,EAAMjV,WAAW,YACjBiV,EAAMnf,SAASD,YAAY,mBACvBiF,EAAG0F,eACHyU,EAAMxf,KAAK,4BAA4BI,YAAY,UAEvDqf,EAAajf,SAAS,UACtBif,EAAapf,SAASG,SAAS,WACvB6E,EAAGmF,WAUJgV,EAAMrf,SAAS,WAAakF,EAAGmF,aACtCnF,EAAG0F,cAAgByU,EAAMxf,KAAK,4BAA4BI,YAAY,UAAYof,EAAMxf,KAAK,4BAA4BQ,SAAS,YAVlIgf,EAAM5d,KAAK,YACX4d,EAAMhf,SAAS,SAASA,SAAS,YAAYJ,YAAY,UACzDof,EAAMhf,SAAS,mBACfgf,EAAMnf,SAASG,SAAS,mBACxBgf,EAAMxf,KAAK,4BAA4BQ,SAAS,UAC3C6E,EAAG4F,sBACJwU,EAAarf,YAAY,UACzBqf,EAAapf,SAASD,YAAY,WAK9C,CACAL,EAAEwP,UAAUC,MAChB,KAGRzP,EAAEuB,UAAUtB,KAAK,oCAAoCI,YAAY,aACjEL,EAAEuB,UAAUtB,KAAK,kCAAkCK,SAASG,SAAS,YACzE,CAGA,SAASmf,IACL,IAAIC,EAAgB7f,EAAE,8BAA8ByC,KAAK,iBACrDqd,EAAgB9f,EAAE,8BAA8ByC,KAAK,iBACrDsd,EAAY/f,EAAE,8BAA8ByC,KAAK,WACjDud,EAAYhgB,EAAE,8BAA8ByC,KAAK,WACjDzC,EAAE,8BAA8BV,OAAS,GACkB,IAAvDU,EAAE,0CAA0CV,QAC5CU,EAAE,8BAA8BE,MAAK,WACjC,IAAIiZ,EAAkBnZ,EAAEP,MACpB+Y,EAAeW,EAAgB1W,KAAK,aAExC0W,EAAgBnB,MAAM,CAClBiI,eAAe,EACfhI,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAe,IACfC,MAAO,IACPC,eAAgB,EAChBC,aAAcA,EACdC,eAAe,EACfC,MAAM,EACNwH,UAAW,kBACXC,WAAYngB,EAAE,+BACd2Y,OAAO,EACPE,UAAW,8CAAgDgH,EAAgB,gFAAkFG,EAAY,0BACzKlH,UAAW,8CAAgDgH,EAAgB,gFAAkFC,EAAY,0BACzKK,WAAY,CACR,CACIC,WAAY,QACZC,SAAU,CACN9H,aAAc,EACdE,MAAM,EACNC,OAAO,IAGf,CACI0H,WAAY,OACZC,SAAU,CACN9H,aAAc,EACdE,MAAM,EACNC,OAAO,MAK3B,GAGZ,CAGA,SAAS4H,IACLvgB,EAAEuB,UAAUtB,KAAK,0EAA0EmC,QAC/F,CA6BAtF,EAAOD,QAAU,CACb6R,aAAcuP,EAAKvP,aAEnB8R,YAAa,WAETxgB,GAAE,WACE,IAAIygB,EAAazgB,EAAE,6BAA6B4J,KAAI,WAChD,OAAO5J,EAAEP,MAAMoC,KAAK,WACxB,IAAGjE,MAEHoC,EAAEuB,UAAUC,QAAQ,uBAAwBif,EAChD,GACJ,EAEAC,UAAW,WACP,IAAIC,EAAkB3gB,EAAE,uBACxB,GAA+B,IAA3B2gB,EAAgBrhB,OAApB,CAIA,IAAIwH,EAAM6Z,EAAgBle,KAAK,aAC/BzC,EAAE6G,KAAK,CACHC,IAAKA,EACLZ,QAAS,SAAUzD,GACfzC,EAAE,oBAAoB6B,KAAK,MAAOY,EAAKme,SAC3C,GAPJ,CASJ,EAEAC,aAAc,WACV7gB,EAAEuB,UAAUgC,GAAG,QAAS,+BAA+B,WACnD,IAAIud,EAAc9gB,EAAE,8BAA8B6B,KAAK,aACvDmT,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,2BACfC,YAAa,gBACbC,WAAYkF,GAEpB,GACJ,EAEAC,SAAU,WACN/gB,EAAE,QAAQuD,GAAG,wBAAwB,WACjC,IAAM6a,EAAcpe,EAAE,mBAAmByC,KAAK,UAC9CzC,EAAE,mBAAmBue,YAAY,WACjCve,EAAEoe,GAAaG,YAAY,WAC3Ba,GACJ,IAEApf,EAAE,QAAQuD,GAAG,uBAAuB,WAChC,IAAI6a,EAAcpe,EAAE,kBAAkBiD,GAAG,GAAGR,KAAK,UAC7CwT,EAAQ,IAAIJ,EAAMuI,EAAa,CAAE5H,OAAQ8I,EAA2B7I,QAAS+D,IACjFvE,EAAMiF,OACNlb,EAAE,QAAQoX,IAAI,gCAAgC,WAC1CnB,EAAMgB,OACV,GACJ,GACJ,EAEA+J,kBAAmB,WACfhhB,EAAE,QAAQuD,GAAG,QAAS,+BAA+B,SAASlB,GAC1DA,EAAEzC,iBACF,IAAIkH,EAAM9G,EAAEP,MAAMgD,KAAK,QAEnBA,EAAO,CACPqN,IAFM9P,EAAEP,MAAMgD,KAAK,QAKvBzC,EAAE6G,KAAK,CACHC,IAAKA,EACLrE,KAAMA,EACNyM,OAAQ,MACRhJ,QAAS,SAAUzD,GACXA,EAAKoP,WACL7R,EAAE,6BAA6BuO,KAAK9L,EAAKoP,WAEzCpP,EAAKwe,eACLjhB,EAAE,uBAAuBuO,KAAK9L,EAAKwe,eAEnCxe,EAAK2J,UACLpM,EAAE,oBAAoBW,KAAK8B,EAAK2J,QAAQ8U,mBACxClhB,EAAE,qBAAqBW,KAAK8B,EAAK2J,QAAQ+U,YAEzC1e,EAAK2e,aACLphB,EAAE,oBAAoB6B,KAAK,OAAQY,EAAK2e,aAE5C,IAAIN,EAAc9gB,EAAE,8BAA8B6B,KAAK,aACvDmT,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,2BACfC,YAAa,iBACbC,WAAYkF,GAEpB,EACAva,MAAO,WACP,GAER,GACJ,EAEA4M,UAAW,WACPnT,EAAE,QAAQuD,GAAG,QAAS,sBAAsB,SAAUlB,GAKlD,GAJAA,EAAExC,kBACEG,EAAEP,MAAMgD,KAAK,UACbzC,EAAE,oCAAsCA,EAAEP,MAAMgD,KAAK,QAAQZ,KAAK,YAAa7B,EAAEP,MAAMgD,KAAK,WACzFzC,EAAE,oCAAsCA,EAAEP,MAAMgD,KAAK,QAAQZ,KAAK,YAAa,OAClF7B,EAAE,gBAAgByC,KAAK,YAAa,CACpC,IAAI4e,EAAarhB,EAAEqC,EAAE6C,eAAejD,QAAQ,cAAc3C,OAE1D,GADA4e,GAAoB,EAChBmD,EAAY,CAEZrhB,EAAE,qBAAqBE,MAAK,SAACuS,EAAMnN,GAC/B,IAAIoN,EAAM1S,EAAEsF,GACZoN,EAAIrS,YAAY,WAChBL,EAAE0S,EAAIjQ,KAAK,WAAWpC,YAAY,UACtC,IAEA,IAAM+d,EAAcpe,EAAE,mBAAmByC,KAAK,UAC9CzC,EAAE,mBAAmBue,YAAY,WACjCve,EAAEoe,GAAaG,YAAY,WAC3Ba,GACJ,KAAO,CACH,IAAIhB,EAAcpe,EAAE,kBAAkBiD,GAAG,GAAGR,KAAK,UAC7CwT,EAAQ,IAAIJ,EAAMuI,EAAa,CAAE5H,OAAQ8I,EAA2B7I,QAAS+D,IACjFvE,EAAMiF,OACNlb,EAAE,QAAQoX,IAAI,gCAAgC,WAC1CnB,EAAMgB,OACV,IACAjX,EAAE,0BAA0BoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,IAChEjX,EAAE,yBAAyBoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,GACnE,CACIjX,EAAEqC,EAAE6C,eAAe9E,SAAS,8BAC5Buf,IACGJ,IAEP,IAAIpW,EAAKnJ,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,OACjDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5D6e,EAAe,cAInB,GAHAthB,EAAE,iBAAiByC,KAAK,iBAAkB6e,GAGtCthB,EAAE,kBAAkBV,QAAUU,EAAEP,MAAMuD,QAAQ,0BAA0B1D,OACxE,IAAIiiB,EAAa,yBAEbA,EAAa,MAErBvhB,EAAE,iBAAiByC,KAAK,aAAc8e,GAEtCvM,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAYzS,EAAK6S,EACjBwF,WAAYF,EACZC,WAAYA,GAEpB,MAII,GAHIvhB,EAAEqC,EAAE6C,eAAe9E,SAAS,8BAC5Buf,IACGJ,IACFvf,EAAEuB,UAAUtB,KAAK,8CAA8CG,SAAS,mBAItE,CACH,IAAIge,EAAcpe,EAAE,kBAAkBiD,GAAG,GAAGR,KAAK,UAC7CwT,EAAQ,IAAIJ,EAAMuI,EAAa,CAAE5H,OAAQ+D,EAAuB9D,QAAS+D,IAC7EvE,EAAMiF,OACNlb,EAAE,QAAQoX,IAAI,gCAAgC,WAC1CnB,EAAMgB,OACV,IACAjX,EAAE,0BAA0BoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,IAChEjX,EAAE,yBAAyBoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,GACnE,MAZQjX,EAAEqC,EAAE6C,eAAe9E,SAAS,8BAC5B6d,EAAK/K,qBAAqBzT,MACvBwe,EAAKtL,iBAAiBlT,KAYzC,GACJ,EAEAgiB,0BAA2B,WAEvBzhB,EAAE,0BAA0BuD,GAAG,SAAS,WAAa,IAAA4T,EAAA,KAC7CuK,EAAMC,KAAKD,MAAM3N,WACrB/T,EAAEP,MAAMoC,KAAK,oBAAqB6f,GAClC7Z,YAAW,WACH7H,EAAEmX,GAAMtV,KAAK,uBAAyB6f,IACtC1hB,EAAEmX,GAAMtV,KAAK,oBAAqB,IApNtD,WACI,IAAI+f,EAAsBrgB,SAASsgB,uBAAuB,iBACtDC,GAAqB,EACrBF,EAAoBtiB,OAAS,IAC7BwiB,EAAqBF,GAAuBA,EAAoB,GAAGG,wBAAwB3N,OAAS,GAExG,IAEI4N,EAFAC,EAAkBpD,EAAckD,wBAAwBvZ,IAAMuW,EAGlE,GAAIxd,SAASsgB,uBAAuB,+BAC7BtgB,SAASsgB,uBAAuB,8BAA8BviB,OAAS,GACH,MAApEiC,SAASsgB,uBAAuB,8BAA8B,GAAY,CAC7E,IAAI3N,EAAS3S,SAASsgB,uBAAuB,8BAA8B,GAAGE,wBAAwB7N,OAClGE,EAAS7S,SAASsgB,uBAAuB,8BAA8B,GAAGE,wBAAwB3N,OAClG5L,EAAMjH,SAASsgB,uBAAuB,8BAA8B,GAAGE,wBAAwBvZ,IAC/F0Z,EAAe3gB,SAASsgB,uBAAuB,aAAa,GAAGE,wBAAwB7N,OAK3F8N,GAAmBF,IAAuBG,MAHxB7N,EAAS8N,EAAe,GAD1B1Z,EAAM0L,EAK1B,MACI8N,GAAmBF,IAAuBG,EAE9C,OAAOD,CACX,CA6L0BG,KAEYniB,EAAE,0BAA0BC,KAAK,qBAAqB0W,UAC5DzN,SAAQ,SAAC5D,GACbtF,EAAEsF,GAAIjF,YAAY,WAClBL,EAAEA,EAAEsF,GAAI7C,KAAK,WAAWpC,YAAY,UACxC,IAEcL,EAAE,0BAA0BoiB,IAAI,+BACtC/hB,YAAY,WAAWI,SAAS,aAGpD,GAAG,IACP,GACJ,EAEA4hB,mBAAoB,WAEhBriB,EAAE,QAAQuD,GAAG,QAAS,qBAAqB,SAAUlB,GACjD6b,GAAoB,EACpBle,EAAE,+BAA+B+B,IAAI,SACrC/B,EAAE,gCAAgC+B,IAAI,SACtCM,EAAExC,kBACF0f,IACA,IAAI+C,EAAqBtiB,EAAEqC,EAAE6C,eAAe9E,SAAS,WACrDJ,EAAE,qBAAqBE,MAAK,SAACuS,EAAMnN,GAE/B,IAAIoN,EAAM1S,EAAEsF,GACZoN,EAAIrS,YAAY,WAChBL,EAAE0S,EAAIjQ,KAAK,WAAWpC,YAAY,WAClCyZ,GACJ,IACA,IAAIyI,EAAYviB,EAAEqC,EAAE6C,eAAe9E,SAAS,kBACxCwR,EAAM5R,EAAEqC,EAAE6C,eAAejD,QAAQ,mBAAmBJ,KAAK,kBACzDma,EAAQhc,EAAE,8BAA8ByC,KAAK,cAC7C6e,EAAethB,EAAE,sBAAsByC,KAAK,mBAAqBzC,EAAE,iBAAiByC,KAAK,kBACzF8e,EAAavhB,EAAE,sBAAsByC,KAAK,eAAiBzC,EAAE,iBAAiByC,KAAK,cACvF,GAAK6f,EAuBMC,IACPvN,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,QACbC,WAAYhK,EAAMoK,EAClBwF,WAAYF,EACZC,WAAYA,IAEhBvhB,EAAE,sBAAsBwiB,WAAW,kBACnCxiB,EAAE,iBAAiBwiB,WAAW,kBAC9BxiB,EAAE,sBAAsBwiB,WAAW,cACnCxiB,EAAE,iBAAiBwiB,WAAW,mBAnCT,CAGrB,IAAIlL,EAAStX,EAAEqC,EAAE6C,eAAeqZ,YAAY,WAAW9b,KAAK,UAC5DzC,EAAEsX,GAAQiH,YAAY,WAClBgE,IACKjB,QAAoC/hB,IAApB8C,EAAEogB,gBACnBnB,EAAe,cACfthB,EAAE,sBAAsByC,KAAK,iBAAkB6e,IAE9CC,QAAkChiB,IAApB8C,EAAEogB,gBACjBlB,EAAa,oBACbvhB,EAAE,sBAAsByC,KAAK,aAAc8e,IAE/CvM,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAYhK,EAAMoK,EAClBwF,WAAYF,EACZC,WAAYA,IAGxB,CAcJ,GACJ,EAEAmB,uBAAwB,WAEpB1iB,EAAE,QAAQuD,GAAG,QAAS,0BAA0B,SAAUlB,GACtD6b,GAAoB,EACpBle,EAAE,+BAA+B+B,IAAI,SACrC/B,EAAE,gCAAgC+B,IAAI,SACtCM,EAAExC,kBACF8f,IACkB9X,YAAW,WACzBwX,GACJ,GAAG,KACCrf,EAAE,kEAAkEV,OAAS,GACmB,IAA5FU,EAAE,+EAA+EV,QACjFU,EAAE,kEAAkEE,MAAK,WAC/CF,EAAEP,MACRuY,MAAM,CAClBC,UAAU,EACVC,UAAU,EACVC,eAAe,EACfC,YAAY,EACZC,cAAe,IACfC,MAAO,IACPC,eAAgB,EAChBC,aAAc,EACdC,eAAe,EACfC,MAAM,EACNC,OAAO,EACPE,UAAW,wGACXC,UAAW,wGACXsH,WAAY,CACR,CACIC,WAAY,QACZC,SAAU,CACN9H,aAAc,KAGtB,CACI6H,WAAY,OACZC,SAAU,CACN9H,aAAc,MAKlC,IAGR,IAAI8J,EAAqBtiB,EAAEqC,EAAE6C,eAAe9E,SAAS,WACrDJ,EAAE,0BAA0BE,MAAK,SAACuS,EAAMnN,GAEpC,IAAIoN,EAAM1S,EAAEsF,GACZoN,EAAIrS,YAAY,WAChBL,EAAE0S,EAAIjQ,KAAK,WAAWpC,YAAY,WAClCyZ,GACJ,IACA,IAAIyI,EAAYviB,EAAEqC,EAAE6C,eAAe9E,SAAS,kBACxCwR,EAAM5R,EAAEqC,EAAE6C,eAAejD,QAAQ,2BAA2BJ,KAAK,YACjEma,EAAQhc,EAAEqC,EAAE6C,eAAejD,QAAQ,2BAA2BJ,KAAK,cACvE,GAAKygB,GAmBE,GAAIC,EAAW,CACdjB,EAAethB,EAAE,sBAAsByC,KAAK,kBAC5C8e,EAAavhB,EAAE,sBAAsByC,KAAK,cAC9CuS,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,QACbC,WAAYhK,EAAMoK,EAClBwF,WAAYF,EACZC,WAAYA,IAEhBvhB,EAAE,sBAAsBwiB,WAAW,kBACnCxiB,EAAE,sBAAsBwiB,WAAW,aACvC,MAhCyB,CAGrB,IAAIlL,EAAStX,EAAEqC,EAAE6C,eAAeqZ,YAAY,WAAW9b,KAAK,UAE5D,GADAzC,EAAEsX,GAAQiH,YAAY,WAClBgE,EAAW,CACX,IAAIjB,EAAe,cACnBthB,EAAE,sBAAsByC,KAAK,iBAAkB6e,GAC/C,IAAIC,EAAa,yBACjBvhB,EAAE,sBAAsByC,KAAK,aAAc8e,GAC3CvM,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAYhK,EAAMoK,EAClBwF,WAAYF,EACZC,WAAYA,GAEpB,CACJ,CAcJ,GACJ,EAEAoB,YAAa,WACT,IAAIC,EAAc,EAClB5iB,EAAE,QAAQuD,GAAG,iBAAkB,YAAY,SAAUlB,GACjD,IAAIwgB,EAAcxgB,EAAE6C,cAChB4d,EAAiBD,EAAYE,IAC7BC,EAAYlb,OAAOmb,MAAQ,IAAM,SAAW,SAC5CC,EAAuBljB,EAAE6iB,GAAa5gB,QAAQ,qBAAqBhC,KAAK,kBAAoB+iB,GAAW,GAAGG,OAC1GC,EAAepjB,EAAE,uBACAA,EAAE,kCAAkCI,SAAS,aAAeJ,EAAE,mCAAmCI,SAAS,aAE3HJ,EAAEwP,UAAUc,QACZtQ,EAAE,kBAAkBK,YAAY,UAAUA,YAAY,aACtD+iB,EAAa3iB,SAAS,UACtB2iB,EAAavhB,KAAK,MAAOihB,GACzBM,EAAavhB,KAAK,SAAUqhB,GAExBN,EAAc,GACd5iB,EAAE,kBAAkBK,YAAY,cAAcI,SAAS,aACvD2iB,EAAa/iB,YAAY,UACzBL,EAAE,QAAQS,SAAS,gBAEnBmiB,IACAQ,EAAa7f,GAAG,QAAQ,WACpBvD,EAAE,kBAAkBS,SAAS,aAC7BT,EAAEwP,UAAUC,OACZ2T,EAAa/iB,YAAY,UACzB,IAAIgjB,EAAerjB,EAAE,kBACjBsjB,EAAetjB,EAAE,sBACrBA,EAAE,QAAQS,SAAS,cACnB4iB,EAAaE,YAAYD,EAAaL,QAAUI,EAAaJ,SAAW,GACxEI,EAAapb,WAAWqb,EAAapP,SAAWmP,EAAanP,UAAY,EAC7E,KAGZ,IAEAlU,EAAE,QAAQuD,GAAG,QAAS,sBAAsB,WACxCvD,EAAE,kBAAkBS,SAAS,UAAUJ,YAAY,aACnDL,EAAE,QAAQK,YAAY,aAC1B,IAEAL,EAAE,QAAQuD,GAAG,WAAY,YAAY,WACjCvD,EAAE,kBAAkBS,SAAS,UAAUJ,YAAY,aACnDL,EAAE,QAAQK,YAAY,aAC1B,GACJ,EAEAmjB,sBAAuB,WACnB,IAOIC,EAPEC,EAAwB,WACZ1jB,EAAE,0BAA0BC,KAAK,qBAAqB0W,UAC5DzN,SAAQ,SAAC5D,GACbtF,EAAEsF,GAAIjF,YAAY,WAClBL,EAAEA,EAAEsF,GAAI7C,KAAK,WAAWpC,YAAY,UACxC,GACJ,EAEAL,EAAEuB,UAAUgC,GAAG,UAAU,WAOrB,GAJIkgB,IACAjK,aAAaiK,GApnBzBzjB,EAAE,eAAemU,IAAI,CACjBC,OAAQ,OACRC,MAAO,SAEPrU,EAAE,6BAA6BV,OAAS,GACxCU,EAAE,eAAemU,IAAI,CACjBC,OAAQ,WAinBJpU,EAAE,0BAA0B6B,KAAK,qBAArC,CAIA6hB,IACA,IAAIC,EAAU3jB,EAAE,0BAA0BoiB,IAAI,+BAE9CuB,EAAQtjB,YAAY,WAAWI,SAAS,YACxC,IAAImhB,EAAsBrgB,SAASsgB,uBAAuB,iBACtDC,GAAqB,EACrBF,EAAoBtiB,OAAS,IAC7BwiB,EAAqBF,GAAuBA,EAAoB,GAAGG,wBAAwB3N,OAAS,GAExG,IAEI4N,EAFAC,EAAkBpD,EAAckD,wBAAwBvZ,IAAMuW,EAGlE,GAAIxd,SAASsgB,uBAAuB,+BAC7BtgB,SAASsgB,uBAAuB,8BAA8BviB,OAAS,GACH,MAApEiC,SAASsgB,uBAAuB,8BAA8B,GAAY,CAC7E,IAAI3N,EAAS3S,SAASsgB,uBAAuB,8BAA8B,GAAGE,wBAAwB7N,OAClGE,EAAS7S,SAASsgB,uBAAuB,8BAA8B,GAAGE,wBAAwB3N,OAClG5L,EAAMjH,SAASsgB,uBAAuB,8BAA8B,GAAGE,wBAAwBvZ,IAC/F0Z,EAAe3gB,SAASsgB,uBAAuB,aAAa,GAAGE,wBAAwB7N,OAK3F8N,GAAmBF,IAAuBG,MAHxB7N,EAAS8N,EAAe,GAD1B1Z,EAAM0L,EAK1B,MACI8N,GAAmBF,IAAuBG,EAG1CD,IACAyB,EAAc5b,YAAW,WACrB8b,EAAQljB,SAAS,WAAWJ,YAAY,YACxCgf,GACJ,GAAG,KAjCP,CAmCJ,IAEA,IAAMuE,EAAiB5jB,EAAE,kCACnB6jB,EAAe7jB,EAAE,oCAEvBA,EAAEuB,UAAUkb,OAAM,SAAApa,GACTuhB,EAAerjB,GAAG8B,EAAEf,SACsB,IAAxCsiB,EAAeE,IAAIzhB,EAAEf,QAAQhC,QAC5BukB,EAAatjB,GAAG8B,EAAEf,SACgB,IAAtCuiB,EAAaC,IAAIzhB,EAAEf,QAAQhC,SACvBU,EAAE,qBAAqBI,SAAS,YAChC0Z,IAEJ4J,IAER,GACJ,EAEAK,uBAAwB,WACpB/jB,EAAEuB,UAAUmS,OAAM,WACd,IAAI3I,EAAO/K,EAAE,iCAAiCyC,KAAK,eAC/CsI,SAAmD,cAATA,GAC1C/K,EAAE,kCAAkCC,KAAK,0BAA0BC,MAAK,WACpE,GAAIF,EAAEP,MAAMgD,KAAK,UAAYsI,EAEzB,OADA/K,EAAEP,MAAMgd,SACD,CAEf,GAER,GACJ,EAEAuH,iBAAkB,WAAY,IAAAvM,EAAA,KACpBwM,EAA0B,SAAC5hB,GAC7BA,EAAExC,kBACF,IAAIue,EAAc/b,EAAE6C,cAAcmX,QAAQ/a,OACtC2U,EAAQ,IAAIJ,EAAMuI,EAAa,CAAE5H,OAAQ8I,EAA2B7I,QAAS+D,IAEjF+E,IACAtJ,EAAMiF,OACNlb,EAAE,QAAQoX,IAAI,gCAAgC,WAC1CnB,EAAMgB,OACV,IACAjX,EAAE,0BAA0BoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,IAChEjX,EAAE,yBAAyBoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,GACnE,EAEAjX,EAAE,QAAQuD,GAAG,QAAS,mBAAmB,SAAClB,GAQtC,GAPA6b,GAAoB,EACpBle,EAAE,+BAA+B+B,IAAI,SACrC/B,EAAE,gCAAgC+B,IAAI,SACtCkiB,EAAwB5hB,IAEPA,EAAE6C,cAAcqX,UAAU2H,SAAS,wBAEnC,CACb,IAAItS,EAAM5R,EAAEqC,EAAE6C,eAAejD,QAAQ,mBAAmBJ,KAAK,kBACzDma,EAAQhc,EAAE,8BAA8ByC,KAAK,cAE7C8e,EAAavhB,EAAE,iBAAiByC,KAAK,cACpC8e,IAEGA,EADAvhB,EAAE,kBAAkBV,QAAUU,EAAEyX,GAAMzU,QAAQ,0BAA0B1D,OAC3D,oBAEA,MAEjBU,EAAE,iBAAiByC,KAAK,aAAc8e,IAG1C,IAAID,EAAethB,EAAE,iBAAiByC,KAAK,kBACtC6e,IACDA,EAAe,cACfthB,EAAE,iBAAiByC,KAAK,iBAAkB6e,IAE9CtM,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAYhK,EAAMoK,EAClBwF,WAAYF,EACZC,WAAYA,GAEpB,CACJ,IACAvhB,EAAE,QAAQuD,GAAG,QAAS,iCAAiC,SAAClB,GACpD,IAAI8G,EAAKnJ,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,OACjDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAEhE,GAAIzC,EAAEyX,GAAMzU,QAAQ,0BAA0B1D,OAC1C,IAAIiiB,EAAa,yBAEbA,EAAa,MAErBvhB,EAAE,iBAAiByC,KAAK,aAAc8e,GACtC,IAAID,EAAe,WACnBthB,EAAE,iBAAiByC,KAAK,iBAAkB6e,GAC1CtM,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAYzS,EAAK6S,EACjBwF,WAAYF,EACZC,WAAYA,IAEhB0C,EAAwB5hB,EAC5B,IACArC,EAAE,QAAQuD,GAAG,QAAS,gCAAgC,SAAClB,GACnD,IAAI8G,EAAKnJ,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,OACjDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5D6e,EAAe,WACnBthB,EAAE,iBAAiByC,KAAK,iBAAkB6e,GAE1C,IAAIC,EAAa,oBACjBvhB,EAAE,iBAAiByC,KAAK,aAAc8e,GACtCvM,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,OACbC,WAAYzS,EAAK6S,EACjBwF,WAAYF,EACZC,WAAYA,IAGhB,IAAMnD,EAAcpe,EAAE,mBAAmByC,KAAK,UAC9CzC,EAAE,mBAAmBue,YAAY,WACjCve,EAAEoe,GAAaG,YAAY,WAC3Blc,EAAExC,iBACN,IACAG,EAAE,kCAAkCuD,GAAG,SAAS,WAC5C,IAAI4F,EAAKnJ,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,aACjDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5D6e,EAAethB,EAAE,iBAAiByC,KAAK,kBACvC8e,EAAavhB,EAAE,iBAAiByC,KAAK,cACzCuS,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,gBACfC,YAAa,QACbC,WAAYzS,EAAK6S,EACjBwF,WAAYF,EACZC,WAAYA,IAEhBvhB,EAAE,iBAAiBwiB,WAAW,kBAC9BxiB,EAAE,iBAAiBwiB,WAAW,aAClC,GACJ,EAEA2B,gCAAiC,WAC7B,IAAI/F,EAAcpe,EAAE,mBAAmByC,KAAK,UACxCwT,EAAQ,IAAIJ,EAAMuI,EAAa,CAAE5H,OAAQ+D,EAAuB9D,QAAS+D,IAC7Exa,EAAE,QAAQuD,GAAG,QAAS,uBAAuB,SAAUlB,GAC9CyF,OAAO+K,UAAa7S,EAAE,sBAAsBI,SAAS,0BACtDiC,EAAExC,kBACFoW,EAAMiF,OACNlb,EAAE,QAAQoX,IAAI,gCAAgC,WAAQnB,EAAMgB,OAAS,IACrEjX,EAAE,0BAA0BoX,IAAI,SAAS,WAAQnB,EAAMgB,OAAS,KAEpEjX,EAAE,sBAAsBK,YAAY,uBACxC,GACJ,EAEA+jB,gBAAiB,WACbpkB,EAAEuB,UAAUgC,GAAG,QAAS,0BAA0B,SAAUlB,GACxD,IAQIgiB,EARAC,EAAkBtkB,EAAEP,MAAMgD,KAAK,aAC/B8hB,EAAcvkB,EAAEqC,EAAE6C,eAAezC,KAAK,eACtCkW,EAAQ3Y,EAAEqC,EAAE6C,eAAezC,KAAK,aAChCsI,EAAO/K,EAAEqC,EAAE6C,eAAezC,KAAK,QAC/B+hB,EAAW/kB,KAAK4c,QAAQoI,SACxB7S,EAAM5R,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,OAClDuZ,EAAQhc,EAAEuB,UAAUtB,KAAK,8BAA8BwC,KAAK,cAC5DnB,EAAS7B,KAAK4c,QAAQ/a,OAEtBwG,OAAO+K,UACPvR,GAAkB,OAClB+iB,EAAU,wCAEV/iB,GAAkB,QAClB+iB,EAAU,wCAEd,IAAIlnB,EAAI,IAAI0Y,EAAMvU,EAAQ,CAAEkV,OAAQ+D,EAAuB9D,QAAS+D,IAChEkK,EAAe1kB,EAAEP,MAAMwC,QAAQ,kCAC/ByiB,EAAaplB,OAAS,IACtBolB,EAAarkB,YAAY,WACzBqkB,EAAalkB,SAAS,iEAAiEH,YAAY,YAEvGL,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKwd,EACLpV,OAAQ,OACRzM,KAAM,CACFsI,KAAMA,EACNyZ,SAAUA,EACV5S,IAAKA,EACLoK,MAAOA,GAEX9V,QAAS,SAAUzD,GAAM,IAAAkiB,EAAA,KACrB3kB,EAAEqkB,GAAS9V,KAAK9L,GAChBzC,EAAEwP,UAAUC,OAj8B5BzP,EAAE,iBAAiBga,eACnBha,EAAE,iBAAiBE,MAAK,WAIpB,IAAI+Y,EAHJjZ,EAAEP,MAAM0U,IAAI,CACRI,QAAS,SAKT0E,EADAxZ,KAAKwa,OAAO3a,OAAS,EACbG,KAAKwa,OAAO,GAAGC,UAEfla,EAAEP,MAAMwC,QAAQ,kBAAkBhC,KAAK,aAAasO,OAElDvO,EAAEP,MAAMe,SAAS,UAKvBqB,KAAK,aAAcoX,GAE3BjZ,EAAEP,MAAMua,aAAa,WAErBha,EAAEP,MAAMa,SAASL,KAAK,oBAAoBuK,WAAW,OACzD,IA66BgBrN,EAAE+d,OACEpT,OAAO+K,UACP7S,EAAE,+CAA+C6B,KAAK,aAAc0iB,GAExEvkB,EAAE,kDAAkDoX,IAAI,SAAS,WAC7Dja,EAAE8Z,QACFjX,EAAE,uBAAuBU,WAAWmB,KAAK,aAAc8W,EAC3D,IACA3Y,EAAE,iDAAiDoX,IAAI,SAAS,WAC5DpX,EAAE7C,EAAE8Y,OAAO5V,YAAY,WACvBL,EAAE7C,EAAE8Y,OAAOxV,SAAS,UAAUoB,KAAK,cAAe,QAClD1E,EAAEiZ,OAAQ,EACVjZ,EAAEkZ,2BAA2BhT,QACzBlG,EAAEmZ,QAAQG,SACVtZ,EAAEmZ,QAAQG,UAEdzW,EAAE,QAAQK,YAAY,cACtBkB,SAASmW,oBAAoB,UAAWiN,EAAKzO,WACjD,IACAlW,EAAE,wCAAwC6B,KAAK,CAC3C,gBAAiB,OACjB,mBAAoB,0BAE5B,GAER,GACJ,EAEA+iB,kBAAmB,WACf5kB,EAAEuB,UAAUgC,GAAG,QAAS,0BAA0B,WAC9C,IAAIuD,EAAM9G,EAAE,0BAA0ByC,KAAK,UACvCN,EAAOnC,EAAEA,EAAE,gCAAgC,IAC3C+K,EAAO5I,EAAKlC,KAAK,kCAAkCU,OAAOkkB,OAE1D5L,EADYjZ,EAAE,kBAAkB+B,MAAM8iB,OAAS7kB,EAAE,sBAAsB+B,MAAM8iB,OACzD,MAAQ9Z,EAChC5I,EAAKlC,KAAK,mBAAmB8B,IAAIgJ,GACb/K,EAAE,uBAAuB+B,MAClBzC,OAAS,IAEhC6C,EAAKqN,UAAUc,QACftQ,EAAE6G,KAAK,CACHC,IAAKA,EACLoI,OAAQ,OACRzM,KAAMN,EAAKsZ,YACXvV,QAAS,SAAUzD,GACfN,EAAKqN,UAAUC,OACfzP,EAAE,gCAAgCmf,UAClCnf,EAAE,gCAAgCwd,SAClC0B,EAAiBlf,EAAE,gCAAiCyC,IAEtB,IAA1BA,EAAKyJ,SAAShG,QACd8O,UAAU5T,KAAK,CACXjC,MAAO,cACPuc,cAAe,eACfC,YAAa,YACbC,WAAY3C,IAGhBjE,UAAU5T,KAAK,CACXjC,MAAO,cACPuc,cAAe,eACfC,YAAa,cACbC,WAAY3C,GAIxB,EACA1S,MAAO,SAAU9D,GAEbuS,UAAU5T,KAAK,CACXjC,MAAO,cACPuc,cAAe,eACfC,YAAa,cACbC,WAAY3C,IAGhB9W,EAAKqN,UAAUC,OACfzP,EAAE,gCAAgCmf,UAClCnf,EAAE,gCAAgCwd,SAClC0B,EAAiBlf,EAAE,gCAAiCyC,EACxD,IAGZ,GACJ,EAyBAqiB,2BAA4B,WACxB9kB,EAAE,QAAQuD,GAAG,wBAAwB,SAAUlB,EAAGI,GAC9C,IAAIsG,EAAoB/I,EAAE,6BAA+ByC,EAAK0G,GAAK,MAClC,IAA7BJ,EAAkBzJ,SAClByJ,EAAoB/I,EAAE,6BAA+BA,EAAE,4BAA4B+B,MAAQ,OAE/FgH,EAAkB9I,KAAK,+CAClB8J,QACAwE,KAAK9L,EAAKsiB,gBAEfhc,EAAkB9I,KAAK,+BAClB8J,QACAwE,KAAK9L,EAAKuiB,iBACfhlB,EAAE,kCAAkCga,eACpCha,EAAE,mCAAmCga,eAEjCvX,EAAKwiB,kBACLlc,EAAkB9I,KAAK,wCAClBI,YAAY,kBACjB0I,EAAkB9I,KAAK,iDAClB8J,QACAwE,KAAK9L,EAAKwiB,mBAEflc,EAAkB9I,KAAK,wCAClBQ,SAAS,kBAGdgC,EAAKyiB,iBACLnc,EAAkB9I,KAAK,oCAClBI,YAAY,kBACjB0I,EAAkB9I,KAAK,6CAClB8J,QACAwE,KAAK9L,EAAKyiB,kBAEfnc,EAAkB9I,KAAK,oCAClBQ,SAAS,iBAEtB,GACJ,EAEA0kB,YAAa,WACTnlB,EAAE,QAAQuD,GAAG,yDAAyD,WAClEvD,EAAEwP,UAAUc,OAChB,GACJ,EAEA8U,gBAAiB,WACbplB,EAAE,QAAQuD,GAAG,gCAAgC,SAAUlB,EAAG6J,GACtDlM,EAAE,mBAAmByC,KAAK,MAAOyJ,EAASzJ,KAAK2J,QAAQjD,IACvDnJ,EAAE,oBAAoByC,KAAK,MAAOyJ,EAASzJ,KAAK2J,QAAQwF,KAGxD,IAFA,IAAIyT,EAAYnZ,EAASzJ,KAAK2J,QAAQqE,UAClC6U,EAAYpZ,EAASzJ,KAAK2J,QAAQC,oBAAoB,GAAGjD,OACpDrM,EAAI,EAAGA,EAAIuoB,EAAUhmB,OAAQvC,IAC9BuoB,EAAUvoB,GAAGwM,WACb8b,GAAaC,EAAUvoB,GAAGoM,IAiBlC,GAdAnJ,EAAE,4BAA4B6B,KAAK,WAAYwjB,GAC/CrlB,EAAE,mBAAmB2W,UAAUzN,QAAQiV,GACvCne,EAAE,qBAAqB2W,UAAUzN,QAAQiV,GAErCD,GACAD,EAAKtL,iBAAiBlT,MAEqB,SAA3CO,EAAE,+BAA+B+B,OACjC/B,EAAE,QAAQwB,QAAQ,qCAItBxB,EAAE,QAAQwB,QAAQ,kCAEdxB,EAAE,mDAAmDV,OAAQ,CAC7D,IAAIwH,EAAM9G,EAAE,uBAAuB+B,MAC/BwjB,EAAczd,OAAO0J,SAASgU,OAC9BC,EAAW,QACI,IAAfF,IACAE,EAAW,SAEf,IAAIC,EAAc5e,EAAMye,EAAcE,EAAWJ,EAEjDrlB,EAAE6G,KAAK,CACHC,IAAK4e,EACLxW,OAAQ,MACRhJ,QAAS,SAAUzD,GACXA,IACAzC,EAAE,8BAA8BuO,KAAK9L,GACrCzC,EAAE,+BAA+BK,YAAY,UAC7Cuf,IACAW,IAEAhf,SAASokB,iBAAiB,mBAAmBzc,SAAQ,SAAA0c,GACjD,IAAIC,EAAW7lB,EAAE4lB,GAAO3iB,GAAG,GAAGpB,KAAK,kBAC9BgkB,GAGL7lB,EAAE6G,KAAK,CACHC,IAAK+e,EACL3W,OAAQ,MACRhJ,QAAS,SAASzD,GACdzC,EAAE4lB,GAAO/jB,KAAK,MAAOY,EAAKme,SAC9B,EACAra,MAAO,WAEP,GAER,IAER,EACAA,MAAO,WACP,GAER,CACJ,GACJ,EAEAuf,gBAAiB,WACb9lB,EAAE,QAAQuD,GAAG,2BAA2B,SAAUlB,EAAG6J,GAEjDlM,EAAE,qBAAsBkM,EAASnD,mBAAmBtG,KAAK,YACnDyJ,EAASE,QAAQwC,eAAiB1C,EAASE,QAAQmG,WA9vC/B,SAACrG,GACnC,GAAIA,EAASE,QAAQwC,aAAc,CAC/B,IAAImX,EAAiB/lB,EAAE,oBAAqBkM,EAASnD,mBACvB,IAA1Bgd,EAAezmB,QACfymB,EAAelkB,KAAK,MAAOqK,EAASE,QAAQjD,IAEhDnJ,EAAE,sBAAsBS,SAAS,UACjCT,EAAE,iBAAiBK,YAAY,SACnC,MACIL,EAAE,sBAAsBK,YAAY,UACpCL,EAAE,iBAAiBS,SAAS,SAEpC,CAmvCYulB,CAA8B9Z,EAClC,GACJ,EAEA+Z,UAAW,WACPjmB,EAAE,QAAQuD,GAAG,QAAS,uBAAuB,SAAUlB,GACnDA,EAAEzC,iBACF,IASIsmB,EACA9H,EAVA+H,EAAgBnmB,EAAEP,MAClBqH,EAAMqf,EAAc1jB,KAAK,QACzB2jB,EAAW3mB,KAAK0J,IACpBnJ,EAAEuB,UAAUtB,KAAK,oCAAoCkU,IAAI,qBAAsB,WAC9D,qBAAbiS,GAAoCte,OAAO+K,SAG3C7S,EAAE,wBAAwB+B,KAAI,GAF9B/B,EAAE,wBAAwB+B,KAAI,GAM9B+F,OAAO+K,UACPqT,EAAiBlmB,EAAE,iCACnBoe,EAAc+H,EAAc1jB,KAAK,mBAEjCyjB,EAAiBlmB,EAAE,0BACnBoe,EAAc+H,EAAc1jB,KAAK,WAEjCyjB,EAAe3lB,GAAG,WAClBP,EAAE6G,KAAK,CACHC,IAAKA,EACLnF,KAAM,MACNwP,SAAU,OACVjL,QAAS,SAAUzD,GAEfuS,UAAU5T,KAAK,CACXjC,MAAO,YACPuc,cAAe,aACfC,YAAa,SAGjBuK,EAAe3X,KAAK9L,GAChBqF,OAAO+K,UACP7S,EAAE,mBAAmB2W,UAAUzN,QAAQiV,GAE3C9b,EAAExC,kBAEU,IAAIgW,EAAMuI,EAAa,CAAE5H,OAAQkI,EAAoBjI,QAAS6H,IACpEpD,MACV,IAGQ,IAAIrF,EAAMuI,EAAa,CAAE5H,OAAQkI,EAAoBjI,QAAS6H,IACpEpD,MAEd,GACJ,EAEAmL,wBAAyB,WACrB,IAAIC,EAAY,IAAIC,gBAAgBze,OAAO0J,SAASgU,QACpD,GAAIc,EAAUxC,IAAI,YAAa,CAC3B,IAAI0C,EAAWF,EAAU1oB,IAAI,YAC7BoC,EAAE,4BAA4BE,MAAK,SAACuS,EAAMnN,GACtC,IAr0CcwB,EAAK2f,EAAWzoB,EACtC0oB,EACA1lB,EAm0CY2lB,EAAc3mB,EAAEsF,GAAIzD,KAAK,QACzB+kB,GAt0CU9f,EAs0C2B6f,EAt0CtBF,EAs0CmC,WAt0CxBzoB,EAs0CoCwoB,EAr0C1EE,EAAQ,IAAIG,OAAOJ,EAAY,WAC/BzlB,EAAQ8F,EAAI9F,MAAM0lB,IACZpnB,OAAS,EACR0B,EAAM,IAAM8F,EAAI3F,QAAQ,MAAQ,EAAI,GAAK,KAAOslB,EAAY,IAAMzoB,EAAQgD,EAAM,GAEhF8F,GAAOA,EAAI3F,QAAQ,MAAQ,EAAI,IAAM,KAAOslB,EAAY,IAAMzoB,GAi0C7DgC,EAAEsF,GAAIzD,KAAK,OAAQ+kB,EACvB,GACJ,CACJ,EAEAE,eAAgB,WACZ9mB,EAAEuB,UAAUgC,GAAG,QAAS,wBAAwB,WAC5C,IACIwjB,EACmB/mB,EAAE,wBAAwB+B,OAC7C+F,OAAO+K,SAEPkU,EAAc,qBAGdA,EAAc,gBAGbjf,OAAOkf,SAII,IAAInR,EAAMkR,EAAa,CAAEvQ,OAAQ+D,EAAuB9D,QAAS+D,IACvEU,OACNlb,EAAE,uCAAuCwK,WAAW,UALxC,IAAIqL,EAAMkR,EAAa,CAAEvQ,OAAQkI,EAAoBjI,QAAS6H,IACpErH,OAMd,GACJ,EAEAgQ,iBAAkB,WACdjnB,EAAE,QAAQuD,GAAG,QAAS,6BAA6B,SAAUlB,GACzDA,EAAEzC,iBACF,IAAIsnB,EAAkBlnB,EAAEP,MACpB0nB,EAAkBD,EAAgBzkB,KAAK,YAEvC2kB,EAAcF,EAAgB5mB,OAAO,cAAcE,WACvD4mB,EAAY/mB,YAAY,aACxB,IAAIgnB,EAAaD,EAAYnnB,KAAK,6BAA6BwC,KAAK,YACpEzC,EAAE,IAAMqnB,GAAYC,OACpBJ,EAAgB5mB,OAAO,cAAcG,SAAS,aAC9CT,EAAE,IAAMmnB,GAAiB7gB,MAC7B,GACJ,EAEAihB,oCAAqC,WACjCvnB,EAAE,0CAA0CuD,GAAG,eAAe,SAASpE,EAAO6Y,GAC1E,IAAIwP,EAAaxnB,EAAE,0CAA0CyC,KAAK,aAC9DzC,EAAE8H,QAAQmb,QAAU,UAASuE,EAAa,GAC1CxnB,EAAE8H,QAAQmb,QAAU,SAAQuE,EAAa,GAC7C,IAEI3H,EAMAC,EARA2H,EAAezP,EAAMyP,aAAe,EACpCC,EAAa1P,EAAM2P,YAAcH,EAAa,GAG9C3H,EADA4H,GAAgBC,GAAeD,EAAe,EAAK,EACnCznB,EAAE,8BAA8ByC,KAAK,iBAAiBob,QAAQ,MAAO4J,EAAe,GAAG5J,QAAQ,MAAO6J,GAEtG1nB,EAAE,8BAA8ByC,KAAK,iBAAiBob,QAAQ,MAAO4J,GAAc5J,QAAQ,MAAO6J,GAIlH5H,EADC2H,EAAe,GAAMC,EACN1nB,EAAE,8BAA8ByC,KAAK,iBAAiBob,QAAQ,MAAO4J,EAAe,GAAG5J,QAAQ,MAAO6J,GAEtG1nB,EAAE,8BAA8ByC,KAAK,iBAAiBob,QAAQ,MAAO4J,GAAc5J,QAAQ,MAAO6J,GAEtH1nB,EAAE,+CAA+C6B,KAAK,aAAcge,GACpE7f,EAAE,+CAA+C6B,KAAK,aAAcie,GAEpE9f,EAAE,gBAAgBE,MAAK,WACa,SAAhCF,EAAEP,MAAMoC,KAAK,eAA4B7B,EAAEP,MAAMoC,KAAK,WAAY,MAAQ7B,EAAEP,MAAMoC,KAAK,WAAY,IACvG,GACJ,GACJ,EAEA+lB,kBAAmB,WACf5nB,EAAEuB,UAAUgC,GAAG,QAAS,uBAAuB,WACvCvD,EAAEP,MAAMW,SAAS,YACjBJ,EAAEP,MAAMQ,KAAK,QAAQI,YAAY,eACjCL,EAAEP,MAAMa,SAASE,WAAWE,WAAWT,KAAK,QAAQQ,SAAS,gBAEjE,IAAIonB,EAAQ7nB,EAAEP,MAAMwC,QAAQ,+BAC5B,GAAIjC,EAAE,QAAQI,SAAS,cAAiBJ,EAAE,QAAQI,SAAS,cAAgBJ,EAAEP,MAAMwC,QAAQ,4CAA4C3C,OAAS,EAAI,CAChJ,IAAIwoB,EAAc9nB,EAAEP,MAAM8I,SAASwf,KAAQ/nB,EAAEP,MAAMuoB,YAAW,GAAQ,EAAKH,EAAMtE,aAAesE,EAAM5E,QAAU,EAChH4E,EAAMtE,WAAWuE,EACrB,CACJ,GACJ,EAEAG,eAAgB,WACZjoB,EAAEuB,UAAUmS,OAAM,YAltC1B,WAEI,IAAI7I,EAAgB7K,EAAE,sBAAsByC,KAAK,iBACjD,GAAIoI,GAA6C,IAA5BzC,SAASyC,IACvB7K,EAAE,uBAAyBA,EAAE,sBAAsBU,YAAcV,EAAE,sBAAsBU,WAAWoK,QACvG,GAAI9K,EAAE,sBAAsBU,WAAWoK,QAAQvK,GAAG,aAAc,CAC5D,IAAIiS,EAAWxS,EAAE,sBAAsBU,WAAWoK,QAAQrI,KAAK,cAC/DzC,EAAE,6BAA6B+B,IAAIyQ,EACvC,MACIxS,EAAE,sBAAsBU,WAAWoK,QAAQtJ,QAAQ,QAG/D,CAusCY0mB,EACJ,GACJ,EAEAC,8BAA+B,WAC3BnoB,EAAEuB,UAAUmS,OAAM,WAEd,IAAI0U,EAAkBpoB,EAAEuB,UAAUtB,KAAK,kCAAkC4B,KAAK,oBAC1EwmB,EAAiBroB,EAAEuB,UAAUtB,KAAK,kCAAkC4B,KAAK,mBAC7E7B,EAAEuB,UAAUtB,KAAK,iDAAiD4B,KAAK,KAAMwmB,GAC7EroB,EAAEuB,UAAUtB,KAAK,uDAAuD4B,KAAK,KAAMumB,GAEnF,IAAIE,EAAmBtoB,EAAEuB,UAAUtB,KAAK,kEAEpCsoB,EADsBD,EAAiBzmB,KAAK,oBACG,UAE/C2mB,EADqBF,EAAiBzmB,KAAK,mBACE,UACjD7B,EAAEuB,UAAUtB,KAAK,iFAAiF4B,KAAK,KAAM2mB,GAC7GxoB,EAAEuB,UAAUtB,KAAK,8FAA8F4B,KAAK,KAAM0mB,GAC1HD,EAAiBzmB,KAAK,mBAAoB0mB,GAC1CD,EAAiBzmB,KAAK,kBAAmB2mB,GAEzCxoB,EAAEuB,UAAUtB,KAAK,sDAAsD4B,KAAK,KAAM,oBAClF7B,EAAEuB,UAAUtB,KAAK,wDAAwD4B,KAAK,KAAM,mBACxF,GACJ,EAEA4mB,gBAAiB,WACbzoB,EAAEuB,UAAUgC,GAAG,gBAAiB,0BAA0B,SAAUpE,GAChE,GAAmB,YAAfA,EAAMwC,MAAoC,UAAdxC,EAAMb,KAAiC,MAAda,EAAMb,IAA/D,CACA,IAAIoqB,EAAW1oB,EAAEP,MAAMgD,KAAK,OAC5BkmB,UAAUC,UAAUC,UAAUH,GAC9B,IAAII,EAAa9oB,EAAEP,MAAMQ,KAAK,kBAAkBwC,KAAK,UACrDzC,EAAEP,MAAMQ,KAAK,kBAAkBA,KAAK,mBAAmBU,KAAKmoB,EAJuB,CAKvF,GACJ,EAEAC,oBAAqB,WACjB/oB,EAAEuB,UAAUmS,OAAM,WACd,GAAI1T,EAAE,mDAAmDV,QACH,IAA9CU,EAAE,iCAAiCV,OAAc,CACjD,IAAIwH,EAAM9G,EAAE,uBAAuB+B,MAC/B+N,EAAM9P,EAAE,mBAAmByC,KAAK,OAChC8iB,EAAczd,OAAO0J,SAASgU,OAC9BC,EAAW,QACI,IAAfF,IACAE,EAAW,SAEf,IAAIC,EAAc5e,EAAMye,EAAcE,EAAW3V,EACjD9P,EAAE6G,KAAK,CACHC,IAAK4e,EACLxW,OAAQ,MACRhJ,QAAS,SAAUzD,GACXA,IACAzC,EAAE,8BAA8BuO,KAAK9L,GACrCzC,EAAE,+BAA+BK,YAAY,UAC7Cuf,IACAW,IAEAhf,SAASokB,iBAAiB,mBAAmBzc,SAAQ,SAAA0c,GACjD,IAAIC,EAAW7lB,EAAE4lB,GAAO3iB,GAAG,GAAGpB,KAAK,kBAC9BgkB,GAGL7lB,EAAE6G,KAAK,CACHC,IAAK+e,EACL3W,OAAQ,MACRhJ,QAAS,SAASzD,GACdzC,EAAE4lB,GAAO/jB,KAAK,MAAOY,EAAKme,SAC9B,EACAra,MAAO,WACP,GAER,IAER,EACAA,MAAO,WACP,GAER,CAER,GACJ,EAEAyiB,mBAAoB,WAChBhpB,EAAEuB,UAAUmS,OAAM,WAEa,SADF1T,EAAE,uBAAuB+B,QAE1C+F,OAAO+K,SACF7S,EAAEA,EAAE,sBAAsB,IAAIyC,KAAK,aACpCzC,EAAEA,EAAE,sBAAsB,IAAIyc,QAG7Bzc,EAAEA,EAAE,sBAAsB,IAAIyC,KAAK,aACpCzC,EAAEA,EAAE,sBAAsB,IAAIyc,QAI9C,GACJ,EAEAwM,mBAAoB,WAEhBjpB,EAAEuB,UAAUmS,OAAM,WAEd1T,EAAEuB,UAAUgC,GAAG,uBAAuB,SAAClB,GACrB,QAAVA,EAAE/D,KACF0B,EAAE,oBAAoB6B,KAAK,WAAY,IAE/C,IAEA7B,EAAEuB,UAAUgC,GAAG,sBAAuB,yCAAyC,SAASlB,GACtE,UAAVA,EAAE/D,KAA6B,MAAV+D,EAAE/D,MAEvB0B,EAAEP,MAAM,GAAGgd,QACCzc,EAAEP,MAAMe,SAAS,kBACvBP,KAAK,kBAAkB,GAAGoD,QAExC,IAEArD,EAAEuB,UAAUgC,GAAG,sBAAuB,kBAAkB,SAASlB,GAC/C,UAAVA,EAAE/D,KAA6B,MAAV+D,EAAE/D,KACvB0B,EAAEP,MAAM,GAAGgd,OAEnB,GACJ,GACJ,E,8BCjiDJ3f,EAAOD,QAAU,CACb+O,OAAQ,WAEJ5L,EAAE,cAAcuD,GAAG,QAAS,yBAAyB,WACjDvD,EAAE,sCAAsCsG,OACxCtG,EAAE,mBAAmBQ,WAAWqB,KAAK,eAAe,GACpD7B,EAAE,mBAAmBiC,QAAQ,QAAQzB,WAAWqB,KAAK,eAAe,GACpE7B,EAAE,mBAAmBiC,QAAQ,oBAAoBzB,WAAWqB,KAAK,eAAe,GAChF7B,EAAE,mBAAmBiC,QAAQ,6BAA6BzB,WAAWqB,KAAK,eAAe,GACzF7B,EAAE,0BAA0BqD,OAChC,GACJ,EAEA6lB,iBAAkB,WAEdlpB,EAAE,cAAcuD,GAAG,QAAS,mDAAmD,WAC3EvD,EAAE,sCAAsCsnB,OACxCtnB,EAAE,mBAAmBQ,WAAWqB,KAAK,eAAe,GACpD7B,EAAE,mBAAmBiC,QAAQ,QAAQzB,WAAWqB,KAAK,eAAe,GACpE7B,EAAE,mBAAmBiC,QAAQ,oBAAoBzB,WAAWqB,KAAK,eAAe,GAChF7B,EAAE,mBAAmBiC,QAAQ,6BAA6BzB,WAAWqB,KAAK,eAAe,GACzF7B,EAAE,uBAAuBqD,OAC7B,GACJ,EAEA8lB,OAAQ,WAEJnpB,EAAE8H,QAAQqhB,QAAO,WACbnpB,EAAE,sCAAsCsnB,OACxCtnB,EAAE,mBAAmBQ,WAAWqB,KAAK,eAAe,GACpD7B,EAAE,mBAAmBiC,QAAQ,QAAQzB,WAAWqB,KAAK,eAAe,GACpE7B,EAAE,mBAAmBiC,QAAQ,oBAAoBzB,WAAWqB,KAAK,eAAe,GAChF7B,EAAE,mBAAmBiC,QAAQ,6BAA6BzB,WAAWqB,KAAK,eAAe,EAC7F,GACJ,EAEAunB,KAAM,WAEFppB,EAAE,cAAcuD,GAAG,SAAU,qBAAqB,SAAUlB,GACxDA,EAAEzC,iBAEF,IAAIypB,EAAerpB,EAAE,wBAAwByC,KAAK,gBAElDzC,EAAEwP,UAAUc,QACZtQ,EAAEP,MAAM+B,QAAQ,cAAe/B,KAAKzB,OACpCgC,EAAE6G,KAAK,CACHC,IAAKrH,KAAKzB,MACVyE,KAAM,CACF6mB,YAAa7pB,KAAKzB,MAClBwoB,SAAU6C,GAEdna,OAAQ,MACRhJ,QAAS,SAAUgG,GACflM,EAAE,iBAAiB+J,QAAQwE,KAAKrC,GAChClM,EAAEwP,UAAUC,MAChB,EACAlJ,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,GACJ,E,8BCtDJ,SAAS8Z,EAAUC,EAAUC,GACzB,IAAIC,EAAWF,EAASvpB,KAAKwpB,GAC7BzpB,EAAEypB,GAAU1f,QAAQwE,KAAKmb,EAASnb,OACtC,CAQA,SAASob,EAAkBH,GACvBxpB,EAAE,sBAAsBE,MAAK,WACzBF,EAAEP,MAAMY,YAAY,UACpB,IAAIupB,EAAYJ,EAASvpB,KAAK,IAAMD,EAAEP,MAAM,GAAGqU,UAAU+J,QAAQ,KAAM,MACvE+L,EAAUnpB,SAAS,UACnBmpB,EAAU3pB,KAAK,gBAAgB4B,KAAK,gBAAiB,OACzD,IAEA0nB,EAAUC,EAAU,eACxB,CAQA,SAASK,EAAa3d,GAClB,IAAIsd,EAAWxpB,EAAEkM,GACb4d,EAAkB,CAClB,eAAgBH,GAIpB,CACI,eACA,cACA,qBACA,gBACA,aACA,cACA,qBACA,+BACA,0CACFzgB,SAAQ,SAAUugB,GAChBF,EAAUC,EAAUC,EACxB,IAEAhsB,OAAO+V,KAAKsW,GAAiB5gB,SAAQ,SAAUugB,GAC3CK,EAAgBL,GAAUD,EAC9B,GACJ,CA8BA,SAASO,IACL/pB,EAAE,0BAA0BE,MAAK,WACNF,EAAE,0BAA0BiC,QAAQ,0BAA0BvB,WACpEL,YAAY,eAAeA,YAAY,eAAeA,YAAY,eAAeI,SAAS,cAC/G,GACJ,CAEA,IAAMoe,EAAgBtd,SAASud,qBAAqB,UAAU,GACxDC,EAAiBxd,SAASyd,gBAAgBC,aAE5C+K,EAAyB,SAACljB,EAAK2f,EAAWzoB,GAC1C,IAAI0oB,EAAQ,IAAIG,OAAOJ,EAAY,UAC/BzlB,EAAQ8F,EAAI9F,MAAM0lB,GACtB,OAAI1lB,EAAM1B,OAAS,EACR0B,EAAM,IAAM8F,EAAI3F,QAAQ,MAAQ,EAAI,GAAK,KAAOslB,EAAY,IAAMzoB,EAAQgD,EAAM,GAEhF8F,GAAOA,EAAI3F,QAAQ,MAAQ,EAAI,IAAM,KAAOslB,EAAY,IAAMzoB,CAE7E,EAEIisB,EAAW,SAACnjB,EAAK2f,EAAWD,GAC5B,IAAIxlB,EAAQ8F,EAAI9F,MAAMylB,GACtB,KAAIzlB,EAAM1B,OAAS,GA4Bf,OAAKknB,GAK0D,IAAvDA,EAASrlB,QAAQ,iCACV,GACG,IANiD,IAA3D2F,EAAI3F,QAAQ,0CACL,GACG,GA9BlB,IAAI4J,EAAO/J,EAAM,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAK,GAC7C,GAAKwlB,GAaD,IAA2D,IAAvDA,EAASrlB,QAAQ,kCACjB,GAAIiH,SAAS2C,EAAM,IAAM,IAAO,EAE5B,OADAmf,EAAY9hB,SAAS2C,EAAM,IAAM,GAC1B3C,SAAS2C,EAAM,IAAMmf,OAGhC,GAAI9hB,SAAS2C,EAAM,IAAM,IAAO,EAE5B,OADAmf,EAAY9hB,SAAS2C,EAAM,IAAM,GAC1B3C,SAAS2C,EAAM,IAAMmf,OApBpC,IAA+D,IAA3DpjB,EAAI3F,QAAQ,2CACZ,GAAIiH,SAAS2C,EAAM,IAAM,IAAO,EAAG,CAC/B,IAAImf,EAAY9hB,SAAS2C,EAAM,IAAM,GACrC,OAAO3C,SAAS2C,EAAM,IAAMmf,CAChC,OAEA,GAAI9hB,SAAS2C,EAAM,IAAM,IAAO,EAE5B,OADAmf,EAAY9hB,SAAS2C,EAAM,IAAM,GAC1B3C,SAAS2C,EAAM,IAAMmf,CA2BhD,EAEA,SAASpQ,IACL9Z,EAAE,qDAAqDmU,IAAI,CACvDI,QAAS,QACTC,WAAY,WAEpB,CACA,SAAS2V,IACLnqB,EAAE,qDAAqDmU,IAAI,CACvDI,QAAS,OACTC,WAAY,UAEpB,CACA,SAAS6K,IACL,IAAIpL,EAAcjU,EAAE,sBAAsBkU,SAC1C,GAAIpM,OAAO+K,SACP,GAAI7S,EAAE,6BAA6BV,OAAS,EAAG,CAC3C,IAAI4U,EAASlU,EAAE,8BAA8BkU,SAC7ClU,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQF,EACRG,MAAO,SAEPrU,EAAE,6BAA6BV,OAAS,GACxCU,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQ,QAGpB,MACIpU,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQH,EACRI,MAAO,QAIvB,CA6BA,IAaM+V,EAA2B,WAC7BpqB,EAAE,wBAAwBS,SAAS,UACnCT,EAAE,wBAAwBmU,IAAI,CAC1B1M,SAAU,GACVe,IAAK,GACL6L,MAAO,GACPD,OAAQ,GACR2T,KAAM,GACNsC,OAAQ,KAEZrqB,EAAE,QAAQK,YAAY,aAC1B,EAuBA,SAASiqB,IAGL,IAFA,IAAIxjB,EAAMvF,SAASiQ,SAASC,KACxB8Y,EAAKzjB,EAAIqD,UAAUrD,EAAI3F,QAAQ,KAAO,GAAGH,MAAM,KAC3CjE,EAAI,EAAGytB,EAAS,CAAC,EAAGztB,EAAIwtB,EAAGjrB,OAAQvC,IACvCwtB,EAAGxtB,GAAKwtB,EAAGxtB,GAAGiE,MAAM,KACpBwpB,EAAOD,EAAGxtB,GAAG,IAAM0tB,mBAAmBF,EAAGxtB,GAAG,IAEhD,OAAOytB,CACX,CAEA,SAASE,IACL,IAAIC,EAAiB3qB,EAAE,WACnB4qB,EAAiBD,EAAeE,KAAK,UAErCC,EAAWH,EAAe9oB,KAAK,MAC/BkpB,EAAeJ,EAAe9oB,KAAK,iBAEvC8oB,EAAengB,WAAW,iBAE1BogB,EAAe/oB,KAAK,KAAMipB,EAAW,UACrCF,EAAe/oB,KAAK,gBAAiBkpB,GACrCH,EAAe/oB,KAAK,WAAY,IACpC,CAEA,SAASmpB,IACLhrB,EAAE,QAAQuD,GAAG,YAAY,WACrBsE,YAAW,WACP7H,EAAE,QAAQ6B,KAAK,WAAY,IAC/B,GAAG,IACP,GACJ,CAEA/E,EAAOD,QAAU,CAEbouB,uBAAwB,WAEpBD,GACJ,EAGAE,6BAA8B,WAC1BlrB,EAAEuB,UAAUmS,OAAM,WAEdgX,GACJ,GACJ,EAGAS,YAAa,WAETnrB,EAAE,QAAQuD,GAAG,SAAU,WAAW,SAAUlB,GACxCA,EAAEzC,iBAEF,IAAIypB,EAAerpB,EAAE,wBAAwByC,KAAK,gBAElDzC,EAAEwP,UAAUc,QACZtQ,EAAEP,MAAM+B,QAAQ,cAAe/B,KAAK4c,QAAQ5K,MAEpBzR,EAAEP,MAA1B,IAEI2rB,EADAC,EAAerrB,EAAEP,MAAMiB,SAAS,aAAamB,KAAK,MAEtD,OAAQwpB,GACR,IAAK,kBACDD,EAAW,eACX,MACJ,IAAK,mBACDA,EAAW,cACX,MACJ,QACIA,EAAW,gBAEf,IAAItkB,EAAM9G,EAAEP,MAAMsC,MACdupB,EAAqBtB,EAAuBljB,EAAK,WAAYuiB,GAE7DkC,EAAmBjB,IAEnBkB,EAAgBD,GAAoBA,EAAiB/E,SAAW+E,EAAiB/E,SAAW,KAGhGxmB,EAAE6G,KAAK,CACHC,IAAKwkB,EACL7oB,KAAM,CAAEgpB,UAAU,GAClBvc,OAAQ,MACRhJ,QAAS,SAAUgG,GACflM,EAAE,iBAAiB+J,QAAQwE,KAAKrC,GAChC6d,IACA/pB,EAAEwP,UAAUC,OACZ,IAAIic,EAAOC,UAAU3rB,EAAE,cAAc+B,OASrC,GARqB,OAAjBspB,IACAK,EAAO1B,EAAuB0B,EAAM,QAASL,IAE3B,OAAlBG,IACAE,EAAO1B,EAAuB0B,EAAM,WAAYF,IAEpD1jB,OAAO8jB,QAAQC,aAAa,GAAI,GAAIH,GACZ1rB,EAAE,cAAc+B,MACjB,CACnB,IAAI+pB,EAAUvqB,SAASiQ,SAASC,KAC5Bsa,EAAa/B,EAAuB8B,EAAS,WAAY9rB,EAAE,sBAAsB6B,KAAK,yBACtFmqB,EAAYhsB,EAAE,wCAAwCC,KAAK,UAAUwC,KAAK,aAC9EspB,EAAa/B,EAAuB+B,EAAY,OAAQC,GACxDlkB,OAAO8jB,QAAQC,aAAa,GAAI,GAAIE,EACxC,CAMA/rB,EAAEuB,UAAUtB,KAAK,uBAAuBI,YAAY,sBAGpDL,EAAEuB,UAAUC,QAAQ,6BAGpBwT,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,SACfC,YAAa,OACbC,WAAYwP,EACZa,UAAW,OACXC,YAAad,GAErB,EACA7kB,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,IACD+L,MAAK,kBAAMxb,EAAE,QAAQwB,QAAQ,6BAA6B,GACjE,GACJ,EAEA2qB,WAAY,WAERnsB,EAAE,QAAQuD,GAAG,SAAU,6BAA6B,SAAUlB,GAE1D,IACI+oB,EACJ,OAHA/oB,EAAEzC,iBACiBI,EAAEP,MAAMgD,KAAK,OAGhC,IAAK,kBACD2oB,EAAW,eACX,MACJ,IAAK,mBACDA,EAAW,cACX,MACJ,QACIA,EAAW,gBAEf,IAAI/B,EAAerpB,EAAE,wBAAwByC,KAAK,gBAClDzC,EAAEP,MAAM+B,QAAQ,cAAe/B,KAAK4c,QAAQ5K,MAC5C,IAAI3K,EAAMrH,KAAK4c,QAAQ5K,KACnB6Z,EAAqBtB,EAAuBljB,EAAK,WAAYuiB,GACjErpB,EAAEwP,UAAUc,QACZtQ,EAAE6G,KAAK,CACHC,IAAKwkB,EACLpc,OAAQ,MACRhJ,QAAS,SAAUgG,GACflM,EAAE,iBAAiB+J,QAAQwE,KAAKrC,GAChC6d,IACA/pB,EAAEwP,UAAUC,OACZ,IAAIic,EAAOC,UAAU3rB,EAAE,cAAc+B,OACrC+F,OAAO8jB,QAAQC,aAAa,GAAI,GAAIH,GAEpCtB,IACAtQ,IAEA9Z,EAAEuB,UAAUC,QAAQ,6BAEpBwT,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,SACfC,YAAa,OACbC,WAAYwP,EACZa,UAAW,OACXC,YAAad,GAErB,EACA7kB,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,GACJ,EAEA2c,SAAU,WAENpsB,EAAEuB,UAAUgC,GAAG,QAAS,gBAAgB,SAAUlB,GAC9CA,EAAExC,kBACF,IAAIwsB,EAAcrsB,EAAEP,MAAMoC,KAAK,QAC3ByqB,EAAatsB,EAAEP,MAAMgD,KAAK,UAC1B4mB,EAAerpB,EAAEP,MAAMgD,KAAK,gBAC5B8pB,EAAqBvsB,EAAE,eAAe+B,MACtCyqB,EAAapkB,SAAS,IAAIme,gBAAgB8F,GAAazuB,IAAI,UAE/DoC,EAAE,YAAYoC,SACdC,EAAEzC,iBAEFI,EAAEwP,UAAUc,QACZtQ,EAAEP,MAAM+B,QAAQ,kBAAmBa,GACnCrC,EAAE6G,KAAK,CACHC,IAAKulB,EACL5pB,KAAM,CACF6mB,YAAa+C,EACbpa,OAAQqa,EACR9F,SAAU6C,EACVoC,UAAU,GAEdvc,OAAQ,MACRhJ,QAAS,SAAUgG,GACflM,EAAE,gBAAgB0L,YAAYQ,GAlYlD,SAA2BA,GACRlM,EAAE,SAAS8L,OAAO9L,EAAEkM,IACRjM,KAAK,gBAAgBwC,KAAK,gBAAgB+E,QACzD0B,SAAQ,SAAUujB,GAC1BzsB,EAAE,UAAYysB,EAAOtjB,IAAIpH,IAAI0qB,EAAO3lB,IACxC,GACJ,CA6XoB4lB,CAAkBxgB,GAClB6d,IACA/pB,EAAEwP,UAAUC,OACZ,IAAIic,EAAOC,UAAU3rB,EAAE,cAAc+B,OACjC4qB,EAAmBprB,SAASiQ,SAASC,KAAKtQ,QAAQ,YAClDqlB,GAAiC,IAAtBmG,EAA0BprB,SAASiQ,SAASC,KAAKX,OAAO6b,GAAoB,GAC3F,GAA2B,SAAvBJ,EACiB,KAAb/F,IACAkF,EAAOA,EAAO,IAAMlF,EAASxlB,MAAM,KAAK,IAE5C8G,OAAO8jB,QAAQC,aAAa,GAAI,GAAIH,OACjC,CACH,IACIkB,GAAiC,IADdlB,EAAKvqB,QAAQ,MACMuqB,EAAK1qB,MAAM,OAAO,GAAIA,MAAM,KAAK,GAAK,GAChF0qB,EAAO1B,EAAuBzoB,SAASiQ,SAASC,KAAM,QAAS,GAC/Dia,EAAO1B,EAAuB0B,EAAM,KAAMkB,GACzB,KAAbpG,IAAkD,IAA/BkF,EAAKvqB,QAAQ,eAChCuqB,EAAOA,EAAO,IAAMlF,EAASxlB,MAAM,KAAK,IAE5C8G,OAAO8jB,QAAQC,aAAa,GAAI,GAAIH,GAChC1rB,EAAE,QAAQI,SAAS,WACnBJ,EAAE,QAAQK,YAAY,UAEmC,kCAAzDL,EAAE,sBAAsB6B,KAAK,wBAC7B7B,EAAE,4BAA4BC,KAAK,OAAOkU,IAAI,SAAU,SACrDnU,EAAE,4BAA4BC,KAAK,OAAOkU,IAAI,SAAU,QACnE,CAEAa,UAAU5T,KAAK,CACXjC,MAAO,WACPuc,cAAe,cAGnB1b,EAAE,sBAAsBiD,GAAGupB,GAAYvsB,KAAK,wBAAwBoD,QAEpErD,EAAEuB,UAAUC,QAAQ,6BACpBxB,EAAE,QAAQwB,QAAQ,uBAAwB,CAAC,CAACgrB,WAAYA,IAC5D,EACAjmB,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,GACJ,EAEAod,YAAa,WAET7sB,EAAEuB,UAAUgC,GACR,QACA,qJACA,SAAUlB,GAEN,GADgBrC,EAAEP,MAAMwC,QAAQ,yBAClB3C,OAAS,EAAG,CACtB,IACIqC,EADAmrB,EAAY9sB,EAAEP,MAAMgD,KAAK,UAEzBqqB,EAAU3a,cAAchR,QAAQ,aAAe,IAC/CQ,EAAO,YAEPmrB,EAAU3a,cAAchR,QAAQ,UAAY,IAC5CQ,EAAO,SAEPmrB,EAAU3a,cAAchR,QAAQ,WAAa,IAC7CQ,EAAO,cAEPmrB,EAAU3a,cAAchR,QAAQ,SAAW,IAC3CQ,EAAO,QAEPmrB,EAAU3a,cAAchR,QAAQ,WAAa,IAC7CQ,EAAO,SAEX,IAAIorB,EAAiB/sB,EAAEP,MAAMgD,KAAK,kBAClCuS,UAAU5T,KAAK,CACXjC,MAAO,eACPuc,cAAe,SACfC,YAAaha,EACbia,WAAYmR,EACZd,UAAWtqB,EACXuqB,YAAaa,GAErB,CAEA,IAAI1D,EAAerpB,EAAE,wBAAwByC,KAAK,gBAClDJ,EAAEzC,iBACFyC,EAAExC,kBACFG,EAAEwP,UAAUc,QACZtQ,EAAEP,MAAM+B,QAAQ,gBAAiBa,GACjC,IAAIkpB,EAAmBjB,IACvB,GAAIiB,EACA,IAAIyB,EAAQzB,EAAiByB,OAAS,KAClCxB,EAAgBD,EAAiB/E,UAAY,KAErD,IAAIyG,GAAyD,GAA1CjtB,EAAEP,MAAMgD,KAAK,QAAQtB,QAAQ,SAE5CsB,EAAO,CACP+jB,SAAU6C,EACVzO,KAAM5a,EAAE,gBAAgByC,KAAK,eAC7B6mB,YAAatpB,EAAEP,MAAMgD,KAAK,QAC1BgpB,UAAU,EACVD,cAAeA,EACf3Y,SAAU/K,OAAO+K,UAEjBoa,IACAxqB,EAAKuqB,MAAQA,GAGjBhtB,EAAE6G,KAAK,CACHC,IAAK9G,EAAEP,MAAMgD,KAAK,QAClBA,KAAMA,EACNyM,OAAQ,MACRhJ,QAAS,SAAUgG,GArgBvC,IACQghB,EAqgBgBrD,EAAa3d,IArgB7BghB,EAAUltB,EAAE,oCAAoCC,KAAK,OAC7CX,OAAS,GACjBU,EAAE,sBAAsBmU,IAAI,UAAW,QACvCnU,EAAE,2BAA2BmU,IAAI,UAAW,SAC5CnU,EAAE,uBAAuBS,SAAS,UAClCT,EAAE,yBAAyBK,YAAY,UACvCL,EAAE,2BAA2B+J,QAAQwE,KAAK,KAAO2e,EAAQ5tB,OAAS,QAElEU,EAAE,sBAAsBmU,IAAI,UAAW,SACvCnU,EAAE,2BAA2BmU,IAAI,UAAW,QAC5CnU,EAAE,uBAAuBK,YAAY,UACrCL,EAAE,yBAAyBS,SAAS,WA4fpBspB,IACA,IAAI2B,EAAOC,UAAU3rB,EAAE,cAAc+B,OAWrC,GAVc,OAAVirB,IACAtB,EAAO1B,EAAuB0B,EAAM,QAASsB,IAE3B,OAAlBxB,IACAE,EAAO1B,EAAuB0B,EAAM,WAAYF,IAEpD1jB,OAAO8jB,QAAQC,aAAa,GAAI,GAAIH,GACpC1rB,EAAE,WAAWga,eACbha,EAAEwP,UAAUC,OACYzP,EAAE,cAAc+B,MACjB,CACnB,IAAI+pB,EAAUvqB,SAASiQ,SAASC,KAC5Bsa,EAAa/B,EAAuB8B,EAAS,WAAY9rB,EAAE,sBAAsB6B,KAAK,yBACtFmqB,EAAYhsB,EAAE,wCAAwCC,KAAK,UAAUwC,KAAK,aAC9EspB,EAAa/B,EAAuB+B,EAAY,OAAQC,GACxDlkB,OAAO8jB,QAAQC,aAAa,GAAI,GAAIE,EACxC,CACc,OAAViB,IACAhtB,EAAEuB,UAAUtB,KAAK,sBAAwB+sB,EAAQ,MAAMpiB,KAAK,YAAY,GACxE5K,EAAE,WAAWga,aAAa,YAI9Bha,EAAE,0BAA0BW,KAAKX,EAAE,0BAA0B6B,KAAK,uBAClE7B,EAAE,0BAA0B6B,KAAK,aAAc7B,EAAE,0BAA0B6B,KAAK,sBACpF,EACA0E,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,IACD+L,MAAK,WAAYxb,EAAE,QAAQwB,QAAQ,8BAA+BxB,EAAE,0BAA0BqD,OAAO,GAC5G,GACR,EAEA8pB,eAAgB,WACZntB,EAAEuB,UAAUgC,GAAG,QAAS,uBAAuB,WAK3C,IA/XaqW,EA2Xb5Z,EAAE,qBAAqBS,SAAS,cAChCT,EAAE,uBAAuBS,SAAS,UAClCT,EAAE,wBAAwBK,YAAY,UACtCL,EAAE,wBAAwBS,SAAS,WACnBT,EAAE,6CAA6CC,KAAK,0DAA0D0W,UACpH,GAAGtT,SAhYAuW,EAiYG5Z,EAAE,gEA/XhBotB,OAAM,WACZ3tB,KAAK4D,OACT,IAAG,WACC5D,KAAK4tB,MACT,IAAGC,SAAQ,SAASnuB,GAChB,GAAsB,IAAlBA,EAAM6X,QAAV,CAGA,IAAIN,EAAiBkD,EAAU3Z,KATjB,kDASiC0W,UAAU/K,QAAO,SAACpN,GAAQ,OAAOA,EAAEoY,YAAc,IAC1FC,EAAmBH,EAAevV,QAAQI,SAASuV,eACrD3X,EAAM4X,UAAiC,IAArBF,IAClBH,EAAeA,EAAepX,OAAS,GAAG+D,QAC1ClE,EAAMS,mBAELT,EAAM4X,UAAYL,EAAepX,OAAS,GAAKuX,IAAqBH,EAAepX,OAAS,IAC7FoX,EAAe,GAAGrT,QAClBlE,EAAMS,iBATV,CAWJ,IA+WQ,IAAI2tB,EAAOvtB,EAAE,uBAAuByC,KAAK,QACzCzC,EAAE,wBAAwBK,YAAY,uBAAuBI,SAAS,sBACtET,EAAE,mBAAmBE,MAAK,WACtBF,EAAEP,MAAMiB,WAAWmB,KAAK,aAAc0rB,EAC1C,IACAvtB,EAAE,wBAAwBE,MAAK,WAE3B,GADAF,EAAEP,MAAMY,YAAY,WACW,MAA3BL,EAAEP,MAAM0U,IAAI,WAAoB,CAChC,IAAIqZ,EAAYxtB,EAAEP,MAAMgD,KAAK,OAC7BzC,EAAE,YAAcwtB,GAAWntB,YAAY,UACvCL,EAAE,aAAewtB,GAAW/sB,SAAS,SACzC,CACJ,IACAT,EAAEuB,UAAUtB,KAAK,uBAAuBI,YAAY,qBACxD,GACJ,EAEAotB,gBAAiB,WACbztB,EAAEuB,UAAUgC,GAAG,QAAS,wBAAwB,WAC5CvD,EAAE,qBAAqBK,YAAY,cACnCL,EAAE,wBAAwBS,SAAS,UACnCT,EAAE,uBAAuBK,YAAY,UACrCL,EAAE,wBAAwBK,YAAY,WACtCL,EAAE,qBAAqBqD,OAC3B,GACJ,EAEAqqB,gBAAiB,WACb1tB,EAAEuB,UAAUmS,OAAM,WACd1T,EAAE,eAAemU,IAAI,QAASnU,EAAE,mBAAmBijB,QACvD,GACJ,EAEA0K,kBAAmB,WACf3tB,EAAEuB,UAAUgC,GAAG,QAAS,mBAAmB,WACvChC,SAASqL,eAAe,cAAc2P,UAAUqR,OAAO,OAC3D,GACJ,EAEAC,uBAAwB,WACpB/lB,OAAOgmB,QAAU,SAAU3uB,GACvB,IAAKA,EAAMmC,OAAOysB,QAAQ,YAAa,CACnC,IACIhxB,EADAixB,EAAYzsB,SAASsgB,uBAAuB,oBAEhD,IAAK9kB,EAAI,EAAGA,EAAIixB,EAAU1uB,OAAQvC,IAAK,CACnC,IAAIkxB,EAAeD,EAAUjxB,GACzBkxB,EAAa1R,UAAU2H,SAAS,SAChC+J,EAAa1R,UAAUna,OAAO,OAEtC,CACJ,CACJ,CACJ,EAEA8rB,4BAA6B,WACzBluB,EAAEuB,UAAUgC,GAAG,QAAS,+BAA+B,WACnD,IAAI4qB,EAAenuB,EAAEP,MACjB2uB,EAAgBpuB,EAAE,WAAWQ,SAAS,UAAUqB,KAAK,SACrDwsB,EAAWruB,EAAE,iBAAiB+B,MAC9BwqB,EAAqBvsB,EAAE,eAAe+B,MAC1C,QAAiBxC,IAAb8uB,GAAsC,SAAZA,EAAqB,CAC/CruB,EAAE,sBAAsB6B,KAAK,uBAAwB7B,EAAEmuB,GAAc1rB,KAAK,QAC1EzC,EAAE,sBAAsByC,KAAK,kBAAmBzC,EAAEmuB,GAAc1rB,KAAK,QACrEzC,EAAEwP,UAAUc,QACZ,IAAIwb,EAAUvqB,SAASiQ,SAASC,KAChC,GAA2B,SAAvB8a,EAA+B,CAC/B,IAAI+B,EAActuB,EAAE,wCAAwCC,KAAK,UAAUwC,KAAK,QAChF6rB,EAActE,EAAuBsE,EAAa,WAAYtuB,EAAEmuB,GAAc1rB,KAAK,QACnF,IAAI8rB,EAAatE,EAAS6B,EAAS,KAAM9rB,EAAEmuB,GAAc1rB,KAAK,QAC9D6rB,EAActE,EAAuBsE,EAAa,QAAS,GAC3DA,EAActE,EAAuBsE,EAAa,KAAMC,EAC5D,CACA,IAAIxC,EAAa/B,EAAuB8B,EAAS,WAAY9rB,EAAEmuB,GAAc1rB,KAAK,QAClFzC,EAAE6G,KAAK,CACHC,IAAKwnB,GAAevC,EACpBtpB,KAAM,CAAEgpB,UAAU,GAClBvc,OAAQ,MACRhJ,QAAS,SAAUgG,GACf,IAAIsiB,EACAC,EAAe,GAEnB,GAAKlC,EAuCE,CACH1C,EAAa3d,GACb6d,IACoC,kCAAhC/pB,EAAEmuB,GAAc1rB,KAAK,OACrBzC,EAAE,4BAA4BC,KAAK,OAAOkU,IAAI,SAAU,SACrDnU,EAAE,4BAA4BC,KAAK,OAAOkU,IAAI,SAAU,SAC/DnU,EAAEwP,UAAUC,OACRzP,EAAE,QAAQI,SAAS,WACnBJ,EAAE,QAAQK,YAAY,UAE1B,IAAI0K,EAAOkf,EAAS8B,EAAY,KAAM,MACtCA,EAAa/B,EAAuB+B,EAAY,QAAS,GACzDA,EAAa/B,EAAuB+B,EAAY,KAAMhhB,GACtDjD,OAAO8jB,QAAQC,aAAa,GAAI,GAAIE,GACpC/rB,EAAE,QAAQwB,QAAQ,mCAGlB,IAAIwqB,EAAYhsB,EAAEuB,UAAUtB,KAAK,yCAAyCwC,KAAK,aAE/E,OADsBzC,EAAEuB,UAAUtB,KAAK,sBAAsBwC,KAAK,oBAElE,IAAK,gCACDgsB,EAAe,iBACfD,EAAoB,iBACpB,MAEJ,IAAK,gCACDC,EAAe,iBACfD,EAAoB,iBAIxBxZ,UAAU5T,KAAK,CACXjC,MAAO,eACPuvB,YAAaF,IAGjBxuB,EAAE,QAAQwB,QAAQ,2BAA4B,CAC1CmtB,aAAc,eACdC,gBAAiB5C,EACjB6C,WAAY,eACZH,YAAaD,GAErB,KAjFyB,CACrB5E,EAAa3d,GACb6d,IACA/pB,EAAE,WAAW4K,KAAK,QAASwjB,GAC3BpuB,EAAE,WAAWga,eACbha,EAAEwP,UAAUC,OACZsc,EAAa/B,EAAuB+B,EAAY,QAAS,GACzDA,EAAa/B,EAAuB+B,EAAY,KAAM/rB,EAAE,cAAc+B,OACtE+F,OAAO8jB,QAAQC,aAAa,GAAI,GAAIE,GACpC/rB,EAAE,QAAQwB,QAAQ,mCAClB,IAAIglB,EAAWxmB,EAAEmuB,GAAc1rB,KAAK,OACpC,OAAQ+jB,GACR,IAAK,uBAAwBiI,EAAe,QACxC,MACJ,IAAK,uBAAwBA,EAAe,QACxC,MACJ,IAAK,sBAAuBA,EAAe,OAI3C,GAA0B,MAD1BD,EAAoBC,GAEhB,OAAQjI,GACR,IAAK,gCAAiCgI,EAAoB,iBACtD,MACJ,IAAK,gCAAiCA,EAAoB,iBAK1DxuB,EAAEuB,UAAUtB,KAAK,2CAA2CX,OAAS,IACrEmvB,GAAgB,UAGpBzZ,UAAU5T,KAAK,CACXjC,MAAO,eACPuvB,YAAaF,IAGjBxuB,EAAE,QAAQwB,QAAQ,2BAA4B,CAAEktB,YAAaD,GACjE,EA4CAzuB,EAAEuB,UAAUtB,KAAK,uBAAuBI,YAAY,sBAE9C,YAAayuB,iBAAiBnwB,WAgBhCqB,EAAEuB,UAAUC,QAAQ,6BAfLD,SAASokB,iBAAiB,uBAClCzc,SAAQ,SAAA6lB,GACX,IAAMC,EAAQhvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGpB,KAAK,UACrCotB,EAAQjvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGpB,KAAK,UACrCqtB,EAASlvB,EAAE+uB,GAAKltB,KAAK,UACvBmtB,GAASC,IACTjvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGuH,WAAW,UAAU3I,KAAK,cAAemtB,GACjEhvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGuH,WAAW,UAAU3I,KAAK,cAAeotB,IAEjEC,GACAlvB,EAAE+uB,GAAKvkB,WAAW,UAAU3I,KAAK,cAAeqtB,EAExD,GAKR,EACA3oB,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,IACD+L,MAAK,WAAYxb,EAAE,QAAQwB,QAAQ,8BAA+BkpB,IAAyBM,GAAiC,GACnI,KAAO,CAEOhrB,EAAEmuB,GAAc1rB,KAAK,QAAqBzC,EAAEmuB,GAAc1rB,KAAK,QAAkBzC,EAAEmuB,GAAc1rB,KAAK,KAAsBzC,EAAEmuB,GAAc1rB,KAAK,OAC3JzC,EAAE,sBAAsByC,KAAK,kBAAmBzC,EAAEmuB,GAAc1rB,KAAK,QACrEzC,EAAEwP,UAAUc,QACRwb,EAAUvqB,SAASiQ,SAASC,KAAhC,IACI0d,EAASnF,EAAuBliB,OAAO0J,SAASC,KAAM,WAAYzR,EAAEmuB,GAAc1rB,KAAK,QAE3FzC,EAAE6G,KAAK,CACHC,IAAKqoB,EACL1sB,KAAM,CAAEgpB,UAAU,GAClBvc,OAAQ,MACRhJ,QAAS,SAAUgG,GACf2d,EAAa3d,GACblM,EAAE,WAAW4K,KAAK,QAASwjB,GAC3BpuB,EAAE,WAAWga,eACb+P,IACA/pB,EAAEwP,UAAUC,OACZsc,EAAa/B,EAAuB8B,EAAS,WAAY9rB,EAAEmuB,GAAc1rB,KAAK,QAC9EspB,EAAa/B,EAAuB+B,EAAY,QAAS,GACzDA,EAAa/B,EAAuB+B,EAAY,KAAM/rB,EAAE,cAAc+B,OACtE+F,OAAO8jB,QAAQC,aAAa,GAAI,GAAIE,GACpC/rB,EAAE,QAAQwB,QAAQ,mCAGlB,IAAIglB,EAAWxmB,EAAEmuB,GAAc1rB,KAAK,OAChCgsB,EAAe,GACnB,OAAQjI,GACR,IAAK,uBAAwBiI,EAAe,QACxC,MACJ,IAAK,uBAAwBA,EAAe,QACxC,MACJ,IAAK,sBAAuBA,EAAe,OAG3C,IAAID,EAAoBC,EACxB,GAA0B,KAAtBD,EACA,OAAQhI,GACR,IAAK,gCAAiCgI,EAAoB,iBACtD,MACJ,IAAK,gCAAiCA,EAAoB,kBAI9DxZ,UAAU5T,KAAK,CACXjC,MAAO,eACPuvB,YAAaF,IAGX,YAAaM,iBAAiBnwB,WAgBhCqB,EAAEuB,UAAUC,QAAQ,6BAfLD,SAASokB,iBAAiB,uBAClCzc,SAAQ,SAAA6lB,GACX,IAAMC,EAAQhvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGpB,KAAK,UACrCotB,EAAQjvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGpB,KAAK,UACrCqtB,EAASlvB,EAAE+uB,GAAKltB,KAAK,UACvBmtB,GAASC,IACTjvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGuH,WAAW,UAAU3I,KAAK,cAAemtB,GACjEhvB,EAAE+uB,GAAKvuB,WAAWyC,GAAG,GAAGuH,WAAW,UAAU3I,KAAK,cAAeotB,IAEjEC,GACAlvB,EAAE+uB,GAAKvkB,WAAW,UAAU3I,KAAK,cAAeqtB,EAExD,GAKR,EACA3oB,MAAO,WACHvG,EAAEwP,UAAUC,MAChB,GAER,CACJ,GACJ,EAEA2f,qBAAsB,WAClBpvB,EAAEuB,UAAUgC,GAAG,QAAS,mBAAmB,WArqB/CvD,EAAE,wBAAwBK,YAAY,UACtCL,EAAE,wBAAwBmU,IAAI,CAC1B1M,SAAU,QACVe,IAAK,EACL6L,MAAO,EACPD,OAAQ,EACR2T,KAAM,EACNsC,OAAQ,MAEZrqB,EAAE,QAAQS,SAAS,cA8pBX0pB,GACJ,GACJ,EAEAkF,sBAAuB,WACnBrvB,EAAEuB,UAAUgC,GAAG,QAAS,uBAAuB,WAC3C6mB,IACAtQ,GACJ,GACJ,EAEAwV,oBAAqB,WACjBtvB,EAAEuB,UAAUgC,GAAG,QAAS,kBAAkB,WACtCvD,EAAE,uBAAuBK,YAAY,UACrCL,EAAE,uBAAuBmU,IAAI,CACzB1M,SAAU,QACVe,IAAK,EACL6L,MAAO,EACPD,OAAQ,EACR2T,KAAM,EACNsC,OAAQ,MAEZrqB,EAAE,QAAQS,SAAS,cACnB0pB,GACJ,GACJ,EAEAoF,qBAAsB,WAClBvvB,EAAEuB,UAAUgC,GAAG,QAAS,sBAAsB,WAC1CvD,EAAE,uBAAuBS,SAAS,UAClCT,EAAE,uBAAuBmU,IAAI,CACzB1M,SAAU,GACVe,IAAK,GACL6L,MAAO,GACPD,OAAQ,GACR2T,KAAM,GACNsC,OAAQ,KAEZrqB,EAAE,QAAQK,YAAY,cACtByZ,GACJ,GACJ,EAEA0V,qBAAsB,WAClBxvB,EAAEuB,UAAUgC,GAAG,CACXksB,WAAY,WACR,IAAItmB,EAAKnJ,EAAEP,MAAMgD,KAAK,MAEtBzC,EAAE,iBAAmBmJ,GAAIgL,IAAI,UAAW,IAC5C,EACAub,WAAY,WACR,IAAIvmB,EAAKnJ,EAAEP,MAAMgD,KAAK,MAEtBzC,EAAE,iBAAmBmJ,GAAIgL,IAAI,UAAW,IAC5C,GACD,oCACP,EAEAwb,8BAA+B,WAC3B3vB,EAAEuB,UAAUgC,GAAG,QAAS,cAAc,SAAUpE,GAC5Ca,EAAE,qBAAqBE,MAAK,WACxB,GAA6C,IAAzCF,EAAEb,EAAMmC,QAAQW,QAAQxC,MAAMH,OAAc,CAC5CH,EAAMS,iBACNI,EAAEP,MAAMY,YAAY,WAEpB,IAAI8I,EAAKnJ,EAAEP,MAAMgD,KAAK,aAClB8qB,EAAOvtB,EAAE,YAAcmJ,GAAI1G,KAAK,QACpCzC,EAAE,YAAcmJ,GAAI9I,YAAY,uBAAuBI,SAAS,sBAChET,EAAE,YAAcmJ,GAAIlJ,KAAK,OAAO4B,KAAK,aAAc0rB,GACnDvtB,EAAE,0BAA4BmJ,GAAItH,KAAK,OAAQ7B,EAAE,0BAA4BmJ,GAAItH,KAAK,QACtF7B,EAAE,0BAA4BmJ,GAAIqB,WAAW,OAC7CxK,EAAE,iBAAmBmJ,GAAI9I,YAAY,mBACzC,CACJ,GACJ,GACJ,EAEAuvB,iBAAkB,WACd,IAAInM,EACJzjB,EAAEuB,UAAUgC,GAAG,UAAU,WACjBkgB,IACAjK,aAAaiK,GArxB7B,WACI,GAAIzjB,EAAE,6BAA6BV,OAAS,EAAG,CAC3C,IAAI4U,EAASlU,EAAE,+BAA+BkU,SAC1CpM,OAAO+K,SACP7S,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQF,EACRG,MAAO,SAGXrU,EAAE,qDAAqDmU,IAAI,CACvDC,OAAiB,IAATF,EACRG,MAAO,QAGnB,MACIrU,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQ,OACRC,MAAO,SAEPrU,EAAE,6BAA6BV,OAAS,GACxCU,EAAE,qDAAqDmU,IAAI,CACvDC,OAAQ,QAKxB,CA4vBgByb,IAEJ,IAAIC,EAAa9vB,EAAEuB,UAAUtB,KAAK,wBAC9B6vB,EAAWxwB,OAAS,IAAMwwB,EAAW1vB,SAAS,kBAC9C0vB,EAAW3b,IAAI,SAAU,OAE7B,IAAIwP,EAAU3jB,EAAE,sBACZ+vB,EAAqBpM,EAAQzP,SAAW,KACrBlU,EAAE,0CAGRS,SAAS,sBAC1BkjB,EAAQljB,SAAS,YACKoe,EAAckD,wBAAwBvZ,IAAMuW,KAG9D0E,EAAc5b,YAAW,WACjBioB,EAAWxwB,OAAS,IAAMwwB,EAAW1vB,SAAS,kBAC9C0vB,EAAW3b,IAAI,SAAU4b,GAE7BpM,EAAQtjB,YAAY,UACpBgf,GACJ,GAAG,KAEX,GACJ,EAEA2Q,uBAAwB,WACpBhwB,EAAEuB,UAAUmS,MAAMqW,IACtB,EAGAkG,4BAA6B,WACzBjwB,EAAEuB,UAAUmS,OAAM,WACd2L,GACJ,GACJ,EAEA6Q,kBAAmB,WACflwB,EAAEuB,UAAUgC,GAAG,QAAS,kCAAkC,SAAClB,GACvD,IACMyN,EADQ9P,EAAEqC,EAAE6C,eACAzC,KAAK,MACvBzC,EAAE,oBAAoBmU,IAAI,UAAW,KACrCnU,EAAE,iBAAmB8P,GAAKqE,IAAI,UAAW,KACzCnU,EAAE,gBAAkB8P,GAAKqE,IAAI,UAAW,IAC5C,IACAnU,EAAEuB,UAAUgC,GAAG,WAAY,kCAAkC,WACzDvD,EAAE,oBAAoBmU,IAAI,UAAW,IACzC,GACJ,EAEAgc,iBAAkB,WACdnwB,EAAEuB,UAAUgC,GAAG,QAAS,KAAK,WACzBuE,OAAO8jB,QAAQwE,UAAU,CAAEnoB,UAAWH,OAAOuoB,SAAW,SAC5D,GACJ,EAEAC,cAAe,WACXtwB,EAAEuB,UAAUgC,GAAG,6BAA6B,WAExBhC,SAASokB,iBAAiB,mBAClCzc,SAAQ,SAAA0c,GACZ,IAAIC,EAAW7lB,EAAE4lB,GAAO3iB,GAAG,GAAGpB,KAAK,kBAC/BgkB,IACI7lB,EAAE4lB,GAAOxlB,SAAS,cAClBwlB,EAAMlf,aAAa,MAAOmf,GAE1B7lB,EAAE6G,KAAK,CACHC,IAAK+e,EACL3f,QAAS,SAASzD,GACdmjB,EAAMlf,aAAa,MAAOjE,EAAKme,SACnC,IAIhB,GACJ,GACJ,E,kCC7hCJ,IAAI/K,EAAQ5W,EAAQ,GAEdsxB,IACQvwB,EAAE,kBAAkBV,OAD5BixB,IAEQvwB,EAAE,0BAA0BV,OAQ1C,SAASkxB,EAA4B/tB,EAAMmP,GACvC,IAEI6e,EAAQC,EAOR1T,EATE2T,EAAqB,gBACrBC,EAAmB,eAGrBH,EADAhuB,EAAKyD,QACIyqB,EAEAC,EAITnuB,EAAKua,YACLA,EAAYva,EAAKua,UAAUa,QAAQpb,EAAKouB,QAAS,KAGrD,IAAIC,EAAoBlf,GAAOoL,EAQ/B,GALI0T,EAAkB,yBAAyB3vB,YADnCxB,IAARqS,EACkDA,EAEAoL,EAFK,IAKrDhd,EAAE0wB,GAAiBpxB,OAAzB,CAIAU,EAAE0wB,GAAiBzwB,KAAK,+BACnBI,YAAYswB,GAAoBtwB,YAAYuwB,GAC5CnwB,SAASgwB,GAAQliB,KAAK9L,EAAKsuB,KAEhC,IAAI3S,EAAcpe,EAAE0wB,GAChBza,EAAQ,IAAIJ,EAAMuI,GAClB4S,EAAa,0CAA0CjwB,OAAOwvB,EAAoBvT,EAAY8T,GAClG9wB,EAAEgxB,GAAY1qB,OACdtG,EAAE0wB,GAAiBpqB,OACnB2P,EAAMiF,OAENrT,YAAW,WACP7H,EAAE,qCAAqCwB,QAAQ,QACnD,GAAG,IAfH,CA0BJ,CAOC,SAASyvB,EAAgBC,EAAMC,GAC5B,IAAIC,EAASD,EAASlxB,KAAK,uBACvBixB,GACAE,EAAOnxB,KAAK,WAAWQ,SAAS,WAAW0T,IAAI,UAAW,QAC1Did,EAAOnxB,KAAK,SAASI,YAAY,WAAW8T,IAAI,UAAW,MAG3Did,EAAOnxB,KAAK,SAASQ,SAAS,WAAW0T,IAAI,UAAW,QACxDid,EAAOnxB,KAAK,WAAWI,YAAY,WAAW8T,IAAI,UAAW,IAErE,CAEA,SAASkd,EAAsBF,GAC3B,IAAIG,EAAatxB,EAAE,iBAAkBmxB,GAIrC,GAD6C,QAAjCG,EAAWzvB,KAAK,cACjB,OAAO,KAElB,IAAIma,EAAQsV,EAAWzvB,KAAK,eAAiB,GACzCkJ,EAAOumB,EAAWzvB,KAAK,cAAgB,GAC3C,OAAOyvB,EAAWzvB,KAAK,YAAcma,EAAQjR,CACjD,CAEA,SAASwmB,EAAuBzhB,EAAK0hB,GAC5B1hB,GAIL9P,EAAE6G,KAAK,CACHC,IAAK9G,EAAE,+BAA+B+B,MACtCJ,KAAM,MACNc,KAAO,CACHqN,IAAKA,GAETqB,SAAU,OACVjL,QAAS,SAASP,GACRA,EAAIY,OACN0qB,EAAgBtrB,EAAI6kB,OAAQgH,EAEpC,GAER,CAEA,SAASC,IACL,IAAIjqB,EAAU,CACVkqB,WAAY,GAAF3wB,OAAKqH,SAA8B,IAArBN,OAAOC,aAAmB,UAClD4pB,UAAW,GAGX1c,EAAW,IAAI2c,sBAAqB,SAAAC,GACpCA,EAAQ3oB,SAAQ,SAAA4oB,GACZ,GAAIA,EAAMC,eAAgB,CACtB,IAAIC,EAAWhyB,EAAE8xB,EAAMxwB,QACvBiwB,EAAuBF,EAAsBW,GAAWA,GACxD/c,EAASwE,UAAUqY,EAAMxwB,OAC7B,CACJ,GACJ,GAAGkG,GAIH,OAFmB+oB,EAAoBvwB,EAAE,+BAAiCA,EAAE,8BAC/DE,MAAK,SAAC+xB,EAAGC,GAAW,OAAKjd,EAASR,QAAQyd,EAAY,IAC5Djd,CACX,CAEAnY,EAAOD,QAAU,CACbs1B,cAAe,WACXnyB,EAAEuB,UAAUgC,GAAG,QAAS,uBAAuB,SAAUlB,GACrDA,EAAEzC,iBACUI,EAAEP,MAAd,IAMIgR,EALA3J,EAAM9G,EAAEP,MAAMgD,KAAK,QACnBqN,EAAM9P,EAAEP,MAAMgD,KAAK,OACnBouB,EAAU7wB,EAAEP,MAAMgD,KAAK,SACvBsG,EAAoB/I,EAAEqC,EAAE6C,eAAejD,QAAQ,YAG5BwO,EAAnB8f,EAA+BxnB,EAAkBtG,KAAK,aACzCsG,EAAkBlH,KAAK,YAInCiF,GAAQgJ,GAAQ+gB,IAIrB7wB,EAAEwP,UAAUc,QACZtQ,EAAEP,MAAMoC,KAAK,YAAY,GACzB7B,EAAE6G,KAAK,CACHC,IAAKA,EACLnF,KAAM,OACNwP,SAAU,OACV1O,KAAM,CACFqN,IAAKuhB,EAAsBtoB,GAC3B8nB,QAASA,EACTuB,SAfO,KAgBPC,UAfQ,MAiBZnsB,QAAS,SAAUzD,GACfzC,EAAEwP,UAAUC,OACZ+gB,EAA4B/tB,EAAMgO,GAElCwgB,GAAgB,EAAMjxB,EAAEqC,EAAEf,QAAQW,QAAQ,aAC1CjC,EAAE,QAAQwB,QAAQ,2BAElBwT,UAAU5T,KAAK,CACXjC,MAAO,WACPuc,cAAe,YACfC,YAAa,MACbC,WAAY9L,GAGpB,EACAvJ,MAAO,SAAU8K,GACbrR,EAAEwP,UAAUC,OACZ+gB,EAA4Bnf,EAAKZ,GACjCzQ,EAAE,QAAQwB,QAAQ,0BACtB,IAER,GACJ,EAEA2c,WAAY,WACRne,EAAEuB,UAAUgC,GAAG,QAAS,qCAAqC,WACzD,IAAI6a,EAAcpe,EAAEP,MAAMa,SAASA,SAC/B2V,EAAQ,IAAIJ,EAAMuI,GAEtBpe,EAAE,kCAAkCsnB,OACpClJ,EAAYkJ,OACRiJ,GAAmBta,EAAMgB,QACzBjX,EAAE,QAAQI,SAAS,eAAeJ,EAAE,QAAQK,YAAY,cAC5DL,EAAE,uBAAuBwK,WAAW,WACxC,GACJ,EAEA8nB,wBAAyB,WACrB,IAAIC,EAAuBd,IAE3BzxB,EAAE,QAAQuD,GAAG,8BAA8B,WACvCgvB,EAAqBC,aACrBD,EAAuBd,GAC3B,IAEAzxB,EAAE,QAAQuD,GAAG,wBAAwB,SAAS0uB,EAAGxvB,GAC7C,IAAI+pB,EAAa/pB,EAAK+pB,WACtBxsB,EAAE,sBAAsByyB,MAAMjG,GAAYtsB,MAAK,SAAC+xB,EAAGC,GAC/CK,EAAqB9d,QAAQyd,EACjC,GACJ,IAEAlyB,EAAE,QAAQuD,GAAG,mCAAmC,SAAS0uB,EAAGxvB,GACxD,IAAIuvB,EAAWvvB,EAAKuvB,SACpBT,EAAuBF,EAAsBW,GAAWA,EAC5D,GACJ,E,6BC3LJl1B,EAAOD,QAAU,CACbmtB,uBArBJ,SAAiCljB,EAAK2f,EAAWzoB,GAC7C,IAAI0oB,EAAQ,IAAIG,OAAOJ,EAAY,UAC/BzlB,EAAQ8F,EAAI9F,MAAM0lB,GACtB,OAAI1lB,EAAM1B,OAAS,EACR0B,EAAM,IAAM8F,EAAI3F,QAAQ,MAAQ,EAAI,GAAK,KAAOslB,EAAY,IAAMzoB,EAAQgD,EAAM,GAEhF8F,GAAOA,EAAI3F,QAAQ,MAAQ,EAAI,IAAM,KAAOslB,EAAY,IAAMzoB,CAE7E,EAcIssB,eAZJ,WAGI,IAFA,IAAIxjB,EAAMvF,SAASiQ,SAASC,KACxB8Y,EAAKzjB,EAAIqD,UAAUrD,EAAI3F,QAAQ,KAAO,GAAGH,MAAM,KAC1CjE,EAAI,EAAGytB,EAAS,CAAC,EAAGztB,EAAIwtB,EAAGjrB,OAAQvC,IACxCwtB,EAAGxtB,GAAKwtB,EAAGxtB,GAAGiE,MAAM,KACpBwpB,EAAOD,EAAGxtB,GAAG,IAAM0tB,mBAAmBF,EAAGxtB,GAAG,IAEhD,OAAOytB,CACX,EAKI9hB,YAhCJ,SAAqB5B,EAAK4rB,GACtB,IAAIvD,EAASroB,EAKb,OAJAqoB,KAAoC,IAAzBA,EAAOhuB,QAAQ,KAAc,IAAM,KAAO1D,OAAO+V,KAAKkf,GAAQ9oB,KAAI,SAAUtL,GACnF,OAAOA,EAAM,IAAMq0B,mBAAmBD,EAAOp0B,GACjD,IAAG4C,KAAK,IAGZ,E","file":"setDetails.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 306);\n","'use strict';\nvar firstError = true;\n\nvar scrollAnimate = require('../components/scrollAnimate');\n\n/**\n * Validate whole form. Requires `this` to be set to form object\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n* shouldValidate: function,\n* formSubmit: boolean\n* }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateForm(event, config = {}) {\n var valid = true;\n\n if (this.checkValidity && !this.checkValidity()) {\n // safari\n if (! config.shouldValidate) valid = false;\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).find('input, select, textarea:not(.g-recaptcha-response)').each(function () {\n if (config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n\n invalidateForm(this, event, config);\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n }\n }\n }\n\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n\n if (errorFields.length) {\n var $form = $(event.target);\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n }\n return valid;\n}\n\n/**\n * Validate form fields\n * @param {jQuery.event} event - Event to be canceled if form is invalid.\n * @param {{\n * shouldValidate: function,\n * formSubmit: boolean\n * }} config - Optional configuration data\n * @returns {boolean} - Flag to indicate if form is valid\n */\nfunction validateFields(event, config) {\n var valid = true;\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n event.stopImmediatePropagation();\n }\n firstError = true;\n var errorFields = [];\n $(this).each(function () {\n if (config && config.shouldValidate && !config.shouldValidate(this)) {\n return;\n }\n if (!this.validity.valid) {\n valid = false;\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').removeClass('cc-invisible');\n }\n // invalidation also for captcha field\n $(this).trigger('invalid', {validity: this.validity, config: config});\n\n if (config.formSubmit) {\n for (let key in this.validity) {\n if (this.validity[key]) {\n var currentError = `${this.name.split('_').splice(-2).join('_')} ${key}`;\n if (errorFields.indexOf(currentError) === -1) {\n errorFields.push(currentError);\n }\n break;\n }\n }\n }\n $(this).closest('.cc-content-input').attr('data-validation-result', 'invalid');\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n }\n }\n if ($(this).is('.cc-recaptcha')) {\n $(this).siblings('.cc-feedback-message').addClass('cc-invisible');\n } else if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n\n $(this).closest('.cc-content-input').attr('data-validation-result', 'valid');\n }\n });\n\n if (errorFields.length) {\n var $form = $(this).closest('form');\n $(document).trigger('sendCustomError', {\n message: errorFields.join(', '),\n additionalData: {\n type: 'validation-error',\n category: $form.attr('data-form-name') || $form.attr('name'),\n country: $('#currentLocale').val().split('_')[1]\n }\n });\n }\n\n return valid;\n}\n\n/**\n * Remove all validation. Should be called every time before revalidating form\n * @param {element} form - Form to be cleared\n * @returns {void}\n */\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-select.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $('.alert', form).remove();\n}\nfunction invalidateForm (object, e, config={}) {\n if (e) e.preventDefault();\n if (!$(object).attr('data-no-oriental') === 'false') {\n object.setCustomValidity('');\n }\n if (!object.validity.valid) {\n var validationMessage = object.validationMessage;\n $(object).addClass('cc-error');\n if ($(object).hasClass('cc-select')) {\n $(object).parent().addClass('cc-error');\n }\n if (object.validity.patternMismatch && $(object).data('pattern-mismatch')) {\n validationMessage = $(object).data('pattern-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n if ((object.validity.rangeOverflow || object.validity.rangeUnderflow)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if ((object.validity.tooLong || object.validity.tooShort)\n && $(object).data('range-error')) {\n validationMessage = $(object).data('range-error');\n }\n if (object.validity.valueMissing && $(object).data('missing-error')) {\n validationMessage = $(object).data('missing-error');\n }\n if (object.validity.typeMismatch && $(object).data('type-mismatch')) {\n validationMessage = $(object).data('type-mismatch');\n }\n if ($(object).attr('data-no-oriental') === 'false') {\n validationMessage = $(object).data('oriental-error');\n }\n $(object).parents('.cc-form-group').find('.cc-feedback-message').children('.cc-text-message')\n .eq(0).text(validationMessage);\n\n $(this).closest('.cc-content-input').attr('data-validation-result', '');\n \n if (firstError) {\n if (!config.skipFocus) {\n scrollAnimate($(object), {center: true, scrollableParent: config.scrollableParent});\n ($(object) || $('.logo-home')).focus();\n }\n firstError = false;\n }\n }\n}\nmodule.exports = {\n invalid: function () {\n $(document).on('invalid', 'form input, form select', function (e, data) {\n invalidateForm(this, e, data ? data.config : null);\n });\n $('.cc-next-step-button').on('click', function() {\n firstError = true;\n });\n },\n\n submit: function () {\n $('form').on('submit', function (e) {\n return validateForm.call(this, e, {formSubmit: true});\n });\n },\n\n focusOut: function () {\n $('form input:not(.js-datepicker)').on('focusout', function (event) {\n if ($(this).hasClass('js-prevent-validation')) {\n return;\n } else if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n if ($(this).is('input')) {\n $(this).siblings('.cc-feedback-message').children('.cc-text-message').text('');\n } else {\n $(this).parent().parent().siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n }\n });\n $(document).on('changed.bs.select', 'select', function (event) {\n if (! $(this).val()) return;\n\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n if ($(this).hasClass('cc-select')) {\n $(this).parent().removeClass('cc-error');\n $(this).removeClass('cc-error');\n }\n }\n var found = $(this).parent().parent().children('.cc-feedback-message').children('.cc-text-message').text('').length;\n if (! found) {\n $(this).closest('.cc-form-group').find('.cc-feedback-message .cc-text-message').text('');\n }\n }\n });\n $('input[type=\"radio\"]').on('click change', function (event) {\n if (!this.validity.valid) {\n $(this).trigger('invalid', this.validity);\n invalidateForm(this, event);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this).removeClass('cc-error');\n }\n $(this).closest('.d-flex').siblings('.cc-feedback-message').children('.cc-text-message').text('');\n }\n });\n },\n\n validateContactUsPDPform: function() {\n $(document).on('click', '#submitContactUs', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRequesSizePDPform: function() {\n $(document).on('click', '.js-requestsize-button', function(e) {\n if ($(this.form).find('select#requestSize-size').val() === '') {\n $(this.form).find('select#requestSize-size').each(function () {\n var errorText = $(this).data('noitems');\n this.setCustomValidity(errorText);\n });\n }\n return validateForm.call(this.form, e);\n });\n },\n validateFindInStorePDPform: function() {\n $(document).on('click', '.js-submit-findInStore', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validatecontactOrderform: function() {\n $(document).on('click', '.js-submit-orderInfo', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateHelpWithSizeform: function() {\n $(document).on('click', '#helpWithSize-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateLoginOfCanvas: function() {\n $(document).on('click', 'form#loginOfCanvas .js-login-offcanvas', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRepairFormMyAccount: function() {\n $(document).on('click', 'form#repairForm-MyAccount .js-submit-repairForm', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateGenericCusForm: function() {\n $(document).on('click', '.js-genericCus-submit', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateRegistration: function() {\n $(document).on('click', 'form.registration button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n\n $(document).on('click', 'form.registrationemail button[type=submit]', function(e) {\n return validateForm.call(this.form, e);\n });\n },\n validateOverlayNewsletter: function() {\n // clear privacy consent error message when needed\n $(document).on('click', '.js-form-overlay-newsletter .js-privacyShopping[value=\"true\"]', function() {\n var $form = $(this.form);\n $('.js-privacy-error', $form).addClass('cc-invisible');\n });\n\n const isPrivacyConsentGranted = function($form) {\n var $privacyField = $('.js-privacyShopping[value=\"true\"]', $form);\n return !! ($privacyField.length && $privacyField.is(':checked'));\n }\n\n const areLinesSelected = function($form) {\n var $lines = $('.cc-newsletter-form-preferences', $form);\n return !! ($lines.length && $('.cc-checkbox:checked', $lines).length);\n }\n\n\n $(document).on('click', '.js-form-overlay-newsletter button[type=\"submit\"]', function(e){\n var $form = $(this.form);\n var $scrollableParent = $form.closest('.cc-overlay-info');\n\n // clear backend error messages\n $('.js-backend-errors .cc-text-message', $form).addClass('cc-invisible');\n var isFirstStep = $form.hasClass('js-form-overlay-newsletter-step1'); // this class is added only to image-two-steps modal\n\n // check privacy consent only if lines are selected ( only on second step with image-two-steps modal )\n if (!isFirstStep && areLinesSelected()) {\n var privacyGranted = isPrivacyConsentGranted($form);\n if (! privacyGranted) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n var $errorMsg = $('.js-privacy-error', $form);\n $errorMsg.removeClass('cc-invisible');\n scrollAnimate($errorMsg, {scrollableParent: $scrollableParent});\n validateForm.call(this.form, e, {scrollableParent: $scrollableParent})\n return false;\n }\n }\n\n return validateForm.call(this.form, e, {scrollableParent: $scrollableParent});\n });\n },\n validateFields: function (fields, config) {\n if (fields) {\n return validateFields.call(fields, null, config);\n }\n },\n // validateResetPwdOfCanvas: function() {\n // $(document).on('click', 'form.cc-resetpwd-form-offCanvas .js-resetPwd-request', function(e) {\n // return validateForm.call(this.form, e);\n // });\n // },\n buttonClick: function () {\n $('form button[type=\"submit\"], form input[type=\"submit\"]').on('click', function () {\n // clear all errors when trying to submit the form\n clearForm($(this).parents('form'));\n });\n },\n\n noOrientalCheck: function () {\n $(document).on('focusout', '.js-no-oriental', function () {\n if ($(this).data('oriental-error') != undefined) {\n var validationMsg = $(this).data('oriental-error');\n var regex = /^[a-zA-Z0-9 -_\\/(){}|\"!? ’'‘ÆÐƎƏƐƔIJŊŒẞÞǷȜæðǝəɛɣijŋœĸſßþƿȝĄƁÇĐƊĘĦĮƘŁØƠŞȘŢȚŦŲƯY̨Ƴąɓçđɗęħįƙłøơşșţțŧųưy̨ƴÁÀÂÄǍĂĀÃÅǺĄÆǼǢƁĆĊĈČÇĎḌĐƊÐÉÈĖÊËĚĔĒĘẸƎƏƐĠĜǦĞĢƔáàâäǎăāãåǻąæǽǣɓćċĉčçďḍđɗðéèėêëěĕēęẹǝəɛġĝǧğģɣĤḤĦIÍÌİÎÏǏĬĪĨĮỊIJĴĶƘĹĻŁĽĿʼNŃN̈ŇÑŅŊÓÒÔÖǑŎŌÕŐỌØǾƠŒĥḥħıíìiîïǐĭīĩįịijĵķƙĸĺļłľŀʼnńn̈ňñņŋóòôöǒŏōõőọøǿơœŔŘŖŚŜŠŞȘṢẞŤŢṬŦÞÚÙÛÜǓŬŪŨŰŮŲỤƯẂẀŴẄǷÝỲŶŸȲỸƳŹŻŽẒŕřŗſśŝšşșṣßťţṭŧþúùûüǔŭūũűůųụưẃẁŵẅƿýỳŷÿȳỹƴźżžẓ]+$/;\n var value = $(this).val();\n var valid = regex.test(value);\n if (value && value !== '') {\n if (!valid) {\n $(this)\n .addClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text(validationMsg);\n this.setCustomValidity(validationMsg);\n $(this).attr('data-no-oriental', false);\n } else {\n if ($(this).hasClass('cc-error')) {\n $(this)\n .removeClass('cc-error')\n .siblings('.cc-feedback-message').children('.cc-text-message')\n .text('');\n this.setCustomValidity(\"\");\n $(this).attr('data-no-oriental', true);\n }\n }\n }\n }\n });\n },\n validateRequestAppointmentform: function() {\n $(document).on('click', 'form #js-submit-Appointment', function(e) {\n e.currentTarget = $(this).closest('form#appointment');\n return validateForm.call(this.form, e);\n });\n },\n\n validateAppointmentformUser: function() {\n $(document).on('click', '.js-update-customerForm form .js-validate-form', function(e) {\n e.currentTarget = $(this).closest('form');\n return validateForm.call(this.form, e);\n });\n },\n functions: {\n validateForm: function (form, event) {\n validateForm.call($(form), event || null);\n },\n validateContactUsform: function() {\n var hasClassVisible = function (el) {\n return $(el).parents('.cc-no-visible').length === 0;\n }\n \n return validateForm.call($('form#contactUs').get(0), /* event = */ null, {shouldValidate: hasClassVisible});\n },\n clearForm: clearForm\n }\n};\n","'use strict';\n\nvar _successCallback;\nvar _failCallback;\nvar _captchaID;\n\n(function(){\n var scriptToBeLoaded = document.querySelector('#tencentCaptchaScript[src]');\n if (! scriptToBeLoaded) {\n var script = document.querySelector('#tencentCaptchaScript:not([src])');\n if (script) {\n script.setAttribute('src', script.getAttribute('data-src'));\n }\n }\n})();\n\nfunction tencetCaptchaCallback(res) {\n if (res.ret === 0) {\n // successful verification\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(res.randstr);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(res.ticket);\n \n if (! res.errorCode) {\n if (_successCallback) {\n _successCallback({\n randstr: res.randstr,\n ticket: res.ticket\n });\n }\n \n } else { // error\n if (_failCallback) _failCallback();\n }\n } else {\n if (_failCallback) _failCallback();\n // console.log('errorCode:', res.errorCode, 'errorMessage:', res.errorMessage);\n }\n}\n\nfunction tencetCaptchaLoadingErrCallback(error) {\n if (_failCallback) _failCallback();\n}\n\nfunction showCaptcha (config = {}) {\n _captchaID = config.captchaID;\n _successCallback = config.success;\n _failCallback = config.fail;\n\n try {\n var captchaAppID = $('.js-tencentCaptchaAppID').val();\n var captcha = new TencentCaptcha(captchaAppID, tencetCaptchaCallback, {});\n captcha.show();\n } catch (error) {\n tencetCaptchaLoadingErrCallback(error);\n }\n}\n\nmodule.exports = {\n verify: function() {\n $.ajax({\n type: 'POST',\n url: $('input[name=\"tencent-captcha-verify-url\"]').val(),\n data: {\n randstr: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_randstr\"]`).val(),\n ticket: $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val(),\n },\n success: function(data) {\n if (data.success) {\n if (_successCallback) _successCallback(data);\n } else {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n },\n error: function(data) {\n if (_failCallback) _failCallback(data);\n $(`.js-tencent-captcha-container[data-id=${_captchaID}] [name=\"tencent_captcha_ticket\"]`).val('');\n }\n });\n },\n\n /**\n * Check if the Tencent captcha script has already been loaded into the HTML.\n */\n isAlreadyLoaded: function() {\n return $('#tencentCaptchaScript').length;\n },\n\n /**\n * Show the Tencent captcha popup\n * @param {JQuery} $tencentCaptchaEl \n * @param {Promise} promise \n */\n initialize: function($tencentCaptchaEl, promise) {\n var $captchaInput = $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl);\n if ($captchaInput.length && ! $captchaInput.val()) {\n showCaptcha({\n captchaID: $tencentCaptchaEl.attr('data-id'),\n success: (data) => promise.resolve(data),\n fail: () => promise.reject()\n });\n } else {\n promise.resolve();\n }\n },\n\n /**\n * Invalidate the captcha element\n * @param {JQuery} $tencentCaptchaEl \n */\n invalidateCaptcha: function($tencentCaptchaEl) {\n $('input[name=\"tencent_captcha_ticket\"]', $tencentCaptchaEl).val('');\n }\n}\n","'use strict';\n\nfunction scrollToElement(element, options = {}) {\n var {center, offset, focus, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (element && element.length) {\n if (element.length > 1) {\n element = element.eq(0);\n }\n var position = element.offset().top || 0;\n if (! position) {\n position = element.parent().length ? element.parent().offset().top : 0\n }\n\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (offset) {\n position = position * offset;\n }\n \n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position },\n {\n duration: duration || 500,\n complete: () => {\n setTimeout(() => {\n if (focus) {\n element.focus();\n }\n if (disableScroll) {\n $('body').removeClass('prevent-user-scroll');\n }\n }, 500);\n }\n }\n );\n } else {\n $('.logo-home, .cc-logo-link').eq(0).focus();\n }\n }, delay || 0);\n}\n\n\nfunction scrollToPosition(position, options = {}) {\n var {center, disableScroll, duration, delay, scrollableParent} = options;\n setTimeout(() => {\n if (center) {\n position -= window.innerHeight / 2;\n }\n\n if (disableScroll) {\n $('body').addClass('prevent-user-scroll');\n }\n\n if (! scrollableParent) {\n scrollableParent = $('html, body');\n }\n\n $(scrollableParent).animate(\n { scrollTop: position || 0 },\n {\n duration: duration || 500,\n complete: () => {\n if (disableScroll) {\n setTimeout(() => {\n $('body').removeClass('prevent-user-scroll'); \n }, 500);\n }\n }\n }\n );\n }, delay || 0);\n}\n\n/**\n * Scrolls smoothly to an element or a position\n * @param {JQuery | number} elementOrPosition jquery element or position\n * @param {{\n* center: boolean,\n* offset: number,\n* focus: boolean,\n* disableScroll: boolean,\n* duration: number,\n* delay: number,\n* scrollableParent: JQuery\n* }} options\n*/\nfunction scroll(elementOrPosition, options = {}) {\n if (typeof elementOrPosition === 'number') {\n var position = parseInt(elementOrPosition);\n scrollToPosition(position, options);\n } else {\n var element = elementOrPosition;\n if (! element instanceof jQuery) {\n element = $(element);\n }\n scrollToElement(element, options);\n }\n}\n\nmodule.exports = scroll;","'use strict';\nvar { appendToUrl } = require('../common/urlUtil');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n let pid = $('.product-detail').data('pid');\n return pid;\n}\n\n/**\n * Retrieves the quantity that should be added to the cart. As per design, it is always 1\n * @return {string} - 1\n */\nfunction getQuantitySelected() {\n return '1';\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {boolean} attr.values.selected - Flag as to whether the attribute is currently selected\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n\n if (attrValue.selected) {\n $attrValue.addClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n const buildSrcSet = (imageSet) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1) * 100) + 'w';\n }).join(',');\n };\n $('.js-selected-color')\n .attr('src', attrValue.images.swatch[0].url)\n .attr('srcset', buildSrcSet(attrValue.images.swatch[0].resizedUrls));\n\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.removeClass('hidden');\n }\n } else {\n $attrValue.removeClass('cc-active');\n $attrValue.siblings('.selected-assistive-text').empty();\n let $colorText = $attrValue.children('.js-color-text');\n if ($colorText) {\n $colorText.addClass('hidden');\n }\n }\n\n if (attrValue.url) {\n // Gets the part of the size for remove it (inbetween the 'size=' and the next '&'\n var url = attrValue.url;\n var sizeStartIndex = url.indexOf('_size=');\n if (sizeStartIndex > 0) {\n var sizeEndIndex = sizeStartIndex + 6;\n var partOne = url.substring(0, sizeEndIndex);\n var partTwo = url.substring(sizeEndIndex);\n var eIndex = partTwo && partTwo.length > 0 ? partTwo.indexOf('&') : -1;\n var partTwoMod = '';\n if (eIndex > 0) {\n partTwoMod = partTwo.substring(eIndex);\n }\n var finalUrl = partOne + partTwoMod;\n $attrValue.attr('data-url', finalUrl);\n } else {\n $attrValue.attr('data-url', attrValue.url);\n }\n } else {\n $attrValue.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n // $attrValue.prop('disabled', !attrValue.selectable);\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.selected - Flag as to whether an attribute is currently selected\n * @param {boolean} attr.values.isOnlyOneLeft - Flag as to whether an attribute has limited availability\n * @param {boolean} attr.values.selectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n let attributeSelector = '[data-attr=\"' + attr.id + '\"]';\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find(attributeSelector + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue\n .prop('disabled', false)\n .removeClass('cc-active')\n .removeClass('cc-request-size');\n\n if (!attrValue.selectable) {\n $attrValue.prop('disabled', true);\n $attrValue.addClass('cc-request-size');\n }\n if (attrValue.selected) {\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1 && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n $attrValue.data('value', attrValue.url);\n $attrValue.addClass('cc-active');\n let size = $('.cc-prod-functional-info').length > 0\n ? $('.cc-prod-functional-info').find('.js-size-value').text()\n : $('.cc-pdp__content-attributes').find('.js-size-value').text();\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n } else {\n $attrValue.addClass('cc-active');\n }\n } else {\n $attrValue.data('value', attrValue.url);\n }\n $attrValue.find('.js-limited-availability').addClass('hidden');\n $attrValue.removeClass('col-6 col-md-8');\n $attrValue.addClass('col-12');\n $attrValue.parent().find('.js-check-availability').addClass('hidden');\n\n if (attrValue.isOnlyOneLeft) {\n $attrValue.find('.js-limited-availability').removeClass('hidden');\n }\n if (attrValue.online) {\n $attrValue.parent('.cc-size-container').removeClass('hidden');\n } else {\n $attrValue.parent('.cc-size-container').addClass('hidden');\n }\n\n if (!attrValue.selectable) {\n $attrValue.removeClass('col-12');\n $attrValue.addClass('col-6 col-md-8');\n $attrValue.parent().find('.js-check-availability').removeClass('hidden');\n $attrValue.parent().find('.js-check-availability').parent().removeClass('hidden');\n }\n\n if (attrValue.hideNotifyMeProduct) {\n $attrValue.parent().find('.js-check-availability').parent().addClass('hidden');\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object[]} attrs - Attribute\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n // TODO: rivedere il comportamento\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Updates the images shown in page from response containing images.\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateImages(imgs, $productContainer) {\n const buildSrcSet = (imageSet, prevArrStartIndex) => {\n return imageSet.map((url, idx) => {\n return url + ' ' + ((idx + 1 + prevArrStartIndex) * 200) + 'w';\n }).join(',');\n };\n let $imageContainer = $productContainer.find('.js-image-list');\n\n // Read the template for the images shown in the list\n const imgTemplate = document.getElementById('image-template').innerHTML;\n for (var i = 0; i < imgs.length; i++) {\n var $imagesDivs = $imageContainer.find('.cc-content-image');\n var singleImage = $imagesDivs.get(i);\n var $ResizedUrlsFirstSource = (imgs[i].resizedUrls).splice(0, 3);\n var $ResizedUrlsSecondSource = (imgs[i].resizedUrls);\n if (singleImage) {\n var $picture = $(singleImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n } else {\n var cloneImage = $imagesDivs.get(i - 1);\n $(cloneImage).clone().appendTo($imageContainer);\n $imagesDivs = $imageContainer.find('.cc-content-image');\n cloneImage = $imagesDivs.get(i);\n var $picture = $(cloneImage).find('picture');\n var $image = $picture.find('img');\n var $sources = $picture.find('source');\n $sources.eq(0).attr('srcset', buildSrcSet($ResizedUrlsFirstSource, 0));\n $sources.eq(1).attr('srcset', buildSrcSet($ResizedUrlsSecondSource, 3));\n $image.attr('src', imgs[i].url);\n $image.attr('alt', imgs[i].alt + 'image number ' + i + '');\n if ($image.hasClass('lazyload')) {\n $image.removeClass('lazyload');\n }\n }\n }\n var imgLength = $imageContainer.find('.cc-content-image').length;\n if (imgs.length < imgLength) {\n var $imagesOld = $imageContainer.find('.cc-content-image');\n for (var j = (imgLength - 1); j > (imgs.length - 1); j--) {\n var oldimg = $imagesOld.get(j);\n $(oldimg).remove();\n }\n }\n}\n\nfunction updateVideo($productContainer, htmlVideo, position) {\n let $videoContainerVertical = $productContainer.find('.js-image-list').find('.cc-content-video:not(\".cc-only-mobile\")');\n let $videoContainerHorizontalDesktop = $productContainer.find('.cc-pdp__video-horizontal-desktop');\n let $videoContainerHorizontalMobile = $productContainer.find('.cc-content-video.cc-only-mobile');\n var ImageandVideoContainer = $productContainer.find('.js-image-list');\n if ($videoContainerVertical.length > 0) {\n if (position === 'vertical') {\n $videoContainerVertical.replaceWith(htmlVideo);\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n } else if ($videoContainerHorizontalDesktop.length > 0 || $videoContainerHorizontalMobile.length > 0) {\n if (position === 'vertical') {\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $videoContainerHorizontalDesktop.replaceWith(desktopVideo);\n $videoContainerHorizontalMobile.replaceWith(mobileVideo);\n }\n } else {\n if (position === 'vertical') {\n $(ImageandVideoContainer).prepend(htmlVideo);\n } else {\n var desktopVideo = $(htmlVideo).filter('.cc-pdp__video-horizontal-desktop');\n var mobileVideo = $(htmlVideo).filter('.cc-content-video.cc-only-mobile');\n $(ImageandVideoContainer).append(mobileVideo);\n $(desktopVideo).insertAfter('.cc-pdp__info');\n }\n }\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {Object} response.product.price - Price object related to the product\n * @param {Object} response.product.price.html - HTML rendering of the price object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object} response.product.images - Product images\n * @param {Object[]} response.product.images.large - Product images in large format\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {Object} response.resources - Translation object\n * @param {boolean} imagesCanChange - if the images can change\n * @param {jQuery} $productContainer - DOM element for a given product.\n **/\nfunction handleVariantResponse(response, $productContainer, imagesCanChange) {\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n }\n\n if (imagesCanChange) {\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n updateImages(primaryImageUrls, $productContainer);\n if (response.product.hasHorizontalVideo) {\n if (response.product.videoH.CLDvideoHURL !== $('.cc-pdp__video-horizontal-desktop .cc-video-hotizontal source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'horizontal');\n }\n } else if (response.product.hasVerticalVideo) {\n if (response.product.videoV.CLDvideoVURL !== $('.js-image-list .cc-content-video source').attr('src')) {\n updateVideo($productContainer, response.product.videoCloudinaryPdpHtml, 'vertical');\n }\n } else {\n $productContainer.find('.js-image-list .cc-content-video').remove();\n $productContainer.find('.cc-pdp__video-horizontal-desktop').remove();\n $productContainer.find('.cc-content-video.cc-only-mobile').remove();\n }\n }\n\n // Update pricing\n var $priceSelector = $('.js-prices .js-price', $productContainer).length\n ? $('.js-prices .js-price', $productContainer)\n : $('.js-prices .js-price');\n $priceSelector.replaceWith(response.product.price.html);\n\n updateAvailability(response, $productContainer);\n\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n if (imagesCanChange) {\n var imgVal = $('#js-pv-image').val();\n let $imageContainer = $productContainer.find('.js-image-list');\n $imageContainer.find('.cc-content-image').find('picture source').attr('srcset', imgVal);\n }\n\n // cites on variation group, checking cites value on color selection\n if (data.product.enableDisclaimerShipment && $('.js-disclaimer-shipment').length) {\n $('.js-disclaimer-shipment').removeClass('d-none');\n } else if (!$('.js-disclaimer-shipment').hasClass('d-none')) {\n $('.js-disclaimer-shipment').addClass('d-none');\n }\n\n // pfas on variation group/variant\n if (data.product.pfas && $('.js-banner-pfas').length) {\n $('.js-banner-pfas').removeClass('d-none');\n } else if (!$('.js-banner-pfas').hasClass('d-none')) {\n $('.js-banner-pfas').addClass('d-none');\n }\n\n // data tags\n if (data.product.Tag) {\n $('.js-tag-container span', $productContainer).text(data.product.Tag.toUpperCase());\n $('.js-tag-container', $productContainer).attr('hidden', false);\n } else {\n $('.js-tag-container', $productContainer).attr('hidden', true);\n $('.js-tag-container span', $productContainer).text('');\n }\n handleVariantResponse(data, $productContainer, imagesCanChange);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectSizeLook(selectedValueUrl, $productContainer, imagesCanChange) {\n if (selectedValueUrl) {\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n $('.js-product-detail-look').data('pid', data.product.id);\n $('button.add-to-cart').data('disabled', (!data.product.readyToOrder || !data.product.available));\n\n $.spinner().stop();\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {boolean} imagesCanChange - indicates if the images could change as a result of the selection of the attribute\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelectLook(selectedValueUrl) {\n if (selectedValueUrl) {\n var url = $('.js-select-single-tile-look').data('href');\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n var pid = data.product.sku;\n var dat = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: dat,\n method: 'GET',\n success: function (response) {\n if (response.stickyBar) {\n $('.js-sticky-look-container').html(response.stickyBar);\n }\n },\n error: function(err) {\n }\n });\n // handleVariantResponse(data, $productContainer, imagesCanChange);\n // $('body').trigger('product:afterAttributeSelect',\n // { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nfunction performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, onSuccess, onError, customFrom) {\n var data = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var masterPid = $('.js-master-pid').val();\n if (addToCartUrl) {\n $.spinner().start();\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: data,\n success: function (data) {\n // handlePostCartAdd(data);\n $.spinner().stop();\n if (onSuccess != null) {\n // analytics\n\n // get product by pid\n var totPid = pid;\n var generalPid;\n if (data.skuMaster) {\n generalPid = data.skuMaster;\n } else if (masterPid) {\n generalPid = masterPid;\n } else if (data.productColor) {\n var split = totPid.split(data.productColor);\n if (split) {\n generalPid = split[0];\n }\n }\n if (! generalPid) {\n var posC = totPid.lastIndexOf('C');\n if (totPid.charAt(posC - 1) === 'C') {\n posC = posC - 1;\n }\n if (posC !== -1) {\n generalPid = totPid.substr(0, posC);\n } else {\n generalPid = totPid;\n }\n }\n\n // get product -> js-analytics-impressions-product-initialized prevent minicart elements to be selected\n var selectorPrefix = '.js-analytics-impressions-product-initialized.js-analytics-click-product-info-';\n var product = $(selectorPrefix + generalPid);\n if ($('.page').data('action') && $('.page').data('action').indexOf('Wishlist') !== -1) {\n if (product.length > 1) {\n product = $($(selectorPrefix + generalPid + '[data-color=\"' + data.productColor + '\"]')[0]);\n }\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + totPid);\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + totPid.substring(0, totPid.length - 2));\n }\n if (product.length <= 0) {\n product = $(selectorPrefix + generalPid + 'C'); // pid concatenazione\n }\n\n if (product.length > 1) {\n if (window.isDesktop) {\n product = $(product[0]);\n } else product = $(product[1]);\n }\n\n if (customFrom) {\n product.attr('data-sticky', customFrom);\n }\n\n $('body').trigger('analytics:pushAddToCart', product);\n\n // END\n // update live content\n $('.js-mini-cart-update').text(data.addToCartLiveContent);\n\n onSuccess(data);\n }\n },\n error: function () {\n $.spinner().stop();\n if (onError != null) {\n onError();\n }\n }\n });\n\n var urlAnalytics = $('.add-to-minicart-analytics').val();\n var urlParams = {\n pid: pid\n };\n urlAnalytics = appendToUrl(urlAnalytics, urlParams);\n $.spinner().start();\n $.ajax({\n url: urlAnalytics,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $('.js-minicart-analytics').append(data.minicartAnalytics);\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n $.spinner().stop();\n }\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice', function (e) {\n // When the user clicks on one color inside the stickybar selection, change the aria-label of the selected color.\n $('.cc-content-thumb-color-sticky').attr(\"aria-label\", $(this).attr(\"data-accessibility-change\"));\n\n if ($(this).hasClass('js-color-choiche-sticky-look')) {\n attributeSelectLook($(this).attr('data-url'));\n } else {\n e.preventDefault();\n $(document).find('.js-image-list .cc-image').removeClass('lazyload');\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n colorAttributeLook: function () {\n $(document).on('click', '[data-attr=\"color\"] button.js-color-choice.js-color-choiche-sticky-look', function (e) {\n window.scrollTo(0, 0);\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect($(this).attr('data-url'), $productContainer, true);\n // Reset size on PDP selector\n $('#js-size-text-default').removeClass('hidden');\n $('#js-size-text-selected').addClass('hidden');\n $('#js-size-text-selected').text('');\n // Reset size on PDP sticky selector\n $('#js-sticky-size-text-default').removeClass('hidden');\n $('#js-sticky-size-text-selected').addClass('hidden');\n $('#js-sticky-size-text-selected').text('');\n // 4Gift action url after size select\n var colorSelect = $(this).data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var sizeCode = $(document).find('.js-select-size.cc-active').data('attr-value');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n });\n },\n\n selectAttribute: function () {\n $(document).on('click', '.js-select-size', function (e) {\n e.preventDefault();\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n if ($(this).closest('.cc-content-size-choice-sticky').hasClass('js-select-size-sticky-look')) {\n attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n $('.js-upload-size').find('.js-size-container').removeClass('cc-active');\n $('.js-upload-size').find('.js-select-size').removeClass('cc-active');\n $(this).addClass('cc-active');\n $(this).parent().addClass('cc-active');\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n $('.js-sticky-choice-look').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // $productContainer = $(e.currentTarget).closest('.js-sticky-look-container');\n // attributeSelectSizeLook($(e.currentTarget).data('value'), $productContainer, false);\n } else {\n attributeSelect($(e.currentTarget).data('value'), $productContainer, false);\n let size = $(this).children('.js-size-value').text();\n let sizeCode = $(this).data('attr-value');\n $('#js-selected-size').val(sizeCode);\n $('#js-selected-size-to-find').val(sizeCode);\n $('.js-selected-size-socialList').val(sizeCode);\n // set size on PDP selector\n $('#js-size-text-default').addClass('hidden');\n $('#js-size-text-selected').removeClass('hidden');\n $('#js-size-text-selected').text(size);\n // set size on PDP sticky selector\n $('#js-sticky-size-text-default').addClass('hidden');\n $('#js-sticky-size-text-selected').removeClass('hidden');\n $('#js-sticky-size-text-selected').text(size);\n // 4Gift action url after size select\n var colorSelect = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var productPid = $(document).find('#skuMaster').val();\n var action = $(document).find('#4giftersCheckout').data('action');\n var SKU = productPid + colorSelect + sizeCode; // pid concatenation PDP\n $(document).find('#4giftersCheckout').data('action-url', action + SKU.toLowerCase());\n }\n });\n },\n\n performAddToCart: function (target) {\n var addToCartUrl;\n var pid;\n var pidsObj;\n\n $('body').trigger('product:beforeAddToCart', target);\n\n pid = getPidValue($(target));\n if (!pid) {\n pid = $(target).data('pid');\n };\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = getQuantitySelected($(target));\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n var newStickyAddToCartButton = '';\n if (window.isMobile && $(target).closest('.cc-pdp__info').length) {\n var isStickyTop = $(target).closest('.cc-pdp__info').hasClass('cc-pdp__info--top');\n if (isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_top_macro';\n }\n var isMicroSticky = $(target).hasClass('js-went-micro-button');\n if (isMicroSticky) {\n newStickyAddToCartButton = 'sticky_bar_top_micro';\n $(target).removeClass('js-went-micro-button');\n }\n if (!isMicroSticky && !isStickyTop) {\n newStickyAddToCartButton = 'sticky_bar_bottom';\n }\n } else {\n newStickyAddToCartButton = $(target).attr('data-sticky');\n }\n\n $(target).trigger('updateAddToCartFormData', form);\n\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, newStickyAddToCartButton);\n },\n\n performAddToCartLook: function(target) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n },\n\n addToCart: function () {\n var t = this;\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n if ($(this).hasClass('js-add-to-cart-sticky-look')) {\n var addToCartUrl;\n var pid = $('.js-product-detail-look').data('pid');\n var pidsObj;\n\n addToCartUrl = getAddToCartUrl();\n var childProducts = [];\n var quantity = 1;\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: childProducts,\n quantity: quantity\n };\n performAddToCartCall(addToCartUrl, pid, pidsObj, childProducts, quantity, function (resData) {\n miniCartReportingUrl(resData.reportingURL);\n $('body').trigger('product:afterAddToCart', resData);\n }, function() {\n //\n }, $(target).attr('data-sticky'));\n } else {\n t.performAddToCart(this);\n }\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl,\n performAddToCartCall: performAddToCartCall\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nvar processInclude = require('./util');\n\n$(document).ready(function () {\n processInclude(require('./product/detail'));\n processInclude(require('./components/clientSideValidation'));\n processInclude(require('./product/contactPdp'));\n processInclude(require('./components/socialList'));\n processInclude(require('./search/search'));\n // processInclude(require('./product/quickView'));\n processInclude(require('./listingPage/listingPage'));\n // processInclude(require('./product/wishlistHeart'));\n processInclude(require('./product/wishlistHeart'));\n});\n\nvar MutationObserver = window.MutationObserver || window.WebKitMutationObserver;\n\nvar observer = new MutationObserver(function(mutations, observer) {\n for (var i = 0; i < mutations.length; i++) {\n if (mutations[i].target.className.toString().includes('helpButtonEnabled')) {\n var stikyHeight = $('.cc-sticky-add-to-cart').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 24,\n right: '16px'\n });\n if ($('.cc-requestsize-only-mobile').is(':visible')) {\n $('.helpButton, #embeddedMessagingConversationButton').css('display', 'none');\n }\n } else if (window.isTablet && $('.cc-sticky-add-to-cart').hasClass('cc-open')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n } else if (window.isDesktop && $('.cc-sticky-add-to-cart').hasClass('cc-open')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n }\n }\n }\n\n for (var i = 0; i < mutations.length; i++) {\n if (mutations[i].target.className.toString().includes('helpButtonEnabled')) {\n var stikyHeight = $('.sticky-bar-mobile').height();\n if ($('.js-sticky-look-container').length > 0) {\n stikyHeight = $('js-sticky-add-to-cart-look').height();\n }\n if (window.isMobile) {\n \n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight,\n right: '16px'\n });\n if (!$('#mobileSortingWindow').hasClass('d-none')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n }\n if (!$('#mobileFilterWindow').hasClass('d-none')) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n }\n }\n }\n }\n});\nobserver.observe(document, {\n subtree: true,\n attributes: true\n});\n","'use strict';\n\nmodule.exports = function () {\n\n \n$(document).on('click', '.js-social-analytics-link, .js-social-analytics a', function (e) {\n e.preventDefault();\n\n var socialNetwork = $(this).data('id');\n var socialAction = '';\n var socialBaseLink = $(this).data('analytics');\n\n switch (socialNetwork) {\n case 'email':\n socialAction = 'mail';\n break;\n\n case 'pinterest':\n socialAction = 'pin';\n break;\n\n default:\n socialAction = 'share';\n break;\n }\n\n var socialTarget = socialBaseLink.substring((socialBaseLink.substring(8, socialBaseLink.length).indexOf('/') + 8), socialBaseLink.length);\n\n if($(this).parents('.js-general-overlay-wishlist').length) {\n // analytics\n dataLayer.push({\n 'event': 'custom_event',\n 'eventCategory': 'Wish List',\n 'eventAction': 'share',\n 'eventLabel': socialNetwork\n });\n } else {\n // analytics\n dataLayer.push({\n 'event': 'social',\n 'socialNetwork': socialNetwork,\n 'socialAction': socialAction,\n 'socialTarget': socialTarget\n });\n }\n});\n\n$(document).ready(function () {\n if ($('.js-social-share-lazyloading').length){\n\n const observer = new MutationObserver(() => {\n // first time cc-share-overlay will be opened, zxing plugin will be added to the img\n if (!$('.js-social-share-lazyloaded').length){\n var container = $('.js-social-share-lazyloading');\n var url = container.data('url');\n var target = container.children('img');\n target.attr(\"src\", url);\n container.addClass('js-social-share-lazyloaded');\n container.removeClass('js-social-share-lazyloading');\n }\n });\n\n observer.observe(document.querySelector('.cc-share-overlay'), {\n attributes: true,\n attributeFilter: ['style']\n });\n\n observer.observe(document.querySelector('.cc-mobile-content-share'), {\n attributes: true,\n attributeFilter: ['style']\n });\n\n observer.observe(document.querySelector('.cc-share-content'), {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n});\n\n};\n","'use strict';\n\nconst FOCUSABLE = 'button:not(:disabled):not([aria-hidden=\"true\"]),a[href]';\n\nmodule.exports = class Modal {\n constructor (element, config, custom={}) {\n this.modal = element;\n this._onKeyDown = this._onKeyDownFn.bind(this);\n this._open = false;\n this._previouslyFocussedElement = null;\n this._config = Object.assign({ onShow: null, onClose: null }, config);\n this.custom = custom;\n }\n\n _trapFocus (event) {\n let focusableNodes = $(this.modal).find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n };\n\n _onKeyDownFn(event) {\n if (event.keyCode === 27) { // ESC\n this.close();\n } else if (event.keyCode === 9) { // TAB\n this._trapFocus(event);\n }\n };\n\n _registerEvents() {\n const closeEvt = (e) => {\n e.stopPropagation();\n this.close();\n };\n $(this.modal).one('click', '.js-close', closeEvt.bind(this));\n document.addEventListener('keydown', this._onKeyDown);\n }\n\n open() {\n this._previouslyFocussedElement = document.activeElement;\n let $modal = $(this.modal);\n $('body').addClass('cc-blocked');\n $modal.removeClass('hidden').attr('aria-hidden', 'false');\n const focusFirstElementInModal = () => {\n let focusableNodes = $modal.find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n focusableNodes[0].focus();\n };\n\n this._registerEvents();\n // We add the class in another frame in order to have the animation\n let t = this;\n setTimeout(function() {\n $modal.addClass('cc-open');\n focusFirstElementInModal();\n if (t._config.onShow) {\n t._config.onShow.apply(null, t.arguments);\n }\n }, 0);\n\n this._open = true;\n }\n\n close() {\n if (!this._open) {\n return;\n }\n if (this._previouslyFocussedElement) {\n let $modal = $(this.modal);\n $modal.removeClass('cc-open');\n $modal.one('transitionend', () => {\n if (! $modal.hasClass('cc-open')) {\n $modal.addClass('hidden').attr('aria-hidden', 'true');\n this._open = false;\n if (! $(this._previouslyFocussedElement).is('iframe')) {\n this._previouslyFocussedElement.focus();\n }\n }\n });\n if (this._config.onClose) {\n this._config.onClose.apply(null, arguments);\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n }\n }\n\n isOpen() {\n return this._open;\n }\n};\n","'use strict';\nfunction getBannerHeigth() {\n $(document).find('.js-header-banner').removeClass('d-none');\n var h = $(document).find('.js-header-banner .cc-item').height();\n // $(document).find('.js-header-banner').addClass('d-none');\n return h;\n};\n\nfunction initializeBannerHeader () {\n var height, heightBanner, tot, timeToShift;\n if ($(document).find('.js-banner-slider').length > 0) {\n timeToShift = $(document).find('.js-banner-slider').data('timetoshift') != undefined ? $(document).find('.js-banner-slider-fade').data('timetoshift') : 10000;\n heightBanner = getBannerHeigth();\n $('.js-banner-slider').each(function () {\n var slidesContainer = $(this);\n\n slidesContainer.slick({\n infinite: true,\n autoplay: true,\n focusOnSelect: false,\n centerMode: true,\n autoplaySpeed: timeToShift,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n fade: false,\n prevArrow: '',\n nextArrow: ''\n });\n\n $('.cc-slider-prev').attr('aria-label', window.commonAria.prevSlide.label);\n $('.cc-slider-next').attr('aria-label', window.commonAria.nextSlide.label);\n });\n // $('.js-banner-slider').slick('refresh');\n height = 0;\n if ($('body').hasClass('cc-mobile') || $('body').hasClass('cc-tablet-portrait')) {\n height = 81;\n } else {\n height = 139;\n }\n tot = parseInt(height + heightBanner);\n $('.js-header, :not(.cc-page-header-fixed)>.cc-content-header').css({ 'min-height': tot });\n } else if ($(document).find('.js-banner-slider-fade').length > 0) {\n timeToShift = $(document).find('.js-banner-slider-fade').data('timetoshift') != undefined ? $(document).find('.js-banner-slider-fade').data('timetoshift') : 10000;\n heightBanner = getBannerHeigth();\n $('.js-banner-slider-fade').each(function () {\n var slidesContainer = $(this);\n if (!$(this).hasClass('slick-initialized')) {\n slidesContainer.slick({\n infinite: true,\n autoplay: true,\n focusOnSelect: false,\n centerMode: true,\n autoplaySpeed: timeToShift,\n speed: 1000,\n slidesToScroll: 1,\n slidesToShow: 1,\n variableWidth: false,\n dots: false,\n arrow: true,\n fade: true,\n // cssEase: 'cubic-bezier(0,.42,1,.7) 1s',\n // cssEase: 'ease-in-out',\n prevArrow: '',\n nextArrow: ''\n });\n }\n $('.cc-slider-prev').attr('aria-label', window.commonAria.prevSlide.label);\n $('.cc-slider-next').attr('aria-label', window.commonAria.nextSlide.label);\n\n });\n // $('.js-banner-slider-fade').slick('refresh');\n $('.js-banner-slider-fade').on('beforeChange', function() {\n $(document).find('.js-banner-slider-fade .cc-item').removeClass('animated fadeInLeft').css({'opacity': '0', 'transition': 'opacity 0.5s'});\n });\n $('.js-banner-slider-fade').on('afterChange', function() {\n setTimeout(() => {\n $(document).find('.js-banner-slider-fade .cc-item').addClass('animated fadeInLeft').css({'opacity': '1', 'transition': 'opacity 0.5s'});\n }, 50);\n });\n\n // fix share and heart buttons showing behind header banner\n if ($('body').hasClass('cc-mobile') || $('body').hasClass('cc-tablet')) {\n var unobserveTimeout;\n const resizeObserver = new ResizeObserver(element => {\n var h = $('.js-header').height();\n $('.js-header, :not(.cc-page-header-fixed)>.cc-content-header').css({ 'min-height': h });\n\n // stop the observer after 30 secs from the last size change.\n if (unobserveTimeout){\n window.clearTimeout(unobserveTimeout);\n }\n unobserveTimeout = setTimeout(() => {\n resizeObserver.unobserve($('.js-header-banner')[0]);\n }, 30 * 1000);\n });\n resizeObserver.observe($('.js-header-banner')[0]);\n }\n }\n}\nmodule.exports = {\n initializeBannerHeader: initializeBannerHeader\n};\n","'use strict';\nconst Modal = require('../modalUtilities');\nconst navigationCountry = $('.page').attr('data-navigation-country');\n\nif (navigationCountry === 'CN') {\n var TencentCaptcha = require('../common/tencentCaptcha');\n}\n\nfunction updateSuccessPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\nfunction updateListOfStores(data) {\n $('#findStoreStoreSelect').empty().html(data.listOfStoresHtml);\n};\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\n\nfunction setButtonAttribute() {\n $('.selectpicker').selectpicker();\n $('.selectpicker').each(function() {\n $(this).css({\n display: 'none'\n });\n var label;\n // set button id for label\n if (this.labels.length > 0) {\n label = this.labels[0].innerText;\n } else {\n label = $(this).closest('.cc-form-group').find('.cc-label').html();\n }\n var $button = $(this).siblings('button');\n // var selectID = $(this).attr('id') + '_btn';\n // var labelID = $(this).attr('id') + '_lbl';\n // $(this).attr('aria-hidden', 'true');\n // $button.attr('id', selectID);\n var $dropdown = $button.siblings('.dropdown-menu').children('.inner');\n $dropdown.attr('aria-label', label);\n $button.attr('aria-label', label);\n $button.attr('role', 'combobox').attr('aria-activedescendant', '');\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').attr('tabindex', '0');\n });\n $('.dropdown-menu .inner').removeAttr('aria-activedescendant');\n\n var targets = $('button.dropdown-toggle').siblings('.dropdown-menu').children('.inner').removeAttr('aria-activedescendant').get();\n if (targets) {\n // create an observer instance\n targets.forEach(function(target) {\n var observer = new MutationObserver(function(mutations) {\n if (mutations.length) {\n $(target).removeAttr('aria-activedescendant');\n // disconnect `observer`\n // this.disconnect();\n }\n });\n var config = {\n attributes: true\n };\n\n // pass in the target node, as well as the observer options\n observer.observe(target, config);\n });\n };\n \n // accessibility: fix focus issues with the dropdown select\n $(document).on('keydown', '#js-helpWithSize-modal', (e)=>{\n if (e.key !== 'Tab') return;\n var $select = $('.selectpicker');\n var $dropdown = $('.dropdown-toggle');\n if ($select.attr('tabindex') === $dropdown.attr('tabindex')) {\n $select.attr('tabindex', '0');\n }\n });\n}\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '10');\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '3');\n liveChatEnable();\n}\n\nfunction fixLayoutForModalBoutiqueOverlayClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container, .cc-pdp__info').css('z-index', '10');\n}\n\nmodule.exports = {\n openContactUsModal: function() {\n $(document).on('click', '.js-open-contact', function() {\n var m = new Modal('#js-contact-modal', { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n var url = $('.js-open-contact').data('urlcontact');\n\n let ajaxData = { page: 'PDP-requestInfo' };\n\n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n\n $.ajax({\n url: url,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $('#js-contactUs-product-overlay').html(data);\n setButtonAttribute();\n $('#genderSelect option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#genderSelect').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('#contactSku').val($('.js-open-contact').data('sku'));\n var $grecaptcha = $('#js-contact-modal .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n m.open();\n }\n });\n });\n },\n\n submitContactUsModal: function() {\n $(document).on('click', '#submitContactUs', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#infoProduct');\n var productID = $('#contactSku').val();\n var information = $('#infocategory').val();\n const readyToSubmit = $.Deferred();\n\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#infoProduct'), data);\n // END\n },\n error: function (data) {\n form.spinner().stop();\n updateSuccessPage($('#infoProduct'), data.responseJSON);\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - ' + information,\n dimension23: productID,\n dimension24: ''\n });\n // END\n }\n });\n });\n });\n },\n openFindInStoreModal: function() {\n let modalTarget = '#size-boutique-overlay';\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n $(document).on('click', '.js-open-findInBoutique', function() {\n var skuMaster = $(this).data('skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sizeText = $('#js-size-text-selected').hasClass('hidden') ? null : $('#js-size-text-selected').text();\n var label = sizeText !== null ? skuMaster + color + ' - ' + sizeText : skuMaster + color; // pid concatenation PDP\n if (sizeText !== null) {\n var preselectSize = $(document).find('#size-overlay .cc-size-list .js-select-size.cc-active').data('attr-value');\n $('#js-selected-size-to-find').val(preselectSize);\n }\n var selectedSize = $('#js-selected-size-to-find').val();\n if (selectedSize !== '') {\n $('.js-select-size-to-find').parent('.js-size-container').removeClass('cc-active');\n var sizes = $('.js-select-size-to-find');\n for (var i = 0; i < sizes.length; i++) {\n if (sizes[i].dataset.attrValue === selectedSize) {\n sizes[i].parentElement.classList.add('cc-active');\n }\n }\n $('.js-find-in-store-button').click();\n } else {\n modal.open();\n }\n if (!$('.js-size-not-selected').hasClass('d-none')) {\n $('.js-size-not-selected').addClass('d-none');\n }\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Open Layer',\n eventLabel: label\n });\n });\n\n $(document).on('click', '.js-close-boutique-size', function() {\n modal.close();\n\n });\n },\n\n selectSizeFindInStore: function() {\n $(document).on('click', '.js-select-size-to-find', function() {\n var selectedSize = $(this).data('attr-value');\n $('#js-selected-size-to-find').val(selectedSize);\n $('.js-select-size-to-find').parent('.js-size-container').removeClass('cc-active');\n $(this).parent('.js-size-container').addClass('cc-active');\n if(!$('.js-size-not-selected').hasClass('d-none')) {\n $('.js-size-not-selected').addClass('d-none');\n }\n $('.js-find-in-store-button').click();\n });\n },\n\n searchFindInStore: function() {\n let modalTarget = '#show-boutiques-overlay';\n $(document).on('click', '.js-find-in-store-button', function() {\n if (!$('#size-boutique-overlay').hasClass('cc-open')) {\n var modalClose = fixLayoutForModalClose;\n } else {\n modalClose = fixLayoutForModalBoutiqueOverlayClose;\n }\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: modalClose });\n var selectedSize = $('#js-selected-size-to-find').val();\n if (selectedSize == '') {\n $('.js-size-not-selected').removeClass('d-none');\n } else {\n var skuMaster = $('.js-find-in-store-button').attr('data-skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sizeText = $('#size-boutique-overlay .js-size-container.cc-active').find('.js-size-value').text();\n var selectedCountry = false;\n if ($('#js-selected-country-for-search').val() != '') {\n selectedCountry = $('#js-selected-country-for-search').val();\n }\n var sku = skuMaster + color + selectedSize; // pid concatenation PDP\n var label = skuMaster + color + ' - ' + sizeText;\n var url = $(this).data('url');\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: {\n sku: sku,\n selectedCountry: selectedCountry\n },\n success: function (data) {\n $('#js-show-boutique-overlay').html(data);\n setButtonAttribute();\n $('#js-boutique-country option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#js-boutique-country').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n modal.open();\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n $('body').trigger('analytics:dataLayerPushObj', {\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Size Selected',\n eventLabel: label\n });\n }\n $('body').on('click', '.js-close-show-boutiques', function(e) {\n e.preventDefault();\n modal.close();\n });\n });\n\n $(document).on('change', '#js-boutique-country', function() {\n $.spinner().start();\n var countryCode = $('#js-boutique-country').val();\n $('#js-selected-country-for-search').val(countryCode);\n // var url = $('#js-boutique-country').data('url');\n // var sku = $('.js-find-in-store-button').attr('data-sku');\n var skuMaster = $('.js-find-in-store-button').attr('data-skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var sku = skuMaster + color; // pid concatenation PDP\n var selectedSize = $('#js-selected-size-to-find').val();\n var sizeText = $('#size-boutique-overlay .js-size-container.cc-active').find('.js-size-value').text();\n var label = sku + ' - ' + sizeText;\n sku = sku + selectedSize;\n var url = $(this).data('url');\n $.ajax({\n url: url,\n method: 'POST',\n data: {\n sku: sku,\n selectedCountry: countryCode\n },\n success: function (data) {\n $('#js-show-boutique-overlay').html(data);\n setButtonAttribute();\n $('#js-boutique-country option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#js-boutique-country').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('#js-boutique-country').selectpicker('refresh');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Change Country',\n eventLabel: label\n });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n },\n\n analyticsCallStore: function () {\n $(document).on('click', '.js-analytics-callStore', function() {\n var productId = $(this).data('analyticsku');\n var filterSize = $(this).data('analyticsize');\n var boutiqueId = $(this).data('analyticsbtqid');\n var boutiqueName = $(this).data('analyticsbtqname');\n var label = productId + ' - ' + filterSize;\n var boutique = boutiqueName + ' - ' + boutiqueId;\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Call',\n eventLabel: label,\n boutiqueName: boutique\n });\n });\n },\n\n analyticsBookAppointment: function () {\n $(document).on('click', '.js-analytics-bookAppointment-PDP', function() {\n var productId = $(this).data('analyticsku');\n var filterSize = $(this).data('analyticsize');\n var boutiqueId = $(this).data('analyticsbtqid');\n var boutiqueName = $(this).data('analyticsbtqname');\n var label = productId + ' - ' + filterSize;\n var boutique = boutiqueName + ' - ' + boutiqueId;\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Find in Store',\n eventAction: 'Boutique Appointment',\n eventLabel: label,\n boutiqueName: boutique\n });\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'exclusive-service',\n eventAction: 'find-in-boutique',\n eventLabel: document.location.href,\n boutiqueName: boutique\n });\n });\n },\n\n updateListOfStores: function() {\n $(document).on('change', '#findStoreCountrySelect', function() {\n var url = $('#findStoreStoreSelect').data('liststores');\n var countryCode = $('#findStoreCountrySelect').val();\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n countryCode: countryCode,\n page: 'PDP-FindInStore'\n },\n success: function (data) {\n $.spinner().stop();\n updateListOfStores(data);\n setButtonAttribute();\n $('.js-select-listOfStores').fadeIn();\n }\n });\n });\n },\n filterListOfStores: function() {\n $(document).on('change', '#filterBoutiqueFind', function() {\n if ($('#filterBoutiqueFind').prop('checked')) {\n $('.js-boutique-no-availability').attr(\"style\", \"display: none !important\");\n } else $('.js-boutique-no-availability').attr(\"style\", \"display: block\");\n });\n },\n submitFindInStoreModal: function() {\n $(document).on('click', '#submitFindInStore', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#findInStore');\n var productID = $('#findStoreSku').val();\n var selectedNation = $('#findStoreCountrySelect :selected').text();\n var selectedBoutique = $('#findStoreStoreSelect').val();\n selectedBoutique = selectedNation + '-' + selectedBoutique.replace(/ /g, '-');\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#findInStore'), data);\n },\n error: function (data) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - storesavailability',\n dimension23: productID,\n dimension24: selectedBoutique\n });\n // END\n }\n });\n });\n },\n openHelpWithSizeModal: function() {\n $(document).on('click', '.js-open-helpWhitSize', function() {\n var url = $(this).data('action');\n var sticky = false;\n if (this.id === 'size-help-sticky') {\n sticky = true;\n }\n \n let m;\n if (sticky) {\n m = new Modal('#js-helpWithSize-modal', { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n } else {\n // In this case, in the onClose callback we do not remove the z-index, as the\n // modal was opened from inside another modal\n m = new Modal('#js-helpWithSize-modal', { onShow: fixLayoutForModalOpen, onClose: liveChatEnable });\n }\n\n let ajaxData = { page: 'PDP-HelpWithSize' };\n\n if (navigationCountry === 'CN' && !TencentCaptcha.isAlreadyLoaded()) {\n ajaxData['loadTencentCaptcha'] = true;\n }\n\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: ajaxData,\n success: function (data) {\n $.spinner().stop();\n $('#js-helpWithSize-product-overlay').html(data);\n $('#helpWithSizeContactSku').val($('.js-open-contact').data('sku'));\n setButtonAttribute();\n $('#helpWithSizeGenderSelect option').each(function() {\n if ($(this).prop('selected') === true && !$(this).hasClass('bs-title-option')) {\n $('#helpWithSizeGenderSelect').siblings().find('.filter-option-inner-inner').css('color', '#262626');\n }\n });\n $('button[data-id=\"helpWithSizeGenderSelect\"]').attr({\n 'aria-required': 'true',\n 'aria-describedby': 'form-selectgender-error'\n });\n var $grecaptcha = $('#js-helpWithSize-product-overlay .js-captcha-form.lazyloading');\n if ($grecaptcha.length) {\n document.body.dispatchEvent(new CustomEvent('grecaptcha-load', {detail: $grecaptcha}));\n }\n m.open();\n },\n error: function(){\n $.spinner().stop();\n }\n });\n });\n },\n\n submitHelpWithSizeModal: function() {\n $(document).on('click', '#helpWithSize-submit', function() {\n var url = $('.js-contactus-action').data('action');\n var form = $('#helpWithSize-form');\n var productID = $('#helpWithSizeContactSku').val();\n var checkHoneyPot = $('.contact_me_if_spam').val();\n var isSpam = checkHoneyPot.length > 0 ? true : false;\n if (!isSpam) {\n const readyToSubmit = $.Deferred();\n if (navigationCountry === 'CN') {\n // initialize tencent captcha\n var $tencentCaptchaEl = $('.js-tencent-captcha-container', form);\n TencentCaptcha.initialize($tencentCaptchaEl, readyToSubmit);\n } else {\n readyToSubmit.resolve();\n }\n\n readyToSubmit.done(function() {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n if (data.success) {\n // analytics\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_ok',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n } else {\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n }\n form.spinner().stop();\n updateSuccessPage($('#helpWithSize-form'), data);\n },\n error: function (data) {\n form.spinner().stop();\n updateSuccessPage($('#helpWithSize-form'), data.responseJSON);\n dataLayer.push({\n event: 'contactUs',\n eventCategory: 'Contact Us - PDP',\n eventAction: 'submit_fail',\n eventLabel: 'product - size',\n dimension23: productID,\n dimension24: ''\n });\n }\n });\n });\n }\n });\n }\n};\n","'use strict';\nvar base = require('./base');\nconst Modal = require('../modalUtilities');\nvar banner = require('../common/bannerSlider');\nlet openFromBuyButton = false;\n\nlet replaceOrAddQueryParam = (url, parameter, value) => {\n var regex = new RegExp(parameter + '=[^&]+');\n var split = url.split(regex);\n if (split.length > 1) {\n return split[0] + (url.indexOf('?') > -1 ? '' : '?') + parameter + '=' + value + split[1];\n } else {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + parameter + '=' + value;\n }\n};\n\nconst manageApplePayButtonApperance = (response) => {\n if (response.product.readyToOrder) {\n var applePayButton = $('.js-apple-pay-btn', response.$productContainer);\n if (applePayButton.length !== 0) {\n applePayButton.attr('sku', response.product.id);\n }\n $('.js-fake-apple-pay').addClass('hidden');\n $('.js-apple-pay').removeClass('hidden');\n } else {\n $('.js-fake-apple-pay').removeClass('hidden');\n $('.js-apple-pay').addClass('hidden');\n }\n};\n\nconst closeModal = (element) => {\n const modalTarget = element.dataset.target;\n $(modalTarget).removeClass('cc-open').off('click');\n $(element).removeClass('cc-pdp-background-overlay').removeClass('cc-open');\n liveChatEnable();\n};\n\nconst closeSizeChartModal = () => {\n // $('#size-chart-overlay').fadeOut();\n if (window.isMobile) {\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '3');\n $('.js-size-sticky').removeClass('cc-open');\n liveChatEnable();\n } else {\n var sticky = $('#js-open-from-sticky').val();\n if (sticky === 'true') {\n $('#size-modal-sticky').toggleClass('cc-open');\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '3');\n } else {\n $('body').addClass('cc-blocked');\n }\n }\n var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n if (!islogged) {\n clearForm($('.js-form-control-requestsize'));\n }\n uploadFormRequestSize();\n};\nconst openSizeChartModal = () => {\n // $('#size-chart-overlay').show();\n if (window.isMobile) {\n var mod = $('#size-chart-overlay-mobile').find('.cc-size-guide-standard.cc-size-guide-component');\n var headerHeigth = 81;\n var totHeigth = headerHeigth;\n if ($('.cc-shipment-banner').length > 0) {\n var bannerParent = $('.cc-shipment-banner').parent('div');\n var bannerHeigth = bannerParent.height();\n totHeigth += bannerHeigth;\n }\n mod.css('padding-top', totHeigth + 'px');\n } else {\n var sticky = $('#js-open-from-sticky').val();\n if (sticky === 'true') {\n $('#size-modal-sticky').toggleClass('cc-open');\n }\n }\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '10');\n};\n\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\n\nfunction uploadSuccesPage($selector, data) {\n $selector.empty().html(data.succesPageHtml);\n};\n\nfunction uploadFormRequestSize() {\n $('.js-form-control-requestsize').fadeIn();\n $('.js-success-page-requestSize').fadeOut();\n}\n\nfunction clearForm(form) {\n $(form).find('.cc-input.cc-error').removeClass('cc-error');\n $(form).find('.cc-feedback-message').children('.cc-text-message').text('');\n $(form).find('.cc-input.js-requestsize-firstName').val('');\n $(form).find('.cc-input.js-requestsize-lastName').val('');\n $(form).find('.cc-input.js-requestsize-email').val('');\n $('.js-requestsize-title').selectpicker('val', '');\n\n $('.alert', form).remove();\n};\nfunction setButtonAttribute() {\n $('.selectpicker').selectpicker();\n $('.selectpicker').each(function() {\n $(this).css({\n display: 'none'\n });\n var label;\n // set button id for label\n if (this.labels.length > 0) {\n label = this.labels[0].innerText;\n } else {\n label = $(this).closest('.cc-form-group').find('.cc-label').html();\n }\n var $button = $(this).siblings('button');\n // var selectID = $(this).attr('id') + '_btn';\n // var labelID = $(this).attr('id') + '_lbl';\n // $(this).attr('aria-hidden', 'true');\n // $button.attr('id', selectID);\n $button.attr('aria-label', label);\n // $button.attr('aria-labelledby', selectID + ' ' + labelID);\n $(this).selectpicker('refresh');\n // fix voice over\n $(this).parent().find('.dropdown-toggle').removeAttr('role');\n });\n}\n/*\nfunction allFildeRequestSize() {\n var size, title, name, lastName, email;\n if (!window.isMobile) {\n size = $('.js-requestsize-size').find(':selected').val();\n title = $('.js-requestsize-title').find(':selected').val();\n name = $('.js-requestsize-firstName').val();\n lastName = $('.js-requestsize-lastName').val();\n email = $('.js-requestsize-email').val();\n } else {\n size = $('.cc-requestsize-only-mobile .js-requestsize-size').find(':selected').val();\n title = $('.cc-requestsize-only-mobile .js-requestsize-title').find(':selected').val();\n name = $('.cc-requestsize-only-mobile .js-requestsize-firstName').val();\n lastName = $('.cc-requestsize-only-mobile .js-requestsize-lastName').val();\n email = $('.cc-requestsize-only-mobile .js-requestsize-email').val();\n }\n};\n*/\nfunction liveChatEnable() {\n $('.helpButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDisable() {\n $('.helpButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\nfunction liveChatPositionStikyUp() {\n var stikyHeight = $('.cc-sticky-add-to-cart').height();\n if (window.isMobile) {\n $('.helpButton').css({\n bottom: stikyHeight + 24,\n right: '16px'\n });\n } else if (window.isTablet) {\n $('.helpButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n } else {\n $('.helpButton').css({\n bottom: stikyHeight + 46,\n right: '30px'\n });\n }\n};\n\nfunction fixLayoutForModalOpen() {\n liveChatDisable();\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '10');\n}\n\nfunction fixLayoutForModalOpenSize() {\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '10');\n}\n\nfunction fixLayoutForModalClose() {\n $('.cc-product-detail .cc-info-section .cc-info-container').css('z-index', '3');\n $('.js-size-sticky').removeClass('cc-open');\n var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n if (!islogged) {\n clearForm($('.js-form-control-requestsize'));\n }\n uploadFormRequestSize();\n liveChatEnable();\n}\n\nfunction liveChatPositionStikyDown() {\n $('.helpButton').css({\n bottom: '16px',\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton').css({\n bottom: '60px'\n });\n }\n};\n\nfunction autoSelectForOneSize() {\n // automatically preselect size if product has only one size\n var numberofsizes = $('.js-size-container').data('numberofsizes');\n if (numberofsizes && parseInt(numberofsizes) === 1\n && $('.js-size-container') && $('.js-size-container').children() && $('.js-size-container').children().first()) {\n if ($('.js-size-container').children().first().is(':disabled')) {\n var sizeCode = $('.js-size-container').children().first().data('attr-value');\n $('#js-selected-size-to-find').val(sizeCode);\n } else {\n $('.js-size-container').children().first().trigger('click');\n }\n }\n};\n\nfunction updateSizeList () {\n var sku = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var url = $('.js-selectSize .js-sizeSelector-url').data('getsizeurl');\n if (!$('.js-upload-size').hasClass('js-upload-compleated')) {\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n sku: sku,\n color: color\n },\n success: function (data) {\n for (var i = 0; i < data.checkSize.length; i++) {\n var el = data.checkSize[i];\n var $size = $(document).find('.js-checkSize-' + el.value);\n var $RequestSize = $(document).find('.js-checkRequestSize-' + el.value);\n if (el.selectable) {\n $size.removeClass('col-6').removeClass('col-md-8').addClass('col-12');\n $size.removeClass('cc-request-size');\n $size.removeAttr('disabled');\n $size.parent().removeClass('cc-request-size');\n if (el.isOnlyOneLeft) {\n $size.find('.js-limited-availability').removeClass('hidden');\n }\n $RequestSize.addClass('hidden');\n $RequestSize.parent().addClass('hidden');\n } else if (!el.selectable) {\n $size.attr('disabled');\n $size.addClass('col-6').addClass('col-md-8').removeClass('col-12');\n $size.addClass('cc-request-size');\n $size.parent().addClass('cc-request-size');\n $size.find('.js-limited-availability').addClass('hidden');\n if (!el.hideNotifyMeProduct) {\n $RequestSize.removeClass('hidden');\n $RequestSize.parent().removeClass('hidden');\n }\n } else if ($size.hasClass('col-12') && el.selectable) {\n el.isOnlyOneLeft ? $size.find('.js-limited-availability').removeClass('hidden') : $size.find('.js-limited-availability').addClass('hidden');\n }\n }\n $.spinner().stop();\n }\n });\n }\n $(document).find('.cc-size-list .cc-size-container').removeClass('cc-active');\n $(document).find('.cc-size-list button.cc-active').parent().addClass('cc-active');\n};\n\nfunction updateSizeListLook () {\n var sku = $(document).find('.js-product-single-look').data('sku');\n var color = $(document).find('.js-product-single-look').data('color');\n var url = $('.js-selectSize .js-sizeSelector-url').data('getsizeurl');\n if (!$('.js-upload-size').hasClass('js-upload-compleated')) {\n $.spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n data: {\n sku: sku,\n color: color\n },\n success: function (data) {\n for (var i = 0; i < data.checkSize.length; i++) {\n var el = data.checkSize[i];\n var $size = $(document).find('.js-checkSize-' + el.value);\n var $RequestSize = $(document).find('.js-checkRequestSize-' + el.value);\n if (el.selectable) {\n $size.removeClass('col-6').removeClass('col-md-8').addClass('col-12');\n $size.removeClass('cc-request-size');\n $size.removeAttr('disabled');\n $size.parent().removeClass('cc-request-size');\n if (el.isOnlyOneLeft) {\n $size.find('.js-limited-availability').removeClass('hidden');\n }\n $RequestSize.addClass('hidden');\n $RequestSize.parent().addClass('hidden');\n } else if (!el.selectable) {\n $size.attr('disabled');\n $size.addClass('col-6').addClass('col-md-8').removeClass('col-12');\n $size.addClass('cc-request-size');\n $size.parent().addClass('cc-request-size');\n $size.find('.js-limited-availability').addClass('hidden');\n if (!el.hideNotifyMeProduct) {\n $RequestSize.removeClass('hidden');\n $RequestSize.parent().removeClass('hidden');\n }\n } else if ($size.hasClass('col-12') && el.selectable) {\n el.isOnlyOneLeft ? $size.find('.js-limited-availability').removeClass('hidden') : $size.find('.js-limited-availability').addClass('hidden');\n }\n }\n $.spinner().stop();\n }\n });\n }\n $(document).find('.cc-size-list .cc-size-container').removeClass('cc-active');\n $(document).find('.cc-size-list button.cc-active').parent().addClass('cc-active');\n};\n\n/* PDP Reccomendations Slider */\nfunction recommendationSlider () {\n var arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev');\n var arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext');\n var arrowNext = $('.cc-product-list.cc-slider').data('arrowdx');\n var arrowPrev = $('.cc-product-list.cc-slider').data('arrowsx');\n if ($('.cc-product-list.cc-slider').length > 0) {\n if ($('.cc-product-list.cc-slider.slick-slide').length === 0) {\n $('.cc-product-list.cc-slider').each(function () {\n var slidesContainer = $(this);\n var slidesToShow = slidesContainer.data('items-row');\n\n slidesContainer.slick({\n accessibility: false,\n infinite: false,\n autoplay: false,\n focusOnSelect: false,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: slidesToShow,\n variableWidth: false,\n dots: false,\n dotsClass: 'slick-dots-line',\n appendDots: $('.js-product-list-slick-dots'),\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1439.98,\n settings: {\n slidesToShow: 3,\n dots: true,\n arrow: false\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 1,\n dots: false,\n arrow: true\n }\n }\n ]\n });\n });\n }\n }\n};\n\n// da chiamare dopo il caricamento\nfunction removeWishlistinRecommendation () {\n $(document).find('.cc-product-recommendations .cc-product-tile button.js-add-to-wishlist').remove();\n}\n\nfunction canStickybarAppear(){\n var visibleCheckElement = document.getElementsByClassName('visible-check');\n let isAddToCartVisible = false;\n if (visibleCheckElement.length > 0) {\n isAddToCartVisible = visibleCheckElement && visibleCheckElement[0].getBoundingClientRect().bottom > 0;\n }\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let isReccomendationsVisible;\n let stickyCanAppear;\n if (document.getElementsByClassName('cc-product-recommendations')\n && document.getElementsByClassName('cc-product-recommendations').length > 0\n && document.getElementsByClassName('cc-product-recommendations')[0] != null) {\n var height = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().height;\n var bottom = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().bottom;\n var top = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().top;\n var heightHeader = document.getElementsByClassName('cc-header')[0].getBoundingClientRect().height;\n var visibleUp = top > height;\n var visibleDown = bottom - heightHeader < 0;\n isReccomendationsVisible = !(visibleDown || visibleUp);\n // Check if in the current position, the sticky could appear as soon as the scroll ends || (bottom - heightHeader < 0)\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible && !isReccomendationsVisible;\n } else {\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n }\n return stickyCanAppear;\n}\n\nmodule.exports = {\n availability: base.availability,\n\n updatePrice: function () {\n // shop by look: update price for each product\n $(function(){\n var productIds = $('.cc-product-list .product').map(function(){\n return $(this).attr('data-pid');\n }).get();\n\n $(document).trigger('product:updatePrices', productIds);\n });\n },\n\n loadVideo: function () {\n let $videoContainer = $('.js-video-container');\n if ($videoContainer.length === 0) {\n return;\n }\n\n let url = $videoContainer.data('video-url');\n $.ajax({\n url: url,\n success: function (data) {\n $('.js-video-iframe').attr('src', data.videoURL);\n }\n });\n },\n\n discoverMore: function () {\n $(document).on('click', '.js-discover-more-analytics', function(e) {\n var productName = $('.js-analytics-look-product').attr('data-name');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Product Look Detail Page',\n eventAction: 'discover more',\n eventLabel: productName\n });\n });\n },\n\n fourGift: function () {\n $('body').on('4gift:openSizeSticky', function(e) {\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n liveChatDisable();\n });\n\n $('body').on('4gift:openSizeModal', function(e) {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n });\n },\n\n changeProductLook: function() {\n $('body').on('click', '.js-select-single-tile-look', function(e) {\n e.preventDefault();\n var url = $(this).data('href');\n var pid = $(this).data('pid');\n var data = {\n pid: pid\n };\n\n $.ajax({\n url: url,\n data: data,\n method: 'GET',\n success: function (data) {\n if (data.stickyBar) {\n $('.js-sticky-look-container').html(data.stickyBar);\n }\n if (data.imageToChange) {\n $('.js-image-main-look').html(data.imageToChange);\n }\n if (data.product) {\n $('.js-product-name').text(data.product.microCategoryAcme);\n $('.js-product-color').text(data.product.mainColor);\n }\n if (data.productLink) {\n $('.js-link-product').attr('href', data.productLink);\n }\n var productName = $('.js-analytics-look-product').attr('data-name');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Product Look Detail Page',\n eventAction: 'variant select',\n eventLabel: productName\n });\n },\n error: function(err) {\n }\n });\n });\n },\n\n addToCart: function () {\n $('body').on('click', 'button.add-to-cart', function (e) {\n e.stopPropagation();\n if ($(this).data('sticky')) {\n $('.js-analytics-click-product-info-' + $(this).data('pid')).attr('data-from', $(this).data('sticky'));\n } else $('.js-analytics-click-product-info-' + $(this).data('pid')).attr('data-from', 'pdp');\n if ($('.add-to-cart').data('disabled')) {\n let isInSticky = $(e.currentTarget).closest('.js-sticky').length;\n openFromBuyButton = true;\n if (isInSticky) {\n // Close all other modals opened sticky\n $('.js-sticky-choice').each((_idx, el) => {\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n });\n // open size modal sticky\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n liveChatDisable();\n } else {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n }\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n updateSizeListLook();\n } else updateSizeList();\n\n var id = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = 'add to cart';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n\n // new analytics parameter: accessType\n if ($('body.cc-mobile').length || $(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n $('#size-overlay').data('accessType', accessType);\n\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n } else {\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n updateSizeListLook();\n } else updateSizeList();\n if (!$(document).find('.js-upload-size .cc-active .js-select-size').hasClass('cc-request-size')) {\n if ($(e.currentTarget).hasClass('js-add-to-cart-sticky-look')) {\n base.performAddToCartLook(this);\n } else base.performAddToCart(this);\n } else {\n let modalTarget = $('.js-size-modal').eq(0).data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n }\n }\n });\n },\n\n fixStickybarHidingOnClick: function () {\n // fix stickybar hiding when clicking on color or size selector\n $('.js-sticky-add-to-cart').on('click', function (e) {\n var now = Date.now().toString();\n $(this).attr('data-recent-click', now);\n setTimeout(() => {\n if ($(this).attr('data-recent-click') === now) {\n $(this).attr('data-recent-click', '');\n // check if the stickybar's position is still valid\n if (! canStickybarAppear()) {\n // close all open subwindows\n let $modals = $('.cc-sticky-add-to-cart').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n });\n // hide stickybar\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n $sticky.removeClass('cc-open').addClass('cc-close');\n }\n }\n }, 1000);\n });\n },\n\n openStickySelector: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice', function (e) {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n updateSizeList();\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n $('.js-sticky-choice').each((_idx, el) => {\n // Close all other modals opened\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n liveChatEnable();\n });\n let isSizeBtn = $(e.currentTarget).hasClass('js-size-sticky');\n var sku = $(e.currentTarget).closest('.product-detail').attr('data-skumaster');\n let color = $('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner') || $('#size-overlay').data('analyticsowner');\n var accessType = $('#size-modal-sticky').data('accessType') || $('#size-overlay').data('accessType');\n if (!isCurrentModalOpen) {\n // If the modal was not open before, close it. If the modal was open before, it means\n // we are closing it, but we did it in the each loop\n let $modal = $(e.currentTarget).toggleClass('cc-open').data('target');\n $($modal).toggleClass('cc-open');\n if (isSizeBtn) {\n if (!analyticsOwn || e.originalEvent !== undefined) {\n analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n }\n if (!accessType || e.originalEvent !== undefined) {\n accessType = 'pdp-sticky-bottom';\n $('#size-modal-sticky').data('accessType', accessType);\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n } else if (isSizeBtn) {\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-modal-sticky').removeData('analyticsowner');\n $('#size-overlay').removeData('analyticsowner');\n $('#size-modal-sticky').removeData('accessType');\n $('#size-overlay').removeData('accessType');\n }\n });\n },\n\n openStickySelectorLook: function () {\n // Open the size modal in PDP\n $('body').on('click', '.js-sticky-choice-look', function (e) {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n e.stopPropagation();\n updateSizeListLook();\n var scrollTimer = setTimeout(() => {\n liveChatPositionStikyUp();\n }, 250);\n if ($('.cc-product-detail .cc-content-colors-choice-sticky .cc-slider').length > 0) {\n if ($('.cc-product-detail .cc-content-colors-choice-sticky .cc-slider .slick-slide').length === 0) {\n $('.cc-product-detail .cc-content-colors-choice-sticky .cc-slider').each(function () {\n var slidesContainer = $(this);\n slidesContainer.slick({\n infinite: false,\n autoplay: false,\n focusOnSelect: true,\n centerMode: false,\n autoplaySpeed: 3000,\n speed: 500,\n slidesToScroll: 1,\n slidesToShow: 5,\n variableWidth: false,\n dots: false,\n arrow: true,\n prevArrow: '',\n nextArrow: '',\n responsive: [\n {\n breakpoint: 1199.98,\n settings: {\n slidesToShow: 12\n }\n },\n {\n breakpoint: 767.98,\n settings: {\n slidesToShow: 5\n }\n }\n ]\n });\n });\n }\n };\n let isCurrentModalOpen = $(e.currentTarget).hasClass('cc-open');\n $('.js-sticky-choice-look').each((_idx, el) => {\n // Close all other modals opened\n let $el = $(el);\n $el.removeClass('cc-open');\n $($el.data('target')).removeClass('cc-open');\n liveChatEnable();\n });\n let isSizeBtn = $(e.currentTarget).hasClass('js-size-sticky');\n var sku = $(e.currentTarget).closest('.js-product-single-look').attr('data-sku');\n var color = $(e.currentTarget).closest('.js-product-single-look').attr('data-color');\n if (!isCurrentModalOpen) {\n // If the modal was not open before, close it. If the modal was open before, it means\n // we are closing it, but we did it in the each loop\n let $modal = $(e.currentTarget).toggleClass('cc-open').data('target');\n $($modal).toggleClass('cc-open');\n if (isSizeBtn) {\n var analyticsOwn = 'select size';\n $('#size-modal-sticky').data('analyticsowner', analyticsOwn);\n var accessType = 'pdp-sticky-bottom-look';\n $('#size-modal-sticky').data('accessType', accessType);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n } else if (isSizeBtn) {\n var analyticsOwn = $('#size-modal-sticky').data('analyticsowner');\n var accessType = $('#size-modal-sticky').data('accessType');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-modal-sticky').removeData('analyticsowner');\n $('#size-modal-sticky').removeData('accessType');\n }\n });\n },\n\n zoomElement: function () {\n var zoomCounter = 0;\n $('body').on('click keypress', '.js-zoom', function (e) {\n let imageToZoom = e.currentTarget;\n let fullResolution = imageToZoom.src;\n var sixeClass = window.width < 768 ? 'js-max' : 'js-min';\n let fullResolutionSrcSet = $(imageToZoom).closest('.cc-content-image').find('picture source.' + sixeClass)[0].srcset;\n let $zoomedImage = $('.js-zoom-modal img');\n var stickyOverlay = !$('.cc-size-choice-overlay-sticky').hasClass('cc-open') && !$('.cc-color-choice-overlay-sticky').hasClass('cc-open');\n if (stickyOverlay) {\n $.spinner().start();\n $('.js-zoom-modal').removeClass('hidden').removeClass('cc-loaded');\n $zoomedImage.addClass('hidden');\n $zoomedImage.attr('src', fullResolution);\n $zoomedImage.attr('srcset', fullResolutionSrcSet);\n\n if (zoomCounter > 0) {\n $('.js-zoom-modal').removeClass('cc-loading').addClass('cc-loaded');\n $zoomedImage.removeClass('hidden');\n $('body').addClass('cc-blocked');\n } else {\n zoomCounter++;\n $zoomedImage.on('load', (e) => {\n $('.js-zoom-modal').addClass('cc-loaded');\n $.spinner().stop();\n $zoomedImage.removeClass('hidden');\n var outerContent = $('.js-zoom-modal');\n var innerContent = $('.js-zoom-modal img');\n $('body').addClass('cc-blocked');\n outerContent.scrollLeft((innerContent.width() - outerContent.width()) / 2);\n outerContent.scrollTop((innerContent.height() - outerContent.height()) / 2);\n });\n }\n }\n });\n\n $('body').on('click', '.js-zoom-modal img', function (e) {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n });\n\n $('body').on('focusout', '.js-zoom', function (e) {\n $('.js-zoom-modal').addClass('hidden').removeClass('cc-loaded');\n $('body').removeClass('cc-blocked');\n });\n },\n\n positionStickyElement: function () {\n const closeAllOpenSubwindow = () => {\n let $modals = $('.cc-sticky-add-to-cart').find('.js-sticky-choice').toArray();\n $modals.forEach((el) => {\n $(el).removeClass('cc-open');\n $($(el).data('target')).removeClass('cc-open');\n });\n };\n let scrollTimer;\n $(document).on('scroll', function () {\n // Manage the fact that scroll events are extremely common: if another scroll event was registered less than 250\n // milliseconds before, we do not consider it\n if (scrollTimer) {\n clearTimeout(scrollTimer);\n liveChatPositionStikyDown();\n }\n if ($('.js-sticky-add-to-cart').attr('data-recent-click')) {\n // prevent stickybar from instantly hiding when clicking on size or color buttons.\n return;\n }\n closeAllOpenSubwindow();\n let $sticky = $('.cc-sticky-add-to-cart').not('.js-sticky-add-to-cart-look');\n // When we scroll, the sticky should be always hidden\n $sticky.removeClass('cc-open').addClass('cc-close');\n var visibleCheckElement = document.getElementsByClassName('visible-check');\n let isAddToCartVisible = false;\n if (visibleCheckElement.length > 0) {\n isAddToCartVisible = visibleCheckElement && visibleCheckElement[0].getBoundingClientRect().bottom > 0;\n }\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let isReccomendationsVisible;\n let stickyCanAppear;\n if (document.getElementsByClassName('cc-product-recommendations')\n && document.getElementsByClassName('cc-product-recommendations').length > 0\n && document.getElementsByClassName('cc-product-recommendations')[0] != null) {\n var height = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().height;\n var bottom = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().bottom;\n var top = document.getElementsByClassName('cc-product-recommendations')[0].getBoundingClientRect().top;\n var heightHeader = document.getElementsByClassName('cc-header')[0].getBoundingClientRect().height;\n var visibleUp = top > height;\n var visibleDown = bottom - heightHeader < 0;\n isReccomendationsVisible = !(visibleDown || visibleUp);\n // Check if in the current position, the sticky could appear as soon as the scroll ends || (bottom - heightHeader < 0)\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible && !isReccomendationsVisible;\n } else {\n stickyCanAppear = !isAddToCartVisible && !isFooterVisible;\n }\n\n if (stickyCanAppear) {\n scrollTimer = setTimeout(() => {\n $sticky.addClass('cc-open').removeClass('cc-close');\n liveChatPositionStikyUp();\n }, 250);\n }\n });\n\n const $stickyOverlay = $('.cc-size-choice-overlay-sticky');\n const $stickyColor = $('.cc-content-colors-choice-sticky');\n\n $(document).click(e => {\n if (!$stickyOverlay.is(e.target)\n && $stickyOverlay.has(e.target).length === 0\n && !$stickyColor.is(e.target) &&\n $stickyColor.has(e.target).length === 0) {\n if ($('.js-sticky-choice').hasClass('cc-open')) {\n liveChatEnable();\n }\n closeAllOpenSubwindow();\n }\n });\n },\n\n openRequestSizeFromPlp: function () {\n $(document).ready(function () {\n var size = $('.js-open-requestsize-from-plp').data('requestsize');\n if (size !== null && (size !== undefined) && (size !== 'undefined')) {\n $('.cc-size-choice-overlay-sticky').find('.js-check-availability').each(function() {\n if ($(this).data('size') === size) {\n $(this).click();\n return false;\n }\n });\n }\n });\n },\n\n openSizeSelector: function () {\n const performOpenSizeSelector = (e) => {\n e.stopPropagation();\n let modalTarget = e.currentTarget.dataset.target;\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpenSize, onClose: fixLayoutForModalClose });\n\n updateSizeList();\n modal.open();\n $('body').one('product:afterAttributeSelect', () => {\n modal.close();\n });\n $('.js-check-availability').one('click', () => { modal.close(); });\n $('.js-close-requestSize').one('click', () => { modal.close(); });\n };\n // Open the size modal in PDP\n $('body').on('click', '.js-open-choice', (e) => {\n openFromBuyButton = false;\n $('#4giftButtonSizeNotSelected').val('false');\n $('#payPalButtonSizeNotSelected').val('false');\n performOpenSizeSelector(e);\n\n var colorModal = e.currentTarget.classList.contains('js-open-color-choice');\n\n if (!colorModal) {\n var sku = $(e.currentTarget).closest('.product-detail').attr('data-skumaster');\n let color = $('.js-color-choice.cc-active').data('attr-value');\n // new analytics parameter: accessType\n var accessType = $('#size-overlay').data('accessType');\n if (!accessType) {\n if ($('body.cc-mobile').length || $(this).parents('.js-sticky-add-to-cart').length) {\n accessType = 'pdp-sticky-bottom';\n } else {\n accessType = 'pdp';\n }\n $('#size-overlay').data('accessType', accessType);\n }\n\n var analyticsOwn = $('#size-overlay').data('analyticsowner'); // paypal insert value before open modal\n if (!analyticsOwn) {\n analyticsOwn = 'select size';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n }\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: sku + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n }\n });\n $('body').on('click', '.js-fake-apple-pay.js-desktop', (e) => {\n var id = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n // new analytics parameter: accessType\n if ($(this).parents('.js-sticky-add-to-cart').length) {\n var accessType = 'pdp-sticky-bottom';\n } else {\n var accessType = 'pdp';\n }\n $('#size-overlay').data('accessType', accessType);\n var analyticsOwn = 'applepay';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n performOpenSizeSelector(e);\n });\n $('body').on('click', '.js-fake-apple-pay.js-mobile', (e) => {\n var id = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = 'applepay';\n $('#size-overlay').data('analyticsowner', analyticsOwn);\n // new analytics parameter: accessType\n var accessType = 'pdp-sticky-bottom';\n $('#size-overlay').data('accessType', accessType);\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'open',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n // open size modal sticky\n const modalTarget = $('.js-size-sticky').data('target');\n $('.js-size-sticky').toggleClass('cc-open');\n $(modalTarget).toggleClass('cc-open');\n e.stopPropagation();\n });\n $('.js-analytics-close-selectsize').on('click', function(e) {\n var id = $(document).find('.cc-product-detail').data('skumaster');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var analyticsOwn = $('#size-overlay').data('analyticsowner');\n var accessType = $('#size-overlay').data('accessType');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'Size Selector',\n eventAction: 'close',\n eventLabel: id + color,\n buttonType: analyticsOwn,\n accessType: accessType\n });\n $('#size-overlay').removeData('analyticsowner');\n $('#size-overlay').removeData('accessType');\n });\n },\n\n openSizeSelectorFromRequestSize: function () {\n let modalTarget = $('.js-open-choice').data('target');\n let modal = new Modal(modalTarget, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n $('body').on('click', '.js-back-selectsize', function (e) {\n if (!window.isMobile && !$('#size-modal-sticky').hasClass('js-close-requestSize')) {\n e.stopPropagation();\n modal.open();\n $('body').one('product:afterAttributeSelect', () => { modal.close(); });\n $('.js-check-availability').one('click', () => { modal.close(); });\n }\n $('#size-modal-sticky').removeClass('js-close-requestSize');\n });\n },\n\n openRequestSize: function () {\n $(document).on('click', '.js-check-availability', function (e) {\n var urlGetParameter = $(this).data('parameter');\n var strokeClose = $(e.currentTarget).data('strokeclose');\n var arrow = $(e.currentTarget).data('arrowback');\n var size = $(e.currentTarget).data('size');\n var ecomSize = this.dataset.sizehtml;\n var sku = $(document).find('.cc-product-detail').data('pid');\n var color = $(document).find('.js-color-choice.cc-active').data('attr-value');\n var target = this.dataset.target;\n var overlay;\n if (window.isMobile) {\n target = target + '-mob';\n overlay = '#js-requestSize-product-overlay-mob';\n } else {\n target = target + '-desk';\n overlay = '#js-requestSize-product-overlay-desk';\n }\n let m = new Modal(target, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n var $stickyModal = $(this).closest('.cc-size-choice-overlay-sticky');\n if ($stickyModal.length > 0) {\n $stickyModal.removeClass('cc-open');\n $stickyModal.siblings('.cc-size-choice-button-sticky.js-size-sticky.js-sticky-choice').removeClass('cc-open');\n }\n $.spinner().start();\n $.ajax({\n url: urlGetParameter,\n method: 'POST',\n data: {\n size: size,\n ecomSize: ecomSize,\n sku: sku,\n color: color\n },\n success: function (data) {\n $(overlay).html(data);\n $.spinner().stop();\n setButtonAttribute();\n m.open();\n if (window.isMobile) {\n $('.cc-requestsize-only-mobile .js-change-icon').attr('xlink:href', strokeClose);\n }\n $('#request-size-overlay-desk .js-back-selectsize').one('click', () => {\n m.close();\n $('.js-back-selectsize').children().attr('xlink:href', arrow);\n });\n $('#request-size-overlay-mob .js-back-selectsize').one('click', () => {\n $(m.modal).removeClass('cc-open');\n $(m.modal).addClass('hidden').attr('aria-hidden', 'true');\n m._open = false;\n m._previouslyFocussedElement.focus();\n if (m._config.onClose) {\n m._config.onClose();\n }\n $('body').removeClass('cc-blocked');\n document.removeEventListener('keydown', this._onKeyDown);\n });\n $('button[data-id=\"request-size-title\"]').attr({\n 'aria-required': 'true',\n 'aria-describedby': 'form-selecttitle-error'\n });\n }\n });\n });\n },\n\n submitRequestSize: function () {\n $(document).on('click', '.js-requestsize-button', function () {\n var url = $('.js-requestsize-button').data('action');\n var form = $($('.js-form-control-requestsize')[0]);\n var size = form.find('.js-requestsize-size :selected').text().trim();\n var productID = $('.js-product-id').val().trim() + $('.js-color-selected').val().trim();\n var label = productID + ' - ' + size;\n form.find('[name=ecomSize]').val(size);\n var checkHoneyPot = $('.contact_me_if_spam').val();\n var isSpam = checkHoneyPot.length > 0;\n if (!isSpam) {\n form.spinner().start();\n $.ajax({\n url: url,\n method: 'POST',\n data: form.serialize(),\n success: function (data) {\n form.spinner().stop();\n $('.js-form-control-requestsize').fadeOut();\n $('.js-success-page-requestSize').fadeIn();\n uploadSuccesPage($('.js-success-page-requestSize'), data);\n // analytics\n if (data.response.success === true) {\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_ok',\n eventLabel: label\n });\n } else {\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_fail',\n eventLabel: label\n });\n }\n // END\n },\n error: function (data) {\n // analytics\n dataLayer.push({\n event: 'requestSize',\n eventCategory: 'Request Size',\n eventAction: 'submit_fail',\n eventLabel: label\n });\n // END\n form.spinner().stop();\n $('.js-form-control-requestsize').fadeOut();\n $('.js-success-page-requestSize').fadeIn();\n uploadSuccesPage($('.js-success-page-requestSize'), data);\n }\n });\n }\n });\n },\n /*\n allFildFullrequestsizeForm: function () {\n $(document).ready(function () {\n allFildeRequestSize();\n });\n $(document).on('change', '.js-form-control-requestsize', function () {\n allFildeRequestSize();\n });\n },\n */\n // closeRequestSize: function () {\n // $(document).on('click', '.cc-mobile .js-back-selectsize', function (e) {\n // $('.js-requestSize').fadeOut();\n // $('body').removeClass('cc-blocked').removeClass('cc-blocked');\n // liveChatEnable();\n // var loggedCustomerEmail = $('.js-requestsize-email').data('islogged');\n // var islogged = (loggedCustomerEmail !== null && loggedCustomerEmail !== 'undefined');\n // if (!islogged) {\n // clearForm($('.js-form-control-requestsize'));\n // }\n // uploadFormRequestSize();\n // });\n // },\n\n updateAttributesAndDetails: function () {\n $('body').on('product:statusUpdate', function (e, data) {\n var $productContainer = $('.product-detail[data-pid=\"' + data.id + '\"]');\n if ($productContainer.length === 0) {\n $productContainer = $('.product-detail[data-pid=\"' + $('#idNumberSizeSelectedUrl').val() + '\"]');\n }\n $productContainer.find('.description-and-detail .product-attributes')\n .empty()\n .html(data.attributesHtml);\n // update request size modal after select product variation\n $productContainer.find('.js-productVariation-update')\n .empty()\n .html(data.requestSizeHtml);\n $('.cc-select.js-requestsize-size').selectpicker();\n $('.cc-select.js-requestsize-title').selectpicker();\n\n if (data.shortDescription) {\n $productContainer.find('.description-and-detail .description')\n .removeClass('hidden-xl-down');\n $productContainer.find('.description-and-detail .description .content')\n .empty()\n .html(data.shortDescription);\n } else {\n $productContainer.find('.description-and-detail .description')\n .addClass('hidden-xl-down');\n }\n\n if (data.longDescription) {\n $productContainer.find('.description-and-detail .details')\n .removeClass('hidden-xl-down');\n $productContainer.find('.description-and-detail .details .content')\n .empty()\n .html(data.longDescription);\n } else {\n $productContainer.find('.description-and-detail .details')\n .addClass('hidden-xl-down');\n }\n });\n },\n\n showSpinner: function () {\n $('body').on('product:beforeAddToCart product:beforeAttributeSelect', function () {\n $.spinner().start();\n });\n },\n\n updateAttribute: function () {\n $('body').on('product:afterAttributeSelect', function (e, response) {\n $('.product-detail').data('pid', response.data.product.id);\n $('.js-open-contact').data('sku', response.data.product.sku);\n var skuWColor = response.data.product.skuMaster;\n var colorAttr = response.data.product.variationAttributes[0].values;\n for (var i = 0; i < colorAttr.length; i++) {\n if (colorAttr[i].selected) {\n skuWColor += colorAttr[i].id;\n }\n }\n $('.js-find-in-store-button').attr('data-sku', skuWColor);\n $('.js-open-choice').toArray().forEach(closeModal);\n $('.js-sticky-choice').toArray().forEach(closeModal);\n // Close open modals\n if (openFromBuyButton) {\n base.performAddToCart(this);\n }\n if ($('#4giftButtonSizeNotSelected').val() === 'true') {\n $('body').trigger('product:afterAttributeSelect4gift');\n }\n\n // trigger wishlist update\n $('body').trigger('wishlist:productVariantChanged');\n\n if ($('.js-recommendationTemplate:not(.js-do-not-load)').length) {\n var url = $('#urlRecommendations').val();\n var queryString = window.location.search;\n var queryPid = '&pid=';\n if (queryString == '') {\n queryPid = '?pid=';\n }\n var completeUrl = url + queryString + queryPid + skuWColor;\n\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n $('.js-recommendationTemplate').html(data);\n $('.js-product-recommendations').removeClass('d-none');\n recommendationSlider();\n removeWishlistinRecommendation();\n\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n },\n error: function (err) {\n console.log(err);\n }\n });\n });\n }\n },\n error: function(err) {\n }\n });\n }\n });\n },\n\n updateAddToCart: function () {\n $('body').on('product:updateAddToCart', function (e, response) {\n // update local add to cart (for sets)\n $('button.add-to-cart', response.$productContainer).data('disabled',\n (!response.product.readyToOrder || !response.product.available));\n manageApplePayButtonApperance(response);\n });\n },\n\n sizeChart: function () {\n $('body').on('click', '.js-open-size-chart', function (e) {\n e.preventDefault();\n var buttonPressed = $(this);\n var url = buttonPressed.data('href');\n var buttonID = this.id;\n $(document).find('.cc-size-chart-overlay-container').css('content-visibility', 'visible');\n if (buttonID === 'size-chart-stiky' && !window.isMobile) {\n $('#js-open-from-sticky').val(true);\n } else {\n $('#js-open-from-sticky').val(false);\n }\n var $prodSizeChart;\n var modalTarget;\n if (window.isMobile) {\n $prodSizeChart = $('#js-size-chart-content-mobile');\n modalTarget = buttonPressed.data('target-mobile');\n } else {\n $prodSizeChart = $('#js-size-chart-content');\n modalTarget = buttonPressed.data('target');\n }\n if ($prodSizeChart.is(':empty')) {\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'text',\n success: function (data) {\n // analytics\n dataLayer.push({\n event: 'sizeChart',\n eventCategory: 'Size Chart',\n eventAction: 'open'\n });\n // END\n $prodSizeChart.html(data);\n if (window.isMobile) {\n $('.js-open-choice').toArray().forEach(closeModal);\n }\n e.stopPropagation();\n\n var modal = new Modal(modalTarget, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.open();\n }\n });\n } else {\n var modal = new Modal(modalTarget, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.open();\n }\n });\n },\n\n updateLinksWithTemplate: function () {\n var urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('template')) {\n var template = urlParams.get('template');\n $('.js-update-with-template').each((_idx, el) => {\n var currentLink = $(el).attr('href');\n let updatedLink = replaceOrAddQueryParam(currentLink, 'template', template);\n $(el).attr('href', updatedLink);\n });\n }\n },\n\n closeSizeChart: function () {\n $(document).on('click', '.js-close-size-chart', function () {\n var sizeChartOverlayId;\n var sizeOverlay;\n var openedFromSticky = $('#js-open-from-sticky').val();\n if (window.isMobile) {\n sizeChartOverlayId = '#size-chart-overlay-mobile';\n sizeOverlay = '#size-modal-sticky';\n } else {\n sizeChartOverlayId = '#size-chart-overlay';\n sizeOverlay = '#size-overlay';\n }\n\n if (!window.mobile) {\n var modal = new Modal(sizeOverlay, { onShow: openSizeChartModal, onClose: closeSizeChartModal });\n modal.close();\n } else {\n var modal = new Modal(sizeOverlay, { onShow: fixLayoutForModalOpen, onClose: fixLayoutForModalClose });\n modal.open();\n $('.cc-product-detail .cc-info-section').removeAttr('style');\n }\n });\n },\n\n sizeChartMeasure: function () {\n $('body').on('click', '.js-size-measure-selector', function (e) {\n e.preventDefault();\n var measureSelected = $(this);\n var tableSelectedId = measureSelected.data('table-id');\n\n var oldSelected = measureSelected.parent('.js-cc-udm').siblings();\n oldSelected.removeClass('cc-active');\n var oldTableID = oldSelected.find('.js-size-measure-selector').data('table-id');\n $('#' + oldTableID).hide();\n measureSelected.parent('.js-cc-udm').addClass('cc-active');\n $('#' + tableSelectedId).show();\n });\n },\n\n setNumberPageCarouselReccomandation: function() {\n $('.cc-product-recommendations .cc-slider').on('setPosition', function(event, slick) {\n var slideTosho = $('.cc-product-recommendations .cc-slider').data('items-row');\n if ($(window).width() < 1439.98) slideTosho = 3;\n if ($(window).width() < 767.98) slideTosho = 1;\n var currentSlide = slick.currentSlide + 1;\n var totalSlide = slick.slideCount - (slideTosho - 1);\n var arialabelPrev;\n if (currentSlide <= totalSlide && (currentSlide - 1) > 0) {\n arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev').replace('{0}', currentSlide - 1).replace('{1}', totalSlide);\n } else {\n arialabelPrev = $('.cc-product-list.cc-slider').data('arialabelprev').replace('{0}', currentSlide).replace('{1}', totalSlide);\n }\n var arialabelNext;\n if ((currentSlide + 1) <= totalSlide) {\n arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext').replace('{0}', currentSlide + 1).replace('{1}', totalSlide);\n } else {\n arialabelNext = $('.cc-product-list.cc-slider').data('arialabelnext').replace('{0}', currentSlide).replace('{1}', totalSlide);\n }\n $('.cc-product-recommendations .cc-slider-prev').attr('aria-label', arialabelPrev);\n $('.cc-product-recommendations .cc-slider-next').attr('aria-label', arialabelNext);\n // set tabindex -1 if product isn't show, and 0 if is show\n $('.slick-slide').each(function() {\n $(this).attr('aria-hidden') === 'true' ? $(this).attr('tabindex', '-1') : $(this).attr('tabindex', '0');\n });\n });\n },\n\n shippingPackaging: function () {\n $(document).on('click', '.js-packaging-iteam', function () {\n if ($(this).hasClass('active')) {\n $(this).find('span').removeClass('cc-noActive');\n $(this).parent().siblings().children().find('span').addClass('cc-noActive');\n }\n var $menu = $(this).closest('.cc-packaging-shipping-list');\n if ($('body').hasClass('cc-mobile') || ($('body').hasClass('cc-tablet') && $(this).closest('.cc-content-packaging-shipping-list-four').length > 0)) {\n var myScrollPos = $(this).offset().left + ($(this).outerWidth(true) / 2) + $menu.scrollLeft() - $menu.width() / 2;\n $menu.scrollLeft(myScrollPos);\n }\n });\n },\n\n initializeSize: function() {\n $(document).ready(function() {\n autoSelectForOneSize();\n });\n },\n\n setIdForModalDialogattributes: function() {\n $(document).ready(function() {\n // set dialog id selectsticky\n var ariaDescribedBy = $(document).find('.cc-size-choice-overlay-sticky').attr('aria-describedby');\n var ariaLabelledby = $(document).find('.cc-size-choice-overlay-sticky').attr('aria-labelledby');\n $(document).find('.cc-size-choice-overlay-sticky .cc-head-title').attr('id', ariaLabelledby);\n $(document).find('.cc-size-choice-overlay-sticky .js-change-for-stiky').attr('id', ariaDescribedBy);\n // set dialog id whishlistMesage\n var $wishListMessage = $(document).find('.cc-info-container .cc-mobile-only .cc-add-to-wishlist-message');\n var ariaDescribedByWish = $wishListMessage.attr('aria-describedby');\n var newAriaDescribedByWish = ariaDescribedByWish + '-Mobile';\n var ariaLabelledbyWish = $wishListMessage.attr('aria-labelledby');\n var newAriaLabelledbyWish = ariaLabelledbyWish + '-Mobile';\n $(document).find('.cc-info-container .cc-mobile-only .cc-add-to-wishlist-message .cc-prod-title').attr('id', newAriaLabelledbyWish);\n $(document).find('.cc-info-container .cc-mobile-only .cc-add-to-wishlist-message .js-wish-changeId-forMobile').attr('id', newAriaDescribedByWish);\n $wishListMessage.attr('aria-describedby', newAriaDescribedByWish);\n $wishListMessage.attr('aria-labelledby', newAriaLabelledbyWish);\n // set id for butto selectsize stiky\n $(document).find('.cc-size-choice-overlay-sticky .js-open-size-chart').attr('id', 'size-chart-stiky');\n $(document).find('.cc-size-choice-overlay-sticky .js-open-helpWhitSize').attr('id', 'size-help-sticky');\n });\n },\n\n copyProductLink: function (e) {\n $(document).on('click keydown', '.js-share-product-link', function (event) {\n if (event.type === 'keydown' && event.key !== 'Enter' && event.key !== ' ') return;\n var copyText = $(this).data('url');\n navigator.clipboard.writeText(copyText);\n var copiedLink = $(this).find('.js-link-label').data('copied');\n $(this).find('.js-link-label').find('.js-social-text').text(copiedLink);\n });\n },\n\n loadRecommendations: function () {\n $(document).ready(function () {\n if ($('.js-recommendationTemplate:not(.js-do-not-load)').length) {\n if ($('.cc-product-detail--shop-look').length === 0) {\n var url = $('#urlRecommendations').val();\n var pid = $('.product-detail').data('pid');\n var queryString = window.location.search;\n var queryPid = '&pid=';\n if (queryString == '') {\n queryPid = '?pid=';\n }\n var completeUrl = url + queryString + queryPid + pid;\n $.ajax({\n url: completeUrl,\n method: 'GET',\n success: function (data) {\n if (data) {\n $('.js-recommendationTemplate').html(data);\n $('.js-product-recommendations').removeClass('d-none');\n recommendationSlider();\n removeWishlistinRecommendation();\n\n document.querySelectorAll('iframe.lazyload').forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (!endPoint) {\n return;\n }\n $.ajax({\n url: endPoint,\n method: 'GET',\n success: function(data) {\n $(video).attr('src', data.videoURL);\n },\n error: function (err) {\n }\n });\n });\n }\n },\n error: function(err) {\n }\n });\n }\n }\n });\n },\n\n addToCartAutomatic: function() {\n $(document).ready(function () {\n var addToCartAutomatic = $('#addToCartAutomatic').val();\n if (addToCartAutomatic === 'true') {\n if (window.isMobile) {\n if (!$($('button.add-to-cart')[1]).data('disabled')) {\n $($('button.add-to-cart')[1]).click();\n }\n } else {\n if (!$($('button.add-to-cart')[0]).data('disabled')) {\n $($('button.add-to-cart')[0]).click();\n }\n }\n }\n });\n },\n\n fixSelectDropdowns: function() {\n // accessibility: fix dropdowns select focus issues\n $(document).ready(function() {\n // fix dropdowns not focusable\n $(document).on('keydown.fixdropdown', (e)=>{\n if (e.key === 'Tab'){\n $('.dropdown-toggle').attr('tabindex', '0');\n }\n });\n\n $(document).on('keydown.fixdropdown', '.dropdown:not(.show) .dropdown-toggle', function(e){\n if (e.key === 'Enter' || e.key === ' ') {\n // trigger click and move focus to dropdown items\n $(this)[0].click();\n var $menu = $(this).siblings('.dropdown-menu');\n $menu.find('.dropdown-item')[0].focus();\n }\n });\n\n $(document).on('keydown.fixdropdown', '.dropdown-item', function(e){\n if (e.key === 'Enter' || e.key === ' ') {\n $(this)[0].click();\n }\n });\n });\n }\n};\n","'use strict';\n\nmodule.exports = {\n filter: function () {\n // Display refinements bar when Menu icon clicked\n $('.container').on('click', 'button.filter-results', function () {\n $('.refinement-bar, .modal-background').show();\n $('.refinement-bar').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', true);\n $('.refinement-bar .close').focus();\n });\n },\n\n closeRefinements: function () {\n // Refinements close button\n $('.container').on('click', '.refinement-bar button.close, .modal-background', function () {\n $('.refinement-bar, .modal-background').hide();\n $('.refinement-bar').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', false);\n $('.btn.filter-results').focus();\n });\n },\n\n resize: function () {\n // Close refinement bar and hide modal background if user resizes browser\n $(window).resize(function () {\n $('.refinement-bar, .modal-background').hide();\n $('.refinement-bar').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', false);\n });\n },\n\n sort: function () {\n // Handle sort order menu selection\n $('.container').on('change', '[name=sort-order]', function (e) {\n e.preventDefault();\n\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n\n $.spinner().start();\n $(this).trigger('search:sort', this.value);\n $.ajax({\n url: this.value,\n data: {\n selectedUrl: this.value,\n template: currTemplate\n },\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n }\n};\n","'use strict';\n\n/**\n * Update DOM elements with Ajax results\n *\n * @param {Object} $results - jQuery DOM element\n * @param {string} selector - DOM element to look up in the $results\n * @return {undefined}\n */\nfunction updateDom($results, selector) {\n var $updates = $results.find(selector);\n $(selector).empty().html($updates.html());\n}\n\n/**\n * Keep refinement panes expanded/collapsed after Ajax refresh\n *\n * @param {Object} $results - jQuery DOM element\n * @return {undefined}\n */\nfunction handleRefinements($results) {\n $('.refinement.active').each(function () {\n $(this).removeClass('active');\n var activeDiv = $results.find('.' + $(this)[0].className.replace(/ /g, '.'));\n activeDiv.addClass('active');\n activeDiv.find('button.title').attr('aria-expanded', 'true');\n });\n\n updateDom($results, '.refinements');\n}\n\n/**\n * Parse Ajax results and updated select DOM elements\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction parseResults(response) {\n var $results = $(response);\n var specialHandlers = {\n '.refinements': handleRefinements\n };\n\n // Update DOM elements that do not require special handling\n [\n '.grid-header',\n '.header-bar',\n '.header.page-title',\n '.product-grid',\n '.show-more',\n '.filter-bar',\n '.plpHeaderTemplate',\n '.filter-result-bar-container',\n '.search-result-number-mobile-container'\n ].forEach(function (selector) {\n updateDom($results, selector);\n });\n\n Object.keys(specialHandlers).forEach(function (selector) {\n specialHandlers[selector]($results);\n });\n}\nfunction updateNumberOfFilters() {\n var filters = $('.filter-bar.active-filter-mobile').find('li');\n if (filters.length > 0) {\n $('.js-filter-counter').css('display', 'none');\n $('.js-updateNumberFilters').css('display', 'block');\n $('.js-plp-showFilters').addClass('d-none');\n $('.js-plp-activeFilters').removeClass('d-none');\n $('.js-updateNumberFilters').empty().html('( ' + filters.length + ' )');\n } else {\n $('.js-filter-counter').css('display', 'block');\n $('.js-updateNumberFilters').css('display', 'none');\n $('.js-plp-showFilters').removeClass('d-none');\n $('.js-plp-activeFilters').addClass('d-none');\n }\n}\n/**\n * Update sort option URLs from Ajax response\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction updateSortOptions(response) {\n var $tempDom = $('
    ').append($(response));\n var sortOptions = $tempDom.find('.grid-footer').data('sort-options').options;\n sortOptions.forEach(function (option) {\n $('option.' + option.id).val(option.url);\n });\n}\n\nfunction changeWallLayout() {\n $('.js-wall-no-horizontal').each(function (index, element) {\n var $classesToChange = $('.js-wall-no-horizontal').closest('.row.cc-full-width-row').children();\n $classesToChange.removeClass('col-wall-33').removeClass('col-wall-66').removeClass('col-wall-50').addClass('col-wall-50');\n });\n}\n\nconst footerElement = document.getElementsByTagName('footer')[0];\nconst viewportHeight = document.documentElement.clientHeight;\n\nlet replaceOrAddQueryParam = (url, parameter, value) => {\n var regex = new RegExp(parameter + '=[^&]+');\n var split = url.split(regex);\n if (split.length > 1) {\n return split[0] + (url.indexOf('?') > -1 ? '' : '?') + parameter + '=' + value + split[1];\n } else {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + parameter + '=' + value;\n }\n};\n\nlet sizePage = (url, parameter, template) => {\n var split = url.split(parameter);\n if (split.length > 1) {\n var size = split[1].split('&')[0].split('=')[1];\n if (!template) {\n if (url.indexOf('template=search/wallShopByLookTemplate') !== -1) {\n if (parseInt(size, 10) % 11 !== 0) {\n var sizeToAdd = parseInt(size, 10) / 12;\n return parseInt(size, 10) - sizeToAdd;\n }\n } else {\n if (parseInt(size, 10) % 12 !== 0) {\n sizeToAdd = parseInt(size, 10) / 11;\n return parseInt(size, 10) + sizeToAdd;\n }\n }\n } else {\n if (template.indexOf('search/wallShopByLookTemplate') !== -1) {\n if (parseInt(size, 10) % 11 !== 0) {\n sizeToAdd = parseInt(size, 10) / 12;\n return parseInt(size, 10) - sizeToAdd;\n }\n } else {\n if (parseInt(size, 10) % 12 !== 0) {\n sizeToAdd = parseInt(size, 10) / 11;\n return parseInt(size, 10) + sizeToAdd;\n }\n }\n }\n } else {\n if (!template) {\n if (url.indexOf('template=search/wallShopByLookTemplate') !== -1) {\n return 11;\n } else return 12;\n } else {\n if (template.indexOf('search/wallShopByLookTemplate') !== -1) {\n return 11;\n } else return 12;\n }\n }\n};\n\nfunction liveChatEnable() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'block',\n visibility: 'visible'\n });\n};\nfunction liveChatDiseble() {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n display: 'none',\n visibility: 'hidden'\n });\n}\nfunction liveChatPositionStikyUp() {\n var stikyHeight = $('.sticky-bar-mobile').height();\n if (window.isMobile) {\n if ($('.js-sticky-look-container').length > 0) {\n var height = $('js-sticky-add-to-cart-look').height();\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: height,\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px'\n });\n }\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: stikyHeight,\n right: '16px'\n });\n }\n }\n}\nfunction liveChatPositionStikyDown() {\n if ($('.js-sticky-look-container').length > 0) {\n var height = $('.js-sticky-add-to-cart-look').height();\n if (window.isMobile) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: height,\n right: '16px'\n });\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: height * 1.5,\n right: '16px'\n });\n }\n } else {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '16px',\n right: '16px'\n });\n if ($('.cc-pd.cc-pd-cta-anchored').length > 0) {\n $('.helpButton, #embeddedMessagingConversationButton').css({\n bottom: '60px'\n });\n }\n }\n\n};\n\nconst openMobileSortingWindow = () => {\n $('#mobileSortingWindow').removeClass('d-none');\n $('#mobileSortingWindow').css({\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 999\n });\n $('body').addClass('cc-blocked');\n};\n\nconst closeMobileSortingWindow = () => {\n $('#mobileSortingWindow').addClass('d-none');\n $('#mobileSortingWindow').css({\n position: '',\n top: '',\n right: '',\n bottom: '',\n left: '',\n zIndex: ''\n });\n $('body').removeClass('cc-blocked');\n};\nfunction focusDivElement($selector) {\n const FOCUSABLE = 'button:not(:disabled):not([aria-hidden],input)';\n $selector.hover(function() {\n this.focus();\n }, function() {\n this.blur();\n }).keydown(function(event) {\n if (event.keyCode !== 9) {\n return;\n }\n let focusableNodes = $selector.find(FOCUSABLE).toArray().filter((n) => { return n.offsetParent; });\n const focusedItemIndex = focusableNodes.indexOf(document.activeElement);\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableNodes[focusableNodes.length - 1].focus();\n event.preventDefault();\n }\n if (!event.shiftKey && focusableNodes.length > 0 && focusedItemIndex === focusableNodes.length - 1) {\n focusableNodes[0].focus();\n event.preventDefault();\n }\n });\n}\nfunction getQueryParams(){\n var url = document.location.href;\n var qs = url.substring(url.indexOf('?') + 1).split('&');\n for(var i = 0, result = {}; i < qs.length; i++){\n qs[i] = qs[i].split('=');\n result[qs[i][0]] = decodeURIComponent(qs[i][1]);\n }\n return result;\n}\n\nfunction applyAccessibilityFix() {\n var $selectElement = $('#sortBy');\n var $buttonElement = $selectElement.next('button');\n \n var selectId = $selectElement.attr('id');\n var ariaControls = $selectElement.attr('aria-controls');\n\n $selectElement.removeAttr('aria-controls');\n \n $buttonElement.attr('id', selectId + \"Button\");\n $buttonElement.attr('aria-controls', ariaControls);\n $buttonElement.attr('tabindex', \"0\");\n}\n\nfunction handleBtnAccessibilityFunction(){\n $('.btn').on(\"focusout\", function() {\n setTimeout(function () {\n $('.btn').attr('tabindex', \"0\");\n }, 100);\n });\n}\n\nmodule.exports = {\n\n handleBtnAccessibility: function(){\n // Call the function to make selectpicker button focussable\n handleBtnAccessibilityFunction();\n },\n\n // Necessary because of selectpicker\n fixAccessibilitySelectpicker: function() {\n $(document).ready(function() {\n // When the document is ready, change selectpicker behaviour to make it accessible\n applyAccessibilityFix();\n });\n },\n\t\n\n sortDesktop: function () {\n // Handle sort order menu selection\n $('body').on('change', '#sortBy', function (e) {\n e.preventDefault();\n\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n\n $.spinner().start();\n $(this).trigger('search:sort', this.dataset.href);\n\n const $selectedOption = $(this);\n var optionSelect = $(this).children(':selected').attr('id');\n var kindSort;\n switch (optionSelect) {\n case 'price-ascending':\n kindSort = 'price ascend';\n break;\n case 'Online Timestamp':\n kindSort = 'new arrival';\n break;\n default:\n kindSort = 'price descend';\n }\n let url = $(this).val();\n let urlWithNewTemplate = replaceOrAddQueryParam(url, 'template', currTemplate);\n\n var actualQueryParam = getQueryParams();\n\n var queryTemplate = actualQueryParam && actualQueryParam.template ? actualQueryParam.template : null;\n\n // $('.js-sorting-option').removeClass('sorting-option-selected');\n $.ajax({\n url: urlWithNewTemplate,\n data: { isSwitch: true },\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n changeWallLayout();\n $.spinner().stop();\n var link = decodeURI($('.permalink').val());\n if (optionSelect !== null) {\n link = replaceOrAddQueryParam(link, 'srule', optionSelect);\n }\n if (queryTemplate !== null) {\n link = replaceOrAddQueryParam(link, 'template', queryTemplate);\n }\n window.history.replaceState('', '', link);\n var isPageDesignerPLP = $('#js-is-plp').val();\n if (isPageDesignerPLP) {\n var urlPath = document.location.href;\n var newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $('.plpHeaderTemplate').attr('data-currenttemplate'));\n var urlSwitch = $('.js-switch-container-plp.cc-selected').find('button').data('urlswitch');\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'type', urlSwitch);\n window.history.replaceState('', '', newUrlPath);\n }\n // Select the current option\n // $selectedOption.addClass('sorting-option-selected');\n // $('.js-selected-sorting-option').text($selectedOption.text());\n\n // Remove CLS min-height\n $(document).find('.cc-min-height-tile').removeClass('cc-min-height-tile');\n\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n\n // analytics plp sort\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'filter',\n eventAction: 'sort',\n eventLabel: kindSort,\n filerType: 'sort',\n filterValue: kindSort\n });\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(() => $('body').trigger('wishlist:productsChangePLP'));\n });\n },\n\n sortMobile: function () {\n // Handle sort order menu selection\n $('body').on('change', '.js-sorting-option-mobile', function (e) {\n e.preventDefault();\n var optionSelect = $(this).data('id');\n var kindSort;\n switch (optionSelect) {\n case 'price-ascending':\n kindSort = 'price ascend';\n break;\n case 'Online Timestamp':\n kindSort = 'new arrival';\n break;\n default:\n kindSort = 'price descend';\n }\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n $(this).trigger('search:sort', this.dataset.href);\n let url = this.dataset.href;\n let urlWithNewTemplate = replaceOrAddQueryParam(url, 'template', currTemplate);\n $.spinner().start();\n $.ajax({\n url: urlWithNewTemplate,\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n changeWallLayout();\n $.spinner().stop();\n var link = decodeURI($('.permalink').val());\n window.history.replaceState('', '', link);\n // Close the sorting window (mobile)\n closeMobileSortingWindow();\n liveChatEnable();\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'filter',\n eventAction: 'sort',\n eventLabel: kindSort,\n filerType: 'sort',\n filterValue: kindSort\n });\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n showMore: function () {\n // Show more products\n $(document).on('click', '.show-more a', function (e) {\n e.stopPropagation();\n var showMoreUrl = $(this).attr('href');\n var actionType = $(this).data('action');\n var currTemplate = $(this).data('currtemplate');\n var isPageDesignerLook = $('#js-is-look').val();\n var startIndex = parseInt(new URLSearchParams(showMoreUrl).get('start'));\n\n $('#noIndex').remove();\n e.preventDefault();\n\n $.spinner().start();\n $(this).trigger('search:showMore', e);\n $.ajax({\n url: showMoreUrl,\n data: {\n selectedUrl: showMoreUrl,\n action: actionType,\n template: currTemplate,\n isSwitch: true\n },\n method: 'GET',\n success: function (response) {\n $('.grid-footer').replaceWith(response);\n updateSortOptions(response);\n changeWallLayout();\n $.spinner().stop();\n var link = decodeURI($('.permalink').val());\n var positionTemplate = document.location.href.indexOf('template');\n var template = positionTemplate !== -1 ? document.location.href.substr(positionTemplate) : '';\n if (isPageDesignerLook !== 'true') {\n if (template !== '') {\n link = link + '&' + template.split('&')[0];\n }\n window.history.replaceState('', '', link);\n } else {\n var positionLinkSize = link.indexOf('sz');\n var pageSize = positionLinkSize !== -1 ? (link.split('sz=')[1]).split('&')[0] : '';\n link = replaceOrAddQueryParam(document.location.href, 'start', 0);\n link = replaceOrAddQueryParam(link, 'sz', pageSize);\n if (template !== '' && link.indexOf('template=') === -1) {\n link = link + '&' + template.split('&')[0];\n }\n window.history.replaceState('', '', link);\n if ($('body').hasClass('veiled')) {\n $('body').removeClass('veiled');\n }\n if ($('.plpHeaderTemplate').attr('data-currenttemplate') === 'search/gridShopByLookTemplate') {\n $('.cc-grid-shopbylook-tile').find('img').css('height', 'unset');\n } else $('.cc-wall-big-tile-margin').find('img').css('height', 'unset');\n }\n\n dataLayer.push({\n event: 'loadMore',\n eventCategory: 'Load More'\n });\n // accessibility: move focus on the first new loaded product\n $('.js-singleItem-plp').eq(startIndex).find('.js-pdp-variant-link').focus();\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n $('body').trigger('wishlist:showMorePLP', [{startIndex: startIndex}]);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n applyFilter: function () {\n // Handle refinement value selection and reset click\n $(document).on(\n 'click',\n '.refinements li button,.refinements li input, .refinement-bar button.reset, .filter-value button, .swatch-filter button, .removeAll-active-filter',\n function (e) {\n var $tabPanel = $(this).closest('.content-filter-panel');\n if ($tabPanel.length > 0) {\n var refinment = $(this).data('filter');\n var type;\n if (refinment.toLowerCase().indexOf('category') > -1) {\n type = 'category';\n }\n if (refinment.toLowerCase().indexOf('color') > -1) {\n type = 'color';\n }\n if (refinment.toLowerCase().indexOf('season') > -1) {\n type = 'collection';\n }\n if (refinment.toLowerCase().indexOf('size') > -1) {\n type = 'size';\n }\n if (refinment.toLowerCase().indexOf('gender') > -1) {\n type = 'linea';\n }\n var refinmentValue = $(this).data('analyticsvalue');\n dataLayer.push({\n event: 'custom_event',\n eventCategory: 'filter',\n eventAction: type,\n eventLabel: refinmentValue,\n filerType: type,\n filterValue: refinmentValue\n });\n }\n\n var currTemplate = $('#productNumberHidden').data('currtemplate');\n e.preventDefault();\n e.stopPropagation();\n $.spinner().start();\n $(this).trigger('search:filter', e);\n var actualQueryParam = getQueryParams();\n if (actualQueryParam) {\n var srule = actualQueryParam.srule || null;\n var queryTemplate = actualQueryParam.template || null;\n }\n var srulePresent = $(this).data('href').indexOf('srule') != -1;\n\n var data = {\n template: currTemplate,\n page: $('.grid-footer').data('page-number'),\n selectedUrl: $(this).data('href'),\n isSwitch: true,\n queryTemplate: queryTemplate,\n isMobile: window.isMobile\n }\n if (srulePresent) {\n data.srule = srule\n }\n\n $.ajax({\n url: $(this).data('href'),\n data: data,\n method: 'GET',\n success: function (response) {\n parseResults(response);\n updateNumberOfFilters();\n changeWallLayout();\n var link = decodeURI($('.permalink').val());\n if (srule !== null) {\n link = replaceOrAddQueryParam(link, 'srule', srule);\n }\n if (queryTemplate !== null) {\n link = replaceOrAddQueryParam(link, 'template', queryTemplate);\n }\n window.history.replaceState('', '', link);\n $('#sortBy').selectpicker();\n $.spinner().stop();\n var isPageDesignerPLP = $('#js-is-plp').val();\n if (isPageDesignerPLP) {\n var urlPath = document.location.href;\n var newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $('.plpHeaderTemplate').attr('data-currenttemplate'));\n var urlSwitch = $('.js-switch-container-plp.cc-selected').find('button').data('urlswitch');\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'type', urlSwitch);\n window.history.replaceState('', '', newUrlPath);\n }\n if (srule !== null) {\n $(document).find('#sortBy option[id=\"' + srule + '\"]').prop('selected', true);\n $('#sortBy').selectpicker('refresh');\n }\n \n // Announce to Screen Reader the number of products found\n $('.js-sr-announce-filter').text($('.js-sr-announce-filter').attr('data-product-count'));\n $('.js-sr-announce-filter').attr(\"aria-label\", $('.js-sr-announce-filter').attr('data-product-count'));\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(function(){ $('body').trigger('wishlist:productsChangePLP'); $(\".js-sr-announce-filter\").focus()});\n });\n },\n\n filteModalOpen: function () {\n $(document).on('click', '.js-open-filter-plp', function () {\n $('#filter-modal-plp').addClass('cc-visible');\n $('.js-open-filter-plp').addClass('d-none');\n $('.js-close-filter-plp').removeClass('d-none');\n $('.cc-row-filter-modal').addClass('cc-open');\n var $elements = $('.cc-row-filter-modal .mainFilterContainer').find('button:not(:disabled):not([aria-hidden]),a[href],input').toArray();\n $elements[0].focus();\n focusDivElement($('.cc-row-filter-modal #filter-modal-plp .mainFilterContainer'));\n // close tile overlay\n var plus = $('.js-open-size-color').data('plus');\n $('.js-close-size-color').removeClass('js-close-size-color').addClass('js-open-size-color');\n $('.js-change-icon').each(function() {\n $(this).children().attr('xlink:href', plus);\n });\n $('.cc-size-color-modal').each(function () {\n $(this).removeClass('cc-open');\n if ($(this).css('opacity') === '1') {\n var currentID = $(this).data('pid');\n $('.openTab-' + currentID).removeClass('d-none');\n $('.closeTab-' + currentID).addClass('d-none');\n }\n });\n $(document).find('.cc-min-height-tile').removeClass('cc-min-height-tile');\n });\n },\n\n filteModalClose: function () {\n $(document).on('click', '.js-close-filter-plp', function () {\n $('#filter-modal-plp').removeClass('cc-visible');\n $('.js-close-filter-plp').addClass('d-none');\n $('.js-open-filter-plp').removeClass('d-none');\n $('.cc-row-filter-modal').removeClass('cc-open');\n $('.show-filter-text').focus(); // Adding focus for accessibility \n });\n },\n\n widthSortingDiv: function () {\n $(document).ready(function () {\n $('#myDropdown').css('width', $('#sorting-button').width());\n });\n },\n\n sortingOptionList: function () {\n $(document).on('click', '#sorting-button', function () {\n document.getElementById('myDropdown').classList.toggle('show');\n });\n },\n\n closeSortingOptionList: function () {\n window.onclick = function (event) {\n if (!event.target.matches('.dropbtn')) {\n var dropdowns = document.getElementsByClassName('dropdown-content');\n var i;\n for (i = 0; i < dropdowns.length; i++) {\n var openDropdown = dropdowns[i];\n if (openDropdown.classList.contains('show')) {\n openDropdown.classList.remove('show');\n }\n }\n }\n };\n },\n\n changeTemplateViewContainer: function () {\n $(document).on('click', '.js-change-layout-container', function () {\n var templateData = $(this);\n var currenSorting = $('#sortBy').siblings('button').attr('title');\n var isSearch = $('#js-is-search').val();\n var isPageDesignerLook = $('#js-is-look').val();\n if (isSearch === undefined || isSearch == 'false') {\n $('.plpHeaderTemplate').attr('data-currenttemplate', $(templateData).data('pid'));\n $('.plpHeaderTemplate').data('currenttemplate', $(templateData).data('pid'));\n $.spinner().start();\n var urlPath = document.location.href;\n if (isPageDesignerLook === 'true') {\n var urlPathLook = $('.js-switch-container-plp.cc-selected').find('button').data('href');\n urlPathLook = replaceOrAddQueryParam(urlPathLook, 'template', $(templateData).data('pid'));\n var sizeOfPage = sizePage(urlPath, 'sz', $(templateData).data('pid'));\n urlPathLook = replaceOrAddQueryParam(urlPathLook, 'start', 0);\n urlPathLook = replaceOrAddQueryParam(urlPathLook, 'sz', sizeOfPage);\n }\n var newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $(templateData).data('pid'));\n $.ajax({\n url: urlPathLook || newUrlPath,\n data: { isSwitch: true },\n method: 'GET',\n success: function (response) {\n var analyticsTemplate;\n var templateName = '';\n\n if (!isPageDesignerLook) {\n parseResults(response);\n changeWallLayout();\n $('#sortBy').prop('title', currenSorting);\n $('#sortBy').selectpicker();\n $.spinner().stop();\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'start', 0);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'sz', $('#size-page').val());\n window.history.replaceState('', '', newUrlPath);\n $('body').trigger('analytics:changeTemplateProduct');\n var template = $(templateData).data('pid');\n switch (template) {\n case 'search/grid3Template': templateName = 'grid3';\n break;\n case 'search/grid2Template': templateName = 'grid2';\n break;\n case 'search/wallTemplate': templateName = 'wall';\n break;\n }\n analyticsTemplate = templateName;\n if (analyticsTemplate === '') {\n switch (template) {\n case 'search/gridShopByLookTemplate': analyticsTemplate = 'gridShopByLook';\n break;\n case 'search/wallShopByLookTemplate': analyticsTemplate = 'wallShopByLook';\n break;\n }\n }\n // analytics\n if ($(document).find('.cc-double-image .cc-tile-image--second').length > 0) {\n templateName += '-hover';\n }\n\n dataLayer.push({\n event: 'dynamic_page',\n listingType: analyticsTemplate\n });\n\n $('body').trigger('analytics:pushpagechange', { listingType: templateName });\n } else {\n parseResults(response);\n changeWallLayout();\n if ($(templateData).data('pid') === 'search/gridShopByLookTemplate') {\n $('.cc-grid-shopbylook-tile').find('img').css('height', 'unset');\n } else $('.cc-wall-big-tile-margin').find('img').css('height', 'unset');\n $.spinner().stop();\n if ($('body').hasClass('veiled')) {\n $('body').removeClass('veiled');\n }\n var size = sizePage(newUrlPath, 'sz', null);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'start', 0);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'sz', size);\n window.history.replaceState('', '', newUrlPath);\n $('body').trigger('analytics:changeTemplateProduct');\n\n // analytics\n var urlSwitch = $(document).find('.js-switch-plp-look.js-is-look-switch').data('urlswitch');\n var currentTemplate = $(document).find('.plpHeaderTemplate').data('currenttemplate');\n switch (currentTemplate) {\n case 'search/gridShopByLookTemplate':\n templateName = 'gridShopByLook';\n analyticsTemplate = 'gridShopByLook';\n break;\n\n case 'search/wallShopByLookTemplate':\n templateName = 'wallShopByLook';\n analyticsTemplate = 'wallShopByLook';\n break;\n }\n\n dataLayer.push({\n event: 'dynamic_page',\n listingType: analyticsTemplate\n });\n\n $('body').trigger('analytics:pushpagechange', {\n pageCategory: 'product-list',\n pagesubCategory: urlSwitch,\n pageDetail: 'shop-by-look',\n listingType: templateName\n });\n }\n // Remove CLS min-height\n $(document).find('.cc-min-height-tile').removeClass('cc-min-height-tile');\n\n if (!('loading' in HTMLImageElement.prototype)) {\n const images = document.querySelectorAll('img[loading=\"lazy\"]');\n images.forEach(img => {\n const urls1 = $(img).siblings().eq(0).attr('srcset');\n const urls2 = $(img).siblings().eq(1).attr('srcset');\n const imgUrl = $(img).attr('srcset');\n if (urls1 && urls2) {\n $(img).siblings().eq(0).removeAttr('srcset').attr('data-srcset', urls1);\n $(img).siblings().eq(1).removeAttr('srcset').attr('data-srcset', urls2);\n }\n if (imgUrl) {\n $(img).removeAttr('srcset').attr('data-srcset', imgUrl);\n }\n });\n } else {\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n }\n },\n error: function () {\n $.spinner().stop();\n }\n }).done(function() {$('body').trigger('wishlist:productsChangePLP'); applyAccessibilityFix(); handleBtnAccessibilityFunction();});\n } else {\n // isSearch is true\n var url = $(templateData).data('href') + '?cgid=' + $(templateData).data('cgid') + '&q=' + $(templateData).data('q') + '&template=' + $(templateData).data('pid');\n $('.plpHeaderTemplate').data('currenttemplate', $(templateData).data('pid'));\n $.spinner().start();\n var urlPath = document.location.href;\n var newUrl = replaceOrAddQueryParam(window.location.href, 'template', $(templateData).data('pid'));\n var newUrlPath;\n $.ajax({\n url: newUrl,\n data: { isSwitch: true },\n method: 'GET',\n success: function (response) {\n parseResults(response);\n $('#sortBy').prop('title', currenSorting);\n $('#sortBy').selectpicker();\n changeWallLayout();\n $.spinner().stop();\n newUrlPath = replaceOrAddQueryParam(urlPath, 'template', $(templateData).data('pid'));\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'start', 0);\n newUrlPath = replaceOrAddQueryParam(newUrlPath, 'sz', $('#size-page').val());\n window.history.replaceState('', '', newUrlPath);\n $('body').trigger('analytics:changeTemplateProduct');\n\n // analytics\n var template = $(templateData).data('pid');\n var templateName = '';\n switch (template) {\n case 'search/grid3Template': templateName = 'grid3';\n break;\n case 'search/grid2Template': templateName = 'grid2';\n break;\n case 'search/wallTemplate': templateName = 'wall';\n break;\n }\n var analyticsTemplate = templateName;\n if (analyticsTemplate === '') {\n switch (template) {\n case 'search/gridShopByLookTemplate': analyticsTemplate = 'gridShopByLook';\n break;\n case 'search/wallShopByLookTemplate': analyticsTemplate = 'wallShopByLook';\n break;\n }\n }\n dataLayer.push({\n event: 'dynamic_page',\n listingType: analyticsTemplate\n });\n\n if (!('loading' in HTMLImageElement.prototype)) {\n const images = document.querySelectorAll('img[loading=\"lazy\"]');\n images.forEach(img => {\n const urls1 = $(img).siblings().eq(0).attr('srcset');\n const urls2 = $(img).siblings().eq(1).attr('srcset');\n const imgUrl = $(img).attr('srcset');\n if (urls1 && urls2) {\n $(img).siblings().eq(0).removeAttr('srcset').attr('data-srcset', urls1);\n $(img).siblings().eq(1).removeAttr('srcset').attr('data-srcset', urls2);\n }\n if (imgUrl) {\n $(img).removeAttr('srcset').attr('data-srcset', imgUrl);\n }\n });\n } else {\n // reload iframes with no lazysizes library\n $(document).trigger('listingpage:reloadiframes');\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n\n openSortingDivMobile: function () {\n $(document).on('click', '.sorting-button', function () {\n openMobileSortingWindow();\n liveChatDiseble();\n });\n },\n\n closeSortingDivMobile: function () {\n $(document).on('click', '.closeSortingWindow', function () {\n closeMobileSortingWindow();\n liveChatEnable();\n });\n },\n\n openFilterDivMobile: function () {\n $(document).on('click', '.filter-button', function () {\n $('#mobileFilterWindow').removeClass('d-none');\n $('#mobileFilterWindow').css({\n position: 'fixed',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 999\n });\n $('body').addClass('cc-blocked');\n liveChatDiseble();\n });\n },\n\n closeFilterDivMobile: function () {\n $(document).on('click', '.closeFilterWindow', function () {\n $('#mobileFilterWindow').addClass('d-none');\n $('#mobileFilterWindow').css({\n position: '',\n top: '',\n right: '',\n bottom: '',\n left: '',\n zIndex: ''\n });\n $('body').removeClass('cc-blocked');\n liveChatEnable();\n });\n },\n\n showOverlayWallHover: function () {\n $(document).on({\n mouseenter: function () {\n var id = $(this).data('id');\n // $('.overlay-wall-' + id).removeClass('d-none');\n $('.overlay-wall-' + id).css('opacity', '1');\n },\n mouseleave: function () {\n var id = $(this).data('id');\n // $('.overlay-wall-' + id).addClass('d-none');\n $('.overlay-wall-' + id).css('opacity', '0');\n }\n }, '.cc-desktop .image-container-wall');\n },\n\n closeMobileOverlayClickOnBody: function () {\n $(document).on('click', '.cc-mobile', function (event) {\n $('.js-mobileOverlay').each(function () {\n if ($(event.target).closest(this).length === 0) {\n event.preventDefault();\n $(this).removeClass('cc-open');\n // add href link to image\n var id = $(this).data('productid');\n var plus = $('.openTab-' + id).data('plus');\n $('.openTab-' + id).removeClass('js-close-size-color').addClass('js-open-size-color');\n $('.openTab-' + id).find('use').attr('xlink:href', plus);\n $('.js-imageContainerWall-' + id).attr('href', $('.js-imageContainerWall-' + id).attr('rel'));\n $('.js-imageContainerWall-' + id).removeAttr('rel');\n $('.sizecolorTab-' + id).removeClass('js-mobileOverlay');\n }\n });\n });\n },\n\n showStickyBarPLP: function () {\n let scrollTimer;\n $(document).on('scroll', function () {\n if (scrollTimer) {\n clearTimeout(scrollTimer);\n liveChatPositionStikyDown();\n }\n var $plpBanner = $(document).find('.cc-pd-sticky-banner');\n if ($plpBanner.length > 0 && !$plpBanner.hasClass('custom-margin')) {\n $plpBanner.css('bottom', \"0px\");\n }\n let $sticky = $('.sticky-bar-mobile');\n var filterButtonHeigt = $sticky.height() + 'px';\n let $liveAgentButton = $('.embeddedServiceHelpButton .helpButton');\n // $liveAgentButton.css('bottom', '58px!important');\n // $liveAgentButton.css('right', '10px!important');\n $liveAgentButton.addClass('cc-liveChat-button');\n $sticky.addClass('d-none');\n let isFooterVisible = footerElement.getBoundingClientRect().top < viewportHeight;\n let stickyCanAppear = !isFooterVisible;\n if (stickyCanAppear) {\n scrollTimer = setTimeout(() => {\n if ($plpBanner.length > 0 && !$plpBanner.hasClass('custom-margin')) {\n $plpBanner.css('bottom', filterButtonHeigt);\n }\n $sticky.removeClass('d-none');\n liveChatPositionStikyUp();\n }, 250);\n }\n });\n },\n\n changeWallLayoutOnLoad: function () {\n $(document).ready(changeWallLayout());\n },\n\n // atterraggio plp\n startpositionLiveChatButton: function() {\n $(document).ready(function() {\n liveChatPositionStikyUp();\n });\n },\n\n accessibilityWall: function() {\n $(document).on('focus', '.js-wall-tile .cc-overlay-wall', (e) => {\n const $tile = $(e.currentTarget);\n const pid = $tile.data('id');\n $('.cc-overlay-wall').css('opacity', '0');\n $('.overlay-wall-' + pid).css('opacity', '1');\n $('.social-wish-' + pid).css('opacity', '1');\n });\n $(document).on('focusout', '.js-wall-tile .cc-overlay-wall', (e) => {\n $('.cc-overlay-wall').css('opacity', '0');\n });\n },\n\n setHistoryStatus: function () {\n $(document).on('click', 'a', function () {\n window.history.pushState({ scrollTop: window.scrollY }, 'scroll');\n });\n },\n\n reloadIframes: function() {\n $(document).on('listingpage:reloadiframes', function() {\n // reload iframes with no lazysizes library\n const iframes = document.querySelectorAll('iframe.lazyload');\n iframes.forEach(video => {\n let endPoint = $(video).eq(0).attr('data-video-url');\n if (endPoint) {\n if ($(video).hasClass('cloudinary')) {\n video.setAttribute('src', endPoint);\n } else {\n $.ajax({\n url: endPoint,\n success: function(data) {\n video.setAttribute('src', data.videoURL);\n }\n });\n }\n }\n });\n });\n }\n};\n","'use strict';\nvar Modal = require('../modalUtilities');\n\nconst currentPage = {\n isPLP: !! $('.full-page-plp').length,\n isSBL: !! $('.cc-product-set-detail').length\n};\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n * @param {Object} $icon - icon that was clicked to add a product to the wishlist\n */\nfunction displayMessageAndChangeIcon(data, sku, $icon) {\n const statusSuccessClass = 'alert-success';\n const statusErrorClass = 'alert-danger';\n var status, messageModalDiv;\n if (data.success) {\n status = statusSuccessClass;\n } else {\n status = statusErrorClass;\n }\n\n var productId;\n if (data.productId) {\n productId = data.productId.replace(data.colorId, '');\n }\n\n var backgroundProduct = sku || productId;\n\n if (sku !== undefined) {\n messageModalDiv = '.js-wishlist-color-id-'.concat(sku, '');\n } else {\n messageModalDiv = '.js-wishlist-color-id-'.concat(productId, '');\n }\n\n if (! $(messageModalDiv).length) {\n return;\n }\n\n $(messageModalDiv).find('.js-add-to-wishlist-message')\n .removeClass(statusSuccessClass).removeClass(statusErrorClass)\n .addClass(status).html(data.msg);\n\n let modalTarget = $(messageModalDiv);\n let modal = new Modal(modalTarget);\n var background = '.cc-add-to-wishlist-background.product-'.concat(currentPage.isPLP ? productId : backgroundProduct);\n $(background).show();\n $(messageModalDiv).show();\n modal.open();\n\n setTimeout(function () {\n $('.js-close-add-to-wishlist-message').trigger('click');\n }, 2000);\n\n /* to implement if remove from wishlist required\n if ($icon) {\n var $emptyIcon = $icon.find('.cc-hover-icon.stroke');\n var $fillIcon = $icon.find('.cc-hover-icon.fill');\n\n $emptyIcon.hide();\n $fillIcon.show();\n }\n */\n}\n\n/**\n * fills or empties the heart icon for the specific product\n * @param {boolean} fill - true for filled heart, false for empty heart\n * @param {JQueryObject} $product - the jquery object of the current .js-singleItem-plp\n */\n function updateHeartIcon(fill, $product) {\n var $heart = $product.find('.js-add-to-wishlist');\n if (fill) {\n $heart.find('.stroke').addClass('cc-hide').css('display', 'none');\n $heart.find('.fill').removeClass('cc-hide').css('display', '');\n } else {\n // empty heart\n $heart.find('.fill').addClass('cc-hide').css('display', 'none');\n $heart.find('.stroke').removeClass('cc-hide').css('display', '');\n }\n}\n\nfunction getSelectedVariantPid($product) {\n var $analytics = $('.new-analytics', $product);\n\n // can't add outfit to wishlist, prevent request\n var isSet = $analytics.attr('data-isset') == 'true';\n if (isSet) return null;\n\n var color = $analytics.attr('data-color') || '';\n var size = $analytics.attr('data-size') || '';\n return $analytics.attr('data-pid') + color + size; // pid concatenation wishlist\n}\n\nfunction checkProductInWishlist(pid, $plpProduct) {\n if (!pid) {\n return;\n }\n \n $.ajax({\n url: $('#wishlistContainsProductURL').val(),\n type: 'GET',\n data : {\n pid: pid\n },\n dataType: 'json',\n success: function(res) {\n if (! res.error) {\n updateHeartIcon(res.result, $plpProduct);\n }\n }\n });\n}\n\nfunction initWishlistScrollCheck() {\n let options = {\n rootMargin: `${parseInt(window.innerHeight * 0.35)}px 0px`,\n threshold: 0\n };\n\n let observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n var $element = $(entry.target);\n checkProductInWishlist(getSelectedVariantPid($element), $element);\n observer.unobserve(entry.target);\n }\n });\n }, options);\n\n var $productList = currentPage.isPLP ? $('.js-singleItem-plp .product') : $('.cc-product-list .product');\n $productList.each((_, productTile) => observer.observe(productTile));\n return observer;\n}\n\nmodule.exports = {\n addToWishlist: function () {\n $(document).on('click', '.js-add-to-wishlist', function (e) {\n e.preventDefault();\n var $icon = $(this);\n var url = $(this).data('href');\n var pid = $(this).data('pid');\n var colorId = $(this).data('color');\n var $productContainer = $(e.currentTarget).closest('.product');\n var size = null;\n var skuMaster;\n if (currentPage.isPLP) skuMaster = $productContainer.data('skumaster');\n else skuMaster = $productContainer.attr('data-pid');\n\n var optionId = null;\n var optionVal = null;\n if (!url || !pid || !colorId) {\n return;\n }\n\n $.spinner().start();\n $(this).attr('disabled', true);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n pid: getSelectedVariantPid($productContainer),\n colorId: colorId,\n optionId: optionId,\n optionVal: optionVal\n },\n success: function (data) {\n $.spinner().stop();\n displayMessageAndChangeIcon(data, skuMaster, $icon);\n // fill heart and trigger update for number of items in wishlist badge.\n updateHeartIcon(true, $(e.target).closest('.product'));\n $('body').trigger('wishlist:updateQuantity');\n // analytics\n dataLayer.push({\n event: 'wishlist',\n eventCategory: 'Wish List',\n eventAction: 'add',\n eventLabel: pid\n });\n // END\n },\n error: function (err) {\n $.spinner().stop();\n displayMessageAndChangeIcon(err, skuMaster, null);\n $('body').trigger('wishlist:updateQuantity');\n }\n });\n });\n },\n\n closeModal: function () {\n $(document).on('click', '.js-close-add-to-wishlist-message', function(e) {\n let modalTarget = $(this).parent().parent();\n let modal = new Modal(modalTarget);\n\n $('.cc-add-to-wishlist-background').hide();\n modalTarget.hide();\n if (currentPage.isSBL) modal.close();\n if ($('body').hasClass('cc-blocked')) $('body').removeClass('cc-blocked');\n $('.js-add-to-wishlist').removeAttr('disabled');\n });\n },\n\n checkProductsInWishlist: function () {\n var intersectionObserver = initWishlistScrollCheck();\n\n $('body').on('wishlist:productsChangePLP', function() {\n intersectionObserver.disconnect();\n intersectionObserver = initWishlistScrollCheck();\n });\n\n $('body').on('wishlist:showMorePLP', function(_, data) {\n let startIndex = data.startIndex;\n $('.js-singleItem-plp').slice(startIndex).each((_, productTile) => {\n intersectionObserver.observe(productTile);\n });\n });\n\n $('body').on('wishlist:productVariationChange', function(_, data){\n let $element = data.$element;\n checkProductInWishlist(getSelectedVariantPid($element), $element);\n });\n }\n};\n","'use strict';\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n }).join('&');\n\n return newUrl;\n}\n\nfunction replaceOrAddQueryParam (url, parameter, value) {\n var regex = new RegExp(parameter + '=[^&]+');\n var split = url.split(regex);\n if (split.length > 1) {\n return split[0] + (url.indexOf('?') > -1 ? '' : '?') + parameter + '=' + value + split[1];\n } else {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + parameter + '=' + value;\n }\n};\n\nfunction getQueryParams() {\n var url = document.location.href;\n var qs = url.substring(url.indexOf('?') + 1).split('&');\n for (var i = 0, result = {}; i < qs.length; i++) {\n qs[i] = qs[i].split('=');\n result[qs[i][0]] = decodeURIComponent(qs[i][1]);\n }\n return result;\n};\n\nmodule.exports = {\n replaceOrAddQueryParam: replaceOrAddQueryParam,\n getQueryParams: getQueryParams,\n appendToUrl: appendToUrl\n};\n"],"sourceRoot":""}