{"version":3,"sources":["assets/images/bg.png","assets/images/cs.png","assets/images/da.png","assets/images/de.png","assets/images/el.png","assets/images/et.png","assets/images/eu.png","assets/images/fi.png","assets/images/fr.png","assets/images/ga.png","assets/images/gl.png","assets/images/hr.png","assets/images/hu.png","assets/images/it.png","assets/images/ja.png","assets/images/lt.png","assets/images/lv.png","assets/images/mt.png","assets/images/nl.png","assets/images/pl.png","assets/images/pt.png","assets/images/ro.png","assets/images/sk.png","assets/images/sl.png","assets/images/sv.png","assets/images/background.png","assets/images/logo.png","assets/images/error-handler-graphic.png","assets/images/brand-icon-white.png","assets/images/modal-graphic-small.png","screens/Wine/components/sustainability/BLUE_SUSTAINABILITY.png","screens/Wine/components/sustainability/BROWN_SUSTAINABILITY.png","assets/images/logowine.svg","assets/images/brand-icon-wine.svg","screens/Wine/components/sustainability/GREEN_SUSTAINABILITY.png","assets/images/errorPrivate.jpg","assets/images/loader.gif","assets/images/blockchain.png","screens/Wine/components/sustainability/YELLOW_SUSTAINABILITY.png","assets/images/videoTrimmerIcon.png","assets/images/verified.png","assets/images/placeholder255x255.png","theme/Theme.props.ts","lib/apolloClient.ts","store/reviews/index.ts","store/product/index.ts","store/proofPointModal/index.ts","components/ProductTabs/templates/ProductLanguage.ts","store/proofPointDetailModal/index.ts","store/mediaEvidenceModal/index.ts","store/evidenceModal/index.ts","store/cycleLifeModal/index.ts","store/reviewModal/index.ts","store/blockchainDetailModal/index.ts","store/organization/index.ts","store/blocknitive/index.ts","store/mobilenav/index.ts","store/link/index.ts","store/tramslateModal/index.ts","store/index.ts","theme/Theme.styled.ts","theme/Theme.tsx","queries/blocknitive.ts","queries/link.ts","module/App/App.styled.ts","module/App/App.tsx","queries/product.ts","components/Text/Text.styled.ts","components/Text/Text.presets.ts","components/Text/Text.tsx","screens/Error404/Error404.styled.ts","screens/Error404/Error404.tsx","components/Loader/Loader.styled.ts","components/Loader/Loader.tsx","components/MetaHead/MetaHead.tsx","components/Icon/components/ChevronRight.tsx","components/Icon/components/ChevronDown.tsx","components/Icon/components/Close.tsx","components/Icon/components/RotatePhone.tsx","components/Icon/components/Share.tsx","components/Icon/components/Copy.tsx","components/Icon/components/Whatsapp.tsx","components/Icon/components/Telegram.tsx","components/Icon/components/Twitter.tsx","components/Icon/components/Facebook.tsx","components/Icon/components/Linkedin.tsx","components/Icon/components/Pinterest.tsx","components/Icon/components/DotMenu.tsx","components/Icon/components/Instagram.tsx","components/Icon/components/Youtube.tsx","components/Icon/components/Point.tsx","components/Icon/components/ShareWine.tsx","components/Icon/components/Print.tsx","components/Icon/components/Tiktok.tsx","components/Icon/components/ArrowDoubleLeft.tsx","components/Icon/components/ArrowDoubleRight.tsx","components/Icon/components/Link.tsx","components/Icon/components/ChangeIcon.tsx","components/Icon/Icon.contants.tsx","components/Icon/Icon.styled.ts","components/Icon/Icon.tsx","theme/Theme.breackoints.ts","module/AppLayoutWine/AppLayoutWine.styled.ts","module/AppLayout/AppLayout.styled.ts","components/Modal/Modal.styled.ts","components/Modal/Modal.tsx","components/Button/Button.styled.ts","components/Button/Button.tsx","components/TranslateModal/TranslateModal.styled.ts","components/TranslateModal/TranslateModal.tsx","components/TranslateSelector/TranslateSelector.styled.ts","components/TranslateSelector/TranslateSelector.tsx","constants/errors.ts","module/AppLayoutWine/AppLayoutWine.tsx","screens/Wine/components/Share/Share.styled.ts","screens/Wine/components/Share/Share.tsx","screens/Certificate/components/Transitions/Transitions.styled.ts","screens/Certificate/components/Transitions/Transitions.tsx","components/SkeletonLoader/SkeletonLoader.styled.ts","components/SkeletonLoader/SkeletonLoader.tsx","components/Container/Container.styled.ts","components/Container/Container.tsx","module/AppLayoutSkeleton/AppLayoutSkeleton.styles.ts","module/AppLayoutSkeleton/AppLayoutSkeleton.tsx","components/SkeletonProofs/SkeletonProofs.tsx","components/SkeletonSeals/SkeletonSealsItem.tsx","components/SkeletonSeals/SkeletonSeals.tsx","components/SkeletonSectionTitle/SkeletonSectionTitle.tsx","components/SkeletonDescription/SkeletonDescription.tsx","components/SkeletonShare/SkeletonShare.tsx","components/SkeletonReviews/SkeletonReviews.tsx","components/SkeletonMilestones/SkeletonMilestonesItem.tsx","components/SkeletonMilestones/SkeletonMilestones.tsx","screens/Product/components/ProductSkeleton/ProductSkeleton.tsx","screens/Wine/Wine.styled.ts","screens/Certificate/Certificate.styled.ts","screens/Certificate/Certificate.tsx","queries/lot.ts","i18n/languages/blockchainModal/index.ts","components/BlockchainDetailModal/BlockchainDetailModal.styled.ts","components/BlockchainDetailModal/BlockchainDetailModalHeader.tsx","components/HashPlaceholder/HashPlaceholder.styled.ts","components/HashPlaceholder/HashPlaceholderColor.tsx","components/HashPlaceholder/HashPlaceholderToolTip.tsx","components/HashPlaceholder/HashPlaceholder.tsx","components/BlockchainDetailModal/BlockchainDetailModalContentLot.tsx","components/BlockchainDetailModal/BlockchainDetailModalLoading.tsx","components/BlockchainDetailModal/BlockchainDetailModalLot.tsx","screens/Certificate/CertificateBottle.tsx","queries/qr.ts","screens/CheckIt/CheckIt.tsx","hooks/useGetQuery.ts","module/AppMobileMenu/AppMobileMenu.styled.ts","module/AppMobileMenu/AppMobileMenu.tsx","components/SocialShare/SocialShare.styled.ts","components/SocialShare/SocialShare.tsx","module/AppMobileNav/AppMobileNav.styled.ts","module/AppMobileNav/AppMobileNav.tsx","utils/get-initials.ts","components/Avatar/Avatar.styled.ts","components/Avatar/Avatar.tsx","components/Link/Link.styled.ts","components/Link/Link.tsx","module/AppHeader/AppHeader.styled.ts","module/AppHeader/AppHeader.tsx","module/AppFooter/AppFooter.styled.ts","module/AppFooter/AppFooter.tsx","theme/Theme.globalstyles.ts","module/AppLayout/AppLayout.tsx","components/StarRating/StarRating.styled.ts","components/StarRating/StarRating.tsx","components/CustomerReviews/CustomerReviewHeader.styled.ts","components/CustomerReviews/CustomerReviewHeader.tsx","components/CustomerReviews/CustomerReview.styled.ts","components/CustomerReviews/CustomerReview.tsx","components/CustomerReviews/CustomerReviews.styled.ts","components/CustomerReviews/CustomerReviews.tsx","utils/get-percentage.ts","components/ProofPoint/ProofPoint.styled.ts","components/ProofPoint/ProofPoint.tsx","components/FeatureProofPoints/FeatureProofPoints.styled.ts","components/FeatureProofPoints/FeatureProofPoints.tsx","components/Conditions/Conditions.styled.ts","components/Conditions/Conditions.tsx","components/RenderHtml/RenderHtml.styled.ts","components/RenderHtml/RenderHtml.tsx","components/VideoPreview/VideoPreview.styled.ts","components/VideoPreview/VideoPreview.tsx","components/MilestoneList/Milestone.styled.ts","components/MilestoneList/Milestone.tsx","components/MilestoneList/MilestoneList.styled.ts","components/MilestoneList/MilestoneList.tsx","components/ProductImages/ProductImages.styled.ts","components/ProductImages/ProductImages.tsx","components/ProductTabs/templates/Template.styled.ts","components/ProductTabs/templates/ProductTabs.tech.tsx","components/ProductTabs/templates/ProductTabs.recommendation.tsx","components/ProductTabs/templates/ProductTabs.ingredient.tsx","components/ProductTabs/templates/ProductTabs.pdf.tsx","components/ProductTabs/ProductTabs.styled.ts","components/SelectLanguage/SelectLanguage.styled.ts","components/SelectLanguage/SelectLanguage.tsx","screens/Wine/components/Tabs/IngredientList.tsx","screens/Wine/components/Tabs/Tabs.styled.ts","screens/Wine/components/Tabs/TabNutrient.tsx","components/ProductTabs/ProductTab.mobile.tsx","components/ProductTabs/ProductTab.desktop.tsx","components/ProductTabs/ProductTabs.tsx","components/RelatedProducts/RelatedProducts.styles.ts","components/RelatedProducts/RelatedProducts.tsx","components/Seals/SealItem.styled.ts","components/Seals/SealItem.tsx","components/Seals/Seals.styled.ts","components/Seals/Seals.tsx","components/SectionHeader/SectionHeader.styled.ts","components/SectionHeader/SectionHeader.tsx","screens/Product/Product.styled.ts","screens/Product/components/ProductDesktopView/ProductDesktopView.tsx","screens/Product/components/ProductMobileView/ProductMobileView.tsx","components/ProofPointModal/ProofPointModal.styled.ts","components/ProofPointModal/ProofPointModal.tsx","components/ProofPointDetailModal/ProofPointDetailModal.styled.ts","components/ProofPointDetailModal/ProofPointDetailModal.tsx","components/LoaderSpinner/LoaderSpinner.styled.ts","components/LoaderSpinner/LoaderSpinner.tsx","components/Loading/Loading.styled.ts","components/Loading/Loading.tsx","components/MediaEvidenceModal/MediaEvicenceModal.styled.ts","components/MediaEvidenceModal/MediaEvicenceModal.tsx","utils/get-type-file.ts","components/EvidenceModal/EvidenceModal.styled.ts","components/EvidenceModal/EvidenceModal.tsx","components/BlockchainDetailModal/BlockchainDetailModalContent.tsx","components/BlockchainDetailModal/BlockchainDetailModal.tsx","queries/reviews.ts","components/Label/Label.styled.ts","components/Label/Label.tsx","components/Input/Input.styled.ts","components/Input/Input.tsx","components/TextArea/TextArea.styled.ts","components/TextArea/TextArea.tsx","components/ReviewModal/ReviewModal.styled.ts","components/ReviewModal/ReviewModal.rating.tsx","components/ReviewModal/ReviewForm.product.tsx","components/ReviewModal/ReviewForm.organization.tsx","components/ReviewModal/ReviewForm.lot.tsx","components/ReviewModal/ReviewModal.tsx","screens/Lot/Lot.tsx","queries/organization.ts","screens/Organization/components/OrganizationLinks/OrganizationLinks.styled.ts","screens/Organization/components/OrganizationLinks/OrganizationLinks.tsx","screens/Organization/components/OrganizationInfo/OrganizationInfo.styled.ts","screens/Organization/components/OrganizationInfo/OrganizationInfo.tsx","screens/Organization/Organization.styled.ts","screens/Organization/components/OrganizationDesktopView/OrganizationDesktopView.tsx","screens/Organization/components/OrganizationMobileView/OrganizationMobileView.tsx","screens/Organization/components/OrganizationSkeleton/OrganizationSkeleton.tsx","screens/Organization/Organization.tsx","screens/Product/Product.tsx","screens/Wine/components/CycleLife/CycleLife.styled.ts","screens/Wine/components/CycleLife/CycleLife.tsx","screens/Wine/components/Pictures/Pictures.styled.ts","screens/Wine/components/Pictures/Pictures.tsx","screens/Wine/components/Seals/Seals.styled.ts","screens/Wine/components/Seals/Seals.tsx","screens/Wine/components/sustainability/Constant.ts","screens/Wine/components/sustainability/index.tsx","screens/Wine/components/Tabs/Tab.tsx","screens/Wine/components/Tabs/Tabs.tsx","screens/Wine/components/Tags/Tags.styled.ts","screens/Wine/components/Tags/Tags.tsx","screens/Wine/components/CycleLifeModal/CycleLifeModal.styled.ts","screens/Wine/components/CycleLifeModal/CycleLifeModal.tsx","screens/Wine/Wine.tsx","screens/Wine/WineBottle.tsx","screens/Wine/LangTranslator.ts","screens/Winery/components/Catalog/Catalog.styled.ts","screens/Winery/components/Catalog/Catalog.tsx","screens/Winery/Winery.tsx","queries/widgets.ts","widgets/SpreadWidget/SpreadWidget.styled.ts","widgets/SpreadWidget/SpreadWidget.tsx","App.tsx","serviceWorker.ts","i18n/languages/index.ts","i18n/init.ts","index.tsx","assets/images/ca.png","assets/images/en.png","assets/images/es.png"],"names":["module","exports","THEME","client","ApolloClient","uri","process","initialState","JSON","parse","localStorage","getItem","reviewsSlice","createSlice","name","reducers","setHaveAnswered","state","action","newState","payload","setItem","stringify","actions","productSlice","product","lotId","lotInternalId","setProduct","setLotId","setInternalId","isOpen","proof","proofPointModalSlice","openModal","closeModal","LANGUAGE_MAP","flag","FlagSpanish","shortName","ingredient","value","usage","FlagGermany","FlagBulgarian","FlagCzech","FlagCroatian","FlagDanish","FlagSlovak","FlagSlovenian","FlagEstonian","FlagFinnish","FlagFrance","FlagGreek","FlagHungarian","FlagEnglish","FlagIrish","FlagItaly","FlagLatvian","FlagLithuanian","FlagMaltese","FlagDutch","FlagPolish","FlagPortugal","FlagRomanian","FlagSwedish","FlagJapon","FlagCatalan","FlagBasque","FlagGalician","wineProductLanguage","find","lang","proofPointDetailModalSlice","setWineProductLanguage","media","mediaEvidenceModalSlice","evidence","evidenceModalSlice","milestone","cycleLifeModalSlice","reviewModalSlice","lotData","isStatic","blockchainDetailModalSlice","openModalLot","organizationSlice","organization","organizationName","organizationLogo","setOrganization","setOrganizationInfo","logo","blocknitiveSlice","blockStats","setBlockState","mobileNavSlice","tab","setMobileNav","linkSlice","link","setLink","translations","translateSelect","isHiddenClose","translateModalSlice","openSelectModal","setTranslations","setTranslateSelect","store","configureStore","reducer","review","reviewSlice","proofPointModal","translateModal","proofPointDetailModal","mediaEvidenceModal","evidenceModal","cycleLifeModal","reviewModal","blockchainDetailModal","organizationDataSlice","mobileNav","COLORS","isColor","key","includes","fontsMapped","main","wine","baseTheme","colors","border","backgroundWhite","backgroundGray","backgroundGrayLight","fontMain","fontSecondary","black","brand","active","blueLigth","brandHover","turquoise","white","placeholder","buttonGradient","buttonGradientHover","info","error","success","warning","blueGray","yellow","green","winePrimary","wineSecondary","wineTertiary","wineBlack","wineGray","wineGrayLigth","fonts","lightTheme","darkTheme","merge","themes","Light","Dark","ChangeThemeContext","createContext","_","Theme","children","useState","themeName","changeThemeName","theme","Provider","blockNitiveStatsQuery","gql","blockProofPointQuery","blockProofPointQueryLot","shortUrlCreate","AppContainer","styled","div","App","dispatch","useDispatch","useQuery","data","loadingBlocknitive","loading","useMutation","awaitRefetchQueries","refetchQueries","shortUrlCreateMutation","useEffect","graphQLErrors","length","errors","currentUrl","encodeURI","window","location","href","variables","shortUrlInput","originalURL","then","res","catch","fallback","productQuery","relatedProductQuery","stepsProductQuery","defaultTextStyles","fontSize","letterSpacing","css","align","weight","gradient","gradientText","italic","inline","color","fontFamily","textTransform","preset","textPresets","huge","h1","h2","h3","h4","h5","h6","small","tiny","xstiny","little","Text","tx","className","rest","content","Error404Container","Error404Content","Error404Title","Error404Desctiption","Error404Link","a","Error404","issetProduct","issetLot","isPrivate","isNotQrUsed","errorUrl","useSelector","style","backgroundImage","BackgroundPrivate","Background","LoaderContainer","LoaderImage","img","Loader","src","loader","alt","MetaHead","title","description","image","url","rel","property","ChevronRight","props","width","height","aria-labelledby","aria-hidden","focusable","data-prefix","strokeWidth","strokeLinecap","data-icon","role","xmlns","viewBox","fill","d","ChevronDownIcon","stroke","CloseIcon","RotatePhone","ShareIcons","CopyIcon","WhatsappIcon","TelegramIcon","TwitterIcon","FacebookIcon","LinkedinIcon","PinterestIcon","DotMenu","InstagramIcon","YoutubeIcon","PointIcon","ShareWineIcons","PrintIcons","TiktokIcon","ArrowDoubleLeftIcon","ArrowDoubleRightIcon","Link","ChangeIcon","ICON_MAP","chevronRight","icon","iconName","chevronDown","ChevronDown","close","Close","rotatePhone","share","copy","Copy","whatsapp","Whatsapp","telegram","Telegram","twitter","Twitter","facebook","Facebook","linkedin","Linkedin","pinterest","Pinterest","dotMenu","instagram","Instagram","youtube","Youtube","point","Point","shareWine","ShareWine","print","Print","tiktok","Tiktok","arrowDoubleRight","ArrowDoubleRight","arrowDoubleLeft","ArrowDoubleLeft","changeIcon","IconContainer","size","Icon","Object","keys","breakpoints","xs","strings","values","sm","md","lg","AppLayoutWineContaienr","AppLayoutWineContainer","AppLayoutWineWrapper","AppLayoutWineHeader","AppLayoutWineHeaderLogo","minSize","AppLayoutWineFooter","AppLayoutWineFooterText","AppLayoutWineFooterCopy","AppLayoutWineFooterCopyLogo","AppLayoutWineContent","AppLayoutContainer","AppLayoutContent","AppBlocker","background","AppBlockerText","sizesModalMap","medium","big","ModalDialogOverlay","DialogOverlay","ModalDialogContent","DialogContent","backcolor","padding","ModalContainer","ModalClose","ModalWrapper","ModalHeading","between","ModalContent","Modal","hiddeClose","onDismiss","onClick","gradientBackgound","ButtonText","ButtonContainer","button","disabled","outline","Button","text","translateStatusColorMap","completed","incomplete","TranslateModalLenguage","TranslateModalLenguageActions","TranslateModalLenguageMeta","TranslateModalLenguageAvatar","TranslateModalLenguageName","TranslateModalLenguageStatus","status","TranslateModalLenguageAction","fr","es","ca","pt","de","it","en","sv","FlagSweden","bg","cs","hr","da","sk","sl","et","fi","el","hu","ga","lv","lt","mt","nl","pl","ro","eu","gl","ja","TranslateModal","refetch","type","id","useTranslation","t","i18n","pk","useCallback","handleSelectLanguage","changeLanguage","findProduct","idProduct","idOrganization","translateSelectList","map","short_name","long_name","entries","translate","statusTranslate","selection","undefined","TranslateSelectorLanguage","TranslateSelectorAvatar","TranslateSelectorIcon","TranslateSelectorContainer","TranslateSelector","device","language","setLanguage","ERRORS","AppLayoutWine","skeletonLoader","metas","errorType","hideOrgData","matches","useMediaQuery","year","Date","getFullYear","logoWine","logoFooter","target","ShareContainer","ShareShowIcon","ShareShowText","ShareShowSocials","visible","ShareShowSocial","ShareShowSocialClose","ShareShow","Share","mobile","setIsOpen","shortUrl","secureShortURL","useClipboard","successDuration","setCopied","getHandler","array","handler","social","handle","SOCIAL_ICONS","useMemo","encodeURIComponent","images","socials","socialChannels","tags","featuredProofPoints","slice","proofPoints","index","nameProof","node","number","tag1","tag2","tag3","tagsText","summary","e","ReactGA","event","category","label","preventDefault","TransitionsContaier","TransitionsList","TransitionsItemColumn","TransitionsItem","TransitionsItemTitle","TransitionsItemParagraph","TransitionsItemImage","Transitions","steps","step","extraFields","extrafield","internal_id","item","unit","placeholderImage","SkeletonPulse","SkeletonLoaderContainer","radius","margin","display","gridArea","full","bottom","top","left","right","flex","gridTemplate","justify","gap","grow","wrap","flexGroup","direction","backgroundPosition","backgroundRepeat","backgroundSize","overflow","minHeight","maxWidth","animation","position","after","SkeletonLoader","ContainerContent","Container","AppLayoutSkeletonNav","AppLayoutSkeleton","SkeletonProofs","proofList","poorf","SkeletonSealsItem","SkeletonSeals","sealsList","seal","SkeletonSectionTitle","SkeletonDescription","SkeletonShare","shareList","SkeletonReviews","reviewList","SkeletonMilestonesItem","SkeletonMilestones","milestonesList","ProductSkeleton","imgageList","WineContent","WineContentBody","WineContentShare","WineContentAction","WineContentShareList","WineContentShareItem","WineContentBodyContainer","WineContentBodyImages","WineContentBodyInformation","certificate","WineContentTitle","WineContentOrganization","WineContentOrganizationImage","WineContentiParagraph","WineContentiLink","WineContentiUnLink","span","WineContentLimkWeb","WineContentiSeparator","WineContentFooter","WineContentBodyCertificate","CertificateInformation","CertificateLogo","CertificatePrintIcon","CertificateBottle","CertificateBottleDates","CertificateBottleDate","withBorder","CertificatePrintArea","CertificateBottleDescriptionTitle","CertificateBottleDescription","CertificateBottleDescriptionLink","SOCIALS","Certificate","certificateId","useParams","printArea","useRef","matchesMd","matchesXs","metaInformation","setMetaInformation","resStepsProduct","toLowerCase","ref","workflow","filter","stepDate","trigger","current","lotQuery","stepsLotQuery","blockChainTranslations","_en","_es","_ca","_fr","_de","_it","_bg","_cs","_da","_el","_et","_fi","_ga","_hr","_hu","_ja","_lt","_lv","_mt","_nl","_pl","getTranslation","console","warn","TEXT_COMMON_CSS_WHITE","pulse","keyframes","pulseSee","BlockchainDetailModalContainer","BlockchainDetailModalHeaderContainer","BlockchainDetailModalHeaderName","BlockchainDetailModalHeaderIcon","BlockchainDetailModalHeaderData","BlockchainDetailModalHeaderDataBlock","BlockchainDetailModalHeaderDataName","BlockchainDetailModalHeaderDataNumber","BlockchainDetailModalContentContainer","BlockchainDetailModalContentGridItem","BlockchainDetailModalContentGrid","separate","BlockchainDetailModalContentWrapper","BlockchainDetailModalContentTitle","BlockchainDetailModalContentLabel","BlockchainDetailModalContentText","BlockchainDetailModalContentSeparator","BlockchainDetailModalCondition","BlockchainDetailModalClickElement","BlockchainDetailModalLoadingContainer","BlockchainDetailModalLoadingImageSee","BlockchainDetailModalLoadingImagePulse","BlockchainDetailModalTable","ul","BlockchainDetailModalTableHead","li","BlockchainDetailModalBlock","BlockchainDetailModalBlockText","p","BlockchainDetailModalBlockDate","BlockchainDetailModalBlockTime","BlockchainDetailModalButton","BlockchainDetailModalHeader","certLang","BlockchainIcon","blocknitiveStats","blockCount","end","duration","transactionsCount","HashPlaceholderContainer","HashPlaceholderShow","HashPlaceholderColorList","HashPlaceholderColorContainer","HashPlaceholderToolTipContainer","isVisible","HashPlaceholderColor","styles","backgroundColor","HashPlaceholderToolTip","taxId","HashPlaceholder","toolTipVisible","setToolTipVisible","$colorList","addEventListener","1","2","3","4","5","6","7","8","9","0","b","c","f","g","h","i","j","k","l","m","n","o","q","r","s","u","v","w","x","y","z","numbersInternal","substring","split","BlockchainDetailModalContent","proofBlockData","useLocation","momment","createdAt","format","transactionId","blocknitive","header","blockId","dataHash","timestamp","blocks","timestampValue","BlockchainDetailModalLoading","LogoImage","BlockchainDetailModal","handleCloseModal","BlockchainDetailModalContentLot","blocknitiveLot","productLot","lotResult","stepsWithDates","findLookExtrafield","replace","moment","handleOpenBlochainDetailModal","log","openBlockchainDetailModal","alignItems","internalId","verifier","BlockchainDetailModalLot","qrQuery","CheckIt","checkId","resQr","qrData","model","to","objectId","useGetQuery","URLSearchParams","search","AppMobileMenuContainer","AppMobileMenuHeader","AppMobileMenuBrand","AppMobileMenuLogo","AppMobileMenuClose","AppMobileMenuContent","AppMobileMenuLink","AppMobileMenuFooter","AppMobileMenuSocial","AppMobileMenuNetwork","SOCIAL_LINKS","AppMobileMenu","toggleMenu","network","SocialShareLink","SocialShareCopiedtext","SocialShareContainer","SocialShare","isCopied","shareImage","AppMobileNavContainer","nav","AppMobileNavList","AppMobileNavListText","AppMobileNavLinkProvisional","AppMobileNavShare","AppMobileNavShareIcon","AppMobileNavShareOverlay","AppMobileNav","shareActive","setShareActive","tabMenuMap","pathname","handleToggleShare","tabItem","selectTab","getInitials","nameArray","join","toUpperCase","getSize","AVATAR_STYLE","AvatarText","AvatarImage","AvatarIcon","Avatar","sizeText","textProps","LinkStyled","AppHeaderContainer","AppHeaderWrapper","AppHeaderLInformation","AppHeaderName","AppHeaderSeparator","AppHeaderMenuButton","AppHeader","query","isOpenMenu","setIsOpenMenu","isEmpty","LABEL_TYPE","lot","wineBottle","firstInit","visited","visit","firstInitArray","nonInteraction","$root","document","querySelector","classList","toggle","thumbnail","get","AppFooterContainer","AppFooterWrapper","AppFooterTop","AppFooterBottom","AppFooterSocial","AppFooterLink","uppercase","AppFooterLogo","AppFooterLogoImage","AppFooterLogoText","AppFooterLegal","AppFooterMail","AppFooterSocialLink","AppFooter","socialLink","ThemeGlobalStyles","createGlobalStyle","AppLayout","StarRatingContainer","rating","StarRating","CustomerReviewHeaderContainer","CustomerReviewUser","CustomerReviewName","CustomerReviewInfo","reply","CustomerReviewDate","CustomerReviewRating","CustomerReviewHeader","date","langDate","locale","fromNow","CustomerReviewContainer","CustomerReviewComment","CustomerReviewReply","CustomerReview","comment","CustomerReviewsContainer","CustomerReviewsTitle","CustomerReviewsTotal","CustomerReviewsTotalCount","CustomerReviewsValue","CustomerReviewsPercentages","CustomerReviewsPercentage","CustomerReviewsBar","percentage","CustomerReviewsNumber","CustomerReviewsAction","CustomerReviewsList","CustomerReviewsEmpty","CustomerReviews","maxValue","reviewStats","reviews","productTranslation","organizationTranslation","hasBeenReviewed","reviewedItem","productReviewId","Boolean","PERCENTAGES","percentageCountFive","starRatingValue","percentageCountFour","percentageCountThree","percentageCountTwo","percentageCountOne","handleOpenReviewModal","averageRating","toFixed","totalCount","Number","ProofPointContainer","ProofPointIcon","ProofPointName","ProofPoint","handleOpenProofPointModal","charAt","FeatureProofPointsContainer","FeatureProofPoints","PROOFPOINTS_LIST","featuredProofs","ConditionsContainer","ConditionsProofName","CoditionsList","CoditionsItem","CoditionsData","Conditions","proofpoint","conditions","condition","RenderHtmlWrapper","RenderHtmlContent","RenderHtmlAction","RenderHtmlContainer","RenderHtml","noOverlay","setIsVisible","textLength","setTextLength","dangerouslySetInnerHTML","__html","createMarkup","VideoPreviewMedia","video","VideoPreviewMediaOverlay","VideoPreviewMediaIcons","VideoPreviewMediaIconPlay","VideoTrimmerIcon","VideoPreviewContent","TIME_PREVIEW","VideoPreview","parent","poster","$video","play","setPlay","stopPreview","currentTime","playbackRate","pause","useInViewport","rootMargin","threshold","disconnectOnLeave","onEnterViewport","setTimeout","onLeaveViewport","clearTimeout","inViewport","enterCount","leaveCount","openMediaEvidenceModal","onMouseEnter","onMouseLeave","muted","controls","MilestoneContainer","MilestoneTitle","MilestoneIconBox","MilestoneIcon","MilestoneProofPoints","MilestoneLocation","MilestoneImage","Milestone","$milestoneParent","shouldShowWidget","MilestoneListContainer","MilestoneLisEmpty","MilestoneList","milestones","ProductImagesContainer","ProductImagesPicture","ProductImages","TemplateItem","TemplateSeparator","TemplateImage","TemplateTitle","TemplateSubtitle","TemplateLabel","TemplateText","TemplateLink","TemplateTechDetail","TemplateTechHeader","TemplateTechFooter","TemplateTechPrincipal","TemplateTechOther","TemplateIngredientItem","isLink","TemplateIngredientImage","TemplateTech","TemplateIngredient","ProductTabsTech","tech","otherDetails","other","subtitle","principalDetails","principal","footer","ProductTabsRecommendation","recommendations","recommendation","ProductTabsIngredient","ingredients","as","ProductTabsPdf","documents","handleOpenEvidenceModal","openEvidenceModal","evidenceName","file","expirationDate","ProductTabsContainer","ProductTabsHeader","ProductTabsHead","fullWidth","ProductTabsBody","ProductTabsItem","ProductTabsMobileContainer","ProductTabsMobileItem","optionSelect","SelectLanguageContainer","SelectLanguageLabel","SelectLanguageInput","SelectLanguageInputChevron","SelectLanguageOptions","SelectLanguageOptionFlag","SelectLanguageOptionName","SelectLanguageOption","SelectLanguageInputSelect","SelectLanguageInputBox","SelectLanguage","onSelect","inputField","translationStatus","languageSelect","setLanguageSelect","handleOnBlur","blur","languagueSelected","select","languageFound","htmlFor","tabIndex","focus","onBlur","stopPropagation","handleClickOption","ChildItem","child","selectedLanguage","toggleEanCode","parentId","show_ean","ean_code","translated_name","fontWeight","is_allergin","IngredientList","childs","Fragment","TabsContainer","TabsHeader","TabsHeadIcon","TabsHead","TabsBody","TabsItem","TabsMobileContainer","TabsMobileItem","TabNutrientContainer","TabNutrientHeader","TabNutrientHead","hiddenRight","hiddenTop","TabNutrientList","TabNutrientItem","TabNutrientItemBody","TabNutrient","nutrient","setSelectedLanguage","selectedFilteredIngredients","setSelectedFilteredIngredients","percentDiary","details","ingredientsFiltered","childId","newIngredients","newChilds","calories","parsedTranslationStatus","translationKeys","_foundLanguage","Math","round","parseFloat","discountCalories","scaleFactor","percent","translated_title","translated_subtext","ProductTabMobile","tabs","setActive","technicalDetail","ingredientList","fileList","nutritionFact","recommendationList","ProductTabDesktop","ProductTabs","RelatedProductsContainer","RelatedProductsItemImage","RelatedProductsItemAction","RelatedProductsItemOverlay","RelatedProductsItemName","RelatedProductsItem","RelatedProducts","products","SealItemContainer","SealItemIcon","SealItemName","SealItem","SealsContainer","Seals","SEALS_LIST","SectionHeaderContainer","SectionHeaderText","SectionHeader","ProductSection","section","ProductGrid","ProductColumns","ProductContent","ProductSideBar","aside","ProductInfoTitle","ProductInfoData","ProductDesktopView","relatedProducts","edges","stagesHeader","journey","ProductMobileView","ProofPointModalHeader","ProofPointModalName","ProofPointModalIcon","ProofPointModalVerified","ProofPointModalExpirationDate","ProofPointModalContent","ProofPointModalContentTitle","ProofPointModalContentAction","ProofPointModalContentLogo","ProofPointModalContainer","ProofPointModal","proofWithExpirationDates","evidences","handleOpenProofPointDetailModal","justifyContent","ProofPointDetailModalHeader","ProofPointDetailModalName","ProofPointDetailModalText","ProofPointDetailModalIcon","ProofPointDetailModalVerified","ProofPointDetailModalContent","ProofPointDetailModalContentTitle","ProofPointDetailModalContentText","ProofPointDetailModalEvidences","ProofPointDetailModalAction","ProofPointDetailModalEvidencesLink","ProofPointDetailModalEvidencesButton","ProofPointDetailModalContainer","ProofPointDetailModal","handleOpenMediaEvidenceModal","VerifiedIcon","mediaEvidences","evidendce","ldsRing","LoadingInner","Loading","LoadingSpinnerContent","LoadingMessage","LoaderSpinner","message","isLoading","LoadingContainer","fadeIn","MediaEvicenceModalContainer","MediaEvicenceModalMedia","MediaEvicenceModalLoading","MediaEvicenceModalError","MediaEvicenceModalErrorImage","MediaEvicenceModalErrorText","MediaEvicenceModalErrorSubText","MediaEvicenceModal","setIsLoading","hasError","setHasError","ErrorHandlerGraphic","playing","loop","boxShadow","onReady","onError","getTypeFile","contentType","EvidenceModalContainer","EvidenceModalContent","show","EvidenceModalViewerContainer","EvidenceModalLoading","EvidenceModalImage","EvidenceModalVideo","EvidenceModalNotFile","EvidenceModalNotFileTitle","EvidenceModalNotFileLink","EvicenceModalError","EvicenceModalErrorImage","EvicenceModalErrorText","EvicenceModalErrorSubText","EvidenceModal","evidenceFile","setEvidenceFile","isLoadingFile","setIsLoadingFile","fetch","response","blob","headers","raw","reader","FileReader","onload","result","readAsDataURL","workerUrl","fileUrl","autoPlay","EvidenveRender","deguelleDate","proofOne","proofTwo","typeDisplay","proofPoint","reviewCreate","reviewOrganizationCreate","reviewLotCreate","LabelContainer","Label","InputContainer","InputStyled","input","Input","handleBlur","handleChange","onChange","TextAreaContainer","TextAreaStyled","textarea","TextArea","rows","ReviewModalContainer","ReviewModalImage","ReviewModalTitle","ReviewModalSubtitle","ReviewModalActions","ReviewModalForm","ReviewModalFormRating","ReviewModalFormControl","ReviewModalRatingContainer","ReviewModalRatingStar","ReviewModalRating","onClickRating","setRating","handleSelectRating","validationSchema","yup","shape","required","email","integer","min","ReviewFormProduct","setSubmited","productId","loadingSubmit","setLoadingSubmit","INITIAL_VALUES","reviewCreateMutation","onSubmit","helpers","resetForm","initialValues","validateOnMount","isSubmitting","isValid","setFieldValue","ReviewFormOrganization","organizationId","ReviewFormLot","ReviewModal","submited","ModalReviewGraphic","Lot","setIsPrivate","resPorductLot","send","hitType","page","organizationQuery","OrganizationLinksContainer","OrganizationLinksAction","OrganizationLinks","OrganizationInfoContainer","OrganizationInfoImage","OrganizationInfoContent","OrganizationInfoDetails","OrganizationInfoDetailsColumn","OrganizationInfoLabel","OrganizationInfoText","OrganizationInfoLink","OrganizationInfoTelephones","OrganizationInfoTelephonesItemLabel","OrganizationInfoTelephonesItemName","OrganizationInfoTelephonesItem","OrganizationInfo","eventTelephoneAnalytic","headImage","telephones","telephone","OrganizationSection","OrganizationColumns","OrganizationContent","OrganizationDesktopView","OrganizationMobileView","OrganizationSkeleton","Organization","resOrganization","selectLanguage","handleRefetchQuery","Product","resProduct","resRelatedProduct","loadingRelated","refetchRelated","CycleLifeContaier","CycleLifeTitle","CycleLifeListBox","CycleLifeList","CycleLifeListOverlay","CycleLifeItemColumn","CycleLifeItemDate","CycleLifeItemTitle","CycleLifeItemParagraph","CycleLifeItemParagraphSeeMore","CycleLifeItemImage","CycleLifeItem","modal","CycleLifeAction","CycleLifeHeader","CycleLife","scrollList","handleOpenCycleLifeModal","scrollLeft","str","des","toString","PicturesContainer","sizeArray","PicturesItem","MiniGalleryContainer","MiniGalleryItem","isSelected","Pictures","selectedImageIndex","setSelectedImageIndex","spaceBetween","slidesPerView","initialSlide","onSlideChange","swiper","newIndex","activeIndex","_image","handleMiniImageClick","SealsItemImage","SealsItem","proofs","sustainabilityRecycleText","sustainabilityLang","sustainabilityText","iconColor","BlueIcon","BrownIcon","YellowIcon","GreenIcon","Sustainability","wineId","selectedSustainability","setSelectedSustainability","_selectLanguage","_sustainabilityText","_productLang","productLang","lineHeight","marginBottom","textAlign","sustainability","max","Tabs","Tab","TagsContainer","TagsItemIcon","TagsItemText","TagsItem","Tags","CycleLifeModalParagraph","CycleLifeModal","Wine","selected_language","alcoholicStrengthTitle","setAlcoholicStrengthTitle","alcoholicStrength","setAlcoholicStrength","alcoholUnit","setAlcoholUnit","detail","hideFromOrgMirror","isSustainable","indexOf","order","certIsOpen","setCertIsOpen","selectedTranslationObj","setSelectedTranslationObj","_extraFieldsArr","forEach","_parsedData","Array","isArray","push","default","langOpenModal","isEcological","field","handleOpenBlockchainDetailModal","deguelleDateState","setDeguelleDate","_queryCertificateId","arg3","allExtraFields","flat","extraField","product_name","product_number","arg2","deguelle_date","found","subTitle","buttonBlockchain","buttonViewed","placeholders","_title","_subTitle","_langId","_viewOnBlockchain","_buttonThankYou","generateTranslatedText","CatalogContaier","CatalogTitle","CatalogList","CatalogItem","CatalogItemDate","CatalogItemTitle","CatalogItemImage","Catalog","Winery","wineryId","widgetsSpreadQuery","SpreadWidgetContainer","SpreadWidget","proofId","isSendEvent","setIsSendEvent","widget","handleEvent","TRACKING_ID","initialize","path","element","WineBottle","hostname","match","i18next","use","LanguageDetector","initReactI18next","init","fallbackLng","resources","ns","defaultNS","returnObjects","debug","interpolation","escapeValue","react","wait","languages","SwiperCore","Autoplay","Pagination","ReactDOM","render","StrictMode","apolloClient","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"yGAAAA,EAAOC,QAAU,0pB,kBCAjBD,EAAOC,QAAU,0+L,kBCAjBD,EAAOC,QAAU,0/F,kBCAjBD,EAAOC,QAAU,sqD,kBCAjBD,EAAOC,QAAU,k4H,kBCAjBD,EAAOC,QAAU,k6B,kBCAjBD,EAAOC,QAAU,8qS,kBCAjBD,EAAOC,QAAU,spC,kBCAjBD,EAAOC,QAAU,00D,kBCAjBD,EAAOC,QAAU,0gC,oBCAjBD,EAAOC,QAAU,IAA0B,gC,oBCA3CD,EAAOC,QAAU,IAA0B,gC,kBCA3CD,EAAOC,QAAU,0zB,kBCAjBD,EAAOC,QAAU,80D,kBCAjBD,EAAOC,QAAU,kpS,kBCAjBD,EAAOC,QAAU,8pB,kBCAjBD,EAAOC,QAAU,sd,kBCAjBD,EAAOC,QAAU,koZ,kBCAjBD,EAAOC,QAAU,07B,kBCAjBD,EAAOC,QAAU,kgB,oBCAjBD,EAAOC,QAAU,IAA0B,gC,kBCA3CD,EAAOC,QAAU,k4H,oBCAjBD,EAAOC,QAAU,IAA0B,gC,kBCA3CD,EAAOC,QAAU,kjQ,kBCAjBD,EAAOC,QAAU,8X,oBCAjBD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,mD,kBCA3CD,EAAOC,QAAU,kpI,oBCAjBD,EAAOC,QAAU,IAA0B,iD,mBCA3CD,EAAOC,QAAU,IAA0B,iD,mBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,6C,mBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,oC,kBCA3CD,EAAOC,QAAU,0+I,0+HCAjBD,EAAOC,QAAU,IAA0B,mD,422BCA3CD,EAAOC,QAAU,kvM,kBCAjBD,EAAOC,QAAU,8hC,2kXCAjBD,EAAOC,QAAU,kqM,sKCKLC,E,kDCCGC,EAJA,I,OAAIC,GAAa,CAC9BC,IAAKC,oC,gBCDDC,EAAyBC,KAAKC,MAClCC,aAAaC,QAAQ,WAAa,MAG9BC,EAAeC,YAAY,CAC/BC,KAAM,UACNP,eACAQ,SAAU,CACRC,gBAAiB,SAACC,EAAiBC,GACjC,IAAMC,EAAQ,sBAAOF,GAAP,CAAcC,EAAOE,UAEnC,OADAV,aAAaW,QAAQ,SAAUb,KAAKc,UAAUH,IACvCA,MAKEH,EAAoBJ,EAAaW,QAAjCP,gBAEAJ,I,OCJTY,EAAeX,YAAY,CAC/BC,KAAM,UACNP,aARsC,CACtCkB,QAAS,GACTC,MAAO,GACPC,cAAe,IAMfZ,SAAU,CACRa,WAAY,SAACX,EAA4BC,GACvC,OAAO,2BACFD,GADL,IAEEQ,QAASP,EAAOE,WAGpBS,SAAU,SAACZ,EAA4BC,GACrC,OAAO,2BACFD,GADL,IAEES,MAAOR,EAAOE,WAGlBU,cAAe,SAACb,EAA4BC,GAC1C,OAAO,2BACFD,GADL,IAEEU,cAAeT,EAAOE,c,EAMyBI,EAAaD,QAArDK,E,EAAAA,WAAYC,E,EAAAA,SAAUC,E,EAAAA,cAEtBN,ICxCTjB,EAAe,CACnBwB,QAAQ,EACRC,MAAO,IAGHC,EAAuBpB,YAAY,CACvCC,KAAM,kBACNP,eACAQ,SAAU,CACRmB,UAAW,SAACjB,EAA4BC,GACtC,OAAO,2BACFA,EAAOE,SADZ,IAEEW,QAAQ,KAGZI,WAAY,WACV,OAAO5B,M,EAK4B0B,EAAqBV,QAA/CW,E,EAAAA,UAAWC,E,EAAAA,WAEXF,I,siBCwLFG,GAAkC,CAC7C,CACEC,KAAMC,IACNC,UAAW,KACXzB,KAAM,aACN0B,WAAY,eACZC,MAAO,mCACPC,MAAO,uCAET,CACEL,KAAMM,IACNJ,UAAW,KACXzB,KAAM,SACN0B,WAAY,gBACZC,MAAO,mCACPC,MAAO,0CAET,CACEL,KAAMO,IACNL,UAAW,KACXzB,KAAM,aACN0B,WAAY,mDACZC,MAAO,2IACPC,MAAO,yKAET,CACEL,KAAMQ,IACNN,UAAW,KACXzB,KAAM,QACN0B,WAAY,kBACZC,MAAO,qCACPC,MAAO,+CAET,CACEL,KAAMS,KACNP,UAAW,KACXzB,KAAM,SACN0B,WAAY,WACZC,MAAO,gDACPC,MAAO,kCAET,CACEL,KAAMU,IACNR,UAAW,KACXzB,KAAM,WACN0B,WAAY,eACZC,MAAO,6BACPC,MAAO,4CAET,CACEL,KAAMW,KACNT,UAAW,KACXzB,KAAM,WACN0B,WAAY,cACZC,MAAO,8CACPC,MAAO,wCAET,CACEL,KAAMY,KACNV,UAAW,KACXzB,KAAM,WACN0B,WAAY,YACZC,MAAO,wCACPC,MAAO,kCAET,CACEL,KAAMa,IACNX,UAAW,KACXzB,KAAM,UACN0B,WAAY,cACZC,MAAO,sCACPC,MAAO,kCAET,CACEL,KAAMc,IACNZ,UAAW,KACXzB,KAAM,WACN0B,WAAY,YACZC,MAAO,+CACPC,MAAO,yCAET,CACEL,KAAMe,KACNb,UAAW,KACXzB,KAAM,aACN0B,WAAY,iBACZC,MAAO,oDACPC,MAAO,4CAET,CACEL,KAAMgB,IACNd,UAAW,KACXzB,KAAM,SACN0B,WAAY,yDACZC,MAAO,oHACPC,MAAO,4IAET,CACEL,KAAMiB,KACNf,UAAW,KACXzB,KAAM,aACN0B,WAAY,qBACZC,MAAO,iDACPC,MAAO,oCAET,CACEL,KAAMkB,IACNhB,UAAW,KACXzB,KAAM,YACN0B,WAAY,cACZC,MAAO,4BACPC,MAAO,0CAET,CACEL,KAAMmB,KACNjB,UAAW,KACXzB,KAAM,cACN0B,WAAY,gBACZC,MAAO,mDACPC,MAAO,yCAET,CACEL,KAAMoB,KACNlB,UAAW,KACXzB,KAAM,WACN0B,WAAY,cACZC,MAAO,iCACPC,MAAO,qCAET,CACEL,KAAMqB,KACNnB,UAAW,KACXzB,KAAM,WACN0B,WAAY,wBACZC,MAAO,0EACPC,MAAO,yDAET,CACEL,KAAMsB,KACNpB,UAAW,KACXzB,KAAM,UACN0B,WAAY,qBACZC,MAAO,4CACPC,MAAO,2CAET,CACEL,KAAMuB,KACNrB,UAAW,KACXzB,KAAM,YACN0B,WAAY,cACZC,MAAO,yDACPC,MAAO,oCAET,CACEL,KAAMwB,KACNtB,UAAW,KACXzB,KAAM,gBACN0B,WAAY,kBACZC,MAAO,uBACPC,MAAO,wCAET,CACEL,KAAMyB,KACNvB,UAAW,KACXzB,KAAM,SACN0B,WAAY,iBACZC,MAAO,uDACPC,MAAO,6CAET,CACEL,KAAM0B,KACNxB,UAAW,KACXzB,KAAM,eACN0B,WAAY,eACZC,MAAO,8CACPC,MAAO,4CAET,CACEL,KAAM2B,KACNzB,UAAW,KACXzB,KAAM,SACN0B,WAAY,cACZC,MAAO,kDACPC,MAAO,uCAET,CACEL,KAAM4B,KACN1B,UAAW,KACXzB,KAAM,QACN0B,WAAY,eACZC,MAAO,oCACPC,MAAO,6CAET,CACEL,KAAM6B,KACN3B,UAAW,KACXzB,KAAM,UACN0B,WAAY,qBACZC,MAAO,0EACPC,MAAO,0CAET,CACEL,KAAM8B,IACN5B,UAAW,KACXzB,KAAM,aACN0B,WAAY,cACZC,MAAO,yCACPC,MAAO,uCAET,CACEL,KAAM+B,IACN7B,UAAW,KACXzB,KAAM,UACN0B,WAAY,WACZC,MAAO,uCACPC,MAAO,4CAET,CACEL,KAAMgC,KACN9B,UAAW,KACXzB,KAAM,UACN0B,WAAY,eACZC,MAAO,8CACPC,MAAO,wCC1aLnC,IDgbI+B,IAQA6B,IAQAZ,IChcW,CACnBxB,QAAQ,EACRC,MAAO,GACPsC,oBAAqBlC,GAAamC,MAAK,SAACC,GAAD,MAA6B,OAAnBA,EAAKjC,eAKlDkC,GAA6B5D,YAAY,CAC7CC,KAAM,wBACNP,gBACAQ,SAAU,CACRmB,UAAW,SAACjB,EAA4BC,GACtC,OAAO,2BACFA,EAAOE,SADZ,IAEEW,QAAQ,KAGZI,WAAY,WACV,OAAO5B,IAETmE,uBAAwB,SAACzD,EAA4BC,GACnD,OAAO,2BACFD,GADL,IAEEqD,oBAAqBpD,EAAOE,c,GAUhCqD,GAA2BlD,QAH7BW,G,GAAAA,UACAC,G,GAAAA,WACAuC,G,GAAAA,uBAGaD,MCpCTlE,GAAe,CACnBwB,QAAQ,EACR4C,MAAO,IAGHC,GAA0B/D,YAAY,CAC1CC,KAAM,qBACNP,gBACAQ,SAAU,CACRmB,UAAW,SAACjB,EAA4BC,GACtC,OAAO,2BACFA,EAAOE,SADZ,IAEEW,QAAQ,KAGZI,WAAY,kBAAM5B,O,GAImBqE,GAAwBrD,QAAlDW,G,GAAAA,UAAWC,G,GAAAA,WAEXyC,MCzBTrE,GAAe,CACnBwB,QAAQ,EACR8C,SAAU,IAGNC,GAAqBjE,YAAY,CACrCC,KAAM,gBACNP,gBACAQ,SAAU,CACRmB,UAAW,SAACjB,EAA4BC,GACtC,OAAO,2BACFA,EAAOE,SADZ,IAEEW,QAAQ,KAGZI,WAAY,kBAAM5B,O,GAImBuE,GAAmBvD,QAA7CW,G,GAAAA,UAAWC,G,GAAAA,WAEX2C,MCrBTvE,GAAe,CACnBwB,QAAQ,EACRgD,UAAW,IAGPC,GAAsBnE,YAAY,CACtCC,KAAM,iBACNP,gBACAQ,SAAU,CACRmB,UAAW,SAACjB,EAA4BC,GACtC,OAAO,2BACFA,EAAOE,SADZ,IAEEW,QAAQ,KAGZI,WAAY,kBAAM5B,O,GAImByE,GAAoBzD,QAA9CW,G,GAAAA,UAAWC,G,GAAAA,WAEX6C,MCtBTzE,GAAe,CACnBwB,QAAQ,GAGJkD,GAAmBpE,YAAY,CACnCC,KAAM,cACNP,gBACAQ,SAAU,CACRmB,UAAW,WACT,MAAO,CACLH,QAAQ,IAGZI,WAAY,WACV,OAAO5B,O,GAK4B0E,GAAiB1D,QAA3CW,G,GAAAA,UAAWC,G,GAAAA,WAEX8C,MCnBT1E,GAAe,CACnBwB,QAAQ,EACRC,MAAO,GACPN,MAAO,GACPwD,QAAS,GACTC,UAAU,GAGNC,GAA6BvE,YAAY,CAC7CC,KAAM,wBACNP,gBACAQ,SAAU,CACRmB,UAAW,SAACjB,EAA4BC,GACtC,OAAO,uCACFD,GACAC,EAAOE,SAFZ,IAGEW,QAAQ,KAGZsD,aAAc,SAACpE,EAA4BC,GACzC,OAAO,uCACFD,GACAC,EAAOE,SAFZ,IAGEW,QAAQ,KAGZI,WAAY,WACV,OAAO5B,O,GAK4B6E,GAA2B7D,QAArDW,G,GAAAA,UAAWC,G,GAAAA,WAEXiD,MCtBTE,GAAoBzE,YAAY,CACpCC,KAAM,eACNP,aAR2C,CAC3CgF,aAAc,GACdC,iBAAkB,GAClBC,iBAAkB,IAMlB1E,SAAU,CACR2E,gBAAiB,SAACzE,EAA4BC,GAC5C,OAAO,2BACFD,GADL,IAEEsE,aAAcrE,EAAOE,WAGzBuE,oBAAqB,SAAC1E,EAA4BC,GAChD,OAAO,2BACFD,GADL,IAEEuE,iBAAkBtE,EAAOE,QAAQN,KACjC2E,iBAAkBvE,EAAOE,QAAQwE,W,GASrCN,GAAkB/D,QAFpBmE,G,GAAAA,gBACAC,G,GAAAA,oBAGaL,MC7BTO,GAAmBhF,YAAY,CACnCC,KAAM,cACNP,aAN2C,CAC3CuF,WAAY,IAMZ/E,SAAU,CACRgF,cAAe,SAAC9E,EAA4BC,GAC1C,OAAO,2BACFD,GADL,IAEE6E,WAAY5E,EAAOE,cAMZ2E,GAAkBF,GAAiBtE,QAAnCwE,cAEAF,MCfTG,GAAiBnF,YAAY,CACjCC,KAAM,YACNP,aANwC,CACxC0F,IAAK,QAMLlF,SAAU,CACRmF,aAAc,SAACjF,EAA4BC,GACzC,OAAO,2BACFD,GADL,IAEEgF,IAAK/E,EAAOE,cAML8E,GAAiBF,GAAezE,QAAhC2E,aAEAF,MCZTG,GAAYtF,YAAY,CAC5BC,KAAM,OACNP,aANsC,CACtC6F,KAAM,IAMNrF,SAAU,CACRsF,QAAS,SAACpF,EAA4BC,GACpC,OAAO,2BACFD,GADL,IAEEmF,KAAMlF,EAAOE,cAMNiF,GAAYF,GAAU5E,QAAtB8E,QAEAF,MCdT5F,GAAmC,CACvCwB,QAAQ,EACRuE,aAAc,KACdC,gBAAiB/F,KAAKC,MACpBC,aAAaC,QAAQ,oBAAsB,MAE7C6F,eAAe,GAKXC,GAAsB5F,YAAY,CACtCC,KAAM,iBACNP,gBACAQ,SAAU,CACRmB,UADQ,SAENjB,EAFM,GAUL,IANCG,EAMF,EANEA,QAOF,OAAO,2BACFH,GADL,IAEEc,OAAQX,EAAQW,OAChBuE,aAAclF,EAAQkF,aACtBE,cAAepF,EAAQoF,iBAG3BE,gBAlBQ,SAmBNzF,EAnBM,GA0BL,IALCG,EAKF,EALEA,QAMF,OAAO,2BACFH,GADL,IAEEc,OAAQX,EAAQW,OAChByE,cAAepF,EAAQoF,iBAG3BG,gBAjCQ,SAiCQ1F,EAAyBC,GACvC,OAAO,2BACFD,GADL,IAEEqF,aAAcpF,EAAOE,QAAQkF,gBAGjCM,mBAvCQ,SAuCW3F,EAAyBC,GAM1C,OALAR,aAAaW,QACX,kBACAb,KAAKc,UAAUJ,EAAOE,QAAQmF,kBAGzB,2BACFtF,GADL,IAEEsF,gBAAiBrF,EAAOE,QAAQmF,mBAGpCpE,WAlDQ,SAkDGlB,GACT,OAAO,2BACFA,GADL,IAEEc,QAAQ,EACRyE,eAAe,Q,GAYnBC,GAAoBlF,QALtBW,G,GAAAA,UACAwE,G,GAAAA,gBACAE,G,GAAAA,mBACAD,G,GAAAA,gBACAxE,G,GAAAA,WAGasE,MC7DAI,GArBDC,YAAe,CAC3BC,QAAS,CACPC,OAAQC,EAAYF,QACpBtF,QAASD,EAAauF,QACtBG,gBAAiBjF,EAAqB8E,QACtCI,eAAgBV,GAAoBM,QACpCK,sBAAuB3C,GAA2BsC,QAClDM,mBAAoBzC,GAAwBmC,QAC5CO,cAAexC,GAAmBiC,QAClCQ,eAAgBvC,GAAoB+B,QACpCS,YAAavC,GAAiB8B,QAC9BU,sBAAuBrC,GAA2B2B,QAClDxB,aAAcmC,GAAsBX,QACpCjB,WAAYD,GAAiBkB,QAC7BY,UAAW3B,GAAee,QAC1BX,KAAMD,GAAUY,W,wGjB1BR7G,K,cAAAA,E,aAAAA,M,KkBDZ,IAAM0H,GAAS,CACb,SACA,kBACA,iBACA,WACA,gBACA,sBACA,QACA,QACA,SACA,YACA,aACA,YACA,QACA,cACA,iBACA,sBACA,OACA,QACA,UACA,UACA,WACA,SACA,QACA,cACA,YACA,WACA,gBACA,gBACA,gBAKK,SAASC,GAAQC,GACtB,OAAOF,GAAOG,SAASD,GAGzB,IAsCaE,GAAoC,CAC/CC,KAAM,aACNC,KAAM,aAQKC,GAAY,CACvBC,OAjDqC,CACrCC,OAAQ,UACRC,gBAAiB,UACjBC,eAAgB,UAChBC,oBAAqB,UACrBC,SAAU,UACVC,cAAe,UACfC,MAAO,UACPC,MAAO,UACPC,OAAQ,UACRC,UAAW,UACXC,WAAY,UACZC,UAAW,UACXC,MAAO,OACPC,YAAa,UACbC,eAAgB,mDAChBC,oBAAqB,mDACrBC,KAAM,UACNC,MAAO,UACPC,QAAS,UACTC,QAAS,UACTC,SAAU,UACVC,OAAQ,UACRC,MAAO,UACPC,YAAa,UACbC,cAAe,UACfC,aAAc,UACdC,UAAW,UACXC,SAAU,UACVC,cAAe,WAqBfC,MAPmB,CACnBjC,KAAM,aACNC,KAAM,cAQFiC,GAAU,eAAQhC,IAElBiC,GAAYC,KAAM,GAAIlC,GAAW,IAI1BmC,IAAM,oBAChBpK,EAAMqK,MAAQJ,IADE,eAEhBjK,EAAMsK,KAAOJ,IAFG,GC9FNK,GAAqBC,yBAAc,SAACC,OAalCC,GAXD,SAAC,GAA8B,IAA5BC,EAA2B,EAA3BA,SAA2B,EACLC,mBAAS5K,EAAMqK,OADV,oBACnCQ,EADmC,KACxBC,EADwB,KAEpCC,EAAQX,GAAOS,GAErB,OACE,kBAACN,GAAmBS,SAApB,CAA6BzI,MAAOuI,GAClC,kBAAC,KAAD,CAAeC,MAAOA,GAAQJ,K,owCCb7B,IAAMM,GAAwBC,KAAH,MA8BrBC,GAAuBD,KAAH,MAkBpBE,GAA0BF,KAAH,M,6NChD7B,IAAMG,GAAiBH,KAAH,M,sLCApB,IAAMI,GAAeC,KAAOC,IAAV,MC+EVC,GA7DH,SAAC,GAA4B,IAA1Bd,EAAyB,EAAzBA,SACPe,EAAWC,cADqB,EAGeC,aAEnDX,IAFMY,EAH8B,EAG9BA,KAAeC,EAHe,EAGxBC,QAA6B3C,EAHL,EAGKA,MAHL,EAOL4C,aAAYX,GAAgB,CAC3DY,qBAAqB,EACrBC,eAAgB,CAAC,UAFZC,EAP+B,qBAoDtC,OAxCAC,qBAAU,WACJP,IAASC,GACXJ,EACE7F,GAAc,CACZgG,KAAMA,KAIRzC,GAASA,EAAMiD,cAAcC,OAAS,GACxCZ,EACE7F,GAAc,CACZgG,KAAM,KACNU,OAAQnD,EAAMiD,mBAInB,CAACX,EAAUG,EAAMzC,EAAO0C,IAE3BM,qBAAU,WACR,IAAMI,EAAaC,UAAUC,OAAOC,SAASC,MAEzCJ,GACFL,EAAuB,CACrBU,UAAW,CACTC,cAAe,CACbC,YAAaP,MAIhBQ,MAAK,SAACC,GACDA,GAAOA,EAAIpB,MAAQoB,EAAIpB,KAAKR,gBAC9BK,EAASvF,GAAQ8G,EAAIpB,KAAKR,oBAG7B6B,OAAM,SAAC9D,GACNsC,EAASvF,GAAQqG,SAGtB,CAACd,EAAUS,IAGZ,kBAAC,GAAD,KACE,kBAACb,GAAD,KACE,kBAAC,WAAD,CAAU6B,SAAU,MAAOxC,M,g7LCzE5B,IAAMyC,GAAelC,KAAH,MA+NZmC,GAAsBnC,KAAH,MAcnBoC,GAAoBpC,KAAH,M,wpBC3OvB,IAAMqC,GAAoB,SAC/BC,EACAC,GAF+B,IAG/BC,EAH+B,uDAGjB,GAHiB,OAK/BnC,KAAOC,IALyB,KAgBjBgC,EACGC,GACJ,qBAAGE,SACF,qBAAGC,UAChB,qBAAGC,UAA2BC,MAC9B,qBAAGC,QAAuB,yBACxB,qBAAGC,QAAuB,sBACnB,gBAAGjD,EAAH,EAAGA,MAAOkD,EAAV,EAAUA,MAAV,OACPtG,GAAQsG,GAASlD,EAAM7C,OAAO+F,GAASA,KAC5B,gBAAGC,EAAH,EAAGA,WAAH,OAAoBpG,GAAYoG,MAC7B,gBAAGC,EAAH,EAAGA,cAAH,OAAwBA,GAAgC,KACtET,GAEA,YAAwB,IAArBU,EAAoB,EAApBA,OAAQrD,EAAY,EAAZA,MACX,MACa,SAAXqD,GAAA,yBAEOrD,EAAM7C,OAAOQ,MAFpB,8CAISqC,EAAM7C,OAAOS,OAJtB,wBAWKmF,GAAeJ,aAAH,MCzBzB,IAsBaW,GAAwC,CACnDC,KAvBWf,GAAkB,SAAU,MAAX,wBAwB5BgB,GAvBShB,GAAkB,WAAY,MAAb,0BAwB1BiB,GAvBSjB,GAAkB,WAAY,OAAb,0BAwB1BkB,GAvBSlB,GAAkB,UAAW,MAAZ,yBAwB1BmB,GAvBSnB,GAAkB,SAAU,MAAX,wBAwB1BoB,GAvBSpB,GAAkB,WAAY,MAAb,0BAwB1BqB,GAvBSrB,GAAkB,OAAQ,MAAT,sBAwB1BsB,MAvBYtB,GAAkB,WAAY,MAAb,0BAwB7BuB,KAvBWvB,GAAkB,UAAW,MAAZ,yBAwB5BwB,OAvBaxB,GAAkB,WAAY,MAAb,0BAwB9ByB,OAvBazB,GAAkB,SAAU,MAAX,wBAwB9BrH,KAvBWqH,GACX,OACA,MAF4B,6GCZjB0B,GAAO,YAcF,IAbhBC,EAae,EAbfA,GACAvE,EAYe,EAZfA,SAYe,IAXfyD,cAWe,MAXN,KAWM,MAVfT,aAUe,MAVP,OAUO,MATfC,cASe,MATN,SASM,EARfuB,EAQe,EARfA,UAQe,IAPflB,aAOe,MAPP,QAOO,EANfJ,EAMe,EANfA,SACAE,EAKe,EALfA,OACAC,EAIe,EAJfA,OACAG,EAGe,EAHfA,cAGe,IAFfD,kBAEe,MAFF,yBAEE,EADZkB,EACY,0IACTC,EAAU1E,GAAsBuE,EAChCD,EAAOZ,GAAYD,GAEzB,OACE,kBAACa,EAAD,eACEE,UAAWA,EACXxB,MAAOA,EACPC,OAAQA,EACRM,WAAYA,EACZD,MAAOA,EACPJ,SAAUA,EACVE,OAAQA,EACRC,OAAQA,EACRG,cAAeA,EACfC,OAAQA,GACJgB,GAEHC,I,siCC/CA,IAAMC,GAAoB/D,KAAOC,IAAV,MAYjB+D,GAAkBhE,KAAOC,IAAV,MAQfgE,GAAgBjE,aAAO0D,GAAP1D,CAAH,MAQbkE,GAAsBlE,aAAO0D,GAAP1D,CAAH,MAQnBmE,GAAenE,KAAOoE,EAAV,MAKd,qBAAG5E,MAAkB7C,OAAOQ,SCgFxBkH,GAxGE,SAAC,GAMI,IALpBC,EAKmB,EALnBA,aACAC,EAImB,EAJnBA,SACAC,EAGmB,EAHnBA,UACAC,EAEmB,EAFnBA,YACAC,EACmB,EADnBA,SAEqBC,aACnB,SAACnP,GAAD,OAAqBA,EAAMsE,aAAaA,gBAG1C,OACE,kBAACiK,GAAD,CACEa,MAAO,CACLC,gBAAgB,OAAD,OAASL,EAAYM,KAAoBC,KAAzC,OAGjB,oCACGN,GACC,kBAACT,GAAD,KACE,kBAACC,GAAD,mBACA,kBAACC,GAAD,kCAEE,6BAFF,wBAKA,kBAACC,GAAD,CAAc9C,KAAK,uBAAnB,oBAKHmD,GACC,kBAACR,GAAD,KACE,kBAACC,GAAD,mBACA,kBAACC,GAAD,kCAEE,6BAFF,wBAKc,KAAbQ,GACC,kBAACP,GAAD,CAAc9C,KAAI,UAAKqD,IAAvB,QAAyCA,KAI7CJ,GAAgBC,IAChB,kBAACP,GAAD,KACE,kBAACC,GAAD,mBACA,kBAACC,GAAD,iCAC4BI,EAAe,WAAa,QAExD,kBAACH,GAAD,CAAc9C,KAAK,uBAAnB,qBAKFiD,IAAiBC,IAAaC,IAAcC,GAC5C,kBAACT,GAAD,KACE,kBAACC,GAAD,YACA,kBAACC,GAAD,sCAEE,6BAFF,6BAKA,kBAACC,GAAD,CAAc9C,KAAK,uBAAnB,uB,oUCnFL,IAAM2D,GAAkBhF,KAAOC,IAAV,MAMN,qBAAGT,MAAkB7C,OAAOQ,SAGrC8H,GAAcjF,KAAOkF,IAAV,MCKTC,GARA,WACb,OACE,kBAACH,GAAD,KACE,kBAACC,GAAD,CAAaG,IAAKC,KAAQC,IAAI,a,UC4BrBC,GA7BE,SAAC,GAAuD,IAArDC,EAAoD,EAApDA,MAAOC,EAA6C,EAA7CA,YAAaC,EAAgC,EAAhCA,MAAOC,EAAyB,EAAzBA,IAC7C,OACE,kBAAC,KAAD,KACE,+BAAQH,GAAS,GAAjB,cACA,0BAAMnQ,KAAK,cAAcyO,QAAS2B,IAClC,0BACEpQ,KAAK,SACLyO,QAAQ,kEAET6B,GAAO,0BAAMC,IAAI,YAAYvE,KAAMsE,IACpC,0BAAME,SAAS,YAAY/B,QAAQ,UACnC,0BAAM+B,SAAS,UAAU/B,QAAQ,YACjC,0BAAM+B,SAAS,WAAW/B,QAAO,UAAK0B,EAAL,gBACjC,0BAAMK,SAAS,iBAAiB/B,QAAS2B,IACxCE,GAAO,0BAAME,SAAS,SAAS/B,QAAS6B,IACzC,0BAAME,SAAS,eAAe/B,QAAQ,aACtC,0BAAM+B,SAAS,WAAW/B,QAAS4B,IACnC,0BAAMG,SAAS,sBAAsB/B,QAAS4B,IAC9C,0BAAMG,SAAS,iBAAiB/B,QAAQ,SACxC,0BAAM+B,SAAS,kBAAkB/B,QAAQ,QACzC,0BAAMzO,KAAK,eAAeyO,QAAQ,wBAClC,0BAAMzO,KAAK,sBAAsByO,QAAS2B,IAC1C,0BAAMpQ,KAAK,gBAAgByO,QAAO,UAAK0B,EAAL,gBAClC,0BAAMnQ,KAAK,gBAAgByO,QAAS4B,IACnCC,GAAO,0BAAMtQ,KAAK,cAAcyO,QAAS6B,MCPjCG,OAzBf,SAAsBC,GACpB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,eAChBC,cAAY,OACZC,UAAU,QACVC,cAAY,MACZC,YAAa,IACbC,cAAc,QACdC,YAAU,cACVC,KAAK,MACLC,MAAM,6BACNC,QAAQ,eACJZ,GAEJ,wBACEa,KAAK,eACLC,EAAE,gSCGKC,OAtBf,SAAyBf,GACvB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRU,QAAQ,cACRT,kBAAgB,cAChBa,OAAO,UACPT,YAAa,IACbC,cAAc,QACdK,KAAK,QACDb,GAEJ,6BAAQ,gBACR,wBACEa,KAAK,eACLC,EAAE,uMCGKG,OAnBf,SAAmBjB,GACjB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRU,QAAQ,YACRT,kBAAgB,iBAChBa,OAAO,UACPT,YAAa,IACbC,cAAc,QACdK,KAAK,QACDb,GAEJ,6BAAQ,SACR,wBAAMc,EAAE,wDC0BCI,OAxCf,SAAqBlB,GACnB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRU,QAAQ,sBACRT,kBAAgB,mBAChBa,OAAO,UACPT,YAAa,IACbC,cAAc,QACdK,KAAK,QACDb,GAEJ,6BAAQ,gBACR,yBACE,wBACEc,EAAE,ytBAQJ,wBACEA,EAAE,sOAGJ,wBACEA,EAAE,qhBCRGK,OArBf,SAAoBnB,GAClB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,aAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,SACR,wBACEa,KAAK,eACLC,EAAE,4kBCMKM,OArBf,SAAkBpB,GAChB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,WAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,YACR,wBACEa,KAAK,eACLC,EAAE,mWCMKO,OArBf,SAAsBrB,GACpB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,eAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,gBACR,wBACEa,KAAK,eACLC,EAAE,63BCMKQ,OArBf,SAAsBtB,GACpB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,eAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,gBACR,wBACEa,KAAK,eACLC,EAAE,uPCMKS,OArBf,SAAqBvB,GACnB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,cAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,eACR,wBACEa,KAAK,eACLC,EAAE,8xBCMKU,OArBf,SAAsBxB,GACpB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,eAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,gBACR,wBACEa,KAAK,eACLC,EAAE,+QCMKW,OArBf,SAAsBzB,GACpB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,eAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,gBACR,wBACEa,KAAK,eACLC,EAAE,+aCMKY,OArBf,SAAuB1B,GACrB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,gBAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,iBACR,wBACEa,KAAK,eACLC,EAAE,iqBCMKa,OArBf,SAAiB3B,GACf,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,UAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,WACR,wBACEa,KAAK,eACLC,EAAE,4NCMKc,OArBf,SAAuB5B,GACrB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,gBAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,iBACR,wBACEa,KAAK,eACLC,EAAE,i6BCMKe,OArBf,SAAqB7B,GACnB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,cAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,eACR,wBACEa,KAAK,eACLC,EAAE,6dCMKgB,OArBf,SAAmB9B,GACjB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,mBAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,eACJZ,GAEJ,6BAAQ,eACR,wBACEa,KAAK,eACLC,EAAE,igBCIKiB,OAnBf,SAAwB/B,GACtB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRK,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,aACJZ,GAEJ,wBACEc,EAAE,4KACFD,KAAK,mBCMEmB,OAnBf,SAAoBhC,GAClB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRK,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,aACJZ,GAEJ,wBACEc,EAAE,iqBACFD,KAAK,mBCSEoB,OAtBf,SAAoBjC,GAClB,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,SAChBI,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,aACJZ,GAEJ,6BAAQ,UAER,wBACEa,KAAK,eACLC,EAAE,4cCIKoB,OApBf,SAA6BlC,GAC3B,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRK,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,aACJZ,GAEJ,wBAAMc,EAAE,yCAAyCD,KAAK,iBACtD,wBACEC,EAAE,8CACFD,KAAK,mBCMEsB,OApBf,SAA8BnC,GAC5B,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRK,YAAa,IACbC,cAAc,QACdK,KAAK,OACLD,QAAQ,aACJZ,GAEJ,wBACEc,EAAE,8CACFD,KAAK,iBAEP,wBAAMC,EAAE,wCAAwCD,KAAK,mBCI5CuB,OAnBf,SAAcpC,GACZ,OACE,qCACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,OAChBU,KAAK,OACLD,QAAQ,aACJZ,GAEJ,6BAAQ,QACR,wBACEc,EAAE,wpFACFD,KAAK,mBCWEwB,OAxBf,SAAoBrC,GAClB,OACE,uBACEC,MAAO,GACPC,OAAQ,GACRC,kBAAgB,UAChBC,cAAY,OACZC,UAAU,QACVC,cAAY,MACZC,YAAa,IACbC,cAAc,QACdC,YAAU,cACVC,KAAK,MACLC,MAAM,6BACNC,QAAQ,aAER,wBACEE,EAAE,qJACFD,KAAK,mBCsGEyB,GA/FgC,CAC7CC,aAAc,CACZC,KAAM,kBAAC,GAAD,MACNC,SAAU,gBAEZC,YAAa,CACXF,KAAM,kBAACG,GAAD,MACNF,SAAU,eAEZG,MAAO,CACLJ,KAAM,kBAACK,GAAD,MACNJ,SAAU,SAEZK,YAAa,CACXN,KAAM,kBAAC,GAAD,MACNC,SAAU,eAEZM,MAAO,CACLP,KAAM,kBAAC,GAAD,MACNC,SAAU,SAEZO,KAAM,CACJR,KAAM,kBAACS,GAAD,MACNR,SAAU,QAEZS,SAAU,CACRV,KAAM,kBAACW,GAAD,MACNV,SAAU,YAEZW,SAAU,CACRZ,KAAM,kBAACa,GAAD,MACNZ,SAAU,YAEZa,QAAS,CACPd,KAAM,kBAACe,GAAD,MACNd,SAAU,WAEZe,SAAU,CACRhB,KAAM,kBAACiB,GAAD,MACNhB,SAAU,YAEZiB,SAAU,CACRlB,KAAM,kBAACmB,GAAD,MACNlB,SAAU,YAEZmB,UAAW,CACTpB,KAAM,kBAACqB,GAAD,MACNpB,SAAU,aAEZqB,QAAS,CACPtB,KAAM,kBAAC,GAAD,MACNC,SAAU,WAEZsB,UAAW,CACTvB,KAAM,kBAACwB,GAAD,MACNvB,SAAU,aAEZwB,QAAS,CACPzB,KAAM,kBAAC0B,GAAD,MACNzB,SAAU,WAEZ0B,MAAO,CACL3B,KAAM,kBAAC4B,GAAD,MACN3B,SAAU,SAEZ4B,UAAW,CACT7B,KAAM,kBAAC8B,GAAD,MACN7B,SAAU,aAEZ8B,MAAO,CACL/B,KAAM,kBAACgC,GAAD,MACN/B,SAAU,SAEZgC,OAAQ,CACNjC,KAAM,kBAACkC,GAAD,MACNjC,SAAU,UAEZkC,iBAAkB,CAChBnC,KAAM,kBAACoC,GAAD,MACNnC,SAAU,oBAEZoC,gBAAiB,CACfrC,KAAM,kBAACsC,GAAD,MACNrC,SAAU,mBAEZ7N,KAAM,CACJ4N,KAAM,kBAAC,GAAD,MACNC,SAAU,QAEZsC,WAAY,CACVvC,KAAM,kBAAC,GAAD,MACNC,SAAU,e,4HC9GP,IAAMuC,GAAgB/K,KAAOC,IAAV,MAEpB,gBAAG+K,EAAH,EAAGA,KAAH,OACAA,GAAI,yBAEKA,EAFL,8BAGMA,EAHN,gBAKJ,gBAAGxL,EAAH,EAAGA,MAAOoH,EAAV,EAAUA,KAAV,OACAA,GAAI,wBAEIxK,GAAQwK,GAAQpH,EAAM7C,OAAOiK,GAAQA,EAFzC,gBAIJ,gBAAGpH,EAAH,EAAGA,MAAOuH,EAAV,EAAUA,OAAV,OACAA,GAAM,0BAEI3K,GAAQ2K,GAAUvH,EAAM7C,OAAOoK,GAAUA,EAF7C,cAIN,gBAAGvH,EAAH,EAAGA,MAAOkD,EAAV,EAAUA,MAAV,OACAA,GAAK,yBAEItG,GAAQsG,GAASlD,EAAM7C,OAAO+F,GAASA,EAF3C,cCJIuI,GAZF,SAAC,GAAuC,IAArCzC,EAAoC,EAApCA,SAAazC,EAAuB,6BAKlD,OACE,kBAACgF,GAAkBhF,EALL,SAACyC,GACf,OAAO0C,OAAOC,KAAK9C,IAAU/L,SAASkM,GAKnCpM,CAAQoM,GAAYH,GAASG,GAAUD,KAAO,K,wgBCR9C,IAAM6C,GACP,IADOA,GAEP,IAFOA,GAGP,IAHOA,GAIP,KAUOC,GAAK,SAChBC,GADgB,2BAEbC,EAFa,iCAEbA,EAFa,yBAGbpJ,aAHa,KAIgBiJ,GAC5BjJ,KAAG,WAAH,GAAImJ,GAAJ,OAAgBC,MAITC,GAAK,SAChBF,GADgB,2BAEbC,EAFa,iCAEbA,EAFa,yBAGbpJ,aAHa,KAIgBiJ,GAC5BjJ,KAAG,WAAH,GAAImJ,GAAJ,OAAgBC,MAITE,GAAK,SAChBH,GADgB,2BAEbC,EAFa,iCAEbA,EAFa,yBAGbpJ,aAHa,KAIgBiJ,GAC5BjJ,KAAG,WAAH,GAAImJ,GAAJ,OAAgBC,MAITG,GAAK,SAChBJ,GADgB,2BAEbC,EAFa,iCAEbA,EAFa,yBAGbpJ,aAHa,KAIgBiJ,GAC5BjJ,KAAG,WAAH,GAAImJ,GAAJ,OAAgBC,M,u0DCpDf,IAAMI,GAAyB3L,KAAOC,IAAV,MAOtB2L,GAAyB5L,KAAOC,IAAV,MAKtB4L,GAAuB7L,KAAOC,IAAV,KAICmL,GAGAA,IAIrBU,GAAsB9L,KAAOC,IAAV,MAMnB8L,GAA0B/L,KAAOkF,IAAV,MAEhC,qBAAG8G,SACI,6BAqBEC,IAhB+BjM,KAAOC,IAAV,MAIOD,aAAO0D,GAAP1D,CAAH,MAIlC,qBAAGR,MAAkB7C,OAAOwB,eAEnC,gBAAGf,EAAH,EAAGA,OAAQoC,EAAX,EAAWA,MAAX,OACApC,GAAM,uBAEGoC,EAAM7C,OAAO2B,UAFhB,YAKyB0B,KAAOC,IAAV,MACN,qBAAGT,MAAkB7C,OAAO2B,cAMzC4N,GAA0BlM,KAAOoE,EAAV,MACnB,qBAAG5E,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO4B,YAI1B,qBAAGiB,MAAkB7C,OAAOwB,eAG5BgO,GAA0BnM,aAAOkM,GAAPlM,CAAH,MAIvBoM,GAA8BpM,KAAOkF,IAAV,MAG3BmH,GAAuBrM,KAAOC,IAAV,M,kyCC1E1B,IAAMqM,GAAqBtM,KAAOC,IAAV,MAMlBsM,GAAmBvM,KAAOC,IAAV,MAMhBuM,GAAaxM,KAAOC,IAAV,MAED,qBAAGT,MAAkB7C,OAAOa,QACxBiP,MAoBbC,GAAiB1M,aAAO0D,GAAP1D,CAAH,MAKX,qBAAGR,MAAkB7C,OAAOa,SAMjC,qBAAGgC,MAAkB7C,OAAOO,SAI3B,qBAAGsC,MAAkB7C,OAAOQ,S,87CCpDjC,IAAMwP,GAA2C,CACtDrJ,MAAO,IACPsJ,OAAQ,IACRC,IAAK,MAGMC,GAAqB9M,aAAO+M,KAAP/M,CAAH,MAI3B,qBAAGvD,MAAe,wDAITuQ,GAAqBhN,aAAOiN,KAAPjN,CAAH,MAMpB,oBAAGgL,KAAH,gBAA4B2B,QAA5B,MAAU,SAAV,YACI,oBAAG3B,KAAH,gBAA4B2B,QAA5B,MAAU,SAAV,YACO,gBAAGnN,EAAH,EAAGA,MAAH,IAAU0N,iBAAV,MAAsB,QAAtB,SAClB9Q,GAAQ8Q,GAAa1N,EAAM7C,OAAOuQ,GAAaA,KACtC,gBAAGC,EAAH,EAAGA,QAAH,OAAkBA,GAAoB,WACjB/B,GAGAA,GAGAA,IAKrBgC,GAAiBpN,KAAOC,IAAV,MACdoN,GAAarN,KAAOC,IAAV,MAKT,qBAAGT,MAAkB7C,OAAOa,SAO1B,qBAAGgC,MAAkB7C,OAAOS,UAI/BkQ,GAAetN,KAAOC,IAAV,MACZsN,GAAevN,KAAOkD,GAAV,MAKR,qBAAG1D,MAAkBf,MAAMjC,QAGf,qBAAGgD,MAAkB7C,OAAOc,eAErD,YACA,GADiB,EAAd+P,QAED,MAAM,6GAQCC,GAAezN,KAAOC,IAAV,MChEV,SAASyN,GAAT,GASC,IARdpX,EAQa,EARbA,OACA8I,EAOa,EAPbA,SACAuJ,EAMa,EANbA,MACAqC,EAKa,EALbA,KACAkC,EAIa,EAJbA,UACAS,EAGa,EAHbA,WAGa,IAFbR,eAEa,MAFH,SAEG,EADb1Q,EACa,EADbA,KAEA,OAAInG,EAEA,kBAACwW,GAAD,CACExW,OAAQA,EACRsX,UAAYD,EAAqB,aAARhF,EACzBlM,KAAMA,GAGN,kBAACuQ,GAAD,CACE9G,kBAAgB,QAChB8E,KAAMA,EACNkC,UAAWA,EACXC,QAASA,IAEPQ,GACA,kBAACN,GAAD,CAAYQ,QAASlF,GACnB,kBAAC,GAAD,CAAMH,SAAS,WAGnB,kBAAC4E,GAAD,KAAiBhO,KAKlB,qC,oxCC1CT,IAAM0O,GAAoB3L,aAAH,MAWV4L,GAAa/N,aAAO0D,GAAP1D,CAAH,MAQVgO,GAAkBhO,KAAOiO,OAAV,KActBH,GAKAA,IAmBF,gBAAGI,EAAH,EAAGA,SAAU1O,EAAb,EAAaA,MAAb,OACA0O,GAAQ,4BAEM1O,EAAM7C,OAAOC,OAFnB,8OAeNmR,GAfM,4BAgBGvO,EAAM7C,OAAOc,YAhBhB,mBAoBP,gBAAGhB,EAAH,EAAGA,KAAM+C,EAAT,EAASA,MAAO2O,EAAhB,EAAgBA,QAASD,EAAzB,EAAyBA,SAAzB,OAAwCzR,GAAI,+BAC5B+C,EAAMf,MAAMhC,KADgB,oFAI7B0R,EAAU,cAAgB3O,EAAM7C,OAAO2B,UAJV,4BAKjC6P,EAAO,oBAAgB3O,EAAM7C,OAAO2B,WAAe,OALlB,2KAW3B6P,EAAU3O,EAAM7C,OAAO2B,UAAYkB,EAAM7C,OAAO6B,cAXrB,sBAYvCuP,GAZuC,gCAa9BI,EAAU3O,EAAM7C,OAAOa,MAAQgC,EAAM7C,OAAO4B,SAbd,wCAgBzCwP,GAhByC,8BAiBhCI,EAAU3O,EAAM7C,OAAO2B,UAAYkB,EAAM7C,OAAOa,MAjBhB,yDAqBzC0Q,GAAQ,oDAENH,GAFM,gLASJA,GATI,mEArBiC,YCtDlCK,GAxBA,SAAC,GAQI,IAPlBC,EAOiB,EAPjBA,KACAjP,EAMiB,EANjBA,SACAyO,EAKiB,EALjBA,QACApR,EAIiB,EAJjBA,KACA0R,EAGiB,EAHjBA,QACAD,EAEiB,EAFjBA,SACGnI,EACc,0EACXjC,EAAU1E,GAAsBiP,EAEtC,OACE,kBAACL,GAAD,iBACMjI,EADN,CAEE8H,QAASA,EACTpR,KAAMA,EACN0R,QAASA,EACTD,SAAUA,IAEV,kBAACH,GAAD,KAAajK,K,s1CCbnB,IAAMwK,GAAiE,CACrEC,UAAW,CACT7L,MAAO,aAET8L,WAAY,CACV9L,MAAO,UAKE+L,IAD0BzO,KAAOC,IAAV,MACED,KAAOC,IAAV,MAKN,qBAAGT,MAAkB7C,OAAOc,gBAQ5CiR,GAAgC1O,KAAOC,IAAV,MAO7B0O,GAA6B3O,KAAOC,IAAV,MAK1B2O,GAA+B5O,KAAOkF,IAAV,MAM5B2J,GAA6B7O,aAAO0D,GAAP1D,CAAH,MAM5B,qBAAGR,MAAkB7C,OAAOO,SAE1B4R,GAA+B9O,aAAO0D,GAAP1D,CAAH,MAI9B,gBAAGR,EAAH,EAAGA,MAAOuP,EAAV,EAAUA,OAAV,OACPA,EACIvP,EAAM7C,OAAO2R,GAAwBS,GAAQrM,OAC7ClD,EAAM7C,OAAOG,kBAERkS,GAA+BhP,aAAOoO,GAAPpO,CAAH,MCP5BrJ,GAA+D,CAC1EsY,GAAI,CACF1G,KAAM5Q,KACNoB,KAAM,SAERmW,GAAI,CACF3G,KAAM1R,IACNkC,KAAM,SAERoW,GAAI,CACF5G,KAAM7P,IACNK,KAAM,SAERqW,GAAI,CACF7G,KAAMjQ,KACNS,KAAM,SAERsW,GAAI,CACF9G,KAAMrR,IACN6B,KAAM,SAERuW,GAAI,CACF/G,KAAMvQ,KACNe,KAAM,SAERwW,GAAI,CACFhH,KAAMzQ,IACNiB,KAAM,SAERyW,GAAI,CACFjH,KAAMkH,KACN1W,KAAM,SAER2W,GAAI,CACFnH,KAAMpR,IACN4B,KAAM,SAER4W,GAAI,CACFpH,KAAMnR,IACN2B,KAAM,SAER6W,GAAI,CACFrH,KAAMlR,KACN0B,KAAM,SAER8W,GAAI,CACFtH,KAAMjR,IACNyB,KAAM,SAER+W,GAAI,CACFvH,KAAMhR,KACNwB,KAAM,SAERgX,GAAI,CACFxH,KAAM/Q,KACNuB,KAAM,SAERiX,GAAI,CACFzH,KAAM9Q,IACNsB,KAAM,SAERkX,GAAI,CACF1H,KAAM7Q,IACNqB,KAAM,SAERmX,GAAI,CACF3H,KAAM3Q,IACNmB,KAAM,SAERoX,GAAI,CACF5H,KAAM1Q,KACNkB,KAAM,SAERqX,GAAI,CACF7H,KAAMxQ,KACNgB,KAAM,SAERsX,GAAI,CACF9H,KAAMtQ,KACNc,KAAM,SAERuX,GAAI,CACF/H,KAAMrQ,KACNa,KAAM,SAERwX,GAAI,CACFhI,KAAMpQ,KACNY,KAAM,SAERyX,GAAI,CACFjI,KAAMnQ,KACNW,KAAM,SAER0X,GAAI,CACFlI,KAAMlQ,KACNU,KAAM,SAER2X,GAAI,CACFnI,KAAMhQ,KACNQ,KAAM,SAER4X,GAAI,CACFpI,KAAM5P,IACNI,KAAM,SAER6X,GAAI,CACFrI,KAAM3P,KACNG,KAAM,SAER8X,GAAI,CACFtI,KAAM9P,KACNM,KAAM,UAIK,SAAS+X,GAAT,GAIU,IAHvBC,EAGsB,EAHtBA,QACAC,EAEsB,EAFtBA,KACAC,EACsB,EADtBA,GACsB,EACFC,aAAe,WAA3BC,EADc,EACdA,EAAGC,EADW,EACXA,KAELjR,EAAWC,cAHK,GAKPuE,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WAAtDqb,GAEyD1M,aAC/D,SAACnP,GAAD,OAAqBA,EAAMkG,mBADrBpF,EAPc,EAOdA,OAAQuE,EAPM,EAONA,aAAcC,EAPR,EAOQA,gBAAiBC,EAPzB,EAOyBA,cAIzC4N,EAAQ2I,uBAAY,WACpBxW,GACFqF,EAASzJ,QAEV,CAACyJ,EAAUrF,IAERyW,EAAoB,yCAAG,WAAOlc,GAAP,oBAAA+O,EAAA,6DAC3BgN,EAAKI,eAAL,UAAoB7a,GAAatB,UAAjC,aAAoB,EAAoB0D,MAClC0Y,EAFqB,OAEP3W,QAFO,IAEPA,OAFO,EAEPA,EAAiBhC,MACnC,SAACC,GAAD,OAAc,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM2Y,aAAcT,IAAU,OAAJlY,QAAI,IAAJA,OAAA,EAAAA,EAAM4Y,kBAAmBV,KAGzDW,EAAsBH,EAAW,OACnC3W,QADmC,IACnCA,OADmC,EACnCA,EAAiB+W,KAAI,SAAC9Y,GACpB,OAAW,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM2Y,aAAcT,GAAMlY,EAAK4Y,iBAAmBV,EACrD,CACEa,WAAYzc,EACZ0c,UAAWZ,EAAE9b,GACbqc,UAAoB,YAATV,EAAqBC,EAAK,GACrCU,eAAyB,iBAATX,EAA0BC,EAAK,IAEjDlY,KAT6B,sBAY9B+B,GAZ8B,CAajC,CACEgX,WAAYzc,EACZ0c,UAAWZ,EAAE9b,GACbqc,UAAoB,YAATV,EAAqBC,EAAK,GACrCU,eAAyB,iBAATX,EAA0BC,EAAK,MAvB5B,SA2BrB9Q,EACJhF,GAAmB,CACjBL,gBAAiB8W,KA7BM,uBAgCrBzR,EAASzJ,MAhCY,OAkCvBqa,GAASA,IAlCc,2CAAH,sDAqC1B,OACE,kBAACrD,GAAD,CACEpX,OAAQA,EACRqS,MAAOA,EACPqC,KAAK,QACL2C,WAAY5S,GAEZ,kBAACuS,GAAD,KACE,kBAACC,GAAD,CAAcC,SAAO,GAAE2D,EAAE,iBACzB,kBAAC1D,GAAD,CAAc7I,MAAO,CAAEuI,QAAS,WAC7BtS,GACCqQ,OAAO8G,QAAQnX,GAAcgX,KAAI,SAACI,GAAD,MAAgB,CAC/C5c,KAAM4c,EAAU,GAChBC,gBAAiBD,EAAU,OACzBlR,OAAS,GACX,oCACGmK,OAAO8G,QAAQnX,GACbgX,KAAI,SAACI,GAAD,MAAgB,CACnB5c,KAAM4c,EAAU,GAChBC,gBAAiBD,EAAU,OAE5BJ,KAAI,SAACI,GAAe,IAAD,EACZE,EACJrX,GACAA,EAAgBhC,MACd,SAACC,GAAD,OACEA,EAAK2Y,YAAcT,GAAMlY,EAAK4Y,iBAAmBV,KAEvD,OACE,kBAACxC,GAAD,CAAwBpS,IAAG,OAAE4V,QAAF,IAAEA,OAAF,EAAEA,EAAW5c,MACtC,kBAACsZ,GAAD,KACE,kBAACC,GAAD,CACExJ,IAAG,UAAEzO,GAAY,OAACsb,QAAD,IAACA,OAAD,EAACA,EAAW5c,aAA1B,aAAE,EAA+BkT,OAEtC,kBAACsG,GAAD,KACGsC,EAAE,GAAD,cAAIc,QAAJ,IAAIA,OAAJ,EAAIA,EAAW5c,SACd8c,IACQ,OAATA,QAAS,IAATA,OAAA,EAAAA,EAAWL,eAAX,OAA0BG,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAW5c,OACnC,kBAACyZ,GAAD,CAA8BC,OAAO,aAClCoC,EAAE,eAKb,kBAACzC,GAAD,QACOyD,IACM,OAATA,QAAS,IAATA,OAAA,EAAAA,EAAWL,eAAX,OAA0BG,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAW5c,YACvB+c,IAAdD,IACA,kBAACnD,GAAD,CACEnB,QAAS,WACP0D,EAAoB,OAACU,QAAD,IAACA,OAAD,EAACA,EAAW5c,OAElCgZ,KAAM8C,EAAE,qB,iqCCzR/B,IAAMkB,GAA4BrS,aAAO0D,GAAP1D,CAAH,MAI3B,qBAAGR,MAAkB7C,OAAOQ,QACnCqO,GALkC,MAMxB,qBAAGhM,MAAkB7C,OAAOa,UAG7B8U,GAA0BtS,KAAOkF,IAAV,MAMvBqN,GAAwBvS,KAAOC,IAAV,KAI9BuL,GAJ8B,MAOlB,qBAAGhM,MAAkB7C,OAAOa,UAK/BgV,GAA6BxS,KAAOC,IAAV,MAEjB,qBAAGT,MAAkB7C,OAAOC,UAO1B,qBAAG4C,MAAkB7C,OAAOQ,QAC9CqO,GAViC,MAWb,qBAAGhM,MAAkB7C,OAAOa,SAIlDgO,GAfmC,MAgBjC,kBACS,YADT,EAAGwF,MACH,kCAKA,gBAAGA,EAAH,EAAGA,KAAMxR,EAAT,EAASA,MAAT,MACS,WAATwR,GAAA,sDAGgBxR,EAAM7C,OAAOa,MAH7B,sBAOA,gBAAGwT,EAAH,EAAGA,KAAMxR,EAAT,EAASA,MAAT,MAA6B,SAATwR,GAAA,wCAElBqB,GAFkB,8BAGT7S,EAAM7C,OAAOQ,MAHJ,6BAKlBoV,GALkB,mEAQN/S,EAAM7C,OAAOQ,MARP,gDC0BXsV,GAlEW,SAAC,GAAkD,IAAD,EAA/CC,EAA+C,EAA/CA,OAAczB,GAAiC,EAAvCD,KAAuC,EAAjCC,IACjCG,EAASF,aAAe,aAAxBE,KAEFjR,EAAWC,cAETtF,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBALkE,EAS1CuE,wBAC9B+S,GAVwE,oBASnEO,EATmE,KASzDC,EATyD,KAa1E/R,qBAAU,WACR,GACE/F,EAAgBhC,MACd,SAACC,GAAD,OAAc,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM2Y,aAAcT,IAAU,OAAJlY,QAAI,IAAJA,OAAA,EAAAA,EAAM4Y,kBAAmBV,KAE/D,CAAC,IAAD,EACI0B,EAAW7X,EAAgBhC,MAC7B,SAACC,GAAD,OAAc,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAM2Y,aAAcT,IAAU,OAAJlY,QAAI,IAAJA,OAAA,EAAAA,EAAM4Y,kBAAmBV,KAG/D2B,EAAYD,GACRA,GACFvB,EAAKI,eAAL,UAAoB7a,GAAY,OAACgc,QAAD,IAACA,OAAD,EAACA,EAAUb,mBAA3C,aAAoB,EAAoC/Y,WAE1DqY,EAAKI,eAAe,WAErB,CAACP,EAAInW,EAAiBsW,IAWzB,OACE,oCACGuB,EACC,kBAACH,GAAD,CACE3E,QAbqB,WAC3B1N,EACElF,GAAgB,CACd3E,QAAQ,EACRyE,eAAe,MAUbiW,KAAM0B,GAEN,kBAACJ,GAAD,CACElN,IAAG,UAAEzO,GAAY,OAACgc,QAAD,IAACA,OAAD,EAACA,EAAUb,mBAAzB,aAAE,EAAoCvJ,OAG3C,kBAAC8J,GAAD,YACGM,QADH,IACGA,OADH,EACGA,EAAUZ,WAGb,kBAACQ,GAAD,KACE,kBAAC,GAAD,CAAM/J,SAAS,kBAInB,uCCtFKqK,GACF,UADEA,GAEM,kBAFNA,GAGK,iBAHLA,GAIG,eC0IDC,GA9GO,SAAC,GAUI,IATzB1T,EASwB,EATxBA,SACAoB,EAQwB,EARxBA,QACAuS,EAOwB,EAPxBA,eACAC,EAMwB,EANxBA,MACAC,EAKwB,EALxBA,UACAvO,EAIwB,EAJxBA,SACAvK,EAGwB,EAHxBA,KACA8W,EAEwB,EAFxBA,GAEwB,IADxBiC,mBACwB,SAGlBC,GAFiBjC,aAAe,UAA9BC,EAEQiC,aAAc,uCAExBC,GAAO,IAAIC,MAAOC,cAExB,OAAIN,IAAcJ,GACT,kBAAC,GAAD,CAAUrO,WAAS,EAACE,SAAUA,IAGnCuO,IAAcJ,GACT,kBAAC,GAAD,CAAUvO,cAAY,IAI7B2O,IAAcJ,IACdI,IAAcJ,IAMZI,GACFA,IAAcJ,IACdI,IAAcJ,IACdI,IAAcJ,IACdI,IAAcJ,GARP,kBAAC,GAAD,MAaFrS,EACL,oCAAGuS,GAAkC,kBAAC,GAAD,OAErC,kBAACpH,GAAD,KACGwH,GACC,kBAAC3G,GAAD,KACE,kBAACE,GAAD,KACE,kBAAC,GAAD,CAAMlE,SAAS,gBADjB,+BAMHwK,GACC,kBAAC,GAAD,CACExN,MAAOwN,EAAMxN,MACbC,YAAauN,EAAMvN,YACnBC,MAAOsN,EAAMtN,MACbC,IAAKqN,EAAMrN,MAGf,kBAACiG,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,KACIoH,EAMA,8BALA,kBAACnH,GAAD,CACEC,UAAW7R,EACXiL,IAAKjL,GAAcqZ,OAMvB,kBAAC,GAAD,CAAmBd,OAAO,OAAO1B,KAAK,OAAOC,GAAIA,MAWrD,kBAAC5E,GAAD,KAAuBjN,GACvB,kBAACyM,GAAD,KACE,kBAACI,GAAD,KACE,kBAACE,GAAD,KACE,kBAACC,GAAD,CAA6BhH,IAAKqO,OADpC,OACoDJ,GAEpD,kBAACnH,GAAD,CACE7K,KAAK,wBACLqS,OAAO,UAFT,oBAMA,kBAACxH,GAAD,CACE7K,KAAK,2BACLqS,OAAO,UAFT,c,+5CC5HL,IAAMC,GAAiB3T,KAAOC,IAAV,MAEd2T,GAAgB5T,aAAOiL,GAAPjL,CAAH,MAMb6T,GAAgB7T,aAAO0D,GAAP1D,CAAH,KAGQoL,IAMrB0I,GAAmB9T,KAAOC,IAAV,MAazB,qBAAG8T,SAAqB,uGAQM3I,IAIrB4I,GAAkBhU,KAAOoE,EAAV,MAKf,qBAAG5E,MAAkB7C,OAAOwB,cAEPiN,IAMrB6I,GAAuBjU,aAAOgU,GAAPhU,CAAH,MAEpBkU,GAAYlU,KAAOC,IAAV,KAKhB2T,IACS,qBAAGpU,MAAkB7C,OAAOwB,cAErC0V,IACS,qBAAGrU,MAAkB7C,OAAOwB,eAIvC,gBAAG4V,EAAH,EAAGA,QAASvU,EAAZ,EAAYA,MAAZ,OAAuBuU,GAAO,gBAC5BH,GAD4B,4BAEnBpU,EAAM7C,OAAOwB,YAFM,yBAI5B0V,GAJ4B,0CCqJnBM,GAlMD,SAAC,GAMI,IALjBne,EAKgB,EALhBA,QACA8D,EAIgB,EAJhBA,aACA+T,EAGgB,EAHhBA,QACAuG,EAEgB,EAFhBA,OACApD,EACgB,EADhBA,KACgB,GACFE,aAAe,WAArBC,EAEoB9R,oBAAS,IAHrB,oBAGT/I,EAHS,KAGD+d,EAHC,KAIVC,EAAW3P,aACf,SAACnP,GAAD,OAAqBA,EAAMmF,KAAKA,KAAK4Z,kBALvB,EAQcC,aAAaF,EAAU,CACnDG,gBAAiB,MATH,oBAQCC,GARD,WAYVC,EAAa,SAACC,EAA6B5D,GAC/C,IAAM6D,EAAUD,EAAM9b,MAAK,SAACgc,GAAD,OAAYA,EAAO9D,OAASA,KAEvD,SAAO6D,IAAWA,EAAQE,SAASF,EAAQE,QAGvCC,EAAeC,mBAAQ,WACAC,mBAChB,YAATlE,EACIhb,GAAWA,EAAQmf,QAAUnf,EAAQmf,OAAOpU,OAAS,EAClD/K,EAAQmf,OAAO,GAAGxP,IAClB,iFACH7L,EACAA,EAAaK,KAAKwL,IAClB,kFAPN,IASMyP,EAAUpf,EACZA,GAAWA,EAAQ8D,aAAaub,eAChCvb,EACAA,EAAaub,eACb,KAEEC,EACJtf,GACAA,EAAQuf,qBACRvf,EAAQuf,oBAAoBxU,OAAS,EACjC/K,EAAQuf,oBAAoBC,MAAM,EAAG,GACrC1b,GACAA,EAAa2b,aACb3b,EAAa2b,YAAY1U,OAAS,EAClCjH,EAAa2b,YAAYD,MAAM,EAAG,GAClC,GAzB2B,EA0BNF,EAAKzD,KAAI,SAACtb,EAAYmf,GAC/C,IAAIC,EAAYpf,EAAMlB,KAAOkB,EAAMlB,KAAOkB,EAAMqf,KAAKvgB,KACjDwgB,EAASH,EAAQ,EACrB,OAAOJ,EAAKvU,SAAW8U,EAASF,EAAzB,UAAwCA,EAAxC,SA7BwB,oBA0B1BG,EA1B0B,KA0BpBC,EA1BoB,KA0BdC,EA1Bc,KA+B3BC,EACJX,EAAKvU,OAAS,EAAd,UAAqB+U,GAArB,OAA4BC,GAAc,IAA1C,OAA+CC,GAAc,GAA7D,OAAuE,GAEzE,MAAO,CACL,CACE3gB,KAAM,OACNwY,QAAS,WACP6G,IACIN,GAAUvG,GAASA,KAEzBxM,KAAM,SAAC6U,GAAD,MAAqB,KAC3BA,QAAS,MAEX,CACE7gB,KAAM,WACNgM,KAAM,SAAC6U,GAAD,oCAA4CA,GAA5C,OAAsD5B,IAC5DzG,QAASA,EACTqI,QAAShB,mBAAmB,GAAD,OACtBe,EAAQ,WAAOA,EAAP,MAAsB,IADR,OAEvBjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAFrC,gDAM7B,CACEA,KAAM,WACNgM,KAAM,SAAC6U,GAAD,kDACiC5B,EADjC,iBACkD4B,IACxDrI,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,2DAMtB,CACEA,KAAM,UACNgM,KAAM,SAAC6U,GAAD,sDACqCA,EADrC,gBACoD5B,IAC1DzG,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,+DAIdsf,EAAWS,EAAiC,WAA5C,UACOT,EAAWS,EAAiC,WADnD,MAEI,QAIZ,CACE/f,KAAM,WACNgM,KAAM,SAAC6U,GAAD,6DAC4C5B,IAClDzG,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,2DAMtB,CACEA,KAAM,WACNgM,KAAM,SAAC6U,GAAD,oEACmD5B,IACzDzG,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,8DAOvB,CAACW,EAAS8D,EAAcwa,EAAUzG,EAAS6G,EAAWN,EAAQpD,IAcjE,OACE,kBAAC2C,GAAD,KACE,kBAACO,GAAD,CACEH,QAASzd,EACTuX,QAAS,WACFvX,GAAQ+d,GAAW/d,KAG1B,kBAACsd,GAAD,CAAepL,SAAS,cACxB,kBAACqL,GAAD,kBACA,kBAACC,GAAD,CAAkBC,QAASzd,GACxB0e,EAAanD,KAAI,SAACtJ,GAAD,OAChB,kBAACyL,GAAD,CACE3X,IAAKkM,EAAKlT,KACVwY,QAAS,SAACsI,GA1BE,IAACrB,IA2BKvM,EAAKlT,KA1BjC+gB,KAAQC,MAAM,CACZC,SAAUxc,EAAe,aAAe,iBACxCrE,OAAO,GAAD,OAAKqf,EAAL,UACNyB,MAAOzc,EAAY,UACZA,EAAauX,IAChBrb,EAAO,UACJA,EAAQ8D,aAAauX,GADjB,YACuBrb,EAAQqb,IACtC,KAoBU9I,EAAKsF,UAAYuG,IACnB+B,EAAEK,iBACFjO,EAAKsF,WAGHtF,EAAKsF,SAAWuG,GAClB7L,EAAKsF,WAGTxM,KAAMkH,EAAK2N,QAAU3N,EAAKlH,KAAKkH,EAAK2N,SAAW,IAC/CxC,OAAQ,SACR9N,IAAI,uBAEH2C,EAAKlT,SAGV,kBAAC4e,GAAD,CACEpG,QAAS,WACPwG,GAAW/d,KAFf,S,swDC/MH,IAAMmgB,GAAsBzW,KAAOC,IAAV,MAUnByW,IALmB1W,KAAOC,IAAV,MAKED,KAAOC,IAAV,KAOMmL,GAGAA,KAIrBuL,GAAwB3W,KAAOC,IAAV,MACrB2W,GAAkB5W,KAAOC,IAAV,MAcf4W,IAPsB7W,aAAO0D,GAAP1D,CAAH,MACf,qBAAGR,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO4B,YAGHyB,aAAO0D,GAAP1D,CAAH,MAGtB,qBAAGR,MAAkB7C,OAAO2B,cAI1BwY,GAA2B9W,aAAO0D,GAAP1D,CAAH,MACpB,qBAAGR,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO4B,YAG1BwY,GAAuB/W,KAAOkF,IAAV,KAMCkG,GAGAA,ICOnB4L,GArDK,SAAC,GAAiC,IAA/BC,EAA8B,EAA9BA,MAOrB,OACE,kBAACR,GAAD,KACE,kBAACC,GAAD,KACGO,EAAMpF,KAAI,SAACqF,GACV,IAAMC,EACFD,EAAKC,aAAepiB,KAAKC,MAAMkiB,EAAKC,aAAapW,OAAS,EACxDhM,KAAKC,MAAMkiB,EAAKC,aAChB,GAEN,OACE,kBAACP,GAAD,CAAiBva,IAAG,UAAK6a,EAAK7F,GAAV,YAAgB6F,EAAK7hB,OACvC,kBAACwhB,GAAD,KAAuBK,EAAK7hB,MAC5B,kBAACshB,GAAD,KACGQ,EAAYtF,KAAI,SAACuF,GAAD,OACf,kBAACN,GAAD,CAA0Bza,IAAK+a,EAAWC,aACvCD,EAAW/hB,KAAM,IACU,cAA3B+hB,EAAWC,YACRtiB,KAAKC,MACHoiB,EAAWpgB,OACX6a,KACA,SACEyF,EACA5B,GAFF,OAIE,0BACErZ,IAAKqZ,GADP,UAEK4B,EAAKf,MAFV,YAEmBe,EAAKtgB,MAFxB,UAKJogB,EAAWpgB,QACZogB,EAAWG,MAAQH,EAAWG,SAIrC,kBAACR,GAAD,CACE3R,IAAK8R,EAAKxR,MAAQwR,EAAKxR,MAAMC,IAAM6R,e,+pCCzD9C,IAAMC,GAAgBzX,KAAOC,IAAV,MAiBbyX,GAA0B1X,aAAOyX,GAAPzX,CAAH,MACzB,gBAAGgG,EAAH,EAAGA,MAAH,OAAgBA,GAAgB,WAC/B,gBAAGC,EAAH,EAAGA,OAAH,OAAiBA,GAAkB,aAC5B,gBAAG0R,EAAH,EAAGA,OAAH,OAAiBA,GAAkB,OAC1C,gBAAGC,EAAH,EAAGA,OAAH,OAAiBA,GAAkB,OAClC,gBAAGzK,EAAH,EAAGA,QAAH,OAAkBA,GAAoB,OACtC,gBAAG0K,EAAH,EAAGA,QAAH,OAAkBA,GAAoB,kBAC/C,gBAAGC,EAAH,EAAGA,SAAH,OACAA,GAAQ,2BAEKA,EAFL,YAIR,gBAAGrL,EAAH,EAAGA,WAAH,OACAA,GAAU,4BAEIA,EAFJ,YAIV,YAAiB,IAAd7P,EAAa,EAAbA,OACH,GAAIA,EACF,MAAM,mBAAN,OACUA,EAAOmb,KAAOnb,EAAOmb,KAAO,OADtC,mCAEiBnb,EAAOob,OAASpb,EAAOob,OAAS,OAFjD,gCAGcpb,EAAOqb,IAAMrb,EAAOqb,IAAM,OAHxC,iCAIerb,EAAOsb,KAAOtb,EAAOsb,KAAO,OAJ3C,kCAKgBtb,EAAOub,MAAQvb,EAAOub,MAAQ,OAL9C,oBAMEvb,EAAOmb,MAAP,kBAA0Bnb,EAAOmb,KAAjC,KANF,gBAUF,gBAAGK,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKhW,OADL,6BAGegW,EAAKhW,MAHpB,YAKA,gBAAGiW,EAAH,EAAGA,aAAH,OACAA,GAAY,+BAEKA,EAFL,YAIZ,gBAAGD,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKE,SADL,iCAGmBF,EAAKE,QAHxB,YAKA,gBAAGF,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKG,KADL,qBAGOH,EAAKG,IAHZ,YAMA,gBAAGH,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKI,MADL,2BAGaJ,EAAKI,KAHlB,YAKA,gBAAGJ,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKK,MADL,2BAGaL,EAAKK,KAHlB,YAKA,gBAAGL,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKM,WADL,sBAGQN,EAAKM,UAHb,YAKA,gBAAGN,EAAH,EAAGA,KAAH,OACAA,GACAA,EAAKO,WADL,gCAGkBP,EAAKO,UAHvB,YAKA,gBAAGC,EAAH,EAAGA,mBAAH,OACAA,GAAkB,qCAEKA,EAFL,YAKlB,gBAAGC,EAAH,EAAGA,iBAAH,OACAA,GAAgB,mCAEKA,EAFL,YAKhB,gBAAGC,EAAH,EAAGA,eAAH,OACAA,GAAc,iCAEKA,EAFL,YAId,gBAAGC,EAAH,EAAGA,SAAH,OACAA,GAAQ,0BAEIA,EAFJ,YAIR,gBAAGC,EAAH,EAAGA,UAAH,OACAA,GAAS,4BAEKA,EAFL,YAIT,gBAAGC,EAAH,EAAGA,SAAH,OACAA,GAAQ,2BAEKA,EAFL,YAIR,gBAAGC,EAAH,EAAGA,UAAH,OACAA,GAAS,2BAEIA,EAFJ,YAIT,gBAAGC,EAAH,EAAGA,SAAH,OACAA,GAAQ,0BAEIA,EAFJ,YAIR,gBAAGhB,EAAH,EAAGA,MAAH,OACAA,GAAK,uBAEIA,EAFJ,YAIL,gBAAGD,EAAH,EAAGA,KAAH,OACAA,GAAI,sBAEIA,EAFJ,YAIJ,gBAAGD,EAAH,EAAGA,IAAH,OACAA,GAAG,qBAEIA,EAFJ,YAIH,gBAAGD,EAAH,EAAGA,OAAH,OACAA,GAAM,wBAEIA,EAFJ,YAQN,gBAAGoB,EAAH,EAAGA,MAAH,OACAA,GAAK,kCAGDA,EAHC,kBCtJMC,GARQ,SAAC,GAA+C,IAA7Cja,EAA4C,EAA5CA,SAAa2G,EAA+B,6BACpE,OAAO3G,EACL,kBAACsY,GAA4B3R,EAAQ3G,GAErC,kBAACsY,GAA4B3R,I,kUCT1B,IAAMuT,GAAmBtZ,KAAOC,IAAV,KAQzBuL,GARyB,OCSd+N,GAJG,SAAC,GAAkC,IAAhCna,EAA+B,EAA/BA,SACnB,OAAO,kBAACka,GAAD,KAAmBla,I,sSCNrB,IAAMoa,GAAuBxZ,KAAOC,IAAV,KAS7BuL,GAT6B,OCkGlBiO,GAzFW,SAAC,GAAmD,IAAjDra,EAAgD,EAAhDA,SAAU+T,EAAsC,EAAtCA,QACrC,OACE,kBAAC,GAAD,CACEnN,MAAM,OACNC,OAAO,OACP+S,UAAU,QACVnB,QAAQ,OACRO,KAAM,CACJO,UAAW,UAEblM,WAAW,eAEX,kBAAC,GAAD,CACEzG,MAAM,OACNC,OAAO,OACPrJ,OAAQ,CACNob,OAAQ,qBAEVvL,WAAW,eAEX,kBAAC,GAAD,CACEzG,MAAM,OACNiT,SAAU9F,EAAU,oBAAsB,oBAC1ClN,OAAO,OACP2R,OAAO,SACPC,QAAQ,OACRO,KAAM,CACJE,QAAS,gBACTlW,MAAO,UAETqK,WAAW,cACXsM,SAAS,UAET,kBAAC,GAAD,CACE/S,MAAM,OACNC,OAAO,OACP4R,QAAQ,OACRO,KAAM,CACJhW,MAAO,UAETqK,WAAW,eAEX,kBAAC,GAAD,CACEzG,MAAM,YACNC,OAAO,YACP0R,OAAO,cAET,kBAAC,GAAD,CACE3R,MAAM,WACNC,OAAO,WACP2R,OAAO,kBAKf,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,OACPmS,KAAM,CACJM,UAAW,KAEbjM,WAAW,eAEX,kBAAC,GAAD,KAAYrN,IAEd,kBAACoa,GAAD,KACE,kBAAC,GAAD,CACExT,MAAM,OACNC,OAAO,OACPkH,QAAQ,mBACR0K,QAAQ,OACRO,KAAM,CACJhW,MAAO,SACPkW,QAAS,gBAEX1b,OAAQ,CACNqb,IAAK,qBAEPxL,WAAW,eAEX,kBAAC,GAAD,CAAgBzG,MAAM,SAASC,OAAO,OAAO4R,QAAQ,UACrD,kBAAC,GAAD,CAAgB7R,MAAM,OAAOC,OAAO,OAAO4R,QAAQ,UACnD,kBAAC,GAAD,CAAgB7R,MAAM,OAAOC,OAAO,OAAO4R,QAAQ,cCnD9C6B,GAlCQ,SAAC,GAAsC,IAApCvG,EAAmC,EAAnCA,QAAmC,EACvC9T,mBAAS,CAAC,EAAG,EAAG,EAAG,EAAG,IAAnCsa,EADoD,qBAG3D,OACE,kBAAC,GAAD,CACE3T,MAAM,OACNC,OAAO,OACPkH,QAAQ,0BACRyK,OAAO,qBACPC,QAAQ,OACRO,KAAM,CACJhW,MAAO,SACPqW,KAAM,UAERhM,WAAW,cACXsM,SAAS,SACTE,SAAU9F,EAAU,qBAAuB,sBAE1CwG,EAAU9H,KAAI,SAAC+H,EAAOlE,GAAR,OACb,kBAAC,GAAD,CACErZ,IAAG,UAAKqZ,EAAL,UACH1P,MAAM,QACNC,OAAO,OACP2R,OAAO,yBACPD,OAAO,SACPS,KAAM,CACJM,UAAW,oBCNRmB,GAxBW,WACxB,OACE,kBAAC,GAAD,CACE7T,MAAM,OACNC,OAAO,OACPrJ,OAAQ,CACNmb,KAAM,qBAER5K,QAAQ,iBACR8L,SAAS,SACTrB,OAAO,aACPQ,KAAM,CACJM,UAAW,YAEbjM,WAAW,eAEX,kBAAC,GAAD,CAAgBzG,MAAM,SAASC,OAAO,SAAS2R,OAAO,cACtD,kBAAC,GAAD,CAAgB5R,MAAM,OAAOC,OAAO,UAAU2R,OAAO,iBACrD,kBAAC,GAAD,CAAgB5R,MAAM,OAAOC,OAAO,UAAU2R,OAAO,iBACrD,kBAAC,GAAD,CAAgB5R,MAAM,OAAOC,OAAO,cCK3B6T,GAvBO,WAAO,IAAD,EACNza,mBAAS,CAAC,EAAG,IAA1B0a,EADmB,qBAG1B,OACE,kBAAC,GAAD,CACE/T,MAAM,OACNC,OAAO,OACPkH,QAAQ,WACRyK,OAAO,WACPC,QAAQ,OACRO,KAAM,CACJK,KAAM,UAERhM,WAAW,cACXsM,SAAS,UAERgB,EAAUlI,KAAI,SAACmI,EAAMtE,GAAP,OACb,kBAAC,GAAD,CAAmBrZ,IAAG,UAAKqZ,EAAL,gBCFfuE,GAhBc,WAC3B,OACE,kBAAC,GAAD,CACEjU,MAAM,OACNC,OAAO,OACP4R,QAAQ,OACRO,KAAM,CACJhW,MAAO,UAETqK,WAAW,eAEX,kBAAC,GAAD,CAAgBzG,MAAM,WAAWC,OAAO,WCoB/BiU,GA/Ba,WAC1B,OACE,kBAAC,GAAD,CAAgBlU,MAAM,OAAOC,OAAO,OAAOwG,WAAW,eACpD,kBAAC,GAAD,CACEzG,MAAM,OACNC,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,WACP4R,QAAQ,QACRD,OAAO,aAET,kBAAC,GAAD,CACE5R,MAAM,MACNC,OAAO,WACP4R,QAAQ,QACRD,OAAO,eAET,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,WACP4R,QAAQ,QACRD,OAAO,eCEAuC,GA3BO,WAAO,IAAD,EACN9a,mBAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAzC+a,EADmB,qBAG1B,OACE,kBAAC,GAAD,CACEpU,MAAM,OACNC,OAAO,OACP2R,OAAO,WACPC,QAAQ,OACRO,KAAM,CACJK,KAAM,QAERhM,WAAW,eAEV2N,EAAUvI,KAAI,SAAC/I,EAAO4M,GAAR,OACb,kBAAC,GAAD,CACErZ,IAAG,UAAKqZ,EAAL,UACH1P,MAAM,OACNC,OAAO,OACP2R,OAAO,mBACPD,OAAO,cC6EF0C,GAjGS,WAAO,IAAD,EACPhb,mBAAS,CAAC,EAAG,EAAG,EAAG,EAAG,IAApCib,EADqB,qBAG5B,OACE,kBAAC,GAAD,CACEtU,MAAM,OACNC,OAAO,OACP2R,OAAO,aACPnL,WAAW,eAEX,kBAAC,GAAD,CACEzG,MAAM,UACNC,OAAO,OACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,QACNC,OAAO,OACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,OACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,OACP2R,OAAO,aACPnL,WAAW,eAEV6N,EAAWzI,KAAI,SAACtW,EAAQma,GAAT,OACd,kBAAC,GAAD,CACErZ,IAAG,UAAKqZ,EAAL,WACH1P,MAAM,OACNC,OAAO,OACPwG,WAAW,cACXoL,QAAQ,OACRO,KAAM,CACJhW,MAAO,UAETwV,OAAO,cAEP,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,OACPwG,WAAW,cACXoL,QAAQ,OACRO,KAAM,CACJhW,MAAO,UAETwV,OAAO,gBAEP,kBAAC,GAAD,CACE5R,MAAM,WACNC,OAAO,WACP2R,OAAO,iBAET,kBAAC,GAAD,CACE5R,MAAM,WACNC,OAAO,WACP2R,OAAO,iBAET,kBAAC,GAAD,CACE5R,MAAM,WACNC,OAAO,WACP2R,OAAO,iBAET,kBAAC,GAAD,CACE5R,MAAM,WACNC,OAAO,WACP2R,OAAO,iBAET,kBAAC,GAAD,CACE5R,MAAM,WACNC,OAAO,WACP2R,OAAO,kBAGX,kBAAC,GAAD,CACE5R,MAAM,UACNC,OAAO,UACP2R,OAAO,eAET,kBAAC,GAAD,CAAgB5R,MAAM,OAAOC,OAAO,kBAK1C,kBAAC,GAAD,CAAgBD,MAAM,UAAUC,OAAO,WAAW2R,OAAO,iBCYhD2C,GAxGgB,WAAO,IAAD,EACflb,mBAAS,CAAC,GAAI,IAA3Bsa,EAD4B,qBAGnC,OACE,kBAAC,GAAD,CACE3T,MAAM,OACNC,OAAO,OACPwG,WAAW,cACXU,QAAQ,6BACRgM,SAAS,WACTC,MAAK,gQAWL,kBAAC,GAAD,CACEpT,MAAM,OACNC,OAAO,OACP2R,OAAO,eACPuB,SAAS,WACT1M,WAAW,eAEX,kBAAC,GAAD,CAAgBzG,MAAM,OAAOC,OAAO,OAAO4R,QAAQ,UACnD,kBAAC,GAAD,CACE7R,MAAM,WACNC,OAAO,WACPkT,SAAS,WACTlB,IAAI,wBACJC,KAAK,aACLP,OAAO,SAGX,kBAAC,GAAD,CACE3R,MAAM,OACNC,OAAO,OACP2R,OAAO,kBACPnL,WAAW,eAEVkN,EAAU9H,KAAI,SAACtb,EAAOmf,GAAR,OACb,kBAAC,GAAD,CACErZ,IAAG,UAAKqZ,EAAL,UACH1P,MAAK,UAAKzP,EAAL,OACL0P,OAAO,OACP2R,OAAO,yBACPD,OAAO,SACPS,KAAM,CACJM,UAAW,mBAKnB,kBAAC,GAAD,CACE1S,MAAM,OACNC,OAAO,QACP2R,OAAO,eACPC,QAAQ,UAEV,kBAAC,GAAD,CACE7R,MAAM,OACNC,OAAO,OACP2R,OAAO,eACPnL,WAAW,eAEX,kBAAC,GAAD,CACEzG,MAAM,OACNC,OAAO,UACP2R,OAAO,iBACPC,QAAQ,UAEV,kBAAC,GAAD,CACE7R,MAAM,OACNC,OAAO,UACP2R,OAAO,iBACPC,QAAQ,UAEV,kBAAC,GAAD,CACE7R,MAAM,OACNC,OAAO,UACP2R,OAAO,iBACPC,QAAQ,UAEV,kBAAC,GAAD,CACE7R,MAAM,QACNC,OAAO,UACP2R,OAAO,eACPC,QAAQ,UAEV,kBAAC,GAAD,CACE7R,MAAM,SACNC,OAAO,WACP2R,OAAO,iBACPC,QAAQ,aCpFH2C,GAZY,WAAO,IAAD,EACNnb,mBAAS,CAAC,EAAG,EAAG,IAAlCob,EADwB,qBAG/B,OACE,kBAAC,GAAD,CAAgBzU,MAAM,OAAOC,OAAO,OAAOwG,WAAW,eACnDgO,EAAe5I,KAAI,SAACvY,EAAWoc,GAAZ,OAClB,kBAAC,GAAD,CAAwBrZ,IAAG,UAAKqZ,EAAL,qBCwFpBgF,GAnFS,SAAC,GAAuC,IAArCvH,EAAoC,EAApCA,QAAoC,EACxC9T,mBAAS,CAAC,EAAG,EAAG,EAAG,EAAG,IAApCsb,EADsD,qBAG7D,OACE,kBAAC,GAAD,CAAmBxH,QAASA,GAC1B,kBAAC,GAAD,CAAgBnN,MAAM,OAAOC,OAAO,OAAOwG,WAAW,eACpD,oCACE,kBAAC,GAAD,CACEzG,MAAM,OACNC,OAAO,OACP4R,QAAQ,OACRQ,aACElF,EAAU,YAAc,mCAE1BiF,KAAM,CACJG,IAAK,YAEP9L,WAAW,cACXsM,SAAS,UAET,oCACE,kBAAC,GAAD,CACE/S,MAAM,OACNC,OAAO,OACPwG,WAAW,eAEX,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAgB0G,QAASA,IACzB,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,CACEnN,MAAM,OACNC,OAAO,OACPkH,QAAQ,WACRyK,OAAO,WACPC,QAAQ,OACRO,KAAM,CACJK,KAAM,UAERhM,WAAW,cACXsM,SAAS,UAER4B,EAAW9I,KAAI,SAACnM,EAAOgQ,GAAR,OACd,kBAAC,GAAD,CACErZ,IAAG,UAAKqZ,EAAL,UACH1P,MAAM,QACNC,OAAO,QACP4R,QAAQ,QACRD,OAAO,aACPQ,KAAM,CACJM,UAAW,oBAKjBvF,GAAW,kBAAC,GAAD,OACXA,GAAW,kBAAC,GAAD,QAEbA,GACA,kBAAC,GAAD,CACEnN,MAAM,OACNC,OAAO,OACPkH,QAAQ,oBACRiL,KAAM,CACJM,UAAW,KAEbjM,WAAW,cACX7P,OAAQ,CACNsb,KAAM,sBAGR,kBAAC,GAAD,MACA,kBAAC,GAAD,a,4kICpFX,IAAM0C,GAAc5a,KAAOC,IAAV,MACX4a,GAAkB7a,KAAOC,IAAV,KAOMmL,IAIrB0P,GAAmB9a,KAAOC,IAAV,MAOhB8a,GAAoB/a,KAAOC,IAAV,MAGT,gBAAGqY,EAAH,EAAGA,QAAH,OAAiBA,GAAoB,cACtD,gBAAGV,EAAH,EAAGA,OAAH,OAAgBA,GAAM,kBAAeA,EAAf,QAcboD,IAZuBhb,aAAO0D,GAAP1D,CAAH,MAGtB,qBAAGR,MAAkB7C,OAAO4B,YAK1B,qBAAGiB,MAAkB7C,OAAOwB,eAIL6B,KAAOC,IAAV,OAMpBgb,GAAuBjb,KAAOoE,EAAV,MAGtB,qBAAG5E,MAAkB7C,OAAO2B,aAO1B,qBAAGkB,MAAkB7C,OAAOwB,eAG5B+c,GAA2Blb,KAAOC,IAAV,KAMHmL,GAIAA,IAMrB+P,GAAwBnb,KAAOC,IAAV,KAMAmL,GAKAA,IAOrBgQ,GAA6Bpb,KAAOC,IAAV,MACnC,qBAAGob,aAA6B,2HAIAjQ,GAJA,wDAUvBkQ,GAAmBtb,aAAO0D,GAAP1D,CAAH,MAGlB,qBAAGR,MAAkB7C,OAAO2B,YAEL8M,IASrBmQ,GAA0Bvb,KAAOC,IAAV,MAKvBub,GAA+Bxb,KAAOkF,IAAV,MAG5BuW,GAAwBzb,aAAO0D,GAAP1D,CAAH,MACjB,qBAAGR,MAAkBf,MAAMjC,QAIjC,qBAAGgD,MAAkB7C,OAAO4B,YACxB,gBAAG0a,EAAH,EAAGA,SAAH,OAAkBA,GAAsB,UAC3C,gBAAGrB,EAAH,EAAGA,OAAH,OAAgBA,GAAkB,OAGjC8D,GAAmB1b,aAAOmI,KAAPnI,CAAH,MACZ,qBAAGR,MAAkBf,MAAMjC,QAIjC,qBAAGgD,MAAkB7C,OAAO4B,YAInC,gBAAGqZ,EAAH,EAAGA,OAAH,OAAgBA,GAAM,kBAAeA,EAAf,QAEb,qBAAGpY,MAAkB7C,OAAOwB,eAG5Bwd,GAAqB3b,KAAO4b,KAAV,MACd,qBAAGpc,MAAkBf,MAAMjC,QAIjC,qBAAGgD,MAAkB7C,OAAO4B,YAGnC,gBAAGqZ,EAAH,EAAGA,OAAH,OAAgBA,GAAM,kBAAeA,EAAf,QAIbiE,GAAqB7b,KAAOoE,EAAV,MAKd,qBAAG5E,MAAkBf,MAAMjC,QACjC,qBAAGgD,MAAkB7C,OAAOwB,eAK1B,qBAAGqB,MAAkB7C,OAAOyB,iBAO5B0d,GAAwB9b,KAAOC,IAAV,MAIZ,qBAAGT,MAAkB7C,OAAO2B,aAGrCyd,GAAoB/b,KAAOC,IAAV,M,2xDCzLvB,IAAM+b,GAA6Bhc,KAAOC,IAAV,MAI1Bgc,GAAyBjc,KAAOC,IAAV,MACtBic,GAAkBlc,KAAOkF,IAAV,MAKfiX,GAAuBnc,aAAOiL,GAAPjL,CAAH,MAKlB,qBAAGR,MAAkB7C,OAAOwB,eAI9Bie,GAAoBpc,aAAO0D,GAAP1D,CAAH,MAEnB,qBAAGR,MAAkB7C,OAAO2B,aAG1B+d,GAAyBrc,KAAOC,IAAV,MAMtBqc,GAAwBtc,aAAO0D,GAAP1D,CAAH,MACjB,qBAAGR,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO4B,YACnC,gBAAGge,EAAH,EAAGA,WAAY/c,EAAf,EAAeA,MAAf,OAA2B+c,GAAU,uCACZ/c,EAAM7C,OAAO4B,SADD,wCAW5Bie,GAAuBxc,KAAOC,IAAV,MAGd,qBAAGT,MAAkBf,MAAMhC,QAKjCggB,GAAoCzc,aAAO0D,GAAP1D,CAAH,MAC7B,qBAAGR,MAAkBf,MAAMhC,QAGjC,qBAAG+C,MAAkB7C,OAAO2B,aAG1Boe,GAA+B1c,aAAO0D,GAAP1D,CAAH,MACxB,qBAAGR,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO2B,aAG1Bqe,GAAmC3c,aAAO0D,GAAP1D,CAAH,MAC5B,qBAAGR,MAAkBf,MAAMhC,QAGjC,qBAAG+C,MAAkB7C,OAAOwB,eAI1B,qBAAGqB,MAAkB7C,OAAO2B,aAErC,gBAAG4P,EAAH,EAAGA,SAAU1O,EAAb,EAAaA,MAAb,OAAwB0O,GAAQ,uBACvB1O,EAAM7C,OAAO6B,cADU,oEAIrBgB,EAAM7C,OAAO6B,cAJQ,mBCjC9Boe,GAAkC,CACtCrT,SAAU,KACVF,QAAS,KACTS,UAAW,KACXE,QAAS,KACTP,SAAU,MAiMGoT,GA9LK,WAAO,IAAD,EAChBC,EAAkBC,eAAlBD,cACF3c,EAAWC,cACX4c,EAAYC,iBAAuB,MAGnCC,GADU9J,aAAc,sCACZA,aAAc,uCAC1B+J,EAAY/J,aAAc,sCAPR,EASsB/T,mBAAwB,IAT9C,oBASjB+d,EATiB,KASAC,EATA,KAWhBviB,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBAXgB,EAemCuF,aAGzD0B,GAAmB,CACnBT,UAAW,CACT+P,GAAIyL,EACJnK,SACE7X,GAAmBA,EAAgBiG,OAAS,EAA5C,UACIjG,EAAgBhC,MAAK,SAACC,GAAD,OAAUA,EAAK2Y,YAAcoL,YADtD,aACI,EACIhL,WACJ,MAVIwL,EAfU,EAehBhd,KAAuBE,EAfP,EAeOA,QAfP,EAegB3C,MAfhB,EAeuBkT,QAiC/C,OAnBAlQ,qBAAU,WAENyc,GACAA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQsK,OAExBH,EAAS1F,GAAa,SACtB4iB,EAAmB,CACjB7X,MAAO8X,EAAgBtnB,QAAQsK,KAAKjL,KACpCoQ,YAAa6X,EAAgBtnB,QAAQsK,KAAKmF,YAC1CC,MACE4X,EAAgBtnB,QAAQsK,KAAK6U,OAAOpU,OAAS,EACzCuc,EAAgBtnB,QAAQsK,KAAK6U,OAAO,GAAGxP,IACvC,GACNA,IAAKxE,OAAOC,SAASC,UAGxB,CAACic,EAAiBnd,IAGnB,kBAAC,GAAD,CACEK,QAASA,EACTuS,eAAgB,kBAAC,GAAD,CAAiBI,QAAS+J,IAC1ClK,MAAOoK,EACPnK,UACEqK,GACAA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQ6H,MAE1B6G,SACE4Y,GACAA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQ2P,IAE1BqL,KAAK,eACLC,GAAI6L,GAEJ,kBAAClC,GAAD,KACE,kBAAC/O,GAAD,KACE,kBAACgP,GAAD,MACIsC,GACAG,GACAA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQsK,MACxBgd,EAAgBtnB,QAAQsK,KAAKxG,cAC7BwjB,EAAgBtnB,QAAQsK,KAAKxG,aAAaub,gBAC1CiI,EAAgBtnB,QAAQsK,KAAKxG,aAAaub,eAAetU,OACvD,GACA,kBAAC+Z,GAAD,KACE,kBAACE,GAAD,KACGsC,EAAgBtnB,QAAQsK,KAAKxG,aAAaub,eAAexD,KACxD,SAACiD,GAAD,OACE,kBAACmG,GAAD,CACE5e,IAAKyY,EAAOzD,GACZhQ,KAAMyT,EAAOnP,IACb+N,OAAO,UAENkJ,GAAQ9H,EAAO9D,KAAKuM,qBAOlCD,GACCA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQsK,MACxBgd,EAAgBtnB,QAAQsK,KAAKxG,cAC3B,kBAACkiB,GAAD,KACE,kBAACQ,GAAD,CAAsBgB,IAAKR,GACzB,kBAAC5B,GAAD,CAA4BC,aAAW,GACrC,kBAACY,GAAD,KACE,kBAACX,GAAD,CAAkB1W,MAAO,CAAEgT,OAAQ,aAChC0F,EAAgBtnB,QAAQsK,KAAKjL,MAE/BioB,EAAgBtnB,QAAQsK,KAAKmd,UAC5B,kBAACrB,GAAD,KACGkB,EAAgBtnB,QAAQsK,KAAKmd,SAASpoB,MAI1CioB,GACCA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQsK,MACxBgd,EAAgBtnB,QAAQsK,KAAK2W,MAAMlW,OAAS,GAC5Cuc,EAAgBtnB,QAAQsK,KAAK2W,MAAMyG,QACjC,SAACxG,GAAD,QAAYA,EAAKyG,YACjB5c,OAAS,GACT,kBAACsb,GAAD,KACGiB,EAAgBtnB,QAAQsK,KAAK2W,MAAMpF,KAClC,SAACqF,EAAMxB,GAAP,OACE,kBAAC4G,GAAD,CACEjgB,IAAG,UAAK6a,EAAK7F,GAAV,YAAgBqE,GACnB6G,WAAsB,IAAV7G,GAEXwB,EAAK7hB,KACN,8BAAO6hB,EAAKyG,eAMxB,kBAAC7B,GAAD,CAAuBlX,MAAO,CAAEqU,SAAU,WAC1C,6BACE,kBAACwD,GAAD,4CAcA,kBAACE,GAAD,CAAkCzO,UAAU,GAA5C,gCAKJ,kBAACgO,GAAD,CACE9W,IACEkY,EAAgBtnB,QAAQsK,KAAKxG,aAAaK,KAAKwL,IAC3C2X,EAAgBtnB,QAAQsK,KAAKxG,aAAaK,KAAKwL,IAC/C6R,QAIV,kBAACsE,GAAD,CAAuBlX,MAAO,CAAEqU,SAAU,UACzCqE,GACCA,EAAgBtnB,SAChBsnB,EAAgBtnB,QAAQsK,MACxBgd,EAAgBtnB,QAAQsK,KAAK2W,MAAMlW,OAAS,GAC1C,kBAAC,GAAD,CACEkW,MAAOqG,EAAgBtnB,QAAQsK,KAAK2W,SAK5C,kBAAC8D,GAAD,CAAmBzC,QAAQ,gBAAgBV,OAAO,YAChD,kBAAC,GAAD,CACE5G,KAAK,UACLhb,QAASsnB,EAAgBtnB,QAAQsK,OAEnC,kBAAC,KAAD,CACEsd,QAAS,kBAAM,kBAACzB,GAAD,CAAsB3T,SAAS,WAC9C1E,QAAS,kBAAMkZ,EAAUa,kB,4zNCzOxC,IAAMC,GAAWne,KAAH,MAmQRoe,GAAgBpe,KAAH,M,4PCzOpBqe,GAAwC,CAC5CzO,GAAI0O,GACJ/O,GAAIgP,GACJ/O,GAAIgP,GACJlP,GAAImP,GACJhP,G,OACAC,GAAIgP,GACJ/O,GAAIgP,GACJ5O,GAAI6O,GACJ5O,GAAI6O,GACJ3O,GAAI4O,GACJvO,GAAIwO,GACJ1O,GAAI2O,GACJ1O,GAAI2O,GACJxO,GAAIyO,GACJjP,GAAIkP,GACJ3O,GAAI4O,GACJlO,GAAImO,GACJ1O,GAAI2O,GACJ5O,GAAI6O,GACJ3O,GAAI4O,GACJ3O,GAAI4O,GACJ3O,GAAI4O,GACJ3O,G,OACAZ,G,OACAC,G,OACAP,G,QAGI8P,GAAiB,SAACvmB,EAAcsD,GACpC,IAAMxB,EAAemjB,GAAuBjlB,GAC5C,OAAK8B,EAIEA,EAAawB,IAAQA,GAH1BkjB,QAAQC,KAAR,mBAAyBzmB,EAAzB,yCACOilB,GAAuBzO,GAAGlT,IAAQA,I,qrPCvD7C,IAAMojB,GAAwBtd,aAAH,MAEhB,qBAAG3C,MAAkB7C,OAAOa,SAIjCkiB,GAAQC,aAAH,MAiBLC,GAAWD,aAAH,MAcDE,GAAiC7f,KAAOC,IAAV,MAG9B6f,GAAuC9f,KAAOC,IAAV,KAQ7CuL,GAR6C,OAapCuU,GAAkC/f,aAAO0D,GAAP1D,CAAH,KACxCyf,GAKAjU,GANwC,MAUb,qBAAGhM,MAAkB7C,OAAOa,UAG9CwiB,GAAkChgB,KAAOkF,IAAV,MAK/B+a,GAAkCjgB,KAAOC,IAAV,KAIxCuL,GAJwC,OAY/B0U,GAAuClgB,KAAOC,IAAV,MAMpCkgB,GAAsCngB,aAAO0D,GAAP1D,CAAH,KAC5Cyf,IAEO,qBAAGjgB,MAAkB7C,OAAOM,iBAI1BmjB,GAAwCpgB,aAAO0D,GAAP1D,CAAH,KAC9Cyf,IAOSY,GAAwCrgB,KAAOC,IAAV,KAM9CwL,GAN8C,MAU9CD,GAV8C,OAerC8U,GAAuCtgB,KAAOC,IAAV,MAG7C,gBAAG6X,EAAH,EAAGA,SAAH,OACAA,GAAQ,2BAEKA,EAFL,YAKCyI,GAAmCvgB,KAAOC,IAAV,MAMzC,qBAAGugB,UACK,qCAKCC,GAAsCzgB,KAAOC,IAAV,MAG5C,qBAAGugB,UACK,qCAKCE,GAAoC1gB,aAAO0D,GAAP1D,CAAH,KAC1Cyf,IAGO,qBAAGjgB,MAAkB7C,OAAOM,iBAK1B0jB,GAAoC3gB,aAAO0D,GAAP1D,CAAH,KAC1Cyf,IAGO,qBAAGjgB,MAAkB7C,OAAOM,gBAInCoO,GAR0C,OAajCuV,GAAmC5gB,aAAO0D,GAAP1D,CAAH,KAGzCyf,IAIA,qBAAGe,UACK,oCAKCK,GAAwC7gB,KAAOC,IAAV,MAGrB,qBAAGT,MAAkB7C,OAAOa,SAE5CsjB,GAAiC9gB,KAAOC,IAAV,MAG9B8gB,GAAoC/gB,KAAOC,IAAV,MACnC,qBAAGT,MAAkB7C,OAAOI,uBAM1BikB,GAAwChhB,KAAOC,IAAV,MAMrCghB,GAAuCjhB,KAAOkF,IAAV,KAGlC0a,IAOFsB,GAAyClhB,KAAOkF,IAAV,KAGpCwa,IAQFyB,GAA6BnhB,KAAOohB,GAAV,KAMnC3V,GANmC,MASnCJ,GATmC,OAc1BgW,GAAiCrhB,KAAOshB,GAAV,KACvC7B,IAGO,qBAAGjgB,MAAkB7C,OAAOM,gBAInCoO,GARuC,OAc9BkW,GAA6BvhB,KAAOC,IAAV,KASnCoL,GATmC,OAiB1BmW,GAAiCxhB,KAAOyhB,EAAV,KACvChC,GAKApU,GANuC,OAW9BqW,GAAiC1hB,KAAOC,IAAV,KACvCwf,GAIApU,GALuC,OAU9BsW,GAAiC3hB,KAAOC,IAAV,MAM3B,qBAAGT,MAAkB7C,OAAOO,QAIxCmO,GAVuC,OAe9BuW,GAA8B5hB,KAAOiO,OAAV,MAGlB,qBAAGzO,MAAkB7C,OAAOa,SAEvC,qBAAGgC,MAAkB7C,OAAOa,SAOf,qBAAGgC,MAAkB7C,OAAOa,SACvC,qBAAGgC,MAAkB7C,OAAOO,SC5O1B2kB,GAjEqB,SAAC,GAI9B,IAAD,IAHJC,gBAGI,MAHO,KAGP,EACI3Q,EAAMD,aAAe,mBAArBC,EAEA9W,EAAesK,aAAY,SAACnP,GAAD,OAAqBA,EAAM6E,cAAtDA,WAHJ,EAIwBsK,aAC1B,SAACnP,GAAD,OAAqBA,EAAMwG,yBADrBzF,EAJJ,EAIIA,MAAOmD,EAJX,EAIWA,SAIf,OACE,kBAAComB,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,CAAiC5a,IAAK2c,OACzB,MAAZD,EACGxC,GAAewC,EAAU,yBACzB3Q,EAAE,iCAAkC,IACvCzX,EAAW,wBAAH,OAA6BnD,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAOlB,MAE/C,kBAAC4qB,GAAD,KACE,kBAACC,GAAD,KACE,kBAACE,GAAD,KACG/lB,EAAWiG,MACZjG,EAAWiG,KAAK0hB,kBAChB3nB,EAAWiG,KAAK0hB,iBAAiBC,WAC/B,kBAAC,KAAD,CACEC,IAAK7nB,EAAWiG,KAAK0hB,iBAAiBC,WACtCE,SAAU,IAGZ,GAGJ,kBAAChC,GAAD,KACe,MAAZ2B,EACGxC,GAAewC,EAAU,UACzB3Q,EAAE,oBAGV,kBAAC+O,GAAD,KACE,kBAACE,GAAD,KACG/lB,EAAWiG,MACZjG,EAAWiG,KAAK0hB,kBAChB3nB,EAAWiG,KAAK0hB,iBAAiBI,kBAC/B,kBAAC,KAAD,CACEF,IAAK7nB,EAAWiG,KAAK0hB,iBAAiBI,kBACtCD,SAAU,IAGZ,GAGJ,kBAAChC,GAAD,KACe,MAAZ2B,EACGxC,GAAewC,EAAU,gBACzB3Q,EAAE,6B,gvDC/EX,IAAMkR,GAA2BriB,KAAOC,IAAV,MAQ1B,qBAAGT,MAAkB7C,OAAOa,SAI1B8kB,GAAsBtiB,KAAO4b,KAAV,KAC5BvQ,GAD4B,OAOnBkX,GAA2BviB,KAAOC,IAAV,MAQxBuiB,GAAgCxiB,KAAO4b,KAAV,KAItCnQ,GAJsC,MAOtCD,GAPsC,MAUtCH,GAVsC,OAe7BoX,GAAkCziB,KAAOC,IAAV,MAkBxC,qBAAGyiB,WACM,uEC7CEC,GAVc,SAAC,GAA0C,IAClEC,EAAS,CAAEC,gBADsD,EAAvCngB,OAG9B,OACE,kBAAC8f,GAAD,CACE5d,MAAOge,KCOEE,GAXgB,SAAC,GAGI,IAFlCC,EAEiC,EAFjCA,MACAL,EACiC,EADjCA,UAEA,OACE,kBAACD,GAAD,CAAiCC,UAAWA,GACzCK,IC0EQC,GA1ES,SAAC,GAAqC,IAAnCD,EAAkC,EAAlCA,MAAkC,EACf1jB,oBAAkB,GADH,oBACpD4jB,EADoD,KACpCC,EADoC,KAGvDC,EAAalG,iBAAuB,MAExCpc,qBAAU,WACJsiB,EAAWtF,UACbsF,EAAWtF,QAAQuF,iBAAiB,cAAc,WAChDF,GAAkB,MAEpBC,EAAWtF,QAAQuF,iBAAiB,cAAc,WAChDF,GAAkB,SAGrB,IAEH,IAAM/mB,EAAc,CAClBknB,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACH1f,EAAG,UACH2f,EAAG,UACHC,EAAG,UACHnd,EAAG,UACHsP,EAAG,UACH8N,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHjD,EAAG,UACHkD,EAAG,UACHC,EAAG,UACHC,EAAG,UACH1T,EAAG,UACH2T,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,UACHC,EAAG,WAGDC,EAAkBrC,EAAMsC,UAAU,EAAGtC,EAAMhiB,OAAS,GAAGukB,MAAM,IAEjE,OACE,kBAACjD,GAAD,KACE,kBAACC,GAAD,KAAsBS,EAAMsC,UAAU,EAAG,IACzC,kBAAC9C,GAAD,CAA0B/E,IAAK2F,GAC7B,kBAAC,GAAD,CAAwBJ,MAAOA,EAAOL,UAAWO,IAChDmC,EAAgBrkB,OAAS,GACxBqkB,EAAgBvT,KAAI,SAACkR,EAAOrN,GAC1B,OAAO,kBAAC,GAAD,CAAsBhT,MAAOvG,EAAO4mB,GAAQ1mB,IAAKqZ,QAG9D,kBAAC4M,GAAD,KACGS,EAAMsC,UAAUtC,EAAMhiB,OAAS,EAAGgiB,EAAMhiB,WCwKlCwkB,GAnNsB,SAAC,GAGI,IAFxCC,EAEuC,EAFvCA,eAGQrU,GAD+B,EADvCH,KAEcE,aAAe,mBAArBC,GAIA1X,GAFSgsB,eAEG9gB,aAClB,SAACnP,GAAD,OAAqBA,EAAMwG,yBADrBvC,SAGAY,EAAesK,aAAY,SAACnP,GAAD,OAAqBA,EAAM6E,cAAtDA,WAR+B,GASnBsK,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,WAAnDA,QACiB2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMsE,gBAAxDA,aAEoBuF,oBAAkB,IAZP,8BAmBvC,OACE,kBAACghB,GAAD,KACE,kBAACC,GAAD,CAAsCxI,SAAS,WAC7C,kBAAC2I,GAAD,KACE,kBAACC,GAAD,KACGvP,EAAE,qBAEL,kBAACwP,GAAD,KACGxP,EAAE,iBAEL,kBAACyP,GAAD,kBAIF,kBAACC,GAAD,MACA,kBAACN,GAAD,KACE,kBAACE,GAAD,KACE,kBAACC,GAAD,KACGvP,EAAE,qBAEL,kBAACwP,GAAD,KACGxP,EAAE,iBAEL,kBAACyP,GAAD,CAAkCJ,UAAQ,GACvCkF,KAAQjsB,EAAQksB,WAAWC,OAAO,cAErC,kBAACjF,GAAD,KACGxP,EAAE,iBAEL,kBAACyP,GAAD,KACG8E,KAAQjsB,EAAQksB,WAAWC,OAAO,gBAK3C,kBAACtF,GAAD,CAAsCxI,SAAS,WAC5Cre,GACC,kBAACgnB,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACGxP,EAAE,wBAEL,kBAACyP,GAAD,KACGnnB,EAAQ4X,KAIdmU,GAAkBA,EAAeK,eAChC,kBAACpF,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACGxP,EAAE,kBAEL,kBAACyP,GAAD,KACG4E,EAAeK,gBAKrBpsB,GACC,kBAACgnB,GAAD,KACE,kBAACE,GAAD,KACGxP,EAAE,sBAEL,kBAACyP,GAAD,KACGnnB,EAAQ4X,KAKf,kBAACwP,GAAD,OAEF,kBAACP,GAAD,CAAsCxI,SAAS,aAC5C0N,GACCA,EAAeM,aACfN,EAAeM,YAAYC,QAC3BP,EAAeM,YAAYxlB,KAAKS,OAAS,GACzCykB,EAAeM,YAAYxlB,KAAK,GAAGylB,QACjC,oCACE,kBAACrF,GAAD,KACGvP,EAAE,2BAEL,kBAACgQ,GAAD,KACE,kBAACE,GAAD,KACGlQ,EAAE,mBAEL,kBAACkQ,GAAD,KACGlQ,EAAE,iBAEL,kBAACkQ,GAAD,KACGlQ,EAAE,qBAGP,kBAACoQ,GAAD,KACE,kBAACC,GAAD,KACGgE,EAAeQ,SAElB,kBAAC,GAAD,CACEjD,MAAOyC,EAAeM,YAAYC,OAAOE,WAE3C,kBAACvE,GAAD,KACGgE,KACCF,EAAeM,YAAYxlB,KAAK,GAAGylB,OAAOG,WAC1CN,OAAO,YACT,kBAACjE,GAAD,KACG+D,KACCF,EAAeM,YAAYxlB,KAAK,GAAGylB,OAAOG,WAC1CN,OAAO,aAIf,kBAAC/E,GAAD,OAIN,kBAACH,GAAD,KACGvP,EAAE,0BAEL,kBAACgQ,GAAD,KACE,kBAACE,GAAD,KACGlQ,EAAE,mBAEL,kBAACkQ,GAAD,KACGlQ,EAAE,iBAEL,kBAACkQ,GAAD,KACGlQ,EAAE,qBAGN9W,GACDA,EAAWiG,MACXjG,EAAWiG,KAAK0hB,kBAChB3nB,EAAWiG,KAAK0hB,iBAAiBmE,QACjC9rB,EAAWiG,KAAK0hB,iBAAiBmE,OAAOplB,OAAS,EAC/C,oCACG1G,EAAWiG,KAAK0hB,iBAAiBmE,OAAOtU,KACvC,WAAyC6D,GAAgB,IAAD,IAArDqQ,OAAUE,EAA2C,EAA3CA,SAAUpQ,EAAiC,EAAjCA,OACjBuQ,EADkD,EAAvB9lB,KACL,GAAGylB,OAAOG,UACpC,OACE,kBAAC3E,GAAD,CAA4BllB,IAAK4pB,GAC/B,kBAACzE,GAAD,KACG3L,GAEH,kBAAC,GAAD,CAAiBkN,MAAOkD,IACxB,kBAACvE,GAAD,KACGgE,KAAQU,GAAgBR,OAAO,YAChC,kBAACjE,GAAD,KACG+D,KAAQU,GAAgBR,OAAO,iBAS9C,kBAACpE,GAAD,KACGrQ,EAAE,8BAIT,kBAACmP,GAAD,CAAsCxI,SAAS,YAC7C,kBAACyI,GAAD,KACE,kBAACE,GAAD,KACE,kBAACC,GAAD,KACGvP,EAAE,qBAEL,kBAACwP,GAAD,KACGxP,EAAE,mBAEL,kBAACyP,GAAD,CAAkCJ,UAAQ,GAA1C,QAIF,kBAACC,GAAD,KACE,kBAACC,GAAD,KACGvP,EAAE,oBAEL,kBAACwP,GAAD,KACGxP,EAAE,yBAEL,kBAACyP,GAAD,CAAkCJ,UAAQ,GACvCrP,EAAE,uB,qBC9NFkV,GATsB,WACnC,OACE,kBAACrF,GAAD,KACE,kBAACC,GAAD,CAAsC7b,IAAKkhB,OAC3C,kBAACpF,GAAD,CAAwC9b,IAAKkhB,SC8DpCC,GAlDe,SAAC,GAAgD,IAA9CvV,EAA6C,EAA7CA,KAAMvU,EAAuC,EAAvCA,KAC7B0U,EAAMD,aAAe,mBAArBC,EAEFhR,EAAWC,cAH2D,EAKlDuE,aACxB,SAACnP,GAAD,OAAqBA,EAAMwG,yBADrB1F,EALoE,EAKpEA,OAAQC,EAL4D,EAK5DA,MAL4D,EASlC8J,aAASR,GAAyB,CAC1EyB,UAAW,CAAE+P,GAAI9a,GAASA,EAAM8a,MADpBmU,EAT8D,EASpEllB,KAAsBE,EAT8C,EAS9CA,QAIxBgmB,EAAmBlV,uBAAY,WACnCnR,EAASzJ,QACR,CAACyJ,IAEJ,OACE,kBAACuN,GAAD,CACEpX,OAAQA,EACRqS,MAAO6d,EACPxb,KAAK,MACLkC,UAAU,QACVzQ,KAAMA,GAEN,kBAACgR,GAAD,KACE,kBAACoS,GAAD,KACGrf,EACC,kBAAC,GAAD,MAEA,oCACE,kBAAC,GAAD,MACCglB,GACC,kBAACiB,GAAD,CACEjB,eAAgBA,EAAekB,eAC/B1V,KAAMA,IAIV,kBAAC4Q,GAAD,CAA6B/T,QAAS2Y,GACnCrV,EAAE,sBCfbyL,GAAkC,CACtCrT,SAAU,KACVF,QAAS,KACTS,UAAW,KACXE,QAAS,KACTP,SAAU,MAwNGoT,GArNK,WAAO,IACjBC,EAAkBC,eAAlBD,cACF3c,EAAWC,cACX4c,EAAYC,iBAAuB,MAGnCC,GADU9J,aAAc,sCACZA,aAAc,uCAC1B+J,EAAY/J,aAAc,sCAPR,EASsB/T,mBAAwB,IAT9C,oBASjB+d,EATiB,KASAC,EATA,KAchBhjB,GAHoBsK,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBAGe6J,aAAY,SAACnP,GAAD,OAAqBA,EAAM6E,cAAtDA,YAdgB,EAgBmCgG,aAGzD0d,GAAe,CACfzc,UAAW,CACT+P,GAAIyL,KALMQ,EAhBU,EAgBhBhd,KAAuBE,EAhBP,EAgBOA,QASzB/G,GAzBkB,EAgBgBoE,MAhBhB,EAgBuBkT,QAS/BuM,GAAmBA,EAAgBqJ,WAAWrmB,MACxDsmB,EAAYtJ,GAAmBA,EAAgBqJ,WAC/CE,EACJptB,GACAA,EAAQwd,MAAMlW,OAAS,GACvBtH,EAAQwd,MACLyG,QACC,SAACxG,GAAD,OACEA,EAAK7hB,KAAKkoB,cAAcjhB,SAAS,QACjC4a,EAAK7hB,KAAKkoB,cAAcjhB,SAAS,UAEpCuV,KAAI,SAACqF,GACJ,IAIM4P,GAHF5P,EAAKC,aAAepiB,KAAKC,MAAMkiB,EAAKC,aAAapW,OAAS,EACxDhM,KAAKC,MAAMkiB,EAAKC,aAChB,IAC2Dre,MAC/D,SAACwe,GAAD,MACuB,gBAArBA,EAAKD,aACgB,kBAArBC,EAAKD,eAGT,OAAMyP,EACE,GAAN,OAAUA,EAAmBzxB,KAAK0xB,QAAQ,YAAa,IAAvD,YAA8DC,KAC5DF,EAAmB9vB,OACnB4uB,OAAO,cAEJ1O,EAAK7hB,QAGlBwL,qBAAU,WACJpH,GAAWA,EAAQzD,UACrBmK,EAAS1F,GAAa,SACtB4iB,EAAmB,CACjB7X,MAAO/L,EAAQzD,QAAQX,KACvBoQ,YAAahM,EAAQzD,QAAQyP,YAC7BC,MACEjM,EAAQzD,QAAQmf,OAAOpU,OAAS,EAC5BtH,EAAQzD,QAAQmf,OAAO,GAAGxP,IAC1B,GACNA,IAAKxE,OAAOC,SAASC,UAGxB,CAAC5H,EAAS0G,IAEb,IAAM8mB,EAAgC3V,uBAAY,WAChDiO,QAAQ2H,IAAI,QACRztB,GACF0G,EACEgnB,GAA0B,CACxBlxB,MAAOwD,EAAQ4X,GACf5X,QAASA,OAId,CAAC0G,EAAU1G,IAEd,OACE,kBAAC,GAAD,CACE+G,QAASA,EACTuS,eAAgB,kBAAC,GAAD,CAAiBI,QAAS+J,IAC1ClK,MAAOoK,EACPnK,UAAW2T,GAAaA,EAAU/oB,MAClC6G,SAAUkiB,GAAaA,EAAUjhB,IACjCqL,KAAK,eACLC,GAAI6L,GAEJ,kBAAClC,GAAD,KACE,kBAAC/O,GAAD,KACE,kBAACgP,GAAD,MACIsC,GACA1jB,GACAA,EAAQzD,SACRyD,EAAQzD,QAAQ8D,cAChBL,EAAQzD,QAAQ8D,aAAaub,gBAC7B5b,EAAQzD,QAAQ8D,aAAaub,eAAetU,OAAS,GACnD,kBAAC+Z,GAAD,KACE,kBAACE,GAAD,KACGvhB,EAAQzD,QAAQ8D,aAAaub,eAAexD,KAC3C,SAACiD,GAAD,OACE,kBAACmG,GAAD,CACE5e,IAAKyY,EAAOzD,GACZhQ,KAAMyT,EAAOnP,IACb+N,OAAO,UAENkJ,GAAQ9H,EAAO9D,KAAKuM,qBAOlC9jB,GAAWA,EAAQzD,SAAWyD,EAAQzD,QAAQ8D,cAC7C,kBAACkiB,GAAD,KACE,kBAACQ,GAAD,CAAsBgB,IAAKR,GACzB,kBAAC5B,GAAD,CAA4BC,aAAW,GACrC,kBAACY,GAAD,KACE,kBAACX,GAAD,CAAkB1W,MAAO,CAAEgT,OAAQ,aAChCne,EAAQzD,QAAQX,MAElBoE,EAAQgkB,UACP,kBAACrB,GAAD,KACG3iB,EAAQgkB,SAASpoB,MAGtB,yBACEuP,MAAO,CACLiT,QAAS,OACTuP,WAAY,SACZ7O,IAAK,aAGP,kBAAC+D,GAAD,sCAC0B7iB,EAAQ4tB,aAEjCR,GAAkBA,EAAe9lB,OAAS,GACzC,kBAACsb,GAAD,KACGwK,EAAehV,KAAI,SAACqF,EAAMxB,GAAP,OAClB,kBAAC4G,GAAD,CACEjgB,IAAKqZ,EACL6G,YAAY,GAEXrF,QAMX,kBAAC4E,GAAD,CAAuBlX,MAAO,CAAEqU,SAAU,WAC1C,6BACGxf,GACC,kBAACgjB,GAAD,iCAC4B,IACzBhjB,EAAQgkB,SAAS6J,SAASjyB,MAI9BoE,GACC,kBAACijB,GAAD,KACGjjB,EAAQgkB,SAAShY,aAItB,kBAACkX,GAAD,CACEzO,WACI7T,EAAW2G,QAAU3G,EAAW2G,OAAOD,OAAS,EAEpD8M,QAAS,WACFxT,EAAW2G,QACdimB,MANN,gCAcJ,kBAAC/K,GAAD,CACE9W,IACE3L,EAAQgkB,SAAS6J,SAASntB,KAAKwL,IAC3BlM,EAAQgkB,SAAS6J,SAASntB,KAAKwL,IAC/B6R,QAIV,kBAACsE,GAAD,CAAuBlX,MAAO,CAAEqU,SAAU,UACzCxf,GAAWA,EAAQwd,MAAMlW,OAAS,GACjC,kBAAC,GAAD,CAAakW,MAAOxd,EAAQwd,SAIhC,kBAAC8D,GAAD,CAAmBzC,QAAQ,gBAAgBV,OAAO,YAChD,kBAAC,GAAD,CAAO5G,KAAK,UAAUhb,QAASyD,EAAQzD,UACvC,kBAAC,KAAD,CACE4nB,QAAS,kBAAM,kBAACzB,GAAD,CAAsB3T,SAAS,WAC9C1E,QAAS,kBAAMkZ,EAAUa,cAMnC,kBAAC0J,GAAD,CAA0BvW,KAAK,Y,uPCzQlC,IAAMwW,GAAU7nB,KAAH,MCwEL8nB,GA/DC,WAAO,IACbC,EAAY3K,eAAZ2K,QADY,EAGarnB,aAAyBmnB,GAAS,CACjElmB,UAAW,CACT+P,GAAIqW,KAFMC,EAHM,EAGZrnB,KAAaE,EAHD,EAGCA,QAMrB,OACEmnB,GACAA,EAAMC,QACND,EAAMC,OAAOtnB,MACc,SAA3BqnB,EAAMC,OAAOtnB,KAAK0Q,MACU,YAA5B2W,EAAMC,OAAOtnB,KAAKunB,MAGhB,kBAAC,KAAD,CACEC,GAAE,gBAAWH,EAAMC,OAAOtnB,KAAKynB,SAA7B,0BAAuDJ,EAAMC,OAAOtnB,KAAKwc,iBAK/E6K,GACAA,EAAMC,QACND,EAAMC,OAAOtnB,MACc,SAA3BqnB,EAAMC,OAAOtnB,KAAK0Q,MACU,QAA5B2W,EAAMC,OAAOtnB,KAAKunB,MAGhB,kBAAC,KAAD,CACEC,GAAE,uBAAkBH,EAAMC,OAAOtnB,KAAKynB,SAApC,0BAA8DJ,EAAMC,OAAOtnB,KAAKwc,iBAKtF6K,GACAA,EAAMC,QACND,EAAMC,OAAOtnB,MACc,YAA3BqnB,EAAMC,OAAOtnB,KAAK0Q,MACU,YAA5B2W,EAAMC,OAAOtnB,KAAKunB,MAEX,kBAAC,KAAD,CAAUC,GAAE,oBAAeH,EAAMC,OAAOtnB,KAAKynB,YAGpDJ,GACAA,EAAMC,QACND,EAAMC,OAAOtnB,MACc,YAA3BqnB,EAAMC,OAAOtnB,KAAK0Q,MACU,QAA5B2W,EAAMC,OAAOtnB,KAAKunB,MAEX,kBAAC,KAAD,CAAUC,GAAE,eAAUH,EAAMC,OAAOtnB,KAAKynB,YAE7CJ,GAASA,EAAMC,QAAiC,gBAAvBD,EAAMC,OAAO/pB,MACjC,kBAAC,GAAD,CAAU4G,aAAW,IAE1BkjB,GAASA,EAAMC,QAAiC,iBAAvBD,EAAMC,OAAO/pB,MACjC,kBAAC,GAAD,MAGF,oCAAG2C,EAAU,kBAAC,GAAD,MAAa,kBAAC,GAAD,Q,qBCrEpB,SAASwnB,KACtB,OAAO,IAAIC,gBAAgBxC,eAAcyC,Q,06DCApC,IAAMC,GAAyBnoB,KAAOC,IAAV,MAab,qBAAGT,MAAkB7C,OAAOQ,QAG9CqO,GAhB+B,MAqB7B,qBAAGpO,QACG,6BAOCgrB,GAAsBpoB,KAAOC,IAAV,MAKnBooB,GAAqBroB,KAAOC,IAAV,MAGlBqoB,GAAoBtoB,KAAOkF,IAAV,MAGjBqjB,GAAqBvoB,KAAOC,IAAV,MAMjB,qBAAGT,MAAkB7C,OAAOa,SAI7BgrB,GAAuBxoB,KAAOC,IAAV,MAMpBwoB,GAAoBzoB,KAAOoE,EAAV,MAKnB,qBAAG5E,MAAkB7C,OAAOa,SACnC,oBAAGoa,cAAH,MAAY,EAAZ,SAAoBA,GAAM,kBAAeA,MAGhC8Q,GAAsB1oB,KAAOC,IAAV,MAOnB0oB,GAAsB3oB,KAAOC,IAAV,KAK5BuL,GAL4B,OAUnBod,GAAuB5oB,KAAOoE,EAAV,MC1D3BykB,GAAmC,CACvC,CACExzB,KAAM,WACNsF,KAAM,6CAER,CACEtF,KAAM,YACNsF,KAAM,uCAER,CACEtF,KAAM,UACNsF,KAAM,4DAER,CACEtF,KAAM,WACNsF,KAAM,wCAER,CACEtF,KAAM,UACNsF,KAAM,iCAoDKmuB,GAhDO,SAAC,GAKI,IAJzB1rB,EAIwB,EAJxBA,OACA2rB,EAGwB,EAHxBA,WACA/X,EAEwB,EAFxBA,KACAC,EACwB,EADxBA,GAEQE,EAAMD,aAAe,UAArBC,EAER,OACE,kBAACgX,GAAD,CAAwB/qB,OAAQA,GAC9B,kBAACgrB,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,CAAmBljB,IAAKkhB,QAE1B,kBAAC,GAAD,CAAmB5T,OAAO,SAAS1B,KAAMA,EAAMC,GAAIA,IACnD,kBAACsX,GAAD,CAAoB1a,QAAS,kBAAMkb,MACjC,kBAAC,GAAD,CAAMvgB,SAAS,YAInB,kBAACggB,GAAD,KACE,kBAACC,GAAD,CAAmBpnB,KAAK,0BAA0BuW,OAAO,YACtDzG,EAAE,yBAEL,kBAACsX,GAAD,CAAmBpnB,KAAK,kCACrB8P,EAAE,wBAIP,kBAACuX,GAAD,KACE,kBAACC,GAAD,KACGE,GAAahX,KAAI,SAACmX,GAAD,OAChB,kBAACJ,GAAD,CAAsBvnB,KAAM2nB,EAAQruB,KAAM0B,IAAK2sB,EAAQruB,MACrD,kBAAC,GAAD,CAAM6N,SAAUwgB,EAAQ3zB,YAI9B,kBAACozB,GAAD,CAAmBpnB,KAAK,0BAA0BuW,OAAO,YAAzD,oBAGA,kBAAC6Q,GAAD,CAAmBpnB,KAAK,gCACrB8P,EAAE,qB,w0BCzFN,IAAM8X,GAAkBjpB,KAAOoE,EAAV,MAGN,qBAAG5E,MAAkB7C,OAAOQ,SAY1B,qBAAGqC,MAAkB7C,OAAOS,UAMvC,qBAAGoC,MAAkB7C,OAAOa,SAI5B0rB,GAAwBlpB,KAAOyhB,EAAV,MAEvB,qBAAGjiB,MAAkB7C,OAAOQ,SAE1BgsB,GAAuBnpB,KAAOC,IAAV,MAK7B,qBAAGmU,QACG,8LASJ6U,GATI,+FCkLKG,GA/LK,SAAC,GAMI,IALvBpzB,EAKsB,EALtBA,QACA8D,EAIsB,EAJtBA,aACA+T,EAGsB,EAHtBA,QACAuG,EAEsB,EAFtBA,OACApD,EACsB,EADtBA,KAEQG,EAAMD,aAAe,WAArBC,EAEFmD,EAAW3P,aACf,SAACnP,GAAD,OAAqBA,EAAMmF,KAAKA,KAAK4Z,kBAJjB,EAOQC,aAAaF,EAAU,CACnDG,gBAAiB,MARG,oBAOf4U,EAPe,KAOL3U,EAPK,KAWhBC,EAAa,SAACC,EAA6B5D,GAC/C,IAAM6D,EAAUD,EAAM9b,MAAK,SAACgc,GAAD,OAAYA,EAAO9D,OAASA,KAEvD,SAAO6D,IAAWA,EAAQE,SAASF,EAAQE,QAGvCC,EAAeC,mBAAQ,WAC3B,IAAMqU,EAAqBpU,mBAChB,YAATlE,EACIhb,GAAWA,EAAQmf,QAAUnf,EAAQmf,OAAOpU,OAAS,EAClD/K,EAAQmf,OAAO,GAAGxP,IAClB,iFACH7L,EACAA,EAAaK,KAAKwL,IAClB,kFAEAyP,EAAUpf,EACZA,GAAWA,EAAQ8D,aAAaub,eAChCvb,EACAA,EAAaub,eACb,KAEEC,EACJtf,GACAA,EAAQuf,qBACRvf,EAAQuf,oBAAoBxU,OAAS,EACjC/K,EAAQuf,oBAAoBC,MAAM,EAAG,GACrC1b,GACAA,EAAa2b,aACb3b,EAAa2b,YAAY1U,OAAS,EAClCjH,EAAa2b,YAAYD,MAAM,EAAG,GAClC,GAzB2B,EA0BNF,EAAKzD,KAAI,SAACtb,EAAYmf,GAC/C,IAAIC,EAAYpf,EAAMlB,KAAOkB,EAAMlB,KAAOkB,EAAMqf,KAAKvgB,KACjDwgB,EAASH,EAAQ,EACrB,OAAOJ,EAAKvU,SAAW8U,EAASF,EAAzB,UAAwCA,EAAxC,SA7BwB,oBA0B1BG,EA1B0B,KA0BpBC,EA1BoB,KA0BdC,EA1Bc,KA+B3BC,EACJX,EAAKvU,OAAS,EAAd,UAAqB+U,GAArB,OAA4BC,GAAc,IAA1C,OAA+CC,GAAc,GAA7D,OAAuE,GAEzE,MAAO,CACL,CACE3gB,KAAM,OACNwY,QAAS,WACP6G,IACIN,GAAUvG,GAASA,KAEzBxM,KAAM,SAAC6U,GAAD,MAAqB,KAC3BA,QAAS,MAEX,CACE7gB,KAAM,WACNgM,KAAM,SAAC6U,GAAD,oCAA4CA,GAA5C,OAAsD5B,IAC5DzG,QAASA,EACTqI,QAAShB,mBAAmB,GAAD,OACtBe,EAAQ,WAAOA,EAAP,MAAsB,IADR,OAEvBjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAFrC,gDAM7B,CACEA,KAAM,WACNgM,KAAM,SAAC6U,GAAD,kDACiC5B,EADjC,iBACkD4B,IACxDrI,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,2DAMtB,CACEA,KAAM,UACNgM,KAAM,SAAC6U,GAAD,sDACqCA,EADrC,gBACoD5B,IAC1DzG,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,+DAIdsf,EAAWS,EAAiC,WAA5C,UACOT,EAAWS,EAAiC,WADnD,MAEI,QAIZ,CACE/f,KAAM,WACNgM,KAAM,SAAC6U,GAAD,6DAC4C5B,IAClDzG,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,2DAMtB,CACEA,KAAM,WACNgM,KAAM,SAAC6U,GAAD,oEACmD5B,IACzDzG,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,2DAMtB,CACEA,KAAM,YACNgM,KAAM,SAAC6U,GAAD,4DAC2ChB,mBAC7CZ,GAFE,kBAGOgV,EAHP,sBAG+BA,EAH/B,wBAGyDpT,IAC/DrI,QAASA,EACTqI,SACGlgB,GAAW8D,IACZob,mBAAmB,GAAD,OACbe,EAAQ,UAAMA,EAAN,KAAoB,IADf,OAEdjgB,EAAUA,EAAQX,KAAOyE,EAAeA,EAAazE,KAAO,GAF9C,8DAOvB,CAACW,EAAS8D,EAAcwa,EAAUzG,EAAS6G,EAAWN,EAAQpD,IAcjE,OACE,kBAACmY,GAAD,CAAsB/U,OAAQA,GAC3BY,EAAanD,KAAI,SAACtJ,GAAD,OAChB,kBAAC0gB,GAAD,CACE5sB,IAAKkM,EAAKlT,KACVwY,QAAS,SAACsI,GAjBM,IAACrB,IAkBCvM,EAAKlT,KAjB7B+gB,KAAQC,MAAM,CACZC,SAAUxc,EAAe,aAAe,iBACxCrE,OAAO,GAAD,OAAKqf,EAAL,UACNyB,MAAOzc,EAAY,UACZA,EAAauX,IAChBrb,EAAO,UACJA,EAAQ8D,aAAauX,GADjB,YACuBrb,EAAQqb,IACtC,KAWM9I,EAAKsF,UAAYuG,IACnB+B,EAAEK,iBACFjO,EAAKsF,WAGHtF,EAAKsF,SAAWuG,GAClB7L,EAAKsF,WAGTxM,KAAMkH,EAAK2N,QAAU3N,EAAKlH,KAAKkH,EAAK2N,SAAW,IAC/CxC,OAAQ,SACR9N,IAAI,uBAEJ,kBAAC,GAAD,CAAM4C,SAAUD,EAAKlT,WAGxBg0B,GAAY,kBAACH,GAAD,KAAwB/X,EAAE,a,ipFC/MtC,IAAMoY,GAAwBvpB,KAAOwpB,IAAV,KAM9Bhe,GAN8B,OAUrBie,GAAmBzpB,KAAOohB,GAAV,MACP,qBAAG5hB,MAAkB7C,OAAOa,SAMxB,qBAAGgC,MAAkB7C,OAAOC,UAIzC8sB,IAFuB1pB,KAAOshB,GAAV,MACGthB,KAAOokB,EAAV,MACGpkB,KAAO4b,KAAV,MACtB,qBAAGpc,MAAkB7C,OAAOa,UAoD1BmsB,IA7CuB3pB,KAAOC,IAAV,MAQtB,qBAAGT,MAAkB7C,OAAOO,SAQ1B,qBAAGsC,MAAkB7C,OAAOa,SAYrC,gBAAGJ,EAAH,EAAGA,OAAQoC,EAAX,EAAWA,MAAX,OACApC,GAAM,uBAEGoC,EAAM7C,OAAOa,MAFhB,2FAIJksB,GAJI,oJAgBiC1pB,KAAOshB,GAAV,MAG7B,qBAAG9hB,MAAkB7C,OAAOQ,SAU1B,qBAAGqC,MAAkB7C,OAAOS,UAErC,gBAAGA,EAAH,EAAGA,OAAQoC,EAAX,EAAWA,MAAX,OACApC,GAAM,uBAEGoC,EAAM7C,OAAOS,OAFhB,aAKGwsB,GAAoB5pB,KAAOC,IAAV,MAKR,qBAAGT,MAAkB7C,OAAOa,SAGrCqsB,GAAwB7pB,KAAOC,IAAV,MAQrB,qBAAGT,MAAkB7C,OAAOQ,SAC3B,qBAAGqC,MAAkB7C,OAAOQ,SAI3B,qBAAGqC,MAAkB7C,OAAOS,UAC3B,qBAAGoC,MAAkB7C,OAAOS,UAK/B0sB,GAA2B9pB,KAAOC,IAAV,MAMf,qBAAGT,MAAkB7C,OAAOQ,SCYnC4sB,GA7GM,WACnB,IAAM3oB,EAAWqkB,eACXtlB,EAAWC,cAET5F,EAAQmK,aAAY,SAACnP,GAAD,OAAqBA,EAAM0G,aAA/C1B,IACFxE,EAAU2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WACzD8D,EAAe6K,aACnB,SAACnP,GAAD,OAAqBA,EAAMsE,aAAaA,gBAPjB,EAUauF,oBAAkB,GAV/B,oBAUlB2qB,EAVkB,KAULC,EAVK,KAYnBC,EAAqC,CACzC,CACE70B,KAAM,OACN0e,SAAS,EACT/c,MAAO,QAGT,CACE3B,KAAM,SACN0e,WACE3S,EAAS+oB,SAAS7tB,SAAS,gBAC3B8E,EAAS+oB,SAAS7tB,SAAS,UAG7BtF,MAAO,cAGT,CACE3B,KAAM,YACN0e,SAAS,EACT/c,MAAO,YASLozB,EAAoB,WACxBH,GAAgBD,IAGlB,OACE,kBAACT,GAAD,KACGS,GAAe,kBAACF,GAAD,CAA0Bjc,QAASuc,IACnD,kBAACR,GAAD,KACGI,GACC,kBAAC,GAAD,CACEhZ,KACE5P,EAAS+oB,SAAS7tB,SAAS,eAC3B8E,EAAS+oB,SAAS7tB,SAAS,SACvB,UACA,eAEN8X,QAAM,EACNvG,QAASuc,EACTp0B,QACEoL,EAAS+oB,SAAS7tB,SAAS,eAC3B8E,EAAS+oB,SAAS7tB,SAAS,SACvBtG,OACAoc,EAENtY,aACEsH,EAAS+oB,SAAS7tB,SAAS,mBACvBxC,OACAsY,IAKV,kBAACyX,GAAD,CAAuBhc,QAASuc,GAC5BJ,EAA0C,kBAAC,GAAD,CAAMxhB,SAAS,UAA3C,kBAAC,GAAD,CAAMA,SAAS,YAGnC,kBAACihB,GAAD,KACGS,EACExM,QAAO,SAAC2M,GAAD,OAAaA,EAAQtW,WAC5BlC,KAAI,SAACwY,GAAD,OACH,kBAACV,GAAD,CACEttB,IAAKguB,EAAQrzB,MACb6W,QAAS,kBA9CH,SAACrT,GACjB2F,EAAS1F,GAAaD,IA6CG8vB,CAAUD,EAAQrzB,QACjCoG,OAAQitB,EAAQrzB,QAAUwD,GAEzB6vB,EAAQh1B,YCxHVk1B,GAAc,SAACl1B,GAC1B,IAAIm1B,EAAYn1B,EAAKiwB,MAAM,KAE3B,MAAO,CAACkF,EAAU,GAAG,GAAIA,EAAU,GAAKA,EAAU,GAAG,GAAKA,EAAU,GAAG,IACpEC,KAAK,IACLC,e,glBCgBL,SAASC,GAAQ3f,GACf,OAAQA,GACN,IAAK,OACH,OAAO,GACT,IAAK,QACH,OAAO,GACT,IAAK,SACH,OAAO,GACT,IAAK,QACH,OAAO,KAIb,IAAM4f,GAAezoB,aAAH,MAKd,gBAAG6I,EAAH,EAAGA,KAAH,6BACuB,kBAATA,EAAoB2f,GAAQ3f,GAAQA,EADlD,4BAEwB,kBAATA,EAAoB2f,GAAQ3f,GAAQA,EAFnD,cAMS6f,GAAa7qB,aAAO0D,GAAP1D,CAAH,MAKV8qB,GAAc9qB,KAAOkF,IAAV,KACpB0lB,IAKSG,GAAa/qB,KAAOC,IAAV,MAID,gBAAGT,EAAH,EAAGA,MAAOkD,EAAV,EAAUA,MAAV,OAClBtG,GAAQsG,GAASlD,EAAM7C,OAAO+F,GAASA,KAChC,qBAAGlD,MAAkB7C,OAAOa,QACnCotB,GAEAC,IACa,gBAAG7f,EAAH,EAAGA,KAAH,gBACQ,kBAATA,EA7DhB,SAAkBA,GAChB,OAAQA,GACN,IAAK,QACH,OAAO,GACT,IAAK,OACH,OAAO,GACT,IAAK,SACH,OAAO,GACT,IAAK,QACH,OAAO,GACT,QACE,OAAOA,EAAO,GAkDgB/I,CAAS+I,GAAQA,EAAO,EAD3C,SCrCFggB,GAlBA,SAAC,GAQI,IAPlB3c,EAOiB,EAPjBA,KACA1I,EAMiB,EANjBA,IAMiB,IALjBqF,YAKiB,MALV,QAKU,OAJjBigB,SAIiB,EAHjBvoB,cAGiB,MAHT,gBAGS,EAFjBwoB,EAEiB,EAFjBA,UACGnlB,EACc,qEACjB,OAAIJ,EAAY,kBAACmlB,GAAD,eAAa1lB,IAAKO,EAAKqF,KAAMA,GAAUjF,IAGnD,kBAACglB,GAAD,eAAY/f,KAAMA,GAAUjF,EAA5B,CAAmCrD,MAAOA,IACxC,kBAACmoB,GAAeK,EAAYX,GAAYlc,M,2SCnBzC,IAAM8c,GAAanrB,aAAOmI,KAAPnI,CAAH,MACZ,gBAAGgG,EAAH,EAAGA,MAAH,OAAgBA,GAAgB,UAC9B,gBAAG6R,EAAH,EAAGA,QAAH,OAAkBA,GAAoB,YAGxC,qBAAGrY,MAAkB7C,OAAOQ,SAM1B,qBAAGqC,MAAkB7C,OAAOS,UCC1B+K,GARF,SAAC,GAAyD,IAAvD2f,EAAsD,EAAtDA,GAAI1oB,EAAkD,EAAlDA,SAAayE,EAAqC,kCACpE,OACE,kBAACsnB,GAAD,eAAYrD,GAAIA,GAAQjkB,GACrBzE,I,m5DCNA,IAAMgsB,GAAqBprB,KAAOC,IAAV,MAEF,qBAAGT,MAAkB7C,OAAOC,SACrD4O,GAH2B,OAalB6f,GAAmBrrB,KAAOC,IAAV,KAQzBuL,GARyB,OAahB8f,GAAwBtrB,KAAOC,IAAV,MAIrBsrB,GAAgBvrB,aAAO0D,GAAP1D,CAAH,MAIf,qBAAGR,MAAkB7C,OAAOO,QAKnCsO,GATsB,OAiBbggB,GAAqBxrB,KAAOC,IAAV,MAIpB,qBAAGT,MAAkB7C,OAAOC,SAEnC4O,GAN2B,OAWlBigB,GAAsBzrB,KAAOC,IAAV,KAI5BuL,GAJ4B,MASjB,qBAAGhM,MAAkB7C,OAAOQ,UCwE5BuuB,GAlHG,SAAC,GAAkC,IAAhC1a,EAA+B,EAA/BA,KAAMC,EAAyB,EAAzBA,GACjBE,EAAMD,aAAe,UAArBC,EACFwa,EAAQ3D,KAERhyB,EAAU2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WACzD8D,EAAe6K,aACnB,SAACnP,GAAD,OAAqBA,EAAMsE,aAAaA,gBANQ,EASduF,oBAAkB,GATJ,oBAS3CusB,EAT2C,KAS/BC,EAT+B,KAWlDhrB,qBAAU,WACR,IAAK3B,KAAE4sB,QAAQ91B,GAAU,CACvB,IAAM+1B,EAAa,CACjBjyB,aAAcmX,EACdjb,QAAQ,GAAD,OAAKA,EAAQ8D,aAAauX,GAA1B,YAAgCJ,GACvC+a,IAAK/a,EACLxU,KAAMwU,EACNgb,WAAYhb,GAGVib,EAAYj3B,aAAaC,QAAQ,aAE/Bi3B,EAAyBp3B,KAAKC,MAAMk3B,GAAwB,MAGlE,IAFqBC,EAAQrzB,MAAK,SAACszB,GAAD,OAAWA,IAAK,UAAQpb,EAAR,YAAgBC,MAE/C,CACjB,IAAMob,EAAc,sBAAOF,GAAP,WAAmBnb,EAAnB,YAA2BC,KAC/CmF,KAAQC,MAAM,CACZC,SAAU,WACV7gB,OAAQ,cACR8gB,MAAOwV,EAAW/a,GAClBsb,gBAAgB,IAElBr3B,aAAaW,QAAQ,YAAab,KAAKc,UAAUw2B,QAGpD,CAACpb,EAAID,EAAMhb,IAEd,IAAM+yB,EAAa,WACjB8C,GAAeD,GACf,IAAIW,EAAQC,SAASC,cAAc,SAC/BF,GAAOA,EAAMG,UAAUC,OAAO,oBAGpC,OACE,kBAACvB,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,MACa,YAATta,GAA+B,QAATA,IAAmBhb,GACzC,oCACE,kBAAC,GAAD,CACEgV,KAAM,GACNrF,IAAM3P,EAAQ42B,WAAa52B,EAAQ42B,UAAUjnB,UAAQyM,EACrD/D,KAAMrY,EAAQX,MAAQ,KAExB,kBAACk2B,GAAD,KACGv1B,EAAQX,MAAQ,GACjB,kBAACm2B,GAAD,UACCx1B,EAAQ8D,cACP,kBAAC,GAAD,CACEguB,GAAI,CACFqC,SAAS,kBAAD,OAAoBn0B,EAAQ8D,aAAauX,GAAzC,KACR6W,OAAO,cAAD,OAAgBlyB,EAAQqb,MAG/Brb,EAAQ8D,aAAazE,QAMtB,iBAAT2b,GAA2BlX,GAC1B,oCACE,kBAAC,GAAD,CACEkR,KAAM,GACNrF,IAAM7L,EAAaK,MAAQL,EAAaK,KAAKwL,UAAQyM,EACrD/D,KAAMrY,EAAQX,MAAQ,KAExB,kBAACk2B,GAAD,KACGzxB,EAAazE,MAAQ,GACrBs2B,EAAMkB,IAAI,cACT,kBAACrB,GAAD,UAGDG,EAAMkB,IAAI,cACT,kBAAC,GAAD,CACE/E,GAAI,CACFqC,SAAS,aAAD,OAAewB,EAAMkB,IAAI,aAAzB,OAGV,oCAAG1b,EAAE,8BAOjB,kBAAC,GAAD,CAAmBuB,OAAO,UAAU1B,KAAMA,EAAMC,GAAIA,IACpD,kBAACwa,GAAD,CAAqB5d,QAASkb,GAC5B,kBAAC,GAAD,CAAMvgB,SAAS,cAGnB,kBAAC,GAAD,CACEpL,OAAQwuB,EACR7C,WAAYA,EACZ/X,KAAMA,EACNC,GAAIA,IAEN,kBAAC,GAAD,Q,4jECzIC,IAAM6b,GAAqB9sB,KAAOC,IAAV,KAE3BuL,GAF2B,OAUlBuhB,GAAmB/sB,KAAOC,IAAV,MAIhB+sB,GAAehtB,KAAOC,IAAV,MAMZgtB,GAAkBjtB,KAAOC,IAAV,MAOfitB,GAAkBltB,KAAOC,IAAV,MAOfktB,GAAgBntB,KAAOoE,EAAV,MAIf,qBAAG5E,MAAkB7C,OAAOQ,SAG1B,qBAAGqC,MAAkB7C,OAAOS,UAErC,qBAAGgwB,WACM,0CAMAC,GAAgBrtB,KAAOC,IAAV,MAMbqtB,GAAqBttB,KAAOkF,IAAV,MAIlBqoB,GAAoBvtB,KAAO4b,KAAV,MAKjB4R,GAAiBxtB,KAAOC,IAAV,MAOdwtB,GAAgBztB,KAAOC,IAAV,MAKbytB,GAAsB1tB,aAAOmtB,GAAPntB,CAAH,MAGnB,qBAAGR,MAAkB7C,OAAOQ,SAI1B,qBAAGqC,MAAkB7C,OAAOS,UCiB5BuwB,GAvEG,WAAO,IACfxc,EAAMD,aAAe,UAArBC,EAEFkC,GAAO,IAAIC,MAAOC,cAElBsV,EAAiC5T,mBACrC,iBAAM,CACJ,CACEzM,SAAU,WACV7N,KAAM,6CAER,CACE6N,SAAU,YACV7N,KAAM,uCAER,CACE6N,SAAU,UACV7N,KAAM,4DAER,CACE6N,SAAU,WACV7N,KAAM,wCAER,CACE6N,SAAU,UACV7N,KAAM,mCAGV,IAGF,OACE,kBAACmyB,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,KACE,kBAACG,GAAD,CAAe9rB,KAAK,qBAAqBqS,OAAO,UAC7CvC,EAAE,yBAEL,kBAAC+b,GAAD,KACGrE,EAAahX,KAAI,SAAC+b,GAAD,OAChB,kBAACF,GAAD,CACErsB,KAAMusB,EAAWjzB,KACjB0B,IAAKuxB,EAAWjzB,KAChB+Y,OAAO,SAEP,kBAAC,GAAD,CAAMlL,SAAUolB,EAAWplB,iBAKnC,kBAACykB,GAAD,KACE,kBAACI,GAAD,KACE,kBAACC,GAAD,CAAoBloB,IAAKkhB,KAAWhhB,IAAI,YACxC,kBAACioB,GAAD,aAAsBla,IAExB,kBAACoa,GAAD,KACE,kBAACN,GAAD,CAAe9rB,KAAK,2BAApB,qBAIF,kBAACmsB,GAAD,KACE,kBAACL,GAAD,CAAe9rB,KAAK,2BAA2BqS,OAAO,UACnDvC,EAAE,uB,2wEC7FV,IAAM0c,GAAoBC,aAAH,MCgGfC,GAtEG,SAAC,GAUI,IATrB3uB,EASoB,EATpBA,SACAoB,EAQoB,EARpBA,QAEAyS,GAMoB,EAPpBpV,MAOoB,EANpBoV,WACAvO,EAKoB,EALpBA,SACAsO,EAIoB,EAJpBA,MACAhC,EAGoB,EAHpBA,KACAC,EAEoB,EAFpBA,GACA8B,EACoB,EADpBA,eAEMI,EAAUC,aAAc,sCAE9B,OAAIH,IAAcJ,GACT,kBAAC,GAAD,CAAUrO,WAAS,EAACE,SAAUA,IAGnCuO,IAAcJ,GACT,kBAAC,GAAD,CAAUvO,cAAY,IAI7B2O,IAAcJ,IACdI,IAAcJ,IAKZI,GACFA,IAAcJ,IACdI,IAAcJ,IACdI,IAAcJ,IACdI,IAAcJ,GAPP,kBAAC,GAAD,MAaP,oCACGrS,EACC,oCAAGuS,GAAkC,kBAAC,GAAD,OAErC,kBAACzG,GAAD,KACE,kBAACuhB,GAAD,MACC1a,GACC,kBAAC3G,GAAD,KACE,kBAACE,GAAD,KACE,kBAAC,GAAD,CAAMlE,SAAS,gBADjB,+BAOHwK,GACC,kBAAC,GAAD,CACExN,MAAOwN,EAAMxN,MACbC,YAAauN,EAAMvN,YACnBC,MAAOsN,EAAMtN,MACbC,IAAKqN,EAAMrN,MAGf,kBAAC,GAAD,CAAWqL,KAAMA,EAAMC,GAAIA,IAC3B,kBAAC1E,GAAD,KAAmBnN,GACnB,kBAAC,GAAD,S,0qBCxFH,IAAM4uB,GAAsBhuB,KAAOC,IAAV,KAM5BuL,GAN4B,OAexB,qBAAGhM,MAAkB7C,OAAOkB,SAAS,gBAAGowB,EAAH,EAAGA,OAAH,gBAAmBA,EAAnB,QAC7B,gBAAGA,EAAH,EAAGA,OAAH,gBAAmBA,EAAnB,OAIVziB,GApB0B,OCSjB0iB,GAJI,SAAC,GAAiC,IAA/BD,EAA8B,EAA9BA,OACpB,OAAO,kBAACD,GAAD,CAAqBC,OAAQA,K,83BCJ/B,IAAME,GAAgCnuB,KAAOC,IAAV,MAM7BmuB,GAAqBpuB,KAAOC,IAAV,MAMlBouB,GAAqBruB,aAAO0D,GAAP1D,CAAH,MAEpB,qBAAGR,MAAkB7C,OAAOO,SAI1BoxB,GAAqBtuB,KAAOC,IAAV,MAI3B,qBAAGsuB,OACE,yGAKHF,GALG,iDAWIG,GAAqBxuB,aAAO0D,GAAP1D,CAAH,MAGpB,qBAAGR,MAAkB7C,OAAOM,iBAE1BwxB,GAAuBzuB,KAAOC,IAAV,MC0BlByuB,GAzCc,SAAC,GAMI,IALhCr5B,EAK+B,EAL/BA,KACA8E,EAI+B,EAJ/BA,KACAw0B,EAG+B,EAH/BA,KACAV,EAE+B,EAF/BA,OAE+B,IAD/BM,aAC+B,SACvBzzB,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBAGA9E,EAAY2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,WAAnDA,QACF44B,EACJ54B,GACA8E,GACAA,EAAgBiG,OAAS,GACzBjG,EAAgBhC,MAAK,SAACC,GAAD,OAAUA,EAAK2Y,YAAc1b,EAAQqb,MAE5D,OACE,kBAAC8c,GAAD,KACE,kBAAC,GAAD,CAAQnjB,KAAM,GAAIqD,KAAMkc,GAAYl1B,GAAOqN,MAAM,SAASiD,IAAKxL,IAC/D,kBAACi0B,GAAD,KACE,kBAACE,GAAD,CAAoBC,MAAOA,GACzB,kBAACF,GAAD,KAAqBh5B,GACrB,kBAACm5B,GAAD,KACGxH,KAAO2H,GACLE,OACGD,EAAWj4B,GAAai4B,EAAS9c,YAAY/Y,KAAO,SAEvD+1B,YAGNb,GACC,kBAACQ,GAAD,KACE,kBAAC,GAAD,CAAYR,OAASA,EAAS,EAAK,U,+qBC5DxC,IAAMc,GAA0B/uB,KAAOC,IAAV,MAGP,qBAAGT,MAAkB7C,OAAOC,UAM5CoyB,GAAwBhvB,KAAOyhB,EAAV,MAGvB,qBAAGjiB,MAAkB7C,OAAOM,iBAE1B,qBAAGuC,MAAkB7C,OAAOO,SAI5B+xB,GAAsBjvB,KAAOC,IAAV,MAWR,qBAAGT,MAAkB7C,OAAOC,UC0BrCsyB,GAtCQ,SAAC,GAAqC,IAAnC3zB,EAAkC,EAAlCA,OAAkC,EACXoJ,aAC7C,SAACnP,GAAD,OAAqBA,EAAMsE,gBADrBC,EADkD,EAClDA,iBAAkBC,EADgC,EAChCA,iBAI1B,OACE,kBAAC+0B,GAAD,KACE,kBAAC,GAAD,CACE15B,KAAMkG,EAAOqa,KAAKvgB,KAClBs5B,KAAMpzB,EAAOqa,KAAK+P,UAClBsI,OAAQ1yB,EAAOqa,KAAKqY,SAGtB,kBAACe,GAAD,KACE,gCACGzzB,EAAOqa,KAAKpQ,MACZ,MACO,IACTjK,EAAOqa,KAAKuZ,SAGd5zB,EAAOqa,KAAK2Y,OACX,kBAACU,GAAD,KACE,kBAAC,GAAD,CACE55B,KAAM0E,EACNI,KAAMH,EACN20B,KAAMpzB,EAAOqa,KAAK2Y,MAAM5I,UACxB4I,OAAO,IAET,kBAACS,GAAD,KACGzzB,EAAOqa,KAAK2Y,MAAMY,Y,ohEC3CxB,IAAMC,GAA2BpvB,KAAOC,IAAV,KACjCuL,GADiC,OAKxB6jB,GAAuBrvB,aAAO0D,GAAP1D,CAAH,MAItB,qBAAGR,MAAkB7C,OAAOO,QAEnCsO,GAN6B,OAWpB8jB,GAAuBtvB,KAAOC,IAAV,MAKpBsvB,GAA4BvvB,aAAO0D,GAAP1D,CAAH,MAG3B,qBAAGR,MAAkB7C,OAAOO,SAG1BsyB,GAAuBxvB,aAAO0D,GAAP1D,CAAH,MAGtB,qBAAGR,MAAkB7C,OAAOO,SAE1BuyB,GAA6BzvB,KAAOC,IAAV,MAG1ByvB,GAA4B1vB,KAAOC,IAAV,MAKzB0vB,GAAqB3vB,KAAOC,IAAV,MAGT,qBAAGT,MAAkB7C,OAAOC,UAMrC,qBAAGgzB,cAIQ,qBAAGpwB,MAAkB7C,OAAOkB,QAEhD2N,GAf2B,OAmBlBqkB,GAAwB7vB,aAAO0D,GAAP1D,CAAH,MACvB,qBAAGR,MAAkB7C,OAAOc,eAK1BqyB,GAAwB9vB,KAAOC,IAAV,MAGrB8vB,GAAsB/vB,KAAOC,IAAV,MACN,qBAAGT,MAAkB7C,OAAOC,UAGzCozB,GAAuBhwB,aAAO0D,GAAP1D,CAAH,MC0ElBiwB,GApHS,SAAC,GAAoD,ICpC/ChC,EAAgBiC,EDoCnBC,EAAiD,EAAjDA,YAAaC,EAAoC,EAApCA,QAC9Bjf,EAAMD,aAAe,WAArBC,EACGkf,EAAuBnf,aAAe,WAAzCC,EACGmf,EAA4Bpf,aAAe,gBAA9CC,EAEF/P,EAAWqkB,eACXtlB,EAAWC,cAEXmwB,EAAkB5rB,aACtB,YAAwC,IAArCpJ,EAAoC,EAApCA,OAAQvF,EAA4B,EAA5BA,QAAS8D,EAAmB,EAAnBA,aACZ02B,EAAmCj1B,EAAOzC,MAC9C,SAAC23B,GACC,OAAIrvB,EAAS+oB,SAAS7tB,SAAS,SACtBtG,EAAQC,QAAUw6B,EAEvBrvB,EAAS+oB,SAAS7tB,SAAS,cACtBtG,EAAQA,QAAQqb,KAAOof,IAE5BrvB,EAAS+oB,SAAS7tB,SAAS,oBACtBxC,EAAaA,aAAauX,KAAOof,KAM9C,OAAOC,QAAQF,MAIbG,EAAc1b,mBAClB,iBAAM,CACJ,CACEhE,GAAG,cACH2e,WAAYO,EAAYS,oBACxBC,gBAAiB,KAEnB,CACE5f,GAAG,cACH2e,WAAYO,EAAYW,oBACxBD,gBAAiB,IAEnB,CACE5f,GAAG,eACH2e,WAAYO,EAAYY,qBACxBF,gBAAiB,IAEnB,CACE5f,GAAG,aACH2e,WAAYO,EAAYa,mBACxBH,gBAAiB,IAEnB,CACE5f,GAAG,aACH2e,WAAYO,EAAYc,mBACxBJ,gBAAiB,OAGrB,CAACV,IAGGe,EAAwB5f,uBAAY,WACxCnR,EAAS1J,QACR,CAAC0J,IAEJ,OACE,kBAACivB,GAAD,KACE,kBAACC,GAAD,KACGle,EAAE,4BAEL,kBAACme,GAAD,KACE,kBAAC,GAAD,CAAYrB,QC1GUA,ED0GYkC,EAAYgB,cC1GRjB,ED0GuB,ECzG3DjC,EAASiC,EAAY,OD0GvB,kBAACV,GAAD,eACMW,EAAYgB,cAAcC,QAAQ,GADxC,YAC8CjgB,EAAE,eADhD,SAIF,kBAACoe,GAAD,KACGY,EAAYkB,WADf,IAC4BlgB,EAAE,oBAG9B,kBAACse,GAAD,KACGkB,EAAY9e,KAAI,SAAC+d,GAAD,OACf,kBAACF,GAAD,CAA2BrzB,IAAKuzB,EAAW3e,IACzC,kBAAC,GAAD,CAAYgd,OAAQ2B,EAAWiB,kBAC/B,kBAAClB,GAAD,CAAoBC,WAAYA,EAAWA,aAC3C,kBAACC,GAAD,KACGyB,OAAO1B,EAAWA,YAAYwB,QAAQ,GADzC,IAC8C,UAKpD,kBAACtB,GAAD,MACIS,GACA,kBAAC,GAAD,CACE1iB,QAASqjB,EACT7iB,KAAM8C,EAAE,uBAId,kBAAC4e,GAAD,KACGK,GAAWA,EAAQrvB,OAAS,EAC3BqvB,EAAQve,KAAI,SAACtW,GAAD,OACV,kBAAC,GAAD,CAAgBc,IAAKd,EAAOqa,KAAK3E,GAAI1V,OAAQA,OAG/C,kBAACy0B,GAAD,KACG5uB,EAAS+oB,SAAS7tB,SAAS,eAC5B8E,EAAS+oB,SAAS7tB,SAAS,SACvB+zB,EAAmB,+BACnBC,EAAwB,wC,g7BE5IjC,IAAMiB,GAAsBvxB,KAAOiO,OAAV,MAMV,qBAAGzO,MAAkB7C,OAAOQ,SAO1B,qBAAGqC,MAAkB7C,OAAOU,aASvCm0B,GAAiBxxB,KAAOkF,IAAV,MAMdusB,GAAiBzxB,aAAO0D,GAAP1D,CAAH,MAIhB,qBAAGR,MAAkB7C,OAAOa,SCCxBk0B,GArBI,SAAC,GAAgC,IAA9Bn7B,EAA6B,EAA7BA,MACd4J,EAAWC,cAEXuxB,EAA4BrgB,uBAAY,WAC5CnR,EACE1J,EAAU,CACRF,aAGH,CAAC4J,EAAU5J,IAEd,OACE,kBAACg7B,GAAD,CAAqB1jB,QAAS8jB,GAC5B,kBAACH,GAAD,CAAgBpsB,IAAK7O,EAAMgS,KAAKA,OAChC,kBAACkpB,GAAD,KACGl7B,EAAMlB,KAAKu8B,OAAO,GAAGlH,cAAgBn0B,EAAMlB,KAAKmgB,MAAM,M,87BC5BxD,IAAMqc,GAA8B7xB,KAAOC,IAAV,MA0BhB,qBAAGT,MAAkB7C,OAAOI,uBAG5B,qBAAGyC,MAAkB7C,OAAOe,iBAGhD8N,GAhCoC,OC2BzBsmB,GArBY,SAAC,GAAiD,IACrEC,EADoE,EAA9CC,eACYtU,QACtC,SAACnnB,GAAD,OACEA,GAASA,EAAMgS,MAAQhS,EAAMgS,KAAKA,OAAShS,EAAMgS,KAAKA,KAAKjM,SAAS,SAGxE,OACE,oCACGy1B,EAAiBhxB,OAAS,EACzB,kBAAC8wB,GAAD,KACGE,EAAiBlgB,KAAI,SAACtb,GAAD,OACpB,kBAAC,GAAD,CAAY8F,IAAK9F,EAAM8a,GAAI9a,MAAOA,QAItC,uC,8sBCnBD,IAAM07B,GAAsBjyB,KAAOC,IAAV,MAGnBiyB,GAAsBlyB,aAAO0D,GAAP1D,CAAH,MAIrB,qBAAGR,MAAkB7C,OAAOQ,SAK1B,qBAAGqC,MAAkB7C,OAAOS,UAG5B+0B,GAAgBnyB,KAAOohB,GAAV,MAIbgR,GAAgBpyB,KAAOshB,GAAV,MACb+Q,GAAgBryB,aAAO0D,GAAP1D,CAAH,MAGf,qBAAGR,MAAkB7C,OAAOM,iBCmBxBq1B,GA7BI,SAAC,GAAqC,IAAnCC,EAAkC,EAAlCA,WACdpyB,EAAWC,cAEXuxB,EAA4BrgB,uBAAY,WAC5CnR,EACE1J,EAAU,CACRF,MAAOg8B,OAGV,CAACpyB,EAAUoyB,IAEd,OACE,kBAACN,GAAD,KACE,kBAACC,GAAD,CAAqBrkB,QAAS8jB,GAC3BY,EAAWl9B,MAEd,kBAAC88B,GAAD,KACGI,EAAWC,WAAW3gB,KAAI,SAAC4gB,EAAW/c,GAAZ,OACzB,kBAAC0c,GAAD,CAAe/1B,IAAG,UAAKo2B,EAAUzhB,KAAf,YAAuB0E,IACvC,kBAAC2c,GAAD,KACGI,EAAUzhB,KADb,IACoByhB,EAAUz7B,MAD9B,IACsCy7B,EAAUlb,a,gqCCnC3BvX,KAAOC,IAAV,MASAD,KAAOC,IAAV,MATpB,IAUMyyB,GAAoB1yB,KAAOC,IAAV,MAI1B,qBAAG7C,OAAmB,gEAObu1B,GAAoB3yB,KAAOC,IAAV,MAKvB,qBAAGyiB,WACN,uFAcSkQ,GAAmB5yB,KAAO4b,KAAV,MAGlB,qBAAGpc,MAAkB7C,OAAOQ,SAM1B,qBAAGqC,MAAkB7C,OAAOS,UAI5By1B,GAAsB7yB,KAAOC,IAAV,MAOpB,qBAAG2X,UAEC,qBAAGxV,SACR,qBAAG5C,MAAkB7C,OAAOO,SACnC,gBAAGT,EAAH,EAAGA,KAAM+C,EAAT,EAASA,MAAOoY,EAAhB,EAAgBA,OAAhB,OAA6Bnb,GAAI,uBACxB+C,EAAM7C,OAAO4B,SADW,iDAGvBqZ,EAHuB,kBAI/Bgb,GAJ+B,4BAKtBpzB,EAAM7C,OAAOwB,YALS,8CAOpBqB,EAAM7C,OAAO2B,UAPO,4BCEtBw0B,GAtDI,SAAC,GAMI,IALtBzkB,EAKqB,EALrBA,KAKqB,IAJrBjM,aAIqB,MAJb,OAIa,MAHrBwV,cAGqB,MAHZ,cAGY,EAFrBnb,EAEqB,EAFrBA,KACAs2B,EACqB,EADrBA,UAEQ5hB,EAAMD,aAAe,WAArBC,EADa,EAGa9R,oBAAkB,GAH/B,oBAGdqjB,EAHc,KAGHsQ,EAHG,OAIe3zB,mBAAwB,MAJvC,oBAId4zB,EAJc,KAIFC,EAJE,KAsBrB,OANAryB,qBAAU,WACHoyB,GACHC,EAAc7kB,EAAKiX,MAAM,KAAKvkB,UAE/B,CAACkyB,EAAY5kB,IAGd,kBAACwkB,GAAD,CACEjvB,UAdY,aAeZxB,MAAOA,EACPwV,OAAQA,EACRnb,KAAMA,GAEN,kBAACi2B,GAAD,CACEt1B,QAAS21B,IAAcrQ,MAAgBuQ,GAAcA,EAAa,KAMlE,kBAACN,GAAD,CAAmBQ,wBA9BJ,SAAC9kB,GACpB,MAAO,CAAE+kB,OAAQ/kB,GA6B+BglB,CAAahlB,OAGzD0kB,GAAaE,GAAcA,EAAa,IACxC,kBAACL,GAAD,CAAkB/kB,QA5BL,WACjBmlB,GAActQ,KA4B6BvR,EAAnCuR,EAAqC,kBAAvB,sB,ikCC1DnB,IAAM4Q,GAAoBtzB,KAAOuzB,MAAV,MAGjBC,GAA2BxzB,KAAOC,IAAV,MAUxBwzB,GAAyBzzB,KAAOC,IAAV,MAWtByzB,GAA4B1zB,KAAOC,IAAV,KAKZ0zB,MAIbC,GAAsB5zB,KAAOC,IAAV,MAEpB,gBAAG2X,EAAH,EAAGA,OAAH,OAAgBA,GAAkB,aAIxC4b,ICzBFK,GAAqD,KA4I1CC,GA1IM,SAAC,GAOI,IANxBnuB,EAMuB,EANvBA,IAIAiS,GAEuB,EALvBviB,KAKuB,EAJvB4b,GAIuB,EAHvB8iB,OAGuB,EAFvBnc,QAEuB,IADvBoc,cACuB,MADdxc,KACc,EACjBrX,EAAWC,cAEX6zB,EAAShX,iBAAyB,MAElC9J,EAAUC,aAAc,sCALP,EAOC/T,oBAAkB,GAPnB,oBAOhB60B,EAPgB,KAOVC,EAPU,KAgBjBC,EAAc,WACdH,GAAUA,EAAOpW,UAAYqW,IAC/BD,EAAOpW,QAAQwW,YAAc,EAC7BJ,EAAOpW,QAAQyW,aAAe,EAC9BL,EAAOpW,QAAQ0W,UApBI,EAyCwBC,yBAC7CP,EACA,CACEQ,WAAY,QACZC,UAAW,GAEb,CAAEC,mBAAmB,GACrB,CACEC,gBAAiB,WACf,GAAIX,EAAOpW,UAAYqW,EAAM,CAC3B,IAAMX,EAAQU,EAAOpW,QACrB0V,EAAMc,YAAc,EACpBd,EAAMe,aAAe,GACrBf,EAAMW,OACNL,GAAegB,YAAW,WACxBtB,EAAMc,YAAc,EACpBd,EAAMe,aAAe,EACrBf,EAAMgB,UACL,OAGPO,gBAAiB,WACf,GAAIb,EAAOpW,UAAYqW,EAAM,CAC3B,IAAMX,EAAQU,EAAOpW,QACjBgW,IAAckB,aAAalB,IAC/BA,GAAe,KACfN,EAAMc,YAAc,EACpBd,EAAMe,aAAe,EACrBf,EAAMgB,YArES,EAyCfS,WAzCe,EAyCHC,WAzCG,EAyCSC,WAkCK5jB,uBACnC,SAACpY,GACCiH,EACEg1B,GAAuB,CACrBj8B,MAAOA,OAIb,CAACiH,IAiBH,OACE,kBAACyzB,GAAD,CACEhc,OAAQA,EACRwd,aA/EqB,WAClBjiB,IAfD8gB,GAAUA,EAAOpW,UAAYqW,IAC/BD,EAAOpW,QAAQwW,YAAc,EAC7BJ,EAAOpW,QAAQyW,aAAe,GAC9BL,EAAOpW,QAAQqW,QAcfL,GAAegB,YAAW,WACxBT,MACC,OA2EHiB,aAvEqB,WAClBliB,GAAY+gB,IACXL,IAAckB,aAAalB,IAC/BA,GAAe,KACfO,MAoEAvmB,QAAS,WAlBPomB,GAAUA,EAAOpW,UACfgW,IAAckB,aAAalB,IAC/BI,EAAOpW,QAAQwW,YAAc,EAC7BJ,EAAOpW,QAAQyW,aAAe,EAC1BJ,EACFD,EAAOpW,QAAQ0W,QAEfN,EAAOpW,QAAQqW,OAEjBC,GAASD,OAaPA,GAAQ,kBAACV,GAAD,MACRU,EAKA,qCAJA,kBAACT,GAAD,KACE,kBAACC,GAAD,OAMH/tB,GACC,kBAAC2tB,GAAD,CACEluB,IAAKO,EACL6X,IAAKyW,EACLqB,MAAOpB,EACPqB,SAAUrB,EACVF,OAAQA,M,g+CCnJX,IAAMwB,GAAqBx1B,KAAOC,IAAV,MAUP,qBAAGT,MAAkB7C,OAAOU,aAIvCo4B,GAAiBz1B,aAAO0D,GAAP1D,CAAH,MAIhB,qBAAGR,MAAkB7C,OAAOO,SAK1Bw4B,GAAmB11B,KAAOC,IAAV,MAOP,qBAAGT,MAAkB7C,OAAOQ,SAKrCw4B,GAAgB31B,KAAOkF,IAAV,MAMb0wB,GAAuB51B,KAAOC,IAAV,MAIpB41B,GAAoB71B,aAAO0D,GAAP1D,CAAH,MAInB,qBAAGR,MAAkB7C,OAAOM,iBAS1B64B,GAAiB91B,KAAOkF,IAAV,MCsBZ6wB,GA7DG,SAAC,GAAmC,IAAD,EAAhCz8B,EAAgC,EAAhCA,UAGb08B,GAF4B9kB,aAAe,WAAzCC,EAEiB8L,iBAAuB,OAEhD,OACE,kBAACuY,GAAD,CAAoBhY,IAAKwY,EAAkB/kB,GAAE,oBAAe3X,EAAU+X,KACpE,kBAACokB,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,CAAevwB,IAAK9L,EAAUiP,KAAMjD,IAAKhM,EAAUjE,QAEpDiE,EAAUjE,MAEZiE,EAAUmc,YAAYiI,QACrB,SAAC6U,GAAD,OACEA,GACAA,EAAWhqB,MACXgqB,EAAWhqB,KAAKA,OACfgqB,EAAWhqB,KAAKA,KAAKjM,SAAS,SACjCyE,OAAS,GACT,kBAAC60B,GAAD,KACGt8B,EAAUmc,YAAY5D,KACrB,SAAC0gB,GAAD,OACEA,EAAW0D,kBACT,kBAAC,GAAD,CAAY55B,IAAKk2B,EAAWlhB,GAAI9a,MAAOg8B,QAKhDj5B,EAAU8H,UACT,kBAACy0B,GAAD,KACE,kBAAC,GAAD,CAAMrtB,SAAS,UADjB,IAC6BlP,EAAU8H,SAAS/L,MAGjDiE,EAAUmc,YAAY1U,OAAS,GAC9BzH,EAAUmc,YAAY5D,KACpB,SAAC0gB,GAAD,QACIA,EAAW0D,kBACV1D,EAAW0D,kBACuB,IAAjC1D,EAAWC,WAAWzxB,SACxB,kBAAC,GAAD,CAAY1E,IAAKk2B,EAAWlhB,GAAIkhB,WAAYA,OAGnDj5B,EAAUi6B,OACT,kBAAC,GAAD,CACE5tB,IAAKrM,EAAUi6B,MAAM5tB,IACrBtQ,KAAMiE,EAAUjE,KAChB0+B,OAAQiC,EACR/kB,GAAI3X,EAAU+X,MAGhB/X,EAAUi6B,QAAUj6B,EAAUoM,MAAMC,IAAIrJ,SAAS,gBACjD,kBAACw5B,GAAD,CAAgB1wB,IAAG,UAAE9L,EAAUoM,aAAZ,aAAE,EAAiBC,IAAKL,IAAKhM,EAAUjE,OAE3DiE,EAAUmM,aACT,kBAAC,GAAD,CAAY4I,KAAM/U,EAAUmM,YAAamS,OAAO,Q,gJC1EjD,IAAMse,GAAyBl2B,KAAOC,IAAV,MACtBk2B,GAAoBn2B,aAAO0D,GAAP1D,CAAH,MC2Bfo2B,GAlBO,SAAC,GAAwC,IAAtCC,EAAqC,EAArCA,WACZhG,EAAuBnf,aAAe,WAAzCC,EAER,OACE,kBAAC+kB,GAAD,KACGG,EAAWt1B,OAAS,EACnBs1B,EAAWxkB,KAAI,SAACvY,GAAD,OACb,kBAAC,GAAD,CAAW+C,IAAK/C,EAAU2X,GAAI3X,UAAWA,OAG3C,kBAAC68B,GAAD,KACG9F,EAAmB,qC,27BCxBvB,IAAMiG,GAAyBt2B,KAAOC,IAAV,MA2BX,qBAAGT,MAAkB7C,OAAOI,uBAG5B,qBAAGyC,MAAkB7C,OAAOe,kBAIvC64B,GAAuBv2B,KAAOkF,IAAV,MCflBsxB,GAVO,SAAC,GAAoC,IAAlCrhB,EAAiC,EAAjCA,OACvB,OACE,kBAACmhB,GAAD,KACGnhB,EAAOtD,KAAI,SAACnM,GAAD,OACV,kBAAC6wB,GAAD,CAAsBnxB,IAAKM,EAAMC,IAAKtJ,IAAKqJ,EAAMuL,U,2zHCXxBjR,KAAOC,IAAV,MAAvB,IACMw2B,GAAez2B,KAAOC,IAAV,MACZy2B,GAAoB12B,KAAOC,IAAV,MAGR,qBAAGT,MAAkB7C,OAAOC,UAErC+5B,GAAgB32B,KAAOkF,IAAV,MAEd,gBAAG0S,EAAH,EAAGA,OAAH,OAAgBA,GAAkB,KAEjCgf,GAAgB52B,aAAO0D,GAAP1D,CAAH,MAIf,qBAAGR,MAAkB7C,OAAOM,iBAE1B45B,GAAmB72B,KAAO4b,KAAV,MAGlB,qBAAGpc,MAAkB7C,OAAOK,YAG1B85B,GAAgB92B,aAAO0D,GAAP1D,CAAH,MAIf,qBAAGR,MAAkB7C,OAAOM,iBAS1B85B,IALwB/2B,aAAO82B,GAAP92B,CAAH,MAKNA,aAAO0D,GAAP1D,CAAH,MAGd,qBAAGR,MAAkB7C,OAAOK,aAE1Bg6B,GAAeh3B,aAAO0D,GAAP1D,CAAH,MAGd,qBAAGR,MAAkB7C,OAAOwB,eAG1B,qBAAGqB,MAAkB7C,OAAO2B,aAG5B24B,GAAqBj3B,KAAOC,IAAV,MACnB,gBAAG2X,EAAH,EAAGA,OAAH,OAAgBA,GAAkB,KAEjCsf,GAAqBl3B,KAAOC,IAAV,MAKlBk3B,GAAqBn3B,aAAO0D,GAAP1D,CAAH,MAGpB,qBAAGR,MAAkB7C,OAAOK,YAG1Bo6B,GAAwBp3B,KAAOC,IAAV,MASrBo3B,GAAoBr3B,KAAOC,IAAV,MA0CjBq3B,IAlC0Bt3B,KAAOC,IAAV,MASJD,KAAOC,IAAV,MACOD,KAAOC,IAAV,MAKGD,KAAOC,IAAV,MAMX,qBAAGT,MAAkB7C,OAAOM,iBAEP+C,aAAO0D,GAAP1D,CAAJ,MAG5B,qBAAGR,MAAkB7C,OAAOM,iBAGE+C,aAAO0D,GAAP1D,CAAJ,MAG1B,qBAAGR,MAAkB7C,OAAOK,YAEDgD,KAAOC,IAAV,MAQ/B,gBAAGs3B,EAAH,EAAGA,OAAQ/3B,EAAX,EAAWA,MAAX,OAAuB+3B,GAAM,mFAGP/3B,EAAM7C,OAAO6B,cAHN,oBAOpBg5B,GAA0Bx3B,KAAOkF,IAAV,MAMvBuyB,GAAez3B,KAAOC,IAAV,MAQrB,gBAAGxD,EAAH,EAAGA,KAAM+C,EAAT,EAASA,MAAT,OAAqB/C,GAAI,6BACV+C,EAAMf,MAAMjC,KADF,+IAUhBk7B,GAAqB13B,KAAOC,IAAV,MAO3B,gBAAGxD,EAAH,EAAGA,KAAM+C,EAAT,EAASA,MAAT,OAAqB/C,GAAI,6BACV+C,EAAMf,MAAMjC,KADF,YClEdm7B,GAvES,SAAC,GAAyC,IAAvCC,EAAsC,EAAtCA,KAAMn7B,EAAgC,EAAhCA,KACzB0W,EAAUC,aAAc,sCAEhBlC,aAAe,WAArBC,EAER,OACE,kBAACsmB,GAAD,CAAch7B,KAAMA,IAChBA,GACA,kBAACg6B,GAAD,KACGmB,EAAKlyB,OACJ,kBAACixB,GAAD,CACEvxB,IAAKwyB,EAAKlyB,MACVkS,OAAQzE,EAAU,WAAa,MAGlCA,GACC,oCACE,kBAACkkB,GAAD,KACGO,EAAKC,aAAahmB,KAAI,SAACimB,GAAD,OACrB,kBAACb,GAAD,CAAoB56B,IAAKy7B,EAAM7mB,IAC7B,kBAAC6lB,GAAD,KAAgBgB,EAAMtyB,OACtB,kBAACuxB,GAAD,KACE,kBAAC,GAAD,CAAY1oB,KAAMypB,EAAMryB,YAAastB,WAAS,YAU9D,kBAAC0D,GAAD,KACE,kBAACS,GAAD,KACE,kBAACN,GAAD,KACGgB,EAAKpyB,MAAO,IACb,kBAACqxB,GAAD,iBAAwBe,EAAKG,aAGjC,kBAACrB,GAAD,MACA,kBAACU,GAAD,KACGQ,EAAKI,iBAAiBnmB,KAAI,SAAComB,GAAD,OACzB,kBAAChB,GAAD,CAAoB56B,IAAK47B,EAAUhnB,IACjC,kBAAC6lB,GAAD,KAAgBmB,EAAUzyB,OAC1B,kBAACuxB,GAAD,KACE,kBAAC,GAAD,CAAY1oB,KAAM4pB,EAAUxyB,YAAastB,WAAS,WAKxD5f,GACA,oCACE,kBAACkkB,GAAD,KACGO,EAAKC,aAAahmB,KAAI,SAACimB,GAAD,OACrB,kBAACb,GAAD,CAAoB56B,IAAKy7B,EAAM7mB,IAC7B,kBAAC6lB,GAAD,KAAgBgB,EAAMtyB,OACtB,kBAACuxB,GAAD,KACE,kBAAC,GAAD,CAAY1oB,KAAMypB,EAAMryB,YAAastB,WAAS,IAAI,WAQ9D,kBAACoE,GAAD,KAAqBS,EAAKM,WC1DnBC,GAjBmB,SAAC,GAEG,IADpCC,EACmC,EADnCA,gBAEA,OACE,kBAACV,GAAD,KACGU,EAAgBA,gBAAgBvmB,KAAI,SAACwmB,EAAgB3iB,GAAjB,OACnC,kBAACuhB,GAAD,CAAoB56B,IAAKqZ,GACvB,kBAACohB,GAAD,KAAgBuB,EAAe7yB,OAC/B,kBAACuxB,GAAD,KACE,kBAAC,GAAD,CAAY1oB,KAAMgqB,EAAe5yB,YAAastB,WAAS,WCmBpDuF,GA3Be,SAAC,GAGG,IAFhCC,EAE+B,EAF/BA,YACA97B,EAC+B,EAD/BA,KAEA,OACE,kBAACi7B,GAAD,CAAoBj7B,KAAMA,GACvB87B,EAAYA,YAAY1mB,KAAI,SAAC9a,EAAY2e,GAAb,OAC3B,kBAAC4hB,GAAD,CACEj7B,IAAKqZ,EACL8iB,GAAwB,KAApBzhC,EAAW4D,KAAc,MAAQ,IACrC0G,KAAMtK,EAAW4D,KAAO5D,EAAW4D,KAAO,IAC1C+Y,OAAO,SACP6jB,OAA4B,KAApBxgC,EAAW4D,MAEnB,kBAAC68B,GAAD,CAAyBpyB,IAAKrO,EAAW2O,QACzC,kBAACuxB,GAAD,KACE,kBAACH,GAAD,KAAgB//B,EAAWyO,OAC3B,kBAACuxB,GAAD,KACE,kBAAC,GAAD,CAAY1oB,KAAMtX,EAAW0O,YAAastB,WAAS,YC8BlD0F,GA5CQ,SAAC,GAAoD,IAAlDC,EAAiD,EAAjDA,UAAWj8B,EAAsC,EAAtCA,KAC3B0U,EAAMD,aAAe,WAArBC,EAEFhR,EAAWC,cAEXu4B,EAA0BrnB,uBAC9B,SAAClY,GACC+G,EACEy4B,GAAkB,CAChBx/B,gBAIN,CAAC+G,IAGH,OACE,kBAACu3B,GAAD,CAAoBj7B,KAAMA,GACvBi8B,EAAUA,UAAU7mB,KAAI,SAAC2a,EAAU9W,GAAX,OACvB,kBAAC4hB,GAAD,CAAwBj7B,IAAKqZ,GAC3B,kBAACuhB,GAAD,KACE,kBAACH,GAAD,KAAgBtK,EAAShnB,OACzB,kBAACuxB,GAAD,CAAcnyB,MAAO,CAAEgT,OAAQ,eAC7B,kBAAC,GAAD,CAAYvJ,KAAMme,EAAS/mB,YAAastB,WAAS,KAEnD,kBAACiE,GAAD,CACEnpB,QAAS,WACP8qB,EAAwB,CACtBE,aAAcrM,EAAShnB,MACvBszB,KAAMtM,EAASA,SACfnb,GAAI,GACJ0nB,eAAgB,OAInB5nB,EAAE,+B,+qCCvDV,IAAM6nB,GAAuBh5B,KAAOC,IAAV,MAGpBg5B,GAAoBj5B,KAAOC,IAAV,MAQjBi5B,GAAkBl5B,aAAO0D,GAAP1D,CAAH,MAGjB,qBAAGR,MAAkB7C,OAAOQ,SASX,qBAAGqC,MAAkB7C,OAAOC,UAC9B,qBAAG4C,MAAkB7C,OAAOC,UACzB,qBAAG4C,MAAkB7C,OAAOC,UACnC,qBAAG4C,MAAkB7C,OAAOG,kBAErB,qBAAG0C,MAAkB7C,OAAOC,UAGjC,qBAAG4C,MAAkB7C,OAAOa,SAGhD,gBAAGJ,EAAH,EAAGA,OAAQoC,EAAX,EAAWA,MAAX,OAAuBpC,GAAM,yBAClBoC,EAAM7C,OAAOS,OADK,sCAEPoC,EAAM7C,OAAOa,MAFN,wCAM7B,qBAAG27B,WAAyB,4BAInBC,GAAkBp5B,KAAOC,IAAV,MACN,qBAAGT,MAAkB7C,OAAOa,SAC5B,qBAAGgC,MAAkB7C,OAAOC,UAGrCy8B,GAAkBr5B,KAAOC,IAAV,MAExB,qBAAG7C,QAAa,8BAIPk8B,GAA6Bt5B,KAAOC,IAAV,MAC1Bs5B,GAAwBv5B,KAAOC,IAAV,M,ioFCvDlC,IAAMu5B,GAAer3B,aAAH,MAULs3B,GAA0Bz5B,KAAOC,IAAV,MAIvBy5B,GAAsB15B,KAAOuW,MAAV,MAErB,qBAAG/W,MAAkB7C,OAAOc,eAS1Bk8B,GAAsB35B,KAAOC,IAAV,MAkBnB25B,GAA6B55B,KAAOC,IAAV,MAoB1B45B,GAAwB75B,KAAOC,IAAV,MAcrB65B,GAA2B95B,KAAOkF,IAAV,MAQxB60B,GAA2B/5B,aAAO0D,GAAP1D,CAAH,MAG1B,qBAAGR,MAAkB7C,OAAOO,SAE1B88B,GAAuBh6B,KAAOC,IAAV,KAC7Bu5B,GAEEO,IAKF,qBAAG38B,QACG,gBAEJ28B,GAFI,8CAOGE,GAA4Bj6B,KAAOC,IAAV,KAClCu5B,GACAM,IAKSI,GAAyBl6B,KAAOC,IAAV,MAGV,qBAAGT,MAAkB7C,OAAOc,eAQjD,qBAAGnH,QACG,gBAEJsjC,GAFI,uDCyBKO,GAhIQ,SAAC,GAII,IAH1B5jB,EAGyB,EAHzBA,MAGyB,IAFzB9Y,mBAEyB,MAFX,GAEW,EADzB28B,EACyB,EADzBA,SAEMC,EAAapd,iBAAuB,MAElCniB,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBAHiB,EAOS6J,aAChC,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WAD7Bqb,EAPiB,EAOjBA,GAAIipB,EAPa,EAObA,kBAPa,EAWmBj7B,mBAE1C1I,GAAamC,MAAK,SAACC,GAAD,MAA6B,OAAnBA,EAAKjC,cAbV,oBAWlByjC,EAXkB,KAWFC,EAXE,OAeGn7B,oBAAkB,GAfrB,oBAelB/I,EAfkB,KAeV+d,EAfU,KAiBnBomB,EAAe,WAEfJ,EAAWxc,SAASwc,EAAWxc,QAAQ6c,QAoD7C,OA9BA75B,qBAAU,WACR,IAAM85B,EAAoB7/B,EAAgB4iB,QACxC,SAACkd,GAAD,OAAYA,EAAOlpB,YAAcL,KAGnC,GAAIA,GAAMspB,EAAkB55B,OAAS,EAAG,CACtC,IAAM85B,EAAgBlkC,GAAamC,MACjC,SAACC,GAAD,OAAUA,EAAKjC,YAAc6jC,EAAkB,GAAG7oB,cAGhD+oB,GACFL,EAAkBK,MAGrB,CAAC//B,EAAiBuW,IAErBxQ,qBAAU,WAENy5B,GACsD,IAAtDpvB,OAAOC,KAAKpW,KAAKC,MAAMslC,IAAoBv5B,QAE3Cy5B,EACE7jC,GAAamC,MACX,SAACC,GAAD,OACEA,EAAKjC,YAAcoU,OAAOC,KAAKpW,KAAKC,MAAMslC,IAAoB,SAIrE,CAACA,IAGF,kBAACb,GAAD,KACGljB,GACC,kBAACmjB,GAAD,CAAqBoB,QAAQ,eAAevkB,GAE9C,kBAAC2jB,GAAD,CACEa,SAAU,EACVltB,QAxDgB,WAChBvX,EACFmkC,KAEApmB,GAAU,GACNgmB,EAAWxc,SAASwc,EAAWxc,QAAQmd,UAoDzCC,OAAQR,EACRjd,IAAK6c,EACL/jC,OAAQA,GAER,kBAACqjC,GAAD,KACGY,EACC,kBAACN,GAAD,KACE,kBAACH,GAAD,CAA0B10B,IAAKm1B,EAAe3jC,OAC9C,kBAACmjC,GAAD,KACGQ,EAAezjC,YAIpB2G,GAGJ,kBAACm8B,GAAD,KACE,kBAAC,GAAD,CAAMpxB,SAAS,iBAEhBlS,GACC,kBAACujC,GAAD,YACGljC,SADH,IACGA,QADH,EACGA,GAAckb,KAAI,SAACc,GAAD,OACjB,kBAACqnB,GAAD,CACE39B,IAAKsW,EAAS7b,UACd+W,QAAS,SAACsI,IAxEE,SACxBE,EACA1D,GAEA0D,EAAM6kB,kBACNV,EAAkB7nB,GAClB8nB,IACIL,GAAUA,EAASznB,GAkETwoB,CAAkBhlB,EAAGxD,GACrB0B,GAAU,IAEZjX,OACEuV,GAAYA,EAAS7b,aAAT,OAAuByjC,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAgBzjC,YAGrD,kBAACgjC,GAAD,CAA0B10B,IAAKuN,EAAS/b,OACxC,kBAACmjC,GAAD,KACGpnB,EAAS7b,mBC9HtBskC,I,OAAY,SAAC,GAAD,IAChBC,EADgB,EAChBA,MACAC,EAFgB,EAEhBA,iBAFgB,EAGhBC,cAHgB,EAIhBC,SAJgB,OAMhB,0BAAM53B,UAAU,QACby3B,EAAMI,SACLJ,EAAMK,SACJL,EAAMM,gBACR,0BACE/2B,MAAO,CACLg3B,YAAiB,OAALP,QAAK,IAALA,OAAA,EAAAA,EAAOQ,aAAc,IAAM,SACvCn5B,OAAY,OAAL24B,QAAK,IAALA,OAAA,EAAAA,EAAOQ,aAAc,QAAU,SAGvCR,EAAMM,gBAAgBL,EAAiBxkC,YAG1C,OAgFSglC,GAjEQ,SAAC,GAAD,MACrBxkB,EADqB,EACrBA,KACAgkB,EAFqB,EAErBA,iBACAC,EAHqB,EAGrBA,cAHqB,OAKrB,yBACE32B,MAAO,CACLg3B,YAAgB,OAAJtkB,QAAI,IAAJA,OAAA,EAAAA,EAAMukB,aAAc,SAAW,SAC3Cn5B,OAAW,OAAJ4U,QAAI,IAAJA,OAAA,EAAAA,EAAMukB,aAAc,QAAU,QAEvCj4B,UAAU,mBAEP0T,EAAKykB,QAAUzkB,EAAKykB,OAAOh7B,OAAS,EACrC,yBAAK6C,UAAU,QACb,8BACG0T,EAAKmkB,SACFnkB,EAAKokB,SACLpkB,EAAKqkB,gBAAgBL,EAAiBxkC,YACpC,IALV,eAiBGwgB,QAjBH,IAiBGA,OAjBH,EAiBGA,EAAMykB,OAAOlqB,KAAI,SAACwpB,EAAOhX,GAAR,aAChB,kBAAC,IAAM2X,SAAP,CAAgB3/B,IAAKgoB,GACnB,kBAAC,GAAD,CACEgX,MAAOA,EACPC,iBAAkBA,EAClBC,cAAeA,EACfC,SAAUlkB,EAAKrG,KAEhBoT,GAAQ,OAAJ/M,QAAI,IAAJA,GAAA,UAAAA,EAAMykB,cAAN,eAAch7B,QAAS,GAAK,2CAzBvC,KA+BA,yBAAK6C,UAAU,kBACb,8BAC4B,KAArB,OAAJ0T,QAAI,IAAJA,GAAA,UAAAA,EAAMykB,cAAN,eAAch7B,SAAgBuW,EAAKmkB,SAChCnkB,EAAKokB,SACLpkB,EAAKqkB,gBAAgBL,EAAiBxkC,e,w8HC/F7C,IAAMmlC,GAAgBj8B,KAAOC,IAAV,MAGbi8B,GAAal8B,KAAOC,IAAV,KAKWmL,IAKrB+wB,GAAen8B,KAAOC,IAAV,MAOZm8B,GAAWp8B,aAAO0D,GAAP1D,CAAH,MAQR,qBAAGR,MAAkB7C,OAAOwB,cAGPiN,IAOV,gBAAG5L,EAAH,EAAGA,MAAH,SAAUpC,OACnBoC,EAAM7C,OAAOwB,YAAcqB,EAAM7C,OAAO2B,aAEzC,cAAGkB,MAAH,SAAUpC,OAAuB,MAAQ,QAKnBgO,IACV,gBAAG5L,EAAH,EAAGA,MAAH,SAAUpC,OACnBoC,EAAM7C,OAAOwB,YAAc,iBAIxC,gBAAGf,EAAH,EAAGA,OAAQoC,EAAX,EAAWA,MAAX,OACApC,GAAM,uBAEGoC,EAAM7C,OAAOwB,YAFhB,kBAGJg+B,GAHI,sDAQN,qBAAGhD,WACM,2BAIqB/tB,IAMrBixB,GAAWr8B,KAAOC,IAAV,MACRq8B,GAAWt8B,KAAOC,IAAV,MACjB,qBAAG7C,QACH,6BAI8BgO,IAIrBmxB,GAAsBv8B,KAAOC,IAAV,MACnBu8B,GAAiBx8B,KAAOC,IAAV,MACdw8B,GAAuBz8B,KAAOC,IAAV,MAElB,qBAAGgZ,YACD,qBAAGzZ,MAAkBf,MAAMjC,QAEjC,qBAAGgD,MAAkB7C,OAAO4B,YAE1Bm+B,GAAoB18B,KAAOC,IAAV,KAGImL,IAIrBuxB,GAAkB38B,KAAOC,IAAV,MAMA,qBAAGT,MAAkB7C,OAAO2B,aAC9B,qBAAGkB,MAAkB7C,OAAO2B,aAElD,qBAAGs+B,aACQ,mCAKX,qBAAGC,WACM,iCAIR,gBAAGz6B,EAAH,EAAGA,MAAH,OACAA,GAAK,4BAEQA,EAFR,YAKG06B,GAAkB98B,KAAOC,IAAV,MAGf88B,GAAkB/8B,KAAOC,IAAV,KAGMmL,IAIrB4xB,GAAsBh9B,KAAOC,IAAV,MAOJ,qBAAGT,MAAkB7C,OAAO2B,aAC9B,qBAAGkB,MAAkB7C,OAAO2B,aAElD,qBAAGs+B,aACQ,mCAKX,qBAAGC,WACM,iCAKT,qBAAGxB,OACE,uCAKL,gBAAGj5B,EAAH,EAAGA,MAAH,OACAA,GAAK,4BAESA,EAFT,YCoIM66B,ID/HgBj9B,KAAOyhB,EAAV,MAGjB,qBAAGjiB,MAAkB7C,OAAO4B,YAGYyB,aAAO0D,GAAP1D,CAAH,MAUnC,qBAAGR,MAAkB7C,OAAO4B,YACnC,gBAAGnB,EAAH,EAAGA,OAAQoC,EAAX,EAAWA,MAAX,OACApC,GAAM,uBAECoC,EAAM7C,OAAOQ,MAFd,cAOmB6C,KAAOshB,GAAV,MAWX,SAACvb,GAAD,OAAWA,EAAM61B,YAAc,YAiBxB,qBAAGp8B,MAAkB7C,OAAOI,uBAI5B,qBAAGyC,MAAkB7C,OAAOe,kBCjLhC,SAAC,GAAuD,IAArDw/B,EAAoD,EAApDA,SAAoD,IAA1CjkB,gBAA0C,MAA/B,QAA+B,EACjE9H,EAAMD,aAAe,WAArBC,EAEFhR,EAAWC,cAETtF,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBALiE,EASvC6J,aAChC,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WAD7Bqb,EATiE,EASjEA,GAAIipB,EAT6D,EAS7DA,kBAT6D,EAazBj7B,mBAE9C1I,GAAamC,MAAK,SAACC,GAAD,MAA6B,OAAnBA,EAAKjC,cAfsC,oBAalEwkC,EAbkE,KAahD6B,EAbgD,OAmBrE99B,mBAAuC,MAnB8B,oBAiBvE+9B,EAjBuE,KAkBvEC,EAlBuE,KAqBnEC,EAAiCvoC,KAAKC,MAAMkoC,EAASK,SAE3D18B,qBAAU,WACR,IAAM03B,EAAuC2E,EAASM,oBAClDzoC,KAAKC,MAAMkoC,EAASM,qBACpB,KAEJH,EAA+B9E,KAC9B,CAAC2E,EAASM,sBAMb,IAAMjC,EAAgB,SAACC,EAAkBiC,GACvC,GAAKL,EAAL,CACA,IAAMM,EAAiBN,EAA4BvrB,KAAI,SAAC9a,GACtD,GAAIA,EAAWka,KAAOuqB,EAAU,CAC9B,QAAgBppB,IAAZqrB,EAAuB,CACzB,IAAME,EAAY5mC,EAAWglC,OAAOlqB,KAAI,SAACwpB,GACvC,OAAIA,EAAMpqB,KAAOwsB,EACR,2BACFpC,GADL,IAEEI,UAAWJ,EAAMI,WAGdJ,KAET,OAAO,2BACFtkC,GADL,IAEEglC,OAAQ4B,IAIZ,OADApe,QAAQ2H,IAAInwB,GACL,2BACFA,GADL,IAEE0kC,UAAW1kC,EAAW0kC,WAG1B,OAAO1kC,KAGTsmC,EAA+BK,KAG3BE,EACqD,IAAzD1yB,OAAO8G,QAAQjd,KAAKC,MAAMkoC,EAASU,WAAW78B,OAC1C,KACAhM,KAAKC,MAAMkoC,EAASU,UAoD1B,OA7CA/8B,qBAAU,WACR,IAAM85B,EAAoB7/B,EAAgB4iB,QACxC,SAACkd,GAAD,OAAYA,EAAOlpB,YAAcL,KAGnC,GAAIA,GAAMspB,EAAkB55B,OAAS,EAAG,CACtC,IAAM85B,EAAgBlkC,GAAamC,MACjC,SAACC,GAAD,OAAUA,EAAKjC,YAAc6jC,EAAkB,GAAG7oB,cAGhD+oB,IACFsC,EAAoBtC,GACpB16B,EAASlH,GAAuB4hC,QAGnC,CAAC//B,EAAiBuW,IAErBxQ,qBAAU,WACR,GAAKy5B,EAAL,CAEA,IAAMuD,EAA0B9oC,KAAKC,MAAMslC,GACrCwD,EAAkB5yB,OAAOC,KAAK0yB,GAGpC,GAA+B,IAA3BC,EAAgB/8B,OAApB,CAEA,IAAMg9B,EAAiBpnC,GAAamC,MAClC,SAACC,GAAD,OAAUA,EAAKjC,YAAcgnC,EAAgB,MAG3CC,IACFZ,EAAoBY,GACpB59B,EAASlH,GAAuB8kC,SAEjC,CAACzD,IAYF,kBAACmC,GAAD,CAAsBxjB,SAAUA,GAC9B,yBAMErV,UAAU,iCAOV,kBAAC,GAAD,CACEnG,YAAY,yBACZ28B,SAnEe,SAACznB,GACtBwqB,EAAoBxqB,GACpBxS,EAASlH,GAAuB0Z,UAoE3ByqB,GACDA,EAA4Br8B,OAAS,GACrCu6B,GACE,oCACE,uBAAG13B,UAAU,2BAAb,OACG03B,QADH,IACGA,OADH,EACGA,EAAkBvkC,YAErB,yBAAK6M,UAAU,4BACZw5B,EACE1f,QAAO,SAACpG,GAAD,OAAUA,EAAKqkB,mBACtB9pB,KAAI,SAACyF,EAAM8M,EAAGxP,GAAV,OACH,oCACE,kBAAC,GAAD,CACEvY,IAAKib,EAAKrG,GAAKmT,EACf9M,KAAMA,EACNgkB,iBAAkBA,EAClBC,cAAeA,IAEhBnX,EAAIxP,EAAM7T,OAAS,GAAK,mDAOvC,yBAAK6C,UAAU,+BACb,uBAAGA,UAAU,2BAKVuN,EAAE,eAIP,kBAACurB,GAAD,KACE,kBAACC,GAAD,CAAiBE,WAAS,IAC1B,kBAACF,GAAD,CAAiBC,aAAW,EAACC,WAAS,EAACz6B,MAAM,SAC1Ck5B,GAAoBA,EAAiBrkC,QAG1C,kBAAC6lC,GAAD,OACKc,GACD,kBAACb,GAAD,KACE,kBAACC,GAAD,KACG1B,GAAoBA,EAAiBtkC,OAExC,kBAACgmC,GAAD,CAAqBJ,aAAW,EAACx6B,MAAM,SACpC47B,KAAKC,MACJC,WAAWN,EAAS,GAAG5mC,QAClBkmC,EAASiB,iBACRD,WAAWhB,EAASiB,mBACjBjB,EAASkB,YACRF,WAAWhB,EAASkB,aACpB,OACJ,IAEPR,EAAS,GAAGrnB,MAVf,MAYGynB,KAAKC,MACJC,WAAWN,EAAS,GAAG5mC,QAClBkmC,EAASiB,iBACRD,WAAWhB,EAASiB,kBACpB,IAEPP,EAAS,GAAGrnB,QAKlB+mB,EACE5f,QACC,SAAC2gB,GAAD,QACIA,EAAQtqB,SAA4B,qBAAjBsqB,EAAQ74B,SAEhCqM,KAAI,SAACwsB,EAAS3oB,GAAV,OACH,kBAACqnB,GAAD,CAAiB1gC,IAAG,UAAKgiC,EAAQptB,GAAb,YAAmByE,IACrC,kBAACsnB,GAAD,CACEH,YAAawB,EAAQhD,MACrBA,QAASgD,EAAQhD,OAEhBC,GACC+C,EAAQC,kBACRD,EAAQC,iBAAiBhD,EAAiBxkC,WAC5C,6BACA,8BACGwkC,GACC+C,EAAQE,oBACRF,EAAQE,mBAAmBjD,EAAiBxkC,aAGlD,kBAACkmC,GAAD,CACEJ,aAAW,EACXC,YAAawB,EAAQhD,MACrBj5B,MAAM,SAELi8B,EAAQ54B,YACR44B,EAAQ9mB,cCnOVinB,GAvCU,SAAC,GAII,IAH5BC,EAG2B,EAH3BA,KAG2B,EAF3BrhC,OAE2B,EAD3BshC,UAEA,OACE,kBAACpF,GAAD,KACGmF,EAAK5sB,KAAI,SAACrX,GAAD,OACR,kBAAC++B,GAAD,CAAuBl9B,IAAK7B,EAAI6W,IAC9B,kBAAC4nB,GAAD,CAAmBjuB,KAAMyzB,EAAK19B,QAC5B,kBAACm4B,GAAD,CAAiB97B,QAAQ,EAAO+7B,WAAS,GACtC3+B,EAAIgL,QAGT,kBAAC4zB,GAAD,KACE,kBAACC,GAAD,CAAiBj8B,QAAQ,GACtB5C,EAAImkC,iBACH,kBAAC,GAAD,CAAiB/G,KAAMp9B,EAAImkC,kBAE5BnkC,EAAIokC,gBACH,kBAAC,GAAD,CAAuBrG,YAAa/9B,EAAIokC,iBAEzCpkC,EAAIqkC,UAAY,kBAAC,GAAD,CAAgBnG,UAAWl+B,EAAIqkC,WAC/CrkC,EAAIskC,eACH,kBAAC,GAAD,CAAa7lB,SAAS,OAAOikB,SAAU1iC,EAAIskC,gBAE5CtkC,EAAIukC,oBACH,kBAAC,GAAD,CACE3G,gBAAiB59B,EAAIukC,6BCexBC,GA7CW,SAAC,GAII,IAH7BP,EAG4B,EAH5BA,KACArhC,EAE4B,EAF5BA,OACAshC,EAC4B,EAD5BA,UAEA,OACE,oCACE,kBAACzF,GAAD,CAAmBjuB,KAAMyzB,EAAK19B,QAC3B09B,EAAK5sB,KAAI,SAACrX,GAAD,OACR,kBAAC0+B,GAAD,CACE78B,IAAK7B,EAAI6W,GACTjU,OAAQA,IAAW5C,EAAI6W,GACvBxD,QAAS,WACP6wB,EAAUlkC,EAAI6W,MAGf7W,EAAIgL,WAIX,kBAAC4zB,GAAD,KACGqF,EAAK5sB,KAAI,SAACrX,GAAD,OACR,kBAAC6+B,GAAD,CAAiBh9B,IAAK7B,EAAI6W,GAAIjU,OAAQA,IAAW5C,EAAI6W,IAClD7W,EAAImkC,iBACH,kBAAC,GAAD,CAAiB/G,KAAMp9B,EAAImkC,kBAE5BnkC,EAAIokC,gBACH,kBAAC,GAAD,CAAuBrG,YAAa/9B,EAAIokC,iBAEzCpkC,EAAIqkC,UAAY,kBAAC,GAAD,CAAgBnG,UAAWl+B,EAAIqkC,WAC/CrkC,EAAIskC,eACH,kBAAC,GAAD,CAAa7lB,SAAS,OAAOikB,SAAU1iC,EAAIskC,gBAE5CtkC,EAAIukC,oBACH,kBAAC,GAAD,CACE3G,gBAAiB59B,EAAIukC,4BCzBtBE,GAhBK,SAAC,GAAgC,IAA9BR,EAA6B,EAA7BA,KACftrB,EAAUC,aAAc,sCADoB,EAGtB/T,mBAASo/B,EAAK,GAAGptB,IAHK,oBAG3CjU,EAH2C,KAGnCshC,EAHmC,KAKlD,OACE,kBAAC1F,GAAD,KACG7lB,EACC,kBAAC,GAAD,CAAmBsrB,KAAMA,EAAMrhC,OAAQA,EAAQshC,UAAWA,IAE1D,kBAAC,GAAD,CAAoBD,KAAMA,EAAMrhC,OAAQA,EAAQshC,UAAWA,M,syGCrB5D,IAAMQ,GAA2Bl/B,KAAOC,IAAV,MA4Bb,qBAAGT,MAAkB7C,OAAOI,uBAG5B,qBAAGyC,MAAkB7C,OAAOe,iBAGhD2N,GAlCiC,OAuCxB8zB,GAA2Bn/B,KAAOkF,IAAV,MAMxBk6B,GAA4Bp/B,aAAO0D,GAAP1D,CAAH,MAO3B,qBAAGR,MAAkB7C,OAAOa,QAYnC6N,GAnBkC,OAuBzBg0B,GAA6Br/B,KAAOC,IAAV,MAc1Bq/B,GAA0Bt/B,aAAO0D,GAAP1D,CAAH,MAGzB,qBAAGR,MAAkB7C,OAAOa,QAQnC6N,GAXgC,OAevBk0B,GAAsBv/B,KAAOC,IAAV,MAMV,qBAAGT,MAAkB7C,OAAOC,SAO5CyiC,GAGAF,GAGAG,GAIAF,GASF1zB,GAhC4B,MAmC5BF,GAnC4B,MAsC5BH,GAtC4B,OCxDjBm0B,GA3BS,SAAC,GAAwC,IAAtCC,EAAqC,EAArCA,SACjBtuB,EAAMD,aAAe,WAArBC,EAER,OACE,kBAAC+tB,GAAD,KACGO,EAAS5tB,KAAI,SAAC7b,GAAD,OACZ,kBAACupC,GAAD,CAAqBljC,IAAKrG,EAAQqb,IAChC,kBAAC,GAAD,CACEyW,GAAI,CACFqC,SAAS,aAAD,OAAen0B,EAAQqb,GAAvB,MAEVwG,QAAQ,QACR7R,MAAM,QAEN,kBAACo5B,GAAD,KACGjuB,EAAE,mBADL,IACyB,kBAAC,GAAD,CAAM3I,SAAS,kBAExC,kBAAC62B,GAAD,MACA,kBAACF,GAAD,CAA0B/5B,IAAKpP,EAAQ42B,UAAUjnB,MACjD,kBAAC25B,GAAD,KAA0BtpC,EAAQX,a,iwBClCvC,IAAMqqC,GAAoB1/B,KAAOC,IAAV,MACR,qBAAGT,MAAkB7C,OAAOC,UAC5B,qBAAG4C,MAAkB7C,OAAOa,SAiBrCmiC,GAAe3/B,KAAOkF,IAAV,MAIZ06B,GAAe5/B,aAAO0D,GAAP1D,CAAH,MAKd,qBAAGR,MAAkB7C,OAAOM,iBCIxB4iC,GArBE,SAAC,GAA0B,IAAxBtpC,EAAuB,EAAvBA,MACZ4J,EAAWC,cAEXuxB,EAA4BrgB,uBAAY,WAC5CnR,EACE1J,EAAU,CACRF,aAGH,CAAC4J,EAAU5J,IAEd,OACE,kBAACmpC,GAAD,CAAmB7xB,QAAS8jB,GACzBp7B,GAASA,EAAMgS,MAAQhS,EAAMgS,KAAKA,MACjC,kBAACo3B,GAAD,CAAcv6B,IAAK7O,EAAMgS,KAAKA,KAAMjD,IAAK/O,EAAMlB,OAEhDkB,GAASA,EAAMgS,MAAQ,kBAACq3B,GAAD,KAAerpC,EAAMgS,KAAKgO,S,06BC7BjD,IAAMupB,GAAiB9/B,KAAOC,IAAV,MA2BH,qBAAGT,MAAkB7C,OAAOI,uBAG5B,qBAAGyC,MAAkB7C,OAAOe,iBAIhD8N,GAlCuB,OCgCZu0B,GAxBD,SAAC,GAAoC,IAAlC/N,EAAiC,EAAjCA,eACTgO,EACJhO,GACAA,EAAetU,QACb,SAACnnB,GAAD,OACEA,GAASA,EAAMgS,MAAQhS,EAAMgS,KAAKA,MAAQhS,EAAMgS,KAAKA,KAAKjM,SAAS,SAGzE,OACE,oCACG0jC,EAAWj/B,OAAS,EACnB,kBAAC++B,GAAD,KACGE,EAAWnuB,KACV,SAACtb,GAAD,OACEA,GAASA,EAAM8a,IAAM,kBAAC,GAAD,CAAUhV,IAAK9F,EAAM8a,GAAI9a,MAAOA,QAI3D,uC,4TCxBD,IAAM0pC,GAAyBjgC,KAAOC,IAAV,MAKtBigC,GAAoBlgC,aAAO0D,GAAP1D,CAAH,MAInB,qBAAGR,MAAkB7C,OAAOO,SCKxBijC,GARO,SAAC,GAAkC,IAAhC9xB,EAA+B,EAA/BA,KACvB,OACE,kBAAC4xB,GAAD,KACE,kBAACC,GAAD,KAAoB7xB,K,uoDCVnB,IAAM+xB,GAAiBpgC,KAAOqgC,QAAV,KAEvB70B,GAFuB,OAOd80B,GAActgC,KAAOC,IAAV,KAOpBuL,GAPoB,OAaX+0B,GAAiBvgC,KAAOC,IAAV,KACvBuL,GADuB,OAKdg1B,GAAiBxgC,KAAOC,IAAV,KAEvBuL,GAFuB,OAOdi1B,GAAiBzgC,KAAO0gC,MAAV,MACA,qBAAGlhC,MAAkB7C,OAAOC,SAInD4O,GALuB,OAUdm1B,GAAmB3gC,aAAO0D,GAAP1D,CAAH,MAClB,qBAAGR,MAAkB7C,OAAOM,iBAO1B2jC,GAAkB5gC,aAAO0D,GAAP1D,CAAH,MAIjB,qBAAGR,MAAkB7C,OAAOO,SC0ExB2jC,GAtGY,SAAC,GAGI,IAF9B7qC,EAE6B,EAF7BA,QACA8qC,EAC6B,EAD7BA,gBAEQ3vB,EAAMD,aAAe,WAArBC,EAEF/P,EAAWqkB,eAEXvvB,EAAgByO,aACpB,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQE,iBAGrC,OACE,kBAACkqC,GAAD,KACE,kBAACE,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,KACE,kBAAC,GAAD,CAAenyB,KAAM8C,EAAE,wBACtBnb,GACCA,EAAQuf,qBACRvf,EAAQuf,oBAAoBxU,OAAS,GACnC,kBAAC,GAAD,CACEixB,eAAgBh8B,EAAQuf,sBAI7Bvf,GACCA,EAAQuf,qBACRvf,EAAQuf,oBAAoBxU,OAAS,GACnC,kBAAC,GAAD,CAAOixB,eAAgBh8B,EAAQuf,sBAGlCnU,EAAS+oB,SAAS7tB,SAAS,UAC1B,oCACE,kBAACqkC,GAAD,KAAmBxvB,EAAE,wBACrB,kBAACyvB,GAAD,KAAkB1qC,IAGrBF,GAAWA,EAAQyP,aAClB,oCACE,kBAACk7B,GAAD,KACGxvB,EAAE,+BAEL,kBAAC,GAAD,CAAY9C,KAAMrY,EAAQyP,eAI7BzP,GAAWA,EAAQmf,QAAUnf,EAAQmf,OAAOpU,OAAS,GACpD,oCACE,kBAAC4/B,GAAD,KACGxvB,EAAE,0BAEL,kBAAC,GAAD,CAAegE,OAAQnf,EAAQmf,UAIlCnf,GAAWA,EAAQyoC,MAAQzoC,EAAQyoC,KAAK19B,OAAS,GAChD,kBAAC,GAAD,CAAa09B,KAAMzoC,EAAQyoC,OAG5BzoC,GAAWA,EAAQ42B,WAClB,kBAAC,GAAD,CAAa5b,KAAK,UAAUhb,QAASA,IAGtCA,GACCA,EAAQm6B,aACRn6B,EAAQo6B,SACRp6B,EAAQo6B,QAAQ2Q,OACd,kBAAC,GAAD,CACE5Q,YAAan6B,EAAQm6B,YACrBC,QAASp6B,EAAQo6B,QAAQ2Q,QAI9BD,GACCA,EAAgBrB,UAChBqB,EAAgBrB,SAAS1+B,OAAS,GAChC,oCACE,kBAAC4/B,GAAD,KACGxvB,EAAE,2BAEL,kBAAC,GAAD,CAAiBsuB,SAAUqB,EAAgBrB,cAKrD,kBAACc,GAAD,KACE,kBAACE,GAAD,KAEE,kBAAC,GAAD,CACEpyB,MAAa,OAAPrY,QAAO,IAAPA,OAAA,EAAAA,EAASgrC,eAAgB7vB,EAAE,2BAElCnb,GAAWA,EAAQirC,SAClB,kBAAC,GAAD,CAAe5K,WAAYrgC,EAAQirC,QAAQ5K,kBC0B1C6K,GAxHW,SAAC,GAGI,IAF7BlrC,EAE4B,EAF5BA,QACA8qC,EAC4B,EAD5BA,gBAEQ3vB,EAAMD,aAAe,WAArBC,EAEF/P,EAAWqkB,eAETjrB,EAAQmK,aAAY,SAACnP,GAAD,OAAqBA,EAAM0G,aAA/C1B,IACFtE,EAAgByO,aACpB,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQE,iBAGrC,OACE,kBAACkqC,GAAD,KACE,kBAACE,GAAD,MACIphC,KAAE4sB,QAAQ91B,IACV,kBAACwqC,GAAD,KACI,WACA,OAAQhmC,GACN,IAAK,OACH,OACE,oCACE,kBAAC,GAAD,CAAe6T,KAAM8C,EAAE,wBACtBnb,GACCA,EAAQuf,qBACRvf,EAAQuf,oBAAoBxU,OAAS,GACnC,kBAAC,GAAD,CACEixB,eAAgBh8B,EAAQuf,sBAI7Bvf,GAAWA,EAAQuf,oBAAoBxU,OAAS,GAC/C,kBAAC,GAAD,CAAOixB,eAAgBh8B,EAAQuf,sBAEhCnU,EAAS+oB,SAAS7tB,SAAS,UAC1B,oCACE,kBAACqkC,GAAD,KACGxvB,EAAE,wBAEL,kBAACyvB,GAAD,KAAkB1qC,IAGrBF,GAAWA,EAAQyP,aAClB,oCACE,kBAACk7B,GAAD,KACGxvB,EAAE,+BAEL,kBAAC,GAAD,CAAY9C,KAAMrY,EAAQyP,eAI7BzP,GAAWA,EAAQmf,QAAUnf,EAAQmf,OAAOpU,OAAS,GACpD,oCACE,kBAAC4/B,GAAD,KACGxvB,EAAE,0BAEL,kBAAC,GAAD,CAAegE,OAAQnf,EAAQmf,UAGlCnf,GAAWA,EAAQyoC,MAAQzoC,EAAQyoC,KAAK19B,OAAS,GAChD,kBAAC,GAAD,CAAa09B,KAAMzoC,EAAQyoC,OAG5BqC,GACCA,EAAgBrB,UAChBqB,EAAgBrB,SAAS1+B,OAAS,GAChC,oCACE,kBAAC4/B,GAAD,KACGxvB,EAAE,2BAEL,kBAAC,GAAD,CACEsuB,SAAUqB,EAAgBrB,aAMxC,IAAK,UACH,OACE,oCACGzpC,GACC,kBAAC,GAAD,CACEm6B,YAAan6B,EAAQm6B,YACrBC,QAASp6B,EAAQo6B,QAAQ2Q,SAKnC,IAAK,QACH,OACE,6BACE,kBAAC,GAAD,CAAe1yB,KAAK,eAG1B,QACE,OACE,kBAACoyB,GAAD,KAEE,kBAAC,GAAD,CACEpyB,MACS,OAAPrY,QAAO,IAAPA,OAAA,EAAAA,EAASgrC,eAAgB7vB,EAAE,2BAG9Bnb,GACC,kBAAC,GAAD,CACEqgC,WAAYrgC,EAAQirC,QAAQ5K,eAxFxC,O,stDCzCP,IAAM8K,GAAwBnhC,KAAOC,IAAV,MASV,qBAAGT,MAAkB7C,OAAOc,eAOvC2jC,GAAsBphC,aAAO0D,GAAP1D,CAAH,MASrB,qBAAGR,MAAkB7C,OAAOO,SAE1BmkC,GAAsBrhC,KAAOkF,IAAV,MAInBo8B,GAA0BthC,aAAO0D,GAAP1D,CAAH,MAIzB,qBAAGR,MAAkB7C,OAAOM,iBAE1BskC,GAAgCvhC,aAAO0D,GAAP1D,CAAH,MAI/B,qBAAGR,MAAkB7C,OAAOM,iBAG1BukC,GAAyBxhC,KAAOC,IAAV,MAGtBwhC,GAA8BzhC,aAAO0D,GAAP1D,CAAH,MAK7B,qBAAGR,MAAkB7C,OAAOO,SAG1BwkC,GAA+B1hC,KAAOC,IAAV,MAM5B0hC,GAA6B3hC,KAAOkF,IAAV,MAK1B08B,GAA2B5hC,KAAOC,IAAV,MACjC,gBAAGxD,EAAH,EAAGA,KAAM+C,EAAT,EAASA,MAAT,OAAqB/C,GAAI,uBAChB+C,EAAM7C,OAAO4B,SADG,kBAEvB6iC,GAFuB,2KASvBC,GATuB,qDAYvBI,GAZuB,gFAgBvBN,GAhBuB,iGAsBvBO,GAtBuB,+CCmGdG,GA3IS,SAAC,GAAgD,IAA9Cl0B,EAA6C,EAA7CA,WAAYlR,EAAiC,EAAjCA,KAC7B0U,EAAMD,aAAe,oBAArBC,EAEFhR,EAAWC,cAHqD,EAK5CuE,aACxB,SAACnP,GAAD,OAAqBA,EAAMiG,mBADrBnF,EAL8D,EAK9DA,OAAQC,EALsD,EAKtDA,MAIVurC,EACJvrC,GACAA,EAAMwrC,WACNxrC,EAAMwrC,UAAUhhC,OAAS,GACzBxK,EAAMwrC,UAAUrkB,QAAO,SAACtkB,GAAD,QAAgBA,EAAS2/B,kBAE5CvS,EAAmBlV,uBAAY,WAC9B3D,GACHxN,EAASzJ,OAEV,CAACyJ,EAAUwN,IAERq0B,EAAkC1wB,uBAAY,WAClDnR,EAAS1J,GAAU,CAAEF,aACpB,CAAC4J,EAAU5J,IAEd,OACE,kBAACmX,GAAD,CACEpX,OAAQA,EACRqS,MAAO6d,EACP7Y,WAAYA,EACZlR,KAAMA,GAEN,kBAACgR,GAAD,KACE,kBAACm0B,GAAD,CAA0BnlC,KAAMA,GAC9B,kBAAC0kC,GAAD,KACE,kBAACC,GAAD,KACG7qC,GAASA,EAAMgS,MAAQhS,EAAMgS,KAAKA,MACjC,kBAAC84B,GAAD,CAAqBj8B,IAAK7O,EAAMgS,KAAKA,OAEtChS,GAASA,EAAMlB,MAAQkB,EAAMlB,KAAKkoB,eAErC,kBAAC+jB,GAAD,KACG/qC,GACDA,EAAM+wB,UACN/wB,EAAM+wB,SAASjyB,MACfkB,EAAM+wB,SAASjyB,KAAKkoB,cAAcjhB,SAAS,WACvC6U,EAAE,6BACFA,EAAE,sBAGV,kBAACqwB,GAAD,KACE,kBAACC,GAAD,KACGtwB,EAAE,6BAEJ5a,GAASA,EAAMkP,aACd,kBAAC,GAAD,CACE4I,KAAM9X,EAAMkP,YACZrD,MAAM,SACN3F,MAAI,EACJmb,OAAO,oBAGX,kBAAC8pB,GAAD,KACE,kBAAC,GAAD,CACErzB,KAEM8C,EADJ1U,EACM,gCACA,yBAERoR,QAAS,kBAAMm0B,KACfvlC,KAAMA,EACN0R,SAAO,KAGV2zB,GACCA,EAAyB/gC,OAAS,GAChC,kBAAC0gC,GAAD,KACGtwB,EAAE,2BAGR2wB,GACCA,EAAyB/gC,OAAS,GAClC+gC,EAAyBjwB,KAAI,SAACzY,GAAD,OAC3B,oCACE,kBAACmoC,GAAD,eACMva,KAAO5tB,EAAS2/B,gBAAgBnT,OAClC,cAFJ,cAGSxsB,EAASy/B,mBAOvBp8B,EACC,kBAAC6kC,GAAD,KACGnwB,EAAE,uBAGL,kBAACswB,GAAD,KACGtwB,EAAE,uBAIN5a,GAASA,EAAM+wB,UAAY/wB,EAAM+wB,SAASntB,MACzC,kBAACwnC,GAAD,CACEv8B,IAAK7O,EAAM+wB,SAASntB,KAAKwL,IACzBK,MAAO,IACPV,IAAG,eAAU/O,EAAM+wB,SAASjyB,QAI/BkB,GAASA,EAAM+wB,UAAY/wB,EAAM+wB,SAAS7hB,aACzC,kBAAC,GAAD,CACE4I,KAAM9X,EAAM+wB,SAAS7hB,YACrBrD,MAAM,SACN3F,MAAI,EACJmb,OAAO,oBAGX,yBACEhT,MAAO,CACLiT,QAAS,OACToqB,eAAgB,WAGlB,kBAAC,GAAD,CACE5zB,KAAM8C,EAAE,2BACRtD,QAAS,kBAAM2Y,KACf/pB,KAAMA,U,srFC5Jf,IAAMylC,GAA8BliC,KAAOC,IAAV,MAShB,qBAAGT,MAAkB7C,OAAOc,eAOvC0kC,GAA4BniC,aAAO0D,GAAP1D,CAAH,MAM3B,qBAAGR,MAAkB7C,OAAOO,SAG1BklC,GAA4BpiC,aAAO0D,GAAP1D,CAAH,MAO3B,qBAAGR,MAAkB7C,OAAOM,iBAS1BolC,GAA4BriC,KAAOkF,IAAV,MAIzBo9B,GAAgCtiC,aAAO0D,GAAP1D,CAAH,MAK/B,qBAAGR,MAAkB7C,OAAOuB,SAG1BqkC,GAA+BviC,KAAOC,IAAV,MAC5BuiC,GAAoCxiC,aAAO0D,GAAP1D,CAAH,MAOnC,qBAAGR,MAAkB7C,OAAOO,SAE1BulC,GAAmCziC,aAAO0D,GAAP1D,CAAH,MAKlC,qBAAGR,MAAkB7C,OAAOM,iBAE1BylC,GAAiC1iC,KAAOC,IAAV,MAO9B0iC,GAA8B3iC,KAAOC,IAAV,MAK3B2iC,GAAqC5iC,KAAOoE,EAAV,MAKpC,qBAAG5E,MAAkB7C,OAAOQ,SAG1B,qBAAGqC,MAAkB7C,OAAOS,UAM5BylC,GAAuC7iC,KAAOiO,OAAV,MAKtC,qBAAGzO,MAAkB7C,OAAOQ,SAI1B,qBAAGqC,MAAkB7C,OAAOS,UAO5B0lC,GAAiC9iC,KAAOC,IAAV,MACvC,gBAAGxD,EAAH,EAAGA,KAAM+C,EAAT,EAASA,MAAT,OAAqB/C,GAAI,iBACtB0lC,GADsB,kCAER3iC,EAAMf,MAAMhC,KAFJ,8DAId+C,EAAM7C,OAAO2B,UAJC,+EAQtB8jC,GARsB,4BASd5iC,EAAM7C,OAAO4B,SATC,2BAWtB+jC,GAXsB,gFAetBE,GAfsB,8DAiBRhjC,EAAMf,MAAMhC,KAjBJ,8DAoBtBmmC,GApBsB,4BAqBdpjC,EAAM7C,OAAO2B,UArBC,0EAwBZkB,EAAM7C,OAAOwB,YAxBD,oCA2BtB0kC,GA3BsB,4BA4BdrjC,EAAM7C,OAAO2B,UA5BC,0EA+BZkB,EAAM7C,OAAOwB,YA/BD,6BC4Ed4kC,GArJe,SAAC,GAA0C,IAAxCtmC,EAAuC,EAAvCA,KACvB0U,EAAMD,aAAe,oBAArBC,EAEFhR,EAAWC,cAHqD,EAK5CuE,aACxB,SAACnP,GAAD,OAAqBA,EAAMmG,yBADrBrF,EAL8D,EAK9DA,OAAQC,EALsD,EAKtDA,MAGR8D,EAAesK,aAAY,SAACnP,GAAD,OAAqBA,EAAM6E,cAAtDA,WAEFmsB,EAAmBlV,uBAAY,WACnCnR,EAASzJ,QACR,CAACyJ,IAEEw4B,EAA0BrnB,uBAC9B,SAAClY,GACC+G,EACEy4B,GAAkB,CAChBx/B,gBAIN,CAAC+G,IAGG6iC,EAA+B1xB,uBACnC,SAACpY,GACCiH,EACEg1B,GAAuB,CACrBj8B,MAAOA,OAIb,CAACiH,IAGG8mB,EAAgC3V,uBAAY,WAChDnR,EACEgnB,GAA0B,CACxB5wB,aAGH,CAAC4J,EAAU5J,IAEd,OACE,kBAACmX,GAAD,CAAOpX,OAAQA,EAAQqS,MAAO6d,EAAkB/pB,KAAMA,GACpD,kBAACgR,GAAD,KACE,kBAACq1B,GAAD,CAAgCrmC,KAAMA,GACpC,kBAACylC,GAAD,KACE,kBAACG,GAAD,CAA2Bj9B,IAAK69B,OAChC,kBAACX,GAAD,KACGnxB,EAAE,qBAEJ5a,GAASA,EAAMlB,MACd,kBAAC8sC,GAAD,KACGhxB,EAAE,4BAA6B,CAC9B9b,KAAMkB,EAAMlB,OACXkoB,eAGNhnB,GAASA,EAAM+wB,UACd,kBAAC8a,GAAD,KACE,8BAAOjxB,EAAE,4BACR5a,GAASA,EAAM+wB,UAAY/wB,EAAM+wB,SAASntB,MACzC,kBAAC,GAAD,CACE6Q,KAAM,GACNrF,IAAKpP,EAAM+wB,SAASntB,KAAKwL,IACzB0I,KAAMkc,GAAYh0B,EAAM+wB,SAASjyB,MAAQ,MAE1C,IACH,gCAASkB,EAAM+wB,SAASjyB,QAI9B,kBAACktC,GAAD,KACE,kBAACC,GAAD,KACGrxB,EAAE,sBAEH5a,GAASA,EAAMwrC,WAAaxrC,EAAMwrC,UAAUhhC,OAAS,GACtDxK,GACCA,EAAM2sC,gBACN3sC,EAAM2sC,eAAeniC,OAAS,EAC9B,kBAAC2hC,GAAD,KACGnsC,EAAM2sC,eAAeniC,OAAS,GAC7BxK,EAAM2sC,eAAerxB,KAAI,SAAC3Y,EAAOwc,GAC/B,MAAsB,QAAfxc,EAAM8X,KACX,kBAAC4xB,GAAD,CACEvhC,KAAMnI,EAAMyM,IACZ+N,OAAO,SACP9N,IAAI,sBACJvJ,IAAG,UAAKqZ,EAAL,YAAcxc,EAAM7D,OAEtB6D,EAAM7D,MAGT,kBAACwtC,GAAD,CACEh1B,QAAS,WACPm1B,EAA6B,CAC3B3tC,KAAM6D,EAAM7D,KACZsQ,IAAKzM,EAAMyM,OAGftJ,IAAG,UAAKqZ,EAAL,YAAcxc,EAAM7D,OAEtB6D,EAAM7D,SAIdkB,EAAMwrC,UAAUhhC,OAAS,GACxBxK,EAAMwrC,UAAUlwB,KAAI,SAACsxB,EAAWztB,GAC9B,OACE,kBAACmtB,GAAD,CACEh1B,QAAS,WACP8qB,EAAwBwK,IAE1B9mC,IAAKqZ,GAEJytB,EAAUtK,aACPsK,EAAUtK,aACVsK,EAAU9xB,QAMxB,kBAACoxB,GAAD,wCAIF,kBAACE,GAAD,KACE,kBAAC,GAAD,CACEt0B,KAAM8C,EAAE,4BACRtD,QAAS,WACFxT,EAAW2G,QACdimB,KAGJxqB,MAAI,EACJ0R,SAAO,EACPD,WAAY7T,EAAW2G,QAAU3G,EAAW2G,OAAOD,OAAS,U,6mCCvL5E,IAAMqiC,GAAUzjB,aAAH,MASA0jB,GAAerjC,KAAOC,IAAV,MAOH,qBAAGT,MAAkB7C,OAAOQ,QAEnCimC,IACG,qBAAG5jC,MAAkB7C,OAAOQ,SAYjCmmC,GAAUtjC,KAAOC,IAAV,MAYPsjC,GAAwBvjC,KAAOC,IAAV,MAGtB,gBAAG2X,EAAH,EAAGA,OAAH,OAAiBA,GAAkB,cAElC4rB,GAAiBxjC,KAAOyhB,EAAV,MAEhB,qBAAGjiB,MAAkB7C,OAAOQ,SCxBxBsmC,GAfO,SAAC,GAAyD,IAAvDC,EAAsD,EAAtDA,QAASC,EAA6C,EAA7CA,UAAW/rB,EAAkC,EAAlCA,OAC3C,OAAO+rB,EACL,kBAACJ,GAAD,CAAuB3rB,OAAQA,GAC7B,kBAAC,GAAD,KACE,kBAACyrB,GAAD,MACA,kBAACA,GAAD,MACA,kBAACA,GAAD,OAEDK,GAAW,kBAACF,GAAD,KAAiBE,IAG/B,sC,wQCtBG,IAAME,GAAmB5jC,KAAOC,IAAV,MASP,gBAAG4iB,EAAH,EAAGA,gBAAH,OAClBA,GAAoC,8BCSzBygB,GAVC,SAAC,GAAkD,IAAhDzgB,EAA+C,EAA/CA,gBAAiB8gB,EAA8B,EAA9BA,UAClC,OAAOA,EACL,kBAACC,GAAD,CAAkB/gB,gBAAiBA,GACjC,kBAAC,GAAD,CAAe8gB,UAAWA,EAAW/rB,OAAO,OAG9C,sC,ysDCdJ,IAAMisB,GAASlkB,aAAH,MASCmkB,GAA8B9jC,KAAOC,IAAV,MAI3B8jC,GAA0B/jC,KAAOC,IAAV,MAKvB+jC,GAA4BhkC,KAAOC,IAAV,MAMtB,qBAAGT,MAAkB7C,OAAOa,QAOxBqmC,IAGPI,GAA0BjkC,KAAOC,IAAV,MAMpB,qBAAGT,MAAkB7C,OAAOa,QAOxBqmC,IAIPK,GAA+BlkC,KAAOkF,IAAV,MAI5Bi/B,GAA8BnkC,aAAO0D,GAAP1D,CAAH,MAQ3BokC,GAAiCpkC,aAAO0D,GAAP1D,CAAH,MCqC5BqkC,GAzEY,SAAC,GAAuC,IAgBnC1+B,EAhBFlJ,EAAoC,EAApCA,KACpB0U,EAAMD,aAAe,sBAArBC,EAEFhR,EAAWC,cAH+C,EAKtCuE,aACxB,SAACnP,GAAD,OAAqBA,EAAMoG,sBADrB1C,EALwD,EAKxDA,MAAO5C,EALiD,EAKjDA,OALiD,EAS9B+I,oBAAkB,GATY,oBASzDskC,EATyD,KAS9CW,EAT8C,OAUhCjlC,oBAAkB,GAVc,oBAUzDklC,EAVyD,KAU/CC,EAV+C,KAY1Dhe,EAAmBlV,uBAAY,WACnCnR,EAASzJ,QACR,CAACyJ,IAWJ,OACE,kBAACuN,GAAD,CAAOpX,OAAQA,EAAQqS,MAAO6d,EAAkBrZ,QAAQ,IAAI1Q,KAAMA,GAChE,kBAACqnC,GAAD,KACGH,GACC,kBAACK,GAAD,KACE,kBAAC,GAAD,CAASL,UAAWA,KAGvBY,GACC,kBAACN,GAAD,KACE,kBAACC,GAAD,CAA8B9+B,IAAKq/B,OACnC,kBAACN,GAAD,KACGhzB,EAAE,sBAEL,kBAACizB,GAAD,KACGjzB,EAAE,0BAIT,kBAAC4yB,GAAD,KACE,kBAAC,KAAD,CACEp+B,KA9BoBA,EA8BMzM,EAAMyM,MA5BxC,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAKrJ,SAAS,aAEhB,OAAOqJ,QAAP,IAAOA,OAAP,EAAOA,EAAKohB,QAAQ,WAAY,WAE3BphB,IAwByCzM,EAAMyM,KAC9C4vB,UAAU,EACVvvB,MAAM,OACN0+B,SAAS,EACTz+B,OAAO,OACP0+B,MAAM,EACN//B,MAAO,CACLgT,OAAQ,SACR5R,MAAO,OACPiT,SAAU,QACVhT,OAAQ,OACR2+B,UAAW,gCAEbC,QAAS,WACPP,GAAa,IAEfQ,QAAS,WACPN,GAAY,GACZF,GAAa,UCzFdS,GAAyD,SACpE/zB,GAEA,OAAIA,EAAK1U,SAAS,OACT,CACLjH,KAAM,MACN2vC,YAAah0B,GAGfA,EAAK1U,SAAS,QACd0U,EAAK1U,SAAS,QACd0U,EAAK1U,SAAS,SACd0U,EAAK1U,SAAS,OAEP,CACLjH,KAAM,QACN2vC,YAAah0B,GAGfA,EAAK1U,SAAS,QACd0U,EAAK1U,SAAS,QACd0U,EAAK1U,SAAS,QAEP,CACLjH,KAAM,QACN2vC,YAAah0B,QAPV,G,ohFCnBT,IAAM6yB,GAASlkB,aAAH,MASCslB,GAAyBjlC,KAAOC,IAAV,MAOtBilC,GAAuBllC,KAAOC,IAAV,MAG7B,qBAAGklC,MACC,qDAOKC,GAA+BplC,KAAOC,IAAV,MAI5BolC,GAAuBrlC,aAAO0D,GAAP1D,CAAH,MAMjB,qBAAGR,MAAkB7C,OAAOa,QAOxBqmC,IAGPyB,GAAqBtlC,KAAOkF,IAAV,MAGlBqgC,GAAqBvlC,KAAOuzB,MAAV,MAGlBiS,GAAuBxlC,KAAOC,IAAV,MACpBwlC,GAA4BzlC,aAAO0D,GAAP1D,CAAH,MAO3B,qBAAGR,MAAkB7C,OAAOO,SAE1BwoC,GAA2B1lC,KAAOoE,EAAV,MAI1B,qBAAG5E,MAAkB7C,OAAOQ,SAG1B,qBAAGqC,MAAkB7C,OAAOS,UAG5BuoC,GAAqB3lC,KAAOC,IAAV,MAMf,qBAAGT,MAAkB7C,OAAOa,QAOxBqmC,IAIP+B,GAA0B5lC,KAAOkF,IAAV,MAIvB2gC,GAAyB7lC,aAAO0D,GAAP1D,CAAH,MAQtB8lC,GAA4B9lC,aAAO0D,GAAP1D,CAAH,MCmDvB+lC,GA5HO,SAAC,GAAkC,IAAhCtpC,EAA+B,EAA/BA,KACf0U,EAAMD,aAAe,iBAArBC,EAEFhR,EAAWC,cAHqC,EAKzBuE,aAC3B,SAACnP,GAAD,OAAqBA,EAAMqG,iBADrBzC,EAL8C,EAK9CA,SAAU9C,EALoC,EAKpCA,OALoC,EASd+I,mBACtC,IAVoD,oBAS/C2mC,EAT+C,KASjCC,EATiC,OAYZ5mC,oBAAS,GAZG,oBAY/C6mC,EAZ+C,KAYhCC,EAZgC,OAatB9mC,oBAAkB,GAbI,oBAa/CklC,EAb+C,KAarCC,EAbqC,KAetD3jC,qBAAU,WACRslC,GAAiB,GACb7vC,GACF8vC,MAAMhtC,EAAS0/B,MACZr3B,MAAK,SAAC4kC,GACL,OAAOA,EAASC,OAAO7kC,MAAK,SAAC6kC,GAC3B,MAAO,CACLtB,YAAaqB,EAASE,QAAQ1Z,IAAI,gBAClC2Z,IAAKF,SAIV7kC,MAAK,YAA2B,IAAxB+kC,EAAuB,EAAvBA,IAAuB,EAAlBxB,YACZmB,GAAiB,GACjB,IAAMM,EAAS,IAAIC,WACnBD,EAAOE,OAAS,kBAAMF,EAAOG,QAC7BH,EAAOI,cAAcL,GACrBC,EAAOE,OAAS,WAAO,IAAD,EACgB,UAAhC,UAAA5B,GAAYyB,EAAIx1B,aAAhB,eAAuB3b,OACzB4wC,EAAgB,CACdj1B,KAAM+zB,GAAYyB,EAAIx1B,MACtB41B,OAAQH,EAAOG,aAKtBjlC,OAAM,SAAC9D,GACNsoC,GAAiB,GACjB3B,GAAY,QAGjB,CAACprC,EAAU9C,IAEd,IAAMkwB,EAAmBlV,uBAAY,WACnCnR,EAASzJ,MACTuvC,EAAgB,MACf,CAAC9lC,IA2CJ,OACE,kBAACuN,GAAD,CAAOpX,OAAQA,EAAQqS,MAAO6d,EAAkBrZ,QAAQ,IAAI1Q,KAAMA,GAChE,kBAACwoC,GAAD,KACGiB,GACC,kBAACb,GAAD,KACE,kBAAC,GAAD,CAAS1B,UAAWuC,KAGvB3B,GACC,kBAACoB,GAAD,KACE,kBAACC,GAAD,CAAyBxgC,IAAKq/B,OAC9B,kBAACoB,GAAD,KACG10B,EAAE,sBAEL,kBAAC20B,GAAD,KACG30B,EAAE,0BAIT,kBAAC+zB,GAAD,CAAsBC,MAAOe,GA5DZ,WACrB,GAAIF,GAAgBA,EAAah1B,MAAQg1B,EAAaY,OACpD,OAAQZ,EAAah1B,KAAK3b,MACxB,IAAK,MACH,OACE,kBAAC,UAAD,CAAQyxC,UAAU,gEAChB,kBAAC1B,GAAD,KACE,kBAAC,KAAD,CAAQ2B,QAASf,EAAaY,WAItC,IAAK,QACH,OACE,kBAACtB,GAAD,CACElgC,IAAK4gC,EAAaY,OAClBthC,IAAK0gC,EAAah1B,KAAK3b,OAG7B,IAAK,QACH,OACE,kBAACkwC,GAAD,CACEngC,IAAK4gC,EAAaY,OAClBrR,UAAQ,EACRyR,UAAQ,IAGd,QACE,OACE,kBAACxB,GAAD,KACE,kBAACC,GAAD,wCAGA,kBAACC,GAAD,CAA0BrkC,KAAMjI,EAAS0/B,KAAMplB,OAAO,WACnDta,EAAS0/B,QA4BfmO,O,UC8UI1hB,GArbsB,SAAC,GAKI,IAAD,QAJvCC,EAIuC,EAJvCA,eACAxU,EAGuC,EAHvCA,KACAk2B,EAEuC,EAFvCA,aAEuC,IADvCplB,gBACuC,MAD5B,KAC4B,EAC/B3Q,EAAMD,aAAe,mBAArBC,EAEF/P,EAAWqkB,eAHsB,EAKX9gB,aAC1B,SAACnP,GAAD,OAAqBA,EAAMwG,yBADrBzF,EAL+B,EAK/BA,MAAOmD,EALwB,EAKxBA,SAGPW,EAAesK,aAAY,SAACnP,GAAD,OAAqBA,EAAM6E,cAAtDA,WACArE,EAAY2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,WAAnDA,QACA8D,EAAiB6K,aAAY,SAACnP,GAAD,OAAqBA,EAAMsE,gBAAxDA,aAV+B,EAYXuF,oBAAkB,GAZP,oBAYhC/I,EAZgC,KAYxB+d,EAZwB,wBAcK9d,QAdL,IAcKA,OAdL,EAcKA,EAAOi8B,kBAdZ,QAc0B,GAd1B,kBAchC2U,EAdgC,KActBC,EAdsB,KAcT5U,EAdS,WAsBjC1V,EADQ,IAAImL,gBAAgB7mB,EAAS8mB,QACf2E,IAAI,iBAEhC,OACE,kBAACxM,GAAD,KACE,kBAACC,GAAD,CAAsCxI,SAAS,WAC7C,kBAAC2I,GAAD,KACE,kBAACC,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,YACzB3Q,EAAE,qBAER,kBAACwP,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,QACzB3Q,EAAE,iBAER,kBAACyP,GAAD,kBAIF,kBAACC,GAAD,MACA,kBAACN,GAAD,KACE,kBAACE,GAAD,KACE,kBAACC,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,YACzB3Q,EAAE,sBAENzX,GACA,oCACE,kBAACinB,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,QACzB3Q,EAAE,iBAER,kBAACyP,GAAD,CAAkCJ,UAAQ,GACvCkF,KAAO,OAACnvB,QAAD,IAACA,OAAD,EAACA,EAAOovB,WAAWC,OAAO,eAIxC,kBAACjF,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,QACzB3Q,EAAE,iBAER,kBAACyP,GAAD,MACG,UAAA8E,KAAO,OAACnvB,QAAD,IAACA,OAAD,EAACA,EAAOovB,kBAAf,eAA2BC,OAAO,cAAe,cAEnDlsB,GACC,oCACE,6BACA,kBAACinB,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,WACzB3Q,EAAE,oBAER,kBAACyP,GAAD,MACG,UAAA8E,KAAQwhB,UAAR,eAAuBthB,OAAO,cAAe,iBAKhD,OAALrvB,QAAK,IAALA,OAAA,EAAAA,EAAOi8B,WAAWzxB,QAAS,GAC1B,kBAAC0f,GAAD,KACE,kBAACC,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,cACzB3Q,EAAE,uBAEPg2B,GACC,kBAACrmB,GAAD,KACE,kBAACH,GAAD,YACGwmB,QADH,IACGA,OADH,EACGA,EAAUE,aAEb,kBAACzmB,GAAD,YACGumB,QADH,IACGA,OADH,EACGA,EAAUnwC,OACF,OAARmwC,QAAQ,IAARA,OAAA,EAAAA,EAAU5vB,MAAV,kBAAqB4vB,QAArB,IAAqBA,OAArB,EAAqBA,EAAU5vB,MAAS,KAI9C6vB,GACC,kBAACtmB,GAAD,KACE,kBAACH,GAAD,YACGymB,QADH,IACGA,OADH,EACGA,EAAUC,aAEb,kBAACzmB,GAAD,YACGwmB,QADH,IACGA,OADH,EACGA,EAAUpwC,OACF,OAARowC,QAAQ,IAARA,OAAA,EAAAA,EAAU7vB,MAAV,kBAAqB6vB,QAArB,IAAqBA,OAArB,EAAqBA,EAAU7vB,MAAS,KAI9CjhB,GACCk8B,EAAW3gB,KACT,WAAoC6D,GAAgB,IAAjD2xB,EAAgD,EAAhDA,YAAa9vB,EAAmC,EAAnCA,KAAMvgB,EAA6B,EAA7BA,MACpB,OACE,kBAAC8pB,GAAD,CAAgCzkB,IAAKqZ,GACnC,kBAACiL,GAAD,KACG0mB,GAEH,kBAACzmB,GAAD,KACG5pB,EACAugB,EAAI,WAAOA,GAAS,QAMhCib,EAAWzxB,OAAS,GACnB,kBAACggB,GAAD,CAAmClT,QAlHtB,WACzBwG,GAAW/d,KAkHIA,EACGwrB,EACExC,GAAewC,EAAU,qBACzB3Q,EAAE,6BACJ2Q,EACAxC,GAAewC,EAAU,qBACzB3Q,EAAE,iCAOlB,kBAACmP,GAAD,CAAsCxI,SAAS,YAClC,YAAT9G,GAA+B,QAATA,IACtB,kBAACyP,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,eACzB3Q,EAAE,wBAER,kBAACyP,GAAD,KACG5qB,EAAQX,QAIbqE,GAAqB,iBAATsX,GACZ,kBAACyP,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,oBACzB3Q,EAAE,6BAER,kBAACyP,GAAD,KACG9mB,EAAazE,QAIlBqE,GAAY8rB,IAAb,OAA+BA,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAgBK,gBAC9C,kBAACpF,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,SACzB3Q,EAAE,kBAER,kBAACyP,GAAD,YACG4E,QADH,IACGA,OADH,EACGA,EAAgBK,iBAMZ,YAAT7U,GAA+B,QAATA,IACtB,kBAACyP,GAAD,KACE,kBAACE,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,aACzB3Q,EAAE,sBAER,kBAACyP,GAAD,YACG5qB,QADH,IACGA,OADH,EACGA,EAASqb,KAMf3X,GACC,oCACE,8BACW,YAATsX,GAA+B,QAATA,IACtB,kBAACyP,GAAD,KACE,kBAACE,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,YACzB3Q,EAAE,qBAER,kBAACyP,GAAD,KACG9D,GAAiB,MAMlB,iBAAT9L,GACC,kBAACyP,GAAD,KACE,kBAACE,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,kBACzB3Q,EAAE,2BAER,kBAACyP,GAAD,YACG9mB,QADH,IACGA,OADH,EACGA,EAAcuX,MAInB3X,GACA,oCACE,kBAACmnB,GAAD,MACA,kBAACJ,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,aACzB3Q,EAAE,sBAER,kBAACyP,GAAD,YACGrqB,QADH,IACGA,OADH,EACGA,EAAOlB,OAeZ,kBAACorB,GAAD,CAAqCD,UAAQ,GAC3C,kBAACG,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,WACzB3Q,EAAE,oBAER,kBAACyP,GAAD,YACGrqB,QADH,IACGA,OADH,EACGA,EAAO8a,MAIN,OAAL9a,QAAK,IAALA,OAAA,EAAAA,EAAOwrC,UAAUhhC,QAAS,GACzB,kBAAC0f,GAAD,KACE,kBAACE,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,aACzB3Q,EAAE,sBAJV,OAMG5a,QANH,IAMGA,GANH,UAMGA,EAAOwrC,iBANV,aAMG,EAAkBlwB,KAAI,SAACzY,EAAUsc,GAAW,IAAD,EAC1C,OACE,kBAACkL,GAAD,CACEvkB,IAAKqZ,EACL8K,SAAU9K,EAAQ,KAAR,OAAcnf,QAAd,IAAcA,GAAd,UAAcA,EAAOwrC,iBAArB,aAAc,EAAkBhhC,SAEzC3H,EAASiY,UAS1B,kBAACiP,GAAD,CAAsCxI,SAAS,cAC3Cpe,GACA8rB,GACAA,EAAeM,aACfN,EAAeM,YAAYC,QAC3BP,EAAeM,YAAYxlB,KAAKS,OAAS,GACzCykB,EAAeM,YAAYxlB,KAAK,GAAGylB,QACjC,oCACE,kBAACrF,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,kBACzB3Q,EAAE,2BAER,kBAACgQ,GAAD,KACE,kBAACE,GAAD,KACe,MAAZS,EACGxC,GAAewC,EAAU,UACzB3Q,EAAE,mBAER,kBAACkQ,GAAD,KACe,MAAZS,EACGxC,GAAewC,EAAU,QACzB3Q,EAAE,iBAER,kBAACkQ,GAAD,KACe,MAAZS,EACGxC,GAAewC,EAAU,WACzB3Q,EAAE,qBAGV,kBAACoQ,GAAD,KACE,kBAACC,GAAD,KACGgE,EAAeQ,SAElB,kBAAC,GAAD,CACEjD,MAAOyC,EAAeM,YAAYC,OAAOE,WAE3C,kBAACvE,GAAD,KACGgE,KACCF,EAAeM,YAAYxlB,KAAK,GAAGylB,OAAOG,WAC1CN,OAAO,YACT,kBAACjE,GAAD,KACG+D,KACCF,EAAeM,YAAYxlB,KAAK,GAAGylB,OAAOG,WAC1CN,OAAO,aAIf,kBAAC/E,GAAD,OAIN,kBAACH,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,iBACzB3Q,EAAE,0BAER,kBAACgQ,GAAD,KACE,kBAACE,GAAD,KACe,MAAZS,EACGxC,GAAewC,EAAU,UACzB3Q,EAAE,mBAER,kBAACkQ,GAAD,KACe,MAAZS,EACGxC,GAAewC,EAAU,QACzB3Q,EAAE,iBAER,kBAACkQ,GAAD,KACe,MAAZS,EACGxC,GAAewC,EAAU,WACzB3Q,EAAE,qBAGT9W,GACDA,EAAWiG,MACXjG,EAAWiG,KAAK0hB,kBAChB3nB,EAAWiG,KAAK0hB,iBAAiBmE,QACjC9rB,EAAWiG,KAAK0hB,iBAAiBmE,OAAOplB,OAAS,EAC/C,oCACG1G,EAAWiG,KAAK0hB,iBAAiBmE,OAAOtU,KACvC,WAAyC6D,GAAgB,IAAD,IAArDqQ,OAAUE,EAA2C,EAA3CA,SAAUpQ,EAAiC,EAAjCA,OACjBuQ,EADkD,EAAvB9lB,KACL,GAAGylB,OAAOG,UACpC,OACE,kBAAC3E,GAAD,CAA4BllB,IAAK4pB,GAC/B,kBAACzE,GAAD,KACG3L,GAEH,kBAAC,GAAD,CAAiBkN,MAAOkD,IACxB,kBAACvE,GAAD,KACGgE,KAAQU,GAAgBR,OAAO,YAChC,kBAACjE,GAAD,KACG+D,KAAQU,GAAgBR,OAAO,iBAS9C,kBAACpE,GAAD,KACe,MAAZM,EACGxC,GAAewC,EAAU,oBACzB3Q,EAAE,8BAIZ,kBAACmP,GAAD,CAAsCxI,SAAS,YAC7C,kBAACyI,GAAD,KACE,kBAACE,GAAD,KACE,kBAACC,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,YACzB3Q,EAAE,qBAER,kBAACwP,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,UACzB3Q,EAAE,mBAER,kBAACyP,GAAD,CAAkCJ,UAAQ,GAA1C,QAIF,kBAACC,GAAD,KACE,kBAACC,GAAD,KACe,MAAZoB,EACGxC,GAAewC,EAAU,WACzB3Q,EAAE,oBAER,kBAACwP,GAAD,KACe,MAAZmB,EACGxC,GAAewC,EAAU,gBACzB3Q,EAAE,yBAER,kBAACyP,GAAD,CAAkCJ,UAAQ,GAC3B,MAAZsB,EACGxC,GAAewC,EAAU,SACzB3Q,EAAE,uBChYLoV,GA3De,SAAC,GAKI,IAJjC2gB,EAIgC,EAJhCA,aACAl2B,EAGgC,EAHhCA,KACAvU,EAEgC,EAFhCA,KAEgC,IADhCqlB,gBACgC,MADrB,KACqB,EACxB3Q,EAAMD,aAAe,mBAArBC,EAEFhR,EAAWC,cAHe,EAKNuE,aACxB,SAACnP,GAAD,OAAqBA,EAAMwG,yBADrB1F,EALwB,EAKxBA,OAAQC,EALgB,EAKhBA,MALgB,EASU8J,aAAST,GAAsB,CACvE0B,UAAW,CAAE+P,GAAE,OAAE9a,QAAF,IAAEA,OAAF,EAAEA,EAAO8a,MADZmU,EATkB,EASxBllB,KAAsBE,EATE,EASFA,QAIxBgmB,EAAmBlV,uBAAY,WACnCnR,EAASzJ,QACR,CAACyJ,IAEJ,OACE,kBAACuN,GAAD,CACEpX,OAAQA,EACRqS,MAAO6d,EACPxb,KAAK,MACLkC,UAAU,QACVzQ,KAAMA,GAEN,kBAACgR,GAAD,KACE,kBAACoS,GAAD,KACGrf,EACC,kBAAC,GAAD,MAEA,oCACE,kBAAC,GAAD,CAA6BshB,SAAUA,IACtC0D,GACC,kBAAC,GAAD,CACEA,eAAgBA,EAAe8hB,WAC/Bt2B,KAAMA,EACNk2B,aAAcA,EACdplB,SAAUA,IAId,kBAACF,GAAD,CAA6B/T,QAAS2Y,GACvB,MAAZ1E,EACGxC,GAAewC,EAAU,QACzB3Q,EAAE,sB,ooBC5Ef,IAAMo2B,GAAe5nC,KAAH,MAQZ6nC,GAA2B7nC,KAAH,MAQxB8nC,GAAkB9nC,KAAH,M,4OChBrB,IAAM+nC,GAAiB1nC,KAAOuW,MAAV,MAKhB,qBAAG/W,MAAkB7C,OAAOM,iBCMxB0qC,GALD,SAAC,GAAwC,IAAtCtyC,EAAqC,EAArCA,KAAM+J,EAA+B,EAA/BA,SAAUuE,EAAqB,EAArBA,GACzBG,EAAU1E,GAAsBuE,EACtC,OAAO,kBAAC+jC,GAAD,CAAgB5M,QAASzlC,GAAOyO,I,gkBCRlC,IAAM8jC,GAAiB5nC,KAAOC,IAAV,MACd4nC,GAAc7nC,KAAO8nC,MAAV,MAGF,qBAAGtoC,MAAkB7C,OAAOa,SAChC,qBAAGgC,MAAkB7C,OAAOC,UAUnC,qBAAG4C,MAAkB7C,OAAOO,SAO1B,qBAAGsC,MAAkB7C,OAAOc,eCb1B,SAASsqC,GAAT,GAQC,IAPd1yC,EAOa,EAPbA,KACAkhB,EAMa,EANbA,MAEA9Y,GAIa,EALbI,MAKa,EAJbJ,aACAuqC,EAGa,EAHbA,WACAC,EAEa,EAFbA,aAEa,IADbj3B,YACa,MADN,OACM,EACb,OACE,kBAAC42B,GAAD,KACE,kBAAC,GAAD,CAAOvyC,KAAMA,GAAOkhB,GACpB,kBAACsxB,GAAD,CACEpqC,YAAaA,EACbpI,KAAMA,EACN4lC,OAAQ+M,EACRE,SAAUD,EACVj3B,KAAMA,K,ilBC1BP,IAAMm3B,GAAoBnoC,KAAOC,IAAV,MACjBmoC,GAAiBpoC,KAAOqoC,SAAV,MAGL,qBAAG7oC,MAAkB7C,OAAOa,SAChC,qBAAGgC,MAAkB7C,OAAOC,UAUnC,qBAAG4C,MAAkB7C,OAAOO,SAQ1B,qBAAGsC,MAAkB7C,OAAOc,eCQ1B6qC,GAtBE,SAAC,GAOI,IANpBjzC,EAMmB,EANnBA,KACAkhB,EAKmB,EALnBA,MAEA9Y,GAGmB,EAJnBI,MAImB,EAHnBJ,aACAuqC,EAEmB,EAFnBA,WACAC,EACmB,EADnBA,aAEA,OACE,kBAACE,GAAD,KACE,kBAAC,GAAD,CAAO9yC,KAAMA,GAAOkhB,GACpB,kBAAC6xB,GAAD,CACE3qC,YAAaA,EACbpI,KAAMA,EACN4lC,OAAQ+M,EACRE,SAAUD,EACVM,KAAM,M,mnDCtBP,IAAMC,GAAuBxoC,KAAOC,IAAV,MAGpBwoC,GAAmBzoC,KAAOkF,IAAV,MAIhBwjC,GAAmB1oC,aAAO0D,GAAP1D,CAAH,MAQhB2oC,GAAsB3oC,aAAO0D,GAAP1D,CAAH,MAQnB4oC,GAAqB5oC,KAAOC,IAAV,MAKlB4oC,GAAkB7oC,KAAOC,IAAV,MAMf6oC,GAAwB9oC,KAAOC,IAAV,MAGrB8oC,GAAyB/oC,KAAOC,IAAV,MAC/B,gBAAG6X,EAAH,EAAGA,SAAH,OACAA,GAAQ,2BAEKA,EAFL,YAMCkxB,GAA6BhpC,KAAOC,IAAV,MAC1BgpC,GAAwBjpC,KAAOC,IAAV,MAYhB,gBAAGT,EAAH,EAAGA,MAAH,SAAUpC,OACboC,EAAM7C,OAAOkB,MAAQ2B,EAAM7C,OAAOc,eClBlCyrC,GAlCW,SAAC,GAA+C,IAA7CC,EAA4C,EAA5CA,cAA4C,EAC3C9pC,mBAAiB,GAD0B,oBAChE4uB,EADgE,KACxDmb,EADwD,KAGjEC,EAAqB,SAACpb,GAC1Bkb,EAAclb,GACdmb,EAAUnb,IAGZ,OACE,kBAAC+a,GAAD,KACE,kBAACC,GAAD,CACE7rC,OAAQ6wB,GAAU,EAClBpgB,QAAS,kBAAMw7B,EAAmB,MAEpC,kBAACJ,GAAD,CACE7rC,OAAQ6wB,GAAU,EAClBpgB,QAAS,kBAAMw7B,EAAmB,MAEpC,kBAACJ,GAAD,CACE7rC,OAAQ6wB,GAAU,EAClBpgB,QAAS,kBAAMw7B,EAAmB,MAEpC,kBAACJ,GAAD,CACE7rC,OAAQ6wB,GAAU,EAClBpgB,QAAS,kBAAMw7B,EAAmB,MAEpC,kBAACJ,GAAD,CACE7rC,OAAQ6wB,GAAU,EAClBpgB,QAAS,kBAAMw7B,EAAmB,QCRpCC,GAAmBC,OAAaC,MAAM,CAC1ChkC,MAAO+jC,OAAaE,WACpBp0C,KAAMk0C,OAAaE,WACnBC,MAAOH,OAAaG,QAAQD,WAC5Bta,QAASoa,OAAaE,WACtBxb,OAAQsb,OAAaI,UAAUC,IAAI,GAAGH,aAoJzBI,GA7IW,SAAC,GAA6C,IAA3CC,EAA0C,EAA1CA,YACnB34B,EAAMD,aAAe,eAArBC,EAEFhR,EAAWC,cACT2pC,EAAchtB,eAAdgtB,UAEF/zC,EAAU2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WANM,EAQ3BqJ,oBAAkB,GARS,oBAQ9D2qC,EAR8D,KAQ/CC,EAR+C,KAU/DC,EAAiBj1B,mBACrB,iBAAO,CACLzP,MAAO,GACPnQ,KAAM,GACNq0C,MAAO,GACPva,QAAS,GACTlB,OAAQ,EACRj4B,QAAS+zC,KAEX,CAACA,IAnBkE,EAsBtCtpC,aAAY8mC,GAAc,CACvD7mC,qBAAqB,EACrBC,eAAgB,CAAC,aAFZwpC,EAtB8D,qBA2B/DC,EAAW94B,sBAAW,yCAC1B,WACE/F,EACA8+B,GAFF,UAAAjmC,EAAA,sEAKI6lC,GAAiB,GALrB,SAMUE,EAAqB,CAAE7oC,UAAW,CAAEimC,aAAch8B,KAN5D,cAOIpL,EAAS5K,EAAgBw0C,IACzBD,GAAY,GACZG,GAAiB,GACjBI,EAAQC,YAVZ,UAYUl0B,KAAQC,MAAM,CAClBC,SAAU,YACV7gB,OAAQ,iBACR8gB,MAAM,GAAD,OAAKvgB,EAAQ8D,aAAauX,GAA1B,YAAgC9F,EAAOvV,SAC5CgB,MAAOuU,EAAO0iB,SAhBpB,oHAD0B,wDAqB1B,CACEkc,EACAD,EACA/pC,EACA4pC,EACAD,EACA9zC,IAIJ,OACE,kBAACwyC,GAAD,KACE,kBAAC,GAAD,CAAS7E,UAAWqG,IACpB,kBAAC,KAAD,CACEO,cAAeL,EACfZ,iBAAkBA,GAClBc,SAAUA,EACVI,iBAAiB,IAEhB,gBACCxC,EADD,EACCA,WACAC,EAFD,EAECA,aACAjnC,EAHD,EAGCA,OACAypC,EAJD,EAICA,aACAC,EALD,EAKCA,QAEAC,GAPD,EAMCp/B,OAND,EAOCo/B,eAPD,OASC,kBAAC,KAAD,KACE,kBAAC9B,GAAD,KACE,kBAACE,GAAD,CAAwBjxB,SAAS,SAC/B,kBAACiwB,GAAD,CACExxB,MAAOpF,EAAE,uBACT1T,YAAa0T,EAAE,6BACf9b,KAAK,QACL2yC,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAOwE,SAGlB,kBAACujC,GAAD,CAAwBjxB,SAAS,QAC/B,kBAACiwB,GAAD,CACE1yC,KAAK,OACLkhB,MAAOpF,EAAE,gBACT1T,YAAa0T,EAAE,sBACf62B,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAO3L,QAGlB,kBAAC0zC,GAAD,CAAwBjxB,SAAS,YAC/B,kBAAC,GAAD,CACEvB,MAAOpF,EAAE,uBACT1T,YAAa0T,EAAE,6BACf9b,KAAK,UACL2yC,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAOmuB,WAGlB,kBAAC4Z,GAAD,CAAwBjxB,SAAS,SAC/B,kBAACiwB,GAAD,CACE1yC,KAAK,QACLkhB,MAAOpF,EAAE,iBACT1T,YAAa0T,EAAE,uBACf62B,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAO3L,KACd2b,KAAK,UAEP,kBAAC83B,GAAD,KACE,kBAAC,GAAD,KAAQ33B,EAAE,6BACV,kBAAC,GAAD,CACEg4B,cAAe,SAAClb,GACd0c,EAAc,SAAU1c,QAKhC,kBAAC8a,GAAD,CAAwBjxB,SAAS,UAC/B,kBAAC,GAAD,CACE5J,UAAWw8B,GAAWD,EACtBp8B,KAAM8C,EAAE,gCC/IpBm4B,GAAmBC,OAAaC,MAAM,CAC1ChkC,MAAO+jC,OAAaE,WACpBp0C,KAAMk0C,OAAaE,WACnBC,MAAOH,OAAaG,QAAQD,WAC5Bta,QAASoa,OAAaE,WACtBxb,OAAQsb,OAAaI,UAAUC,IAAI,GAAGH,aAmJzBmB,GA5IgB,SAAC,GAEI,IADlCd,EACiC,EADjCA,YAEQ34B,EAAMD,aAAe,eAArBC,EAEFhR,EAAWC,cACTyqC,EAAmB9tB,eAAnB8tB,eAJyB,EAMSxrC,oBAAkB,GAN3B,oBAM1B2qC,EAN0B,KAMXC,EANW,KAQ3BC,EAAiBj1B,mBACrB,iBAAO,CACLzP,MAAO,GACPnQ,KAAM,GACNq0C,MAAO,GACPva,QAAS,GACTlB,OAAQ,EACRn0B,aAAc+wC,KAEhB,CAACA,IAjB8B,EAoBFpqC,aAAY+mC,GAA0B,CACnE9mC,qBAAqB,EACrBC,eAAgB,CAAC,kBAFZwpC,EApB0B,qBAyB3BC,EAAW94B,sBAAW,yCAC1B,WACE/F,EACA8+B,GAFF,UAAAjmC,EAAA,sEAKI6lC,GAAiB,GALrB,SAMUE,EAAqB,CAAE7oC,UAAW,CAAEimC,aAAch8B,KAN5D,cAOIpL,EAAS5K,EAAgBs1C,IACzBf,GAAY,GACZG,GAAiB,GACjBI,EAAQC,YAVZ,UAYUl0B,KAAQC,MAAM,CAClBC,SAAU,YACV7gB,OAAQ,sBACR8gB,MAAOhL,EAAOzR,aACd9C,MAAOuU,EAAO0iB,SAhBpB,oHAD0B,wDAqB1B,CACEkc,EACAD,EACA/pC,EACA0qC,EACAf,IAIJ,OACE,kBAACtB,GAAD,KACE,kBAAC,GAAD,CAAS7E,UAAWqG,IACpB,kBAAC,KAAD,CACEO,cAAeL,EACfZ,iBAAkBA,GAClBc,SAAUA,EACVI,iBAAiB,IAEhB,gBACCxC,EADD,EACCA,WACAC,EAFD,EAECA,aACAjnC,EAHD,EAGCA,OACAypC,EAJD,EAICA,aACAC,EALD,EAKCA,QAEAC,GAPD,EAMCp/B,OAND,EAOCo/B,eAPD,OASC,kBAAC,KAAD,KACE,kBAAC9B,GAAD,KACE,kBAACE,GAAD,CAAwBjxB,SAAS,SAC/B,kBAACiwB,GAAD,CACExxB,MAAOpF,EAAE,uBACT1T,YAAa0T,EAAE,6BACf9b,KAAK,QACL2yC,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAOwE,SAGlB,kBAACujC,GAAD,CAAwBjxB,SAAS,QAC/B,kBAACiwB,GAAD,CACE1yC,KAAK,OACLkhB,MAAOpF,EAAE,gBACT1T,YAAa0T,EAAE,sBACf62B,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAO3L,QAGlB,kBAAC0zC,GAAD,CAAwBjxB,SAAS,YAC/B,kBAAC,GAAD,CACEvB,MAAOpF,EAAE,uBACT1T,YAAa0T,EAAE,6BACf9b,KAAK,UACL2yC,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAOmuB,WAGlB,kBAAC4Z,GAAD,CAAwBjxB,SAAS,SAC/B,kBAACiwB,GAAD,CACE1yC,KAAK,QACLkhB,MAAOpF,EAAE,iBACT1T,YAAa0T,EAAE,uBACf62B,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAO3L,KACd2b,KAAK,UAEP,kBAAC83B,GAAD,KACE,kBAAC,GAAD,KAAQ33B,EAAE,6BACV,kBAAC,GAAD,CACEg4B,cAAe,SAAClb,GACd0c,EAAc,SAAU1c,QAKhC,kBAAC8a,GAAD,CAAwBjxB,SAAS,UAC/B,kBAAC,GAAD,CACE5J,UAAWw8B,GAAWD,EACtBp8B,KAAM8C,EAAE,gCC7IpBm4B,GAAmBC,OAAaC,MAAM,CAC1ChkC,MAAO+jC,OAAaE,WACpBp0C,KAAMk0C,OAAaE,WACnBC,MAAOH,OAAaG,QAAQD,WAC5Bta,QAASoa,OAAaE,WACtBxb,OAAQsb,OAAaI,UAAUC,IAAI,GAAGH,aA2IzBqB,GApIO,SAAC,GAAyC,IAAvChB,EAAsC,EAAtCA,YACf34B,EAAMD,aAAe,eAArBC,EAEFhR,EAAWC,cACTnK,EAAU8mB,eAAV9mB,MAJqD,EAMnBoJ,oBAAkB,GANC,oBAMtD2qC,EANsD,KAMvCC,EANuC,KAQvDC,EAAiBj1B,mBACrB,iBAAO,CACLzP,MAAO,GACPnQ,KAAM,GACNq0C,MAAO,GACPva,QAAS,GACTlB,OAAQ,EACRtH,WAAY1wB,KAEd,CAACA,IAjB0D,EAoB9BwK,aAAYgnC,GAAiB,CAC1D/mC,qBAAqB,EACrBC,eAAgB,CAAC,kBAFZwpC,EApBsD,qBAyBvDC,EAAW94B,sBAAW,yCAC1B,WACE/F,EACA8+B,GAFF,UAAAjmC,EAAA,sEAKI6lC,GAAiB,GALrB,SAMUE,EAAqB,CAAE7oC,UAAW,CAAEimC,aAAch8B,KAN5D,cAOIpL,EAAS5K,EAAgBU,IACzB6zC,GAAY,GACZG,GAAiB,GACjBI,EAAQC,YAVZ,UAYUl0B,KAAQC,MAAM,CAClBC,SAAU,YACV7gB,OAAQ,aACR8gB,MAAOhL,EAAOob,WACd3vB,MAAOuU,EAAO0iB,SAhBpB,oHAD0B,wDAqB1B,CAACkc,EAAsBD,EAAgB/pC,EAAUlK,EAAO6zC,IAG1D,OACE,kBAACtB,GAAD,KACE,kBAAC,GAAD,CAAS7E,UAAWqG,IACpB,kBAAC,KAAD,CACEO,cAAeL,EACfZ,iBAAkBA,GAClBc,SAAUA,EACVI,iBAAiB,IAEhB,gBACCxC,EADD,EACCA,WACAC,EAFD,EAECA,aACAjnC,EAHD,EAGCA,OACAypC,EAJD,EAICA,aACAC,EALD,EAKCA,QAEAC,GAPD,EAMCp/B,OAND,EAOCo/B,eAPD,OASC,kBAAC,KAAD,KACE,kBAAC9B,GAAD,KACE,kBAACE,GAAD,CAAwBjxB,SAAS,SAC/B,kBAACiwB,GAAD,CACExxB,MAAOpF,EAAE,uBACT1T,YAAa0T,EAAE,6BACf9b,KAAK,QACL2yC,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAOwE,SAGlB,kBAACujC,GAAD,CAAwBjxB,SAAS,QAC/B,kBAACiwB,GAAD,CACE1yC,KAAK,OACLkhB,MAAOpF,EAAE,gBACT1T,YAAa0T,EAAE,sBACf62B,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAO3L,QAGlB,kBAAC0zC,GAAD,CAAwBjxB,SAAS,YAC/B,kBAAC,GAAD,CACEvB,MAAOpF,EAAE,uBACT1T,YAAa0T,EAAE,6BACf9b,KAAK,UACL2yC,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAOmuB,WAGlB,kBAAC4Z,GAAD,CAAwBjxB,SAAS,SAC/B,kBAACiwB,GAAD,CACE1yC,KAAK,QACLkhB,MAAOpF,EAAE,iBACT1T,YAAa0T,EAAE,uBACf62B,WAAYA,EACZC,aAAcA,EACdpqC,MAAOmD,EAAO3L,KACd2b,KAAK,UAEP,kBAAC83B,GAAD,KACE,kBAAC,GAAD,KAAQ33B,EAAE,6BACV,kBAAC,GAAD,CACEg4B,cAAe,SAAClb,GACd0c,EAAc,SAAU1c,QAKhC,kBAAC8a,GAAD,CAAwBjxB,SAAS,UAC/B,kBAAC,GAAD,CACE5J,UAAWw8B,GAAWD,EACtBp8B,KAAM8C,EAAE,gCCzEX45B,GA3DK,SAAC,GAAgC,IAA9B/5B,EAA6B,EAA7BA,KACbG,EAAMD,aAAe,eAArBC,EAEFhR,EAAWC,cAGT9J,GAFSmvB,eAEE9gB,aAAY,SAACnP,GAAD,OAAqBA,EAAMuG,eAAlDzF,QAN0C,EAQlB+I,oBAAkB,GARA,oBAQ3C2rC,EAR2C,KAQjClB,EARiC,KAU5CtjB,EAAmBlV,uBAAY,WACnCnR,EAASzJ,QACR,CAACyJ,IAEJ,OACE,kBAACuN,GAAD,CAAOpX,OAAQA,EAAQqS,MAAO6d,GAC5B,kBAAC/Y,GAAD,KACGu9B,EACC,kBAACxC,GAAD,KACE,kBAACC,GAAD,CACErjC,IAAK6lC,KACL3lC,IAAI,yBAEN,kBAACojC,GAAD,KAAmBv3B,EAAE,4BACrB,kBAACw3B,GAAD,KACGx3B,EAAE,+BAEL,kBAACy3B,GAAD,KACE,kBAAC,GAAD,CACE/6B,QAAS2Y,EACTnY,KAAM8C,EAAE,0BAKd,kBAACq3B,GAAD,KACE,kBAACC,GAAD,CACErjC,IAAK6lC,KACL3lC,IAAI,yBAEN,kBAACojC,GAAD,KAAmBv3B,EAAE,4BACrB,kBAACw3B,GAAD,KACGx3B,EAAE,gCACH,6BAFF,IAEUA,EAAE,mCAEF,QAATH,GAAkB,kBAAC,GAAD,CAAe84B,YAAaA,IACrC,YAAT94B,GACC,kBAAC,GAAD,CAAmB84B,YAAaA,IAExB,iBAAT94B,GACC,kBAAC,GAAD,CAAwB84B,YAAaA,QCgFpCoB,GAjIH,WAAO,IACTj1C,EAAU8mB,eAAV9mB,MAEFkK,EAAWC,cACX+S,EAAUC,aAAc,sCAJd,EAMkB/T,oBAAkB,GANpC,oBAME8rC,GANF,aAO8B9rC,mBAAwB,IAPtD,oBAOT+d,EAPS,KAOQC,EAPR,KASVrnB,EAAU2O,aAAY,SAACnP,GAAD,OAAqBA,EAAMQ,QAAQA,WAT/C,EAWgCqK,aAC9Cyd,GACA,CACExc,UAAW,CAAE+P,GAAIpb,KAHPm1C,EAXE,EAWR9qC,KAAqBE,EAXb,EAWaA,QAAS3C,EAXtB,EAWsBA,MAyEtC,OAlEAgD,qBAAU,WACJuqC,GAAmD,OAAlCA,EAAczkB,WAAWrmB,MAC5C6qC,GAAa,KAEd,CAACC,IAEJvqC,qBAAU,WAENuqC,GACAA,EAAczkB,YACdykB,EAAczkB,WAAWrmB,MAEzB+c,EAAmB,CACjB7X,MAAO4lC,EAAczkB,WAAWrmB,KAAKtK,QAAQX,KAC7CoQ,YAAa2lC,EAAczkB,WAAWrmB,KAAKtK,QAAQyP,YACnDC,MACE0lC,EAAczkB,WAAWrmB,KAAKtK,QAAQmf,OAAOpU,OAAS,EAClDqqC,EAAczkB,WAAWrmB,KAAKtK,QAAQmf,OAAO,GAAGxP,IAChD,GACNA,IAAKxE,OAAOC,SAASC,SAGxB,CAAC+pC,IAEJvqC,qBAAU,WACRuV,KAAQi1B,KAAK,CACXC,QAAS,WACTC,KAAMpqC,OAAOC,SAAS+oB,SACtB3kB,MAAO,WAER,IAEH3E,qBAAU,WAENuqC,GACAA,EAAczkB,YACdykB,EAAczkB,WAAWrmB,OAEzBH,EACEjG,GAAoB,CAClB7E,KAAM+1C,EAAczkB,WAAWrmB,KAAKtK,QAAQ8D,aAAazE,KACzD8E,KAAMixC,EAAczkB,WAAWrmB,KAAKtK,QAAQ8D,aAAaK,KAAKwL,OAGlExF,EACEhK,EAAW,2BACNi1C,EAAczkB,WAAWrmB,KAAKtK,SADzB,IAERirC,QAAQ,eACHmK,EAAczkB,WAAWrmB,KAAK2gC,SAEnC1rB,oBAAoB,YACf61B,EAAczkB,WAAWrmB,KAAKiV,qBAEnC4a,YAAY,eACPib,EAAczkB,WAAWrmB,KAAK6vB,aAEnCC,QAAQ,eACHgb,EAAczkB,WAAWrmB,KAAK8vB,aAIvCjwB,EAAS/J,EAASg1C,EAAczkB,WAAWrmB,KAAK+Q,KAChDlR,EAAS9J,EAAc+0C,EAAczkB,WAAWrmB,KAAK+mB,gBAEtD,CAAClnB,EAAUirC,IAGZ,kBAAC,GAAD,CACE5qC,QAASA,EACT3C,MAAOA,EACPoV,UACEm4B,GACAA,EAAczkB,YACdykB,EAAczkB,WAAW3lB,OACrBoqC,EAAczkB,WAAW3lB,OAAO0iC,QAChC0H,GACAA,EAAczkB,YACdykB,EAAczkB,WAAW9oB,MACzButC,EAAczkB,WAAW9oB,WACzBuU,EAENY,MAAOoK,EACPpM,KAAK,MACLC,GAAIhb,EACJ8c,eAAgB,kBAAC,GAAD,OAEhB,oCACE,kBAAC,GAAD,KACE,oCACG/c,GACC,oCACGmd,EACC,kBAAC,GAAD,CAAmBnd,QAASA,IAE5B,kBAAC,GAAD,CAAoBA,QAASA,OAMvC,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAuBgb,KAAK,QAC5B,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAaA,KAAK,W,+mEC1JnB,IAAMw6B,GAAoB7rC,KAAH,M,mrBCAvB,IAAM8rC,GAA6BzrC,KAAOC,IAAV,MAI1ByrC,GAA0B1rC,KAAOoE,EAAV,MAGd,qBAAG5E,MAAkB7C,OAAOQ,SAY1B,qBAAGqC,MAAkB7C,OAAOS,UAMvC,qBAAGoC,MAAkB7C,OAAOa,SCO1BmuC,GAnBW,SAAC,GAAyC,IAAvCv2B,EAAsC,EAAtCA,QAC3B,OACE,kBAACq2B,GAAD,KACGr2B,EAAQvD,KAAI,SAACiD,GACZ,OACE,kBAAC42B,GAAD,CACErvC,IAAKyY,EAAOzD,GACZhQ,KAAMyT,EAAOnP,IACb+N,OAAO,SACP9N,IAAI,uBAEJ,kBAAC,GAAD,CAAM4C,SAAUsM,EAAO9D,KAAKuM,sB,w7ECpBjC,IAAMquB,GAA4B5rC,KAAOC,IAAV,MAOT,qBAAGT,MAAkB7C,OAAOC,SACrD4O,GARkC,OAczBqgC,GAAwB7rC,KAAOkF,IAAV,KAE9BsG,GAF8B,OAMrBsgC,GAA0B9rC,KAAOC,IAAV,MACvB8rC,GAA0B/rC,KAAOC,IAAV,MAKvB+rC,GAAgChsC,KAAOC,IAAV,MAC7BgsC,GAAwBjsC,aAAO0D,GAAP1D,CAAH,MACvB,qBAAGR,MAAkB7C,OAAOM,iBAO1BivC,GAAuBlsC,aAAO0D,GAAP1D,CAAH,MACtB,qBAAGR,MAAkB7C,OAAOO,SAI1BivC,GAAuBnsC,KAAOoE,EAAV,MAGtB,qBAAG5E,MAAkB7C,OAAOQ,SAO1B,qBAAGqC,MAAkB7C,OAAOS,UAI5BgvC,GAA6BpsC,KAAOC,IAAV,KAInCyL,GAJmC,OAQ1B2gC,GAAsCrsC,aAAO0D,GAAP1D,CAAH,MAKrC,qBAAGR,MAAkB7C,OAAOM,iBAG1BqvC,GAAqCtsC,aAAO0D,GAAP1D,CAAH,MAIlCusC,GAAiCvsC,KAAOC,IAAV,MAMrB,qBAAGT,MAAkB7C,OAAOC,UAG1B,qBAAG4C,MAAkB7C,OAAOQ,QAC9CmvC,IACS,qBAAG9sC,MAAkB7C,OAAOQ,SC2D5BqvC,GA3HU,SAAC,GAA6C,IAA3C1yC,EAA0C,EAA1CA,aAClBqX,EAAMD,aAAe,gBAArBC,EASFs7B,EAAyB,WAC7Br2B,KAAQC,MAAM,CACZC,SAAU,aACV7gB,OAAQ,+BACR8gB,MAAOzc,EAAauX,MAWxB,OACE,kBAACu6B,GAAD,KACE,kBAACC,GAAD,CAAuBzmC,IAAKtL,EAAa4yC,UAAU/mC,MACnD,kBAACmmC,GAAD,KACE,kBAACG,GAAD,KACG96B,EAAE,wBAEJrX,GAAgBA,EAAa2L,aAC5B,kBAAC,GAAD,CAAY4I,KAAMvU,EAAa2L,cAEjC,kBAACsmC,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,KACG96B,EAAE,2BAEL,kBAAC+6B,GAAD,KAAuBpyC,EAAauX,KAGrCvX,GAAgBA,EAAaipB,OAC5B,kBAACipB,GAAD,KACE,kBAACC,GAAD,KACG96B,EAAE,kBAEL,kBAAC+6B,GAAD,KAAuBpyC,EAAaipB,QAGvCjpB,GAAgBA,EAAa6L,KAC5B,kBAACqmC,GAAD,KACE,kBAACC,GAAD,KACG96B,EAAE,oBAEL,kBAACg7B,GAAD,CACE9qC,KAAMvH,EAAa6L,IACnBkI,QAzCQ,WACpBuI,KAAQC,MAAM,CACZC,SAAU,iBACV7gB,OAAQ,yBACR8gB,MAAOzc,EAAauX,MAsCVzN,UAAU,iBACV8P,OAAO,SACP9N,IAAI,uBAEH9L,EAAa6L,MAInB7L,GAAgBA,EAAa4vC,OAC5B,kBAACsC,GAAD,KACE,kBAACC,GAAD,KACG96B,EAAE,kBAEL,kBAACg7B,GAAD,CACE9qC,KAAI,iBAAYvH,EAAa4vC,OAC7B77B,QAvEY,WACxBuI,KAAQC,MAAM,CACZC,SAAU,aACV7gB,OAAQ,0BACR8gB,MAAOzc,EAAauX,MAoEVzN,UAAU,kBAET9J,EAAa4vC,QAInB5vC,GACCA,EAAa6yC,YACb7yC,EAAa6yC,WAAW5rC,OAAS,GAC/B,kBAACirC,GAAD,KACE,kBAACC,GAAD,KACG96B,EAAE,kBAEL,kBAACi7B,GAAD,KACGtyC,EAAa6yC,WAAW96B,KAAI,SAAC+6B,GAAD,OAC3B,kBAACT,GAAD,CACE9qC,KAAI,cAASurC,EAAUA,WACvB/+B,QAAS4+B,EACT7oC,UAAU,iBACVvH,IAAKuwC,EAAUv7B,IAEf,kBAACk7B,GAAD,KACE,kBAACF,GAAD,KACGO,EAAUnnC,aAEb,kBAAC6mC,GAAD,KACGM,EAAUA,kBAQ1B9yC,GAAgBA,EAAaub,eAAetU,OAAS,GACpD,kBAACirC,GAAD,KACE,kBAACC,GAAD,KACG96B,EAAE,wBAEL,kBAAC,GAAD,CAAmBiE,QAAStb,EAAaub,sB,yvBC1IhD,IAAMw3B,GAAsB7sC,KAAOqgC,QAAV,KAM5B70B,GAN4B,OAYnBshC,GAAsB9sC,KAAOC,IAAV,KAC5BuL,GAD4B,OAKnBuhC,GAAsB/sC,KAAOC,IAAV,KAE5BuL,GAF4B,OCgEjBwhC,GA/DiB,SAAC,GAEI,IADnClzC,EACkC,EADlCA,aAEQqX,EAAMD,aAAe,gBAArBC,EAER,OACE,kBAAC07B,GAAD,KACE,kBAACC,GAAD,KACE,kBAACC,GAAD,KACE,kBAAC,GAAD,CAAe1+B,KAAM8C,EAAE,6BACtBrX,GACCA,EAAa2b,aACb3b,EAAa2b,YAAY1U,OAAS,GAChC,kBAAC,GAAD,CAAoBixB,eAAgBl4B,EAAa2b,cAEpD3b,GACCA,EAAa2b,aACb3b,EAAa2b,YAAY1U,OAAS,GAChC,kBAAC,GAAD,CAAOixB,eAAgBl4B,EAAa2b,cAEvC3b,GAAgB,kBAAC,GAAD,CAAkBA,aAAcA,IAChDA,GAAgBA,EAAaK,MAC5B,kBAAC,GAAD,CAAa6W,KAAK,eAAelX,aAAcA,IAGhDA,GACCA,EAAaq2B,aACbr2B,EAAas2B,SACbt2B,EAAas2B,QAAQ2Q,OACnB,kBAAC,GAAD,CACE5Q,YAAar2B,EAAaq2B,YAC1BC,QAASt2B,EAAas2B,QAAQ2Q,YCmB/BkM,GAhDgB,SAAC,GAEI,IADlCnzC,EACiC,EADjCA,aAEQqX,EAAMD,aAAe,gBAArBC,EACA3W,EAAQmK,aAAY,SAACnP,GAAD,OAAqBA,EAAM0G,aAA/C1B,IAER,OACE,kBAACqyC,GAAD,KACE,kBAACE,GAAD,KACI,WACA,OAAQvyC,GACN,IAAK,OACH,OACE,oCACE,kBAAC,GAAD,CAAe6T,KAAM8C,EAAE,6BACtBrX,GAAgBA,EAAa2b,YAAY1U,OAAS,GACjD,kBAAC,GAAD,CACEixB,eAAgBl4B,EAAa2b,cAIhC3b,GAAgBA,EAAa2b,YAAY1U,OAAS,GACjD,kBAAC,GAAD,CAAOixB,eAAgBl4B,EAAa2b,cAGrC3b,GACC,kBAAC,GAAD,CAAkBA,aAAcA,KAIxC,QACE,OACE,oCACGA,GACC,kBAAC,GAAD,CACEq2B,YAAar2B,EAAaq2B,YAC1BC,QAASt2B,EAAas2B,QAAQ2Q,UA3B1C,MCyLKmM,GAzMc,SAAC,GAA4C,IAA1C/5B,EAAyC,EAAzCA,QAC9B,OACE,kBAAC,GAAD,CAAmBA,QAASA,GAC1B,kBAAC,GAAD,CAAgBnN,MAAM,OAAOC,OAAO,OAAOwG,WAAW,eACpD,oCACE,kBAAC,GAAD,CACEzG,MAAM,OACNC,OAAO,OACP4R,QAAQ,OACRQ,aAAa,YACbD,KAAM,CACJG,IAAK,KAEP9L,WAAW,cACXsM,SAAS,UAET,oCACE,kBAAC,GAAD,CACE/S,MAAM,OACNC,OAAO,OACPwG,WAAW,eAEX,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAgB0G,QAASA,IACzB,kBAAC,GAAD,MACA,kBAAC,GAAD,CACEnN,MAAM,OACNC,OAAO,OACP4R,QAAQ,OACRQ,aACElF,EAAU,WAAa,gCAEzBiF,KAAM,CACJhW,MAAO,QACPmW,IAAKpF,EAAU,SAAW,UAE5ByE,OAAO,aACPzK,QAAQ,cACRvQ,OAAQ,CACNob,OAAQ,qBAEVvL,WAAW,eAEX,kBAAC,GAAD,CAAgBzG,MAAM,OAAOC,OAAO,UACpC,kBAAC,GAAD,CACED,MAAM,OACNC,OAAO,OACPwG,WAAW,eAEX,kBAAC,GAAD,MACA,kBAAC,GAAD,CACEzG,MAAM,OACNC,OAAO,OACPwG,WAAW,cACXoL,QAAQ,OACRQ,aAAa,oCACbD,KAAM,CACJG,IAAK,cAGP,6BACE,kBAAC,GAAD,CACEvS,MAAM,OACNiT,SAAS,OACThT,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNiT,SAAS,QACThT,OAAO,WACP4R,QAAQ,WAGZ,6BACE,kBAAC,GAAD,CACE7R,MAAM,OACNiT,SAAS,OACThT,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNiT,SAAS,QACThT,OAAO,WACP4R,QAAQ,WAGZ,6BACE,kBAAC,GAAD,CACE7R,MAAM,OACNiT,SAAS,OACThT,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNiT,SAAS,QACThT,OAAO,WACP4R,QAAQ,WAGZ,6BACE,kBAAC,GAAD,CACE7R,MAAM,OACNiT,SAAS,OACThT,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNiT,SAAS,QACThT,OAAO,WACP4R,QAAQ,WAGZ,6BACE,kBAAC,GAAD,CACE7R,MAAM,OACNiT,SAAS,OACThT,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNiT,SAAS,QACThT,OAAO,WACP4R,QAAQ,WAGZ,6BACE,kBAAC,GAAD,CACE7R,MAAM,OACNiT,SAAS,OACThT,OAAO,WACP4R,QAAQ,QACRD,OAAO,gBAET,kBAAC,GAAD,CACE5R,MAAM,OACNC,OAAO,OACP4R,QAAQ,OACRO,KAAM,CACJhW,MAAO,SACPmW,IAAK,SACLE,KAAM,QAERhM,WAAW,eAEX,kBAAC,GAAD,CACEzG,MAAM,UACNC,OAAO,UACP2R,OAAO,uBACPD,OAAO,UAET,kBAAC,GAAD,CACE3R,MAAM,UACNC,OAAO,UACP2R,OAAO,uBACPD,OAAO,UAET,kBAAC,GAAD,CACE3R,MAAM,UACNC,OAAO,UACP2R,OAAO,uBACPD,OAAO,UAET,kBAAC,GAAD,CACE3R,MAAM,UACNC,OAAO,UACP2R,OAAO,uBACPD,OAAO,UAET,kBAAC,GAAD,CACE3R,MAAM,UACNC,OAAO,UACP2R,OAAO,uBACPD,OAAO,gBAQjBxE,GAAW,kBAAC,GAAD,OACXA,GAAW,kBAAC,GAAD,aCUdg6B,GAtLM,WAAO,IAAD,EACjBtC,EAAmB9tB,eAAnB8tB,eAEA/vC,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBAIFqF,EAAWC,cACX+S,EAAUC,aAAc,sCARL,EAUS/T,oBAAkB,GAV3B,oBAUP8rC,GAVO,aAWqB9rC,mBAAwB,IAX7C,oBAWlB+d,EAXkB,KAWDC,EAXC,OAakChd,aAGzDmrC,GAAmB,CACnBlqC,UAAW,CACT+P,GAAIw5B,EACJl4B,SACE7X,GAAmBA,EAAgBiG,OAAS,EAA5C,UACIjG,EAAgBhC,MACd,SAACC,GAAD,OAAUA,EAAK4Y,iBAAmBk5B,YAFxC,aACI,EAEG/4B,WACH,MAXIs7B,EAbW,EAajB9sC,KAAuBE,EAbN,EAaMA,QAAS3C,EAbf,EAaeA,MAAOkT,EAbtB,EAasBA,QAe/ClQ,qBAAU,WACJusC,GAAyD,OAAtCA,EAAgBtzC,aAAawG,MAClD6qC,GAAa,KAEd,CAACiC,IAEJvsC,qBAAU,WACRuV,KAAQi1B,KAAK,CACXC,QAAS,WACTC,KAAMpqC,OAAOC,SAAS+oB,SACtB3kB,MAAO,mBAER,IAEH3E,qBAAU,WAENusC,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAawG,OAE7BH,EAAS1F,GAAa,SACtB4iB,EAAmB,CACjB7X,MAAO4nC,EAAgBtzC,aAAawG,KAAKjL,KACzCoQ,YAAa2nC,EAAgBtzC,aAAawG,KAAKmF,YAC/CC,MAAO0nC,EAAgBtzC,aAAawG,KAAKnG,KAAKwL,IAC1CynC,EAAgBtzC,aAAawG,KAAKnG,KAAKwL,IACvC,GACJA,IAAKxE,OAAOC,SAASC,UAGxB,CAAC+rC,EAAiBjtC,IAErBU,qBAAU,WAENusC,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAawG,OAE7BH,EACEjG,GAAoB,CAClB7E,KAAM+3C,EAAgBtzC,aAAawG,KAAKjL,KACxC8E,KAAMizC,EAAgBtzC,aAAawG,KAAKnG,KAAKwL,OAGjDxF,EAASlG,GAAgBmzC,EAAgBtzC,aAAawG,UAEvD,CAACH,EAAUitC,IAEdvsC,qBAAU,WACR,IAAMwsC,EAAiBvyC,EAAgBhC,MACrC,SAACC,GAAD,OAAUA,EAAK4Y,iBAAmBk5B,MAIjCwC,GACDD,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAawG,MAC7B8sC,EAAgBtzC,aAAawG,KAAKg6B,mBAClCpvB,OAAOC,KACLpW,KAAKC,MAAMo4C,EAAgBtzC,aAAawG,KAAKg6B,oBAC7Cv5B,OAAS,EAEXZ,EACE1J,GAAU,CACRH,QAAQ,EACRuE,aAAc9F,KAAKC,MACjBo4C,EAAgBtzC,aAAawG,KAAKg6B,mBAEpCv/B,eAAe,KAInBsyC,GACAD,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAawG,MAC7B8sC,EAAgBtzC,aAAawG,KAAKg6B,mBAClCpvB,OAAOC,KACLpW,KAAKC,MAAMo4C,EAAgBtzC,aAAawG,KAAKg6B,oBAC7Cv5B,OAAS,GAEXZ,EACEjF,GAAgB,CACdL,aAAc9F,KAAKC,MACjBo4C,EAAgBtzC,aAAawG,KAAKg6B,wBAKzC,CAACx/B,EAAiB+vC,EAAgBuC,EAAiBjtC,IAEtD,IAAMmtC,EAAqBh8B,uBAAY,WACrCP,MACC,CAACA,IAEJ,OACE,kBAAC,GAAD,CACEvQ,QAASA,EACT3C,MAAOA,EACPoV,UACEm6B,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAakH,OACzBosC,EAAgBtzC,aAAakH,OAAO0iC,QACpC0J,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAa+D,MAC7BuvC,EAAgBtzC,aAAa+D,WAC7BuU,EAENY,MAAOoK,EACPpM,KAAK,eACLC,GAAI45B,EACJ93B,eAAgB,kBAAC,GAAD,CAAsBI,QAASA,KAE/C,oCACE,kBAAC,GAAD,KACE,oCACGA,EACC,kBAAC,GAAD,CACErZ,aACEszC,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAawG,OAIjC,kBAAC,GAAD,CACExG,aACEszC,GACAA,EAAgBtzC,cAChBszC,EAAgBtzC,aAAawG,SAMvC,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAuB0Q,KAAK,iBAC5B,kBAAC,GAAD,CAAaA,KAAK,iBAClB,kBAACF,GAAD,CACEC,QAASu8B,EACTt8B,KAAK,eACLC,GAAI45B,OCEC0C,GAhLC,WAAO,IAAD,IACZxD,EAAchtB,eAAdgtB,UAEAjvC,EAAoB6J,aAC1B,SAACnP,GAAD,OAAqBA,EAAMkG,kBADrBZ,gBAIFqF,EAAWC,cACX+S,EAAUC,aAAc,sCARV,EAU0B/T,mBAAwB,IAVlD,oBAUb+d,EAVa,KAUIC,EAVJ,OAYkChd,aAGpDwB,GAAc,CACdP,UAAW,CACT+P,GAAI04B,EACJp3B,SACE7X,GAAmBA,EAAgBiG,OAAS,EAA5C,UACIjG,EAAgBhC,MAAK,SAACC,GAAD,OAAUA,EAAK2Y,YAAcq4B,YADtD,aACI,EACIj4B,WACJ,MAVI07B,EAZM,EAYZltC,KAAkBE,EAZN,EAYMA,QAAS3C,EAZf,EAYeA,MAAOkT,EAZtB,EAYsBA,QAZtB,EA8BhB1Q,aAAkDyB,GAAqB,CACzER,UAAW,CACT2P,GAAI84B,EACJp3B,SACE7X,GAAmBA,EAAgBiG,OAAS,EAA5C,UACIjG,EAAgBhC,MAAK,SAACC,GAAD,OAAUA,EAAK2Y,YAAcq4B,YADtD,aACI,EACIj4B,WACJ,MAXF27B,EA1BY,EA0BlBntC,KACSotC,EA3BS,EA2BlBltC,QAESmtC,GA7BS,EA4BlB9vC,MA5BkB,EA6BlBkT,SAYFlQ,qBAAU,WACRuV,KAAQi1B,KAAK,CACXC,QAAS,WACTC,KAAMpqC,OAAOC,SAAS+oB,SACtB3kB,MAAO,cAER,IAEH3E,qBAAU,WACJ2sC,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQsK,OACzDH,EAAS1F,GAAa,SACtB4iB,EAAmB,CACjB7X,MAAOgoC,EAAWx3C,QAAQsK,KAAKjL,KAC/BoQ,YAAa+nC,EAAWx3C,QAAQsK,KAAKmF,YACrCC,MACE8nC,EAAWx3C,QAAQsK,KAAK6U,OAAOpU,OAAS,EACpCysC,EAAWx3C,QAAQsK,KAAK6U,OAAO,GAAGxP,IAClC,GACNA,IAAKxE,OAAOC,SAASC,UAGxB,CAACmsC,EAAYrtC,IAEhBU,qBAAU,WACJ2sC,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQsK,OACzDH,EACEjG,GAAoB,CAClB7E,KAAMm4C,EAAWx3C,QAAQsK,KAAKxG,aAAazE,KAC3C8E,KAAMqzC,EAAWx3C,QAAQsK,KAAKxG,aAAaK,KAAKwL,OAGpDxF,EAAShK,EAAWq3C,EAAWx3C,QAAQsK,UAExC,CAACH,EAAUqtC,IAEd3sC,qBAAU,WACR,IAAMwsC,EAAiBvyC,EAAgBhC,MACrC,SAACC,GAAD,OAAUA,EAAK2Y,YAAcq4B,MAI5BsD,GACDG,GACAA,EAAWx3C,SACXw3C,EAAWx3C,QAAQsK,MACnBktC,EAAWx3C,QAAQsK,KAAKg6B,mBACxBpvB,OAAOC,KAAKpW,KAAKC,MAAMw4C,EAAWx3C,QAAQsK,KAAKg6B,oBAC5Cv5B,OAAS,EAEZZ,EACE1J,GAAU,CACRH,QAAQ,EACRuE,aAAc9F,KAAKC,MAAMw4C,EAAWx3C,QAAQsK,KAAKg6B,mBACjDv/B,eAAe,KAInBsyC,GACAG,GACAA,EAAWx3C,SACXw3C,EAAWx3C,QAAQsK,MACnBktC,EAAWx3C,QAAQsK,KAAKg6B,mBACxBpvB,OAAOC,KAAKpW,KAAKC,MAAMw4C,EAAWx3C,QAAQsK,KAAKg6B,oBAC5Cv5B,OAAS,GAEZZ,EACEjF,GAAgB,CACdL,aAAc9F,KAAKC,MAAMw4C,EAAWx3C,QAAQsK,KAAKg6B,wBAItD,CAACx/B,EAAiB0yC,EAAYrtC,EAAU4pC,IAE3C,IAAMuD,EAAqBh8B,uBAAY,WACrCP,IACA48B,MACC,CAAC58B,EAAS48B,IAEb,OACE,kBAAC,GAAD,CACEntC,QAASA,GAAWktC,EACpB7vC,MAAOA,EACPoV,UACEu6B,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQgL,OACnDwsC,EAAWx3C,QAAQgL,OAAO0iC,QAC1B8J,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQ6H,MACvD2vC,EAAWx3C,QAAQ6H,WACnBuU,EAEN1N,SAAU8oC,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQ2P,IACjEqN,MAAOoK,EACPpM,KAAK,UACLC,GAAI84B,EACJh3B,eAAgB,kBAAC,GAAD,CAAiBI,QAASA,KAE1C,oCACE,kBAAC,GAAD,KACE,oCACGA,EACC,kBAAC,GAAD,CACEnd,QACEw3C,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQsK,KAEzDwgC,gBACE2M,GAAqBA,EAAkB3M,kBAI3C,kBAAC,GAAD,CACE9qC,QACEw3C,GAAcA,EAAWx3C,SAAWw3C,EAAWx3C,QAAQsK,KAEzDwgC,gBACE2M,GAAqBA,EAAkB3M,oBAMjD,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,MACA,kBAAC,GAAD,CAAuB9vB,KAAK,YAC5B,kBAAC,GAAD,CAAaA,KAAK,YAClB,kBAACF,GAAD,CACEC,QAASu8B,EACTt8B,KAAK,UACLC,GAAI84B,O,wsICzMP,IAAM6D,GAAoB5tC,KAAOC,IAAV,KAMImL,GAIAA,IAIrByiC,GAAiB7tC,KAAOC,IAAV,MAKd6tC,GAAmB9tC,KAAOC,IAAV,MAIhB8tC,GAAgB/tC,KAAOC,IAAV,MA2BF,qBAAGT,MAAkB7C,OAAOI,uBAG5B,qBAAGyC,MAAkB7C,OAAO4B,WAIlB6M,IAKrB4iC,GAAuBhuC,KAAOC,IAAV,KAcCmL,IAIrB6iC,GAAsBjuC,KAAOC,IAAV,KAMEmL,IAEL,qBAAG5L,MAAkB7C,OAAO2B,aAI5C4vC,GAAoBluC,aAAO0D,GAAP1D,CAAH,MACb,qBAAGR,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO4B,YAG1B4vC,GAAqBnuC,aAAO0D,GAAP1D,CAAH,MACd,qBAAGR,MAAkBf,MAAMhC,QAGjC,qBAAG+C,MAAkB7C,OAAO2B,aAI1B8vC,GAAyBpuC,aAAO0D,GAAP1D,CAAH,MAClB,qBAAGR,MAAkBf,MAAMjC,QAGjC,qBAAGgD,MAAkB7C,OAAO4B,YAM1B8vC,GAAgCruC,KAAO4b,KAAV,MAEzB,qBAAGpc,MAAkBf,MAAMhC,QAGjC,qBAAG+C,MAAkB7C,OAAOwB,eAG1B,qBAAGqB,MAAkB7C,OAAO2B,aAI5BgwC,GAAqBtuC,KAAOkF,IAAV,KAMGkG,IAIrBmjC,GAAgBvuC,KAAOC,IAAV,MAaF,qBAAGT,MAAkB7C,OAAO2B,YAEhB8M,IAIhC,qBAAGojC,OACE,kCAGHF,GAHG,2CAOyBljC,IAMrBqjC,GAAkBzuC,KAAOC,IAAV,KAIMmL,IAIrBsjC,GAAkB1uC,KAAOC,IAAV,MC9Bb0uC,GAvHG,SAAC,GAAoC,IAAlCtY,EAAiC,EAAjCA,WACbuY,EAAa3xB,iBAAuB,MAElC9L,EAAMD,aAAe,WAArBC,EACFhR,EAAWC,cAEX41B,EAAmB/Y,iBAAuB,MAY1C4xB,EAA2Bv9B,uBAC/B,SAAChY,GACC6G,EACE1J,GAAU,CACR6C,iBAIN,CAAC6G,IAcH,OACE,kBAACytC,GAAD,KACE,kBAACc,GAAD,KACE,kBAAC3zB,GAAD,CAAmBzC,QAAQ,gBAAgBV,OAAO,YAChD,kBAACi2B,GAAD,CAAgBjpC,MAAO,CAAEgT,OAAQ,MAAjC,iBACA,kBAAC62B,GAAD,KACE,kBAACtyB,GAAD,CACE3T,SAAS,kBACTqF,QAAS,WAlBf+gC,GAAcA,EAAW/wB,UAC3B+wB,EAAW/wB,QAAQixB,YAAc,QAqB3B,kBAAC3yB,GAAD,CACE3T,SAAS,mBACTqF,QAAS,WAnBf+gC,GAAcA,EAAW/wB,UAC3B+wB,EAAW/wB,QAAQixB,YAAc,WAyBjC,kBAAChB,GAAD,KACE,kBAACE,GAAD,MACA,kBAACD,GAAD,CAAevwB,IAAKoxB,GACjBvY,EAAWxkB,KAAI,SAACvY,GACf,IAzDUy1C,EAyDJC,EAxDF,QADMD,EA0DRz1C,EAAUmM,YAAY6f,MAAM,KAAK9P,MAAM,EAAG,IAAIiV,KAAK,OAzDjC,KAARskB,IACfA,EAAMA,EAAIE,YAKJloB,QAAQ,gBAAiB,IAsD5B,OACE,kBAACwnB,GAAD,CAAelyC,IAAK/C,EAAU2X,IAI5B,kBAACk9B,GAAD,KAAqB70C,EAAUjE,MAC/B,kBAAC44C,GAAD,KACE,kBAACG,GAAD,KACGY,GAAO,kBAAC,KAAD,CAAQlrC,QAAO,UAAKkrC,EAAL,SAAmB,IAC1C,kBAACX,GAAD,CACExgC,QAAS,WACPghC,EAAyBv1C,KAG1B6X,EAAE,cAIN7X,EAAUi6B,OACT,kBAAC,GAAD,CACE5tB,IAAKrM,EAAUi6B,MAAM5tB,IACrBtQ,KAAMiE,EAAUjE,KAChB0+B,OAAQiC,EACR/kB,GAAI3X,EAAU+X,GACduG,OAAO,IACPoc,OACE16B,GAAaA,EAAUoM,OAASpM,EAAUoM,MAAMC,IAC5CrM,EAAUoM,MAAMC,SAChByM,KAIR9Y,EAAUi6B,OACV,kBAAC+a,GAAD,CACElpC,IACE9L,EAAUoM,MAAQpM,EAAUoM,MAAMC,IAAM6R,KAE1ClS,IAAKhM,EAAUjE,gB,mrCC3I9B,IAAM65C,GAAoBlvC,KAAOC,IAAV,MAWI,qBAAGkvC,aAUX,qBAAG3vC,MAAkB7C,OAAO6B,iBAE1B,qBAAGgB,MAAkB7C,OAAO2B,aAK3C8wC,GAAepvC,KAAOkF,IAAV,MAMZmqC,GAAuBrvC,KAAOC,IAAV,MAQpBqvC,GAAkBtvC,KAAOkF,IAAV,MAKhB,qBAAGqqC,WAA+B,iBAAmB,UACpD,qBAAGA,WAA+B,EAAI,MCepCC,GAnDE,SAAC,GAA+B,IAA7Br6B,EAA4B,EAA5BA,OAA4B,EACM9V,mBAAS,GADf,oBACvCowC,EADuC,KACnBC,EADmB,KAExChqC,EAAQyP,EAAOs6B,GAmBrB,OAJA5uC,qBAAU,WACR6uC,EAAsB,KACrB,CAACv6B,IAGF,kBAAC+5B,GAAD,CAAmBC,UAAWh6B,EAAOpU,QACnC,kBAAC,KAAD,CACE4uC,aAAc,EACdC,cAAe,EACfC,aAAcJ,EACdK,cAvBoB,SAACC,GACzB,IAAMC,EAAWD,EAAOE,YACpBD,EAAW76B,EAAOpU,QACpB2uC,EAAsBM,IAqBpBrL,MAAI,GAEHxvB,EAAOtD,KAAI,SAACq+B,EAAQx6B,GAAT,OACV,kBAAC,KAAD,CAAarZ,IAAG,UAAKqJ,EAAL,YAAcgQ,IAC5B,kBAAC05B,GAAD,CAAchqC,IAAKM,EAAOrJ,IAAKqZ,SAKrC,kBAAC25B,GAAD,KACGl6B,EAAOtD,KAAI,SAACnM,EAAOgQ,GAAR,OACV,kBAAC45B,GAAD,CACEjzC,IAAG,UAAKqJ,EAAL,iBAAmBgQ,GACtBtQ,IAAKM,EACLmI,QAAS,kBA/BU,SAAC6H,GACxBA,EAAQP,EAAOpU,QACjB2uC,EAAsBh6B,GA6BDy6B,CAAqBz6B,IACpC65B,WAAY75B,IAAU+5B,U,qkBCvD3B,IAAM3P,GAAiB9/B,KAAOC,IAAV,MAGf,gBAAG2X,EAAH,EAAGA,OAAH,OAAgBA,GAAkB,OAKjCw4B,GAAiBpwC,KAAOkF,IAAV,MAOdmrC,GAAYrwC,KAAOC,IAAV,KAMhBmwC,ICgCSrQ,GAzCD,SAAC,GAAoC,IAAlCnoB,EAAiC,EAAjCA,OAAQ04B,EAAyB,EAAzBA,OACjBnwC,EAAWC,cAEX4/B,EACJsQ,GACAA,EAAO5yB,QACL,SAACnnB,GAAD,OACEA,GAASA,EAAMgS,MAAQhS,EAAMgS,KAAKA,MAAQhS,EAAMgS,KAAKA,KAAKjM,SAAS,SAGnEq1B,EAA4BrgB,uBAChC,SAAC/a,GACC4J,EACE1J,EAAU,CACRF,aAIN,CAAC4J,IAGH,OACE,kBAAC,GAAD,CAAgByX,OAAQA,GACrBooB,EAAWnuB,KACV,SAACtb,GAAD,OACEA,GACAA,EAAM8a,IACJ,kBAACg/B,GAAD,CACEh0C,IAAK9F,EAAM8a,GACXxD,QAAS,WACP8jB,EAA0Bp7B,KAG5B,kBAAC65C,GAAD,CAAgBhrC,IAAK7O,EAAMgS,KAAKA,a,gFC1CxCgoC,GAA4B,CAChC,YACA,qEACA,eACA,YACA,UACA,WACA,cACA,eACA,YACA,YACA,+DACA,2BACA,oBACA,cACA,sBACA,cACA,2BACA,YACA,aACA,YACA,gBACA,eACA,YACA,iBACA,aACA,YACA,gBAGIC,GAAqB,CACzB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAGIC,GAAqB,CACzB,CACE13C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,iBACP6I,KAAM,oCACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,kBACP6I,KAAM,uBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,mBACP6I,KAAM,+CACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,kBACP6I,KAAM,eACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,4EACP6I,KAAM,iMACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,wFACP6I,KAAM,sGACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,kFACP6I,KAAM,gSACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,wFACP6I,KAAM,8FACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,kBACP6I,KAAM,6CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,uBACP6I,KAAM,qBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,sBACP6I,KAAM,sDACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,gBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,qBACP6I,KAAM,iDACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,0BACP6I,KAAM,4BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,0BACP6I,KAAM,+DACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,sBACP6I,KAAM,4BACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,kCACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,iBACP6I,KAAM,sBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,gBACP6I,KAAM,+CACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,oBACP6I,KAAM,aACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,wCACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,wBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,iBACP6I,KAAM,6DACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,cACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,8BACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,kBACP6I,KAAM,0BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,oBACP6I,KAAM,0CACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,qBACP6I,KAAM,aACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,gBACP6I,KAAM,oCACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,eACP6I,KAAM,0BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,kBACP6I,KAAM,iDACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,kBACP6I,KAAM,YACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,iBACP6I,KAAM,4CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,yBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,kBACP6I,KAAM,0EACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,iBACP6I,KAAM,qBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,kCACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,oBACP6I,KAAM,wBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,mBACP6I,KAAM,iDACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,sBACP6I,KAAM,cACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,0DACP6I,KAAM,kPACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,0DACP6I,KAAM,sGACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,kFACP6I,KAAM,gQACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,kFACP6I,KAAM,4EACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,cACP6I,KAAM,2CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,aACP6I,KAAM,0BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,gBACP6I,KAAM,0CACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,eACP6I,KAAM,gBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,qDACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,uBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,qBACP6I,KAAM,2EACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,oBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,kBACP6I,KAAM,4CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,sBACP6I,KAAM,wBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,qBACP6I,KAAM,gEACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,oBACP6I,KAAM,qBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,wDACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,yBACP6I,KAAM,4BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,uBACP6I,KAAM,qFACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,6BACP6I,KAAM,gBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,0BACP6I,KAAM,oEACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,yBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,sBACP6I,KAAM,wEACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,yBACP6I,KAAM,oBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,iBACP6I,KAAM,gEACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,4BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,uBACP6I,KAAM,wEACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,mCACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,qBACP6I,KAAM,gDACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,wBACP6I,KAAM,uBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,8BACP6I,KAAM,6DACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,kBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,oBACP6I,KAAM,2CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,sBACP6I,KAAM,yBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,uBACP6I,KAAM,qEACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,qBACP6I,KAAM,mBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,sBACP6I,KAAM,gDACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,2BACP6I,KAAM,oBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,oBACP6I,KAAM,+DACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,6BACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,qBACP6I,KAAM,4CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,0BACP6I,KAAM,4BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,0BACP6I,KAAM,6DACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,sBACP6I,KAAM,4BACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,kBACP6I,KAAM,oDACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,kBACP6I,KAAM,qBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,sBACP6I,KAAM,4DACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,uBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,kBACP6I,KAAM,6CACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,uBACP6I,KAAM,0BACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,sBACP6I,KACE,kGACF9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,mBACP6I,KAAM,sBACN9F,KAAMuoC,MAGR,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,mBACP6I,KAAM,uCACN9F,KAAMooC,MAER,CACE53C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,iBACP6I,KAAM,sBACN9F,KAAMqoC,MAER,CACE73C,KAAM,KACN23C,UAAW,SACXlrC,MAAO,gBACP6I,KAAM,6CACN9F,KAAMsoC,MAER,CACE93C,KAAM,KACN23C,UAAW,QACXlrC,MAAO,oBACP6I,KAAM,aACN9F,KAAMuoC,MAER,CACE/3C,KAAM,KACN23C,UAAW,OACXlrC,MAAO,kBACP6I,KAAM,+CACN9F,KAAMooC,M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","file":"static/js/main.7764ccd0.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGAAgMAAABASzstAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACVBMVEX///8Alm7WJhJCjUAzAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+cDDgsoFsU2eGMAAADUSURBVHja7c5BDQAACAQgS1rSlIa4j3OQgCoAAAAAAAAAAAAAAAAAAAAAAAAA4L0+TlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUDAPznGCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCsQU9crSiBjf5dQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMy0xNFQxMTo0MDoyMiswMDowMODfl/oAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDMtMTRUMTE6NDA6MjIrMDA6MDCRgi9GAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAEzCAYAAABHfrtkAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABD9JREFUeNrt2UENwCAURMFPQ1IRVVBHGEIKOosE0vPOSNjTS7ZV1VcAQJTLBAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAABIAJAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAgJM+bQAAeQEwbAAAcVwAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAAPir368RACAuAJ5lBABI4wIAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAI42oIcFOq7JlVgAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAANVCAMAAAAQqaO7AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAP1BMVEUNXq9nms3///94pdI+f79DgsHu9Pl5ptOrx+O0zeaSttuVuNwfarVflMqavN6mxOKpxuKvyuUmbrcpcLiHr9eebY/OAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+cCFQQLMva4VcAAAApLSURBVHja7da5FQJBDERBsct9w5J/rPgYgzUPpKkKoY0vRWS2mrqaA0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEBFEBAAAUQEEABBARQAAEBFEBAAAUQEEABBARQAAEBFEBAAAUQEEABBAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQEUQEAABRAQQAEEBFAAAQEUQEAABRAQQAEEBFAAAQEUQEAABRAQQAEEBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABARRAQAAFEBBAAQQEUAABARRAQAAFEBBAAQQEUAABARRAQAAFEBBAAAEEEEAAAQQQQAABBBBAAAEEEMBfWG+ANgEsG8DtBLQJoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAqgAIIACqAAggAKoACCAAogIIACCAigAAICKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIICKAAAgIogIAACiAggAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAgAAKICCAAggIoAACAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAUCGAu8z2fcc5pB7neALawg2o6hzAF0IhgCCACCAIIAIIAogAggAigCCACCAIIAIIAogAggAigCCACCAIIAIIAogAggAigCCACCAIIAIIAogAggAigCCACCAIIAIIAogAggAigCCACCAIIAIIAogAggAigCCAAggIoAACAiiAgAAKIAggAggCiACCACKAIIAIIAggAggCiACCACKAIIAIIAggAggCiACCACKAIIAIIAggAggCiACCACKAIIAIIAggAggCiACCACKAIIAIIAggAggCiACCACKAIIAIIAigAAICKICAAAogIIACCAigAIIAIoAggAggCCACCAKIAIIAIoAggAggCCACCAKIAIIAIoAggAggCCACCAKIAIIAIoAggAggCCACCAKIAIIAIoAggAggCCACCAKIAIIAIoAggAggCCACCAKIAIIACiAggAIICKAAAgIogIBQCCAIIAIIAogAggAigCCACCAIIAIIAogAQgGXzK59E3JLPc79AbTlrveqbwDn1ONsPcHwhQAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAogCKAACiAIoAAKIAigAAICKICAAAogIIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKIACCAIogIAACiAggAIICKAAAgIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAiiAIIACKIAggAIogCCAAggIoAACAiiAgAAKICCAAggCKIACCAIogAIIAiiAAggCKIACCAIogAIIAiiAAggCKID/67kAbQJYNoBAbQIICKAAAgIogIAACiAggAIICKAAAgIogIAACiAggAIICKAAAgIogIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIICCAAggIoAACAiiAgAAKICCAAggIoAACAiiAgAAKICCAAggIoAACAiiAgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggIIACCAigAAICKICAAAogIIACCAigAAICKICAAAogIIACCAigAAICaGFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAQQAEEBFAAAQEUQEAABRAQQAEEPiyZzX0D+FqAymICGJQAAgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAICCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggIIIAAAggggAACCCCAAAJUCOADYFABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5nQAGFRPAoAQQEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQEAAAQQQQAABBBBAAAEEEKBCADcAgwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEjrDeF9N4ZW1E7wAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTAyLTIxVDA0OjExOjUwKzAwOjAwnREcGQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wMi0yMVQwNDoxMTo1MCswMDowMOxMpKUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGXBAMAAADR2PyuAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEUAcs4ATIkAAACrq6v///+LtHY2AAAAAWJLR0QEj2jZUQAAAAd0SU1FB+cCGhEfLReQ/q0AAAGTSURBVHja7dBBEQAgDAOwWsACFrCAf02I6GtHIiEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwq0Ulm4pAgQIFCkSgQIECEShQoEAEChQoEIECBQpEoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQIEIFChQIAIFChSIQIECBSJQoECBCBQoUCACBQoUiECBAgUiUKBAgQgUKFAgAgUKFIhAgQIFCkSgQIECEShQoEAEChQoEIECBQpEoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQIEIFDg48FDJpSJQoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQAQKFCgQgQIFCkSgQIECEShQoEAEChQoUCACBQoUiECBAgUiUKBAgQgUKFAgAgUKFIhAgQIFIlCgQIEIFChQIAIFChSIQIECBSJQoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQAQKFCgQgQIFCkSgQIECEShQoEAEChQoUCACBc71AHyAlW7pVuI4AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTAyLTI2VDE3OjMxOjQ1KzAwOjAwhtP/LAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wMi0yNlQxNzozMTo0NSswMDowMPeOR5AAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGHBAMAAADSDv41AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAFVBMVEX////G0d4AL2yOo74uVYckTIEaRHuWBMpwAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+cCGhEsLJT8qwsAAAJFSURBVHja7dBRCcAwDEDB1EoVVETqZP41zEE/MjIo3FPwuIimxqy0QgABAgQogAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAFECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEKAAAgQIUAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABCiBAgAABAgQIECBAgADPZVO7BPjkbcXUpwACBAgQoAACBAhQAAECBCiAAAECFECAAAEKIECAAAUQIECAAggQIEABBAgQoAACBAhQAAECBAhQAAECBCiAAAECFECAAAEKIECAAAUQIECAAggQIEABBAgQoAACBAhQAAECBCiAAAECFECAAAECFECAAAEKIECAAAUQIECAAvgTYDa1SztP3lZ0NUqAKwQQIECAAggQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhQAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEKIECAAAUQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQoAACBAgQIECAAAECBAjw2As8nhGpLY8OgwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMi0yNlQxNzo0NDo0NCswMDowMO+2Kl8AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDItMjZUMTc6NDQ6NDQrMDA6MDCe65LjAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAFVCAYAAACZ01cjAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABLlJREFUeNrt1jERgDAQAMEHKxGTQQBC0scFgwkc0KCKKg2ISPPFroSrbolyfgHJ7VuJ66hCkN7beoz7EYL0VgkAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAABgACQDAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAGAAJAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAAAYAAkAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAABgAAMAAAAAGAAAwAACAAQAADAAAYAAAAAMAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAADAAAIABAAAMAABgAAAAAwAAGAAAwAAAAAYAAAwAAGAAAAADAAAYAADAAAAABgAAMAAAgAEAAAwAAGAAAAADAAAYAADAAAAAE35N6Qr4oG055AAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAFABAMAAADe49A5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEUWm2Ky3sv/////17//iD5D8vcHAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+cCGhICEcXVUG8AAAHiSURBVHja7dAxAQAgDAOwzgoakIB/Tbjos0RCkpo5NffVRKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQJ3BH6MYRBc9rIaqAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMi0yNlQxODowMjoxNyswMDowMAwJ6FYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDItMjZUMTg6MDI6MTcrMDA6MDB9VFDqAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/gl.da9a8786.png\";","module.exports = __webpack_public_path__ + \"static/media/hr.0dda7a23.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAFABAMAAADe49A5AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEXOKTneb3r///+EoIpHcFDpROnhAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+cBBAknNm85Iw4AAAFFSURBVHja7dBBEQAgDAOwWsACFrCAf02I6GtHIiEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwgUUlm4pAgQIFCkSgQIECEShQoEAEChQoEIECBQpEoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQIEIFChQIAIFChSIQIECBSJQoECBCBQoUCACBQoUiECBAgUiUKBAgQgUKFAgAgUKFIhAgQIFCkSgQIECEShQoEAEChQoEIECZwQeKrlUBAoUKFAgAgUKFIhAgQIFIlCgQIEIFChQIAIFChSIQIECBSJQoECBCBQoUCACBQoUiECBAgUKRKBAgQIRKFCgQAQKFCgQgQIFCkSgQIECEShQoEAEChQoEIECBQpEoECBAhEoUKBABAoUKFAgAgUKFIhAgQIFIlCgQIEIFDjCA1ioIxzKXAVoAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTAxLTA0VDA5OjM5OjU0KzAwOjAwaPpqOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wMS0wNFQwOTozOTo1NCswMDowMBmn0oUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAFVCAYAAACZ01cjAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAEZ0FNQQAAsY58+1GTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOxAAADsQBlSsOGwAABL5JREFUeNrt1qERgDAURMGEhqIxSAQmiiaYoZk0lQ4oAKpAkSIwX+yWcHPi5dTWL0FwZ6m9LcdsCaK7tr2/9+OrhDeZAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAACAADABAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAABYAIAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAALABAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAACAAAQAAAAAIAABAAAIAAAAAEAAAgAAAAAQAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAIAfBpc1DNlc8b1dAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAANVCAMAAAAQqaO7AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEX////88vT55+v23ePz09vyzNXuvsntusbpqrnmoLHkmavmobL56Oz89ff12eDvxM7qrrzjlajdf5bYaoTSVHLORGXJM1fFI0rBEz29Ay+8AC3egJbqr7312uH56e3wxc/norLfhJrXaIPQTGzILVLAETvBEjzILlPYaYPfhZvno7PwxtD56u788/XxytPmn7DceJDSVXPJMVXADjnJMlbTVnTceZHxy9T++vvz0NjadI3PSWnEIEe8AS7PSmrbdY3z0dn99/jwx9HWZH++BzPKNFjXZYDjlqn9+Pn45errssDbd4/LO16+CDS9BDDHKlDXZoH01Nz//v7+/P3hjqLRT27BFD3CFT7RUXDikKTyztfgiJ3ADznQS2vgiZ7+/f345uq/DTj23uTsuMXYa4XFJEvGJUvZbYftucX66++/CjX45Ongip/LOFu9Ai/LOVzhi5/01dzHK1Dfh5z34OX67fD9+frprbu9BTHQTm3CFj/kmKrkmqz0197npbXMPF7MPV/oprbEHkbCF0DAEDrUXXrz0trTWHXORWbtvMjtu8fJMFX++/zHKE7DHET99vjDG0PCGEHDGkLikaTFIUjEHUXKNVnuwMv12N/67O/Zboi+BjL78fPvw8723OL33+XdfJPegZfuvcn78PPDGULprLvOQ2ThjaG+CTTqsL789PbGJkzyzdb34ebNP2HNQWP44+jNQGLxydPlm63vwczlnK3TWXbSU3Hpq7rYbIbZb4jWYn7UXHn77vHKN1rRUG/UWnfVYX3acYrjk6brtMG/Czb77/LVX3vyz9fEH0fPSGjdfZT01t3eg5nFIknacovIL1T22+HMPmDTV3Xlna7xyNLORmfvws3PR2fSUnHbdo7ce5LHKU/stsPhjKDILFHkl6n34ufmnq/VXnrWY3/GJ03st8Trsb/stcLZcInoqLfuv8rQTWzVYHy/DDfNQmPKNlnfhpvop7fXZ4Loqbjegpjrs8DikqXUW3jjlKfcepHdfpXac4zLOl3npLTij6NhxKfGAAAAAWJLR0QAiAUdSAAAAAd0SU1FB+cEFQMQ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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGAAgMAAABASzstAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEX9uRMAakTBJy3///8NSCBsAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+cCGhEYLC/WWPwAAADUSURBVHja7c5BDQAACAQgS1rSlIa4j3OQgCoAAAAAAAAAAAAAAAAAAAAAAAAA4L0+TlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUDAPznGCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCsQU9crSiBjf5dQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMi0yNlQxNzoyNDo0NCswMDowMAcD4BwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDItMjZUMTc6MjQ6NDQrMDA6MDB2XligAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAFAAQMAAAAWA19JAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEWeMDn///+ut+dDAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+cCGhEtFzzsc24AAABESURBVHja7cwxDQAACAOw+TcNGpZwkVZAEwAAAAAAAAAAAIDSHBMKhUKhUCgUCoVCoVAoFAqFf0IAAAAAAAAAAACA0gIA6e0e6ddQWQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0wMi0yNlQxNzo0NToyMyswMDowMAO8dmgAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMDItMjZUMTc6NDU6MjMrMDA6MDBy4c7UAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGrBAMAAACiYDt4AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEWuHCjks7f///+2wtkhRos8O9fwAAAAAWJLR0QCZgt8ZAAAAAd0SU1FB+cDDwQKDVsB1/cAAAGlSURBVHja7dABCQAgAAOwV7CCFaxg/0xmkIMgbBGWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8ZVDJpCJQoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQAQKFCgQgQIFCkSgQIECEShQoEAEChQoUCACBQoUiECBAgUiUKBAgQgUKFAgAgUKFIhAgQIFIlCgQIEIFChQIAIFChSIQIECBSJQoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQAQKFCgQgQIFCkSgQIECEShQoEAEChQoUCACBQoUiECBAgVyHbioZFMRKFCgQIEIFChQIAIFChSIQIECBSJQoECBCBQoUCACBQoUiECBAgUiUKBAgQgUKFAgAgUKFCgQgQIFCkSgQIECEShQoEAEChQoEIECBQpEoECBAhEoUKBABAoUKBCBAgUKRKBAgQIRKFCgQIEIFChQIAIFChSIQIECBSJQoECBCBQoUCACBQoUiECBAgUiUKBAgQgUKFAgAgUKFCgQgQIFCkSgQIECEfjYAW9e55tivWO+AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTAzLTE1VDA0OjEwOjEzKzAwOjAwlzj0GwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wMy0xNVQwNDoxMDoxMyswMDowMOZlTKcAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAGQAQMAAAAEPUNmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEX////cFDzQkLT4AAAAAWJLR0QAiAUdSAAAAAd0SU1FB+YEEw04FL5491sAAABjSURBVHja7cwBCQAACAOw9y+tJQ6CbAGWAAAAAAAAAAAAAAAAAAAAwCNTJhQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVCoVAoFAqFQqFQKBQKhUKhUCgUCoVC4WG4ZoxFI8fOge4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDQtMTlUMTM6NTY6MjArMDA6MDCP0DHNAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA0LTE5VDEzOjU2OjIwKzAwOjAw/o2JcQAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/pt.3a9972dd.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAANVBAMAAADVWU66AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUAK39UY1z80RbdUCDOESb///9kV1A7AAAAAWJLR0QF+G/pxwAAAAd0SU1FB+cCGhEgHvCetYcAAAp4SURBVHja7dKBEAAwDASwZxhCqzJ/pnr8JQxJGr0ptL9RBBRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAEFFFBAAQUUUEABBRRQQAGLHEebF5vk4f80AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTAyLTI2VDE3OjMyOjMwKzAwOjAwNRlikQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wMi0yNlQxNzozMjozMCswMDowMERE2i0AAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/sk.6fa70f8d.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAC8BAMAAAAwQo6xAAAAGFBMVEUAaqdDhHv+zABDhHvHtyTVvBvHtyTVvBsQ+dXWAAAArklEQVR42u3YQQ2AMBBE0cVKCcFIsVL8O0DAHsgempLwvoDJO09Eqa2l9lgfFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYW1nu91JVZR59QtE+GhYWFhYWFhYWFhYWFhYWFhYWFhbWWNUrdeeEcE/LLY2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh/YT1AFJopTGXuNJhAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/background.50dbc615.png\";","module.exports = __webpack_public_path__ + \"static/media/logo.c4efc73a.png\";","module.exports = __webpack_public_path__ + \"static/media/error-handler-graphic.8c2bc04a.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/modal-graphic-small.2efc5792.png\";","module.exports = __webpack_public_path__ + \"static/media/BLUE_SUSTAINABILITY.d62aaa10.png\";","module.exports = __webpack_public_path__ + \"static/media/BROWN_SUSTAINABILITY.ab20d874.png\";","module.exports = __webpack_public_path__ + \"static/media/logowine.c44ff07b.svg\";","module.exports = __webpack_public_path__ + \"static/media/brand-icon-wine.8a59f5f9.svg\";","module.exports = __webpack_public_path__ + \"static/media/GREEN_SUSTAINABILITY.dc3b2cb9.png\";","module.exports = __webpack_public_path__ + \"static/media/errorPrivate.62a1a3d1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/loader.2c1ecd5a.gif\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/YELLOW_SUSTAINABILITY.298b81d8.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAqRJREFUeNrsVzFoE2EUfrkkNa0VDiqSQgspSKmImA4OdRKcnJouUqe2g4NTxMWlo4uLVBwcqzjoZgsOLqJbF4criFQpmKJgKRUOrW1sco3v+3lXLnf/JXfJKQV98EiO/Pe+73/v/e//QvSvWyrqQjN9yuSPEvske5G94FtSYbfYl9mXbGfLToSAAN9kL+Ox0Zej+miBnKHBpnXpL18p87FCqd0qHgF+n32hHZFUG3DseBFfAfrr8gTVzo+1JJxdXaNjr1YUGSEyxySWYhNg8FmAHwyYtDszpXYdx0Cg7/FzMr6pBIDEI926dCtwZzhPO7ev00H+ZOzmAvH9i+OUfb9OxvedUs44vlFt/LTaEpC0P1Xgt+ao0ZvrvMWzGapdOOclscok1kJLIA33idmbP+ZvdAfuBdmr0ok7D1EO1GPE25iGby263UTNkwKHIRZiIrZgUICA7L6MZovbcFHME7csWIEMoPYmjloSKc+9eOOegEOT2O5ACxCYxJBpd86jgPffW2QCr9V3ryE2MGSaBggUu029C57+vKlq7gzltaWQUR4gUPCP127A9yeK2nWCUQg7BX8UXGdGlOAy1xMHj0QAgQGAuZ40uJ9ABVeqrmkQuGfFaiLRKbhgHKY04/nN4lRrj4FMMUUCtnf1Ssc7l3JaOgLLLCZKuM91s8BLAmsgPOKCu++JagqUAKLBhpgIMxewE3CYxLYFq/k65muyytdlL4/PS/XREXWf66xWPKO8fvZ0bIGC8cx2l2/Dl2GnYAEM0Wz+Mdo8TPKx54Q0sC0YekEiWfjAL0xDREBMQFQkMqQ2t/F4jXdvtVREUCyQT1Aw3ZLwHlXRhc8iaUJoN5dEz9t35AwPhvZEq5r3P3ji7jxUlB5dWX4k/pj8jb9m/+23AAMAcAl/3Z0Dc/sAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","import React from 'react';\n\nexport interface ThemeProps {\n children: React.ReactChild;\n}\nexport enum THEME {\n Light = 'Light',\n Dark = 'Dark',\n}\n","import ApolloClient from 'apollo-boost';\n\nconst client = new ApolloClient({\n uri: process.env.REACT_APP_ENDPOINT,\n});\n\nexport default client;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nconst initialState: string[] = JSON.parse(\n localStorage.getItem('review') || '[]'\n) as string[];\n\nconst reviewsSlice = createSlice({\n name: 'reviews',\n initialState,\n reducers: {\n setHaveAnswered: (state: string[], action: PayloadAction) => {\n const newState = [...state, action.payload];\n localStorage.setItem('review', JSON.stringify(newState));\n return newState;\n },\n },\n});\n\nexport const { setHaveAnswered } = reviewsSlice.actions;\n\nexport default reviewsSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { Product } from 'types/product';\n\ninterface productStateProps {\n product: Product;\n lotId: string;\n lotInternalId: string;\n}\n\nconst initialState: productStateProps = {\n product: {} as Product,\n lotId: '',\n lotInternalId: '',\n};\n\nconst productSlice = createSlice({\n name: 'product',\n initialState,\n reducers: {\n setProduct: (state: typeof initialState, action) => {\n return {\n ...state,\n product: action.payload,\n };\n },\n setLotId: (state: typeof initialState, action) => {\n return {\n ...state,\n lotId: action.payload,\n };\n },\n setInternalId: (state: typeof initialState, action) => {\n return {\n ...state,\n lotInternalId: action.payload,\n };\n },\n },\n});\n\nexport const { setProduct, setLotId, setInternalId } = productSlice.actions;\n\nexport default productSlice;\n","import { ProductProofPoint } from 'types/product';\nimport { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n isOpen: false,\n proof: {} as ProductProofPoint,\n};\n\nconst proofPointModalSlice = createSlice({\n name: 'proofPointModal',\n initialState,\n reducers: {\n openModal: (state: typeof initialState, action) => {\n return {\n ...action.payload,\n isOpen: true,\n };\n },\n closeModal: () => {\n return initialState;\n },\n },\n});\n\nexport const { openModal, closeModal } = proofPointModalSlice.actions;\n\nexport default proofPointModalSlice;\n","//ASSETS\nimport FlagBulgarian from 'assets/images/bg.png';\nimport FlagCatalan from 'assets/images/ca.png';\nimport FlagCzech from 'assets/images/cs.png';\nimport FlagDanish from 'assets/images/da.png';\nimport FlagGermany from 'assets/images/de.png';\nimport FlagGreek from 'assets/images/el.png';\nimport FlagEnglish from 'assets/images/en.png';\nimport FlagSpanish from 'assets/images/es.png';\nimport FlagEstonian from 'assets/images/et.png';\nimport FlagBasque from 'assets/images/eu.png';\nimport FlagFinnish from 'assets/images/fi.png';\nimport FlagFrance from 'assets/images/fr.png';\nimport FlagIrish from 'assets/images/ga.png';\nimport FlagGalician from 'assets/images/gl.png';\nimport FlagCroatian from 'assets/images/hr.png';\nimport FlagHungarian from 'assets/images/hu.png';\nimport FlagItaly from 'assets/images/it.png';\nimport FlagJapon from 'assets/images/ja.png';\nimport FlagLithuanian from 'assets/images/lt.png';\nimport FlagLatvian from 'assets/images/lv.png';\nimport FlagMaltese from 'assets/images/mt.png';\nimport FlagDutch from 'assets/images/nl.png';\nimport FlagPolish from 'assets/images/pl.png';\nimport FlagPortugal from 'assets/images/pt.png';\nimport FlagRomanian from 'assets/images/ro.png';\nimport FlagSlovak from 'assets/images/sk.png';\nimport FlagSlovenian from 'assets/images/sl.png';\nimport FlagSwedish from 'assets/images/sv.png';\n\nexport const languagueslistObjectFormat = {\n es: {\n name: 'Español',\n ingredient: 'Ingredientes',\n value: 'Valor energético (por 100 ml)',\n usage: 'Porción media de consumo: 100 ml',\n },\n de: {\n name: 'Aleman',\n ingredient: 'Inhaltsstoffe',\n value: 'Energiewert (pro 100 ml Einheit)',\n usage: 'Durchschnittliche Verzehrmenge: 100 ml',\n },\n bg: {\n name: 'Búlgaro',\n ingredient: 'Съставки',\n value: 'Енергийна стойност (за 100 мл) ',\n usage: 'Средна порция за консумация: 100 мл',\n },\n cs: {\n name: 'Checo',\n ingredient: 'Složení',\n value: 'Energetická hodnota (na 100 ml)',\n usage: 'Průměrná spotřeba: 100 ml',\n },\n hr: {\n name: 'Croata',\n ingredient: 'Sastojci',\n value: 'Energetska vrijednost (po jedinici od 100 ml)',\n usage: 'Prosječna porcija: 100 ml',\n },\n da: {\n name: 'Danés',\n ingredient: 'Ingredienser',\n value: 'Energiindhold (pr. 100 ml)',\n usage: 'Gennemsnitlig portion af forbrug: 100 ml',\n },\n sk: {\n name: 'Eslovaco',\n ingredient: 'Zložky',\n value: 'Energetická hodnota (na 100 ml jednotky)',\n usage: 'Priemerná porcia spotreby: 100 ml',\n },\n sl: {\n name: 'Esloveno',\n ingredient: 'Sestavine',\n value: 'Energijska vrednost (na 100 ml enoto)',\n usage: 'Povprečna porcija: 100 ml',\n },\n et: {\n name: 'Estonio',\n ingredient: 'Koostisosad',\n value: 'Energiaväärtus (100 ml kohta)',\n usage: 'Keskmine tarbimiskogus: 100 ml',\n },\n fi: {\n name: 'Finés',\n ingredient: 'Ainesosat',\n value: 'Energia-arvo (100 ml:n yksikköä kohti)',\n usage: 'Keskimääräinen annos: 100 ml',\n },\n fr: {\n name: 'Francés',\n ingredient: 'Ingrédients',\n value: 'Valeur énergétique (par unité de 100 ml)',\n usage: 'Portion moyenne de consommation : 100 ml',\n },\n el: {\n name: 'Griego',\n ingredient: 'Συστατικά',\n value: 'Ενεργειακή αξία (ανά 100 ml)',\n usage: 'Μέση μερίδα κατανάλωσης: 100 ml',\n },\n hu: {\n name: 'Húngaro',\n ingredient: 'Összetevők',\n value: 'Energiaérték (100 ml egységenként)',\n usage: 'Átlagos fogyasztás: 100 ml',\n },\n en: {\n name: 'Inglés',\n ingredient: 'Ingredients',\n value: 'Energy value (per 100 ml)',\n usage: 'Average portion of consumption: 100 ml',\n },\n ga: {\n name: 'Irlandés',\n ingredient: 'Comhábhair',\n value: 'Luach fuinniúil (in aghaidh an aonaid 100 ml)',\n usage: 'Meánmhéid de thomhaltas: 100 ml',\n },\n it: {\n name: 'Italiano',\n ingredient: 'Ingredienti',\n value: 'Valore energetico (per 100 ml)',\n usage: 'Porzione media di consumo: 100 ml',\n },\n lv: {\n name: 'Letón',\n ingredient: 'Sastāvdaļas',\n value: 'Enerģētiskā vērtība (100 ml vienībā)',\n usage: 'Vidējā patēriņa daļa: 100 ml',\n },\n lt: {\n name: 'Lituano',\n ingredient: 'Sudedamosios dalys',\n value: 'Energinė vertė (100 ml vieneto)',\n usage: 'Vidutinė suvartojimo dalis: 100 ml',\n },\n mt: {\n name: 'Maltés',\n ingredient: 'Ingredjenti',\n value: 'Valur enerġetiku (għal kull 100 ml unità)',\n usage: 'Porzjon medju tal-konsum: 100 ml',\n },\n nl: {\n name: 'Neerlandés',\n ingredient: 'Ingrediënten',\n value: 'Energie (per 100 ml)',\n usage: 'Gemiddelde portie consumptie: 100 ml',\n },\n pl: {\n name: 'Polaco',\n ingredient: 'Składniki',\n value: 'Wartość energetyczna (na 100 ml jednostki)',\n usage: 'Średnia porcja spożycia: 100 ml',\n },\n pt: {\n name: 'Portugués',\n ingredient: 'Ingredientes',\n value: 'Valor energético (por unidade de 100 ml)',\n usage: 'Porção média de consumo: 100 ml',\n },\n ro: {\n name: 'Rumano',\n ingredient: 'Ingrediente',\n value: 'Valoare energetică (per unitate de 100 ml)',\n usage: 'Porția medie de consum: 100 ml',\n },\n ca: {\n name: 'Catalán',\n ingredient: 'Ingredients',\n value: 'Valor energètic (per 100 ml unitat)',\n usage: 'Porció mitjana de consum: 100 ml',\n },\n eu: {\n name: 'Euskera',\n ingredient: 'Osagaiak',\n value: 'Balio energetikoa (100 ml unitateko)',\n usage: 'Kontsumoaren batez besteko zatia: 100 ml',\n },\n gl: {\n name: 'Gallego',\n ingredient: 'Ingredientes',\n value: 'Valor enerxético (por unidade de 100 ml)',\n usage: 'Porción media de consumo: 100 ml',\n },\n sv: {\n name: 'Sueco',\n ingredient: 'Ingredienser',\n value: 'Energivärde (per 100 ml enhet)',\n usage: 'Genomsnittlig del av konsumtionen: 100 ml',\n },\n ja: {\n name: 'Japones',\n ingredient: '原材料',\n value: 'エネルギー値(100ml当たり)',\n usage: '平均的な量: 100 ml',\n },\n};\n\nexport interface LanguageMapProp {\n flag: string;\n shortName: string;\n name: string;\n ingredient: string;\n value: string;\n usage: string;\n}\n\nexport const LANGUAGE_MAP: LanguageMapProp[] = [\n {\n flag: FlagSpanish,\n shortName: 'es',\n name: 'Español',\n ingredient: 'Ingredientes',\n value: 'Valor energético (por 100 ml)',\n usage: 'Porción media de consumo: 100 ml',\n },\n {\n flag: FlagGermany,\n shortName: 'de',\n name: 'Aleman',\n ingredient: 'Inhaltsstoffe',\n value: 'Energiewert (pro 100 ml Einheit)',\n usage: 'Durchschnittliche Verzehrmenge: 100 ml',\n },\n {\n flag: FlagBulgarian,\n shortName: 'bg',\n name: 'Búlgaro',\n ingredient: 'Съставки',\n value: 'Енергийна стойност (за 100 мл) ',\n usage: 'Средна порция за консумация: 100 мл',\n },\n {\n flag: FlagCzech,\n shortName: 'cs',\n name: 'Checo',\n ingredient: 'Složení',\n value: 'Energetická hodnota (na 100 ml)',\n usage: 'Průměrná spotřeba: 100 ml',\n },\n {\n flag: FlagCroatian,\n shortName: 'hr',\n name: 'Croata',\n ingredient: 'Sastojci',\n value: 'Energetska vrijednost (po jedinici od 100 ml)',\n usage: 'Prosječna porcija: 100 ml',\n },\n {\n flag: FlagDanish,\n shortName: 'da',\n name: 'Danés',\n ingredient: 'Ingredienser',\n value: 'Energiindhold (pr. 100 ml)',\n usage: 'Gennemsnitlig portion af forbrug: 100 ml',\n },\n {\n flag: FlagSlovak,\n shortName: 'sk',\n name: 'Eslovaco',\n ingredient: 'Zložky',\n value: 'Energetická hodnota (na 100 ml jednotky)',\n usage: 'Priemerná porcia spotreby: 100 ml',\n },\n {\n flag: FlagSlovenian,\n shortName: 'sl',\n name: 'Esloveno',\n ingredient: 'Sestavine',\n value: 'Energijska vrednost (na 100 ml enoto)',\n usage: 'Povprečna porcija: 100 ml',\n },\n {\n flag: FlagEstonian,\n shortName: 'et',\n name: 'Estonio',\n ingredient: 'Koostisosad',\n value: 'Energiaväärtus (100 ml kohta)',\n usage: 'Keskmine tarbimiskogus: 100 ml',\n },\n {\n flag: FlagFinnish,\n shortName: 'fi',\n name: 'Finés',\n ingredient: 'Ainesosat',\n value: 'Energia-arvo (100 ml:n yksikköä kohti)',\n usage: 'Keskimääräinen annos: 100 ml',\n },\n {\n flag: FlagFrance,\n shortName: 'fr',\n name: 'Francés',\n ingredient: 'Ingrédients',\n value: 'Valeur énergétique (par unité de 100 ml)',\n usage: 'Portion moyenne de consommation : 100 ml',\n },\n {\n flag: FlagGreek,\n shortName: 'el',\n name: 'Griego',\n ingredient: 'Συστατικά',\n value: 'Ενεργειακή αξία (ανά 100 ml)',\n usage: 'Μέση μερίδα κατανάλωσης: 100 ml',\n },\n {\n flag: FlagHungarian,\n shortName: 'hu',\n name: 'Húngaro',\n ingredient: 'Összetevők',\n value: 'Energiaérték (100 ml egységenként)',\n usage: 'Átlagos fogyasztás: 100 ml',\n },\n {\n flag: FlagEnglish,\n shortName: 'en',\n name: 'Inglés',\n ingredient: 'Ingredients',\n value: 'Energy value (per 100 ml)',\n usage: 'Average portion of consumption: 100 ml',\n },\n {\n flag: FlagIrish,\n shortName: 'ga',\n name: 'Irlandés',\n ingredient: 'Comhábhair',\n value: 'Luach fuinniúil (in aghaidh an aonaid 100 ml)',\n usage: 'Meánmhéid de thomhaltas: 100 ml',\n },\n {\n flag: FlagItaly,\n shortName: 'it',\n name: 'Italiano',\n ingredient: 'Ingredienti',\n value: 'Valore energetico (per 100 ml)',\n usage: 'Porzione media di consumo: 100 ml',\n },\n {\n flag: FlagLatvian,\n shortName: 'lv',\n name: 'Letón',\n ingredient: 'Sastāvdaļas',\n value: 'Enerģētiskā vērtība (100 ml vienībā)',\n usage: 'Vidējā patēriņa daļa: 100 ml',\n },\n {\n flag: FlagLithuanian,\n shortName: 'lt',\n name: 'Lituano',\n ingredient: 'Sudedamosios dalys',\n value: 'Energinė vertė (100 ml vieneto)',\n usage: 'Vidutinė suvartojimo dalis: 100 ml',\n },\n {\n flag: FlagMaltese,\n shortName: 'mt',\n name: 'Maltés',\n ingredient: 'Ingredjenti',\n value: 'Valur enerġetiku (għal kull 100 ml unità)',\n usage: 'Porzjon medju tal-konsum: 100 ml',\n },\n {\n flag: FlagDutch,\n shortName: 'nl',\n name: 'Neerlandés',\n ingredient: 'Ingrediënten',\n value: 'Energie (per 100 ml)',\n usage: 'Gemiddelde portie consumptie: 100 ml',\n },\n {\n flag: FlagPolish,\n shortName: 'pl',\n name: 'Polaco',\n ingredient: 'Składniki',\n value: 'Wartość energetyczna (na 100 ml jednostki)',\n usage: 'Średnia porcja spożycia: 100 ml',\n },\n {\n flag: FlagPortugal,\n shortName: 'pt',\n name: 'Portugués',\n ingredient: 'Ingredientes',\n value: 'Valor energético (por unidade de 100 ml)',\n usage: 'Porção média de consumo: 100 ml',\n },\n {\n flag: FlagRomanian,\n shortName: 'ro',\n name: 'Rumano',\n ingredient: 'Ingrediente',\n value: 'Valoare energetică (per unitate de 100 ml)',\n usage: 'Porția medie de consum: 100 ml',\n },\n {\n flag: FlagSwedish,\n shortName: 'sv',\n name: 'Sueco',\n ingredient: 'Ingredienser',\n value: 'Energivärde (per 100 ml enhet)',\n usage: 'Genomsnittlig del av konsumtionen: 100 ml',\n },\n {\n flag: FlagJapon,\n shortName: 'ja',\n name: 'Japones',\n ingredient: '原材料',\n value: 'エネルギー値(100ml当たり)',\n usage: '平均的な量: 100 ml',\n },\n {\n flag: FlagCatalan,\n shortName: 'ca',\n name: 'Catalán',\n ingredient: 'Ingredients',\n value: 'Valor energètic (per 100 ml unitat)',\n usage: 'Porció mitjana de consum: 100 ml',\n },\n {\n flag: FlagBasque,\n shortName: 'eu',\n name: 'Euskera',\n ingredient: 'Osagaiak',\n value: 'Balio energetikoa (100 ml unitateko)',\n usage: 'Kontsumoaren batez besteko zatia: 100 ml',\n },\n {\n flag: FlagGalician,\n shortName: 'gl',\n name: 'Gallego',\n ingredient: 'Ingredientes',\n value: 'Valor enerxético (por unidade de 100 ml)',\n usage: 'Porción media de consumo: 100 ml',\n },\n];\n\nexport const _LANGUAGES: LanguageMapProp[] = [\n {\n flag: FlagSpanish,\n shortName: 'es',\n name: 'Español',\n ingredient: 'Ingredientes',\n value: 'Valor energético (por 100 ml)',\n usage: 'Porción media de consumo: 100 ml',\n },\n {\n flag: FlagCatalan,\n shortName: 'ca',\n name: 'Catalán',\n ingredient: 'Ingredients',\n value: 'Valor energètic (per 100 ml unitat)',\n usage: 'Porció mitjana de consum: 100 ml',\n },\n {\n flag: FlagEnglish,\n shortName: 'en',\n name: 'Inglés',\n ingredient: 'Ingredients',\n value: 'Energy value (per 100 ml)',\n usage: 'Average portion of consumption: 100 ml',\n },\n];\n","import { createSlice } from '@reduxjs/toolkit';\nimport {\n LANGUAGE_MAP,\n LanguageMapProp,\n} from 'components/ProductTabs/templates/ProductLanguage';\nimport { ProductProofPoint } from 'types/product';\n\nconst initialState = {\n isOpen: false,\n proof: {} as ProductProofPoint,\n wineProductLanguage: LANGUAGE_MAP.find((lang) => lang.shortName === 'en') as\n | LanguageMapProp\n | undefined,\n};\n\nconst proofPointDetailModalSlice = createSlice({\n name: 'proofPointDetailModal',\n initialState,\n reducers: {\n openModal: (state: typeof initialState, action) => {\n return {\n ...action.payload,\n isOpen: true,\n };\n },\n closeModal: () => {\n return initialState;\n },\n setWineProductLanguage: (state: typeof initialState, action) => {\n return {\n ...state,\n wineProductLanguage: action.payload,\n };\n },\n },\n});\n\nexport const {\n openModal,\n closeModal,\n setWineProductLanguage,\n} = proofPointDetailModalSlice.actions;\n\nexport default proofPointDetailModalSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\ninterface Media {\n name: string;\n url: string;\n}\n\nconst initialState = {\n isOpen: false,\n media: {} as Media,\n};\n\nconst mediaEvidenceModalSlice = createSlice({\n name: 'mediaEvidenceModal',\n initialState,\n reducers: {\n openModal: (state: typeof initialState, action) => {\n return {\n ...action.payload,\n isOpen: true,\n };\n },\n closeModal: () => initialState,\n },\n});\n\nexport const { openModal, closeModal } = mediaEvidenceModalSlice.actions;\n\nexport default mediaEvidenceModalSlice;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { ProofPointEvidence } from 'types/product';\n\nconst initialState = {\n isOpen: false,\n evidence: {} as ProofPointEvidence,\n};\n\nconst evidenceModalSlice = createSlice({\n name: 'evidenceModal',\n initialState,\n reducers: {\n openModal: (state: typeof initialState, action) => {\n return {\n ...action.payload,\n isOpen: true,\n };\n },\n closeModal: () => initialState,\n },\n});\n\nexport const { openModal, closeModal } = evidenceModalSlice.actions;\n\nexport default evidenceModalSlice;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { ProductMilestone } from 'types/product';\n\nconst initialState = {\n isOpen: false,\n milestone: {} as ProductMilestone,\n};\n\nconst cycleLifeModalSlice = createSlice({\n name: 'cycleLifeModal',\n initialState,\n reducers: {\n openModal: (state: typeof initialState, action) => {\n return {\n ...action.payload,\n isOpen: true,\n };\n },\n closeModal: () => initialState,\n },\n});\n\nexport const { openModal, closeModal } = cycleLifeModalSlice.actions;\n\nexport default cycleLifeModalSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst initialState = {\n isOpen: false,\n};\n\nconst reviewModalSlice = createSlice({\n name: 'reviewModal',\n initialState,\n reducers: {\n openModal: () => {\n return {\n isOpen: true,\n };\n },\n closeModal: () => {\n return initialState;\n },\n },\n});\n\nexport const { openModal, closeModal } = reviewModalSlice.actions;\n\nexport default reviewModalSlice;\n","import { createSlice } from '@reduxjs/toolkit';\nimport { Lot } from 'types/lot';\nimport { ProductProofPoint } from 'types/product';\n\nconst initialState = {\n isOpen: false,\n proof: {} as ProductProofPoint,\n lotId: '',\n lotData: {} as Lot,\n isStatic: false,\n};\n\nconst blockchainDetailModalSlice = createSlice({\n name: 'blockchainDetailModal',\n initialState,\n reducers: {\n openModal: (state: typeof initialState, action) => {\n return {\n ...state,\n ...action.payload,\n isOpen: true,\n };\n },\n openModalLot: (state: typeof initialState, action) => {\n return {\n ...state,\n ...action.payload,\n isOpen: true,\n };\n },\n closeModal: () => {\n return initialState;\n },\n },\n});\n\nexport const { openModal, closeModal } = blockchainDetailModalSlice.actions;\n\nexport default blockchainDetailModalSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { Organization } from 'types/organization';\n\ninterface organizationStateProps {\n organization: Organization;\n organizationName: string;\n organizationLogo: string;\n}\n\nconst initialState: organizationStateProps = {\n organization: {} as Organization,\n organizationName: '',\n organizationLogo: '',\n};\n\nconst organizationSlice = createSlice({\n name: 'organization',\n initialState,\n reducers: {\n setOrganization: (state: typeof initialState, action) => {\n return {\n ...state,\n organization: action.payload,\n };\n },\n setOrganizationInfo: (state: typeof initialState, action) => {\n return {\n ...state,\n organizationName: action.payload.name,\n organizationLogo: action.payload.logo,\n };\n },\n },\n});\n\nexport const {\n setOrganization,\n setOrganizationInfo,\n} = organizationSlice.actions;\n\nexport default organizationSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\nimport { BlocknitiveStatsData } from 'types/blocknitive';\n\ninterface organizationStateProps {\n blockStats: BlocknitiveStatsData;\n}\n\nconst initialState: organizationStateProps = {\n blockStats: {} as BlocknitiveStatsData,\n};\n\nconst blocknitiveSlice = createSlice({\n name: 'blocknitive',\n initialState,\n reducers: {\n setBlockState: (state: typeof initialState, action) => {\n return {\n ...state,\n blockStats: action.payload,\n };\n },\n },\n});\n\nexport const { setBlockState } = blocknitiveSlice.actions;\n\nexport default blocknitiveSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\nexport type tabType = 'info' | 'milestones' | 'reviews' | 'share';\n\ninterface mobileNavStateProps {\n tab: tabType;\n}\n\nconst initialState: mobileNavStateProps = {\n tab: 'info',\n};\n\nconst mobileNavSlice = createSlice({\n name: 'mobilenav',\n initialState,\n reducers: {\n setMobileNav: (state: typeof initialState, action) => {\n return {\n ...state,\n tab: action.payload,\n };\n },\n },\n});\n\nexport const { setMobileNav } = mobileNavSlice.actions;\n\nexport default mobileNavSlice;\n","import { createSlice } from '@reduxjs/toolkit';\n\ntype Link = {\n secureShortURL: string;\n shortURL: string;\n};\n\ninterface productStateProps {\n link: Link;\n}\n\nconst initialState: productStateProps = {\n link: {} as Link,\n};\n\nconst linkSlice = createSlice({\n name: 'link',\n initialState,\n reducers: {\n setLink: (state: typeof initialState, action) => {\n return {\n ...state,\n link: action.payload,\n };\n },\n },\n});\n\nexport const { setLink } = linkSlice.actions;\n\nexport default linkSlice;\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\n\nexport type TranslationSelect = {\n short_name: string;\n long_name: string;\n idProduct: string;\n idOrganization: string;\n};\n\ninterface TanslateStoreProps {\n isOpen: boolean;\n translations: Record | null;\n translateSelect: TranslationSelect[];\n isHiddenClose: boolean;\n}\n\nconst initialState: TanslateStoreProps = {\n isOpen: false,\n translations: null,\n translateSelect: JSON.parse(\n localStorage.getItem('translateSelect') || '[]'\n ) as TranslationSelect[],\n isHiddenClose: true,\n};\n\ntype initialStateType = typeof initialState;\n\nconst translateModalSlice = createSlice({\n name: 'translateModal',\n initialState,\n reducers: {\n openModal(\n state: initialStateType,\n {\n payload,\n }: PayloadAction<{\n isOpen: boolean;\n translations: Record | null;\n isHiddenClose: boolean;\n }>\n ) {\n return {\n ...state,\n isOpen: payload.isOpen,\n translations: payload.translations,\n isHiddenClose: payload.isHiddenClose,\n };\n },\n openSelectModal(\n state: initialStateType,\n {\n payload,\n }: PayloadAction<{\n isOpen: boolean;\n isHiddenClose: boolean;\n }>\n ) {\n return {\n ...state,\n isOpen: payload.isOpen,\n isHiddenClose: payload.isHiddenClose,\n };\n },\n setTranslations(state: initialStateType, action) {\n return {\n ...state,\n translations: action.payload.translations,\n };\n },\n setTranslateSelect(state: initialStateType, action) {\n localStorage.setItem(\n 'translateSelect',\n JSON.stringify(action.payload.translateSelect)\n );\n\n return {\n ...state,\n translateSelect: action.payload.translateSelect,\n };\n },\n closeModal(state: initialStateType) {\n return {\n ...state,\n isOpen: false,\n isHiddenClose: true,\n };\n },\n },\n});\n\nexport const {\n openModal,\n openSelectModal,\n setTranslateSelect,\n setTranslations,\n closeModal,\n} = translateModalSlice.actions;\n\nexport default translateModalSlice;\n","import { configureStore } from '@reduxjs/toolkit';\nimport reviewSlice from './reviews';\nimport productSlice from './product';\nimport proofPointModalSlice from './proofPointModal';\nimport proofPointDetailModalSlice from './proofPointDetailModal';\nimport mediaEvidenceModalSlice from './mediaEvidenceModal';\nimport evidenceModalSlice from './evidenceModal';\nimport cycleLifeModalSlice from './cycleLifeModal';\nimport reviewModalSlice from './reviewModal';\nimport blockchainDetailModalSlice from './blockchainDetailModal';\nimport organizationDataSlice from './organization';\nimport blocknitiveSlice from './blocknitive';\nimport mobileNavSlice from './mobilenav';\nimport linkSlice from './link';\nimport translateModalSlice from './tramslateModal';\n\nconst store = configureStore({\n reducer: {\n review: reviewSlice.reducer,\n product: productSlice.reducer,\n proofPointModal: proofPointModalSlice.reducer,\n translateModal: translateModalSlice.reducer,\n proofPointDetailModal: proofPointDetailModalSlice.reducer,\n mediaEvidenceModal: mediaEvidenceModalSlice.reducer,\n evidenceModal: evidenceModalSlice.reducer,\n cycleLifeModal: cycleLifeModalSlice.reducer,\n reviewModal: reviewModalSlice.reducer,\n blockchainDetailModal: blockchainDetailModalSlice.reducer,\n organization: organizationDataSlice.reducer,\n blockStats: blocknitiveSlice.reducer,\n mobileNav: mobileNavSlice.reducer,\n link: linkSlice.reducer,\n },\n});\n\nexport type AppState = ReturnType;\n\nexport default store;\n","import merge from 'lodash/merge';\n\nimport { THEME } from './Theme.props';\n\nconst COLORS = [\n 'border',\n 'backgroundWhite',\n 'backgroundGray',\n 'fontMain',\n 'fontSecondary',\n 'backgroundGrayLight',\n 'black',\n 'brand',\n 'active',\n 'blueLigth',\n 'brandHover',\n 'turquoise',\n 'white',\n 'placeholder',\n 'buttonGradient',\n 'buttonGradientHover',\n 'info',\n 'error',\n 'success',\n 'warning',\n 'blueGray',\n 'yellow',\n 'green',\n 'winePrimary',\n 'wineBlack',\n 'wineGray',\n 'wineGrayLigth',\n 'wineSecondary',\n 'wineTertiary'\n] as const;\n\nexport type Colors = typeof COLORS[number];\n\nexport function isColor(key: string): key is Colors {\n return COLORS.includes(key as Colors);\n}\n\nconst colors: Record = {\n border: '#EDEDEE',\n backgroundWhite: '#FCFCFC',\n backgroundGray: '#f9f9f9',\n backgroundGrayLight: '#f5f5f5',\n fontMain: '#210018',\n fontSecondary: '#A89FAC',\n black: '#100316',\n brand: '#4E63A5',\n active: '#651366',\n blueLigth: '#8298D5',\n brandHover: '#8695c6',\n turquoise: '#009B97',\n white: '#fff',\n placeholder: '#D0CED1',\n buttonGradient: 'linear-gradient(90deg, #4E63A5 0%, #8298D5 100%)',\n buttonGradientHover: 'linear-gradient(90deg, #651366 0%, #4E63A5 100%)',\n info: '#4E63A5',\n error: '#E7204E',\n success: '#009B97',\n warning: '#F0C505',\n blueGray: '#2E384D',\n yellow: '#F0C505',\n green: '#17a4a0',\n winePrimary: '#FF2E5D',\n wineSecondary: '#B51C45',\n wineTertiary: '#FF9196',\n wineBlack: '#333333',\n wineGray: '#666666',\n wineGrayLigth: '#D9D9D9'\n};\n\n//FONTS\nexport const FONTS = ['main', 'wine'] as const;\n\nexport type Font = typeof FONTS[number];\n\n//Fonts for Text Properties\nexport const fontsMapped: Record = {\n main: 'Montserrat',\n wine: 'Rozha One',\n};\n\nexport const fonts = {\n main: 'Montserrat',\n wine: 'Rozha One',\n};\n\nexport const baseTheme = {\n colors,\n fonts,\n};\n\nconst lightTheme = { ...baseTheme };\n\nconst darkTheme = merge({}, baseTheme, {\n // TODO: implement dark theme\n});\n\nexport const themes = {\n [THEME.Light]: lightTheme,\n [THEME.Dark]: darkTheme,\n};\n\nexport interface BaseTheme extends Readonly {}\n\ndeclare module 'styled-components' {\n export interface DefaultTheme extends BaseTheme {}\n}\n","import React, { createContext, useState } from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { themes } from './Theme.styled';\n\n//PROPS TYPE\nimport { ThemeProps, THEME } from './Theme.props';\n\nexport const ChangeThemeContext = createContext((_: THEME) => {});\n\nconst Theme = ({ children }: ThemeProps) => {\n const [themeName, changeThemeName] = useState(THEME.Light);\n const theme = themes[themeName];\n\n return (\n \n {children}\n \n );\n};\n\nexport default Theme;\n","import gql from 'graphql-tag';\n\nexport const blockNitiveStatsQuery = gql`\n query blocknitiveStats {\n blocknitiveStats {\n blocks {\n header {\n dataHash\n number\n previousHash\n }\n data {\n header {\n type\n version\n timestamp\n channelId\n txId\n epoch\n }\n creator {\n mspid\n }\n txValidation\n }\n }\n blockCount\n transactionsCount\n }\n }\n`;\n\nexport const blockProofPointQuery = gql`\n query proofPoint($pk: String) {\n proofPoint(id: $pk) {\n blockId\n transactionId\n blocknitive {\n header {\n dataHash\n }\n data {\n header {\n timestamp\n }\n }\n }\n }\n }\n`;\nexport const blockProofPointQueryLot = gql`\n query blocknitiveLot($pk: String) {\n blocknitiveLot(id: $pk) {\n blockId\n transactionId\n blocknitive {\n header {\n dataHash\n }\n data {\n header {\n timestamp\n }\n }\n }\n }\n }\n`;\n","import gql from 'graphql-tag';\n\nexport const shortUrlCreate = gql`\n mutation($shortUrlInput: ShortUrlCreateInput!) {\n shortUrlCreate(input: $shortUrlInput) {\n secureShortURL\n shortURL\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const AppContainer = styled.div`\n width: 100%;\n min-height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n","import React, { useEffect, Suspense } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useQuery, useMutation } from '@apollo/react-hooks';\nimport Theme from 'theme';\n\n//QUERIES\nimport { blockNitiveStatsQuery } from 'queries/blocknitive';\nimport { shortUrlCreate } from 'queries/link';\n\n//PROPS TYPE\nimport { AppProps } from './App.props';\nimport { BlocknitiveStatsData } from 'types/blocknitive';\n\n//STORE\nimport { setBlockState } from 'store/blocknitive';\nimport { setLink } from 'store/link';\n\n//STYLED\nimport { AppContainer } from './App.styled';\n\nconst App = ({ children }: AppProps) => {\n const dispatch = useDispatch();\n\n const { data, loading: loadingBlocknitive, error } = useQuery<\n BlocknitiveStatsData\n >(blockNitiveStatsQuery);\n\n const [shortUrlCreateMutation] = useMutation(shortUrlCreate, {\n awaitRefetchQueries: true,\n refetchQueries: ['link'],\n });\n\n useEffect(() => {\n if (data && !loadingBlocknitive) {\n dispatch(\n setBlockState({\n data: data,\n })\n );\n }\n if (error && error.graphQLErrors.length > 0) {\n dispatch(\n setBlockState({\n data: null,\n errors: error.graphQLErrors,\n })\n );\n }\n }, [dispatch, data, error, loadingBlocknitive]);\n\n useEffect(() => {\n const currentUrl = encodeURI(window.location.href);\n\n if (currentUrl) {\n shortUrlCreateMutation({\n variables: {\n shortUrlInput: {\n originalURL: currentUrl,\n },\n },\n })\n .then((res) => {\n if (res && res.data && res.data.shortUrlCreate) {\n dispatch(setLink(res.data.shortUrlCreate));\n }\n })\n .catch((error) => {\n dispatch(setLink(currentUrl));\n });\n }\n }, [dispatch, shortUrlCreateMutation]);\n\n return (\n \n \n {children}\n \n \n );\n};\n\nexport default App;\n","import gql from 'graphql-tag';\n\nexport const productQuery = gql`\n query product($pk: String!, $language: String) {\n product(pk: $pk, language: $language) {\n data {\n name\n stagesHeader\n description\n internalId\n pk\n brand\n hideFromOrgMirror\n isSustainable\n tabs {\n pk\n title\n order\n type\n fileList {\n pk\n documents {\n pk\n document\n title\n description\n }\n }\n ingredientList {\n ingredients {\n description\n title\n image\n link\n }\n }\n recommendationList {\n recommendations {\n title\n description\n }\n }\n nutritionFact {\n description\n amountPerServing\n discountCalories\n scaleFactor\n details\n calories\n ingredients\n ingredientsFiltered\n }\n technicalDetail {\n title\n subtitle\n footer\n composition\n principalDetails {\n id\n title\n description\n }\n otherDetails {\n id\n title\n description\n }\n image\n }\n }\n lots {\n totalCount\n }\n thumbnail(size: \"40x40\") {\n url\n }\n organization {\n name\n pk\n logo(size: \"250x250\") {\n url\n }\n url\n socialChannels {\n handle\n url\n type\n pk\n }\n }\n images {\n id\n url(size: \"768x768\")\n order\n }\n featuredProofPoints {\n name\n pk\n description\n createdAt\n mediaEvidences {\n name\n url\n type\n }\n shouldShowWidget\n icon {\n value\n icon\n label\n }\n evidences {\n file\n evidenceName\n expirationDate\n pk\n }\n conditions {\n value\n type\n typeDisplay\n unit\n }\n verifier {\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n journey {\n name\n milestones {\n id\n pk\n name\n startDate\n endDate\n video {\n url\n }\n internalId\n description\n icon\n location {\n name\n }\n createdAt\n image(size: \"700x700\") {\n url\n }\n proofPoints {\n name\n pk\n shouldShowWidget\n description\n icon {\n value\n icon\n label\n }\n mediaEvidences {\n name\n url\n type\n }\n createdAt\n conditions {\n value\n type\n typeDisplay\n unit\n }\n evidences {\n file\n evidenceName\n expirationDate\n pk\n }\n verifier {\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n }\n }\n reviews {\n edges {\n node {\n createdAt\n id\n title\n name\n email\n comment\n rating\n status\n reply {\n comment\n createdAt\n }\n }\n }\n }\n reviewStats {\n averageRating\n totalCount\n percentageCountFive\n percentageCountFour\n percentageCountThree\n percentageCountTwo\n percentageCountOne\n }\n translationStatus\n }\n error\n url\n }\n }\n`;\n\nexport const relatedProductQuery = gql`\n query relatedProducts($id: String, $language: String) {\n relatedProducts(id: $id, language: $language) {\n products {\n pk\n name\n thumbnail(size: \"700x700\") {\n url\n }\n }\n }\n }\n`;\n\nexport const stepsProductQuery = gql`\n query product($pk: String!, $language: String) {\n product(pk: $pk, language: $language) {\n data {\n name\n description\n pk\n brand\n hideFromOrgMirror\n isSustainable\n workflow {\n name\n description\n }\n steps {\n id\n name\n stepDate\n extraFields\n createdAt\n image(size: \"700x700\") {\n url\n }\n internalId\n description\n icon\n }\n images {\n id\n url(size: \"768x768\")\n order\n }\n organization {\n name\n pk\n logo(size: \"250x250\") {\n url\n }\n url\n socialChannels {\n handle\n url\n type\n pk\n }\n }\n }\n error\n url\n }\n }\n`;\n","import styled, { css } from 'styled-components';\n\nimport { Colors, isColor, fontsMapped, Font } from 'theme/Theme.styled';\n\nexport const defaultTextStyles = (\n fontSize: string,\n letterSpacing: string,\n css: string = ''\n) =>\n styled.div<{\n align: string;\n weight: string;\n color: Colors | string;\n gradient: boolean;\n italic: boolean;\n inline: boolean;\n textTransform: string;\n fontFamily: Font;\n preset: string;\n }>`\n font-size: ${fontSize};\n\t\tletter-spacing: ${letterSpacing};\n\t\ttext-align: ${({ align }) => align};\n\t\tfont-weight: ${({ weight }) => weight};\n\t\t${({ gradient }) => gradient && gradientText}\n\t\t${({ italic }) => italic && 'font-style: italic;'}\n ${({ inline }) => inline && 'display: inline;'}\n color: ${({ theme, color }) =>\n isColor(color) ? theme.colors[color] : color};\n\t\tfont-family: ${({ fontFamily }) => fontsMapped[fontFamily]};\n\t\ttext-transform: ${({ textTransform }) => (textTransform ? textTransform : '')};\n ${css}\n\n ${({ preset, theme }) => {\n return (\n preset === 'link' &&\n `\n color: ${theme.colors.brand};\n &:hover {\n color: ${theme.colors.active};\n }\n `\n );\n }}\n\t`;\n\nexport const gradientText = css`\n background: transparent linear-gradient(199deg, #00a79c 0%, #38b44b 100%) 0%\n 0% no-repeat padding-box;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n`;\n","import { defaultTextStyles } from './Text.styled';\n\nconst TEXT_PRESETS = [\n 'huge',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'small',\n 'tiny',\n 'xstiny',\n 'little',\n 'link',\n] as const;\nexport type TextPresets = typeof TEXT_PRESETS[number];\nexport function isTextPreset(key: string): key is TextPresets {\n return TEXT_PRESETS.includes(key as TextPresets);\n}\n\nconst huge = defaultTextStyles('5.5rem', '0px', `line-height: 5.5rem;`);\nconst h1 = defaultTextStyles('4.938rem', '0px', `line-height: 4.938rem;`);\nconst h2 = defaultTextStyles('3.375rem', '0px;', `line-height: 3.375rem;`);\nconst h3 = defaultTextStyles('2.25rem', '0px', `line-height: 2.25rem;`);\nconst h4 = defaultTextStyles('1.4rem', '0px', `line-height: 1.4rem;`);\nconst h5 = defaultTextStyles('1.125rem', '0px', `line-height: 1.125rem;`);\nconst h6 = defaultTextStyles('1rem', '0px', `line-height: 1rem;`);\nconst small = defaultTextStyles('0.875rem', '0px', `line-height: 0.875rem;`);\nconst tiny = defaultTextStyles('0.75rem', '0px', `line-height: 0.75rem;`);\nconst xstiny = defaultTextStyles('0.625rem', '0px', `line-height: 0.625rem;`);\nconst little = defaultTextStyles('0.5rem', '0px', `line-height: 0.5rem;`);\nconst link = defaultTextStyles(\n '1rem',\n '0px',\n `\n display: inline-block;\n line-height: 1rem;\n transition: all 0.25s ease-in;\n cursor: pointer;\n`\n);\n\nexport const textPresets: Record = {\n huge,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n small,\n tiny,\n xstiny,\n little,\n link,\n};\n","import React from 'react';\n// Modules\nimport { TextPresets, textPresets } from './Text.presets';\nimport { Colors, Font } from 'theme/Theme.styled';\n\nexport interface TextProps extends React.HTMLAttributes {\n tx?: string;\n children?: React.ReactNode;\n preset?: TextPresets;\n align?: 'center' | 'right' | 'left';\n weight?: '200' | '300' | '400' | '600' | '700' | '900' | 'normal' | 'bold';\n className?: string;\n color?: Colors | string;\n gradient?: boolean;\n italic?: boolean;\n inline?: boolean;\n textTransform?: 'capitalize' | 'uppercase' | 'lowercase';\n fontFamily?: Font | string;\n}\n\nexport const Text = ({\n tx,\n children,\n preset = 'h6',\n align = 'left',\n weight = 'normal',\n className,\n color = 'black',\n gradient,\n italic,\n inline,\n textTransform,\n fontFamily = 'Montserrat, sans-serif',\n ...rest\n}: TextProps) => {\n const content = children ? children : tx;\n const Text = textPresets[preset];\n\n return (\n \n {content}\n \n );\n};\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const Error404Container = styled.div`\n padding: 5rem 0;\n display: flex;\n align-items: flex-start;\n justify-content: center;\n width: 100vw;\n height: 100vh;\n background-size: cover;\n background-position: center;\n background-repeat: no-repeat;\n`;\n\nexport const Error404Content = styled.div`\n padding: 2rem 2.5rem 2.5rem;\n align-items: center;\n flex-direction: column;\n display: flex;\n background-color: #fcfcfc;\n`;\n\nexport const Error404Title = styled(Text)`\n text-align: center;\n margin-bottom: 1rem;\n font-size: 1.75rem;\n line-height: 2rem;\n font-weight: 700;\n`;\n\nexport const Error404Desctiption = styled(Text)`\n text-align: center;\n margin-bottom: 1.5rem;\n font-size: 0.875rem;\n line-height: 1.5rem;\n font-weight: 500;\n`;\n\nexport const Error404Link = styled.a`\n text-align: center;\n font-size: 1.125rem;\n line-height: 1.125rem;\n font-weight: 700;\n color: ${({ theme }) => theme.colors.brand};\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\n//ASSETS\nimport Background from 'assets/images/background.png';\nimport BackgroundPrivate from 'assets/images/errorPrivate.jpg';\n\n//PROPS TYPE\nimport { Error404Props } from './Error404.props';\n\n//STORE\nimport { AppState } from 'store';\n\n//STYLES\nimport {\n Error404Container,\n Error404Content,\n Error404Title,\n Error404Desctiption,\n Error404Link,\n} from './Error404.styled';\n\nconst Error404 = ({\n issetProduct,\n issetLot,\n isPrivate,\n isNotQrUsed,\n errorUrl,\n}: Error404Props) => {\n const organization = useSelector(\n (state: AppState) => state.organization.organization\n );\n\n return (\n \n <>\n {isNotQrUsed && (\n \n En proceso\n \n Estamos trabajando en ello\n
\n ¡casi lo tenemos!\n
\n \n Ir a Swearit.io\n \n
\n )}\n {isPrivate && (\n \n En proceso\n \n Estamos trabajando en ello\n
\n ¡casi lo tenemos!\n
\n {errorUrl !== '' && (\n Ir a {errorUrl}\n )}\n
\n )}\n {(issetProduct || issetLot) && (\n \n Es privado\n \n No se puede mostrar este {issetProduct ? 'producto' : 'lote'}\n \n \n Ir a Swearit.io\n \n \n )}\n {!issetProduct && !issetLot && !isPrivate && !isNotQrUsed && (\n \n 404\n \n ¡Vaya! No podemos encontrar\n
\n lo que estás buscando.\n
\n \n Ir a Swearit.io\n \n
\n )}\n \n\n {/*
\n \n\n\n {!issetProduct && !issetLot && (\n

404

\n )}\n\n {issetProduct && (\n

\n This product is private\n

\n )}\n {issetLot && (\n

\n This lot is private\n

\n )}\n {!issetProduct && !issetLot && (\n

\n ¡Vaya! No podemos encontrar lo que estás buscando\n

\n )}\n\n \n Volver\n \n
*/}\n \n );\n};\nexport default Error404;\n","import styled from 'styled-components';\n\nexport const LoaderContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100vw;\n height: 100vh;\n background-color: ${({ theme }) => theme.colors.brand};\n`;\n\nexport const LoaderImage = styled.img`\n max-width: 18.75rem;\n`;\n","import React from 'react';\n\n//ASSETS\nimport loader from 'assets/images/loader.gif';\n\n//COMPONENTS\nimport { LoaderContainer, LoaderImage } from './Loader.styled';\n\nconst Loader = () => {\n return (\n \n \n \n );\n};\n\nexport default Loader;\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\n\nexport type MetaHeadProps = {\n title?: string;\n description?: string;\n image?: string;\n url?: string;\n};\n\nconst MetaHead = ({ title, description, image, url }: MetaHeadProps) => {\n return (\n \n {title || ''} | SwearIt\n \n \n {url && }\n \n \n \n \n {url && }\n \n \n \n \n \n \n \n \n \n {url && }\n \n );\n};\n\nexport default MetaHead;\n","import * as React from 'react';\n\nfunction ChevronRight(props: React.SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default ChevronRight;\n","import * as React from 'react';\n\nfunction ChevronDownIcon(props: React.SVGProps) {\n return (\n \n {'Chevron Down'}\n \n \n );\n}\n\nexport default ChevronDownIcon;\n","import * as React from 'react';\n\nfunction CloseIcon(props: React.SVGProps) {\n return (\n \n {'Close'}\n \n \n );\n}\n\nexport default CloseIcon;\n","import * as React from 'react';\n\nfunction RotatePhone(props: React.SVGProps) {\n return (\n \n {'Rotate Phone'}\n \n \n \n \n \n \n );\n}\n\nexport default RotatePhone;\n","import * as React from 'react';\n\nfunction ShareIcons(props: React.SVGProps) {\n return (\n \n {'Share'}\n \n \n );\n}\n\nexport default ShareIcons;\n","import * as React from 'react';\n\nfunction CopyIcon(props: React.SVGProps) {\n return (\n \n {'CopyIcon'}\n \n \n );\n}\n\nexport default CopyIcon;\n","import * as React from 'react';\n\nfunction WhatsappIcon(props: React.SVGProps) {\n return (\n \n {'WhatsappIcon'}\n \n \n );\n}\n\nexport default WhatsappIcon;\n","import * as React from 'react';\n\nfunction TelegramIcon(props: React.SVGProps) {\n return (\n \n {'TelegramIcon'}\n \n \n );\n}\n\nexport default TelegramIcon;\n","import * as React from 'react';\n\nfunction TwitterIcon(props: React.SVGProps) {\n return (\n \n {'TwitterIcon'}\n \n \n );\n}\n\nexport default TwitterIcon;\n","import * as React from 'react';\n\nfunction FacebookIcon(props: React.SVGProps) {\n return (\n \n {'FacebookIcon'}\n \n \n );\n}\n\nexport default FacebookIcon;\n","import * as React from 'react';\n\nfunction LinkedinIcon(props: React.SVGProps) {\n return (\n \n {'LinkedinIcon'}\n \n \n );\n}\n\nexport default LinkedinIcon;\n","import * as React from 'react';\n\nfunction PinterestIcon(props: React.SVGProps) {\n return (\n \n {'PinterestIcon'}\n \n \n );\n}\n\nexport default PinterestIcon;\n","import * as React from 'react';\n\nfunction DotMenu(props: React.SVGProps) {\n return (\n \n {'DotMenu'}\n \n \n );\n}\n\nexport default DotMenu;\n","import * as React from 'react';\n\nfunction InstagramIcon(props: React.SVGProps) {\n return (\n \n {'InstagramIcon'}\n \n \n );\n}\n\nexport default InstagramIcon;\n","import * as React from 'react';\n\nfunction YoutubeIcon(props: React.SVGProps) {\n return (\n \n {'YoutubeIcon'}\n \n \n );\n}\n\nexport default YoutubeIcon;\n","import * as React from 'react';\n\nfunction PointIcon(props: React.SVGProps) {\n return (\n \n {'Information'}\n \n \n );\n}\n\nexport default PointIcon;\n","import * as React from 'react';\n\nfunction ShareWineIcons(props: React.SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default ShareWineIcons;\n","import * as React from 'react';\n\nfunction PrintIcons(props: React.SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default PrintIcons;\n","import * as React from 'react';\n\nfunction TiktokIcon(props: React.SVGProps) {\n return (\n \n {'Tiktok'}\n\n \n \n );\n}\n\nexport default TiktokIcon;\n","import * as React from 'react';\n\nfunction ArrowDoubleLeftIcon(props: React.SVGProps) {\n return (\n \n \n \n \n );\n}\n\nexport default ArrowDoubleLeftIcon;\n","import * as React from 'react';\n\nfunction ArrowDoubleRightIcon(props: React.SVGProps) {\n return (\n \n \n \n \n );\n}\n\nexport default ArrowDoubleRightIcon;\n","import * as React from 'react';\n\nfunction Link(props: React.SVGProps) {\n return (\n \n {'Link'}\n \n \n );\n}\n\nexport default Link;\n","import * as React from 'react';\n\nfunction ChangeIcon(props: React.SVGProps) {\n return (\n \n \n \n );\n}\n\nexport default ChangeIcon;\n","import React from 'react';\nimport { IconMapProps } from './Icon.props';\n\nimport ChevronRight from './components/ChevronRight';\nimport ChevronDown from './components/ChevronDown';\nimport Close from './components/Close';\nimport RotatePhone from './components/RotatePhone';\nimport Share from './components/Share';\nimport Copy from './components/Copy';\nimport Whatsapp from './components/Whatsapp';\nimport Telegram from './components/Telegram';\nimport Twitter from './components/Twitter';\nimport Facebook from './components/Facebook';\nimport Linkedin from './components/Linkedin';\nimport Pinterest from './components/Pinterest';\nimport DotMenu from './components/DotMenu';\nimport Instagram from './components/Instagram';\nimport Youtube from './components/Youtube';\nimport Point from './components/Point';\nimport ShareWine from './components/ShareWine';\nimport Print from './components/Print';\nimport Tiktok from './components/Tiktok';\nimport ArrowDoubleLeft from './components/ArrowDoubleLeft';\nimport ArrowDoubleRight from './components/ArrowDoubleRight';\nimport Link from './components/Link';\nimport ChangeIcon from './components/ChangeIcon';\n\nconst ICON_MAP: Record = {\n chevronRight: {\n icon: ,\n iconName: 'ChevronRight',\n },\n chevronDown: {\n icon: ,\n iconName: 'ChevronDown',\n },\n close: {\n icon: ,\n iconName: 'Close',\n },\n rotatePhone: {\n icon: ,\n iconName: 'RotatePhone',\n },\n share: {\n icon: ,\n iconName: 'Share',\n },\n copy: {\n icon: ,\n iconName: 'Copy',\n },\n whatsapp: {\n icon: ,\n iconName: 'Whatsapp',\n },\n telegram: {\n icon: ,\n iconName: 'Telegram',\n },\n twitter: {\n icon: ,\n iconName: 'Twitter',\n },\n facebook: {\n icon: ,\n iconName: 'Facebook',\n },\n linkedin: {\n icon: ,\n iconName: 'Linkedin',\n },\n pinterest: {\n icon: ,\n iconName: 'Pinterest',\n },\n dotMenu: {\n icon: ,\n iconName: 'DotMenu',\n },\n instagram: {\n icon: ,\n iconName: 'Instagram',\n },\n youtube: {\n icon: ,\n iconName: 'Youtube',\n },\n point: {\n icon: ,\n iconName: 'Point',\n },\n shareWine: {\n icon: ,\n iconName: 'ShareWine',\n },\n print: {\n icon: ,\n iconName: 'Print',\n },\n tiktok: {\n icon: ,\n iconName: 'Tiktok',\n },\n arrowDoubleRight: {\n icon: ,\n iconName: 'ArrowDoubleRight',\n },\n arrowDoubleLeft: {\n icon: ,\n iconName: 'ArrowDoubleLeft',\n },\n link: {\n icon: ,\n iconName: 'Link',\n },\n changeIcon: {\n icon: ,\n iconName: 'ChangeIcon',\n },\n};\n\nexport default ICON_MAP;\n","import styled from 'styled-components';\n\n//UTILS\nimport { isColor } from 'theme/Theme.styled';\n\n//PROPS TYPE\nimport { IconContainerProps } from './Icon.props';\n\nexport const IconContainer = styled.div`\n svg {\n ${({ size }) =>\n size &&\n `\n width: ${size}px;\n height: ${size}px;\n `}\n ${({ theme, fill }) =>\n fill &&\n `\n fill: ${isColor(fill) ? theme.colors[fill] : fill};\n `}\n ${({ theme, stroke }) =>\n stroke &&\n `\n stroke: ${isColor(stroke) ? theme.colors[stroke] : stroke};\n `}\n ${({ theme, color }) =>\n color &&\n `\n color: ${isColor(color) ? theme.colors[color] : color};\n `}\n }\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { IconProps } from './Icon.props';\n\n//CONSTANTS\nimport ICON_MAP from './Icon.contants';\n\n//STYLED\nimport { IconContainer } from './Icon.styled';\n\nconst Icon = ({ iconName, ...props }: IconProps) => {\n const isColor = (iconName: string) => {\n return Object.keys(ICON_MAP).includes(iconName);\n };\n\n return (\n \n {isColor(iconName) ? ICON_MAP[iconName].icon : ''}\n \n );\n};\n\nexport default Icon;\n","import {\n css,\n Interpolation,\n SimpleInterpolation,\n ThemedStyledProps,\n DefaultTheme,\n} from 'styled-components';\n\nexport type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport const breakpoints: Record = {\n xs: 575,\n sm: 768,\n md: 920,\n lg: 1280,\n xl: 1920,\n};\n\ntype Props = Record;\ntype Interpolators

=\n | SimpleInterpolation[]\n | Array>>\n | Array>>;\n\nexport const xs = (\n strings: TemplateStringsArray,\n ...values: Interpolators\n) => css`\n @media screen and (max-width: ${breakpoints.xs}px) {\n ${css(strings, ...values)}\n }\n`;\n\nexport const sm = (\n strings: TemplateStringsArray,\n ...values: Interpolators\n) => css`\n @media screen and (max-width: ${breakpoints.sm}px) {\n ${css(strings, ...values)}\n }\n`;\n\nexport const md = (\n strings: TemplateStringsArray,\n ...values: Interpolators\n) => css`\n @media screen and (max-width: ${breakpoints.md}px) {\n ${css(strings, ...values)}\n }\n`;\n\nexport const lg = (\n strings: TemplateStringsArray,\n ...values: Interpolators\n) => css`\n @media screen and (max-width: ${breakpoints.lg}px) {\n ${css(strings, ...values)}\n }\n`;\n\nexport const xl = (\n strings: TemplateStringsArray,\n ...values: Interpolators\n) => css`\n @media screen and (min-width: ${breakpoints.xl}px) {\n ${css(strings, ...values)}\n }\n`;\n","import { Text } from 'components/Text';\nimport styled from 'styled-components';\nimport { breakpoints } from 'theme/Theme.breackoints';\n\nexport const AppLayoutWineContaienr = styled.div`\n width: 100%;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n font-family: 'Rozha One', serif;\n`;\nexport const AppLayoutWineContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n`;\nexport const AppLayoutWineWrapper = styled.div`\n width: 100%;\n max-width: 1230px;\n margin: 0 auto;\n @media screen and (max-width: ${breakpoints.lg}px) {\n padding: 0 2rem;\n }\n @media screen and (max-width: ${breakpoints.sm}px) {\n padding: 0 0.5rem;\n }\n`;\nexport const AppLayoutWineHeader = styled.div`\n padding: 2rem 0;\n /* margin-bottom: 2rem; */\n display: flex;\n justify-content: space-between;\n`;\nexport const AppLayoutWineHeaderLogo = styled.img<{ minSize?: boolean }>`\n width: 120px;\n ${({ minSize }) =>\n minSize &&\n `\n width: 200px;\n `}\n`;\nexport const AppLayoutWineHeaderTranslate = styled.div`\n display: flex;\n gap: 0 2.5rem;\n`;\nexport const AppLayoutWineHeaderTranslateLang = styled(Text)<{\n active?: boolean;\n}>`\n font-size: 0.875rem;\n color: ${({ theme }) => theme.colors.winePrimary};\n cursor: pointer;\n ${({ active, theme }) =>\n active &&\n `\n color: ${theme.colors.wineBlack};\n `}\n`;\nexport const AppLayoutWineFooter = styled.div`\n border-top: 1px solid ${({ theme }) => theme.colors.wineBlack};\n padding: 1.5rem 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\nexport const AppLayoutWineFooterText = styled.a`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.75rem;\n line-height: 0.75rem;\n color: ${({ theme }) => theme.colors.wineGray};\n cursor: pointer;\n text-decoration: none;\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n`;\nexport const AppLayoutWineFooterCopy = styled(AppLayoutWineFooterText)`\n display: flex;\n align-items: center;\n`;\nexport const AppLayoutWineFooterCopyLogo = styled.img`\n margin-right: 0.5rem;\n`;\nexport const AppLayoutWineContent = styled.div`\n flex: 1;\n`;\n","import styled from 'styled-components';\n\n//ASSETS\nimport background from 'assets/images/background.png';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const AppLayoutContainer = styled.div`\n width: 100%;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n`;\nexport const AppLayoutContent = styled.div`\n flex: 1;\n /* @media only screen and (max-width: 950px) and (orientation: landscape) {\n visibility: hidden;\n } */\n`;\nexport const AppBlocker = styled.div`\n position: fixed;\n background-color: ${({ theme }) => theme.colors.white};\n background-image: url(${background});\n background-size: cover;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n visibility: hidden;\n height: 0;\n overflow: hidden;\n padding: 0;\n @media only screen and (orientation: landscape) {\n visibility: visible;\n padding: 0 2rem;\n height: auto;\n }\n`;\nexport const AppBlockerText = styled(Text)`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n background: ${({ theme }) => theme.colors.white};\n padding: 2.5rem;\n box-shadow: 0px 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n font-weight: bold;\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.black};\n svg {\n width: 7rem;\n height: 4rem;\n fill: ${({ theme }) => theme.colors.brand};\n margin: 0 0 1.25rem;\n }\n`;\n","import styled from 'styled-components';\nimport { DialogOverlay, DialogContent } from '@reach/dialog';\nimport { breakpoints } from 'theme/Theme.breackoints';\nimport { SizeModal } from './Modal.props';\nimport { Colors, isColor } from 'theme/Theme.styled';\n\nexport const sizesModalMap: Record = {\n small: 575,\n medium: 768,\n big: 1200,\n};\n\nexport const ModalDialogOverlay = styled(DialogOverlay)<{wine?: boolean;}>`\n z-index: 9999;\n background-color: rgba(78, 99, 165, 0.9);\n max-width: 100vw;\n ${({ wine }) => wine && `\n background-color: rgba(51, 51, 51, 0.9);\n `}\n`;\nexport const ModalDialogContent = styled(DialogContent)<{\n size?: SizeModal;\n backcolor?: Colors | string;\n padding: string;\n}>`\n position: relative;\n width: ${({ size = 'medium' }) => `${sizesModalMap[size]}px`};\n max-width: ${({ size = 'medium' }) => `${sizesModalMap[size]}px`};\n background-color: ${({ theme, backcolor = 'white' }) =>\n isColor(backcolor) ? theme.colors[backcolor] : backcolor};\n padding: ${({ padding }) => (padding ? padding : '0 2rem')};\n @media screen and (max-width: ${breakpoints.lg}px) {\n width: 70vw;\n }\n @media screen and (max-width: ${breakpoints.lg}px) {\n width: 80vw;\n }\n @media screen and (max-width: ${breakpoints.lg}px) {\n width: calc(100vw - 2rem);\n }\n`;\n\nexport const ModalContainer = styled.div``;\nexport const ModalClose = styled.div`\n position: absolute;\n right: 0;\n top: -2.5rem;\n svg {\n stroke: ${({ theme }) => theme.colors.white};\n width: 1.5rem;\n margin: 0 -0.25rem 0 0;\n transition: all 0.25s ease-in-out;\n cursor: pointer;\n &:hover {\n transform: scale(1.1);\n stroke: ${({ theme }) => theme.colors.active};\n }\n }\n`;\nexport const ModalWrapper = styled.div``;\nexport const ModalHeading = styled.h3<{ between?: boolean }>`\n font-size: 0.75rem;\n line-height: 0.75rem;\n font-weight: bold;\n letter-spacing: 1.13px;\n font-family: ${({ theme }) => theme.fonts.main};\n text-transform: uppercase;\n padding: 22px 0;\n border-bottom: 1px solid ${({ theme }) => theme.colors.placeholder};\n margin: 0;\n ${({ between }) => {\n if (between) {\n return `\n display: flex;\n align-items: center;\n justify-content: space-between;\n `;\n }\n }}\n`;\nexport const ModalContent = styled.div`\n padding: 2rem 0 2.5rem;\n`;\n","import React from 'react';\n\n//PROPST TYPE\nimport { ModalProps } from './Modal.props';\n\n//COMPONENT\nimport Icon from 'components/Icon';\n\n//STYLES\nimport {\n ModalDialogOverlay,\n ModalDialogContent,\n ModalContainer,\n ModalClose,\n} from './Modal.styled';\n\nexport default function Modal({\n isOpen,\n children,\n close,\n size,\n backcolor,\n hiddeClose,\n padding = '0 2rem',\n wine,\n}: ModalProps) {\n if (isOpen) {\n return (\n {}}\n wine={wine}\n >\n {/* */}\n \n {!hiddeClose && (\n \n \n \n )}\n {children}\n \n \n );\n }\n return <>;\n}\n","import styled, { css } from 'styled-components';\n\n//PROPS TYPE\nimport { ButtonProps } from './Button.props';\n\n//COMPONENT\nimport { Text } from 'components/Text';\n\nconst gradientBackgound = css`\n position: absolute;\n content: '';\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n transition: all 0.25s ease-in;\n z-index: 1;\n`;\n\nexport const ButtonText = styled(Text)`\n z-index: 2;\n color: #fcfcfc;\n font-weight: bold;\n font-size: 0.875rem;\n line-height: 0.875rem;\n`;\n\nexport const ButtonContainer = styled.button`\n display: flex;\n align-items: center;\n justify-content: center;\n outline: none;\n transition: all 0.3s ease-in-out;\n min-width: max-content;\n padding: 1.125rem 1.5rem;\n font-size: 0.875rem;\n line-height: 0.875rem;\n position: relative;\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 10%);\n transition: all 0.25s ease-in-out;\n &::before {\n ${gradientBackgound}\n background-image: linear-gradient(90deg, #4e63a5 0%, #8298d5 100%);\n opacity: 1;\n }\n &::after {\n ${gradientBackgound}\n background-image: linear-gradient(90deg, #651366 0%, #4e63a5 100%);\n opacity: 0;\n }\n &:focus {\n outline: none;\n }\n &:hover {\n transform: translateY(-0.125rem);\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 20%);\n\n &::before {\n opacity: 0;\n }\n &::after {\n opacity: 1;\n }\n }\n\n ${({ disabled, theme }) =>\n disabled &&\n `\n background: ${theme.colors.border};\n cursor: not-allowed;\n box-shadow: none;\n &:hover {\n transform: translateY(0);\n box-shadow: none;\n }\n &::before {\n display: none;\n }\n &::after {\n display: none;\n }\n ${ButtonText} {\n color: ${theme.colors.placeholder};\n }\n `}\n\n ${({ wine, theme, outline, disabled }) => wine && `\n font-family: ${theme.fonts.wine};\n border-radius: 8px;\n box-shadow: none;\n background: ${outline ? \"transparent\" : theme.colors.wineBlack};\n border: ${outline ? `1px solid ${theme.colors.wineBlack}` : \"none\"};\n &::before {display: none;}\n &::after {display: none;}\n &:hover {\n transform: none;\n box-shadow: none;\n background: ${outline ? theme.colors.wineBlack : theme.colors.wineGrayLigth};\n ${ButtonText} {\n color: ${outline ? theme.colors.white : theme.colors.wineGray};\n }\n }\n ${ButtonText} {\n color: ${outline ? theme.colors.wineBlack : theme.colors.white};\n font-size: 1rem;\n }\n\n ${disabled && `\n border-color: #c7c7c7;\n ${ButtonText} {\n color: #c7c7c7;\n }\n &:hover {\n transform: none;\n box-shadow: none;\n background: transparent;\n ${ButtonText} {\n color: #c7c7c7;\n }\n }\n `}\n `}\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { ButtonProps } from './Button.props';\n\n//COMPONENTS\nimport { ButtonContainer, ButtonText } from './Button.styled';\n\nconst Button = ({\n text,\n children,\n onClick,\n wine,\n outline,\n disabled,\n ...props\n}: ButtonProps) => {\n const content = children ? children : text;\n\n return (\n \n {content}\n \n );\n};\n\nexport default Button;\n","import styled from 'styled-components';\n\nimport Button from 'components/Button';\nimport { Text } from 'components/Text';\nimport { Colors } from 'theme/Theme.styled';\n\ninterface TranslateStatus {\n status?: 'completed' | 'incomplete' | string;\n}\n\ntype TranslateStatusColors = {\n color: Colors;\n};\n\nconst translateStatusColorMap: Record = {\n completed: {\n color: 'turquoise',\n },\n incomplete: {\n color: 'error',\n },\n};\n\nexport const TranslateModalContainer = styled.div``;\nexport const TranslateModalLenguage = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 0 1rem;\n border-bottom: 1px solid ${({ theme }) => theme.colors.placeholder};\n padding: 0 0 1rem;\n &:last-child {\n margin: 0;\n padding: 0;\n border: none;\n }\n`;\nexport const TranslateModalLenguageActions = styled.div`\n display: flex;\n align-items: flex-end;\n flex-direction: column;\n justify-content: space-between;\n height: 2.25rem;\n`;\nexport const TranslateModalLenguageMeta = styled.div`\n display: grid;\n grid-template: 1fr / 2.25rem 1fr;\n gap: 0 1rem;\n`;\nexport const TranslateModalLenguageAvatar = styled.img`\n max-width: 2.25rem;\n object-fit: cover;\n height: 2.25rem;\n border-radius: 50%;\n`;\nexport const TranslateModalLenguageName = styled(Text)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 2.25rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.black};\n`;\nexport const TranslateModalLenguageStatus = styled(Text)`\n font-size: 0.75rem;\n line-height: 0.75rem;\n text-transform: capitalize;\n color: ${({ theme, status }) =>\n status\n ? theme.colors[translateStatusColorMap[status].color]\n : theme.colors.backgroundGray};\n`;\nexport const TranslateModalLenguageAction = styled(Button)`\n height: 100%;\n padding: 0 1.5rem;\n`;\n","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\n//ASSETS\nimport FlagBulgarian from 'assets/images/bg.png';\nimport FlagCatalan from 'assets/images/ca.png';\nimport FlagCzech from 'assets/images/cs.png';\nimport FlagDanish from 'assets/images/da.png';\nimport FlagGermany from 'assets/images/de.png';\nimport FlagGreek from 'assets/images/el.png';\nimport FlagEnglish from 'assets/images/en.png';\nimport FlagSpanish from 'assets/images/es.png';\nimport FlagEstonian from 'assets/images/et.png';\nimport FlagBasque from 'assets/images/eu.png';\nimport FlagFinnish from 'assets/images/fi.png';\nimport FlagFrance from 'assets/images/fr.png';\nimport FlagIrish from 'assets/images/ga.png';\nimport FlagGalician from 'assets/images/gl.png';\nimport FlagCroatian from 'assets/images/hr.png';\nimport FlagHungarian from 'assets/images/hu.png';\nimport FlagItaly from 'assets/images/it.png';\nimport FlagJapon from 'assets/images/ja.png';\nimport FlagLithuanian from 'assets/images/lt.png';\nimport FlagLatvian from 'assets/images/lv.png';\nimport FlagMaltese from 'assets/images/mt.png';\nimport FlagDutch from 'assets/images/nl.png';\nimport FlagPolish from 'assets/images/pl.png';\nimport FlagPortugal from 'assets/images/pt.png';\nimport FlagRomanian from 'assets/images/ro.png';\nimport FlagSlovak from 'assets/images/sk.png';\nimport FlagSlovenian from 'assets/images/sl.png';\nimport FlagSweden from 'assets/images/sv.png';\n\n//PROPS TYPE\nimport { TranslateModalProps } from './TranslateModal.props';\n\n//STORE\nimport { AppState } from 'store';\nimport { closeModal, setTranslateSelect } from 'store/tramslateModal';\n\n//COMPONENTS\nimport Modal from 'components/Modal';\n\n//STYLES\nimport {\n ModalContent,\n ModalHeading,\n ModalWrapper,\n} from 'components/Modal/Modal.styled';\nimport {\n TranslateModalLenguage,\n TranslateModalLenguageAction,\n TranslateModalLenguageActions,\n TranslateModalLenguageAvatar,\n TranslateModalLenguageMeta,\n TranslateModalLenguageName,\n TranslateModalLenguageStatus,\n} from './TranslateModal.styled';\n\ninterface TranslateMap {\n name: string;\n status: string;\n}\n\nexport const LANGUAGE_MAP: Record = {\n fr: {\n icon: FlagFrance,\n lang: 'en-US',\n },\n es: {\n icon: FlagSpanish,\n lang: 'es-ES',\n },\n ca: {\n icon: FlagCatalan,\n lang: 'es-ES',\n },\n pt: {\n icon: FlagPortugal,\n lang: 'en-US',\n },\n de: {\n icon: FlagGermany,\n lang: 'en-US',\n },\n it: {\n icon: FlagItaly,\n lang: 'en-US',\n },\n en: {\n icon: FlagEnglish,\n lang: 'en-US',\n },\n sv: {\n icon: FlagSweden,\n lang: 'en-US',\n },\n bg: {\n icon: FlagBulgarian,\n lang: 'en-US',\n },\n cs: {\n icon: FlagCzech,\n lang: 'en-US',\n },\n hr: {\n icon: FlagCroatian,\n lang: 'en-US',\n },\n da: {\n icon: FlagDanish,\n lang: 'en-US',\n },\n sk: {\n icon: FlagSlovak,\n lang: 'en-US',\n },\n sl: {\n icon: FlagSlovenian,\n lang: 'en-US',\n },\n et: {\n icon: FlagEstonian,\n lang: 'en-US',\n },\n fi: {\n icon: FlagFinnish,\n lang: 'en-US',\n },\n el: {\n icon: FlagGreek,\n lang: 'en-US',\n },\n hu: {\n icon: FlagHungarian,\n lang: 'en-US',\n },\n ga: {\n icon: FlagIrish,\n lang: 'en-US',\n },\n lv: {\n icon: FlagLatvian,\n lang: 'en-US',\n },\n lt: {\n icon: FlagLithuanian,\n lang: 'en-US',\n },\n mt: {\n icon: FlagMaltese,\n lang: 'en-US',\n },\n nl: {\n icon: FlagDutch,\n lang: 'en-US',\n },\n pl: {\n icon: FlagPolish,\n lang: 'en-US',\n },\n ro: {\n icon: FlagRomanian,\n lang: 'en-US',\n },\n eu: {\n icon: FlagBasque,\n lang: 'en-US',\n },\n gl: {\n icon: FlagGalician,\n lang: 'en-US',\n },\n ja: {\n icon: FlagJapon,\n lang: 'en-US',\n },\n};\n\nexport default function TranslateModal({\n refetch,\n type,\n id,\n}: TranslateModalProps) {\n const { t, i18n } = useTranslation('general');\n\n const dispatch = useDispatch();\n\n const { pk } = useSelector((state: AppState) => state.product.product);\n\n const { isOpen, translations, translateSelect, isHiddenClose } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const close = useCallback(() => {\n if (translateSelect) {\n dispatch(closeModal());\n }\n }, [dispatch, translateSelect]);\n\n const handleSelectLanguage = async (name: string) => {\n i18n.changeLanguage(LANGUAGE_MAP[name]?.lang);\n const findProduct = translateSelect?.find(\n (lang) => lang?.idProduct === id || lang?.idOrganization === id\n );\n\n const translateSelectList = findProduct\n ? translateSelect?.map((lang) => {\n return lang?.idProduct === id || lang.idOrganization === id\n ? {\n short_name: name,\n long_name: t(name),\n idProduct: type === 'product' ? id : '',\n idOrganization: type === 'organization' ? id : '',\n }\n : lang;\n })\n : [\n ...translateSelect,\n {\n short_name: name,\n long_name: t(name),\n idProduct: type === 'product' ? id : '',\n idOrganization: type === 'organization' ? id : '',\n },\n ];\n\n await dispatch(\n setTranslateSelect({\n translateSelect: translateSelectList,\n })\n );\n await dispatch(closeModal());\n\n if (refetch) refetch();\n };\n \n return (\n \n \n {t('translations')}\n \n {translations &&\n Object.entries(translations).map((translate) => ({\n name: translate[0],\n statusTranslate: translate[1],\n })).length > 0 && (\n <>\n {Object.entries(translations)\n .map((translate) => ({\n name: translate[0],\n statusTranslate: translate[1],\n }))\n .map((translate) => {\n const selection =\n translateSelect &&\n translateSelect.find(\n (lang) =>\n lang.idProduct === id || lang.idOrganization === id\n );\n return (\n \n \n \n \n {t(`${translate?.name}`)}\n {!!selection &&\n selection?.short_name === translate?.name && (\n \n {t('selected')}\n \n )}\n \n \n \n {((!!selection &&\n selection?.short_name !== translate?.name) ||\n selection === undefined) && (\n {\n handleSelectLanguage(translate?.name);\n }}\n text={t('select')}\n />\n )}\n \n \n );\n })}\n \n )}\n \n \n \n );\n}\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\n//PROPS TYPE\nimport { VersionDevice } from './TranslateSelector.props';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const TranslateSelectorLanguage = styled(Text)`\n font-size: 0.75rem;\n line-height: 0.75rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.brand};\n ${sm`\n color: ${({ theme }) => theme.colors.white};\n `}\n`;\nexport const TranslateSelectorAvatar = styled.img`\n max-width: 1.25rem;\n object-fit: cover;\n height: 1.25rem;\n border-radius: 50%;\n`;\nexport const TranslateSelectorIcon = styled.div`\n svg {\n width: 0.625rem;\n }\n ${sm`\n svg { \n path {\n fill: ${({ theme }) => theme.colors.white};\n }\n }\n `}\n`;\nexport const TranslateSelectorContainer = styled.div<{ type: VersionDevice }>`\n padding: 0.25rem 0.75rem;\n border: 1px solid ${({ theme }) => theme.colors.border};\n display: flex;\n align-items: center;\n gap: 0 0.25rem;\n cursor: pointer;\n height: 36px;\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.brand};\n ${sm`\n border: 1px solid ${({ theme }) => theme.colors.white};\n `}\n }\n\n ${sm`\n ${({ type }) =>\n type === 'desktop' &&\n `\n display: none;\n `}\n\n ${({ type, theme }) =>\n type === 'mobile' &&\n `\n gap: 0 0.5rem;\n border-color: ${theme.colors.white};\n \n `}\n\n ${({ type, theme}) => type === 'both' && `\n display: flex;\n ${TranslateSelectorLanguage} {\n color: ${theme.colors.brand};\n }\n ${TranslateSelectorIcon} {\n svg { \n path {\n fill: ${theme.colors.brand};\n }\n }\n }\n `}\n\n `}\n`;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\n//UTILS\nimport { LANGUAGE_MAP } from 'components/TranslateModal';\n\n//PROPS TYPE\nimport { TranslationSelect } from 'store/tramslateModal';\nimport { TranslateSelectorProps } from './TranslateSelector.props';\n\n//STORE\nimport { AppState } from 'store';\nimport { openSelectModal } from 'store/tramslateModal';\n\n//COMPONENTS\nimport Icon from 'components/Icon';\n\n//STYLES\nimport {\n TranslateSelectorAvatar,\n TranslateSelectorContainer,\n TranslateSelectorIcon,\n TranslateSelectorLanguage,\n} from './TranslateSelector.styled';\n\nconst TranslateSelector = ({ device, type, id }: TranslateSelectorProps) => {\n const { i18n } = useTranslation('translate');\n\n const dispatch = useDispatch();\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const [language, setLanguage] = useState(\n undefined\n );\n\n useEffect(() => {\n if (\n translateSelect.find(\n (lang) => lang?.idProduct === id || lang?.idOrganization === id\n )\n ) {\n let language = translateSelect.find(\n (lang) => lang?.idProduct === id || lang?.idOrganization === id\n );\n\n setLanguage(language);\n if (language)\n i18n.changeLanguage(LANGUAGE_MAP[language?.short_name]?.lang);\n } else {\n i18n.changeLanguage('es-ES');\n }\n }, [id, translateSelect, i18n]);\n\n const handleSelectLanguage = () => {\n dispatch(\n openSelectModal({\n isOpen: true,\n isHiddenClose: false,\n })\n );\n };\n\n return (\n <>\n {language ? (\n \n \n\n \n {language?.long_name}\n \n\n \n \n \n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default TranslateSelector;\n","export const ERRORS = {\n private: \"private\",\n pending_payment: \"pending_payment\",\n not_registered: \"not_registered\",\n invalid_uuid: \"invalid_uuid\"\n}","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useMediaQuery } from '@react-hook/media-query';\n//ASSETS\nimport logoWine from 'assets/images/logowine.svg';\nimport logoFooter from 'assets/images/brand-icon-wine.svg';\n//PROPS\nimport { AppLayoutWineProps } from './AppLayoutWine.props';\n//COMPONENTS\nimport Error404 from 'screens/Error404';\nimport Loader from 'components/Loader';\nimport MetaHead from 'components/MetaHead';\nimport Icon from 'components/Icon';\n//STYLES\nimport {\n AppLayoutWineContaienr,\n AppLayoutWineContainer,\n AppLayoutWineHeader,\n AppLayoutWineHeaderLogo,\n AppLayoutWineHeaderTranslate,\n AppLayoutWineHeaderTranslateLang,\n AppLayoutWineFooter,\n AppLayoutWineFooterText,\n AppLayoutWineFooterCopy,\n AppLayoutWineFooterCopyLogo,\n AppLayoutWineContent,\n AppLayoutWineWrapper,\n} from './AppLayoutWine.styled';\nimport { AppBlocker, AppBlockerText } from 'module/AppLayout/AppLayout.styled';\nimport TranslateSelector from 'components/TranslateSelector/TranslateSelector';\nimport { ERRORS } from 'constants/errors';\n\nconst AppLayoutWine = ({\n children,\n loading,\n skeletonLoader,\n metas,\n errorType,\n errorUrl,\n logo,\n id,\n hideOrgData = false,\n}: AppLayoutWineProps) => {\n const { t: tFooter } = useTranslation('footer');\n\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n const year = new Date().getFullYear();\n\n if (errorType === ERRORS.private) {\n return ;\n }\n\n if (errorType === ERRORS.pending_payment) {\n return ;\n }\n\n if (\n errorType === ERRORS.not_registered ||\n errorType === ERRORS.invalid_uuid\n ) {\n return ;\n }\n\n if (\n !!errorType &&\n errorType !== ERRORS.not_registered &&\n errorType !== ERRORS.invalid_uuid &&\n errorType !== ERRORS.private &&\n errorType !== ERRORS.pending_payment\n ) {\n return ;\n }\n\n return loading ? (\n <>{skeletonLoader ? skeletonLoader : }\n ) : (\n \n {matches && (\n \n \n \n Por favor rote el telefono\n \n \n )}\n {metas && (\n \n )}\n \n \n \n {!hideOrgData ? (\n \n ) : (\n

\n )}\n\n \n {/* \n \n en\n \n \n es\n \n */}\n \n \n {children}\n \n \n \n ©{year}\n \n \n hello@swearit.io\n \n \n Legal\n \n \n \n \n \n );\n};\n\nexport default AppLayoutWine;\n","import styled from \"styled-components\";\nimport Icon from 'components/Icon';\nimport { Text } from \"components/Text\";\nimport { breakpoints } from \"theme/Theme.breackoints\";\n\nexport const ShareContainer = styled.div``\n\nexport const ShareShowIcon = styled(Icon)`\n margin-right: 1.5rem;\n svg {\n width: 24px;\n }\n`\nexport const ShareShowText = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n @media screen and (max-width: ${breakpoints.lg}px) {\n font-size: 0.875rem;\n line-height: 0.875rem;\n }\n`\n\nexport const ShareShowSocials = styled.div<{visible?: boolean;}>`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0 1.5rem;\n position: relative;\n left: -2rem;\n width: 0;\n height: 0;\n visibility: hidden;\n overflow: hidden;\n opacity: 0;\n transition: opacity 0.25s ease-in-out, left 0.25s ease-in-out;\n ${({ visible }) => visible && `\n opacity: 1;\n visibility: visible;\n left: 0;\n width: auto;\n height: auto;\n `}\n \n @media screen and (max-width: ${breakpoints.lg}px) {\n gap: 1.5rem;\n }\n`\nexport const ShareShowSocial = styled.a`\n font-size: 1rem;\n line-height: 1rem;\n cursor: pointer;\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n @media screen and (max-width: ${breakpoints.lg}px) {\n font-size: 0.875rem;\n line-height: 0.875rem;\n }\n`\n\nexport const ShareShowSocialClose = styled(ShareShowSocial)``\n\nexport const ShareShow = styled.div<{visible?: boolean;}>`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n &:hover {\n ${ShareShowIcon} {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n ${ShareShowText} {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n }\n\n ${({ visible, theme}) => visible && `\n ${ShareShowIcon} {\n color: ${theme.colors.winePrimary};\n }\n ${ShareShowText} {\n display: none;\n }\n `}\n`","import React, { useState, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport ReactGA from 'react-ga4';\nimport useClipboard from 'react-use-clipboard';\n//PROPS TYPE\nimport { Organization, OrganizationSocial } from 'types/organization';\nimport { Product } from 'types/product';\nimport { Icons } from 'components/Icon/Icon.props';\n//STORE\nimport { AppState } from 'store';\n//STYLES\nimport {\n ShareContainer,\n ShareShow,\n ShareShowText,\n ShareShowIcon,\n ShareShowSocials,\n ShareShowSocial,\n ShareShowSocialClose,\n} from './Share.styled';\n\ninterface ShareProps {\n product?: Product;\n organization?: Organization;\n onClick?: () => void;\n mobile?: boolean;\n type: 'product' | 'organization';\n}\n\nconst Share = ({\n product,\n organization,\n onClick,\n mobile,\n type,\n}: ShareProps) => {\n const { t } = useTranslation('general');\n\n const [isOpen, setIsOpen] = useState(false);\n const shortUrl = useSelector(\n (state: AppState) => state.link.link.secureShortURL\n );\n\n const [isCopied, setCopied] = useClipboard(shortUrl, {\n successDuration: 3000,\n });\n\n const getHandler = (array: OrganizationSocial[], type: string) => {\n const handler = array.find((social) => social.type === type);\n\n return handler && handler.handle ? handler.handle : false;\n };\n\n const SOCIAL_ICONS = useMemo(() => {\n const shareImage: string = encodeURIComponent(\n type === 'product'\n ? product && product.images && product.images.length > 0\n ? (product.images[0].url as string)\n : ('https://engine-static.s3.amazonaws.com/img/placeholders/placeholder540x540.png' as string)\n : organization\n ? organization.logo.url\n : 'https://engine-static.s3.amazonaws.com/img/placeholders/placeholder540x540.png'\n );\n const socials = product\n ? product && product.organization.socialChannels\n : organization\n ? organization.socialChannels\n : null;\n\n const tags =\n product &&\n product.featuredProofPoints &&\n product.featuredProofPoints.length > 0\n ? product.featuredProofPoints.slice(0, 3)\n : organization &&\n organization.proofPoints &&\n organization.proofPoints.length > 0\n ? organization.proofPoints.slice(0, 3)\n : [];\n const [tag1, tag2, tag3] = tags.map((proof: any, index: any) => {\n let nameProof = proof.name ? proof.name : proof.node.name;\n let number = index + 1;\n return tags.length === number ? nameProof : `${nameProof}, `;\n });\n const tagsText =\n tags.length > 0 ? `${tag1}${tag2 ? tag2 : ''}${tag3 ? tag3 : ''}...` : '';\n\n return [\n {\n name: 'copy' as Icons,\n onClick: () => {\n setCopied();\n if (mobile && onClick) onClick();\n },\n href: (summary: string) => '#',\n summary: null,\n },\n {\n name: 'whatsapp' as Icons,\n href: (summary: string) => `https://wa.me/?text=${summary}${shortUrl}`,\n onClick: onClick,\n summary: encodeURIComponent(\n `${tagsText ? `*${tagsText}* ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n`\n ),\n },\n {\n name: 'telegram' as Icons,\n href: (summary: string) =>\n `https://telegram.me/share/url?url=${shortUrl}&text=${summary}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n {\n name: 'twitter' as Icons,\n href: (summary: string) =>\n `https://twitter.com/intent/tweet?text=${summary}&url=${shortUrl}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_ ${\n getHandler(socials as OrganizationSocial[], 'TWITTER')\n ? `${getHandler(socials as OrganizationSocial[], 'TWITTER')}\\n`\n : '\\n'\n }`\n ),\n },\n {\n name: 'facebook' as Icons,\n href: (summary: string) =>\n `https://www.facebook.com/sharer/sharer.php?u=${shortUrl}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n {\n name: 'linkedin' as Icons,\n href: (summary: string) =>\n `https://www.linkedin.com/sharing/share-offsite/?url=${shortUrl}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n ];\n }, [product, organization, shortUrl, onClick, setCopied, mobile, type]);\n\n const analyticalEvent = (social: string) => {\n ReactGA.event({\n category: organization ? 'Page Click' : 'Social Sharing',\n action: `${social} Share`,\n label: organization\n ? `${organization.pk}`\n : product\n ? `${product.organization.pk}/${product.pk}`\n : '',\n });\n };\n\n return (\n \n {\n if (!isOpen) setIsOpen(!isOpen);\n }}\n >\n \n compartir\n \n {SOCIAL_ICONS.map((icon) => (\n {\n analyticalEvent(icon.name);\n if (icon.onClick && !mobile) {\n e.preventDefault();\n icon.onClick();\n }\n\n if (icon.onClick && mobile) {\n icon.onClick();\n }\n }}\n href={icon.summary ? icon.href(icon.summary) : '#'}\n target={'_blank'}\n rel=\"noopener noreferrer\"\n >\n {icon.name}\n \n ))}\n {\n setIsOpen(!isOpen);\n }}\n >\n x\n \n \n \n \n );\n};\n\nexport default Share;\n","import styled from \"styled-components\";\nimport { Text } from \"components/Text\";\nimport { breakpoints } from \"theme/Theme.breackoints\";\n\nexport const TransitionsContaier = styled.div`\n width: 100%;\n max-width: 1230px;\n margin: 0 auto;\n`\nexport const TransitionsTitle = styled.div`\n font-size: 32px;\n line-height: 32px;\n margin: 0 0 2.5rem;\n`\nexport const TransitionsList = styled.div`\n gap: 0 1.5rem;\n max-width: 100%;\n overflow: auto;\n padding-bottom: 1.125rem;\n display: grid;\n grid-template: 1fr / repeat(3, 1fr);\n @media screen and (max-width: ${breakpoints.md}px) {\n grid-template: 1fr / repeat(2, 1fr);\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n grid-template: 1fr / 1fr;\n }\n`\nexport const TransitionsItemColumn = styled.div``\nexport const TransitionsItem = styled.div`\n width: 100%;\n max-width: 540px;\n position: relative;\n flex: 1 0 auto;\n margin: 0 0 2.5rem;\n`\nexport const TransitionsItemDate = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 14px;\n line-height: 14px;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 1.125rem;\n`\nexport const TransitionsItemTitle = styled(Text)`\n font-size: 1.5rem;\n line-height: 2rem;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 0.75rem;\n max-width: 78%;\n`\nexport const TransitionsItemParagraph = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.875rem;\n line-height: 21px;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 0.875rem;\n`\nexport const TransitionsItemImage = styled.img`\n max-width: 250px;\n width: 100%;\n object-fit: cover;\n object-position: center;\n max-height: 140px;\n @media screen and (max-width: ${breakpoints.md}px) {\n height: 140px;\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n height: auto;\n max-width: 100%;\n max-height: 100%;\n }\n`","import React from 'react';\n//PROPS TYPE\nimport { ProductExtraField, ProductStep } from 'types/product';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//STYLES\nimport {\n TransitionsContaier,\n TransitionsList,\n TransitionsItem,\n TransitionsItemTitle,\n TransitionsItemParagraph,\n TransitionsItemImage,\n TransitionsItemColumn,\n} from './Transitions.styled';\n\ninterface TransitionsProps {\n steps: ProductStep[];\n}\n\nconst Transitions = ({ steps }: TransitionsProps) => {\n const removeTags = (str: string) => {\n if (str === null || str === '') return false;\n else str = str.toString();\n return str.replace(/(<([^>]+)>)/gi, '');\n };\n\n return (\n \n \n {steps.map((step) => {\n const extraFields =\n !!step.extraFields && JSON.parse(step.extraFields).length > 0\n ? JSON.parse(step.extraFields)\n : [];\n\n return (\n \n {step.name}\n \n {extraFields.map((extrafield: ProductExtraField) => (\n \n {extrafield.name}{' '}\n {extrafield.internal_id === 'varieties'\n ? JSON.parse(\n extrafield.value\n ).map(\n (\n item: { label: string; value: number },\n index: number\n ) => (\n {`${item.label} ${item.value}%,`}\n )\n )\n : extrafield.value}\n {!!extrafield.unit && extrafield.unit}\n \n ))}\n\n \n \n \n );\n })}\n \n \n );\n};\n\nexport default Transitions;\n","import styled from 'styled-components';\n\n//PROPS TYPE\nimport { SkeletonLineProps } from './SkeletonLoader.props';\n\nexport const SkeletonPulse = styled.div`\n display: inline-block;\n height: 100%;\n width: 100%;\n vertical-align: middle;\n background: linear-gradient(-90deg, #f0f0f0 0%, #f8f8f8 50%, #f0f0f0 100%);\n background-size: 400% 400%;\n animation: pulse 1.2s ease-in-out infinite;\n @keyframes pulse {\n 0% {\n background-position: 0% 0%;\n }\n 100% {\n background-position: -135% 0%;\n }\n }\n`;\nexport const SkeletonLoaderContainer = styled(SkeletonPulse)`\n width: ${({ width }) => (width ? width : '10rem')};\n height: ${({ height }) => (height ? height : '1.25rem')};\n border-radius: ${({ radius }) => (radius ? radius : '0')};\n margin: ${({ margin }) => (margin ? margin : '0')};\n padding: ${({ padding }) => (padding ? padding : '0')};\n display: ${({ display }) => (display ? display : 'inline-block')};\n ${({ gridArea }) =>\n gridArea &&\n `\n grid-area: ${gridArea};\n `};\n ${({ background }) =>\n background &&\n `\n background: ${background};\n `};\n ${({ border }) => {\n if (border) {\n return `\n border: ${border.full ? border.full : 'none'};\n border-bottom: ${border.bottom ? border.bottom : 'none'};\n border-top: ${border.top ? border.top : 'none'};\n border-left: ${border.left ? border.left : 'none'};\n border-right: ${border.right ? border.right : 'none'};\n ${border.full && `border: ${border.full};`};\n `;\n }\n }};\n ${({ flex }) =>\n flex &&\n flex.align &&\n `\n align-items: ${flex.align};\n `};\n ${({ gridTemplate }) =>\n gridTemplate &&\n `\n grid-template: ${gridTemplate};\n `};\n ${({ flex }) =>\n flex &&\n flex.justify &&\n `\n justify-content: ${flex.justify};\n `};\n ${({ flex }) =>\n flex &&\n flex.gap &&\n `\n gap: ${flex.gap};\n `};\n\n ${({ flex }) =>\n flex &&\n flex.grow &&\n `\n flex-grow: ${flex.grow};\n `};\n ${({ flex }) =>\n flex &&\n flex.wrap &&\n `\n flex-wrap: ${flex.wrap};\n `};\n ${({ flex }) =>\n flex &&\n flex.flexGroup &&\n `\n flex: ${flex.flexGroup};\n `};\n ${({ flex }) =>\n flex &&\n flex.direction &&\n `\n flex-direction: ${flex.direction};\n `};\n ${({ backgroundPosition }) =>\n backgroundPosition &&\n `\n background-position: ${backgroundPosition};\n `};\n\n ${({ backgroundRepeat }) =>\n backgroundRepeat &&\n `\n background-repeat: ${backgroundRepeat};\n `};\n\n ${({ backgroundSize }) =>\n backgroundSize &&\n `\n background-size: ${backgroundSize};\n `};\n ${({ overflow }) =>\n overflow &&\n `\n overflow: ${overflow};\n `};\n ${({ minHeight }) =>\n minHeight &&\n `\n min-height: ${minHeight};\n `};\n ${({ maxWidth }) =>\n maxWidth &&\n `\n max-width: ${maxWidth};\n `};\n ${({ animation }) =>\n animation &&\n `\n animation: ${animation};\n `};\n ${({ position }) =>\n position &&\n `\n position: ${position};\n `};\n ${({ right }) =>\n right &&\n `\n right: ${right};\n `};\n ${({ left }) =>\n left &&\n `\n left: ${left};\n `};\n ${({ top }) =>\n top &&\n `\n top: ${top};\n `};\n ${({ bottom }) =>\n bottom &&\n `\n bottom: ${bottom};\n `};\n\n &::before {\n content: '\\00a0';\n }\n ${({ after }) =>\n after &&\n `\n &::after {\n ${after}\n }\n `};\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { SkeletonLineProps } from './SkeletonLoader.props';\n\n//STYLES\nimport { SkeletonLoaderContainer } from './SkeletonLoader.styled';\n\nconst SkeletonLoader = ({ children, ...props }: SkeletonLineProps) => {\n return children ? (\n {children}\n ) : (\n \n );\n};\n\nexport default SkeletonLoader;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const ContainerContent = styled.div`\n display: flex;\n width: 100%;\n height: 100%;\n max-width: 76.25rem;\n padding: 0 2.5rem;\n margin: 0 auto;\n box-sizing: border-box;\n ${sm`\n padding: 0 1rem;\n `}\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { ContainerProps } from './Container.props';\n\n//STYLES\nimport { ContainerContent } from './Container.styled';\n\nconst Container = ({ children }: ContainerProps) => {\n return {children};\n};\n\nexport default Container;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const AppLayoutSkeletonNav = styled.div`\n display: none;\n position: fixed;\n bottom: 0;\n background: #fff;\n width: 100%;\n left: 0;\n right: 0;\n\n ${sm`\n display: block;\n `}\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { AppLayoutSkeletonProps } from './AppLayoutSkeleton.props';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\nimport Container from 'components/Container';\n\n//SSTYLES\nimport { AppLayoutSkeletonNav } from './AppLayoutSkeleton.styles';\n\nconst AppLayoutSkeleton = ({ children, matches }: AppLayoutSkeletonProps) => {\n return (\n \n \n \n \n \n \n \n \n \n \n {children}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AppLayoutSkeleton;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\ninterface SkeletonProofsProps {\n matches?: boolean;\n}\n\nconst SkeletonProofs = ({ matches }: SkeletonProofsProps) => {\n const [proofList] = useState([1, 2, 3, 4, 5]);\n\n return (\n \n {proofList.map((poorf, index) => (\n \n ))}\n \n );\n};\n\nexport default SkeletonProofs;\n","import React from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\nconst SkeletonSealsItem = () => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default SkeletonSealsItem;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\nimport SkeletonSealsItem from './SkeletonSealsItem';\n\nconst SkeletonSeals = () => {\n const [sealsList] = useState([1, 2]);\n\n return (\n \n {sealsList.map((seal, index) => (\n \n ))}\n \n );\n};\n\nexport default SkeletonSeals;\n","import React from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\nconst SkeletonSectionTitle = () => {\n return (\n \n \n \n );\n};\n\nexport default SkeletonSectionTitle;\n","import React from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\nconst SkeletonDescription = () => {\n return (\n \n \n \n \n \n \n );\n};\n\nexport default SkeletonDescription;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\nconst SkeletonShare = () => {\n const [shareList] = useState([1, 2, 3, 4, 5, 6, 7]);\n\n return (\n \n {shareList.map((share, index) => (\n \n ))}\n \n );\n};\n\nexport default SkeletonShare;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\nconst SkeletonReviews = () => {\n const [reviewList] = useState([1, 2, 3, 4, 5]);\n\n return (\n \n \n \n \n \n {reviewList.map((review, index) => (\n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n\n \n \n );\n};\n\nexport default SkeletonReviews;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\n\nconst SkeletonMilestonesItem = () => {\n const [proofList] = useState([10, 7]);\n\n return (\n \n \n \n \n \n \n {proofList.map((proof, index) => (\n \n ))}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default SkeletonMilestonesItem;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport SkeletonLoader from 'components/SkeletonLoader';\nimport SkeletonMilestonesItem from './SkeletonMilestonesItem';\n\nconst SkeletonMilestones = () => {\n const [milestonesList] = useState([1, 2, 3]);\n\n return (\n \n {milestonesList.map((milestone, index) => (\n \n ))}\n \n );\n};\n\nexport default SkeletonMilestones;\n","import React, { useState } from 'react';\n\n//COMPONENTS\nimport AppLayoutSkeleton from 'module/AppLayoutSkeleton';\nimport SkeletonLoader from 'components/SkeletonLoader';\nimport SkeletonProofs from 'components/SkeletonProofs';\nimport SkeletonSeals from 'components/SkeletonSeals';\nimport SkeletonSectionTitle from 'components/SkeletonSectionTitle';\nimport SkeletonDescription from 'components/SkeletonDescription';\nimport SkeletonShare from 'components/SkeletonShare';\nimport SkeletonReviews from 'components/SkeletonReviews';\nimport SkeletonMilestones from 'components/SkeletonMilestones';\n\ninterface ProductSkeletonProps {\n matches?: boolean;\n}\n\nconst ProductSkeleton = ({ matches }: ProductSkeletonProps) => {\n const [imgageList] = useState([1, 2, 3, 4, 5]);\n\n return (\n \n \n <>\n \n <>\n \n \n \n \n \n \n {imgageList.map((image, index) => (\n \n ))}\n \n {!matches && }\n {!matches && }\n \n {!matches && (\n \n \n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default ProductSkeleton;\n","import styled from \"styled-components\";\nimport { Text } from \"components/Text\";\nimport { breakpoints } from \"theme/Theme.breackoints\";\nimport { Link } from 'react-router-dom';\n\nexport const WineContent = styled.div``\nexport const WineContentBody = styled.div`\n display: flex;\n justify-content: center;\n gap: 0 4.5vw;\n margin: 0 0 5rem;\n width: 100%;\n max-width: 100%;\n @media screen and (max-width: ${breakpoints.xs}px) {\n margin: 0 0 2.5rem;\n }\n`\nexport const WineContentShare = styled.div`\n width: 2rem;\n flex: 0 0 auto;\n position: relative;\n padding: 8rem 0 0;\n`\n\nexport const WineContentAction = styled.div<{justify?: string; margin?: string;}>`\n display: flex;\n align-items: center;\n justify-content: ${({ justify }) => justify ? justify : \"flex-end\"};\n ${({ margin }) => margin && `margin: ${margin};`}\n`\nexport const WineContentActionBtn = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 2rem;\n display: inline-block;\n cursor: pointer;\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n`\n\nexport const WineContentShareList = styled.div`\n display: flex;\n align-items: center;\n flex-direction: column;\n position: fixed;\n`\nexport const WineContentShareItem = styled.a`\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 2.5rem;\n cursor: pointer;\n &:last-child {\n margin: 0;\n }\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n`\nexport const WineContentBodyContainer = styled.div`\n display: grid;\n max-width: 100%;\n width: 100%;\n grid-template: 1fr / 400px 1fr; \n gap: 0 6.25vw;\n @media screen and (max-width: ${breakpoints.lg}px) {\n gap: 0 3.25vw;\n grid-template: 1fr / 320px 1fr; \n }\n @media screen and (max-width: ${breakpoints.md}px) {\n grid-template: 1fr / 1fr; \n display: flex;\n flex-direction: column;\n }\n`\nexport const WineContentBodyImages = styled.div`\n overflow: hidden;\n padding-bottom: 2.5rem;\n img {\n width: 100%;\n }\n @media screen and (max-width: ${breakpoints.md}px) {\n width: 400px;\n padding-bottom: 2rem;\n margin-bottom: 3rem;\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n width: auto;\n max-width: 100%;\n padding-bottom: 2rem;\n margin-bottom: 3rem;\n }\n`\nexport const WineContentBodyInformation = styled.div<{certificate?: boolean;}>`\n ${({ certificate }) => certificate && `\n display: grid;\n grid-template: 1fr / 1fr 230px;\n gap: 0 1.5rem;\n @media screen and (max-width: ${breakpoints.md}px) {\n grid-template: 1fr / 1fr;\n }\n `}\n`\n\nexport const WineContentTitle = styled(Text)`\n font-size: 3.5rem;\n line-height: 4rem;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 1rem;\n @media screen and (max-width: ${breakpoints.lg}px) {\n font-size: 3rem;\n line-height: 3.5rem;\n }\n @media print {\n font-size: 2.5rem;\n line-height: 3rem;\n }\n`\nexport const WineContentOrganization = styled.div`\n display: flex;\n align-items: center;\n gap: 0 1.5rem;\n`\nexport const WineContentOrganizationImage = styled.img`\n max-height: 2rem;\n`\nexport const WineContentiParagraph = styled(Text)<{maxWidth?: string; margin?: string;}>`\n font-family: ${({ theme }) => theme.fonts.main};\n font-weight: 400;\n font-size: 14px;\n line-height: 21px;\n color: ${({ theme }) => theme.colors.wineGray};\n max-width: ${({ maxWidth }) => maxWidth ? maxWidth : \"auto\"};\n margin: ${({ margin }) => margin ? margin : \"0\"};\n \n`\nexport const WineContentiLink = styled(Link)<{margin?: string;}>`\n font-family: ${({ theme }) => theme.fonts.main};\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.125rem;\n color: ${({ theme }) => theme.colors.wineGray};\n display: inline-block;\n cursor: pointer;\n margin: 0 0 0.25rem;\n ${({ margin }) => margin && `margin: ${margin};`}\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n`\nexport const WineContentiUnLink = styled.span<{margin?: string;}>`\n font-family: ${({ theme }) => theme.fonts.main};\n font-weight: 700;\n font-size: 1.125rem;\n line-height: 1.125rem;\n color: ${({ theme }) => theme.colors.wineGray};\n display: inline-block;\n margin: 0 0 0.25rem;\n ${({ margin }) => margin && `margin: ${margin};`}\n \n`\n\nexport const WineContentLimkWeb = styled.a`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n margin: 0 0 1rem;\n font-family: ${({ theme }) => theme.fonts.main};\n color: ${({ theme }) => theme.colors.winePrimary};\n display: inline-flex;\n align-items: center;\n gap: 0.4rem;\n &:hover {\n color: ${({ theme }) => theme.colors.wineSecondary};\n }\n svg {\n width: 12px;\n }\n`\n\nexport const WineContentiSeparator = styled.div`\n width: 100%;\n max-width: 450px;\n height: 1px;\n background-color: ${({ theme }) => theme.colors.wineBlack};\n margin: 1.5rem 0;\n`\nexport const WineContentFooter = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 90px 0;\n`","import styled from \"styled-components\"\nimport Icon from 'components/Icon';\nimport { Text } from \"components/Text\";\n\nexport const WineContentBodyCertificate = styled.div`\n width: 100%;\n max-width: 100%;\n`\nexport const CertificateInformation = styled.div``\nexport const CertificateLogo = styled.img`\n width: 100%;\n object-fit: cover;\n object-position: center;\n`\nexport const CertificatePrintIcon = styled(Icon)`\n svg {\n width: 24px;\n cursor: pointer;\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n }\n`\nexport const CertificateBottle = styled(Text)`\n font-size: 26px;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 2.5rem; \n`\nexport const CertificateBottleDates = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0 0.5rem;\n`\nexport const CertificateBottleDate = styled(Text)<{withBorder?: boolean;}>`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.wineGray};\n ${({ withBorder, theme }) => withBorder && `\n border-left: 1px solid ${theme.colors.wineGray};\n padding: 0 0 0 0.5rem;\n `}\n span {\n display: inline-block;\n text-transform: uppercase;\n margin: 0 0 0 0.5rem;\n }\n`\n\nexport const CertificatePrintArea = styled.div`\n @media print {\n padding: 1cm;\n font-family: ${({ theme }) => theme.fonts.wine};\n @page { size: landscape; }\n }\n`\n\nexport const CertificateBottleDescriptionTitle = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.wine};\n font-size: 16px;\n line-height: 16px;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 1rem;\n`\nexport const CertificateBottleDescription = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 14px;\n line-height: 18px;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 1rem;\n `\nexport const CertificateBottleDescriptionLink = styled(Text)<{disabled: boolean}>`\n font-family: ${({ theme }) => theme.fonts.wine};\n font-size: 16px;\n line-height: 16px;\n color: ${({ theme }) => theme.colors.winePrimary};\n cursor: pointer;\n display: inline-block;\n &:hover {\n color: ${({ theme }) => theme.colors.wineBlack};\n }\n ${({ disabled, theme}) => disabled && `\n color: ${theme.colors.wineGrayLigth};\n cursor: not-allowed;\n &:hover {\n color: ${theme.colors.wineGrayLigth};\n }\n `}\n`","import React, { useState, useEffect, useRef } from 'react';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ReactToPrint from 'react-to-print';\n//QUERIES\nimport { stepsProductQuery } from 'queries/product';\n//STORE\nimport { AppState } from 'store';\nimport { setMobileNav } from 'store/mobilenav';\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { ProductVars } from 'screens/Product/Product.props';\nimport { ProductData } from 'types/product';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//COMPONENTS\nimport AppLayoutWine from 'module/AppLayoutWine';\nimport Share from 'screens/Wine/components/Share';\nimport Transitions from './components/Transitions';\nimport ProductSkeleton from 'screens/Product/components/ProductSkeleton';\n//STYLES\nimport { AppLayoutWineWrapper } from 'module/AppLayoutWine/AppLayoutWine.styled';\nimport {\n WineContent,\n WineContentAction,\n WineContentBodyInformation,\n WineContentTitle,\n WineContentiSeparator,\n WineContentShareList,\n WineContentShareItem,\n WineContentBody,\n WineContentShare,\n} from 'screens/Wine/Wine.styled';\nimport {\n CertificatePrintIcon,\n CertificateBottle,\n WineContentBodyCertificate,\n CertificateInformation,\n CertificateLogo,\n CertificatePrintArea,\n CertificateBottleDates,\n CertificateBottleDate,\n CertificateBottleDescriptionTitle,\n CertificateBottleDescription,\n CertificateBottleDescriptionLink,\n} from './Certificate.styled';\n\nconst SOCIALS: Record = {\n facebook: 'fb',\n twitter: 'tw',\n instagram: 'in',\n youtube: 'yb',\n linkedin: 'ln',\n};\n\nconst Certificate = () => {\n const { certificateId } = useParams();\n const dispatch = useDispatch();\n const printArea = useRef(null);\n\n const matches = useMediaQuery('only screen and (max-width: 920px)');\n const matchesMd = useMediaQuery('only screen and (max-width: 768px)');\n const matchesXs = useMediaQuery('only screen and (max-width: 575px)');\n\n const [metaInformation, setMetaInformation] = useState({});\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const { data: resStepsProduct, loading, error, refetch } = useQuery<\n ProductData,\n ProductVars\n >(stepsProductQuery, {\n variables: {\n pk: certificateId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idProduct === certificateId)\n ?.short_name\n : '',\n },\n });\n\n useEffect(() => {\n if (\n resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.data\n ) {\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: resStepsProduct.product.data.name,\n description: resStepsProduct.product.data.description,\n image:\n resStepsProduct.product.data.images.length > 0\n ? resStepsProduct.product.data.images[0].url\n : '',\n url: window.location.href,\n });\n }\n }, [resStepsProduct, dispatch]);\n\n return (\n }\n metas={metaInformation}\n errorType={\n resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.error\n }\n errorUrl={\n resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.url\n }\n type=\"organization\"\n id={certificateId}\n >\n \n \n \n {!matchesXs &&\n resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.data &&\n resStepsProduct.product.data.organization &&\n resStepsProduct.product.data.organization.socialChannels &&\n resStepsProduct.product.data.organization.socialChannels.length >\n 0 && (\n \n \n {resStepsProduct.product.data.organization.socialChannels.map(\n (social) => (\n \n {SOCIALS[social.type.toLowerCase()]}\n \n )\n )}\n \n \n )}\n {resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.data &&\n resStepsProduct.product.data.organization && (\n \n \n \n \n \n {resStepsProduct.product.data.name}\n \n {resStepsProduct.product.data.workflow && (\n \n {resStepsProduct.product.data.workflow.name}\n \n )}\n\n {resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.data &&\n resStepsProduct.product.data.steps.length > 0 &&\n resStepsProduct.product.data.steps.filter(\n (step) => !!step.stepDate\n ).length > 0 && (\n \n {resStepsProduct.product.data.steps.map(\n (step, index) => (\n \n {step.name}\n {step.stepDate}\n \n )\n )}\n \n )}\n \n
\n \n Certificado de calidad de Corpinnat\n \n {/* {resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.data && (\n \n {\n resStepsProduct.product.data.workflow\n .description\n }\n \n )} */}\n\n \n Ver registro en blockchain\n \n
\n
\n \n
\n \n {resStepsProduct &&\n resStepsProduct.product &&\n resStepsProduct.product.data &&\n resStepsProduct.product.data.steps.length > 0 && (\n \n )}\n
\n\n \n \n }\n content={() => printArea.current}\n />\n \n
\n )}\n
\n
\n
\n \n );\n};\n\nexport default Certificate;\n","import gql from 'graphql-tag';\n\nexport const lotQuery = gql`\n query lot($pk: String!, $language: String) {\n productLot(id: $pk, language: $language) {\n data {\n id\n pk\n internalId\n isPublic\n createdAt\n reviews {\n edges {\n node {\n createdAt\n id\n title\n name\n email\n comment\n rating\n }\n }\n }\n featuredProofPoints {\n name\n pk\n description\n createdAt\n mediaEvidences {\n name\n url\n type\n }\n shouldShowWidget\n icon {\n value\n icon\n label\n }\n evidences {\n file\n evidenceName\n pk\n }\n conditions {\n value\n type\n typeDisplay\n unit\n }\n verifier {\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n workflow {\n name\n verifier {\n name\n pk\n logo(size: \"250x250\") {\n url\n }\n url\n }\n }\n steps {\n id\n name\n stepDate\n extraFields\n createdAt\n image(size: \"700x700\") {\n url\n }\n internalId\n description\n icon\n }\n reviewStats {\n averageRating\n totalCount\n percentageCountFive\n percentageCountFour\n percentageCountThree\n percentageCountTwo\n percentageCountOne\n }\n journey {\n name\n milestones {\n id\n name\n startDate\n endDate\n internalId\n description\n icon\n location {\n name\n }\n createdAt\n image(size: \"700x700\") {\n url\n }\n proofPoints {\n name\n pk\n shouldShowWidget\n description\n icon {\n value\n icon\n label\n }\n mediaEvidences {\n name\n url\n type\n }\n createdAt\n conditions {\n value\n type\n typeDisplay\n unit\n }\n evidences {\n file\n evidenceName\n pk\n }\n verifier {\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n }\n }\n product(language: $language) {\n name\n description\n internalId\n translationStatus\n pk\n brand\n hideFromOrgMirror\n isSustainable\n tabs {\n pk\n title\n order\n type\n fileList {\n pk\n documents {\n pk\n document\n title\n description\n }\n }\n ingredientList {\n ingredients {\n description\n title\n image\n link\n }\n }\n recommendationList {\n recommendations {\n title\n description\n }\n }\n nutritionFact {\n description\n amountPerServing\n calories\n details\n ingredients\n ingredientsFiltered\n }\n technicalDetail {\n title\n subtitle\n footer\n composition\n principalDetails {\n id\n title\n description\n }\n otherDetails {\n id\n title\n description\n }\n image\n }\n }\n thumbnail(size: \"40x40\") {\n url\n }\n organization {\n name\n pk\n logo(size: \"250x250\") {\n url\n }\n url\n socialChannels {\n handle\n url\n type\n pk\n }\n }\n images {\n id\n url(size: \"266x266\")\n order\n }\n reviews {\n edges {\n node {\n createdAt\n id\n title\n name\n email\n comment\n rating\n }\n }\n }\n reviewStats {\n averageRating\n totalCount\n percentageCountFive\n percentageCountFour\n percentageCountThree\n percentageCountTwo\n percentageCountOne\n }\n }\n }\n error\n url\n }\n }\n`;\n\nexport const stepsLotQuery = gql`\n query lot($pk: String) {\n productLot(id: $pk) {\n data {\n id\n pk\n internalId\n isPublic\n createdAt\n workflow {\n name\n description\n verifier {\n name\n pk\n logo(size: \"250x250\") {\n url\n }\n url\n }\n }\n steps {\n id\n name\n stepDate\n extraFields\n createdAt\n image(size: \"700x700\") {\n url\n }\n internalId\n description\n icon\n }\n product {\n name\n description\n internalId\n pk\n brand\n hideFromOrgMirror\n isSustainable\n thumbnail(size: \"40x40\") {\n url\n }\n organization {\n name\n pk\n logo(size: \"250x250\") {\n url\n }\n url\n socialChannels {\n handle\n url\n type\n pk\n }\n }\n images {\n id\n url(size: \"768x768\")\n order\n }\n }\n }\n error\n url\n }\n }\n`;\n","import _bg from './bg.json';\nimport _ca from './ca.json';\nimport _cs from './cs.json';\nimport _da from './da.json';\nimport _de from './de.json';\nimport _el from './el.json';\nimport _en from './en.json';\nimport _es from './es.json';\nimport _et from './et.json';\nimport _fi from './fi.json';\nimport _fr from './fr.json';\nimport _ga from './ga.json';\nimport _hr from './hr.json';\nimport _hu from './hu.json';\nimport _it from './it.json';\nimport _ja from './ja.json';\nimport _lt from './lt.json';\nimport _lv from './lv.json';\nimport _mt from './mt.json';\nimport _nl from './nl.json';\nimport _pl from './pl.json';\nimport _pt from './pt.json';\nimport _ro from './ro.json';\nimport _sk from './sk.json';\nimport _sl from './sl.json';\nimport _sv from './sv.json';\nimport { IBlockChain, ITranslations } from './Type';\n\nconst blockChainTranslations: ITranslations = {\n en: _en,\n es: _es,\n ca: _ca,\n fr: _fr,\n pt: _pt,\n de: _de,\n it: _it,\n bg: _bg,\n cs: _cs,\n da: _da,\n el: _el,\n et: _et,\n fi: _fi,\n ga: _ga,\n hr: _hr,\n hu: _hu,\n ja: _ja,\n lt: _lt,\n lv: _lv,\n mt: _mt,\n nl: _nl,\n pl: _pl,\n ro: _ro,\n sk: _sk,\n sl: _sl,\n sv: _sv,\n};\n\nconst getTranslation = (lang: string, key: keyof IBlockChain): string => {\n const translations = blockChainTranslations[lang as keyof ITranslations];\n if (!translations) {\n console.warn(`Language ${lang} not found. Falling back to English.`);\n return blockChainTranslations.en[key] || key;\n }\n return translations[key] || key;\n};\n\nexport { blockChainTranslations, getTranslation };\n","import styled, { css, keyframes } from 'styled-components';\nimport { xs, sm, md } from 'theme/Theme.breackoints';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nconst TEXT_COMMON_CSS_WHITE = css`\n font-size: 1rem;\n color: ${({ theme }) => theme.colors.white};\n font-family: 'Roboto Mono', monospace;\n`;\n\nconst pulse = keyframes`\n 0% {\n transform: scale(0.95);\n opacity: 0.7;\n }\n\n 70% {\n transform: scale(1.85);\n opacity: 0;\n }\n\n 100% {\n transform: scale(0.95);\n opacity: 0;\n }\n`;\n\nconst pulseSee = keyframes`\n 0% {\n transform: scale(0.95);\n }\n\n 70% {\n transform: scale(1.15);\n }\n\n 100% {\n transform: scale(0.95);\n }\n`;\n\nexport const BlockchainDetailModalContainer = styled.div`\n padding: 0 0 1.5rem;\n`;\nexport const BlockchainDetailModalHeaderContainer = styled.div`\n width: 100%;\n border-bottom: 1px solid #e4e4e4;\n padding-bottom: 2rem;\n margin-bottom: 2rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n ${sm`\n flex-direction: column;\n align-items: flex-start;\n `}\n`;\nexport const BlockchainDetailModalHeaderName = styled(Text)`\n ${TEXT_COMMON_CSS_WHITE};\n text-transform: uppercase;\n font-weight: bold;\n display: flex;\n align-items: center;\n ${sm`\n width: 100%;\n padding-bottom: 25px;\n margin-bottom: 25px;\n border-bottom: 1px solid ${({ theme }) => theme.colors.white};\n `}\n`;\nexport const BlockchainDetailModalHeaderIcon = styled.img`\n width: 2rem;\n height: 2rem;\n margin: 0 1rem 0 0;\n`;\nexport const BlockchainDetailModalHeaderData = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n ${sm`\n width: 100%;\n display: grid;\n grid-template: 1fr/1fr 1fr;\n grid-gap: 20px;\n justify-content: flex-start;\n `}\n`;\nexport const BlockchainDetailModalHeaderDataBlock = styled.div`\n margin: 0 3rem 0 0;\n &:last-child {\n margin: 0;\n }\n`;\nexport const BlockchainDetailModalHeaderDataName = styled(Text)`\n ${TEXT_COMMON_CSS_WHITE};\n font-size: 0.875rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n text-transform: uppercase;\n font-weight: bold;\n`;\nexport const BlockchainDetailModalHeaderDataNumber = styled(Text)`\n ${TEXT_COMMON_CSS_WHITE};\n font-size: 2rem;\n line-height: 2rem;\n font-weight: bold;\n margin: 0 0 0.5rem;\n`;\n\nexport const BlockchainDetailModalContentContainer = styled.div`\n display: grid;\n grid-template: 1fr 1fr / 1fr 1fr 1fr;\n grid-template-areas: 'areaone areatwo areathree' ' areafour areatwo areathree';\n grid-gap: 1.5rem;\n margin: 0 0 2rem;\n ${md`\n grid-template: 1fr / 1fr 1fr;\n grid-template-areas: 'areaone areatwo' 'areafour areatwo' 'areathree areathree';\n `}\n ${sm`\n grid-template: 1fr / 1fr;\n grid-template-areas: 'areaone' 'areathree' 'areatwo' 'areafour';\n `}\n`;\nexport const BlockchainDetailModalContentGridItem = styled.div<{\n gridArea?: string;\n}>`\n ${({ gridArea }) =>\n gridArea &&\n `\n grid-area: ${gridArea};\n `}\n`;\nexport const BlockchainDetailModalContentGrid = styled.div<{\n separate?: boolean;\n}>`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n grid-gap: 0 1rem;\n ${({ separate }) =>\n separate &&\n `\n margin: 0 0 1.125rem;\n `}\n`;\nexport const BlockchainDetailModalContentWrapper = styled.div<{\n separate?: boolean;\n}>`\n ${({ separate }) =>\n separate &&\n `\n margin: 0 0 1.125rem;\n `}\n`;\nexport const BlockchainDetailModalContentTitle = styled(Text)`\n ${TEXT_COMMON_CSS_WHITE};\n font-weight: bold;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.fontSecondary};\n font-size: 0.875rem;\n line-height: 0.875rem;\n margin: 0 0 0.75rem;\n`;\nexport const BlockchainDetailModalContentLabel = styled(Text)`\n ${TEXT_COMMON_CSS_WHITE};\n font-weight: bold;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.fontSecondary};\n font-size: 0.75rem;\n line-height: 0.75rem;\n margin: 0 0 0.5rem;\n ${xs`\n font-size: 0.625rem;\n line-height: 0.625rem;\n `}\n`;\nexport const BlockchainDetailModalContentText = styled(Text)<{\n separate?: boolean;\n}>`\n ${TEXT_COMMON_CSS_WHITE};\n line-height: 1rem;\n text-transform: capitalize;\n word-break: break-all;\n ${({ separate }) =>\n separate &&\n `\n margin: 0 0 0.75rem;\n `}\n`;\nexport const BlockchainDetailModalContentSeparator = styled.div`\n margin-bottom: 1.5rem;\n padding-bottom: 1.5rem;\n border-bottom: 1px solid ${({ theme }) => theme.colors.white};\n`;\nexport const BlockchainDetailModalCondition = styled.div`\n margin: 0 0 0.75rem;\n`;\nexport const BlockchainDetailModalClickElement = styled.div`\n color: ${({ theme }) => theme.colors.backgroundGrayLight};\n cursor: pointer;\n display: inline-block;\n font-size: 0.75rem;\n`;\n\nexport const BlockchainDetailModalLoadingContainer = styled.div`\n width: 4.7rem;\n height: 4.7rem;\n position: relative;\n margin: 18.75rem auto;\n`;\nexport const BlockchainDetailModalLoadingImageSee = styled.img`\n position: absolute;\n width: 150px;\n animation: ${pulseSee} 2s infinite;\n z-index: 2;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n`;\nexport const BlockchainDetailModalLoadingImagePulse = styled.img`\n width: 150px;\n position: absolute;\n animation: ${pulse} 2s infinite;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n`;\n\nexport const BlockchainDetailModalTable = styled.ul`\n display: grid;\n grid-template: 1fr / 90px 230px 85px;\n grid-gap: 15px;\n align-items: center;\n margin: 0 0 0.25rem;\n ${md`\n grid-template: 1fr / 90px 1fr 85px;\n `}\n ${xs`\n grid-template: 1fr/50px minmax(106px,1fr) 65px;\n grid-gap: 10px;\n `}\n`;\nexport const BlockchainDetailModalTableHead = styled.li`\n ${TEXT_COMMON_CSS_WHITE};\n font-weight: bold;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.fontSecondary};\n font-size: 0.75rem;\n line-height: 0.75rem;\n margin: 0 0 0.5rem;\n ${xs`\n font-size: 0.625rem;\n line-height: 0.625rem;\n `}\n`;\n\nexport const BlockchainDetailModalBlock = styled.div`\n display: grid;\n grid-template: 1fr / 90px 230px 85px;\n grid-gap: 15px;\n align-items: center;\n padding-bottom: 12px;\n margin-bottom: 12px;\n border-bottom: 2px solid #fcfcfc30;\n word-break: break-all;\n ${xs`\n grid-template: 1fr/50px minmax(106px,1fr) 65px;\n grid-gap: 10px;\n padding-bottom: 8px;\n margin-bottom: 8px;\n `}\n`;\n\nexport const BlockchainDetailModalBlockText = styled.p`\n ${TEXT_COMMON_CSS_WHITE};\n word-break: break-all;\n line-height: 1rem;\n text-transform: capitalize;\n margin: 0;\n ${xs`\n font-size: 0.75rem;\n line-height: 0.75rem;\n `}\n`;\nexport const BlockchainDetailModalBlockDate = styled.div`\n ${TEXT_COMMON_CSS_WHITE};\n position: relative;\n text-transform: uppercase;\n line-height: 1rem;\n ${xs`\n font-size: 0.75rem;\n line-height: 0.75rem;\n `}\n`;\nexport const BlockchainDetailModalBlockTime = styled.div`\n display: block;\n position: absolute;\n font-size: 12px;\n z-index: 2;\n line-height: 12px;\n background: ${({ theme }) => theme.colors.black};\n bottom: -18px;\n padding: 0 10px;\n left: -10px;\n ${xs`\n font-size: 0.5rem;\n line-height: 0.5rem;\n `}\n`;\nexport const BlockchainDetailModalButton = styled.button`\n outline: none;\n transition: all 0.3s ease-in-out;\n border: 2px solid ${({ theme }) => theme.colors.white};\n background-color: transparent;\n color: ${({ theme }) => theme.colors.white};\n padding: 1rem 2rem;\n min-width: 200px;\n font-size: 1rem;\n line-height: 1.125rem;\n font-weight: bold;\n &:hover {\n background-color: ${({ theme }) => theme.colors.white};\n color: ${({ theme }) => theme.colors.black};\n }\n`;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\n\n//ASSETS\nimport BlockchainIcon from 'assets/images/blockchain.png';\n\n//STORE\nimport { AppState } from 'store';\n\n//COMPONENTS\nimport CountUp from 'react-countup';\n\n//STYLED\nimport { getTranslation } from 'i18n/languages/blockchainModal';\nimport {\n BlockchainDetailModalHeaderContainer,\n BlockchainDetailModalHeaderData,\n BlockchainDetailModalHeaderDataBlock,\n BlockchainDetailModalHeaderDataName,\n BlockchainDetailModalHeaderDataNumber,\n BlockchainDetailModalHeaderIcon,\n BlockchainDetailModalHeaderName,\n} from './BlockchainDetailModal.styled';\n\nconst BlockchainDetailModalHeader = ({\n certLang = null,\n}: {\n certLang?: string | null;\n}) => {\n const { t } = useTranslation('modalBlockChain');\n\n const { blockStats } = useSelector((state: AppState) => state.blockStats);\n const { proof, isStatic } = useSelector(\n (state: AppState) => state.blockchainDetailModal\n );\n\n return (\n \n \n \n {certLang != null\n ? getTranslation(certLang, 'blockChainRecordingOf')\n : t('content.blockChainRecordingOf')}{' '}\n {isStatic ? 'CERTIFICADO CORPINNAT' : proof?.name}\n \n \n \n \n {blockStats.data &&\n blockStats.data.blocknitiveStats &&\n blockStats.data.blocknitiveStats.blockCount ? (\n \n ) : (\n 0\n )}\n \n \n {certLang != null\n ? getTranslation(certLang, 'blocks')\n : t('content.blocks')}\n \n \n \n \n {blockStats.data &&\n blockStats.data.blocknitiveStats &&\n blockStats.data.blocknitiveStats.transactionsCount ? (\n \n ) : (\n 0\n )}\n \n \n {certLang != null\n ? getTranslation(certLang, 'transactions')\n : t('content.transactions')}\n \n \n \n \n );\n};\n\nexport default BlockchainDetailModalHeader;\n","import styled from 'styled-components';\nimport { xs, sm, md } from 'theme/Theme.breackoints';\n\nexport const HashPlaceholderContainer = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n cursor: help;\n text-transform: uppercase;\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.white};\n font-family: 'Roboto Mono', monospace;\n`;\n\nexport const HashPlaceholderShow = styled.span`\n ${xs`\n font-size: 0.75rem;\n line-height: 0.75rem;\n word-break: initial;\n `}\n`;\nexport const HashPlaceholderColorList = styled.div`\n display: flex;\n align-items: center;\n position: relative;\n cursor: help;\n text-transform: uppercase;\n`;\n\nexport const HashPlaceholderColorContainer = styled.span`\n width: 3px;\n height: 1.25rem;\n display: inline-block;\n ${md`\nwidth: 5px;\n `}\n ${sm`\n width: 3px;\n `}\n ${xs`\n width: 2px;\n `}\n`;\n\nexport const HashPlaceholderToolTipContainer = styled.div<{\n isVisible: boolean;\n}>`\n position: absolute;\n border-radius: 5px;\n background: hsla(0, 0%, 100%, 0.8);\n color: #100316;\n padding: 10px;\n max-width: 200px;\n font-size: 12px;\n opacity: 0;\n top: -80px;\n left: 0;\n right: 0;\n margin: 0 auto;\n cursor: help;\n visibility: hidden;\n\n ${({ isVisible }) =>\n isVisible &&\n `\n opacity: 1;\n visibility: visible;\n z-index: 20;\n `}\n\n &::before {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n height: 0;\n width: 0;\n margin-left: -6px;\n border: solid transparent;\n border-top: solid hsla(0, 0%, 100%, 0.8);\n border-width: 8px 6px;\n }\n`;\n","import React from 'react';\n\n//STYLES\nimport { HashPlaceholderColorContainer } from './HashPlaceholder.styled';\n\ninterface HashPlaceholderColorProps {\n color: string;\n}\n\nconst HashPlaceholderColor = ({ color }: HashPlaceholderColorProps) => {\n let styles = { backgroundColor: color };\n\n return (\n \n );\n};\n\nexport default HashPlaceholderColor;\n","import React from 'react';\n\n//STYLES\nimport { HashPlaceholderToolTipContainer } from './HashPlaceholder.styled';\n\ninterface HashPlaceholderToolTipProps {\n taxId: string;\n isVisible: boolean;\n}\n\nconst HashPlaceholderToolTip = ({\n taxId,\n isVisible,\n}: HashPlaceholderToolTipProps) => {\n return (\n \n {taxId}\n \n );\n};\n\nexport default HashPlaceholderToolTip;\n","import React, { useState, useEffect, useRef } from 'react';\n\n//PROPS TYPE\nimport { HashPlaceholderProps } from './HashPlaceholder.props';\n\n//COMPONENTS\nimport HashPlaceholderColor from './HashPlaceholderColor';\nimport HashPlaceholderToolTip from './HashPlaceholderToolTip';\n\n//STYLES\nimport {\n HashPlaceholderContainer,\n HashPlaceholderShow,\n HashPlaceholderColorList,\n} from './HashPlaceholder.styled';\n\nconst HashPlaceholder = ({ taxId }: HashPlaceholderProps) => {\n const [toolTipVisible, setToolTipVisible] = useState(false);\n\n let $colorList = useRef(null);\n\n useEffect(() => {\n if ($colorList.current) {\n $colorList.current.addEventListener('mouseenter', () => {\n setToolTipVisible(true);\n });\n $colorList.current.addEventListener('mouseleave', () => {\n setToolTipVisible(false);\n });\n }\n }, []);\n\n const COLORS: any = {\n 1: '#CEDDF4',\n 2: '#8298D5',\n 3: '#4E63A5',\n 4: '#5A3B86',\n 5: '#651366',\n 6: '#861761',\n 7: '#A71A5B',\n 8: '#C71D55',\n 9: '#E7204E',\n 0: '#E33B73',\n a: '#B55C92',\n b: '#EF6B8A',\n c: '#F76E2A',\n d: '#F49A18',\n e: '#F0C505',\n f: '#FCDF5F',\n g: '#FDEFAF',\n h: '#DCE097',\n i: '#BBD07F',\n j: '#9AC067',\n k: '#78B04E',\n l: '#3CA673',\n m: '#1EA185',\n n: '#009B97',\n o: '#67bcc6',\n p: '#39dedf',\n q: '#0AFFF7',\n r: '#ADFFFC',\n s: '#D6FFFE',\n t: '#7FEAF0',\n u: '#1BD8E3',\n v: '#2CB1CE',\n w: '#3D8ABA',\n x: '#3C6193',\n y: '#3B376C',\n z: '#312150',\n };\n\n let numbersInternal = taxId.substring(2, taxId.length - 2).split('');\n\n return (\n \n {taxId.substring(0, 2)}\n \n \n {numbersInternal.length > 0 &&\n numbersInternal.map((taxId, index) => {\n return ;\n })}\n \n \n {taxId.substring(taxId.length - 2, taxId.length)}\n \n \n );\n};\n\nexport default HashPlaceholder;\n","import React, { useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport momment from 'moment';\n\n//STORE\nimport { AppState } from 'store';\n\n//PROPS TYPE\nimport { ProofBlock } from 'types/blocknitive';\nimport { AppHeaderType } from 'module/AppHeader/AppHeader.props';\n\n//COMPONENTS\nimport HashPlaceholder from 'components/HashPlaceholder';\n\n//STYLES\nimport {\n BlockchainDetailModalContentContainer,\n BlockchainDetailModalContentGridItem,\n BlockchainDetailModalContentGrid,\n BlockchainDetailModalContentWrapper,\n BlockchainDetailModalContentTitle,\n BlockchainDetailModalContentLabel,\n BlockchainDetailModalContentText,\n BlockchainDetailModalContentSeparator,\n BlockchainDetailModalCondition,\n BlockchainDetailModalTable,\n BlockchainDetailModalTableHead,\n BlockchainDetailModalBlock,\n BlockchainDetailModalBlockText,\n BlockchainDetailModalBlockDate,\n BlockchainDetailModalBlockTime,\n BlockchainDetailModalClickElement,\n} from './BlockchainDetailModal.styled';\n\ninterface BlockchainDetailModalContentProps {\n proofBlockData: ProofBlock;\n type: AppHeaderType;\n}\n\nconst BlockchainDetailModalContent = ({\n proofBlockData,\n type,\n}: BlockchainDetailModalContentProps) => {\n const { t } = useTranslation('modalBlockChain');\n\n const location = useLocation();\n\n const { lotData } = useSelector(\n (state: AppState) => state.blockchainDetailModal\n );\n const { blockStats } = useSelector((state: AppState) => state.blockStats);\n const { product } = useSelector((state: AppState) => state.product);\n const { organization } = useSelector((state: AppState) => state.organization);\n\n const [isOpen, setIsOpen] = useState(false);\n // const [proofOne, proofTwo, ...conditions] = proof.conditions;\n\n const showMoreConditions = () => {\n setIsOpen(!isOpen);\n };\n\n return (\n \n \n \n \n {t('content.function')}\n \n \n {t('content.name')}\n \n \n getProof\n \n \n \n \n \n \n {t('content.createAt')}\n \n \n {t('content.time')}\n \n \n {momment(lotData.createdAt).format('h:mm:ss a')}\n \n \n {t('content.date')}\n \n \n {momment(lotData.createdAt).format('DD/MM/YY')}\n \n \n \n \n \n {lotData && (\n \n \n {t('content.productName')}\n \n \n {lotData.pk}\n \n \n )}\n {proofBlockData && proofBlockData.transactionId && (\n \n \n {t('content.taxId')}\n \n \n {proofBlockData.transactionId}\n \n \n )}\n\n {lotData && (\n \n \n {t('content.productId')}\n \n \n {lotData.pk}\n \n \n )}\n\n \n \n \n {proofBlockData &&\n proofBlockData.blocknitive &&\n proofBlockData.blocknitive.header &&\n proofBlockData.blocknitive.data.length > 0 &&\n proofBlockData.blocknitive.data[0].header && (\n <>\n \n {t('content.hasgProofPoint')}\n \n \n \n {t('content.height')}\n \n \n {t('content.hash')}\n \n \n {t('content.minedOn')}\n \n \n \n \n {proofBlockData.blockId}\n \n \n \n {momment(\n proofBlockData.blocknitive.data[0].header.timestamp\n ).format('YY/MM/DD')}\n \n {momment(\n proofBlockData.blocknitive.data[0].header.timestamp\n ).format('h:mm a')}\n \n \n \n \n \n )}\n\n \n {t('content.lastestBlocks')}\n \n \n \n {t('content.height')}\n \n \n {t('content.hash')}\n \n \n {t('content.minedOn')}\n \n \n {blockStats &&\n blockStats.data &&\n blockStats.data.blocknitiveStats &&\n blockStats.data.blocknitiveStats.blocks &&\n blockStats.data.blocknitiveStats.blocks.length > 0 ? (\n <>\n {blockStats.data.blocknitiveStats.blocks.map(\n ({ header: { dataHash, number }, data }, index: any) => {\n let timestampValue = data[0].header.timestamp;\n return (\n \n \n {number}\n \n \n \n {momment(timestampValue).format('YY/MM/DD')}\n \n {momment(timestampValue).format('h:mm a')}\n \n \n \n );\n }\n )}\n \n ) : (\n \n {t('content.anyLastOperation')}\n \n )}\n \n \n \n \n \n {t('content.response')}\n \n \n {t('content.status')}\n \n \n 200\n \n \n \n \n {t('content.results')}\n \n \n {t('content.verification')}\n \n \n {t('content.valid')}\n \n \n \n \n \n );\n};\n\nexport default BlockchainDetailModalContent;\n","import React from 'react';\n\n//ASSETS\nimport LogoImage from 'assets/images/brand-icon-white.png';\n\n//STYLES\nimport {\n BlockchainDetailModalLoadingContainer,\n BlockchainDetailModalLoadingImageSee,\n BlockchainDetailModalLoadingImagePulse,\n} from './BlockchainDetailModal.styled';\n\nconst BlockchainDetailModalLoading = () => {\n return (\n \n \n \n \n );\n};\n\nexport default BlockchainDetailModalLoading;\n","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useQuery } from '@apollo/react-hooks';\n\n//QUERIES\nimport { blockProofPointQueryLot } from 'queries/blocknitive';\n\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/blockchainDetailModal';\n\n//PROPS TYPE\nimport { BlockchainDetailModalProps } from './BlockchainDetailModal.props';\n\n//COMPONETNS\nimport Modal from 'components/Modal';\nimport BlockchainDetailModalHeader from './BlockchainDetailModalHeader';\nimport BlockchainDetailModalContentLot from './BlockchainDetailModalContentLot';\nimport BlockchainDetailModalLoading from './BlockchainDetailModalLoading';\n\n//STYLED\nimport { ModalContent } from 'components/Modal/Modal.styled';\nimport {\n BlockchainDetailModalContainer,\n BlockchainDetailModalButton,\n} from './BlockchainDetailModal.styled';\n\nconst BlockchainDetailModal = ({ type, wine }: BlockchainDetailModalProps) => {\n const { t } = useTranslation('modalBlockChain');\n\n const dispatch = useDispatch();\n\n const { isOpen, proof } = useSelector(\n (state: AppState) => state.blockchainDetailModal\n );\n\n const { data: proofBlockData, loading } = useQuery(blockProofPointQueryLot, {\n variables: { pk: proof && proof.pk },\n });\n\n const handleCloseModal = useCallback(() => {\n dispatch(closeModal());\n }, [dispatch]);\n\n return (\n \n \n \n {loading ? (\n \n ) : (\n <>\n \n {proofBlockData && (\n \n )}\n\n \n {t('content.back')}\n \n \n )}\n \n \n \n );\n};\n\nexport default BlockchainDetailModal;\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ReactToPrint from 'react-to-print';\n//QUERIES\nimport { stepsLotQuery } from 'queries/lot';\n//STORE\nimport { AppState } from 'store';\nimport { setMobileNav } from 'store/mobilenav';\nimport { openModal as openBlockchainDetailModal } from 'store/blockchainDetailModal';\n//PROPS TYPE\nimport { LotData } from 'types/lot';\nimport { LotVars } from 'screens/Lot/Lot.props';\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//COMPONENTS\nimport BlockchainDetailModalLot from 'components/BlockchainDetailModal/BlockchainDetailModalLot';\nimport AppLayoutWine from 'module/AppLayoutWine';\nimport Share from 'screens/Wine/components/Share';\nimport Transitions from './components/Transitions';\nimport ProductSkeleton from 'screens/Product/components/ProductSkeleton';\n//STYLES\nimport { AppLayoutWineWrapper } from 'module/AppLayoutWine/AppLayoutWine.styled';\nimport {\n WineContent,\n WineContentAction,\n WineContentBodyInformation,\n WineContentTitle,\n WineContentiSeparator,\n WineContentShareList,\n WineContentShareItem,\n WineContentBody,\n WineContentShare,\n} from 'screens/Wine/Wine.styled';\nimport {\n CertificatePrintIcon,\n CertificateBottle,\n WineContentBodyCertificate,\n CertificateInformation,\n CertificateLogo,\n CertificatePrintArea,\n CertificateBottleDates,\n CertificateBottleDate,\n CertificateBottleDescriptionTitle,\n CertificateBottleDescription,\n CertificateBottleDescriptionLink,\n} from './Certificate.styled';\nimport { ProductExtraField } from 'types/product';\nimport moment from 'moment';\n\nconst SOCIALS: Record = {\n facebook: 'fb',\n twitter: 'tw',\n instagram: 'in',\n youtube: 'yb',\n linkedin: 'ln',\n};\n\nconst Certificate = () => {\n const { certificateId } = useParams();\n const dispatch = useDispatch();\n const printArea = useRef(null);\n\n const matches = useMediaQuery('only screen and (max-width: 920px)');\n const matchesMd = useMediaQuery('only screen and (max-width: 768px)');\n const matchesXs = useMediaQuery('only screen and (max-width: 575px)');\n\n const [metaInformation, setMetaInformation] = useState({});\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n const { blockStats } = useSelector((state: AppState) => state.blockStats);\n\n const { data: resStepsProduct, loading, error, refetch } = useQuery<\n LotData,\n LotVars\n >(stepsLotQuery, {\n variables: {\n pk: certificateId,\n },\n });\n\n const lotData = resStepsProduct && resStepsProduct.productLot.data;\n const lotResult = resStepsProduct && resStepsProduct.productLot;\n const stepsWithDates =\n lotData &&\n lotData.steps.length > 0 &&\n lotData.steps\n .filter(\n (step) =>\n step.name.toLowerCase().includes('tir') ||\n step.name.toLowerCase().includes('deg')\n )\n .map((step) => {\n const extraFields =\n !!step.extraFields && JSON.parse(step.extraFields).length > 0\n ? JSON.parse(step.extraFields)\n : [];\n const findLookExtrafield: ProductExtraField | null = extraFields.find(\n (item: ProductExtraField) =>\n item.internal_id === 'tiraje_date' ||\n item.internal_id === 'deguelle_date'\n );\n\n if (!!findLookExtrafield) {\n return `${findLookExtrafield.name.replace('Fecha de ', '')} ${moment(\n findLookExtrafield.value\n ).format('MM / YYYY')}`;\n }\n return step.name;\n });\n\n useEffect(() => {\n if (lotData && lotData.product) {\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: lotData.product.name,\n description: lotData.product.description,\n image:\n lotData.product.images.length > 0\n ? lotData.product.images[0].url\n : '',\n url: window.location.href,\n });\n }\n }, [lotData, dispatch]);\n\n const handleOpenBlochainDetailModal = useCallback(() => {\n console.log('here');\n if (lotData) {\n dispatch(\n openBlockchainDetailModal({\n lotId: lotData.pk,\n lotData: lotData,\n })\n );\n }\n }, [dispatch, lotData]);\n\n return (\n }\n metas={metaInformation}\n errorType={lotResult && lotResult.error}\n errorUrl={lotResult && lotResult.url}\n type=\"organization\"\n id={certificateId}\n >\n \n \n \n {!matchesXs &&\n lotData &&\n lotData.product &&\n lotData.product.organization &&\n lotData.product.organization.socialChannels &&\n lotData.product.organization.socialChannels.length > 0 && (\n \n \n {lotData.product.organization.socialChannels.map(\n (social) => (\n \n {SOCIALS[social.type.toLowerCase()]}\n \n )\n )}\n \n \n )}\n {lotData && lotData.product && lotData.product.organization && (\n \n \n \n \n \n {lotData.product.name}\n \n {lotData.workflow && (\n \n {lotData.workflow.name}\n \n )}\n \n \n {`Identificador único ${lotData.internalId}`}\n \n {stepsWithDates && stepsWithDates.length > 0 && (\n \n {stepsWithDates.map((step, index) => (\n \n {step}\n \n ))}\n \n )}\n
\n \n
\n {lotData && (\n \n Certificado de calidad de{' '}\n {lotData.workflow.verifier.name}\n \n )}\n\n {lotData && (\n \n {lotData.workflow.description}\n \n )}\n\n 0\n }\n onClick={() => {\n if (!blockStats.errors) {\n handleOpenBlochainDetailModal();\n }\n }}\n >\n Ver registro en blockchain\n \n
\n \n \n \n \n {lotData && lotData.steps.length > 0 && (\n \n )}\n \n\n \n \n }\n content={() => printArea.current}\n />\n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default Certificate;\n","import gql from 'graphql-tag';\n\nexport const qrQuery = gql`\n query qrData($pk: String!) {\n qrData(pk: $pk) {\n data {\n objectId\n type\n model\n certificateId\n }\n error\n }\n }\n`;\n","import { useQuery } from '@apollo/react-hooks';\nimport React from 'react';\nimport { Navigate, useParams } from 'react-router-dom';\n//PROPS TYPE\nimport { QrData } from 'types/qr';\nimport { QrVars } from './CheckIt.props';\n//QUERIES\nimport Loader from 'components/Loader';\nimport { qrQuery } from 'queries/qr';\nimport Error404 from 'screens/Error404';\n\nconst CheckIt = () => {\n const { checkId } = useParams();\n\n const { data: resQr, loading } = useQuery(qrQuery, {\n variables: {\n pk: checkId,\n },\n });\n\n if (\n resQr &&\n resQr.qrData &&\n resQr.qrData.data &&\n resQr.qrData.data.type === 'wine' &&\n resQr.qrData.data.model === 'product'\n ) {\n return (\n \n );\n }\n if (\n resQr &&\n resQr.qrData &&\n resQr.qrData.data &&\n resQr.qrData.data.type === 'wine' &&\n resQr.qrData.data.model === 'lot'\n ) {\n return (\n \n );\n }\n if (\n resQr &&\n resQr.qrData &&\n resQr.qrData.data &&\n resQr.qrData.data.type === 'product' &&\n resQr.qrData.data.model === 'product'\n ) {\n return ;\n }\n if (\n resQr &&\n resQr.qrData &&\n resQr.qrData.data &&\n resQr.qrData.data.type === 'product' &&\n resQr.qrData.data.model === 'lot'\n ) {\n return ;\n }\n if (resQr && resQr.qrData && resQr.qrData.error === 'qr_not_used') {\n return ;\n }\n if (resQr && resQr.qrData && resQr.qrData.error === 'invalid_uuid') {\n return ;\n }\n\n return <>{loading ? : };\n};\n\nexport default CheckIt;\n","import { useLocation } from 'react-router-dom';\n\nexport default function useGetQuery() {\n return new URLSearchParams(useLocation().search);\n}\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const AppMobileMenuContainer = styled.div<{\n active: boolean;\n}>`\n display: none;\n position: fixed;\n top: 0;\n bottom: 0;\n left: -100%;\n width: 100%;\n max-width: 100vw;\n max-height: 100vh;\n height: 100%;\n z-index: 9999;\n background-color: ${({ theme }) => theme.colors.brand};\n padding: 1.5rem 1.5rem 2.5rem;\n transition: all 0.25s ease-in-out;\n ${sm`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n ${({ active }) =>\n active &&\n `\n left: 0;\n `}\n `}\n`;\n\nexport const AppMobileMenuHeader = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n`;\nexport const AppMobileMenuBrand = styled.div`\n width: 4rem;\n`;\nexport const AppMobileMenuLogo = styled.img`\n max-width: 100%;\n`;\nexport const AppMobileMenuClose = styled.div`\n width: 4rem;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n stroke: ${({ theme }) => theme.colors.white};\n }\n`;\n\nexport const AppMobileMenuContent = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n`;\nexport const AppMobileMenuLink = styled.a<{\n textTransform?: 'uppercase' | 'initial';\n margin?: string;\n}>`\n font-weight: bold;\n color: ${({ theme }) => theme.colors.white};\n ${({ margin = 0 }) => margin && `margin: ${margin}`};\n`;\n\nexport const AppMobileMenuFooter = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n`;\n\nexport const AppMobileMenuSocial = styled.div`\n max-width: 12rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n ${sm`\n width: 100%;\n margin: 0 0 2rem;\n `}\n`;\nexport const AppMobileMenuNetwork = styled.a`\n svg {\n color: white;\n width: 1.25rem;\n }\n`;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//ASSETS\nimport LogoImage from 'assets/images/logo.png';\n\n//PROPS-TYPE\nimport { AppMobileMenuProps, SocialLinksProps } from './AppMobileMenu.props';\n\n//COMPONENTS\nimport TranslateSelector from 'components/TranslateSelector';\nimport Icon from 'components/Icon';\n\n//STYLED\nimport {\n AppMobileMenuContainer,\n AppMobileMenuHeader,\n AppMobileMenuBrand,\n AppMobileMenuLogo,\n AppMobileMenuClose,\n AppMobileMenuContent,\n AppMobileMenuLink,\n AppMobileMenuFooter,\n AppMobileMenuSocial,\n AppMobileMenuNetwork,\n} from './AppMobileMenu.styled';\n\nconst SOCIAL_LINKS: SocialLinksProps[] = [\n {\n name: 'facebook',\n link: 'https://www.facebook.com/swearitsoftware/',\n },\n {\n name: 'instagram',\n link: 'https://www.instagram.com/swearit_/',\n },\n {\n name: 'youtube',\n link: 'https://www.youtube.com/channel/UC-smPk49x3o90Di00egGQPg',\n },\n {\n name: 'linkedin',\n link: 'https://www.linkedin.com/in/swearit/',\n },\n {\n name: 'twitter',\n link: 'https://twitter.com/swearit_',\n },\n];\n\nconst AppMobileMenu = ({\n active,\n toggleMenu,\n type,\n id,\n}: AppMobileMenuProps) => {\n const { t } = useTranslation('header');\n\n return (\n \n \n \n \n \n \n toggleMenu()}>\n \n \n \n\n \n \n {t('content.aboutSwearit')}\n \n \n {t('content.helpCenter')}\n \n \n\n \n \n {SOCIAL_LINKS.map((network) => (\n \n \n \n ))}\n \n \n hello@swearit.io\n \n \n {t('content.legal')}\n \n \n \n );\n};\n\nexport default AppMobileMenu;\n","import styled from 'styled-components';\n\nexport const SocialShareLink = styled.a`\n width: 2rem;\n height: 2rem;\n background-color: ${({ theme }) => theme.colors.brand};\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 9999px;\n margin: 0 0.75rem 1rem 0;\n transition: all 0.25s ease-in-out;\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 10%);\n &:last-child {\n margin: 0 0 1rem;\n }\n &:hover {\n background-color: ${({ theme }) => theme.colors.active};\n transform: translateY(-0.25rem);\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 20%);\n }\n svg {\n width: 1rem;\n color: ${({ theme }) => theme.colors.white};\n }\n`;\n\nexport const SocialShareCopiedtext = styled.p`\n margin: 0;\n color: ${({ theme }) => theme.colors.brand};\n`;\nexport const SocialShareContainer = styled.div<{ mobile?: boolean }>`\n display: flex;\n align-items: center;\n margin: 0 0 1rem;\n flex-wrap: wrap;\n ${({ mobile }) =>\n mobile &&\n `\n display: grid;\n grid-template: 3.25rem / 1fr;\n grid-auto-rows: 3.25rem;\n align-items: center;\n justify-content: center;\n grid-gap:0;\n margin: 0;\n ${SocialShareLink} {\n align-self: center;\n justify-self: center;\n margin: 0 ;\n }\n `}\n`;\n","import React, { useMemo, MouseEvent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport ReactGA from 'react-ga4';\nimport useClipboard from 'react-use-clipboard';\n\n//PROPS TYPE\nimport { OrganizationSocial } from 'types/organization';\nimport { SocialShareProps } from './SocialShare.props';\nimport { Icons } from 'components/Icon/Icon.props';\n\n//STORE\nimport { AppState } from 'store';\n\n//COMPONENTS\nimport Icon from 'components/Icon';\n\n//STYLED\nimport {\n SocialShareContainer,\n SocialShareLink,\n SocialShareCopiedtext,\n} from './SocialShare.styled';\n\nconst SocialShare = ({\n product,\n organization,\n onClick,\n mobile,\n type,\n}: SocialShareProps) => {\n const { t } = useTranslation('general');\n\n const shortUrl = useSelector(\n (state: AppState) => state.link.link.secureShortURL\n );\n\n const [isCopied, setCopied] = useClipboard(shortUrl, {\n successDuration: 3000,\n });\n\n const getHandler = (array: OrganizationSocial[], type: string) => {\n const handler = array.find((social) => social.type === type);\n\n return handler && handler.handle ? handler.handle : false;\n };\n\n const SOCIAL_ICONS = useMemo(() => {\n const shareImage: string = encodeURIComponent(\n type === 'product'\n ? product && product.images && product.images.length > 0\n ? (product.images[0].url as string)\n : ('https://engine-static.s3.amazonaws.com/img/placeholders/placeholder540x540.png' as string)\n : organization\n ? organization.logo.url\n : 'https://engine-static.s3.amazonaws.com/img/placeholders/placeholder540x540.png'\n );\n const socials = product\n ? product && product.organization.socialChannels\n : organization\n ? organization.socialChannels\n : null;\n\n const tags =\n product &&\n product.featuredProofPoints &&\n product.featuredProofPoints.length > 0\n ? product.featuredProofPoints.slice(0, 3)\n : organization &&\n organization.proofPoints &&\n organization.proofPoints.length > 0\n ? organization.proofPoints.slice(0, 3)\n : [];\n const [tag1, tag2, tag3] = tags.map((proof: any, index: any) => {\n let nameProof = proof.name ? proof.name : proof.node.name;\n let number = index + 1;\n return tags.length === number ? nameProof : `${nameProof}, `;\n });\n const tagsText =\n tags.length > 0 ? `${tag1}${tag2 ? tag2 : ''}${tag3 ? tag3 : ''}...` : '';\n\n return [\n {\n name: 'copy' as Icons,\n onClick: () => {\n setCopied();\n if (mobile && onClick) onClick();\n },\n href: (summary: string) => '#',\n summary: null,\n },\n {\n name: 'whatsapp' as Icons,\n href: (summary: string) => `https://wa.me/?text=${summary}${shortUrl}`,\n onClick: onClick,\n summary: encodeURIComponent(\n `${tagsText ? `*${tagsText}* ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n`\n ),\n },\n {\n name: 'telegram' as Icons,\n href: (summary: string) =>\n `https://telegram.me/share/url?url=${shortUrl}&text=${summary}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n {\n name: 'twitter' as Icons,\n href: (summary: string) =>\n `https://twitter.com/intent/tweet?text=${summary}&url=${shortUrl}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_ ${\n getHandler(socials as OrganizationSocial[], 'TWITTER')\n ? `${getHandler(socials as OrganizationSocial[], 'TWITTER')}\\n`\n : '\\n'\n }`\n ),\n },\n {\n name: 'facebook' as Icons,\n href: (summary: string) =>\n `https://www.facebook.com/sharer/sharer.php?u=${shortUrl}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n {\n name: 'linkedin' as Icons,\n href: (summary: string) =>\n `https://www.linkedin.com/sharing/share-offsite/?url=${shortUrl}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n {\n name: 'pinterest' as Icons,\n href: (summary: string) =>\n `http://pinterest.com/pin/create/button/?url=${encodeURIComponent(\n shortUrl\n )}&media=${shareImage}&image_url=${shareImage}&description=${summary}`,\n onClick: onClick,\n summary:\n (product || organization) &&\n encodeURIComponent(\n `${tagsText ? `${tagsText} ` : ''}${\n product ? product.name : organization ? organization.name : ''\n }!\\nMíralo en Swear IT, te va a gustar\\n@swearit_\\n`\n ),\n },\n ];\n }, [product, organization, shortUrl, onClick, setCopied, mobile, type]);\n\n const analyticalEvent = (social: string) => {\n ReactGA.event({\n category: organization ? 'Page Click' : 'Social Sharing',\n action: `${social} Share`,\n label: organization\n ? `${organization.pk}`\n : product\n ? `${product.organization.pk}/${product.pk}`\n : '',\n });\n };\n\n return (\n \n {SOCIAL_ICONS.map((icon) => (\n {\n analyticalEvent(icon.name);\n if (icon.onClick && !mobile) {\n e.preventDefault();\n icon.onClick();\n }\n\n if (icon.onClick && mobile) {\n icon.onClick();\n }\n }}\n href={icon.summary ? icon.href(icon.summary) : '#'}\n target={'_blank'}\n rel=\"noopener noreferrer\"\n >\n \n \n ))}\n {isCopied && {t('copied')}}\n \n );\n};\n\nexport default SocialShare;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const AppMobileNavContainer = styled.nav`\n position: fixed;\n bottom: 0;\n width: 100%;\n left: 0;\n display: none;\n ${sm`\n display: block;\n `}\n`;\nexport const AppMobileNavList = styled.ul`\n background-color: ${({ theme }) => theme.colors.white};\n padding: 0.625rem 0.75rem;\n display: flex;\n justify-content: space-evenly;\n align-items: center;\n box-shadow: 0 -2px 10px 0 rgb(16 3 22 / 6%);\n border-top: 1px solid ${({ theme }) => theme.colors.border};\n`;\nexport const AppMobileNavListItem = styled.li``;\nexport const AppMobileNavListIcon = styled.i``;\nexport const AppMobileNavListText = styled.span`\n color: ${({ theme }) => theme.colors.white};\n opacity: 0;\n height: 0;\n overflow: hidden;\n transform: translateY(-5px);\n transition: all 0.1s ease-in-out 0.1s;\n`;\nexport const AppMobileNavListLink = styled.div<{ active: boolean }>`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n font-size: 8px;\n line-height: 8px;\n padding: 10px;\n color: ${({ theme }) => theme.colors.black};\n width: 55px;\n height: 55px;\n box-sizing: border-box;\n border-radius: 7.5px;\n transition: background-color 0.1s ease-in-out, color 0.1s ease-in-out;\n\n &:hover {\n color: ${({ theme }) => theme.colors.white};\n background-image: linear-gradient(90deg, #4e63a5 0%, #8298d5 100%);\n }\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n transform: translateY(3px);\n transition: all 0.1s ease-in-out;\n margin: 0 0 3px;\n }\n\n ${({ active, theme }) =>\n active &&\n `\n color: ${theme.colors.white};\n background-image: linear-gradient(90deg, #4e63a5 0%, #8298d5 100%);\n ${AppMobileNavListText} {\n opacity: 1;\n height: auto;\n transform: translateY(1px)\n }\n svg {\n transform: translateY(-1px);\n }\n `}\n`;\n\n//LINK IDEA\nexport const AppMobileNavLinkProvisional = styled.li<{ active: boolean }>`\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.brand};\n cursor: pointer;\n display: inline-block;\n background-color: transparent;\n font-weight: 700;\n word-break: break-all;\n padding: 1rem 0;\n min-width: 6rem;\n text-align: center;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n ${({ active, theme }) =>\n active &&\n `\n color: ${theme.colors.active};\n `}\n`;\nexport const AppMobileNavShare = styled.div`\n position: absolute;\n right: 0.875rem;\n bottom: 5.25rem;\n border-radius: 1.625rem;\n background-color: ${({ theme }) => theme.colors.white};\n box-shadow: 0px 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\n`;\nexport const AppMobileNavShareIcon = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 3.25rem;\n height: 3.25rem;\n svg {\n width: 1.25rem;\n color: ${({ theme }) => theme.colors.brand};\n stroke: ${({ theme }) => theme.colors.brand};\n }\n &:hover {\n svg {\n color: ${({ theme }) => theme.colors.active};\n stroke: ${({ theme }) => theme.colors.active};\n }\n }\n`;\n\nexport const AppMobileNavShareOverlay = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n background-color: ${({ theme }) => theme.colors.brand};\n opacity: 0.75;\n`;\n","import React, { useState } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\n//PROPS TYPE\nimport { AppMobileNavMapProps } from './AppMobileNav.props';\nimport { tabType } from 'store/mobilenav';\n\n//STORE\nimport { AppState } from 'store';\nimport { setMobileNav } from 'store/mobilenav';\n\n//COMPONENTS\nimport SocialShare from 'components/SocialShare';\nimport Icon from 'components/Icon';\n// import Milestones from 'components/icons/Milestones';\n// import Reviews from 'components/icons/Reviews';\n// import Information from 'components/icons/Information';\n// import Share from 'components/icons/Share';\n// import Close from 'components/icons/Close';\n\n//STYLES\nimport {\n AppMobileNavContainer,\n AppMobileNavList,\n // AppMobileNavListItem,\n // AppMobileNavListLink,\n // AppMobileNavListText,\n AppMobileNavLinkProvisional,\n AppMobileNavShare,\n AppMobileNavShareIcon,\n AppMobileNavShareOverlay,\n} from './AppMobileNav.styled';\n\nconst AppMobileNav = () => {\n const location = useLocation();\n const dispatch = useDispatch();\n\n const { tab } = useSelector((state: AppState) => state.mobileNav);\n const product = useSelector((state: AppState) => state.product.product);\n const organization = useSelector(\n (state: AppState) => state.organization.organization\n );\n\n const [shareActive, setShareActive] = useState(false);\n\n const tabMenuMap: AppMobileNavMapProps[] = [\n {\n name: 'Info',\n visible: true,\n value: 'info',\n // icon: ,\n },\n {\n name: 'Etapas',\n visible:\n location.pathname.includes('/products/') ||\n location.pathname.includes('/lot/')\n ? true\n : false,\n value: 'milestones',\n // icon: ,\n },\n {\n name: 'Opiniones',\n visible: true,\n value: 'reviews',\n // icon: ,\n },\n ];\n\n const selectTab = (tab: tabType) => {\n dispatch(setMobileNav(tab));\n };\n\n const handleToggleShare = () => {\n setShareActive(!shareActive);\n };\n\n return (\n \n {shareActive && }\n \n {shareActive && (\n \n )}\n\n \n {!shareActive ? : }\n \n \n \n {tabMenuMap\n .filter((tabItem) => tabItem.visible)\n .map((tabItem) => (\n selectTab(tabItem.value)}\n active={tabItem.value === tab}\n >\n {tabItem.name}\n \n // selectTab(tabItem.value)}\n // >\n // \n // {tabItem.icon}\n // {tabItem.name}\n // \n // \n ))}\n {/* selectTab('share')}>\n \n \n Compartir\n \n */}\n \n \n );\n};\n\nexport default AppMobileNav;\n","export const getInitials = (name: string) => {\n let nameArray = name.split(' ');\n\n return [nameArray[0][0], nameArray[1] ? nameArray[1][0] : nameArray[0][1]]\n .join('')\n .toUpperCase();\n};\n","import styled, { css } from 'styled-components';\n\nimport { Text } from 'components/Text';\n\nimport { AvatarSize } from './Avatar.props';\nimport { Colors, isColor } from 'theme/Theme.styled';\nfunction fontSize(size: AvatarSize) {\n switch (size) {\n case 'small':\n return 14;\n case 'tiny':\n return 10;\n case 'medium':\n return 16;\n case 'large':\n return 18;\n default:\n return size / 3;\n }\n}\n\nfunction getSize(size: AvatarSize) {\n switch (size) {\n case 'tiny':\n return 27;\n case 'small':\n return 56;\n case 'medium':\n return 81;\n case 'large':\n return 100;\n }\n}\n\nconst AVATAR_STYLE = css<{ size: AvatarSize; color?: Colors | string }>`\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n ${({ size }) => `\n\t\twidth: ${typeof size === 'string' ? getSize(size) : size}px;\n\t\theight: ${typeof size === 'string' ? getSize(size) : size}px;\n\t`}\n`;\n\nexport const AvatarText = styled(Text)`\n font-weight: bold;\n text-transform: uppercase;\n`;\n\nexport const AvatarImage = styled.img`\n ${AVATAR_STYLE}\n object-fit: cover;\n object-position: center;\n`;\n\nexport const AvatarIcon = styled.div<{\n size: AvatarSize;\n color: Colors | string;\n}>`\n background-color: ${({ theme, color }) =>\n isColor(color) ? theme.colors[color] : color};\n color: ${({ theme }) => theme.colors.white};\n ${AVATAR_STYLE}\n\n ${AvatarText} {\n font-size: ${({ size }) =>\n `${typeof size === 'string' ? fontSize(size) : size / 3}px`};\n }\n`;\n","import React from 'react';\n\n//UTILS\nimport { getInitials } from 'utils/get-initials';\n\n//PROPS TYPE\nimport { AvatarProps, AvatarSize } from './Avatar.props';\n\n//STYLES\nimport { AvatarImage, AvatarIcon, AvatarText } from './Avatar.styled';\n\nconst Avatar = ({\n text,\n url,\n size = 'small',\n sizeText = 'small',\n color = 'fontSecondary',\n textProps,\n ...props\n}: AvatarProps) => {\n if (url) return ;\n else\n return (\n \n {getInitials(text)}\n \n );\n};\n\nexport default Avatar;\n","import styled from 'styled-components';\nimport { Link } from 'react-router-dom';\n\nimport { LinkOwnProps } from './Link.props';\n\nexport const LinkStyled = styled(Link)`\n width: ${({ width }) => (width ? width : 'auto')};\n display: ${({ display }) => (display ? display : 'inline')};\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.brand};\n cursor: pointer;\n display: inline-block;\n background-color: transparent;\n font-weight: 700;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n`;\n","import React from 'react';\nimport { LinkProps } from 'react-router-dom';\n\n//PROPS TYPE\nimport { LinkOwnProps } from './Link.props';\n\n//STYLES\nimport { LinkStyled } from './Link.styled';\n\nconst Link = ({ to, children, ...rest }: LinkProps & LinkOwnProps) => {\n return (\n \n {children}\n \n );\n};\n\nexport default Link;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const AppHeaderContainer = styled.div`\n height: 5rem;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n ${sm`\n position: fixed;\n width: 100%;\n z-index: 99;\n background-color: #fff;\n `}\n @media only screen and (max-width: 768px) and (orientation: landscape) {\n visibility: hidden;\n }\n`;\nexport const AppHeaderWrapper = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n max-width: calc(100% - 5rem);\n margin: 0 auto;\n ${sm`\n max-width: calc(100% - 2rem);\n `}\n`;\n\nexport const AppHeaderLInformation = styled.div`\n display: flex;\n align-items: center;\n`;\nexport const AppHeaderName = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.black};\n font-weight: bold;\n margin: 0 0 0 1rem;\n display: flex;\n align-items: center;\n ${sm`\n flex-direction: column;\n align-items: flex-start;\n a {\n margin: 0.5rem 0 0;\n }\n `}\n`;\nexport const AppHeaderSeparator = styled.div`\n font-size: 1rem;\n line-height: 1.125rem;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.border};\n margin: 0 0.5rem;\n ${sm`\n display: none;\n `}\n`;\n\nexport const AppHeaderMenuButton = styled.div`\n display: none;\n width: 2rem;\n height: 2rem;\n ${sm`\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n color: ${({ theme }) => theme.colors.brand};\n font-size: 1.5rem;\n }\n `}\n`;\n","import React, { useState, useEffect } from 'react';\nimport ReactGA from 'react-ga4';\nimport _ from 'lodash';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport useGetQuery from 'hooks/useGetQuery';\n\n//STORE\nimport { AppState } from 'store';\n\n//PROPS TYPE\nimport { AppHeaderProps } from './AppHeader.props';\n\n//COMPONENTS\nimport AppMobileMenu from 'module/AppMobileMenu';\nimport AppMobileNav from 'module/AppMobileNav';\nimport TranslateSelector from 'components/TranslateSelector';\nimport Avatar from 'components/Avatar';\nimport Link from 'components/Link';\nimport Icon from 'components/Icon';\n\n//STYLES\nimport {\n AppHeaderContainer,\n AppHeaderWrapper,\n AppHeaderLInformation,\n AppHeaderName,\n AppHeaderSeparator,\n AppHeaderMenuButton,\n} from './AppHeader.styled';\n\nconst AppHeader = ({ type, id }: AppHeaderProps) => {\n const { t } = useTranslation('header');\n const query = useGetQuery();\n\n const product = useSelector((state: AppState) => state.product.product);\n const organization = useSelector(\n (state: AppState) => state.organization.organization\n );\n\n const [isOpenMenu, setIsOpenMenu] = useState(false);\n\n useEffect(() => {\n if (!_.isEmpty(product)) {\n const LABEL_TYPE = {\n organization: id,\n product: `${product.organization.pk}/${id}`,\n lot: id,\n wine: id,\n wineBottle: id,\n };\n\n let firstInit = localStorage.getItem('firstInit');\n\n const visited: Array = JSON.parse(firstInit ? firstInit : '[]');\n const existVisited = visited.find((visit) => visit === `${type}-${id}`);\n\n if (!existVisited) {\n const firstInitArray = [...visited, `${type}-${id}`];\n ReactGA.event({\n category: 'New user',\n action: 'First Visit',\n label: LABEL_TYPE[type],\n nonInteraction: true,\n });\n localStorage.setItem('firstInit', JSON.stringify(firstInitArray));\n }\n }\n }, [id, type, product]);\n\n const toggleMenu = () => {\n setIsOpenMenu(!isOpenMenu);\n let $root = document.querySelector('#root');\n if ($root) $root.classList.toggle('hidden-overflow');\n };\n\n return (\n \n \n \n {(type === 'product' || type === 'lot') && product && (\n <>\n \n \n {product.name || ''}\n |\n {product.organization && (\n \n {product.organization.name}\n \n )}\n \n \n )}\n {type === 'organization' && organization && (\n <>\n \n \n {organization.name || ''}\n {query.get('productId') && (\n |\n )}\n\n {query.get('productId') && (\n \n <>{t('content.backToProduct')}\n \n )}\n \n \n )}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AppHeader;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const AppFooterContainer = styled.div`\n border-top: 1px solid #ededee;\n ${sm`\n display: none;\n \n `}\n @media only screen and (max-width: 768px) and (orientation: landscape) {\n visibility: hidden;\n }\n`;\nexport const AppFooterWrapper = styled.div`\n max-width: calc(100% - 5rem);\n margin: 0 auto;\n`;\nexport const AppFooterTop = styled.div`\n padding-top: 2.5rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\nexport const AppFooterBottom = styled.div`\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 0;\n`;\nexport const AppFooterSocial = styled.div`\n width: 12rem;\n margin-top: 1.25rem;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const AppFooterLink = styled.a<{ uppercase?: boolean }>`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.brand};\n transition: all 0.25s ease-in-out;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n ${({ uppercase }) =>\n uppercase &&\n `\n text-transform: uppercase;\n `}\n`;\n\nexport const AppFooterLogo = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-start;\n min-width: 200px;\n`;\nexport const AppFooterLogoImage = styled.img`\n width: 2.5rem;\n margin: 0 0.5rem 0 0;\n`;\nexport const AppFooterLogoText = styled.span`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: 700;\n`;\nexport const AppFooterLegal = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n min-width: 200px;\n`;\n\nexport const AppFooterMail = styled.div`\n display: flex;\n justify-content: center;\n`;\n\nexport const AppFooterSocialLink = styled(AppFooterLink)`\n svg {\n width: 1.25rem;\n color: ${({ theme }) => theme.colors.brand};\n }\n &:hover {\n svg {\n color: ${({ theme }) => theme.colors.active};\n }\n }\n`;\n","import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//ASSETS\nimport LogoImage from 'assets/images/logo.png';\n\n//PROPS TYPE\nimport { Icons } from 'components/Icon/Icon.props';\n\n//COMPONENTS\nimport Icon from 'components/Icon';\n\n//STYLES\nimport {\n AppFooterContainer,\n AppFooterWrapper,\n AppFooterTop,\n AppFooterBottom,\n AppFooterSocial,\n AppFooterLink,\n AppFooterLegal,\n AppFooterMail,\n AppFooterLogo,\n AppFooterLogoImage,\n AppFooterLogoText,\n AppFooterSocialLink,\n} from './AppFooter.styled';\n\ninterface SocialLinksMap {\n iconName: Icons;\n link: string;\n}\n\nconst AppFooter = () => {\n const { t } = useTranslation('footer');\n\n const year = new Date().getFullYear();\n\n const SOCIAL_LINKS: SocialLinksMap[] = useMemo(\n () => [\n {\n iconName: 'facebook',\n link: 'https://www.facebook.com/swearitsoftware/',\n },\n {\n iconName: 'instagram',\n link: 'https://www.instagram.com/swearit_/',\n },\n {\n iconName: 'youtube',\n link: 'https://www.youtube.com/channel/UC-smPk49x3o90Di00egGQPg',\n },\n {\n iconName: 'linkedin',\n link: 'https://www.linkedin.com/in/swearit/',\n },\n {\n iconName: 'twitter',\n link: 'https://twitter.com/swearit_',\n },\n ],\n []\n );\n\n return (\n \n \n \n \n {t('content.aboutSwearit')}\n \n \n {SOCIAL_LINKS.map((socialLink) => (\n \n \n \n ))}\n \n \n \n \n \n © {year}\n \n \n \n hello@swearit.io\n \n \n \n \n {t('content.legal')}\n \n \n \n \n \n );\n};\n\nexport default AppFooter;\n","import { createGlobalStyle } from 'styled-components';\n\nexport const ThemeGlobalStyles = createGlobalStyle`\n * {\n box-sizing: border-box;\n }\n body {\n font-family: \"Montserrat\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-size: 16px;\n\n @media only screen and (max-width: 768px) and (orientation: landscape) {\n overflow: hidden;\n }\n\n }\n input, select { font-size: 100%; }\n \n @media screen and (device-aspect-ratio: 2/3) {\n select, textarea, input[type=\"text\"], input[type=\"password\"],\n input[type=\"datetime\"], input[type=\"datetime-local\"],\n input[type=\"date\"], input[type=\"month\"], input[type=\"time\"],\n input[type=\"week\"], input[type=\"number\"], input[type=\"email\"],\n input[type=\"url\"]{ font-size: 16px !important; font-size: max(1.1rem, 16px) !important; }\n }\n\n @media screen and (device-aspect-ratio: 40/71) {\n select, textarea, input[type=\"text\"], input[type=\"password\"],\n input[type=\"datetime\"], input[type=\"datetime-local\"],\n input[type=\"date\"], input[type=\"month\"], input[type=\"time\"],\n input[type=\"week\"], input[type=\"number\"], input[type=\"email\"],\n input[type=\"url\"]{ font-size: 16px !important; font-size: max(1.1rem, 16px) !important; }\n }\n\n @media screen and (device-aspect-ratio: 375/667) {\n select, textarea, input[type=\"text\"], input[type=\"password\"],\n input[type=\"datetime\"], input[type=\"datetime-local\"],\n input[type=\"date\"], input[type=\"month\"], input[type=\"time\"],\n input[type=\"week\"], input[type=\"number\"], input[type=\"email\"], \n input[type=\"tel\"], input[type=\"url\"]{ font-size: 16px !important; font-size: max(1.1rem, 16px) !important;}\n }\n\n @media screen and (device-aspect-ratio: 9/16) {\n select, textarea, input[type=\"text\"], input[type=\"password\"],\n input[type=\"datetime\"], input[type=\"datetime-local\"],\n input[type=\"date\"], input[type=\"month\"], input[type=\"time\"],\n input[type=\"week\"], input[type=\"number\"], input[type=\"email\"],\n input[type=\"tel\"], input[type=\"url\"]{ font-size: 16px !important; font-size: max(1.1rem, 16px) !important; }\n }\n .hidden-overflow {\n overflow: hidden;\n }\n`;\n","import React from 'react';\nimport { useMediaQuery } from '@react-hook/media-query';\n\n//PROPS TYPE\nimport { AppLayoutProps } from './AppLayout.props';\n\n//COMPONENTS\nimport AppHeader from 'module/AppHeader';\nimport AppFooter from 'module/AppFooter';\nimport Loader from 'components/Loader';\nimport MetaHead from 'components/MetaHead';\n\n//SCREENS\nimport Error404 from 'screens/Error404';\n\n//COMPONENTS\nimport Icon from 'components/Icon';\n\n//STYLES\nimport { ThemeGlobalStyles } from 'theme/Theme.globalstyles';\nimport {\n AppLayoutContainer,\n AppLayoutContent,\n AppBlocker,\n AppBlockerText,\n} from './AppLayout.styled';\nimport { ERRORS } from 'constants/errors';\n\nconst AppLayout = ({\n children,\n loading,\n error,\n errorType,\n errorUrl,\n metas,\n type,\n id,\n skeletonLoader,\n}: AppLayoutProps) => {\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n if (errorType === ERRORS.private) {\n return ;\n }\n\n if (errorType === ERRORS.pending_payment) {\n return ;\n }\n\n if (\n errorType === ERRORS.not_registered ||\n errorType === ERRORS.invalid_uuid\n ) {\n return ;\n }\n if (\n !!errorType &&\n errorType !== ERRORS.not_registered &&\n errorType !== ERRORS.invalid_uuid &&\n errorType !== ERRORS.private &&\n errorType !== ERRORS.pending_payment\n ) {\n return ;\n }\n\n return (\n <>\n {loading ? (\n <>{skeletonLoader ? skeletonLoader : }\n ) : (\n \n \n {matches && (\n \n \n \n Por favor rote el telefono\n \n \n )}\n\n {metas && (\n \n )}\n \n {children}\n \n \n )}\n \n );\n};\n\nexport default AppLayout;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const StarRatingContainer = styled.div<{ rating: number }>`\n display: inline-block;\n font-size: 1rem;\n font-family: Times;\n line-height: 1rem;\n margin: 0 0.75rem 0 0;\n ${sm`\n font-size: 0.9375rem;\n `}\n\n &:before {\n content: '❤ ❤ ❤ ❤ ❤';\n letter-spacing: 3px;\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.error} ${({ rating }) => `${rating}%`},\n #ededee ${({ rating }) => `${rating}%`}\n );\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n ${sm`\n letter-spacing: 0;\n `}\n }\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { StarRatingProps } from './StarRating.props';\n\n//STYLES\nimport { StarRatingContainer } from './StarRating.styled';\n\nconst StarRating = ({ rating }: StarRatingProps) => {\n return ;\n};\n\nexport default StarRating;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const CustomerReviewHeaderContainer = styled.div`\n display: grid;\n grid-template: 1fr / 2.8125rem calc(100% - 4.0625rem);\n grid-gap: 1.25rem;\n margin: 0 0 0.75rem;\n`;\nexport const CustomerReviewUser = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n`;\nexport const CustomerReviewName = styled(Text)`\n font-weight: bold;\n color: ${({ theme }) => theme.colors.black};\n margin: 0 0.5rem 0 0;\n`;\n\nexport const CustomerReviewInfo = styled.div<{ reply: boolean }>`\n height: 100%;\n display: flex;\n align-items: center;\n ${({ reply }) =>\n reply &&\n `\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n ${CustomerReviewName} {\n margin: 0 0 0.5rem 0;\n }\n `}\n`;\n\nexport const CustomerReviewDate = styled(Text)`\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n`;\nexport const CustomerReviewRating = styled.div`\n align-self: flex-start;\n`;\n","import React from 'react';\nimport moment from 'moment';\nimport { useSelector } from 'react-redux';\nimport { LANGUAGE_MAP } from 'components/TranslateModal';\n\n//UTILS\nimport { getInitials } from 'utils/get-initials';\n\n//PROPS TYPE\nimport { CustomerReviewHeaderProps } from './CustomerReviewHeader.props';\n\n//STORE\nimport { AppState } from 'store';\n\n//COMPONENTS\nimport StarRating from 'components/StarRating';\nimport Avatar from 'components/Avatar';\n\n//STYLES\nimport {\n CustomerReviewHeaderContainer,\n CustomerReviewUser,\n CustomerReviewInfo,\n CustomerReviewRating,\n CustomerReviewName,\n CustomerReviewDate,\n} from './CustomerReviewHeader.styled';\nimport { compact } from 'lodash';\n\nconst CustomerReviewHeader = ({\n name,\n logo,\n date,\n rating,\n reply = false,\n}: CustomerReviewHeaderProps) => {\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n const { product } = useSelector((state: AppState) => state.product);\n const langDate =\n product &&\n translateSelect &&\n translateSelect.length > 0 &&\n translateSelect.find((lang) => lang.idProduct === product.pk);\n\n return (\n \n \n \n \n {name}\n \n {moment(date)\n .locale(\n !!langDate ? LANGUAGE_MAP[langDate.short_name].lang : 'es-ES'\n )\n .fromNow()}\n \n \n {rating && (\n \n \n \n )}\n \n \n );\n};\n\nexport default CustomerReviewHeader;\n","import styled from 'styled-components';\n\nexport const CustomerReviewContainer = styled.div`\n padding: 0 0 1.25rem;\n margin: 0 0 1.25rem;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n &:last-child {\n border: none;\n }\n`;\n\nexport const CustomerReviewComment = styled.p`\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n strong {\n color: ${({ theme }) => theme.colors.black};\n }\n`;\n\nexport const CustomerReviewReply = styled.div`\n margin: 1.25rem 0 0;\n padding: 0.5rem 0 0.5rem 2.5rem;\n position: relative;\n &::before {\n position: absolute;\n content: '';\n width: 3px;\n height: 100%;\n top: 0;\n left: 0.75rem;\n background-color: ${({ theme }) => theme.colors.border};\n }\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\n//PROPS TYPE\nimport { CustomerReviewProps } from './CustomerReview.props';\n\n//COMPONENTS\nimport CustomerReviewHeader from './CustomerReviewHeader';\n\n//STORE\nimport { AppState } from 'store';\n\n//STYLES\nimport {\n CustomerReviewContainer,\n CustomerReviewComment,\n CustomerReviewReply,\n} from './CustomerReview.styled';\n\nconst CustomerReview = ({ review }: CustomerReviewProps) => {\n const { organizationName, organizationLogo } = useSelector(\n (state: AppState) => state.organization\n );\n\n return (\n \n \n\n \n \n {review.node.title}\n {' -'}\n {' '}\n {review.node.comment}\n \n\n {review.node.reply && (\n \n \n \n {review.node.reply.comment}\n \n \n )}\n \n );\n};\n\nexport default CustomerReview;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const CustomerReviewsContainer = styled.div`\n ${sm`\n padding: 2rem 0 0;\n `}\n`;\nexport const CustomerReviewsTitle = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.black};\n margin: 0 0 0.75rem;\n ${sm`\n text-transform: uppercase;\n margin: 0 0 1.5rem;\n `}\n`;\nexport const CustomerReviewsTotal = styled.div`\n display: flex;\n align-items: center;\n margin: 0 0 1.25rem;\n`;\nexport const CustomerReviewsTotalCount = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.black};\n margin: 0 0 1.25rem;\n`;\nexport const CustomerReviewsValue = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.black};\n`;\nexport const CustomerReviewsPercentages = styled.div`\n margin: 0 0 2.5rem;\n`;\nexport const CustomerReviewsPercentage = styled.div`\n display: flex;\n align-items: center;\n margin: 0 0 0.75rem;\n`;\nexport const CustomerReviewsBar = styled.div<{ percentage: number }>`\n width: 11.5rem;\n height: 0.25rem;\n background-color: ${({ theme }) => theme.colors.border};\n position: relative;\n margin: 0 0.75rem 0 0;\n &::before {\n content: '';\n position: absolute;\n width: ${({ percentage }) => percentage}%;\n left: 0;\n top: 0;\n height: 100%;\n background-color: ${({ theme }) => theme.colors.error};\n }\n ${sm`\n width: 7.5rem;\n `}\n`;\nexport const CustomerReviewsNumber = styled(Text)`\n color: ${({ theme }) => theme.colors.placeholder};\n font-size: 0.875rem;\n line-height: 0.875rem;\n`;\n\nexport const CustomerReviewsAction = styled.div`\n margin: 0 0 2.5rem;\n`;\nexport const CustomerReviewsList = styled.div`\n border-top: 1px solid ${({ theme }) => theme.colors.border};\n padding: 2.5rem 0 0;\n`;\nexport const CustomerReviewsEmpty = styled(Text)`\n margin: 0 0 2.5rem;\n`;\n","import React, { useMemo, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\n//UTILS\nimport { getPercentage } from 'utils/get-percentage';\n\n//PROPS TYPE\nimport { CustomerReviewsProps } from './CustomerReviews.props';\n\n//STORE\nimport { AppState } from 'store';\nimport { openModal } from 'store/reviewModal';\n\n//COMPONENTS\nimport StarRating from 'components/StarRating';\nimport Button from 'components/Button';\nimport CustomerReview from './CustomerReview';\n\n//STYLES\nimport {\n CustomerReviewsContainer,\n CustomerReviewsTitle,\n CustomerReviewsTotal,\n CustomerReviewsTotalCount,\n CustomerReviewsValue,\n CustomerReviewsPercentages,\n CustomerReviewsPercentage,\n CustomerReviewsBar,\n CustomerReviewsNumber,\n CustomerReviewsAction,\n CustomerReviewsList,\n CustomerReviewsEmpty,\n} from './CustomerReviews.styled';\n\nconst CustomerReviews = ({ reviewStats, reviews }: CustomerReviewsProps) => {\n const { t } = useTranslation('commons');\n const { t: productTranslation } = useTranslation('product');\n const { t: organizationTranslation } = useTranslation('organization');\n\n const location = useLocation();\n const dispatch = useDispatch();\n\n const hasBeenReviewed = useSelector(\n ({ review, product, organization }) => {\n const reviewedItem: string | undefined = review.find(\n (productReviewId) => {\n if (location.pathname.includes('/lot/')) {\n return product.lotId === productReviewId;\n }\n if (location.pathname.includes('/products/')) {\n return product.product.pk === productReviewId;\n }\n if (location.pathname.includes('/organizations/')) {\n return organization.organization.pk === productReviewId;\n }\n\n return false;\n }\n );\n return Boolean(reviewedItem);\n }\n );\n\n const PERCENTAGES = useMemo(\n () => [\n {\n id: `five-hearts`,\n percentage: reviewStats.percentageCountFive,\n starRatingValue: 100,\n },\n {\n id: `four-hearts`,\n percentage: reviewStats.percentageCountFour,\n starRatingValue: 80,\n },\n {\n id: `three-hearts`,\n percentage: reviewStats.percentageCountThree,\n starRatingValue: 60,\n },\n {\n id: `two-hearts`,\n percentage: reviewStats.percentageCountTwo,\n starRatingValue: 40,\n },\n {\n id: `one-hearts`,\n percentage: reviewStats.percentageCountOne,\n starRatingValue: 20,\n },\n ],\n [reviewStats]\n );\n\n const handleOpenReviewModal = useCallback(() => {\n dispatch(openModal());\n }, [dispatch]);\n\n return (\n \n \n {t('content.customerReviews')}\n \n \n \n \n {`${reviewStats.averageRating.toFixed(1)} ${t('content.of')}`} 5.0\n \n \n \n {reviewStats.totalCount} {t('content.reviews')}\n \n\n \n {PERCENTAGES.map((percentage) => (\n \n \n \n \n {Number(percentage.percentage).toFixed(1)}%{' '}\n \n \n ))}\n \n \n {!hasBeenReviewed && (\n \n )}\n \n \n {reviews && reviews.length > 0 ? (\n reviews.map((review) => (\n \n ))\n ) : (\n \n {location.pathname.includes('/products/') ||\n location.pathname.includes('/lot/')\n ? productTranslation('content.productEmptyReviews')\n : organizationTranslation('content.organizationEmptyReviews')}\n \n )}\n \n \n );\n};\n\nexport default CustomerReviews;\n","export const getPercentage = (rating: number, maxValue: number) => {\n return (rating / maxValue) * 100;\n};\n","import styled from 'styled-components';\n\nimport { Text } from 'components/Text';\n\nexport const ProofPointContainer = styled.button`\n display: flex;\n align-items: center;\n margin: 0.5rem 0.5rem 0.5rem 0;\n padding: 0.5rem 0.75rem;\n outline: none;\n background-color: ${({ theme }) => theme.colors.brand};\n transition: all 0.3s ease-in-out;\n border-radius: 9999px;\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 10%);\n gap: 0 0.5rem;\n flex: 0 0 auto;\n &:hover {\n background-color: ${({ theme }) => theme.colors.blueLigth};\n transform: translateY(-0.25rem);\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 20%);\n }\n &:focus,\n &:active {\n outline: none;\n }\n`;\nexport const ProofPointIcon = styled.img`\n width: 100%;\n max-width: 20px;\n filter: invert(100%) sepia(15%) saturate(0%) hue-rotate(40deg)\n brightness(103%) contrast(102%);\n`;\nexport const ProofPointName = styled(Text)`\n font-size: 0.75rem;\n line-height: 1rem;\n font-weight: 700;\n color: ${({ theme }) => theme.colors.white};\n flex: 1 0 auto;\n`;\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\n//STORE\nimport { openModal } from 'store/proofPointModal';\n\n//COMPONENTS\nimport { ProofPointProps } from './ProofPoint.props';\n\n//STYLES\nimport {\n ProofPointContainer,\n ProofPointIcon,\n ProofPointName,\n} from './ProofPoint.styled';\n\nconst ProofPoint = ({ proof }: ProofPointProps) => {\n const dispatch = useDispatch();\n\n const handleOpenProofPointModal = useCallback(() => {\n dispatch(\n openModal({\n proof,\n })\n );\n }, [dispatch, proof]);\n\n return (\n \n \n \n {proof.name.charAt(0).toUpperCase() + proof.name.slice(1)}\n \n \n );\n};\n\nexport default ProofPoint;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const FeatureProofPointsContainer = styled.div`\n display: flex;\n flex-wrap: nowrap;\n overflow: auto;\n padding: 0 1.5rem 0.25rem 0.5rem;\n margin: 0 0 1.5rem -0.5rem;\n\n &::-webkit-scrollbar {\n height: 8px;\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n border-radius: 6px;\n transition: all 0.3s ease-in-out;\n }\n\n &:hover::-webkit-scrollbar {\n background-color: #f5f5f5;\n }\n &:hover::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n }\n &:hover::-webkit-scrollbar-thumb {\n background-image: ${({ theme }) => theme.colors.buttonGradient};\n border-radius: 6px;\n }\n ${sm`\n padding: 0 1.5rem 0.25rem 0;\n margin: 0 0 1.5rem 0\n `}\n`;\n","import React from 'react';\n\n//COMPONENTS\nimport { FeatureProofPointsProps } from './FeatureProofPoints.props';\nimport ProofPoint from 'components/ProofPoint';\n\n//STYLES\nimport { FeatureProofPointsContainer } from './FeatureProofPoints.styled';\n\nconst FeatureProofPoints = ({ featuredProofs }: FeatureProofPointsProps) => {\n const PROOFPOINTS_LIST = featuredProofs.filter(\n (proof) =>\n proof && proof.icon && proof.icon.icon && !proof.icon.icon.includes('c_')\n );\n\n return (\n <>\n {PROOFPOINTS_LIST.length > 0 ? (\n \n {PROOFPOINTS_LIST.map((proof) => (\n \n ))}\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default FeatureProofPoints;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const ConditionsContainer = styled.div`\n margin: 0 0 1.25rem;\n`;\nexport const ConditionsProofName = styled(Text)`\n font-size: 0.875rem;\n line-height: 1rem;\n font-weight: 700;\n color: ${({ theme }) => theme.colors.brand};\n cursor: pointer;\n display: inline-block;\n margin: 0 0 0.5rem;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n`;\nexport const CoditionsList = styled.ul`\n list-style: square;\n padding: 0 0 0 1.1rem;\n`;\nexport const CoditionsItem = styled.li``;\nexport const CoditionsData = styled(Text)`\n font-size: 0.75rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n text-transform: capitalize;\n`;\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\n//STORE\nimport { openModal } from 'store/proofPointModal';\n\n//PROPS TYPE\nimport { ConditionsProps } from './Conditions.props';\n\n//STYLES\nimport {\n ConditionsContainer,\n ConditionsProofName,\n CoditionsList,\n CoditionsItem,\n CoditionsData,\n} from './Conditions.styled';\n\nconst Conditions = ({ proofpoint }: ConditionsProps) => {\n const dispatch = useDispatch();\n\n const handleOpenProofPointModal = useCallback(() => {\n dispatch(\n openModal({\n proof: proofpoint,\n })\n );\n }, [dispatch, proofpoint]);\n\n return (\n \n \n {proofpoint.name}\n \n \n {proofpoint.conditions.map((condition, index) => (\n \n \n {condition.type} {condition.value} {condition.unit}\n \n \n ))}\n \n \n );\n};\n\nexport default Conditions;\n","import styled from 'styled-components';\n\n\nexport const RenderHtmlOverlay = styled.div`\n position: absolute;\n z-index: 999;\n background: linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0.5) 10%,rgba(255,255,255,1) 100%);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n`\nexport const RenderHtmlText = styled.div``\nexport const RenderHtmlWrapper = styled.div<{active: boolean;}>`\n position: relative;\n overflow: hidden;\n\n ${({ active }) => active ? `\n max-height: 150px;\n ` : `\n margin: 0 0 1rem;\n `}\n`\n\nexport const RenderHtmlContent = styled.div<{\n isVisible?: boolean;\n}>`\n margin-bottom: 0.5rem;\n\n /* ${({ isVisible }) =>\n !isVisible &&\n `\n max-height: 100px;\n box-sizing: content-box;\n overflow: hidden;\n `} */\n ul {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n`;\n\nexport const RenderHtmlAction = styled.span`\n font-size: 0.75rem;\n line-height: 0.75rem;\n color: ${({ theme }) => theme.colors.brand};\n cursor: pointer;\n display: inline-block;\n transition: all 0.25s ease-in-out;\n font-weight: bold;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n`;\n\nexport const RenderHtmlContainer = styled.div<{\n align: string;\n margin: string;\n wine?: boolean;\n}>`\n font-size: 14px;\n line-height: 27px;\n margin: ${({ margin }) => margin};\n width: 100%;\n text-align: ${({ align }) => align};\n color: ${({ theme }) => theme.colors.black};\n ${({ wine, theme, margin }) => wine && `\n color: ${theme.colors.wineGray};\n max-width: 475px;\n margin: ${margin};\n ${RenderHtmlAction} {\n color: ${theme.colors.winePrimary};\n &:hover {\n color: ${theme.colors.wineBlack};\n }\n }\n `}\n`;\n\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//PROPS TYPE\nimport { RenderHtmlProps } from './RenderHtml.props';\n\n//STYLES\nimport {\n RenderHtmlContainer,\n RenderHtmlAction,\n RenderHtmlContent,\n RenderHtmlWrapper,\n RenderHtmlOverlay,\n RenderHtmlText,\n} from './RenderHtml.styled';\n\nconst RenderHtml = ({\n text,\n align = 'left',\n margin = '0 0 1.25rem',\n wine,\n noOverlay,\n}: RenderHtmlProps) => {\n const { t } = useTranslation('commons');\n\n const [isVisible, setIsVisible] = useState(false);\n const [textLength, setTextLength] = useState(null);\n\n const createMarkup = (text: string) => {\n return { __html: text };\n };\n\n let className = 'RenderHtml';\n\n const toggleText = () => {\n setIsVisible(!isVisible);\n };\n\n useEffect(() => {\n if (!textLength) {\n setTextLength(text.split(' ').length);\n }\n }, [textLength, text]);\n\n return (\n \n 20)}\n >\n {/* {!noOverlay && !isVisible && textLength && textLength > 20 && (\n \n )} */}\n\n \n \n\n {!noOverlay && textLength && textLength > 20 && (\n \n {!isVisible ? t('content.seeMore') : t('content.seeLess')}\n \n )}\n \n );\n};\n\nexport default RenderHtml;\n","import styled from 'styled-components';\n\n//ASSETS\nimport VideoTrimmerIcon from 'assets/images/videoTrimmerIcon.png';\n\nexport const VideoPreviewMedia = styled.video`\n max-width: 100%;\n`;\nexport const VideoPreviewMediaOverlay = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 5;\n background-color: rgba(0, 0, 0, 0.25);\n transition: all 0.25s ease-in;\n`;\nexport const VideoPreviewMediaIcons = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9;\n`;\nexport const VideoPreviewMediaIconPlay = styled.div`\n width: 4.4375rem;\n height: 4.4375rem;\n background-repeat: no-repeat;\n background-position: 0 0;\n background-image: url(${VideoTrimmerIcon});\n transition: opacity 0.2s ease-out;\n background-size: 8.875rem;\n`;\nexport const VideoPreviewContent = styled.div<{margin?: string;}>`\n width: 100%;\n margin: ${({ margin }) => margin ? margin : \"0 0 1rem\"};\n position: relative;\n cursor: pointer;\n &:hover {\n ${VideoPreviewMediaOverlay} {\n opacity: 0;\n }\n }\n`;\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport { useInViewport } from 'react-in-viewport';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//STORE\nimport { openModal as openMediaEvidenceModal } from 'store/mediaEvidenceModal';\n//PROPS TYPE\nimport { VideoPreviewProps } from './VideoPreview.props';\n//STYLES\nimport {\n VideoPreviewContent,\n VideoPreviewMedia,\n VideoPreviewMediaOverlay,\n VideoPreviewMediaIcons,\n VideoPreviewMediaIconPlay,\n} from './VideoPreview.styled';\n\nlet TIME_PREVIEW: ReturnType | null = null;\n\nconst VideoPreview = ({\n url,\n name,\n id,\n parent,\n margin,\n poster = placeholderImage,\n}: VideoPreviewProps) => {\n const dispatch = useDispatch();\n\n const $video = useRef(null);\n\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n const [play, setPlay] = useState(false);\n\n const startPreview = () => {\n if ($video && $video.current && !play) {\n $video.current.currentTime = 1;\n $video.current.playbackRate = 0.5;\n $video.current.play();\n }\n };\n const stopPreview = () => {\n if ($video && $video.current && !play) {\n $video.current.currentTime = 0;\n $video.current.playbackRate = 1;\n $video.current.pause();\n }\n };\n\n const handleMouseEnter = () => {\n if (!matches) {\n startPreview();\n TIME_PREVIEW = setTimeout(() => {\n stopPreview();\n }, 4000);\n }\n };\n\n const handleMouseLeave = () => {\n if (!matches && !play) {\n if (TIME_PREVIEW) clearTimeout(TIME_PREVIEW);\n TIME_PREVIEW = null;\n stopPreview();\n }\n };\n\n const { inViewport, enterCount, leaveCount } = useInViewport(\n $video,\n {\n rootMargin: '100px',\n threshold: 1.0,\n },\n { disconnectOnLeave: false },\n {\n onEnterViewport: () => {\n if ($video.current && !play) {\n const video = $video.current;\n video.currentTime = 1;\n video.playbackRate = 0.5;\n video.play();\n TIME_PREVIEW = setTimeout(() => {\n video.currentTime = 0;\n video.playbackRate = 1;\n video.pause();\n }, 4000);\n }\n },\n onLeaveViewport: () => {\n if ($video.current && !play) {\n const video = $video.current;\n if (TIME_PREVIEW) clearTimeout(TIME_PREVIEW);\n TIME_PREVIEW = null;\n video.currentTime = 0;\n video.playbackRate = 1;\n video.pause();\n }\n },\n }\n );\n\n const handleOpenMediaEvidenceModal = useCallback(\n (media: { name: string; url: string }) => {\n dispatch(\n openMediaEvidenceModal({\n media: media,\n })\n );\n },\n [dispatch]\n );\n\n const handleTogglePlay = () => {\n if ($video && $video.current) {\n if (TIME_PREVIEW) clearTimeout(TIME_PREVIEW);\n $video.current.currentTime = 0;\n $video.current.playbackRate = 1;\n if (play) {\n $video.current.pause();\n } else {\n $video.current.play();\n }\n setPlay(!play);\n }\n };\n\n return (\n {\n handleTogglePlay();\n }}\n >\n {!play && }\n {!play ? (\n \n \n \n ) : (\n <>\n )}\n\n {url && (\n \n )}\n \n );\n};\n\nexport default VideoPreview;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const MilestoneContainer = styled.div`\n padding: 1.125rem 0 1.125rem 3rem;\n position: relative;\n &::after {\n content: '';\n position: absolute;\n width: 2px;\n height: 100%;\n top: 0;\n left: 1.1875rem;\n background-color: ${({ theme }) => theme.colors.blueLigth};\n z-index: 1;\n }\n`;\nexport const MilestoneTitle = styled(Text)`\n font-size: 1rem;\n line-height: 1.5rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.black};\n margin: 0 0 1.25rem;\n position: relative;\n z-index: 2;\n`;\nexport const MilestoneIconBox = styled.div`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 1.875rem;\n height: 1.875rem;\n background-color: ${({ theme }) => theme.colors.brand};\n top: calc(50% - 0.9375rem);\n left: -2.6875rem;\n border-radius: 50%;\n`;\nexport const MilestoneIcon = styled.img`\n max-width: 1rem;\n filter: invert(93%) sepia(100%) saturate(0) hue-rotate(186deg)\n brightness(104%) contrast(101%);\n`;\n\nexport const MilestoneProofPoints = styled.div`\n margin: 0 0 1.25rem;\n`;\n\nexport const MilestoneLocation = styled(Text)`\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin: 0 0 1.25rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n display: flex;\n align-items: center;\n gap: 0 0.5rem;\n svg {\n width: 12px;\n }\n`;\n\nexport const MilestoneImage = styled.img`\n max-width: 100%;\n margin: 0 0 1rem;\n`;\n","import React, { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//PROPS TYPE\nimport { MilestoneProps } from './Milestone.props';\n\n//COMPONENTS\nimport Conditions from 'components/Conditions';\nimport Icon from 'components/Icon';\nimport Proofpoint from 'components/ProofPoint';\nimport RenderHtml from 'components/RenderHtml';\nimport VideoPreview from 'components/VideoPreview';\n\n//STYLED\nimport {\n MilestoneContainer,\n MilestoneIcon,\n MilestoneIconBox,\n MilestoneImage,\n MilestoneLocation,\n MilestoneProofPoints,\n MilestoneTitle,\n} from './Milestone.styled';\n\nconst Milestone = ({ milestone }: MilestoneProps) => {\n const { t: productTranslation } = useTranslation('product');\n\n const $milestoneParent = useRef(null);\n\n return (\n \n \n \n \n \n {milestone.name}\n \n {milestone.proofPoints.filter(\n (proofpoint) =>\n proofpoint &&\n proofpoint.icon &&\n proofpoint.icon.icon &&\n !proofpoint.icon.icon.includes('c_')\n ).length > 0 && (\n \n {milestone.proofPoints.map(\n (proofpoint) =>\n proofpoint.shouldShowWidget && (\n \n )\n )}\n \n )}\n {milestone.location && (\n \n {milestone.location.name}\n \n )}\n {milestone.proofPoints.length > 0 &&\n milestone.proofPoints.map(\n (proofpoint) =>\n (!proofpoint.shouldShowWidget ||\n (proofpoint.shouldShowWidget &&\n proofpoint.conditions.length !== 0)) && (\n \n )\n )}\n {milestone.video && (\n \n )}\n {!milestone.video && !milestone.image.url.includes('placeholder') && (\n \n )}\n {milestone.description && (\n \n )}\n \n );\n};\n\nexport default Milestone;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const MilestoneListContainer = styled.div``;\nexport const MilestoneLisEmpty = styled(Text)``;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//PROPS TYPE\nimport { MilestoneListProps } from './MilestoneList.props';\n\n//COMPONENTS\nimport Milestone from './Milestone';\n\n//STYLED\nimport {\n MilestoneListContainer,\n MilestoneLisEmpty,\n} from './MilestoneList.styled';\n\nconst MilestoneList = ({ milestones }: MilestoneListProps) => {\n const { t: productTranslation } = useTranslation('product');\n\n return (\n \n {milestones.length > 0 ? (\n milestones.map((milestone) => (\n \n ))\n ) : (\n \n {productTranslation('content.productEmptyMilestones')}\n \n )}\n \n );\n};\n\nexport default MilestoneList;\n","import styled from 'styled-components';\n\nexport const ProductImagesContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n margin: 0 0 2rem;\n overflow: auto;\n padding: 1rem 0 1rem;\n\n &::-webkit-scrollbar {\n height: 8px;\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n border-radius: 6px;\n transition: all 0.3s ease-in-out;\n }\n\n &:hover::-webkit-scrollbar {\n background-color: #f5f5f5;\n }\n &:hover::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n }\n &:hover::-webkit-scrollbar-thumb {\n background-image: ${({ theme }) => theme.colors.buttonGradient};\n border-radius: 6px;\n }\n`;\nexport const ProductImagesPicture = styled.img`\n height: 17rem;\n margin: 0 1rem 0 0;\n object-fit: contain;\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { ProductImagesProps } from './ProductImages.props';\n\n//STYLED\nimport {\n ProductImagesContainer,\n ProductImagesPicture,\n} from './ProductImages.styled';\n\nconst ProductImages = ({ images }: ProductImagesProps) => {\n return (\n \n {images.map((image) => (\n \n ))}\n \n );\n};\n\nexport default ProductImages;\n","import styled from \"styled-components\"\nimport { Text } from \"components/Text\"\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const TemplateContainer = styled.div``\nexport const TemplateItem = styled.div``\nexport const TemplateSeparator = styled.div`\n margin: 1rem 0;\n height: 1px;\n background-color: ${({ theme }) => theme.colors.border};\n`\nexport const TemplateImage = styled.img<{margin?: string;}>`\n max-width: 100%;\n margin: ${({ margin }) => margin ? margin : 0};\n`\nexport const TemplateTitle = styled(Text)`\n font-size: 16px;\n line-height: 16px;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.fontSecondary};\n `\nexport const TemplateSubtitle = styled.span`\n font-size: 12px;\n line-height: 12px;\n color: ${({ theme }) => theme.colors.fontMain};\n font-weight: normal;\n`\nexport const TemplateLabel = styled(Text)`\n font-size: 12px;\n line-height: 12px;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.fontSecondary};\n margin-bottom: 10px;\n text-transform: uppercase;\n`\nexport const TemplateLabelPercents = styled(TemplateLabel)`\n display: flex;\n /* justify-content: space-between; */\n align-items: center;\n`\nexport const TemplateText = styled(Text)`\n font-size: 12px;\n line-height: 16px;\n color: ${({ theme }) => theme.colors.fontMain};\n`\nexport const TemplateLink = styled(Text)`\n font-size: 12px;\n line-height: 16px;\n color: ${({ theme }) => theme.colors.winePrimary};\n cursor: pointer;\n &:hover {\n color: ${({ theme }) => theme.colors.wineBlack};\n }\n`\nexport const TemplateTechDetail = styled.div<{margin?: string;}>`\n margin: ${({ margin }) => margin ? margin : 0};\n`\nexport const TemplateTechHeader = styled.div`\n display: flex;\n align-items: center;\n padding: 1rem 0 0;\n`\nexport const TemplateTechFooter = styled(Text)`\n font-size: 12px;\n line-height: 16px;\n color: ${({ theme }) => theme.colors.fontMain};\n font-weight: 600;\n`\nexport const TemplateTechPrincipal = styled.div`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n gap: 20px;\n margin-bottom: 1rem;\n @media (max-width: 1080px) {\n grid-template: 1fr / 1fr;\n }\n`\nexport const TemplateTechOther = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 1rem;\n gap: 1rem;\n flex-wrap: wrap;\n`\n\nexport const TemplateTechComposition = styled.div`\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 1rem;\n margin-bottom: 1rem;\n\n`\n\nexport const TemplateNutrient = styled.div``\nexport const TemplateNutrientLoop = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 1rem;\n`\nexport const TemplateNutrientItem = styled.div`\n padding: 0.5rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border: 1px solid ${({ theme }) => theme.colors.fontSecondary};\n`\nexport const TemplateNutrientItemNumber = styled(Text)`\n font-size: 14px;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.fontSecondary};\n margin: 0 0 0.25rem;\n`\nexport const TemplateNutrientItemName = styled(Text)`\n font-size: 0.625em;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.fontMain};\n`\nexport const TemplateIngredientItem = styled.div<{href?: string; target?: string; isLink?: boolean;}>`\n display: flex;\n align-items: center;\n gap: 0 1rem;\n transition: all 0.25s ease-in-out;\n border: 1px solid transparent;\n padding: 0.25rem;\n border-radius: 0.5rem;\n ${({ isLink, theme }) => isLink && `\n background-color: #f7f7f7;\n &:hover {\n border: 1px solid ${theme.colors.wineGrayLigth};\n }\n `}\n`\nexport const TemplateIngredientImage = styled.img`\n width: 70px;\n height: 70px;\n object-fit: cover;\n`\n\nexport const TemplateTech = styled.div<{wine?: boolean;}>`\n display: grid;\n grid-template: 1fr / 230px 1fr;\n grid-gap: 0 20px;\n @media (max-width: 768px) {\n grid-template: 1fr / 140px calc(100% - 160px);\n }\n\n ${({ wine, theme }) => wine && `\n font-family: ${theme.fonts.main};\n grid-template: 1fr / 1fr;\n @media (max-width: 768px) {\n grid-template: 1fr / 1fr;\n margin: 0 0 1.5rem;\n }\n `}\n`\n\nexport const TemplateIngredient = styled.div<{wine?: boolean;}>`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n gap: 1rem;\n @media (max-width: 1080px) {\n grid-template: 1fr / 1fr;\n }\n ${({ wine, theme }) => wine && `\n font-family: ${theme.fonts.main};\n `}\n`","import React from 'react';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport { useTranslation } from 'react-i18next';\nimport { ProductTabsTechDetail } from 'types/product';\n//STYLES\nimport {\n TemplateTech,\n TemplateImage,\n TemplateItem,\n TemplateTechHeader,\n TemplateTechFooter,\n TemplateTitle,\n TemplateSubtitle,\n TemplateSeparator,\n TemplateTechDetail,\n TemplateTechPrincipal,\n TemplateTechComposition,\n TemplateTechOther,\n TemplateLabel,\n TemplateText,\n} from './Template.styled';\nimport RenderHtml from 'components/RenderHtml/RenderHtml';\n\ninterface ProductTabsTechProp {\n tech: ProductTabsTechDetail;\n wine?: boolean;\n}\n\nconst ProductTabsTech = ({ tech, wine }: ProductTabsTechProp) => {\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n const { t } = useTranslation('product');\n\n return (\n \n {!wine && (\n \n {tech.image && (\n \n )}\n {matches && (\n <>\n \n {tech.otherDetails.map((other) => (\n \n {other.title}\n \n \n \n \n ))}\n \n \n )}\n \n )}\n\n \n \n \n {tech.title}{' '}\n {`- ${tech.subtitle}`}\n \n \n \n \n {tech.principalDetails.map((principal) => (\n \n {principal.title}\n \n \n \n \n ))}\n \n {!matches && (\n <>\n \n {tech.otherDetails.map((other) => (\n \n {other.title}\n \n {' '}\n \n \n ))}\n \n \n )}\n\n {tech.footer}\n \n \n );\n};\n\nexport default ProductTabsTech;\n","import React from 'react';\nimport { ProductTabsRecomendations } from 'types/product';\n//COMPONENTS\nimport RenderHtml from 'components/RenderHtml/RenderHtml';\n//STYLES\nimport {\n TemplateIngredient,\n TemplateIngredientItem,\n TemplateIngredientImage,\n TemplateTechDetail,\n TemplateLabel,\n TemplateText,\n} from './Template.styled';\n\ninterface ProductTabsRecommendationProp {\n recommendations: ProductTabsRecomendations;\n}\n\nconst ProductTabsRecommendation = ({\n recommendations,\n}: ProductTabsRecommendationProp) => {\n return (\n \n {recommendations.recommendations.map((recommendation, index) => (\n \n {recommendation.title}\n \n \n \n \n ))}\n \n );\n};\n\nexport default ProductTabsRecommendation;\n","import React from 'react';\nimport { ProductTabsIngredients } from 'types/product';\n//COMPONENTS\nimport RenderHtml from 'components/RenderHtml/RenderHtml';\n//STYLES\nimport {\n TemplateIngredient,\n TemplateIngredientImage,\n TemplateIngredientItem,\n TemplateLabel,\n TemplateTechDetail,\n TemplateText,\n} from './Template.styled';\n\ninterface ProductTabsIngredientProp {\n ingredients: ProductTabsIngredients;\n wine?: boolean;\n}\n\nconst ProductTabsIngredient = ({\n ingredients,\n wine,\n}: ProductTabsIngredientProp) => {\n return (\n \n {ingredients.ingredients.map((ingredient, index) => (\n \n \n \n {ingredient.title}\n \n \n \n \n \n ))}\n \n );\n};\n\nexport default ProductTabsIngredient;\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { ProductTabsPdfs, ProofPointEvidence } from 'types/product';\n//STORE\nimport { openModal as openEvidenceModal } from 'store/evidenceModal';\n//COMPONENTS\nimport RenderHtml from 'components/RenderHtml/RenderHtml';\n//STYLES\nimport {\n TemplateIngredient,\n TemplateIngredientItem,\n TemplateTechDetail,\n TemplateLabel,\n TemplateText,\n TemplateLink,\n} from './Template.styled';\n\ninterface ProductTabsIngredientProp {\n documents: ProductTabsPdfs;\n wine?: boolean;\n}\n\nconst ProductTabsPdf = ({ documents, wine }: ProductTabsIngredientProp) => {\n const { t } = useTranslation('product');\n\n const dispatch = useDispatch();\n\n const handleOpenEvidenceModal = useCallback(\n (evidence: ProofPointEvidence) => {\n dispatch(\n openEvidenceModal({\n evidence,\n })\n );\n },\n [dispatch]\n );\n\n return (\n \n {documents.documents.map((document, index) => (\n \n \n {document.title}\n \n \n \n {\n handleOpenEvidenceModal({\n evidenceName: document.title,\n file: document.document as string,\n pk: '',\n expirationDate: '',\n });\n }}\n >\n {t('content.clickToOpen')}\n \n \n \n ))}\n \n );\n};\n\nexport default ProductTabsPdf;\n","import styled from \"styled-components\"\nimport { Text } from \"components/Text\"\n\nexport const ProductTabsContainer = styled.div`\n margin-bottom: 2rem;\n`\nexport const ProductTabsHeader = styled.div<{size: number;}>`\n display: flex;\n list-style: none;\n padding: 0;\n margin: 0;\n position: relative;\n top: 1px;\n`\nexport const ProductTabsHead = styled(Text)<{active: boolean; fullWidth?: boolean;}>`\n font-size: 10px;\n line-height: 10px;\n color: ${({ theme }) => theme.colors.brand};\n text-transform: uppercase;\n font-weight: bold;\n height: 60px;\n padding: 0 2rem;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n border-right: 1px solid ${({ theme }) => theme.colors.border};\n border-top: 1px solid ${({ theme }) => theme.colors.border};\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n background-color: ${({ theme }) => theme.colors.backgroundGray};\n &:first-child {\n border-left: 1px solid ${({ theme }) => theme.colors.border};\n }\n &:hover {\n background-color: ${({ theme }) => theme.colors.white};\n }\n\n ${({ active, theme }) => active && `\n color: ${theme.colors.active};\n background-color: ${theme.colors.white};\n border-bottom: none;\n `}\n\n ${({ fullWidth }) => fullWidth && `\n width: 100%;\n `}\n`\nexport const ProductTabsBody = styled.div`\n background-color: ${({ theme }) => theme.colors.white};\n border: 1px solid ${({ theme }) => theme.colors.border};\n padding: 1rem;\n`\nexport const ProductTabsItem = styled.div<{active: boolean;}>`\n\n ${({ active }) => !active && `\n display: none;\n `}\n`\nexport const ProductTabsMobileContainer = styled.div``\nexport const ProductTabsMobileItem = styled.div``","import styled, { css } from 'styled-components';\n\nimport { Text } from 'components/Text';\n\nconst optionSelect = css`\n display: flex;\n align-items: center;\n gap: 0.5rem;\n margin: 0 0 0.5rem;\n &:last-child {\n margin: 0;\n }\n`;\n\nexport const SelectLanguageContainer = styled.div`\n max-width: 21.875rem;\n margin-left: 20px;\n`;\nexport const SelectLanguageLabel = styled.label`\n padding-left: 16px;\n color: ${({ theme }) => theme.colors.placeholder};\n font-weight: bold;\n font-size: 8px;\n display: inline-block;\n line-height: 10px;\n margin-bottom: 6px;\n text-transform: uppercase;\n letter-spacing: 0.75px;\n`;\nexport const SelectLanguageInput = styled.div<{ background?: string }>`\n box-sizing: border-box;\n font-size: inherit;\n font-family: inherit;\n -webkit-appearance: none;\n outline: none;\n background: transparent;\n color: inherit;\n font-weight: 600;\n margin: 0;\n border: 1px solid #ededee;\n border-radius: 0;\n width: 100%;\n font-size: 12px;\n font-weight: 500;\n line-height: 15px;\n border: none;\n`;\nexport const SelectLanguageInputChevron = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n width: 14px;\n height: 14px;\n justify-self: center;\n align-self: center;\n cursor: pointer;\n &.active_close {\n display: none;\n visibility: hidden;\n }\n &.active_arrow {\n transform: rotate(180deg);\n }\n }\n`;\n\nexport const SelectLanguageOptions = styled.div`\n position: absolute;\n top: 1.75rem;\n background: #fff;\n right: 0;\n padding: 0.75rem 1rem;\n z-index: 99999;\n box-shadow: rgba(16, 3, 22, 0.06) 0px 2px 10px 0px;\n max-height: 200px;\n overflow-y: auto;\n overflow-x: hidden;\n border: 1px solid #f1f1f1;\n width: 130px;\n`;\nexport const SelectLanguageOptionFlag = styled.img`\n /* max-width: 1.5rem; */\n width: 30px;\n height: 30px;\n object-fit: cover;\n object-position: center;\n border-radius: 30px;\n`;\nexport const SelectLanguageOptionName = styled(Text)`\n font-size: 0.75rem;\n line-height: 0.9375rem;\n color: ${({ theme }) => theme.colors.black};\n`;\nexport const SelectLanguageOption = styled.div<{ active: boolean }>`\n ${optionSelect};\n &:hover {\n ${SelectLanguageOptionName} {\n font-weight: bold;\n }\n }\n\n ${({ active }) =>\n active &&\n `\n ${SelectLanguageOptionName} {\n font-weight: bold;\n }\n `}\n`;\nexport const SelectLanguageInputSelect = styled.div`\n ${optionSelect};\n ${SelectLanguageOptionFlag} {\n /* max-height: 15px; */\n }\n`;\n\nexport const SelectLanguageInputBox = styled.div<{ isOpen: boolean }>`\n display: grid;\n grid-template: 1fr / 1fr 40px;\n /* border: 1px solid ${({ theme }) => theme.colors.placeholder}; */\n position: relative;\n cursor: pointer;\n /* width: 180px; */\n &:focus {\n outline: none;\n }\n\n ${({ isOpen }) =>\n isOpen &&\n `\n ${SelectLanguageInputChevron} {\n transform: rotate(-180deg);\n }\n `}\n`;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useSelector } from 'react-redux';\n//STORE\nimport { AppState } from 'store';\n//UTILS\nimport {\n LANGUAGE_MAP,\n LanguageMapProp,\n} from 'components/ProductTabs/templates/ProductLanguage';\n//PROPS TYPE\nimport { SelectLanguageProps } from './SelectLanguage.props';\n//STYLES\nimport Icon from 'components/Icon/Icon';\nimport {\n SelectLanguageContainer,\n SelectLanguageInput,\n SelectLanguageInputBox,\n SelectLanguageInputChevron,\n SelectLanguageInputSelect,\n SelectLanguageLabel,\n SelectLanguageOption,\n SelectLanguageOptionFlag,\n SelectLanguageOptionName,\n SelectLanguageOptions,\n} from './SelectLanguage.styled';\n\nconst SelectLanguage = ({\n label,\n placeholder = '',\n onSelect,\n}: SelectLanguageProps) => {\n const inputField = useRef(null);\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const { pk, translationStatus } = useSelector(\n (state: AppState) => state.product.product\n );\n\n const [languageSelect, setLanguageSelect] = useState<\n LanguageMapProp | undefined\n >(LANGUAGE_MAP.find((lang) => lang.shortName === 'en'));\n\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOnBlur = () => {\n // setIsOpen(false);\n if (inputField.current) inputField.current.blur();\n };\n\n const handleOnClick = () => {\n if (isOpen) {\n handleOnBlur();\n } else {\n setIsOpen(true);\n if (inputField.current) inputField.current.focus();\n }\n };\n\n const handleClickOption = (\n event: React.MouseEvent,\n language: LanguageMapProp\n ) => {\n event.stopPropagation();\n setLanguageSelect(language);\n handleOnBlur();\n if (onSelect) onSelect(language);\n };\n\n useEffect(() => {\n const languagueSelected = translateSelect.filter(\n (select) => select.idProduct === pk\n );\n\n if (pk && languagueSelected.length > 0) {\n const languageFound = LANGUAGE_MAP.find(\n (lang) => lang.shortName === languagueSelected[0].short_name\n );\n\n if (languageFound) {\n setLanguageSelect(languageFound);\n }\n }\n }, [translateSelect, pk]);\n\n useEffect(() => {\n if (\n translationStatus &&\n Object.keys(JSON.parse(translationStatus)).length === 1\n ) {\n setLanguageSelect(\n LANGUAGE_MAP.find(\n (lang) =>\n lang.shortName === Object.keys(JSON.parse(translationStatus))[0]\n )\n );\n }\n }, [translationStatus]);\n\n return (\n \n {label && (\n {label}\n )}\n \n \n {languageSelect ? (\n \n \n \n {languageSelect.shortName}\n \n \n ) : (\n placeholder\n )}\n \n \n \n \n {isOpen && (\n \n {LANGUAGE_MAP?.map((language) => (\n {\n handleClickOption(e, language);\n setIsOpen(false);\n }}\n active={\n language && language.shortName === languageSelect?.shortName\n }\n >\n \n \n {language.shortName}\n \n \n ))}\n \n )}\n \n \n );\n};\n\nexport default SelectLanguage;\n","import { LanguageMapProp } from 'components/ProductTabs/templates/ProductLanguage';\nimport React from 'react';\nimport { FilteredIngredients, FilteredIngredientsChild } from './TabNutrient';\nimport './style.css';\ninterface CommonProps {\n selectedLanguage: LanguageMapProp;\n toggleEanCode: (id: string, childId?: string) => void;\n}\ninterface ChildItemProps extends CommonProps {\n child: FilteredIngredientsChild;\n parentId: string;\n}\n\ninterface MainItemProps extends CommonProps {\n item: FilteredIngredients;\n}\n\nconst ChildItem = ({\n child,\n selectedLanguage,\n toggleEanCode,\n parentId,\n}: ChildItemProps) => (\n \n {child.show_ean ? (\n child.ean_code\n ) : child.translated_name ? (\n \n {child.translated_name[selectedLanguage.shortName]}\n \n ) : (\n ' '\n )}\n {/* {child.ean_code != null && child?.ean_code !== '' && (\n {\n toggleEanCode(parentId, child?.id);\n }}\n >\n \n \n )} */}\n \n);\n\nconst IngredientList = ({\n item,\n selectedLanguage,\n toggleEanCode,\n}: MainItemProps) => (\n \n {!!item.childs && item.childs.length > 0 ? (\n
\n \n {item.show_ean\n ? item.ean_code\n : item.translated_name[selectedLanguage.shortName]}\n {' '}\n {/* {item.ean_code != null && item?.ean_code !== '' && (\n {\n toggleEanCode(item.id);\n }}\n >\n \n \n )}{' '} */}\n  (\n {item?.childs.map((child, j) => (\n \n \n {j < item?.childs?.length - 1 && }\n \n ))}\n )\n
\n ) : (\n
\n \n {item?.childs?.length === 0 && item.show_ean\n ? item.ean_code\n : item.translated_name[selectedLanguage.shortName]}\n \n {/* {item.ean_code != null && item?.ean_code !== '' && (\n {\n toggleEanCode(item.id);\n }}\n >\n \n \n )} */}\n
\n )}\n \n);\n\nexport default IngredientList;\n","import { Text } from 'components/Text';\nimport styled from 'styled-components';\nimport { breakpoints } from 'theme/Theme.breackoints';\n\nexport const TabsContainer = styled.div`\n margin-bottom: 2rem;\n`;\nexport const TabsHeader = styled.div<{ size: number }>`\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n margin: 0 0 1.25rem;\n @media screen and (max-width: ${breakpoints.xs}px) {\n margin: 0;\n }\n`;\n\nexport const TabsHeadIcon = styled.div`\n svg {\n width: 12px;\n height: 12px;\n }\n`;\n\nexport const TabsHead = styled(Text)<{ active: boolean; fullWidth?: boolean }>`\n font-size: 1rem;\n line-height: 1rem;\n text-transform: capitalize;\n cursor: pointer;\n position: relative;\n padding: 1rem 0.625rem;\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n\n @media screen and (max-width: ${breakpoints.sm}px) {\n margin-right: 0.5rem;\n }\n\n &::after {\n content: \"\";\n position: absolute;\n background-color: ${({ theme, active }) =>\n active ? theme.colors.winePrimary : theme.colors.wineBlack};\n width: 100%;\n height: ${({ theme, active }) => (active ? '8px' : '1px')};\n z-index: 9;\n left: 0;\n right: 0;\n bottom: 0;\n @media screen and (max-width: ${breakpoints.xs}px) {\n background-color: ${({ theme, active }) =>\n active ? theme.colors.winePrimary : 'transparent'};\n }\n }\n\n ${({ active, theme }) =>\n active &&\n `\n color: ${theme.colors.winePrimary};\n ${TabsHeadIcon} {\n transform: rotate(180deg);\n }\n `}\n\n ${({ fullWidth }) =>\n fullWidth &&\n `\n width: 100%;\n `}\n @media screen and (max-width: ${breakpoints.xs}px) {\n padding: 1rem 0.625rem 1rem 0;\n display: flex;\n gap: 0 0.625rem;\n }\n`;\nexport const TabsBody = styled.div``;\nexport const TabsItem = styled.div<{ active: boolean }>`\n ${({ active }) =>\n !active &&\n `\n display: none;\n `}\n @media screen and (max-width: ${breakpoints.xs}px) {\n padding: 1rem 0 0;\n }\n`;\nexport const TabsMobileContainer = styled.div``;\nexport const TabsMobileItem = styled.div``;\nexport const TabNutrientContainer = styled.div<{ maxWidth: string }>`\n width: 100%;\n max-width: ${({ maxWidth }) => maxWidth};\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.875rem;\n color: ${({ theme }) => theme.colors.wineGray};\n`;\nexport const TabNutrientHeader = styled.div`\n display: grid;\n grid-template: 1fr / repeat(2, 1fr);\n @media screen and (max-width: ${breakpoints.xs}px) {\n grid-template: 1fr / 1fr 150px;\n }\n`;\nexport const TabNutrientHead = styled.div<{\n hiddenRight?: boolean;\n hiddenTop?: boolean;\n align?: string;\n}>`\n padding: 0.5rem;\n border-right: 1px solid ${({ theme }) => theme.colors.wineBlack};\n border-top: 1px solid ${({ theme }) => theme.colors.wineBlack};\n word-break: break-word;\n ${({ hiddenRight }) =>\n hiddenRight &&\n `\n border-right: none;\n `}\n\n ${({ hiddenTop }) =>\n hiddenTop &&\n `\n border-top: none;\n `}\n ${({ align }) =>\n align &&\n `\n text-align: ${align};\n `}\n`;\nexport const TabNutrientList = styled.div`\n margin: 0 0 1.5rem;\n`;\nexport const TabNutrientItem = styled.div`\n display: grid;\n grid-template: 1fr / repeat(2, 1fr);\n @media screen and (max-width: ${breakpoints.xs}px) {\n grid-template: 1fr / 1fr 150px;\n }\n`;\nexport const TabNutrientItemBody = styled.div<{\n hiddenRight?: boolean;\n hiddenTop?: boolean;\n child?: boolean;\n align?: string;\n}>`\n padding: 0.5rem;\n border-right: 1px solid ${({ theme }) => theme.colors.wineBlack};\n border-top: 1px solid ${({ theme }) => theme.colors.wineBlack};\n word-break: break-word;\n ${({ hiddenRight }) =>\n hiddenRight &&\n `\n border-right: none;\n `}\n\n ${({ hiddenTop }) =>\n hiddenTop &&\n `\n border-top: none;\n `}\n\n ${({ child }) =>\n child &&\n `\n padding: 0 0 1rem 2rem;\n `}\n\n ${({ align }) =>\n align &&\n `\n text-align: ${align};\n `}\n`;\nexport const TabNutrientText = styled.p`\n margin: 0 0 1.5rem;\n font-size: 0.875rem;\n color: ${({ theme }) => theme.colors.wineGray};\n`;\n\nexport const TemplateIngredientModalListItemIcon = styled(Text)<{\n active: boolean;\n}>`\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n svg {\n width: 18px;\n height: 18px;\n color: ${({ theme }) => theme.colors.wineGray};\n ${({ active, theme }) =>\n active &&\n `\n color: ${theme.colors.brand};\n `}\n }\n`;\n\nexport const TabIngredientLi = styled.li<{ fontWeight?: string | number }>`\n position: relative;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n border-bottom: 1px solid #ededed;\n margin-bottom: 0.75rem;\n padding-bottom: 0.35rem;\n padding-right: 0.5rem;\n cursor: pointer;\n font-size: 0.9rem;\n font-weight: ${(props) => props.fontWeight || 'normal'};\n overflow-x: auto;\n width: 100%;\n gap: 0.25rem;\n\n &::before {\n content: '|';\n margin-right: 0.5rem;\n color: rgb(78, 99, 165);\n }\n\n &::-webkit-scrollbar {\n height: 4px;\n background-color: #f5f5f5;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-thumb {\n background-image: ${({ theme }) => theme.colors.buttonGradient};\n border-radius: 6px;\n transition: all 0.3s ease-in-out;\n }\n\n span {\n // color: rgb(78, 99, 165);\n width: fit-content;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n","import {\n LANGUAGE_MAP,\n LanguageMapProp,\n} from 'components/ProductTabs/templates/ProductLanguage';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { AppState } from 'store';\nimport { ProductTabsNutrients, TabsTechDetail } from 'types/product';\n//STYLES\nimport SelectLanguage from 'components/SelectLanguage/SelectLanguage';\nimport { setWineProductLanguage } from 'store/proofPointDetailModal';\nimport { TabsDetailLanguageTypes } from 'types/product';\nimport IngredientList from './IngredientList';\nimport {\n TabNutrientContainer,\n TabNutrientHead,\n TabNutrientHeader,\n TabNutrientItem,\n TabNutrientItemBody,\n TabNutrientList,\n} from './Tabs.styled';\n\ninterface TabNutrientProp {\n nutrient: ProductTabsNutrients;\n maxWidth?: string;\n}\n\nexport interface FilteredIngredientsChild {\n disable: boolean;\n value: boolean;\n id: string;\n internal_id: string;\n name: string;\n translated_name: TabsDetailLanguageTypes;\n show_ean: boolean;\n ean_code: string | null;\n category?: 'Allergin' | 'Ecological' | 'Other';\n is_allergin?: boolean;\n}\n\nexport interface FilteredIngredients {\n id: string;\n name: string;\n childs: FilteredIngredientsChild[];\n text: string;\n translated_name: TabsDetailLanguageTypes;\n show_ean: boolean;\n ean_code: string | null;\n category?: 'Allergin' | 'Ecological' | 'Other';\n is_allergin?: boolean;\n}\n\nconst TabNutrient = ({ nutrient, maxWidth = '600px' }: TabNutrientProp) => {\n const { t } = useTranslation('product');\n\n const dispatch = useDispatch();\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const { pk, translationStatus } = useSelector(\n (state: AppState) => state.product.product\n );\n\n const [selectedLanguage, setSelectedLanguage] = useState<\n LanguageMapProp | undefined\n >(LANGUAGE_MAP.find((lang) => lang.shortName === 'en'));\n const [\n selectedFilteredIngredients,\n setSelectedFilteredIngredients,\n ] = useState(null);\n\n const percentDiary: TabsTechDetail[] = JSON.parse(nutrient.details);\n\n useEffect(() => {\n const ingredients: FilteredIngredients[] = !!nutrient.ingredientsFiltered\n ? JSON.parse(nutrient.ingredientsFiltered)\n : null;\n\n setSelectedFilteredIngredients(ingredients);\n }, [nutrient.ingredientsFiltered]);\n\n /**\n * @function toggleEanCode\n * @description Function to toggle the ean code\n */\n const toggleEanCode = (parentId: string, childId?: string) => {\n if (!selectedFilteredIngredients) return;\n const newIngredients = selectedFilteredIngredients.map((ingredient) => {\n if (ingredient.id === parentId) {\n if (childId !== undefined) {\n const newChilds = ingredient.childs.map((child) => {\n if (child.id === childId) {\n return {\n ...child,\n show_ean: !child.show_ean,\n };\n }\n return child;\n });\n return {\n ...ingredient,\n childs: newChilds,\n };\n }\n console.log(ingredient);\n return {\n ...ingredient,\n show_ean: !ingredient.show_ean,\n };\n }\n return ingredient;\n });\n\n setSelectedFilteredIngredients(newIngredients);\n };\n\n const calories =\n Object.entries(JSON.parse(nutrient.calories)).length === 0\n ? null\n : JSON.parse(nutrient.calories);\n\n const handleLanguage = (language: LanguageMapProp) => {\n setSelectedLanguage(language);\n dispatch(setWineProductLanguage(language));\n };\n\n useEffect(() => {\n const languagueSelected = translateSelect.filter(\n (select) => select.idProduct === pk\n );\n\n if (pk && languagueSelected.length > 0) {\n const languageFound = LANGUAGE_MAP.find(\n (lang) => lang.shortName === languagueSelected[0].short_name\n );\n\n if (languageFound) {\n setSelectedLanguage(languageFound);\n dispatch(setWineProductLanguage(languageFound));\n }\n }\n }, [translateSelect, pk]);\n\n useEffect(() => {\n if (!translationStatus) return;\n\n const parsedTranslationStatus = JSON.parse(translationStatus);\n const translationKeys = Object.keys(parsedTranslationStatus);\n\n // When it has only one translation shortname\n if (translationKeys.length !== 1) return;\n\n const _foundLanguage = LANGUAGE_MAP.find(\n (lang) => lang.shortName === translationKeys[0]\n );\n\n if (_foundLanguage) {\n setSelectedLanguage(_foundLanguage);\n dispatch(setWineProductLanguage(_foundLanguage));\n }\n }, [translationStatus]);\n\n // const nutrientTranslation = {\n // es: 'INFORMACIÓN NUTRICIONAL',\n // en: 'NUTRITIONAL INFORMATION',\n // ca: 'INFORMACIÓ NUTRICIONAL',\n // fr: 'INFORMATIONS NUTRITIONNELLES',\n // de: 'NÄHRWERTE',\n // it: 'INFORMAZIONI NUTRIZIONALI',\n // };\n\n return (\n \n \n {/*
\n

\n {t('ingredients')}\n

\n
*/}\n \n \n {!!selectedFilteredIngredients &&\n selectedFilteredIngredients.length > 0 &&\n selectedLanguage && (\n <>\n

\n {selectedLanguage?.ingredient}\n

\n
\n {selectedFilteredIngredients\n .filter((item) => item.translated_name)\n .map((item, i, array) => (\n <>\n \n {i < array.length - 1 && <>, }\n \n ))}\n
\n \n )}\n\n
\n

\n {/* {nutrientTranslation[\n selectedLanguage?.shortName as keyof typeof nutrientTranslation\n ] || nutrientTranslation.en} */}\n\n {t('nutrients')}\n

\n
\n\n \n \n \n {selectedLanguage && selectedLanguage.usage}\n \n \n \n {!!calories && (\n \n \n {selectedLanguage && selectedLanguage.value}\n \n \n {Math.round(\n parseFloat(calories[0].value) +\n (!!nutrient.discountCalories\n ? parseFloat(nutrient.discountCalories) *\n (!!nutrient.scaleFactor\n ? parseFloat(nutrient.scaleFactor)\n : 4.184)\n : 0)\n )}\n {calories[0].label}\n {` - `}\n {Math.round(\n parseFloat(calories[1].value) +\n (!!nutrient.discountCalories\n ? parseFloat(nutrient.discountCalories)\n : 0)\n )}\n {calories[1].label}\n \n \n )}\n\n {percentDiary\n .filter(\n (percent) =>\n !!percent.visible && percent.title != 'alcoholicStrength'\n )\n .map((percent, index) => (\n \n \n {selectedLanguage &&\n percent.translated_title &&\n percent.translated_title[selectedLanguage.shortName]}\n
\n \n {selectedLanguage &&\n percent.translated_subtext &&\n percent.translated_subtext[selectedLanguage.shortName]}\n \n \n \n {percent.description}\n {percent.unit}\n \n
\n ))}\n
\n
\n );\n};\n\nexport default TabNutrient;\n","import React from 'react';\nimport { ProductTabs as ProductTabsList } from 'types/product';\n//COMPONENTS\nimport ProductTabsTech from './templates/ProductTabs.tech';\nimport ProductTabsRecommendation from './templates/ProductTabs.recommendation';\nimport ProductTabsNutrient from './templates/ProductTabs.nutrient';\nimport ProductTabsIngredient from './templates/ProductTabs.ingredient';\nimport ProductTabsPdf from './templates/ProductTabs.pdf';\n//STYLES\nimport {\n ProductTabsMobileContainer,\n ProductTabsMobileItem,\n ProductTabsHeader,\n ProductTabsHead,\n ProductTabsBody,\n ProductTabsItem,\n} from './ProductTabs.styled';\nimport TabNutrient from 'screens/Wine/components/Tabs/TabNutrient';\n\ninterface ProductTabMobileProps {\n tabs: ProductTabsList[];\n active: string;\n setActive: (pk: string) => void;\n}\n\nconst ProductTabMobile = ({\n tabs,\n active,\n setActive,\n}: ProductTabMobileProps) => {\n return (\n \n {tabs.map((tab) => (\n \n \n \n {tab.title}\n \n \n \n \n {tab.technicalDetail && (\n \n )}\n {tab.ingredientList && (\n \n )}\n {tab.fileList && }\n {tab.nutritionFact && (\n \n )}\n {tab.recommendationList && (\n \n )}\n \n \n \n ))}\n \n );\n};\n\nexport default ProductTabMobile;\n","import React from 'react';\nimport { ProductTabs as ProductTabsList } from 'types/product';\n//COMPONENTS\nimport ProductTabsTech from './templates/ProductTabs.tech';\nimport ProductTabsRecommendation from './templates/ProductTabs.recommendation';\nimport ProductTabsNutrient from './templates/ProductTabs.nutrient';\nimport ProductTabsPdf from './templates/ProductTabs.pdf';\nimport ProductTabsIngredient from './templates/ProductTabs.ingredient';\n//STYLES\nimport {\n ProductTabsHeader,\n ProductTabsHead,\n ProductTabsBody,\n ProductTabsItem,\n} from './ProductTabs.styled';\nimport TabNutrient from 'screens/Wine/components/Tabs/TabNutrient';\n\ninterface ProductTabDesktopProps {\n tabs: ProductTabsList[];\n active: string;\n setActive: (pk: string) => void;\n}\n\nconst ProductTabDesktop = ({\n tabs,\n active,\n setActive,\n}: ProductTabDesktopProps) => {\n return (\n <>\n \n {tabs.map((tab) => (\n {\n setActive(tab.pk);\n }}\n >\n {tab.title}\n \n ))}\n \n \n {tabs.map((tab) => (\n \n {tab.technicalDetail && (\n \n )}\n {tab.ingredientList && (\n \n )}\n {tab.fileList && }\n {tab.nutritionFact && (\n \n )}\n {tab.recommendationList && (\n \n )}\n \n ))}\n \n \n );\n};\n\nexport default ProductTabDesktop;\n","import React, { useState } from 'react';\nimport { ProductTabs as ProductTabsList } from 'types/product';\nimport { useMediaQuery } from '@react-hook/media-query';\n//COMPONENTS\nimport ProductTabsMobile from './ProductTab.mobile';\nimport ProductTabsDesktop from './ProductTab.desktop';\n//STYLES\nimport { ProductTabsContainer } from './ProductTabs.styled';\n\ninterface ProductTabsProps {\n tabs: ProductTabsList[];\n}\n\ninterface MapTemplateTabs {\n template: JSX.Element;\n}\n\nconst ProductTabs = ({ tabs }: ProductTabsProps) => {\n const matches = useMediaQuery('only screen and (max-width: 980px)');\n\n const [active, setActive] = useState(tabs[0].pk);\n\n return (\n \n {matches ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default ProductTabs;\n","import styled from 'styled-components';\nimport { sm, md, lg, xs } from 'theme/Theme.breackoints';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const RelatedProductsContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n margin: 0 0 2rem;\n overflow: auto;\n padding: 1rem 0 1rem;\n gap: 0 1rem;\n\n &::-webkit-scrollbar {\n height: 8px;\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n border-radius: 6px;\n transition: all 0.3s ease-in-out;\n }\n\n &:hover::-webkit-scrollbar {\n background-color: #f5f5f5;\n }\n &:hover::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n }\n &:hover::-webkit-scrollbar-thumb {\n background-image: ${({ theme }) => theme.colors.buttonGradient};\n border-radius: 6px;\n }\n ${xs`\n padding: 1rem 0 2rem;\n `}\n`;\n\nexport const RelatedProductsItemImage = styled.img`\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: all 0.5s ease-in-out;\n`;\nexport const RelatedProductsItemAction = styled(Text)`\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.875rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.white};\n left: 0;\n z-index: 9;\n padding: 1rem 0.875rem;\n bottom: 20px;\n opacity: 0;\n transition: all 0.25s ease-in-out;\n svg {\n width: 0.75rem;\n height: 0.875rem;\n margin: 0 0 0 0.5rem;\n }\n ${xs`\n padding: 0.75rem;\n `}\n`;\nexport const RelatedProductsItemOverlay = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: linear-gradient(\n 360deg,\n rgba(0, 0, 0, 0.4) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n z-index: 5;\n transition: all 0.25s ease-in-out;\n`;\nexport const RelatedProductsItemName = styled(Text)`\n font-size: 0.875rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.white};\n transition: all 0.25s ease-in-out;\n padding: 1rem 0.875rem;\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 9;\n max-width: 100%;\n ${xs`\n padding: 0.75rem;\n `}\n`;\nexport const RelatedProductsItem = styled.div`\n flex: 0 0 auto;\n cursor: pointer;\n user-select: none;\n background: #fbfbfb;\n width: calc(calc(100% / 3) - 12px);\n border: 1px solid ${({ theme }) => theme.colors.border};\n position: relative;\n height: 15rem;\n max-height: 16rem;\n overflow: hidden;\n box-shadow: 0 2px 10px 0 rgb(16 3 22 / 6%);\n &:hover {\n ${RelatedProductsItemOverlay} {\n opacity: 0.7;\n }\n ${RelatedProductsItemImage} {\n transform: scale(1.05);\n }\n ${RelatedProductsItemName} {\n opacity: 0;\n bottom: -20px;\n }\n ${RelatedProductsItemAction} {\n opacity: 1;\n bottom: 0;\n text-shadow: 0 2px 4px rgb(16 3 22 / 25%);\n }\n }\n a {\n height: 100%;\n }\n ${lg`\n width: calc(calc(100% / 2) - 12px);\n `}\n ${sm`\n width: calc(calc(100% / 2) - 12px);\n `}\n ${xs`\n height: 10rem;\n `}\n`;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//PROPS TYPE\nimport { RelatedProductsProps } from './RelatedProducts.props';\n\n//COMPONENTS\nimport Link from 'components/Link';\nimport Icon from 'components/Icon';\n\n//STYLES\nimport {\n RelatedProductsContainer,\n RelatedProductsItem,\n RelatedProductsItemImage,\n RelatedProductsItemName,\n RelatedProductsItemOverlay,\n RelatedProductsItemAction,\n} from './RelatedProducts.styles';\n\nconst RelatedProducts = ({ products }: RelatedProductsProps) => {\n const { t } = useTranslation('commons');\n\n return (\n \n {products.map((product) => (\n \n \n \n {t('content.seeMore')} \n \n \n \n {product.name}\n \n \n ))}\n \n );\n};\n\nexport default RelatedProducts;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const SealItemContainer = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.border};\n background-color: ${({ theme }) => theme.colors.white};\n box-shadow: 0 2px 10px 0 rgb(16 3 22 / 6%);\n padding: 1.25rem 1.5rem;\n max-width: 8.5rem;\n margin: 0 1rem 0 0;\n width: 100%;\n margin: 0 1rem 0 0;\n flex: 1 0 auto;\n cursor: pointer;\n transition: all 0.25s ease-in-out;\n &:last-child {\n margin: 0;\n }\n &:hover {\n transform: translateY(-0.25rem);\n }\n`;\nexport const SealItemIcon = styled.img`\n width: 3.5rem;\n margin: 0 0 1rem -0.25rem;\n`;\nexport const SealItemName = styled(Text)`\n font-size: 0.625rem;\n line-height: 0.95rem;\n text-transform: uppercase;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.fontSecondary};\n`;\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n\n//STORE\nimport { openModal } from 'store/proofPointModal';\n\n//PROPS TYPE\nimport { SealProps } from './Seals.props';\n\n//STYLED\nimport {\n SealItemContainer,\n SealItemIcon,\n SealItemName,\n} from './SealItem.styled';\n\nconst SealItem = ({ proof }: SealProps) => {\n const dispatch = useDispatch();\n\n const handleOpenProofPointModal = useCallback(() => {\n dispatch(\n openModal({\n proof,\n })\n );\n }, [dispatch, proof]);\n\n return (\n \n {proof && proof.icon && proof.icon.icon && (\n \n )}\n {proof && proof.icon && {proof.icon.label}}\n \n );\n};\n\nexport default SealItem;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const SealsContainer = styled.div`\n display: flex;\n overflow: auto;\n flex-wrap: nowrap;\n margin: 0 0 1rem;\n padding: 0 0 1rem;\n transition: all 0.25s ease-in-out;\n\n &::-webkit-scrollbar {\n height: 8px;\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n border-radius: 6px;\n transition: all 0.3s ease-in-out;\n }\n\n &:hover::-webkit-scrollbar {\n background-color: #f5f5f5;\n }\n &:hover::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n }\n &:hover::-webkit-scrollbar-thumb {\n background-image: ${({ theme }) => theme.colors.buttonGradient};\n border-radius: 6px;\n }\n\n ${sm`\n padding: 0 0 1rem;\n `}\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { SealsProps } from './Seals.props';\n\n//COMPONENTS\nimport SealItem from './SealItem';\n\n//STYLED\nimport { SealsContainer } from './Seals.styled';\n\nconst Seals = ({ featuredProofs }: SealsProps) => {\n const SEALS_LIST =\n featuredProofs &&\n featuredProofs.filter(\n (proof) =>\n proof && proof.icon && proof.icon.icon && proof.icon.icon.includes('c_')\n );\n\n return (\n <>\n {SEALS_LIST.length > 0 ? (\n \n {SEALS_LIST.map(\n (proof) =>\n proof && proof.pk && \n )}\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default Seals;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const SectionHeaderContainer = styled.div`\n display: flex;\n align-items: center;\n height: 5rem;\n`;\nexport const SectionHeaderText = styled(Text)`\n font-size: 1rem;\n line-height: 1rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.black};\n text-transform: uppercase;\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { SectionHeaderProps } from './SectionHeader.props';\n\n//STYLES\nimport {\n SectionHeaderContainer,\n SectionHeaderText,\n} from './SectionHeader.styled';\n\nconst SectionHeader = ({ text }: SectionHeaderProps) => {\n return (\n \n {text}\n \n );\n};\n\nexport default SectionHeader;\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\nimport { Text } from 'components/Text';\n\nexport const ProductSection = styled.section`\n width: 100%;\n ${sm`\n \n `}\n`;\n\nexport const ProductGrid = styled.div`\n width: 100%;\n display: grid;\n grid-template: 1fr / calc(100% - 24.5rem) 23rem;\n grid-gap: 0 1.5rem;\n min-height: calc(100vh - 15.375rem);\n margin: 0 0 2rem;\n ${sm`\n grid-template: 1fr / 1fr;\n overflow: hidden;\n padding: 5rem 0 0;\n `}\n`;\nexport const ProductColumns = styled.div`\n ${sm`\n width: calc(100vw - 2rem);\n `}\n`;\nexport const ProductContent = styled.div`\n padding: 0 0 3rem;\n ${sm`\n width: 100%;\n max-width: calc(100vw - 2rem);\n `}\n`;\nexport const ProductSideBar = styled.aside`\n border-left: 1px solid ${({ theme }) => theme.colors.border};\n flex: 1;\n height: 100%;\n padding: 0 0 2.5rem 2.5rem;\n ${sm`\n padding: 0 0 2.5rem 0;\n border: none;\n `}\n`;\nexport const ProductInfoTitle = styled(Text)`\n color: ${({ theme }) => theme.colors.fontSecondary};\n text-transform: uppercase;\n margin: 0 0 0.5rem;\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: 700;\n`;\nexport const ProductInfoData = styled(Text)`\n font-size: 0.75rem;\n line-height: 1.25rem;\n margin: 0 0 1rem;\n color: ${({ theme }) => theme.colors.black};\n`;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n//STORE\nimport { AppState } from 'store';\n//PROPS TYPE\nimport { ProductDesktopViewProps } from './ProductDesktopView.props';\n//COMPONENTS\nimport CustomerReviews from 'components/CustomerReviews';\nimport FeatureProofPoints from 'components/FeatureProofPoints';\nimport MilestoneList from 'components/MilestoneList';\nimport ProductImages from 'components/ProductImages';\nimport ProductTabs from 'components/ProductTabs';\nimport RelatedProducts from 'components/RelatedProducts';\nimport RenderHtml from 'components/RenderHtml';\nimport Seals from 'components/Seals';\nimport SectionHeader from 'components/SectionHeader';\nimport SocialShare from 'components/SocialShare';\n//STYLES\nimport {\n ProductColumns,\n ProductContent,\n ProductGrid,\n ProductInfoData,\n ProductInfoTitle,\n ProductSection,\n ProductSideBar,\n} from '../../Product.styled';\n\nconst ProductDesktopView = ({\n product,\n relatedProducts,\n}: ProductDesktopViewProps) => {\n const { t } = useTranslation('product');\n\n const location = useLocation();\n\n const lotInternalId = useSelector(\n (state: AppState) => state.product.lotInternalId\n );\n\n return (\n \n \n \n \n \n {product &&\n product.featuredProofPoints &&\n product.featuredProofPoints.length > 0 && (\n \n )}\n\n {product &&\n product.featuredProofPoints &&\n product.featuredProofPoints.length > 0 && (\n \n )}\n\n {location.pathname.includes('/lot/') && (\n <>\n {t('content.productLots')}\n {lotInternalId}\n \n )}\n {product && product.description && (\n <>\n \n {t('content.productDescription')}\n \n \n \n )}\n\n {product && product.images && product.images.length > 0 && (\n <>\n \n {t('content.productImages')}\n \n \n \n )}\n\n {product && product.tabs && product.tabs.length > 0 && (\n \n )}\n\n {product && product.thumbnail && (\n \n )}\n\n {product &&\n product.reviewStats &&\n product.reviews &&\n product.reviews.edges && (\n \n )}\n\n {relatedProducts &&\n relatedProducts.products &&\n relatedProducts.products.length > 0 && (\n <>\n \n {t('content.productRelated')}\n \n \n \n )}\n \n \n \n \n {/* */}\n \n {product && product.journey && (\n \n )}\n \n \n \n \n );\n};\n\nexport default ProductDesktopView;\n","import _ from 'lodash';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n//PROPS TYPE\nimport { ProductMobileViewProps } from './ProductMobileView.props';\n//STORE\nimport { AppState } from 'store';\n//COMPONENTS\nimport CustomerReviews from 'components/CustomerReviews';\nimport FeatureProofPoints from 'components/FeatureProofPoints';\nimport MilestoneList from 'components/MilestoneList';\nimport ProductImages from 'components/ProductImages';\nimport ProductTabs from 'components/ProductTabs';\nimport RelatedProducts from 'components/RelatedProducts';\nimport RenderHtml from 'components/RenderHtml';\nimport Seals from 'components/Seals';\nimport SectionHeader from 'components/SectionHeader';\n//STYLES\nimport {\n ProductContent,\n ProductGrid,\n ProductInfoData,\n ProductInfoTitle,\n ProductSection,\n ProductSideBar,\n} from '../../Product.styled';\n\nconst ProductMobileView = ({\n product,\n relatedProducts,\n}: ProductMobileViewProps) => {\n const { t } = useTranslation('product');\n\n const location = useLocation();\n\n const { tab } = useSelector((state: AppState) => state.mobileNav);\n const lotInternalId = useSelector(\n (state: AppState) => state.product.lotInternalId\n );\n\n return (\n \n \n {!_.isEmpty(product) && (\n \n {(() => {\n switch (tab) {\n case 'info':\n return (\n <>\n \n {product &&\n product.featuredProofPoints &&\n product.featuredProofPoints.length > 0 && (\n \n )}\n\n {product && product.featuredProofPoints.length > 0 && (\n \n )}\n {location.pathname.includes('/lot/') && (\n <>\n \n {t('content.productLots')}\n \n {lotInternalId}\n \n )}\n {product && product.description && (\n <>\n \n {t('content.productDescription')}\n \n \n \n )}\n\n {product && product.images && product.images.length > 0 && (\n <>\n \n {t('content.productImages')}\n \n \n \n )}\n {product && product.tabs && product.tabs.length > 0 && (\n \n )}\n\n {relatedProducts &&\n relatedProducts.products &&\n relatedProducts.products.length > 0 && (\n <>\n \n {t('content.productRelated')}\n \n \n \n )}\n \n );\n case 'reviews':\n return (\n <>\n {product && (\n \n )}\n \n );\n case 'share':\n return (\n
\n \n
\n );\n default:\n return (\n \n {/* */}\n \n {product && (\n \n )}\n \n );\n }\n })()}\n
\n )}\n
\n
\n );\n};\n\nexport default ProductMobileView;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\n\nexport const ProofPointModalHeader = styled.div`\n position: relative;\n padding: 0 0 1.5rem;\n margin: 0 0 1.5rem;\n &::before {\n position: absolute;\n content: '';\n width: 11.25rem;\n height: 1px;\n background-color: ${({ theme }) => theme.colors.placeholder};\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0 auto;\n }\n`;\nexport const ProofPointModalName = styled(Text)`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n font-size: 1.125rem;\n line-height: 2rem;\n font-weight: bold;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.black};\n`;\nexport const ProofPointModalIcon = styled.img`\n width: 2rem;\n margin: 0 0 0.5rem;\n`;\nexport const ProofPointModalVerified = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n`;\nexport const ProofPointModalExpirationDate = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n margin: 0 0 1rem;\n`;\nexport const ProofPointModalContent = styled.div`\n text-align: center;\n`;\nexport const ProofPointModalContentTitle = styled(Text)`\n font-size: 0.875rem;\n line-height: 1.5rem;\n font-weight: bold;\n margin: 0 0 1rem;\n color: ${({ theme }) => theme.colors.black};\n text-align: center;\n`;\nexport const ProofPointModalContentAction = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 0 2rem;\n`;\nexport const ProofPointModalContentLogo = styled.img`\n width: 6.25rem;\n margin: 0 auto 1.125rem;\n`;\n\nexport const ProofPointModalContainer = styled.div<{wine?: boolean;}>`\n ${({ wine, theme }) => wine && `\n color: ${theme.colors.wineGray};\n ${ProofPointModalName} {\n font-family: Rozha One;\n text-transform: capitalize;\n font-size: 2.5rem;\n line-height: 3rem;\n margin: 0 0 0.5rem;\n }\n ${ProofPointModalIcon} {\n margin: 0 0 0.5rem;\n }\n ${ProofPointModalContentTitle} {\n font-weight: bold;\n font-size: 0.875rem;\n }\n ${ProofPointModalHeader} {\n padding: 0;\n &::before {\n display: none;\n }\n }\n ${ProofPointModalContentAction} {\n margin: 0 0 3.5rem;\n }\n `}\n`;","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport moment from 'moment';\n\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/proofPointModal';\nimport { openModal } from 'store/proofPointDetailModal';\n\n//PROPS TYPE\nimport { ProofPointModalProps } from './ProofPointModal.props';\n\n//COMPONETNS\nimport Modal from 'components/Modal';\nimport RenderHtml from 'components/RenderHtml';\nimport Button from 'components/Button';\n\n//STYLES\nimport { ModalContent } from 'components/Modal/Modal.styled';\nimport {\n ProofPointModalContainer,\n ProofPointModalHeader,\n ProofPointModalName,\n ProofPointModalVerified,\n ProofPointModalExpirationDate,\n ProofPointModalIcon,\n ProofPointModalContent,\n ProofPointModalContentTitle,\n ProofPointModalContentAction,\n ProofPointModalContentLogo,\n} from './ProofPointModal.styled';\n\nconst ProofPointModal = ({ hiddeClose, wine }: ProofPointModalProps) => {\n const { t } = useTranslation('modalProofPoints');\n\n const dispatch = useDispatch();\n\n const { isOpen, proof } = useSelector(\n (state: AppState) => state.proofPointModal\n );\n\n const proofWithExpirationDates =\n proof &&\n proof.evidences &&\n proof.evidences.length > 0 &&\n proof.evidences.filter((evidence) => !!evidence.expirationDate);\n\n const handleCloseModal = useCallback(() => {\n if (!hiddeClose) {\n dispatch(closeModal());\n }\n }, [dispatch, hiddeClose]);\n\n const handleOpenProofPointDetailModal = useCallback(() => {\n dispatch(openModal({ proof }));\n }, [dispatch, proof]);\n\n return (\n \n \n \n \n \n {proof && proof.icon && proof.icon.icon && (\n \n )}\n {proof && proof.name && proof.name.toLowerCase()}\n \n \n {proof &&\n proof.verifier &&\n proof.verifier.name &&\n proof.verifier.name.toLowerCase().includes('swearit')\n ? t('content.verifiedBySwearit')\n : t('content.verified')}\n \n \n \n \n {t('content.whatDoesThisMean')}\n \n {proof && proof.description && (\n \n )}\n \n handleOpenProofPointDetailModal()}\n wine={wine}\n outline\n />\n \n {proofWithExpirationDates &&\n proofWithExpirationDates.length > 0 && (\n \n {t('content.expirationDate')}\n \n )}\n {proofWithExpirationDates &&\n proofWithExpirationDates.length > 0 &&\n proofWithExpirationDates.map((evidence) => (\n <>\n \n {`${moment(evidence.expirationDate).format(\n 'DD/MM/YYYY'\n )} - ${evidence.evidenceName}`}\n \n \n ))}\n {/* {proof && proof.expirationDate && (\n \n )} */}\n {wine ? (\n \n {t('content.verifiedBy')}\n \n ) : (\n \n {t('content.verifiedBy')}\n \n )}\n\n {proof && proof.verifier && proof.verifier.logo && (\n \n )}\n\n {proof && proof.verifier && proof.verifier.description && (\n \n )}\n \n handleCloseModal()}\n wine={wine}\n />\n \n \n \n \n \n );\n};\n\nexport default ProofPointModal;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\n\nexport const ProofPointDetailModalHeader = styled.div`\n position: relative;\n padding: 0 0 1.25rem;\n margin: 0 0 1.5rem;\n &::before {\n position: absolute;\n content: '';\n width: 11.25rem;\n height: 1px;\n background-color: ${({ theme }) => theme.colors.placeholder};\n left: 0;\n right: 0;\n bottom: 0;\n margin: 0 auto;\n }\n`;\nexport const ProofPointDetailModalName = styled(Text)`\n text-align: center;\n font-size: 1.125rem;\n line-height: 2rem;\n font-weight: bold;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.black};\n`;\n\nexport const ProofPointDetailModalText = styled(Text)`\n display: flex;\n align-items: center;\n justify-content: center;\n text-align: center;\n font-size: 0.875rem;\n line-height: 0.875rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n span {\n margin: 0 0.5rem 0 0;\n }\n strong {\n margin: 0 0 0 0.5rem;\n }\n`;\n\nexport const ProofPointDetailModalIcon = styled.img`\n width: 2rem;\n margin: 0 auto 0.5rem;\n`;\nexport const ProofPointDetailModalVerified = styled(Text)`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n text-transform: uppercase;\n color: ${({ theme }) => theme.colors.green};\n text-align: center;\n`;\nexport const ProofPointDetailModalContent = styled.div``;\nexport const ProofPointDetailModalContentTitle = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n text-transform: uppercase;\n margin: 0 0 1rem;\n color: ${({ theme }) => theme.colors.black};\n`;\nexport const ProofPointDetailModalContentText = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 0.875rem;\n margin: 0 0 2.5rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n`;\nexport const ProofPointDetailModalEvidences = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n margin: 0 0 2.5rem;\n`;\nexport const ProofPointDetailModalAction = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const ProofPointDetailModalEvidencesLink = styled.a`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n margin: 0 0 0.5rem;\n color: ${({ theme }) => theme.colors.brand};\n transition: all 0.25s ease-in-out;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n &:focus {\n outline: none;\n }\n`;\nexport const ProofPointDetailModalEvidencesButton = styled.button`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n margin: 0 0 0.5rem;\n color: ${({ theme }) => theme.colors.brand};\n transition: all 0.25s ease-in-out;\n outline: none;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n &:focus {\n outline: none;\n }\n`;\n\nexport const ProofPointDetailModalContainer = styled.div<{wine?: boolean;}>`\n ${({ wine, theme }) => wine && `\n ${ProofPointDetailModalName} {\n font-family: ${theme.fonts.wine};\n text-transform: capitalize;\n color: ${theme.colors.wineBlack};\n font-size: 2.5rem;\n line-height: 3rem;\n }\n ${ProofPointDetailModalText} {\n color: ${theme.colors.wineGray};\n }\n ${ProofPointDetailModalVerified} {\n font-weight: 400;\n margin: 0 0 0.5rem;\n }\n ${ProofPointDetailModalContentTitle} {\n font-size: 1.125rem;\n font-family: ${theme.fonts.wine};\n text-transform: capitalize;\n }\n ${ProofPointDetailModalEvidencesLink} {\n color: ${theme.colors.wineBlack};\n font-size: 0.875rem;\n &:hover {\n color: ${theme.colors.winePrimary};\n }\n }\n ${ProofPointDetailModalEvidencesButton} {\n color: ${theme.colors.wineBlack};\n font-size: 0.875rem;\n &:hover {\n color: ${theme.colors.winePrimary};\n }\n }\n `}\n\n`;","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\n//UTILS\nimport { getInitials } from 'utils/get-initials';\n\n//ASSETS\nimport VerifiedIcon from 'assets/images/verified.png';\n\n//STORE\nimport { AppState } from 'store';\nimport { openModal as openBlockchainDetailModal } from 'store/blockchainDetailModal';\nimport { openModal as openEvidenceModal } from 'store/evidenceModal';\nimport { openModal as openMediaEvidenceModal } from 'store/mediaEvidenceModal';\nimport { closeModal } from 'store/proofPointDetailModal';\n\n//PROPS TYPE\nimport { ProofPointEvidence } from 'types/product';\n\n//COMPONETNS\nimport Avatar from 'components/Avatar';\nimport Button from 'components/Button';\nimport Modal from 'components/Modal';\n\n//STYLES\nimport { ModalContent } from 'components/Modal/Modal.styled';\nimport {\n ProofPointDetailModalAction,\n ProofPointDetailModalContainer,\n ProofPointDetailModalContent,\n ProofPointDetailModalContentText,\n ProofPointDetailModalContentTitle,\n ProofPointDetailModalEvidences,\n ProofPointDetailModalEvidencesButton,\n ProofPointDetailModalEvidencesLink,\n ProofPointDetailModalHeader,\n ProofPointDetailModalIcon,\n ProofPointDetailModalName,\n ProofPointDetailModalText,\n ProofPointDetailModalVerified,\n} from './ProofPointDetailModal.styled';\n\ninterface ProofPointDetailModalProps {\n wine?: boolean;\n}\nconst ProofPointDetailModal = ({ wine }: ProofPointDetailModalProps) => {\n const { t } = useTranslation('modalProofDetail');\n\n const dispatch = useDispatch();\n\n const { isOpen, proof } = useSelector(\n (state: AppState) => state.proofPointDetailModal\n );\n const { blockStats } = useSelector((state: AppState) => state.blockStats);\n\n const handleCloseModal = useCallback(() => {\n dispatch(closeModal());\n }, [dispatch]);\n\n const handleOpenEvidenceModal = useCallback(\n (evidence: ProofPointEvidence) => {\n dispatch(\n openEvidenceModal({\n evidence,\n })\n );\n },\n [dispatch]\n );\n\n const handleOpenMediaEvidenceModal = useCallback(\n (media: { name: string; url: string }) => {\n dispatch(\n openMediaEvidenceModal({\n media: media,\n })\n );\n },\n [dispatch]\n );\n\n const handleOpenBlochainDetailModal = useCallback(() => {\n dispatch(\n openBlockchainDetailModal({\n proof,\n })\n );\n }, [dispatch, proof]);\n\n return (\n \n \n \n \n \n \n {t('content.verified')}\n \n {proof && proof.name && (\n \n {t('content.proofPointForName', {\n name: proof.name,\n }).toLowerCase()}\n \n )}\n {proof && proof.verifier && (\n \n {t('content.proofPointForBy')}\n {proof && proof.verifier && proof.verifier.logo && (\n \n )}{' '}\n {proof.verifier.name}\n \n )}\n \n \n \n {t('content.evidences')}\n \n {(proof && proof.evidences && proof.evidences.length > 0) ||\n (proof &&\n proof.mediaEvidences &&\n proof.mediaEvidences.length > 0) ? (\n \n {proof.mediaEvidences.length > 0 &&\n proof.mediaEvidences.map((media, index) => {\n return media.type === 'WEB' ? (\n \n {media.name}\n \n ) : (\n {\n handleOpenMediaEvidenceModal({\n name: media.name,\n url: media.url,\n });\n }}\n key={`${index}-${media.name}`}\n >\n {media.name}\n \n );\n })}\n {proof.evidences.length > 0 &&\n proof.evidences.map((evidendce, index) => {\n return (\n {\n handleOpenEvidenceModal(evidendce);\n }}\n key={index}\n >\n {evidendce.evidenceName\n ? evidendce.evidenceName\n : evidendce.pk}\n \n );\n })}\n \n ) : (\n \n Esta prueba no posee evidencias\n \n )}\n \n {\n if (!blockStats.errors) {\n handleOpenBlochainDetailModal();\n }\n }}\n wine\n outline\n disabled={!!blockStats.errors && blockStats.errors.length > 0}\n />\n \n \n \n \n \n );\n};\n\nexport default ProofPointDetailModal;\n","import styled, { keyframes } from 'styled-components';\n\nconst ldsRing = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const LoadingInner = styled.div`\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 22px;\n height: 22px;\n margin: 0;\n border: 3px solid ${({ theme }) => theme.colors.brand};\n border-radius: 50%;\n animation: ${ldsRing} 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: ${({ theme }) => theme.colors.brand} transparent transparent\n transparent;\n &:nth-child(1) {\n animation-delay: -0.45s;\n }\n &:nth-child(2) {\n animation-delay: -0.3s;\n }\n &:nth-child(3) {\n animation-delay: -0.15s;\n }\n`;\nexport const Loading = styled.div`\n display: inline-block;\n position: relative;\n width: 22px;\n height: 22px;\n margin-right: 10px;\n`;\n\ninterface LoadingSpinnerContent {\n margin?: string;\n}\n\nexport const LoadingSpinnerContent = styled.div`\n display: flex;\n align-items: center;\n margin: ${({ margin }) => (margin ? margin : '20px 0 0')};\n`;\nexport const LoadingMessage = styled.p`\n font-size: 12px;\n color: ${({ theme }) => theme.colors.brand};\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { LoadingSpinnerProps } from './LoaderSpinner.props';\n\n//STYLES\nimport {\n Loading,\n LoadingInner,\n LoadingSpinnerContent,\n LoadingMessage,\n} from './LoaderSpinner.styled';\n\nconst LoaderSpinner = ({ message, isLoading, margin }: LoadingSpinnerProps) => {\n return isLoading ? (\n \n \n \n \n \n \n {message && {message}}\n \n ) : (\n <>\n );\n};\n\nexport default LoaderSpinner;\n","import styled from 'styled-components';\n\nexport const LoadingContainer = styled.div<{ backgroundColor?: string }>`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ backgroundColor }) =>\n backgroundColor ? backgroundColor : 'rgba(255, 255, 255, 0.8)'};\n z-index: 9;\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { LoadingProps } from './Loading.props';\n\n//COMPONENTS\nimport LoaderSpinner from 'components/LoaderSpinner';\n\n//STYLES\nimport { LoadingContainer } from './Loading.styled';\n\nconst Loading = ({ backgroundColor, isLoading }: LoadingProps) => {\n return isLoading ? (\n \n \n \n ) : (\n <>\n );\n};\n\nexport default Loading;\n","import styled, { keyframes } from 'styled-components';\nimport { Text } from 'components/Text';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const MediaEvicenceModalContainer = styled.div`\n position: relative;\n padding: 0 0 58.25%;\n`;\nexport const MediaEvicenceModalMedia = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n`;\nexport const MediaEvicenceModalLoading = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n background: ${({ theme }) => theme.colors.white};\n display: flex;\n justify-content: center;\n align-items: center;\n animation-duration: 0.5s;\n transition-timing-function: ease-in;\n animation-fill-mode: both;\n animation-name: ${fadeIn};\n z-index: 9;\n`;\nexport const MediaEvicenceModalError = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n background: ${({ theme }) => theme.colors.white};\n display: flex;\n justify-content: center;\n align-items: center;\n animation-duration: 0.5s;\n transition-timing-function: ease-in;\n animation-fill-mode: both;\n animation-name: ${fadeIn};\n z-index: 9;\n flex-direction: column;\n`;\nexport const MediaEvicenceModalErrorImage = styled.img`\n width: 9.375rem;\n margin: 0 0 0.5rem;\n`;\nexport const MediaEvicenceModalErrorText = styled(Text)`\n text-align: center;\n font-size: 1.125rem;\n line-height: 2rem;\n font-weight: bold;\n color: #100316;\n margin: 0 0 0.5rem;\n`;\nexport const MediaEvicenceModalErrorSubText = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #a89fac;\n max-width: 350px;\n margin: 0 auto 1.5rem;\n`;\n","import React, { useCallback, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\n//ASSETS\nimport ErrorHandlerGraphic from 'assets/images/error-handler-graphic.png';\n\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/mediaEvidenceModal';\n\n//COMPONENTS\nimport Loading from 'components/Loading';\nimport Modal from 'components/Modal';\nimport ReactPlayer from 'react-player';\n\n//STYLES\nimport {\n MediaEvicenceModalContainer,\n MediaEvicenceModalError,\n MediaEvicenceModalErrorImage,\n MediaEvicenceModalErrorSubText,\n MediaEvicenceModalErrorText,\n MediaEvicenceModalLoading,\n MediaEvicenceModalMedia,\n} from './MediaEvicenceModal.styled';\n\ninterface MediaEvicenceModalProps {\n wine?: boolean;\n}\nconst MediaEvicenceModal = ({ wine }: MediaEvicenceModalProps) => {\n const { t } = useTranslation('modalMediaEvidence');\n\n const dispatch = useDispatch();\n\n const { media, isOpen } = useSelector(\n (state: AppState) => state.mediaEvidenceModal\n );\n\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n const handleCloseModal = useCallback(() => {\n dispatch(closeModal());\n }, [dispatch]);\n\n function convertShortsToEmbed(url: string) {\n // Check if the URL contains \"/shorts/\"\n if (url?.includes('/shorts/')) {\n // Replace \"/shorts/\" with \"/embed/\"\n return url?.replace('/shorts/', '/embed/');\n }\n return url;\n }\n\n return (\n \n \n {isLoading && (\n \n \n \n )}\n {hasError && (\n \n \n \n {t('content.textError')}\n \n \n {t('content.subTextError')}\n \n \n )}\n \n {\n setIsLoading(false);\n }}\n onError={() => {\n setHasError(true);\n setIsLoading(false);\n }}\n />\n \n \n \n );\n};\n\nexport default MediaEvicenceModal;\n","export interface GetTypeFile {\n name: string;\n contentType: string;\n}\n\nexport const getTypeFile: (type: string) => GetTypeFile | undefined = (\n type: string\n) => {\n if (type.includes('pdf')) {\n return {\n name: 'pdf',\n contentType: type,\n };\n } else if (\n type.includes('png') ||\n type.includes('jpg') ||\n type.includes('jpeg') ||\n type.includes('gif')\n ) {\n return {\n name: 'image',\n contentType: type,\n };\n } else if (\n type.includes('mp4') ||\n type.includes('ogg') ||\n type.includes('webm')\n ) {\n return {\n name: 'video',\n contentType: type,\n };\n }\n};\n","import styled, { keyframes } from 'styled-components';\n\nimport { Text } from 'components/Text';\n\nconst fadeIn = keyframes`\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n`;\n\nexport const EvidenceModalContainer = styled.div`\n position: relative;\n background-color: #fff;\n width: 100%;\n min-height: 20rem;\n`;\n\nexport const EvidenceModalContent = styled.div<{ show: boolean }>`\n opacity: 0;\n visibility: hidden;\n ${({ show }) =>\n show &&\n `\n opacity: 1;\n visibility: visible;\n `}\n`;\n\nexport const EvidenceModalViewerContainer = styled.div`\n height: 750px;\n`;\n\nexport const EvidenceModalLoading = styled(Text)`\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n background: ${({ theme }) => theme.colors.white};\n display: flex;\n justify-content: center;\n align-items: center;\n animation-duration: 0.5s;\n transition-timing-function: ease-in;\n animation-fill-mode: both;\n animation-name: ${fadeIn};\n z-index: 9;\n`;\nexport const EvidenceModalImage = styled.img`\n width: 100%;\n`;\nexport const EvidenceModalVideo = styled.video`\n width: 100%;\n`;\nexport const EvidenceModalNotFile = styled.div``;\nexport const EvidenceModalNotFileTitle = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n text-transform: uppercase;\n margin: 0 0 1rem;\n color: ${({ theme }) => theme.colors.black};\n`;\nexport const EvidenceModalNotFileLink = styled.a`\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.brand};\n transition: all 0.25s ease-in-out;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n`;\nexport const EvicenceModalError = styled.div`\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n background: ${({ theme }) => theme.colors.white};\n display: flex;\n justify-content: center;\n align-items: center;\n animation-duration: 0.5s;\n transition-timing-function: ease-in;\n animation-fill-mode: both;\n animation-name: ${fadeIn};\n z-index: 9;\n flex-direction: column;\n`;\nexport const EvicenceModalErrorImage = styled.img`\n width: 9.375rem;\n margin: 0 0 0.5rem;\n`;\nexport const EvicenceModalErrorText = styled(Text)`\n text-align: center;\n font-size: 1.125rem;\n line-height: 2rem;\n font-weight: bold;\n color: #100316;\n margin: 0 0 0.5rem;\n`;\nexport const EvicenceModalErrorSubText = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #a89fac;\n max-width: 350px;\n margin: 0 auto 1.5rem;\n`;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n//UTILS\nimport { getTypeFile } from 'utils/get-type-file';\n//ASSETS\nimport ErrorHandlerGraphic from 'assets/images/error-handler-graphic.png';\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/evidenceModal';\n//PROPS TYPE\nimport { EvidenceFile, EvidenceModalProps } from './EvidenceModal.props';\n//COMPONENTS\nimport Modal from 'components/Modal';\nimport Viewer, { Worker } from '@phuocng/react-pdf-viewer';\nimport Loading from 'components/Loading';\n//STYLES\nimport {\n EvidenceModalContainer,\n EvidenceModalContent,\n EvidenceModalViewerContainer,\n EvidenceModalImage,\n EvidenceModalVideo,\n EvidenceModalLoading,\n EvidenceModalNotFile,\n EvidenceModalNotFileTitle,\n EvidenceModalNotFileLink,\n EvicenceModalError,\n EvicenceModalErrorImage,\n EvicenceModalErrorText,\n EvicenceModalErrorSubText,\n} from './EvidenceModal.styled';\n\nconst EvidenceModal = ({ wine }: EvidenceModalProps) => {\n const { t } = useTranslation('modalEvidence');\n\n const dispatch = useDispatch();\n\n const { evidence, isOpen } = useSelector(\n (state: AppState) => state.evidenceModal\n );\n\n const [evidenceFile, setEvidenceFile] = useState(\n {} as EvidenceFile\n );\n const [isLoadingFile, setIsLoadingFile] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n useEffect(() => {\n setIsLoadingFile(true);\n if (isOpen) {\n fetch(evidence.file)\n .then((response) => {\n return response.blob().then((blob) => {\n return {\n contentType: response.headers.get('Content-Type'),\n raw: blob,\n };\n });\n })\n .then(({ raw, contentType }) => {\n setIsLoadingFile(false);\n const reader = new FileReader();\n reader.onload = () => reader.result;\n reader.readAsDataURL(raw);\n reader.onload = () => {\n if (getTypeFile(raw.type)?.name !== 'none') {\n setEvidenceFile({\n type: getTypeFile(raw.type),\n result: reader.result,\n });\n }\n };\n })\n .catch((error) => {\n setIsLoadingFile(false);\n setHasError(true);\n });\n }\n }, [evidence, isOpen]);\n\n const handleCloseModal = useCallback(() => {\n dispatch(closeModal());\n setEvidenceFile({} as EvidenceFile);\n }, [dispatch]);\n\n const EvidenveRender = () => {\n if (evidenceFile && evidenceFile.type && evidenceFile.result) {\n switch (evidenceFile.type.name) {\n case 'pdf':\n return (\n \n \n \n \n \n );\n case 'image':\n return (\n \n );\n case 'video':\n return (\n \n );\n default:\n return (\n \n \n You can download this file here\n \n \n {evidence.file}\n \n \n );\n }\n }\n };\n\n return (\n \n \n {isLoadingFile && (\n \n \n \n )}\n {hasError && (\n \n \n \n {t('content.textError')}\n \n \n {t('content.subTextError')}\n \n \n )}\n \n {EvidenveRender()}\n \n {/* {(() => {\n \n })()} */}\n \n \n );\n};\n\nexport default EvidenceModal;\n","import momment from 'moment';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\n//STORE\nimport { AppState } from 'store';\n\n//PROPS TYPE\nimport { AppHeaderType } from 'module/AppHeader/AppHeader.props';\nimport { ProofBlock } from 'types/blocknitive';\n\n//COMPONENTS\nimport HashPlaceholder from 'components/HashPlaceholder';\n\n//STYLES\nimport { getTranslation } from 'i18n/languages/blockchainModal';\nimport {\n BlockchainDetailModalBlock,\n BlockchainDetailModalBlockDate,\n BlockchainDetailModalBlockText,\n BlockchainDetailModalBlockTime,\n BlockchainDetailModalClickElement,\n BlockchainDetailModalCondition,\n BlockchainDetailModalContentContainer,\n BlockchainDetailModalContentGrid,\n BlockchainDetailModalContentGridItem,\n BlockchainDetailModalContentLabel,\n BlockchainDetailModalContentSeparator,\n BlockchainDetailModalContentText,\n BlockchainDetailModalContentTitle,\n BlockchainDetailModalContentWrapper,\n BlockchainDetailModalTable,\n BlockchainDetailModalTableHead,\n} from './BlockchainDetailModal.styled';\n\ninterface BlockchainDetailModalContentProps {\n proofBlockData: ProofBlock;\n type: AppHeaderType;\n deguelleDate?: string | null;\n certLang?: string | null;\n}\n\nconst BlockchainDetailModalContent = ({\n proofBlockData,\n type,\n deguelleDate,\n certLang = null,\n}: BlockchainDetailModalContentProps) => {\n const { t } = useTranslation('modalBlockChain');\n\n const location = useLocation();\n\n const { proof, isStatic } = useSelector(\n (state: AppState) => state.blockchainDetailModal\n );\n const { blockStats } = useSelector((state: AppState) => state.blockStats);\n const { product } = useSelector((state: AppState) => state.product);\n const { organization } = useSelector((state: AppState) => state.organization);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const [proofOne, proofTwo, ...conditions] = proof?.conditions ?? [];\n\n const showMoreConditions = () => {\n setIsOpen(!isOpen);\n };\n\n // get certificateId from url query params\n const query = new URLSearchParams(location.search);\n const certificateId = query.get('certificateId');\n\n return (\n \n \n \n \n {certLang != null\n ? getTranslation(certLang, 'function')\n : t('content.function')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'name')\n : t('content.name')}\n \n \n getProof\n \n \n \n \n \n \n {certLang != null\n ? getTranslation(certLang, 'createAt')\n : t('content.createAt')}\n \n {!isStatic && (\n <>\n \n {certLang != null\n ? getTranslation(certLang, 'time')\n : t('content.time')}\n \n \n {momment(proof?.createdAt).format('h:mm:ss a')}\n \n \n )}\n \n {certLang != null\n ? getTranslation(certLang, 'date')\n : t('content.date')}\n \n \n {momment(proof?.createdAt)?.format('DD/MM/YY') || '23/04/2892'}\n \n {isStatic && (\n <>\n
\n \n {certLang != null\n ? getTranslation(certLang, 'etiDate')\n : t('content.etiDate')}\n \n \n {momment(deguelleDate)?.format('DD/MM/YY') || '23/04/2892'}\n \n \n )}\n
\n {proof?.conditions.length > 0 && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'conditions')\n : t('content.conditions')}\n \n {proofOne && (\n \n \n {proofOne?.typeDisplay}\n \n \n {proofOne?.value}\n {proofOne?.unit ? ` ${proofOne?.unit}` : ''}\n \n \n )}\n {proofTwo && (\n \n \n {proofTwo?.typeDisplay}\n \n \n {proofTwo?.value}\n {proofTwo?.unit ? ` ${proofTwo?.unit}` : ''}\n \n \n )}\n {isOpen &&\n conditions.map(\n ({ typeDisplay, unit, value }: any, index: any) => {\n return (\n \n \n {typeDisplay}\n \n \n {value}\n {unit ? ` ${unit}` : ''}\n \n \n );\n }\n )}\n {conditions.length > 0 && (\n \n {isOpen\n ? certLang\n ? getTranslation(certLang, 'seeLessConditions')\n : t('content.seeLessConditions')\n : certLang\n ? getTranslation(certLang, 'seeMoreConditions')\n : t('content.seeMoreConditions')}\n \n )}\n \n )}\n
\n
\n \n {(type === 'product' || type === 'lot') && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'productName')\n : t('content.productName')}\n \n \n {product.name}\n \n \n )}\n {!isStatic && type === 'organization' && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'organizationName')\n : t('content.organizationName')}\n \n \n {organization.name}\n \n \n )}\n {!isStatic && proofBlockData && proofBlockData?.transactionId && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'taxId')\n : t('content.taxId')}\n \n \n {proofBlockData?.transactionId}\n \n \n )}\n {/* {!isStatic && (\n <> */}\n {(type === 'product' || type === 'lot') && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'productId')\n : t('content.productId')}\n \n \n {product?.pk}\n \n \n )}\n {/* \n )} */}\n {isStatic && (\n <>\n
\n {(type === 'product' || type === 'lot') && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'bottleId')\n : t('content.bottleId')}\n \n \n {certificateId || ''}\n \n \n )}\n \n )}\n {type === 'organization' && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'organizationId')\n : t('content.organizationId')}\n \n \n {organization?.pk}\n \n \n )}\n {!isStatic && (\n <>\n \n \n \n {certLang != null\n ? getTranslation(certLang, 'proofName')\n : t('content.proofName')}\n \n \n {proof?.name}\n \n \n {/* {(type === 'product' || type === 'lot') && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'productId')\n : t('content.productId')}\n \n \n {product?.pk}\n \n \n )}{' '} */}\n \n \n {certLang != null\n ? getTranslation(certLang, 'proofId')\n : t('content.proofId')}\n \n \n {proof?.pk}\n \n \n\n {proof?.evidences.length > 0 && (\n \n \n {certLang != null\n ? getTranslation(certLang, 'evidences')\n : t('content.evidences')}\n \n {proof?.evidences?.map((evidence, index) => {\n return (\n \n {evidence.pk}\n \n );\n })}\n \n )}\n \n )}\n
\n \n {!isStatic &&\n proofBlockData &&\n proofBlockData.blocknitive &&\n proofBlockData.blocknitive.header &&\n proofBlockData.blocknitive.data.length > 0 &&\n proofBlockData.blocknitive.data[0].header && (\n <>\n \n {certLang != null\n ? getTranslation(certLang, 'hasgProofPoint')\n : t('content.hasgProofPoint')}\n \n \n \n {certLang != null\n ? getTranslation(certLang, 'height')\n : t('content.height')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'hash')\n : t('content.hash')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'minedOn')\n : t('content.minedOn')}\n \n \n \n \n {proofBlockData.blockId}\n \n \n \n {momment(\n proofBlockData.blocknitive.data[0].header.timestamp\n ).format('YY/MM/DD')}\n \n {momment(\n proofBlockData.blocknitive.data[0].header.timestamp\n ).format('h:mm a')}\n \n \n \n \n \n )}\n\n \n {certLang != null\n ? getTranslation(certLang, 'lastestBlocks')\n : t('content.lastestBlocks')}\n \n \n \n {certLang != null\n ? getTranslation(certLang, 'height')\n : t('content.height')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'hash')\n : t('content.hash')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'minedOn')\n : t('content.minedOn')}\n \n \n {blockStats &&\n blockStats.data &&\n blockStats.data.blocknitiveStats &&\n blockStats.data.blocknitiveStats.blocks &&\n blockStats.data.blocknitiveStats.blocks.length > 0 ? (\n <>\n {blockStats.data.blocknitiveStats.blocks.map(\n ({ header: { dataHash, number }, data }, index: any) => {\n let timestampValue = data[0].header.timestamp;\n return (\n \n \n {number}\n \n \n \n {momment(timestampValue).format('YY/MM/DD')}\n \n {momment(timestampValue).format('h:mm a')}\n \n \n \n );\n }\n )}\n \n ) : (\n \n {certLang != null\n ? getTranslation(certLang, 'anyLastOperation')\n : t('content.anyLastOperation')}\n \n )}\n \n \n \n \n \n {certLang != null\n ? getTranslation(certLang, 'response')\n : t('content.response')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'status')\n : t('content.status')}\n \n \n 200\n \n \n \n \n {certLang != null\n ? getTranslation(certLang, 'results')\n : t('content.results')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'verification')\n : t('content.verification')}\n \n \n {certLang != null\n ? getTranslation(certLang, 'valid')\n : t('content.valid')}\n \n \n \n \n
\n );\n};\n\nexport default BlockchainDetailModalContent;\n","import { useQuery } from '@apollo/react-hooks';\nimport React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n\n//QUERIES\nimport { blockProofPointQuery } from 'queries/blocknitive';\n\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/blockchainDetailModal';\n\n//PROPS TYPE\nimport { BlockchainDetailModalProps } from './BlockchainDetailModal.props';\n\n//COMPONETNS\nimport Modal from 'components/Modal';\nimport BlockchainDetailModalContent from './BlockchainDetailModalContent';\nimport BlockchainDetailModalHeader from './BlockchainDetailModalHeader';\nimport BlockchainDetailModalLoading from './BlockchainDetailModalLoading';\n\n//STYLED\nimport { ModalContent } from 'components/Modal/Modal.styled';\nimport { getTranslation } from 'i18n/languages/blockchainModal';\nimport {\n BlockchainDetailModalButton,\n BlockchainDetailModalContainer,\n} from './BlockchainDetailModal.styled';\n\nconst BlockchainDetailModal = ({\n deguelleDate,\n type,\n wine,\n certLang = null,\n}: BlockchainDetailModalProps) => {\n const { t } = useTranslation('modalBlockChain');\n\n const dispatch = useDispatch();\n\n const { isOpen, proof } = useSelector(\n (state: AppState) => state.blockchainDetailModal\n );\n\n const { data: proofBlockData, loading } = useQuery(blockProofPointQuery, {\n variables: { pk: proof?.pk },\n });\n\n const handleCloseModal = useCallback(() => {\n dispatch(closeModal());\n }, [dispatch]);\n\n return (\n \n \n \n {loading ? (\n \n ) : (\n <>\n \n {proofBlockData && (\n \n )}\n\n \n {certLang != null\n ? getTranslation(certLang, 'back')\n : t('content.back')}\n \n \n )}\n \n \n \n );\n};\n\nexport default BlockchainDetailModal;\n","import gql from 'graphql-tag';\n\nexport const reviewCreate = gql`\n mutation($reviewCreate: ProductReviewCreateInput!) {\n reviewCreate(input: $reviewCreate) {\n id\n }\n }\n`;\n\nexport const reviewOrganizationCreate = gql`\n mutation($reviewCreate: OrganizationReviewCreateInput!) {\n organizationReviewCreate(input: $reviewCreate) {\n id\n }\n }\n`;\n\nexport const reviewLotCreate = gql`\n mutation($reviewCreate: ProductLotReviewCreateInput!) {\n lotReviewCreate(input: $reviewCreate) {\n id\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const LabelContainer = styled.label`\n font-size: 0.65rem;\n line-height: 0.625rem;\n font-weight: 700;\n padding-left: 1rem;\n color: ${({ theme }) => theme.colors.fontSecondary};\n margin: 0 0 0.25rem;\n text-transform: uppercase;\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { LabelProps } from './Label.props';\n\n//STYLES\nimport { LabelContainer } from './Label.styled';\n\nconst Label = ({ name, children, tx }: LabelProps) => {\n const content = children ? children : tx;\n return {content};\n};\n\nexport default Label;\n","import styled from 'styled-components';\n\nexport const InputContainer = styled.div``;\nexport const InputStyled = styled.input`\n width: 100%;\n appearance: none;\n background-color: ${({ theme }) => theme.colors.white};\n border-color: ${({ theme }) => theme.colors.border};\n border-width: 1px;\n border-radius: 0;\n padding-top: 0.5rem;\n padding-right: 0.75rem;\n padding-bottom: 0.5rem;\n padding-left: 0.75rem;\n font-size: 0.875rem;\n line-height: 1.5;\n outline: none;\n color: ${({ theme }) => theme.colors.black};\n padding: 0.75rem 1rem;\n outline: 0;\n &:focus {\n outline: none;\n }\n ::placeholder {\n color: ${({ theme }) => theme.colors.placeholder};\n }\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { InputProps } from './Input.props';\n\n//COMPONENTS\nimport Label from 'components/Label';\n\n//STYLES\nimport { InputContainer, InputStyled } from './Input.styled';\n\nexport default function Input({\n name,\n label,\n error,\n placeholder,\n handleBlur,\n handleChange,\n type = 'text',\n}: InputProps) {\n return (\n \n \n \n \n );\n}\n","import styled from 'styled-components';\n\nexport const TextAreaContainer = styled.div``;\nexport const TextAreaStyled = styled.textarea`\n width: 100%;\n appearance: none;\n background-color: ${({ theme }) => theme.colors.white};\n border-color: ${({ theme }) => theme.colors.border};\n border-width: 1px;\n border-radius: 0;\n padding-top: 0.5rem;\n padding-right: 0.75rem;\n padding-bottom: 0.5rem;\n padding-left: 0.75rem;\n font-size: 0.875rem;\n outline: none;\n line-height: 1.5;\n color: ${({ theme }) => theme.colors.black};\n padding: 0.75rem 1rem;\n outline: 0;\n resize: none;\n &:focus {\n outline: none;\n }\n ::placeholder {\n color: ${({ theme }) => theme.colors.placeholder};\n }\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { TextAreaProps } from './TextArea.props';\n\n//COMPONENTS\nimport Label from 'components/Label';\n\n//STYLES\nimport { TextAreaContainer, TextAreaStyled } from './TextArea.styled';\n\nconst TextArea = ({\n name,\n label,\n error,\n placeholder,\n handleBlur,\n handleChange,\n}: TextAreaProps) => {\n return (\n \n \n \n \n );\n};\n\nexport default TextArea;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const ReviewModalContainer = styled.div`\n position: relative;\n`;\nexport const ReviewModalImage = styled.img`\n width: 9.375rem;\n margin: -5.375rem auto 0.5rem;\n`;\nexport const ReviewModalTitle = styled(Text)`\n text-align: center;\n font-size: 1.125rem;\n line-height: 2rem;\n font-weight: bold;\n color: #100316;\n margin: 0 0 0.5rem;\n`;\nexport const ReviewModalSubtitle = styled(Text)`\n text-align: center;\n font-size: 0.875rem;\n line-height: 1.25rem;\n color: #a89fac;\n max-width: 350px;\n margin: 0 auto 1.5rem;\n`;\nexport const ReviewModalActions = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\nexport const ReviewModalForm = styled.div`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n grid-template-areas: 'title name' 'commment email' 'submit submit';\n grid-gap: 1rem 1.5rem;\n`;\nexport const ReviewModalFormRating = styled.div`\n margin: 1rem 0 0;\n`;\nexport const ReviewModalFormControl = styled.div<{ gridArea?: string }>`\n ${({ gridArea }) =>\n gridArea &&\n `\n grid-area: ${gridArea};\n `}\n`;\n\nexport const ReviewModalRatingContainer = styled.div``;\nexport const ReviewModalRatingStar = styled.div<{ active: boolean }>`\n display: inline-block;\n font-size: 2rem;\n font-family: Times;\n line-height: 2rem;\n cursor: pointer;\n margin: 0 0.25rem 0 0;\n &:hover {\n opacity: 0.8;\n }\n &::before {\n content: '❤';\n background: ${({ theme, active }) =>\n active ? theme.colors.error : theme.colors.placeholder};\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n`;\n","import React, { useState } from 'react';\n\n//STYLES\nimport {\n ReviewModalRatingContainer,\n ReviewModalRatingStar,\n} from './ReviewModal.styled';\n\ninterface ReviewModalRatingProps {\n onClickRating: (rating: number) => void;\n}\n\nconst ReviewModalRating = ({ onClickRating }: ReviewModalRatingProps) => {\n const [rating, setRating] = useState(0);\n\n const handleSelectRating = (rating: number) => {\n onClickRating(rating);\n setRating(rating);\n };\n\n return (\n \n = 1}\n onClick={() => handleSelectRating(1)}\n />\n = 2}\n onClick={() => handleSelectRating(2)}\n />\n = 3}\n onClick={() => handleSelectRating(3)}\n />\n = 4}\n onClick={() => handleSelectRating(4)}\n />\n = 5}\n onClick={() => handleSelectRating(5)}\n />\n \n );\n};\n\nexport default ReviewModalRating;\n","import React, { useState, useMemo, useCallback } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useMutation } from '@apollo/react-hooks';\nimport { useParams } from 'react-router-dom';\nimport { Formik, FormikHelpers, Form } from 'formik';\nimport * as yup from 'yup';\n\n//QUERIES\nimport { reviewCreate } from 'queries/reviews';\n\n//STORE\nimport { AppState } from 'store';\nimport { setHaveAnswered } from 'store/reviews';\n\n//COMPONENTS\nimport Input from 'components/Input';\nimport TextArea from 'components/TextArea';\nimport Button from 'components/Button';\nimport Label from 'components/Label';\nimport ReviewModalRating from './ReviewModal.rating';\nimport Loading from 'components/Loading';\n\n//STYLES\nimport {\n ReviewModalContainer,\n ReviewModalForm,\n ReviewModalFormControl,\n ReviewModalFormRating,\n} from './ReviewModal.styled';\n\nconst validationSchema = yup.object().shape({\n title: yup.string().required(),\n name: yup.string().required(),\n email: yup.string().email().required(),\n comment: yup.string().required(),\n rating: yup.number().integer().min(1).required(),\n});\n\ninterface ReviewFormProductProps {\n setSubmited: (submited: boolean) => void;\n}\n\nconst ReviewFormProduct = ({ setSubmited }: ReviewFormProductProps) => {\n const { t } = useTranslation('modalReview');\n\n const dispatch = useDispatch();\n const { productId } = useParams();\n\n const product = useSelector((state: AppState) => state.product.product);\n\n const [loadingSubmit, setLoadingSubmit] = useState(false);\n\n const INITIAL_VALUES = useMemo(\n () => ({\n title: '',\n name: '',\n email: '',\n comment: '',\n rating: 0,\n product: productId,\n }),\n [productId]\n );\n\n const [reviewCreateMutation] = useMutation(reviewCreate, {\n awaitRefetchQueries: true,\n refetchQueries: ['product'],\n });\n\n const onSubmit = useCallback(\n async (\n values: typeof INITIAL_VALUES,\n helpers: FormikHelpers\n ) => {\n try {\n setLoadingSubmit(true);\n await reviewCreateMutation({ variables: { reviewCreate: values } });\n dispatch(setHaveAnswered(productId));\n setSubmited(true);\n setLoadingSubmit(false);\n helpers.resetForm();\n\n await ReactGA.event({\n category: 'Reviewing',\n action: 'Product Review',\n label: `${product.organization.pk}/${values.product}`,\n value: values.rating,\n });\n } catch (error) {}\n },\n [\n reviewCreateMutation,\n INITIAL_VALUES,\n dispatch,\n productId,\n setSubmited,\n product,\n ]\n );\n\n return (\n \n \n \n {({\n handleBlur,\n handleChange,\n errors,\n isSubmitting,\n isValid,\n values,\n setFieldValue,\n }) => (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n setFieldValue('rating', rating);\n }}\n />\n \n \n \n \n \n \n
\n )}\n \n
\n );\n};\n\nexport default ReviewFormProduct;\n","import React, { useState, useMemo, useCallback } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@apollo/react-hooks';\nimport { useParams } from 'react-router-dom';\nimport { Formik, FormikHelpers, Form } from 'formik';\nimport * as yup from 'yup';\n\n//QUERIES\nimport { reviewOrganizationCreate } from 'queries/reviews';\n\n//STORE\nimport { setHaveAnswered } from 'store/reviews';\n\n//COMPONENTS\nimport Input from 'components/Input';\nimport TextArea from 'components/TextArea';\nimport Button from 'components/Button';\nimport Label from 'components/Label';\nimport ReviewModalRating from './ReviewModal.rating';\nimport Loading from 'components/Loading';\n\n//STYLES\nimport {\n ReviewModalContainer,\n ReviewModalForm,\n ReviewModalFormControl,\n ReviewModalFormRating,\n} from './ReviewModal.styled';\n\nconst validationSchema = yup.object().shape({\n title: yup.string().required(),\n name: yup.string().required(),\n email: yup.string().email().required(),\n comment: yup.string().required(),\n rating: yup.number().integer().min(1).required(),\n});\n\ninterface ReviewFormOrganizationProps {\n setSubmited: (submited: boolean) => void;\n}\n\nconst ReviewFormOrganization = ({\n setSubmited,\n}: ReviewFormOrganizationProps) => {\n const { t } = useTranslation('modalReview');\n\n const dispatch = useDispatch();\n const { organizationId } = useParams();\n\n const [loadingSubmit, setLoadingSubmit] = useState(false);\n\n const INITIAL_VALUES = useMemo(\n () => ({\n title: '',\n name: '',\n email: '',\n comment: '',\n rating: 0,\n organization: organizationId,\n }),\n [organizationId]\n );\n\n const [reviewCreateMutation] = useMutation(reviewOrganizationCreate, {\n awaitRefetchQueries: true,\n refetchQueries: ['organization'],\n });\n\n const onSubmit = useCallback(\n async (\n values: typeof INITIAL_VALUES,\n helpers: FormikHelpers\n ) => {\n try {\n setLoadingSubmit(true);\n await reviewCreateMutation({ variables: { reviewCreate: values } });\n dispatch(setHaveAnswered(organizationId));\n setSubmited(true);\n setLoadingSubmit(false);\n helpers.resetForm();\n\n await ReactGA.event({\n category: 'Reviewing',\n action: 'Organization Review',\n label: values.organization,\n value: values.rating,\n });\n } catch (error) {}\n },\n [\n reviewCreateMutation,\n INITIAL_VALUES,\n dispatch,\n organizationId,\n setSubmited,\n ]\n );\n\n return (\n \n \n \n {({\n handleBlur,\n handleChange,\n errors,\n isSubmitting,\n isValid,\n values,\n setFieldValue,\n }) => (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n setFieldValue('rating', rating);\n }}\n />\n \n \n \n \n \n \n
\n )}\n \n
\n );\n};\n\nexport default ReviewFormOrganization;\n","import React, { useState, useMemo, useCallback } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@apollo/react-hooks';\nimport { useParams } from 'react-router-dom';\nimport { Formik, FormikHelpers, Form } from 'formik';\nimport * as yup from 'yup';\n\n//QUERIES\nimport { reviewLotCreate } from 'queries/reviews';\n\n//STORE\nimport { setHaveAnswered } from 'store/reviews';\n\n//COMPONENTS\nimport Input from 'components/Input';\nimport TextArea from 'components/TextArea';\nimport Button from 'components/Button';\nimport Label from 'components/Label';\nimport ReviewModalRating from './ReviewModal.rating';\nimport Loading from 'components/Loading';\n\n//STYLES\nimport {\n ReviewModalContainer,\n ReviewModalForm,\n ReviewModalFormControl,\n ReviewModalFormRating,\n} from './ReviewModal.styled';\n\nconst validationSchema = yup.object().shape({\n title: yup.string().required(),\n name: yup.string().required(),\n email: yup.string().email().required(),\n comment: yup.string().required(),\n rating: yup.number().integer().min(1).required(),\n});\n\ninterface ReviewFormLotProps {\n setSubmited: (submited: boolean) => void;\n}\n\nconst ReviewFormLot = ({ setSubmited }: ReviewFormLotProps) => {\n const { t } = useTranslation('modalReview');\n\n const dispatch = useDispatch();\n const { lotId } = useParams();\n\n const [loadingSubmit, setLoadingSubmit] = useState(false);\n\n const INITIAL_VALUES = useMemo(\n () => ({\n title: '',\n name: '',\n email: '',\n comment: '',\n rating: 0,\n productLot: lotId,\n }),\n [lotId]\n );\n\n const [reviewCreateMutation] = useMutation(reviewLotCreate, {\n awaitRefetchQueries: true,\n refetchQueries: ['organization'],\n });\n\n const onSubmit = useCallback(\n async (\n values: typeof INITIAL_VALUES,\n helpers: FormikHelpers\n ) => {\n try {\n setLoadingSubmit(true);\n await reviewCreateMutation({ variables: { reviewCreate: values } });\n dispatch(setHaveAnswered(lotId));\n setSubmited(true);\n setLoadingSubmit(false);\n helpers.resetForm();\n\n await ReactGA.event({\n category: 'Reviewing',\n action: 'Lot Review',\n label: values.productLot,\n value: values.rating,\n });\n } catch (error) {}\n },\n [reviewCreateMutation, INITIAL_VALUES, dispatch, lotId, setSubmited]\n );\n\n return (\n \n \n \n {({\n handleBlur,\n handleChange,\n errors,\n isSubmitting,\n isValid,\n values,\n setFieldValue,\n }) => (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n setFieldValue('rating', rating);\n }}\n />\n \n \n \n \n \n \n
\n )}\n \n
\n );\n};\n\nexport default ReviewFormLot;\n","import React, { useState, useCallback } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\n\n//ASSETS\nimport ModalReviewGraphic from 'assets/images/modal-graphic-small.png';\n\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/reviewModal';\n\n//PROPS TYPE\nimport { ReviewModalProps } from './ReviewModal.props';\n\n//COMPONENT\nimport Modal from 'components/Modal';\nimport ReviewFormProduct from './ReviewForm.product';\nimport ReviewFormOrganization from './ReviewForm.organization';\nimport ReviewFormLot from './ReviewForm.lot';\nimport Button from 'components/Button';\n\n//STYLES\nimport { ModalContent } from 'components/Modal/Modal.styled';\nimport {\n ReviewModalContainer,\n ReviewModalActions,\n ReviewModalImage,\n ReviewModalTitle,\n ReviewModalSubtitle,\n} from './ReviewModal.styled';\n\nconst ReviewModal = ({ type }: ReviewModalProps) => {\n const { t } = useTranslation('modalReview');\n\n const dispatch = useDispatch();\n const location = useLocation();\n\n const { isOpen } = useSelector((state: AppState) => state.reviewModal);\n\n const [submited, setSubmited] = useState(false);\n\n const handleCloseModal = useCallback(() => {\n dispatch(closeModal());\n }, [dispatch]);\n\n return (\n \n \n {submited ? (\n \n \n {t('content.doneReviewTitle')}\n \n {t('content.doneReviewSubTitle')}\n \n \n \n \n \n ) : (\n \n \n {t('content.textReviewTitle')}\n \n {t('content.textReviewSubTitleUp')}\n
{t('content.textReviewSubTitleDown')}\n
\n {type === 'lot' && }\n {type === 'product' && (\n \n )}\n {type === 'organization' && (\n \n )}\n
\n )}\n
\n
\n );\n};\n\nexport default ReviewModal;\n","import React, { useState, useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport ReactGA from 'react-ga4';\n\n//QUERIES\nimport { AppState } from 'store';\nimport { lotQuery } from 'queries/lot';\n\n//STORE\nimport { setProduct, setLotId, setInternalId } from 'store/product';\nimport { setOrganizationInfo } from 'store/organization';\n\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { LotVars } from './Lot.props';\nimport { LotData } from 'types/lot';\n\n//COMPONENTS\nimport AppLayout from 'module/AppLayout';\nimport Container from 'components/Container';\nimport ProductDesktopView from '../Product/components/ProductDesktopView';\nimport ProductMobileView from '../Product/components/ProductMobileView';\nimport ProductSkeleton from '../Product/components/ProductSkeleton';\nimport ProofPointModal from 'components/ProofPointModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal';\nimport EvidenceModal from 'components/EvidenceModal';\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport ReviewModal from 'components/ReviewModal';\n\nconst Lot = () => {\n const { lotId } = useParams();\n\n const dispatch = useDispatch();\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n const [isPrivate, setIsPrivate] = useState(false);\n const [metaInformation, setMetaInformation] = useState({});\n\n const product = useSelector((state: AppState) => state.product.product);\n\n const { data: resPorductLot, loading, error } = useQuery(\n lotQuery,\n {\n variables: { pk: lotId },\n }\n );\n\n useEffect(() => {\n if (resPorductLot && resPorductLot.productLot.data === null) {\n setIsPrivate(true);\n }\n }, [resPorductLot]);\n\n useEffect(() => {\n if (\n resPorductLot &&\n resPorductLot.productLot &&\n resPorductLot.productLot.data\n ) {\n setMetaInformation({\n title: resPorductLot.productLot.data.product.name,\n description: resPorductLot.productLot.data.product.description,\n image:\n resPorductLot.productLot.data.product.images.length > 0\n ? resPorductLot.productLot.data.product.images[0].url\n : '',\n url: window.location.href,\n });\n }\n }, [resPorductLot]);\n\n useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: window.location.pathname,\n title: 'lots',\n });\n }, []);\n\n useEffect(() => {\n if (\n resPorductLot &&\n resPorductLot.productLot &&\n resPorductLot.productLot.data\n ) {\n dispatch(\n setOrganizationInfo({\n name: resPorductLot.productLot.data.product.organization.name,\n logo: resPorductLot.productLot.data.product.organization.logo.url,\n })\n );\n dispatch(\n setProduct({\n ...resPorductLot.productLot.data.product,\n journey: {\n ...resPorductLot.productLot.data.journey,\n },\n featuredProofPoints: [\n ...resPorductLot.productLot.data.featuredProofPoints,\n ],\n reviewStats: {\n ...resPorductLot.productLot.data.reviewStats,\n },\n reviews: {\n ...resPorductLot.productLot.data.reviews,\n },\n })\n );\n dispatch(setLotId(resPorductLot.productLot.data.pk));\n dispatch(setInternalId(resPorductLot.productLot.data.internalId));\n }\n }, [dispatch, resPorductLot]);\n\n return (\n }\n >\n <>\n \n <>\n {product && (\n <>\n {matches ? (\n \n ) : (\n \n )}\n \n )}\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Lot;\n","import gql from 'graphql-tag';\n\nexport const organizationQuery = gql`\n query organization($pk: String!, $language: String) {\n organization(pk: $pk, language: $language) {\n data {\n name\n description\n telephones {\n id\n description\n telephone\n pk\n }\n email\n url\n pk\n socialChannels {\n handle\n url\n type\n pk\n }\n taxId\n logo(size: \"250x250\") {\n url\n }\n headImage(size: \"720x720\") {\n url\n }\n products {\n name\n pk\n thumbnail(size: \"40x40\") {\n url\n }\n images {\n pk\n url\n }\n }\n proofPoints {\n name\n pk\n createdAt\n description\n expirationDate\n icon {\n value\n icon\n label\n }\n mediaEvidences {\n name\n url\n type\n }\n evidences {\n file\n evidenceName\n expirationDate\n pk\n }\n conditions {\n value\n type\n typeDisplay\n unit\n }\n verifier {\n pk\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n reviews {\n edges {\n node {\n createdAt\n id\n title\n name\n email\n comment\n rating\n status\n reply {\n comment\n }\n }\n }\n }\n reviewStats {\n averageRating\n totalCount\n percentageCountFive\n percentageCountFour\n percentageCountThree\n percentageCountTwo\n percentageCountOne\n }\n translationStatus\n }\n error\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const OrganizationLinksContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n`;\nexport const OrganizationLinksAction = styled.a`\n width: 1.75rem;\n height: 1.75rem;\n background-color: ${({ theme }) => theme.colors.brand};\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 9999px;\n margin: 0 0.75rem 1rem 0;\n transition: all 0.25s ease-in-out;\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 10%);\n &:last-child {\n margin: 0 0 1rem;\n }\n &:hover {\n background-color: ${({ theme }) => theme.colors.active};\n transform: translateY(-0.25rem);\n box-shadow: 0 4px 10px 0 rgb(16 3 22 / 20%);\n }\n svg {\n width: 1rem;\n color: ${({ theme }) => theme.colors.white};\n }\n`;\n","import React from 'react';\n\n//PROPS TYPE\nimport { OrganizationLinksProps } from './OrganizationLinks.props';\nimport { Icons } from 'components/Icon/Icon.props';\n\n//COMPONETNS\nimport Icon from 'components/Icon';\n\n//STYLES\nimport {\n OrganizationLinksContainer,\n OrganizationLinksAction,\n} from './OrganizationLinks.styled';\n\nconst OrganizationLinks = ({ socials }: OrganizationLinksProps) => {\n return (\n \n {socials.map((social) => {\n return (\n \n \n \n );\n })}\n \n );\n};\n\nexport default OrganizationLinks;\n","import styled from 'styled-components';\nimport { sm, lg } from 'theme/Theme.breackoints';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const OrganizationInfoContainer = styled.div`\n display: grid;\n align-items: start;\n grid-template: 1fr/ 24rem calc(100% - 26rem);\n gap: 0 2rem;\n padding: 0 0 2.5rem;\n margin: 0 0 2.5rem;\n border-bottom: 1px solid ${({ theme }) => theme.colors.border};\n ${sm`\n grid-template: 1fr / 1fr;\n border: none;\n margin: 0;\n `}\n`;\nexport const OrganizationInfoImage = styled.img`\n width: 100%;\n ${sm`\n margin: 0 0 2rem;\n `}\n`;\nexport const OrganizationInfoContent = styled.div``;\nexport const OrganizationInfoDetails = styled.div`\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n grid-gap: 1rem 2rem;\n`;\nexport const OrganizationInfoDetailsColumn = styled.div``;\nexport const OrganizationInfoLabel = styled(Text)`\n color: ${({ theme }) => theme.colors.fontSecondary};\n text-transform: uppercase;\n margin: 0 0 0.5rem;\n font-size: 0.875rem;\n line-height: 0.875rem;\n font-weight: 700;\n`;\nexport const OrganizationInfoText = styled(Text)`\n color: ${({ theme }) => theme.colors.black};\n font-size: 0.875rem;\n line-height: 1.25rem;\n`;\nexport const OrganizationInfoLink = styled.a`\n font-size: 1rem;\n line-height: 1rem;\n color: ${({ theme }) => theme.colors.brand};\n cursor: pointer;\n display: inline-block;\n background-color: transparent;\n font-weight: 700;\n word-break: break-all;\n &:hover {\n color: ${({ theme }) => theme.colors.active};\n }\n`;\n\nexport const OrganizationInfoTelephones = styled.div`\n display: grid;\n grid-template: 1fr / 1fr 1fr;\n gap: 0.5rem;\n ${lg`\n grid-template: 1fr / 1fr;\n `}\n`;\nexport const OrganizationInfoTelephonesItemLabel = styled(Text)`\n font-size: 0.625rem;\n line-height: 0.625rem;\n text-transform: uppercase;\n font-weight: bold;\n color: ${({ theme }) => theme.colors.fontSecondary};\n margin: 0 0 0.25rem;\n`;\nexport const OrganizationInfoTelephonesItemName = styled(Text)`\n font-size: 0.75rem;\n line-height: 0.75rem;\n`;\nexport const OrganizationInfoTelephonesItem = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 0 1rem;\n padding: 0.5rem 1rem;\n border: 1px solid ${({ theme }) => theme.colors.border};\n transition: all 0.3s ease-in-out;\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.brand};\n ${OrganizationInfoTelephonesItemName} {\n color: ${({ theme }) => theme.colors.brand};\n }\n }\n`;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ReactGA from 'react-ga4';\n\n//PROPS TYPE\nimport { OrganizationInfoProps } from './OrganizationInfo.props';\n\n//COMPONENTS\nimport RenderHtml from 'components/RenderHtml';\nimport OrganizationLinks from '../OrganizationLinks';\n\n//STYLES\nimport {\n OrganizationInfoContainer,\n OrganizationInfoImage,\n OrganizationInfoContent,\n OrganizationInfoDetails,\n OrganizationInfoDetailsColumn,\n OrganizationInfoLabel,\n OrganizationInfoText,\n OrganizationInfoLink,\n OrganizationInfoTelephones,\n OrganizationInfoTelephonesItem,\n OrganizationInfoTelephonesItemLabel,\n OrganizationInfoTelephonesItemName,\n} from './OrganizationInfo.styled';\n\nconst OrganizationInfo = ({ organization }: OrganizationInfoProps) => {\n const { t } = useTranslation('organization');\n\n const eventMailAnalytic = () => {\n ReactGA.event({\n category: 'Page Click',\n action: 'Organization Mail Click',\n label: organization.pk,\n });\n };\n const eventTelephoneAnalytic = () => {\n ReactGA.event({\n category: 'Page Click',\n action: 'Organization Telephone Click',\n label: organization.pk,\n });\n };\n const eventAnalytic = () => {\n ReactGA.event({\n category: 'Social Sharing',\n action: 'Organization Page View',\n label: organization.pk,\n });\n };\n\n return (\n \n \n \n \n {t('content.description')}\n \n {organization && organization.description && (\n \n )}\n \n \n \n {t('content.organizationId')}\n \n {organization.pk}\n \n\n {organization && organization.taxId && (\n \n \n {t('content.taxId')}\n \n {organization.taxId}\n \n )}\n {organization && organization.url && (\n \n \n {t('content.website')}\n \n \n {organization.url}\n \n \n )}\n {organization && organization.email && (\n \n \n {t('content.email')}\n \n \n {organization.email}\n \n \n )}\n {organization &&\n organization.telephones &&\n organization.telephones.length > 0 && (\n \n \n {t('content.phone')}\n \n \n {organization.telephones.map((telephone) => (\n \n \n \n {telephone.description}\n \n \n {telephone.telephone}\n \n \n \n ))}\n \n \n )}\n {organization && organization.socialChannels.length > 0 && (\n \n \n {t('content.socialLinks')}\n \n \n \n )}\n \n \n \n );\n};\n\nexport default OrganizationInfo;\n\n//
\n// \n//
\n","import styled from 'styled-components';\nimport { sm } from 'theme/Theme.breackoints';\n\nexport const OrganizationSection = styled.section`\n width: 100%;\n display: grid;\n grid-template: 1fr / 1fr;\n grid-gap: 0 1.5rem;\n min-height: calc(100vh - 15.375rem);\n ${sm`\n grid-template: 1fr / 1fr;\n overflow: hidden;\n padding: 5rem 0 0;\n `}\n`;\nexport const OrganizationColumns = styled.div`\n ${sm`\n width: calc(100vw - 2rem);\n `}\n`;\nexport const OrganizationContent = styled.div`\n padding: 0 0 3rem;\n ${sm`\n width: calc(100vw - 2rem);\n `}\n`;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n//PROPS TYPE\nimport { OrganizationDesktopViewProps } from './OrganizationDesktopView.props';\n\n//COMPONENTS\nimport SectionHeader from 'components/SectionHeader';\nimport FeatureProofPoints from 'components/FeatureProofPoints';\nimport Seals from 'components/Seals';\nimport SocialShare from 'components/SocialShare';\nimport CustomerReviews from 'components/CustomerReviews';\nimport OrganizationInfo from '../OrganizationInfo';\n\n//STYLES\nimport {\n OrganizationSection,\n OrganizationColumns,\n OrganizationContent,\n} from '../../Organization.styled';\n\nconst OrganizationDesktopView = ({\n organization,\n}: OrganizationDesktopViewProps) => {\n const { t } = useTranslation('organization');\n\n return (\n \n \n \n \n {organization &&\n organization.proofPoints &&\n organization.proofPoints.length > 0 && (\n \n )}\n {organization &&\n organization.proofPoints &&\n organization.proofPoints.length > 0 && (\n \n )}\n {organization && }\n {organization && organization.logo && (\n \n )}\n\n {organization &&\n organization.reviewStats &&\n organization.reviews &&\n organization.reviews.edges && (\n \n )}\n\n {/* \n \n\n {organization && organization.description && (\n \n )}\n\n {organization && organization.images && organization.images.length > 0 && (\n \n )}\n\n {organization && organization.thumbnail && }\n\n {organization &&\n organization.reviewStats &&\n product.reviews &&\n product.reviews.edges && (\n \n )} */}\n \n \n \n );\n};\n\nexport default OrganizationDesktopView;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\n\n//PROPS TYPE\nimport { OrganizationMobileViewProps } from './OrganizationMobileView.props';\n\n//STORE\nimport { AppState } from 'store';\n\n//COMPONENTS\nimport SectionHeader from 'components/SectionHeader';\nimport FeatureProofPoints from 'components/FeatureProofPoints';\nimport Seals from 'components/Seals';\nimport CustomerReviews from 'components/CustomerReviews';\nimport OrganizationInfo from '../OrganizationInfo';\n\n//STYLES\nimport {\n OrganizationSection,\n OrganizationContent,\n} from '../../Organization.styled';\n\nconst OrganizationMobileView = ({\n organization,\n}: OrganizationMobileViewProps) => {\n const { t } = useTranslation('organization');\n const { tab } = useSelector((state: AppState) => state.mobileNav);\n\n return (\n \n \n {(() => {\n switch (tab) {\n case 'info':\n return (\n <>\n \n {organization && organization.proofPoints.length > 0 && (\n \n )}\n\n {organization && organization.proofPoints.length > 0 && (\n \n )}\n\n {organization && (\n \n )}\n \n );\n default:\n return (\n <>\n {organization && (\n \n )}\n \n );\n }\n })()}\n \n \n );\n};\n\nexport default OrganizationMobileView;\n","import React from 'react';\n\n//COMPONENTS\nimport AppLayoutSkeleton from 'module/AppLayoutSkeleton';\nimport SkeletonLoader from 'components/SkeletonLoader';\nimport SkeletonProofs from 'components/SkeletonProofs';\nimport SkeletonSeals from 'components/SkeletonSeals';\nimport SkeletonSectionTitle from 'components/SkeletonSectionTitle';\nimport SkeletonDescription from 'components/SkeletonDescription';\nimport SkeletonShare from 'components/SkeletonShare';\nimport SkeletonReviews from 'components/SkeletonReviews';\n\ninterface OrganizationSkeletonProps {\n matches?: boolean;\n}\n\nconst OrganizationSkeleton = ({ matches }: OrganizationSkeletonProps) => {\n return (\n \n \n <>\n \n <>\n \n \n \n \n \n \n \n \n \n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n \n \n \n \n \n \n
\n
\n
\n \n\n {!matches && }\n {!matches && }\n \n \n \n \n \n
\n );\n};\n\nexport default OrganizationSkeleton;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport ReactGA from 'react-ga4';\n\n//QUERIES\nimport { organizationQuery } from 'queries/organization';\n\n//STORE\nimport { AppState } from 'store';\nimport { openModal, setTranslations } from 'store/tramslateModal';\nimport { setOrganizationInfo, setOrganization } from 'store/organization';\nimport { setMobileNav } from 'store/mobilenav';\n\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { OrganizationVars } from './Organization.props';\nimport { OrganizationData } from 'types/organization';\n\n//COMPONENTS\nimport AppLayout from 'module/AppLayout';\nimport Container from 'components/Container';\nimport OrganizationDesktopView from './components/OrganizationDesktopView';\nimport OrganizationMobileView from './components/OrganizationMobileView';\nimport ProofPointModal from 'components/ProofPointModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal';\nimport EvidenceModal from 'components/EvidenceModal';\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport ReviewModal from 'components/ReviewModal';\nimport TranslateModal from 'components/TranslateModal';\nimport OrganizationSkeleton from './components/OrganizationSkeleton';\n\nconst Organization = () => {\n const { organizationId } = useParams();\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const dispatch = useDispatch();\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n const [isPrivate, setIsPrivate] = useState(false);\n const [metaInformation, setMetaInformation] = useState({});\n\n const { data: resOrganization, loading, error, refetch } = useQuery<\n OrganizationData,\n OrganizationVars\n >(organizationQuery, {\n variables: {\n pk: organizationId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find(\n (lang) => lang.idOrganization === organizationId\n )?.short_name\n : '',\n },\n });\n\n useEffect(() => {\n if (resOrganization && resOrganization.organization.data === null) {\n setIsPrivate(true);\n }\n }, [resOrganization]);\n\n useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: window.location.pathname,\n title: 'organization',\n });\n }, []);\n\n useEffect(() => {\n if (\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data\n ) {\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: resOrganization.organization.data.name,\n description: resOrganization.organization.data.description,\n image: resOrganization.organization.data.logo.url\n ? resOrganization.organization.data.logo.url\n : '',\n url: window.location.href,\n });\n }\n }, [resOrganization, dispatch]);\n\n useEffect(() => {\n if (\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data\n ) {\n dispatch(\n setOrganizationInfo({\n name: resOrganization.organization.data.name,\n logo: resOrganization.organization.data.logo.url,\n })\n );\n dispatch(setOrganization(resOrganization.organization.data));\n }\n }, [dispatch, resOrganization]);\n\n useEffect(() => {\n const selectLanguage = translateSelect.find(\n (lang) => lang.idOrganization === organizationId\n );\n\n if (\n !selectLanguage &&\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.translationStatus &&\n Object.keys(\n JSON.parse(resOrganization.organization.data.translationStatus)\n ).length > 1\n ) {\n dispatch(\n openModal({\n isOpen: true,\n translations: JSON.parse(\n resOrganization.organization.data.translationStatus\n ),\n isHiddenClose: true,\n })\n );\n } else if (\n selectLanguage &&\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.translationStatus &&\n Object.keys(\n JSON.parse(resOrganization.organization.data.translationStatus)\n ).length > 1\n ) {\n dispatch(\n setTranslations({\n translations: JSON.parse(\n resOrganization.organization.data.translationStatus\n ),\n })\n );\n }\n }, [translateSelect, organizationId, resOrganization, dispatch]);\n\n const handleRefetchQuery = useCallback(() => {\n refetch();\n }, [refetch]);\n\n return (\n }\n >\n <>\n \n <>\n {matches ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Organization;\n","import { useQuery } from '@apollo/react-hooks';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n\n//QUERIES\nimport { productQuery, relatedProductQuery } from 'queries/product';\n\n//STORE\nimport { AppState } from 'store';\nimport { setMobileNav } from 'store/mobilenav';\nimport { setOrganizationInfo } from 'store/organization';\nimport { setProduct } from 'store/product';\nimport { openModal, setTranslations } from 'store/tramslateModal';\n\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { ProductData, ProductRelatedData } from 'types/product';\nimport { ProductVars, ProductsRelatedVars } from './Product.props';\n\n//COMPONENTS\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport Container from 'components/Container';\nimport EvidenceModal from 'components/EvidenceModal';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport ProofPointModal from 'components/ProofPointModal';\nimport ReviewModal from 'components/ReviewModal';\nimport TranslateModal from 'components/TranslateModal';\nimport AppLayout from 'module/AppLayout';\nimport ProductDesktopView from './components/ProductDesktopView';\nimport ProductMobileView from './components/ProductMobileView';\nimport ProductSkeleton from './components/ProductSkeleton';\n\nconst Product = () => {\n const { productId } = useParams();\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const dispatch = useDispatch();\n const matches = useMediaQuery('only screen and (max-width: 768px)');\n\n const [metaInformation, setMetaInformation] = useState({});\n\n const { data: resProduct, loading, error, refetch } = useQuery<\n ProductData,\n ProductVars\n >(productQuery, {\n variables: {\n pk: productId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idProduct === productId)\n ?.short_name\n : '',\n },\n });\n const {\n data: resRelatedProduct,\n loading: loadingRelated,\n error: errorRelated,\n refetch: refetchRelated,\n } = useQuery(relatedProductQuery, {\n variables: {\n id: productId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idProduct === productId)\n ?.short_name\n : '',\n },\n });\n\n useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: window.location.pathname,\n title: 'product',\n });\n }, []);\n\n useEffect(() => {\n if (resProduct && resProduct.product && resProduct.product.data) {\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: resProduct.product.data.name,\n description: resProduct.product.data.description,\n image:\n resProduct.product.data.images.length > 0\n ? resProduct.product.data.images[0].url\n : '',\n url: window.location.href,\n });\n }\n }, [resProduct, dispatch]);\n\n useEffect(() => {\n if (resProduct && resProduct.product && resProduct.product.data) {\n dispatch(\n setOrganizationInfo({\n name: resProduct.product.data.organization.name,\n logo: resProduct.product.data.organization.logo.url,\n })\n );\n dispatch(setProduct(resProduct.product.data));\n }\n }, [dispatch, resProduct]);\n\n useEffect(() => {\n const selectLanguage = translateSelect.find(\n (lang) => lang.idProduct === productId\n );\n\n if (\n !selectLanguage &&\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.translationStatus &&\n Object.keys(JSON.parse(resProduct.product.data.translationStatus))\n .length > 1\n ) {\n dispatch(\n openModal({\n isOpen: true,\n translations: JSON.parse(resProduct.product.data.translationStatus),\n isHiddenClose: true,\n })\n );\n } else if (\n selectLanguage &&\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.translationStatus &&\n Object.keys(JSON.parse(resProduct.product.data.translationStatus))\n .length > 1\n ) {\n dispatch(\n setTranslations({\n translations: JSON.parse(resProduct.product.data.translationStatus),\n })\n );\n }\n }, [translateSelect, resProduct, dispatch, productId]);\n\n const handleRefetchQuery = useCallback(() => {\n refetch();\n refetchRelated();\n }, [refetch, refetchRelated]);\n\n return (\n }\n >\n <>\n \n <>\n {matches ? (\n \n ) : (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Product;\n","import { Text } from 'components/Text';\nimport styled from 'styled-components';\nimport { breakpoints } from 'theme/Theme.breackoints';\n\nexport const CycleLifeContaier = styled.div`\n width: 100%;\n max-width: calc(\n calc(1230px + calc(calc(100% - 1230px) / 2)) - calc(2rem + 4.5vw)\n );\n margin: 0 0 0 auto;\n @media screen and (max-width: ${breakpoints.lg}px) {\n max-width: 100%;\n padding-left: calc(4rem + 4.5vw);\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n padding: 0 2rem;\n }\n`;\nexport const CycleLifeTitle = styled.div`\n font-size: 32px;\n line-height: 32px;\n margin: 0 0 2.5rem;\n`;\nexport const CycleLifeListBox = styled.div`\n width: 100%;\n position: relative;\n`;\nexport const CycleLifeList = styled.div`\n display: flex;\n gap: 0 2.5rem;\n max-width: 100%;\n overflow: auto;\n padding-right: 5rem;\n padding-bottom: 1.125rem;\n scroll-behavior: smooth;\n &::-webkit-scrollbar {\n height: 8px;\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n transition: all 0.3s ease-in-out;\n }\n &::-webkit-scrollbar-thumb {\n background-color: transparent;\n border-radius: 6px;\n transition: all 0.3s ease-in-out;\n }\n\n &:hover::-webkit-scrollbar {\n background-color: #f5f5f5;\n }\n &:hover::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n }\n &:hover::-webkit-scrollbar-thumb {\n background-color: ${({ theme }) => theme.colors.wineGray};\n cursor: pointer;\n border-radius: 6px;\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n flex-direction: column;\n padding: 0;\n }\n`;\nexport const CycleLifeListOverlay = styled.div`\n position: absolute;\n height: 100%;\n width: 140px;\n z-index: 9;\n top: 0;\n bottom: 0;\n right: 0;\n background: linear-gradient(\n 270deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 15%,\n rgba(255, 255, 255, 0) 90%\n );\n @media screen and (max-width: ${breakpoints.xs}px) {\n display: none;\n }\n`;\nexport const CycleLifeItemColumn = styled.div`\n height: 100%;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n @media screen and (max-width: ${breakpoints.xs}px) {\n padding: 0.5rem 0 0.5rem 1.5rem;\n border-left: 1px solid ${({ theme }) => theme.colors.wineBlack};\n }\n`;\n\nexport const CycleLifeItemDate = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 14px;\n line-height: 14px;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 1.125rem;\n`;\nexport const CycleLifeItemTitle = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.wine};\n font-size: 1.5rem;\n line-height: 2rem;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 0.75rem;\n max-width: 78%;\n`;\nexport const CycleLifeItemParagraph = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.875rem;\n line-height: 21px;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 0.75rem;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\nexport const CycleLifeItemParagraphSeeMore = styled.span`\n cursor: pointer;\n font-family: ${({ theme }) => theme.fonts.wine};\n font-size: 0.875rem;\n font-weight: 700;\n color: ${({ theme }) => theme.colors.winePrimary};\n transition: all 0.25s ease-in-out;\n &:hover {\n color: ${({ theme }) => theme.colors.wineBlack};\n }\n margin: 0 0 1rem;\n`;\nexport const CycleLifeItemImage = styled.img`\n width: 100%;\n max-width: 250px;\n height: 100%;\n max-height: 250px;\n object-fit: cover;\n @media screen and (max-width: ${breakpoints.xs}px) {\n max-width: 100%;\n }\n`;\nexport const CycleLifeItem = styled.div<{ modal?: boolean }>`\n width: 312px;\n max-width: 100%;\n position: relative;\n flex: 1 0 auto;\n display: flex;\n flex-direction: column;\n &::before {\n position: absolute;\n content: \"\";\n height: 1px;\n width: 90px;\n right: -25px;\n background-color: ${({ theme }) => theme.colors.wineBlack};\n top: 18px;\n @media screen and (max-width: ${breakpoints.xs}px) {\n display: none;\n }\n }\n ${({ modal }) =>\n modal &&\n `\n width: 100%;\n ${CycleLifeItemImage} {\n max-width: 100%;\n }\n `}\n @media screen and (max-width: ${breakpoints.xs}px) {\n width: 100%;\n margin: 0 0 1.5rem;\n }\n`;\n\nexport const CycleLifeAction = styled.div`\n display: flex;\n gap: 0 2rem;\n align-items: center;\n @media screen and (max-width: ${breakpoints.xs}px) {\n display: none;\n }\n`;\nexport const CycleLifeHeader = styled.div`\n width: 100%;\n max-width: calc(1230px - calc(2rem + 4.5vw));\n`;\n","import React, { useCallback, useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Markup } from 'interweave';\nimport { useTranslation } from 'react-i18next';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//PROPS TYPE\nimport { ProductMilestone } from 'types/product';\n//STORE\nimport { openModal } from 'store/cycleLifeModal';\n//STYLES\nimport {\n CycleLifeContaier,\n CycleLifeTitle,\n CycleLifeList,\n CycleLifeItem,\n CycleLifeItemDate,\n CycleLifeItemTitle,\n CycleLifeItemParagraph,\n CycleLifeItemImage,\n CycleLifeItemColumn,\n CycleLifeItemParagraphSeeMore,\n CycleLifeAction,\n CycleLifeHeader,\n CycleLifeListOverlay,\n CycleLifeListBox,\n} from './CycleLife.styled';\nimport moment from 'moment';\nimport VideoPreview from 'components/VideoPreview';\nimport { WineContentAction } from 'screens/Wine/Wine.styled';\nimport { CertificatePrintIcon } from 'screens/Certificate/Certificate.styled';\n\ninterface CycleLifeProps {\n milestones: ProductMilestone[];\n}\nconst CycleLife = ({ milestones }: CycleLifeProps) => {\n const scrollList = useRef(null);\n\n const { t } = useTranslation('general');\n const dispatch = useDispatch();\n\n const $milestoneParent = useRef(null);\n\n const removeTags = (str: string) => {\n if (str === null || str === '') return false;\n else str = str.toString();\n\n // Regular expression to identify HTML tags in\n // the input string. Replacing the identified\n // HTML tag with a null string.\n return str.replace(/(<([^>]+)>)/gi, '');\n };\n\n const handleOpenCycleLifeModal = useCallback(\n (milestone: ProductMilestone) => {\n dispatch(\n openModal({\n milestone,\n })\n );\n },\n [dispatch]\n );\n\n const handleScrollLeft = () => {\n if (scrollList && scrollList.current) {\n scrollList.current.scrollLeft -= 352;\n }\n };\n const handleScrollRight = () => {\n if (scrollList && scrollList.current) {\n scrollList.current.scrollLeft += 352;\n }\n };\n\n return (\n \n \n \n Ciclo de vida\n \n {\n handleScrollLeft();\n }}\n />\n {\n handleScrollRight();\n }}\n />\n \n \n \n \n \n \n {milestones.map((milestone) => {\n const des = removeTags(\n milestone.description.split(' ').slice(0, 26).join(' ')\n );\n\n return (\n \n {/* \n {moment(milestone.createdAt).format('DD/MM/YYYY')}\n */}\n {milestone.name}\n \n \n {des && }{' '}\n {\n handleOpenCycleLifeModal(milestone);\n }}\n >\n {t('readMore')}\n \n \n\n {milestone.video && (\n \n )}\n {!milestone.video && (\n \n )}\n \n \n );\n })}\n \n \n \n );\n};\n\nexport default CycleLife;\n","import styled from 'styled-components';\n\nexport const PicturesContainer = styled.div<{ sizeArray: number }>`\n .swiper {\n overflow: visible;\n }\n .swiper-slide {\n height: 600px;\n }\n .swiper-pagination {\n display: grid;\n width: 2.5rem;\n height: 0.5rem;\n grid-template: 1fr / repeat(${({ sizeArray }) => sizeArray}, 0.5rem);\n gap: 0 2rem;\n left: 0;\n bottom: -1.5rem;\n .swiper-pagination-bullet {\n margin: 0;\n width: 0.5rem;\n height: 0.5rem;\n opacity: 1;\n border-radius: 0.5rem;\n background-color: ${({ theme }) => theme.colors.wineGrayLigth};\n &.swiper-pagination-bullet-active {\n background-color: ${({ theme }) => theme.colors.wineBlack};\n }\n }\n }\n`;\nexport const PicturesItem = styled.img`\n width: 100%;\n height: 100%;\n object-fit: cover;\n`;\n\nexport const MiniGalleryContainer = styled.div`\n display: flex;\n justify-content: center;\n margin-top: 10px;\n overflow-x: auto;\n gap: 5px;\n`;\n\nexport const MiniGalleryItem = styled.img<{ isSelected: boolean }>`\n width: 4rem !important;\n height: 4rem;\n margin: 0 5px;\n cursor: pointer;\n border: ${({ isSelected }) => (isSelected ? '1px solid #ccc' : 'none')};\n opacity: ${({ isSelected }) => (isSelected ? 1 : 0.6)};\n border-radius: 0.25rem;\n padding: 0.25rem;\n &:hover {\n opacity: 1;\n }\n`;\n","import React, { useEffect, useState } from 'react';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n//STYLES\nimport {\n MiniGalleryContainer,\n MiniGalleryItem,\n PicturesContainer,\n PicturesItem,\n} from './Pictures.styled';\n\ninterface PicturesProps {\n images: string[];\n}\n\nconst Pictures = ({ images }: PicturesProps) => {\n const [selectedImageIndex, setSelectedImageIndex] = useState(0);\n const image = images[selectedImageIndex];\n\n const handleSlideChange = (swiper: any) => {\n const newIndex = swiper.activeIndex;\n if (newIndex < images.length) {\n setSelectedImageIndex(newIndex);\n }\n };\n\n const handleMiniImageClick = (index: number) => {\n if (index < images.length) {\n setSelectedImageIndex(index);\n }\n };\n\n useEffect(() => {\n setSelectedImageIndex(0);\n }, [images]);\n\n return (\n \n \n {images.map((_image, index) => (\n \n \n \n ))}\n \n\n \n {images.map((image, index) => (\n handleMiniImageClick(index)}\n isSelected={index === selectedImageIndex}\n />\n ))}\n \n \n );\n};\n\nexport default Pictures;\n","import styled from \"styled-components\";\n\nexport const SealsContainer = styled.div<{margin?: string;}>`\n display: flex;\n gap: 1.5rem;\n margin: ${({ margin }) => margin ? margin : \"0\"};\n @media (max-width: 768px) {\n margin: 0 0 1.5rem;\n }\n`\nexport const SealsItemImage = styled.img`\n width: 3.5rem;\n left: 0;\n top: 0;\n position: absolute;\n transition: all 0.25s ease-in-out;\n`\nexport const SealsItem = styled.div`\n width: 3.5rem;\n height: 3.5rem;\n cursor: pointer;\n position: relative;\n &:hover {\n ${SealsItemImage} {\n transform: scale(1.1);\n }\n }\n`","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n//PROP TYPES\nimport { ProductProofPoint } from 'types/product';\n//STORE\nimport { openModal } from 'store/proofPointModal';\n//STYLES\nimport { SealsContainer, SealsItem, SealsItemImage } from './Seals.styled';\n\ninterface SealsProsp {\n margin?: string;\n proofs: ProductProofPoint[];\n}\n\nconst Seals = ({ margin, proofs }: SealsProsp) => {\n const dispatch = useDispatch();\n\n const SEALS_LIST =\n proofs &&\n proofs.filter(\n (proof) =>\n proof && proof.icon && proof.icon.icon && proof.icon.icon.includes('c_')\n );\n\n const handleOpenProofPointModal = useCallback(\n (proof: ProductProofPoint) => {\n dispatch(\n openModal({\n proof,\n })\n );\n },\n [dispatch]\n );\n\n return (\n \n {SEALS_LIST.map(\n (proof) =>\n proof &&\n proof.pk && (\n {\n handleOpenProofPointModal(proof);\n }}\n >\n \n \n )\n )}\n \n );\n};\n\nexport default Seals;\n","import BlueIcon from './BLUE_SUSTAINABILITY.png';\nimport BrownIcon from './BROWN_SUSTAINABILITY.png';\nimport GreenIcon from './GREEN_SUSTAINABILITY.png';\nimport YellowIcon from './YELLOW_SUSTAINABILITY.png';\n\nconst sustainabilityRecycleText = [\n 'Recycling',\n 'Рециклиране',\n 'Recikliranje',\n 'Recyklace',\n 'Genbrug',\n 'Recyclen',\n 'Taaskasutus',\n 'Kierrätys',\n 'Recyclage',\n 'Recycling',\n 'Ανακύκλωση',\n 'Újrahasznosítás',\n 'Athchúrsáil',\n 'Riciclaggio',\n 'Pārstrāde',\n 'Perdirbimas',\n 'Riċiklaġġ',\n 'Recykling',\n 'Reciclagem',\n 'Reciclare',\n 'Recyklácia',\n 'Recikliranje',\n 'Reciclado',\n 'Återvinning',\n 'Reciclatge',\n 'Reciclaxe',\n 'Birziklatzea',\n];\n\nconst sustainabilityLang = [\n 'en',\n 'bg',\n 'hr',\n 'cs',\n 'da',\n 'nl',\n 'et',\n 'fi',\n 'fr',\n 'de',\n 'el',\n 'hu',\n 'ga',\n 'it',\n 'lv',\n 'lt',\n 'mt',\n 'pl',\n 'pt',\n 'ro',\n 'sk',\n 'sl',\n 'es',\n 'sv',\n 'ca',\n 'gl',\n 'eu',\n];\n\nconst sustainabilityText = [\n {\n lang: 'en',\n iconColor: 'blue',\n title: 'BLUE CONTAINER',\n text: 'Cardboard box and paper packaging',\n icon: BlueIcon,\n },\n {\n lang: 'en',\n iconColor: 'brown',\n title: 'BROWN CONTAINER',\n text: 'Cellophane (organic)',\n icon: BrownIcon,\n },\n {\n lang: 'en',\n iconColor: 'yellow',\n title: 'YELLOW CONTAINER',\n text: 'The bottle neck cover, metal parts, and caps',\n icon: YellowIcon,\n },\n {\n lang: 'en',\n iconColor: 'blue',\n title: 'GREEN CONTAINER',\n text: 'Glass bottle',\n icon: GreenIcon,\n },\n\n {\n lang: 'bg',\n iconColor: 'blue',\n title: 'СИН КОНТЕЙНЕР',\n text: 'Картонена кутия и хартиена опаковка',\n icon: BlueIcon,\n },\n {\n lang: 'bg',\n iconColor: 'brown',\n title: 'КАФЯВ КОНТЕЙНЕР',\n text: 'Целофан (органичен)',\n icon: BrownIcon,\n },\n {\n lang: 'bg',\n iconColor: 'yellow',\n title: 'ЖЪЛТ КОНТЕЙНЕР',\n text: 'Покритие на шията на бутилката, метални части и капачки',\n icon: YellowIcon,\n },\n {\n lang: 'bg',\n iconColor: 'green',\n title: 'ЗЕЛЕН КОНТЕЙНЕР',\n text: 'Стъклена бутилка',\n icon: GreenIcon,\n },\n\n {\n lang: 'hr',\n iconColor: 'blue',\n title: 'PLAVI KONTEJNER',\n text: 'Kartonska kutija i papirnata ambalaža',\n icon: BlueIcon,\n },\n {\n lang: 'hr',\n iconColor: 'brown',\n title: 'SMEĐI KONTEJNER',\n text: 'Celofan (organski)',\n icon: BrownIcon,\n },\n {\n lang: 'hr',\n iconColor: 'yellow',\n title: 'ŽUTI KONTEJNER',\n text: 'Poklopac vrata boce, metalni dijelovi i čepovi',\n icon: YellowIcon,\n },\n {\n lang: 'hr',\n iconColor: 'green',\n title: 'ZELENI KONTEJNER',\n text: 'Staklena boca',\n icon: GreenIcon,\n },\n\n {\n lang: 'cs',\n iconColor: 'blue',\n title: 'MODRÝ KONTEJNER',\n text: 'Kartónová krabice a papírové obaly',\n icon: BlueIcon,\n },\n {\n lang: 'cs',\n iconColor: 'brown',\n title: 'HNĚDÝ KONTEJNER',\n text: 'Celofán (organický)',\n icon: BrownIcon,\n },\n {\n lang: 'cs',\n iconColor: 'yellow',\n title: 'ŽLUTÝ KONTEJNER',\n text: 'Povlak na hrdle láhve, kovové části a zátky',\n icon: YellowIcon,\n },\n {\n lang: 'cs',\n iconColor: 'blue',\n title: 'ZELENÝ KONTEJNER',\n text: 'Skleněná láhev',\n icon: GreenIcon,\n },\n\n {\n lang: 'da',\n iconColor: 'blue',\n title: 'BLÅ CONTAINER',\n text: 'Papæraske og papirindpakning',\n icon: BlueIcon,\n },\n {\n lang: 'da',\n iconColor: 'brown',\n title: 'BRUN CONTAINER',\n text: 'Cellofan (organisk)',\n icon: BrownIcon,\n },\n {\n lang: 'da',\n iconColor: 'yellow',\n title: 'GUL CONTAINER',\n text: 'Flaskens halsdæksel, metaldele og kapsler',\n icon: YellowIcon,\n },\n {\n lang: 'da',\n iconColor: 'blue',\n title: 'GRØN CONTAINER',\n text: 'Glasflaske',\n icon: GreenIcon,\n },\n\n {\n lang: 'nl',\n iconColor: 'blue',\n title: 'BLAUWE CONTAINER',\n text: 'Kartonnen doos en papieren verpakking',\n icon: BlueIcon,\n },\n {\n lang: 'nl',\n iconColor: 'brown',\n title: 'BRUINE CONTAINER',\n text: 'Cellofaan (organisch)',\n icon: BrownIcon,\n },\n {\n lang: 'nl',\n iconColor: 'yellow',\n title: 'GELE CONTAINER',\n text: 'De halsbedekking van de fles, metalen onderdelen en doppen',\n icon: YellowIcon,\n },\n {\n lang: 'nl',\n iconColor: 'green',\n title: 'GROENE CONTAINER',\n text: 'Glazen fles',\n icon: GreenIcon,\n },\n\n {\n lang: 'et',\n iconColor: 'blue',\n title: 'SININE KONTEINER',\n text: 'Pappkast ja paberiümbris',\n icon: BlueIcon,\n },\n {\n lang: 'et',\n iconColor: 'brown',\n title: 'PRUUN KONTEINER',\n text: 'Cellofaan (orgaaniline)',\n icon: BrownIcon,\n },\n {\n lang: 'et',\n iconColor: 'yellow',\n title: 'KOLLANE KONTEINER',\n text: 'Pudeli kaela kate, metallosad ja korgid',\n icon: YellowIcon,\n },\n {\n lang: 'et',\n iconColor: 'green',\n title: 'ROHELINE KONTEINER',\n text: 'Klaaspudel',\n icon: GreenIcon,\n },\n\n {\n lang: 'fi',\n iconColor: 'blue',\n title: 'SININEN ASTIA',\n text: 'Kartonkilaatikko ja paperipakkaus',\n icon: BlueIcon,\n },\n {\n lang: 'fi',\n iconColor: 'brown',\n title: 'RUSKEA ASTIA',\n text: 'Sellofaani (orgaaninen)',\n icon: BrownIcon,\n },\n {\n lang: 'fi',\n iconColor: 'yellow',\n title: 'KELTAINEN ASTIA',\n text: 'Pullon kauluksen suojus, metalliosat ja korkit',\n icon: YellowIcon,\n },\n {\n lang: 'fi',\n iconColor: 'green',\n title: 'VIHREÄ ASTIA',\n text: 'Lasipullo',\n icon: GreenIcon,\n },\n\n {\n lang: 'fr',\n iconColor: 'blue',\n title: 'CONTENEUR BLEU',\n text: 'Boîte en carton et emballage en papier',\n icon: BlueIcon,\n },\n {\n lang: 'fr',\n iconColor: 'brown',\n title: 'CONTENEUR MARRON',\n text: 'Cellophane (organique)',\n icon: BrownIcon,\n },\n {\n lang: 'fr',\n iconColor: 'yellow',\n title: 'CONTENEUR JAUNE',\n text: 'Couverture du col de la bouteille, pièces métalliques et bouchons',\n icon: YellowIcon,\n },\n {\n lang: 'fr',\n iconColor: 'green',\n title: 'CONTENEUR VERT',\n text: 'Bouteille en verre',\n icon: GreenIcon,\n },\n\n {\n lang: 'de',\n iconColor: 'blue',\n title: 'BLAUER CONTAINER',\n text: 'Pappkarton und Papierverpackung',\n icon: BlueIcon,\n },\n {\n lang: 'de',\n iconColor: 'brown',\n title: 'BRAUNER CONTAINER',\n text: 'Cellophan (organisch)',\n icon: BrownIcon,\n },\n {\n lang: 'de',\n iconColor: 'yellow',\n title: 'GELBER CONTAINER',\n text: 'Flaschenhalsüberzug, Metallteile und Kappen',\n icon: YellowIcon,\n },\n {\n lang: 'de',\n iconColor: 'green',\n title: 'GRÜNER CONTAINER',\n text: 'Glasflasche',\n icon: GreenIcon,\n },\n\n {\n lang: 'el',\n iconColor: 'blue',\n title: 'ΜΠΛΕ ΚΑΔΟΣ',\n text: 'Χάρτινη συσκευασία και περιτύλιγμα από χαρτί',\n icon: BlueIcon,\n },\n {\n lang: 'el',\n iconColor: 'brown',\n title: 'ΚΑΦΕ ΚΑΔΟΣ',\n text: 'Κελλοφάν (οργανικό)',\n icon: BrownIcon,\n },\n {\n lang: 'el',\n iconColor: 'yellow',\n title: 'ΚΙΤΡΙΝΟΣ ΚΑΔΟΣ',\n text: 'Κάλυμμα λαιμού φιάλης, μεταλλικά μέρη και πώματα',\n icon: YellowIcon,\n },\n {\n lang: 'el',\n iconColor: 'green',\n title: 'ΠΡΑΣΙΝΟΣ ΚΑΔΟΣ',\n text: 'Γυάλινη φιάλη',\n icon: GreenIcon,\n },\n\n {\n lang: 'hu',\n iconColor: 'blue',\n title: 'KÉK KUKA',\n text: 'Kartondoboz és papír csomagolás',\n icon: BlueIcon,\n },\n {\n lang: 'hu',\n iconColor: 'brown',\n title: 'BARNA KUKA',\n text: 'Cellofán (organikus)',\n icon: BrownIcon,\n },\n {\n lang: 'hu',\n iconColor: 'yellow',\n title: 'SÁRGA KUKA',\n text: 'Pudeli kaela kate, metallosad ja korgid',\n icon: YellowIcon,\n },\n {\n lang: 'hu',\n iconColor: 'green',\n title: 'ZÖLD KUKA',\n text: 'Üvegpalack',\n icon: GreenIcon,\n },\n\n {\n lang: 'ga',\n iconColor: 'blue',\n title: 'COINNÉAL GORM',\n text: 'Bosca cartán agus pacáistiú páipéir',\n icon: BlueIcon,\n },\n {\n lang: 'ga',\n iconColor: 'brown',\n title: 'COINNÉAL DONN',\n text: 'Cellofaan (organach)',\n icon: BrownIcon,\n },\n {\n lang: 'ga',\n iconColor: 'yellow',\n title: 'COINNÉAL BUÍ',\n text: 'Clúdach muineál na buidile, páirteanna miotail agus clúdaigh',\n icon: YellowIcon,\n },\n {\n lang: 'ga',\n iconColor: 'green',\n title: 'COINNÉAL GLAS',\n text: 'Buidéal gloine',\n icon: GreenIcon,\n },\n\n {\n lang: 'it',\n iconColor: 'blue',\n title: 'CONTENITORE BLU',\n text: 'Scatola di cartone e imballaggio di carta',\n icon: BlueIcon,\n },\n {\n lang: 'it',\n iconColor: 'brown',\n title: 'CONTENITORE MARRONE',\n text: 'Cellophane (organico)',\n icon: BrownIcon,\n },\n {\n lang: 'it',\n iconColor: 'yellow',\n title: 'CONTENITORE GIALLO',\n text: 'Coperchio del collo della bottiglia, parti metalliche e tappi',\n icon: YellowIcon,\n },\n {\n lang: 'it',\n iconColor: 'green',\n title: 'CONTENITORE VERDE',\n text: 'Bottiglia di vetro',\n icon: GreenIcon,\n },\n\n {\n lang: 'lv',\n iconColor: 'blue',\n title: 'ZILS KONTEINERIS',\n text: 'Kartonizētā kaste un papīra iepakojums',\n icon: BlueIcon,\n },\n {\n lang: 'lv',\n iconColor: 'brown',\n title: 'BRŪNS KONTEINERIS',\n text: 'Celofāns (organisks)',\n icon: BrownIcon,\n },\n {\n lang: 'lv',\n iconColor: 'yellow',\n title: 'DZELTENS KONTEINERIS',\n text: 'Pudeļu kakla pārklājums, metāla daļas un vāciņi',\n icon: YellowIcon,\n },\n {\n lang: 'lv',\n iconColor: 'green',\n title: 'ZAĻŠ KONTEINERIS',\n text: 'Stikla pudele',\n icon: GreenIcon,\n },\n\n {\n lang: 'lt',\n iconColor: 'blue',\n title: 'MĖLYNAS KONTENERIS',\n text: 'Kartoninė dėžė ir popierinė pakuotė',\n icon: BlueIcon,\n },\n {\n lang: 'lt',\n iconColor: 'brown',\n title: 'RUDAS KONTENERIS',\n text: 'Celiopanas (organinis)',\n icon: BrownIcon,\n },\n {\n lang: 'lt',\n iconColor: 'yellow',\n title: 'GELTONAS KONTENERIS',\n text: 'Buteliuko kaklo dangtelis, metalinės dalys ir kamščiai',\n icon: YellowIcon,\n },\n {\n lang: 'lt',\n iconColor: 'green',\n title: 'ŽALIAS KONTENERIS',\n text: 'Stiklinis butelis',\n icon: GreenIcon,\n },\n\n {\n lang: 'mt',\n iconColor: 'blue',\n title: 'KUNTENITUR BLU',\n text: 'Kaxxa tal-kartun u emballaġġ tal-impakkar tal-karta',\n icon: BlueIcon,\n },\n {\n lang: 'mt',\n iconColor: 'brown',\n title: 'KUNTENITUR KAHWA',\n text: 'Cellofaan (organiċi)',\n icon: BrownIcon,\n },\n {\n lang: 'mt',\n iconColor: 'yellow',\n title: 'KUNTENITUR IS-SAFRAN',\n text: 'Il-kopertura tal-għonq tal-flixkun, partijiet tal-metall u tapit',\n icon: YellowIcon,\n },\n {\n lang: 'mt',\n iconColor: 'green',\n title: 'KUNTENITUR VERDE',\n text: 'Flixkun tal-ħġieġ',\n icon: GreenIcon,\n },\n\n {\n lang: 'pl',\n iconColor: 'blue',\n title: 'NIEBIESKI POJEMNIK',\n text: 'Pudełko kartonowe i opakowanie papierowe',\n icon: BlueIcon,\n },\n {\n lang: 'pl',\n iconColor: 'brown',\n title: 'BRĄZOWY POJEMNIK',\n text: 'Celofan (organiczny)',\n icon: BrownIcon,\n },\n {\n lang: 'pl',\n iconColor: 'yellow',\n title: 'ŻÓŁTY POJEMNIK',\n text: 'Pokrywa szyjki butelki, metalowe części i kapsle',\n icon: YellowIcon,\n },\n {\n lang: 'pl',\n iconColor: 'green',\n title: 'ZIELONY POJEMNIK',\n text: 'Szklana butelka',\n icon: GreenIcon,\n },\n\n {\n lang: 'pt',\n iconColor: 'blue',\n title: 'CONTÊINER AZUL',\n text: 'Caixa de papelão e embalagem de papel',\n icon: BlueIcon,\n },\n {\n lang: 'pt',\n iconColor: 'brown',\n title: 'CONTÊINER MARROM',\n text: 'Celofane (orgânico)',\n icon: BrownIcon,\n },\n {\n lang: 'pt',\n iconColor: 'yellow',\n title: 'CONTÊINER AMARELO',\n text: 'Cobertura do pescoço da garrafa, peças metálicas e capace',\n icon: YellowIcon,\n },\n {\n lang: 'pt',\n iconColor: 'green',\n title: 'CONTÊINER VERDE',\n text: 'Garrafa de vidro',\n icon: GreenIcon,\n },\n\n {\n lang: 'ro',\n iconColor: 'blue',\n title: 'CONTENITOR ALBASTRU',\n text: 'Cutie de carton și ambalaj din hârtie',\n icon: BlueIcon,\n },\n {\n lang: 'ro',\n iconColor: 'brown',\n title: 'CONTENITOR MĂNUNCHI',\n text: 'Celofan (organic)',\n icon: BrownIcon,\n },\n {\n lang: 'ro',\n iconColor: 'yellow',\n title: 'CONTENITOR GALBEN',\n text: 'Acoperirea gâtului sticlei, piese metalice și capace',\n icon: YellowIcon,\n },\n {\n lang: 'ro',\n iconColor: 'green',\n title: 'CONTENITOR VERDE',\n text: 'Sticlă de sticlă',\n icon: GreenIcon,\n },\n\n {\n lang: 'sk',\n iconColor: 'blue',\n title: 'MODRÝ KONTEJNER',\n text: 'Kartonová krabica a papierové obaly',\n icon: BlueIcon,\n },\n {\n lang: 'sk',\n iconColor: 'brown',\n title: 'HNĚDÝ KONTEJNER',\n text: 'Celofán (organický)',\n icon: BrownIcon,\n },\n {\n lang: 'sk',\n iconColor: 'yellow',\n title: 'ŽLUTÝ KONTEJNER',\n text: 'Pokrytie hrdla fľaše, kovové diely a zátky',\n icon: YellowIcon,\n },\n {\n lang: 'sk',\n iconColor: 'green',\n title: 'ZELENÝ KONTEJNER',\n text: 'Skleněná láhev',\n icon: GreenIcon,\n },\n\n {\n lang: 'sl',\n iconColor: 'blue',\n title: 'MODRI KONTEJNER',\n text: 'Kartonasti škatla in papirnata embalaža',\n icon: BlueIcon,\n },\n {\n lang: 'sl',\n iconColor: 'brown',\n title: 'RJAVA KONTEJNER',\n text: 'Celofan (organski)',\n icon: BrownIcon,\n },\n {\n lang: 'sl',\n iconColor: 'yellow',\n title: 'ŽUTI KONTEJNER',\n text: 'Pokrov na vratu steklenice, kovinske dele in zamaški',\n icon: YellowIcon,\n },\n {\n lang: 'sl',\n iconColor: 'green',\n title: 'ZELENI KONTEJNER',\n text: 'Steklenica iz stekla',\n icon: GreenIcon,\n },\n\n {\n lang: 'es',\n iconColor: 'blue',\n title: 'CONTENEDOR AZUL',\n text: 'La caja de cartón y envoltorio de papel',\n icon: BlueIcon,\n },\n {\n lang: 'es',\n iconColor: 'brown',\n title: 'CONTENEDOR MARRÓN',\n text: 'El corcho (orgánico)',\n icon: BrownIcon,\n },\n {\n lang: 'es',\n iconColor: 'yellow',\n title: 'CONTENEDOR AMARILLO',\n text:\n 'El recubrimiento del cuello de la botella, las piezas metálicas, los tapones y el celofán',\n icon: YellowIcon,\n },\n {\n lang: 'es',\n iconColor: 'green',\n title: 'CONTENEDOR VERDE',\n text: 'La botella (vidrio)',\n icon: GreenIcon,\n },\n\n {\n lang: 'sv',\n iconColor: 'blue',\n title: 'BLÅ CONTAINER',\n text: 'Pappkartong och papperförpackning',\n icon: BlueIcon,\n },\n {\n lang: 'sv',\n iconColor: 'brown',\n title: 'BRUN CONTAINER',\n text: 'Cellofan (organisk)',\n icon: BrownIcon,\n },\n {\n lang: 'sv',\n iconColor: 'yellow',\n title: 'GUL CONTAINER',\n text: 'Flaskhalsens skydd, metalldelar och korkar',\n icon: YellowIcon,\n },\n {\n lang: 'sv',\n iconColor: 'green',\n title: 'GRÖN CONTAINER',\n text: 'Glasflaska',\n icon: GreenIcon,\n },\n {\n lang: 'ca',\n iconColor: 'blue',\n title: 'CONTENIDOR BLAU',\n text: \"La caixa de cartró i l'embolcall de paper\",\n icon: BlueIcon,\n },\n {\n lang: 'ca',\n iconColor: 'brown',\n title: 'CONTENIDOR MARRÓ',\n text: 'El tap de suro',\n icon: BrownIcon,\n },\n {\n lang: 'ca',\n iconColor: 'yellow',\n title: 'CONTENIDOR GROC',\n text:\n \"El recobriment del coll de l'ampolla, les peces metàl-liques, els taps i la cel·lofana\",\n icon: YellowIcon,\n },\n {\n lang: 'ca',\n iconColor: 'green',\n title: 'CONTENIDOR VERD',\n text: \"L'ampolla (vidre)\",\n icon: GreenIcon,\n },\n {\n lang: 'gl',\n iconColor: 'blue',\n title: 'CONTEDOR AZUL',\n text: 'A caixa de cartón e o envoltorio de papel',\n icon: BlueIcon,\n },\n {\n lang: 'gl',\n iconColor: 'brown',\n title: 'CONTENEDOR MARRÓN',\n text: 'Corcho (orgánico)',\n icon: BrownIcon,\n },\n {\n lang: 'gl',\n iconColor: 'yellow',\n title: 'CONTEDOR AMARELO ',\n text:\n 'O revestimento do pescozo da botella, as pezas metálicas, os tapóns e o celofán',\n icon: YellowIcon,\n },\n {\n lang: 'gl',\n iconColor: 'green',\n title: 'CONTEDOR VERDE',\n text: 'A botella (vidro)',\n icon: GreenIcon,\n },\n {\n lang: 'eu',\n iconColor: 'blue',\n title: 'EDUKIONTZI URDINA',\n text: 'Kartoi-kutxa eta paper- bilgarria 9:31',\n icon: BlueIcon,\n },\n {\n lang: 'eu',\n iconColor: 'brown',\n title: 'ONTZI MARROIA',\n text: ' Kortxoa (organikoa)',\n icon: BrownIcon,\n },\n {\n lang: 'eu',\n iconColor: 'yellow',\n title: 'EDUKIONTZI HORIA',\n text: 'Botilaren lepo-estaldura, pieza metalikoak, tapoiak eta zelofana',\n icon: YellowIcon,\n },\n {\n lang: 'eu',\n iconColor: 'green',\n title: 'EDUKIONTZI BERDEA',\n text: 'Botila (beira)',\n icon: GreenIcon,\n },\n];\n\nexport { sustainabilityLang, sustainabilityRecycleText, sustainabilityText };\n","import { useQuery } from '@apollo/react-hooks';\nimport { productQuery } from 'queries/product';\nimport React, { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useParams } from 'react-router';\nimport { ProductVars } from 'screens/Product/Product.props';\nimport { AppState } from 'store';\nimport { ProductData } from 'types/product';\nimport { sustainabilityText } from './Constant';\n\n/**\n * @function Sustainability\n * @author traj3ctory\n */\n\nconst Sustainability = () => {\n const { wineId } = useParams();\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n interface ISustainabilityText {\n lang: string;\n iconColor: string;\n title: string;\n text: string;\n icon: string;\n }\n\n const [selectedSustainability, setSelectedSustainability] = useState<\n ISustainabilityText[]\n >();\n\n const { data: resProduct, loading } = useQuery(\n productQuery,\n {\n variables: {\n pk: wineId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idProduct === wineId)\n ?.short_name\n : '',\n },\n }\n );\n\n useEffect(() => {\n const _selectLanguage =\n translateSelect?.find((lang) => lang?.idProduct === wineId) || null;\n\n if (_selectLanguage?.short_name) {\n const _sustainabilityText = sustainabilityText?.filter(\n (el) => el?.lang === _selectLanguage?.short_name\n );\n setSelectedSustainability(_sustainabilityText);\n return;\n }\n const _productLang = resProduct?.product?.data?.translationStatus;\n const productLang = _productLang\n ? Object.keys(JSON.parse(_productLang))\n : null;\n\n if (productLang) {\n const _sustainabilityText = sustainabilityText?.filter(\n (el) => el?.lang === productLang?.[0]\n );\n setSelectedSustainability(_sustainabilityText);\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [translateSelect, resProduct, wineId]);\n\n if (!selectedSustainability) return null;\n return (\n
\n {selectedSustainability.map((s, i) => (\n \n {s.title}\n
\n \n {s.title}\n \n \n {s.text}\n

\n
\n
\n ))}\n \n );\n};\n\nexport default Sustainability;\n","import React from 'react';\nimport { ProductTabs as TabsList } from 'types/product';\n//COMPONENTS\nimport Icon from 'components/Icon';\nimport ProductTabsIngredient from 'components/ProductTabs/templates/ProductTabs.ingredient';\nimport ProductTabsPdfs from 'components/ProductTabs/templates/ProductTabs.pdf';\nimport ProductTabsRecommendation from 'components/ProductTabs/templates/ProductTabs.recommendation';\nimport ProductTabsTech from 'components/ProductTabs/templates/ProductTabs.tech';\nimport TabNutrient from './TabNutrient';\n//STYLES\nimport { useMediaQuery } from '@react-hook/media-query';\nimport Sustainability from '../sustainability';\nimport {\n TabsBody,\n TabsHead,\n TabsHeader,\n TabsHeadIcon,\n TabsItem,\n TabsMobileContainer,\n TabsMobileItem,\n} from './Tabs.styled';\n\ninterface ProductTabDesktopProps {\n tabs: TabsList[];\n active: string;\n setActive: (pk: string) => void;\n mobile?: boolean;\n}\n\nconst ProductTabDesktop = ({\n tabs,\n active,\n setActive,\n mobile,\n}: ProductTabDesktopProps) => {\n const matches = useMediaQuery('only screen and (max-width: 575px)');\n\n const maxText = (text: string, max: number) => {\n return text.length > max ? `${text.slice(0, max)}...` : text;\n };\n\n return mobile ? (\n \n {tabs?.map((tab) => (\n \n {console.log(tab, 'tabs')}\n \n {\n setActive(tab.pk);\n }}\n >\n {tab.title.toLowerCase()}{' '}\n \n \n \n \n \n \n \n {tab.technicalDetail && (\n \n )}\n {tab.ingredientList && (\n \n )}\n {tab.fileList && (\n \n )}\n {tab.nutritionFact && (\n \n )}\n {tab.recommendationList && (\n \n )}\n {tab.sustainability && }\n \n \n \n ))}\n \n ) : (\n <>\n \n {tabs.map((tab, index) => (\n {\n setActive(tab.pk);\n }}\n >\n {matches\n ? maxText(tab.title.toLowerCase(), 20)\n : tab.title.toLowerCase()}{' '}\n \n ))}\n \n \n {tabs.map((tab) => (\n \n {tab.technicalDetail && (\n \n )}\n {tab.ingredientList && (\n \n )}\n {tab.fileList && }\n {tab.nutritionFact && }\n {tab.recommendationList && (\n \n )}\n {tab.sustainability && }\n \n ))}\n \n \n );\n};\n\nexport default ProductTabDesktop;\n","import { useMediaQuery } from '@react-hook/media-query';\nimport React, { useEffect, useState } from 'react';\nimport { ProductTabs as ProductTabsList } from 'types/product';\n//COMPONENTS\nimport Tab from './Tab';\n//STYLES\nimport { TabsContainer } from './Tabs.styled';\n\ninterface TabsProps {\n tabs: ProductTabsList[];\n}\n\ninterface MapTemplateTabs {\n template: JSX.Element;\n}\n\nconst Tabs = ({ tabs }: TabsProps) => {\n const matches = useMediaQuery('only screen and (max-width: 175px)'); //575\n\n const [active, setActive] = useState(tabs?.[0]?.pk || '');\n\n useEffect(() => {\n if (!active && tabs?.[0]?.pk) {\n setActive(tabs[0].pk);\n }\n if (tabs && active && !tabs.find((tab) => tab.pk === active)) {\n setActive(tabs[0].pk);\n }\n }, [active, tabs]);\n\n return (\n \n {matches ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default Tabs;\n","import styled from \"styled-components\"\nimport { Text } from \"components/Text\"\n\nexport const TagsContainer = styled.div<{margin?: string;}>`\n display: inline-flex;\n gap: 1.5rem;\n flex-wrap: wrap;\n margin: ${({ margin }) => margin ? margin : \"0\"};\n`\n\nexport const TagsItemIcon = styled.img`\n width: 1rem;\n height: 1rem;\n`\nexport const TagsItemText = styled.span`\n color: ${({ theme }) => theme.colors.wineBlack};\n`\n\nexport const TagsItem = styled.div`\n align-items: center;\n display: flex;\n gap: 0 0.5rem;\n padding: 0.25rem 0.625rem;\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.75rem;\n background-color: ${({ theme }) => theme.colors.backgroundGrayLight};\n border-radius: 40px;\n cursor: pointer;\n transition: all 0.25s ease-in-out;\n &:hover {\n background-color: ${({ theme }) => theme.colors.winePrimary};\n ${TagsItemIcon} {\n filter: invert(100%) sepia(15%) saturate(0%) hue-rotate(40deg) brightness(103%) contrast(102%);\n }\n ${TagsItemText} {\n color: ${({ theme }) => theme.colors.white};\n }\n }\n`","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\n//PROPS TYPE\nimport { ProductProofPoint } from 'types/product';\n//STORE\nimport { openModal } from 'store/proofPointModal';\n//STYLES\nimport {\n TagsContainer,\n TagsItem,\n TagsItemIcon,\n TagsItemText,\n} from './Tags.styled';\n\ninterface TagsProps {\n margin?: string;\n proofs: ProductProofPoint[];\n style?: React.CSSProperties;\n}\n\nconst Tags = ({ style, margin, proofs }: TagsProps) => {\n const dispatch = useDispatch();\n\n const PROOFPOINTS_LIST = proofs.filter(\n (proof) =>\n proof && proof.icon && proof.icon.icon && !proof.icon.icon.includes('c_')\n );\n\n const handleOpenProofPointModal = useCallback(\n (proof: ProductProofPoint) => {\n dispatch(\n openModal({\n proof,\n })\n );\n },\n [dispatch]\n );\n\n return (\n \n {PROOFPOINTS_LIST.map((proof) => (\n {\n handleOpenProofPointModal(proof);\n }}\n >\n \n {proof.name}\n \n ))}\n \n );\n};\n\nexport default Tags;\n","import styled from 'styled-components';\n\n//COMPONENTS\nimport { Text } from 'components/Text';\n\nexport const CycleLifeModalParagraph= styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 0.875rem;\n line-height: 21px;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 1rem;\n p {\n margin: 0 0 1rem;\n }\n a {\n font-weight: bold;\n color: ${({ theme }) => theme.colors.winePrimary};\n transition: all 0.25s ease-in-out;\n margin: 0 0 0.5rem;\n display: inline-block;\n outline: none;\n &:focus {\n outline: none;\n }\n &:hover {\n color: ${({ theme }) => theme.colors.wineBlack};\n }\n }\n em {\n font-style: normal;\n }\n`;","import React, { useCallback, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector, useDispatch } from 'react-redux';\nimport moment from 'moment';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//PROPS TYPE\nimport { CycleLifeModalProps } from './CycleLifeModal.props';\n//STORE\nimport { AppState } from 'store';\nimport { closeModal } from 'store/cycleLifeModal';\n//COMPONETNS\nimport Modal from 'components/Modal';\nimport { Markup } from 'interweave';\nimport VideoPreview from 'components/VideoPreview';\n//STYLES\nimport { ModalContent } from 'components/Modal/Modal.styled';\nimport {\n CycleLifeItem,\n CycleLifeItemDate,\n CycleLifeItemTitle,\n CycleLifeItemImage,\n CycleLifeItemColumn,\n} from 'screens/Wine/components/CycleLife/CycleLife.styled';\nimport { CycleLifeModalParagraph } from './CycleLifeModal.styled';\n\nconst CycleLifeModal = ({ hiddeClose, wine }: CycleLifeModalProps) => {\n const dispatch = useDispatch();\n\n const $milestoneParent = useRef(null);\n\n const { isOpen, milestone } = useSelector(\n (state: AppState) => state.cycleLifeModal\n );\n\n const handleCloseModal = useCallback(() => {\n if (!hiddeClose) {\n dispatch(closeModal());\n }\n }, [dispatch, hiddeClose]);\n\n return (\n \n \n {milestone && (\n \n \n {moment(milestone.createdAt).format('DD/MM/YYYY')}\n \n {milestone.name}\n \n \n {milestone.description && (\n \n )}\n \n {milestone.video && (\n \n )}\n {!milestone.video && (\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default CycleLifeModal;\n","import { useQuery } from '@apollo/react-hooks';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport ReactGA from 'react-ga4';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n//QUERIES\nimport { productQuery } from 'queries/product';\n//STORE\nimport { AppState } from 'store';\nimport { setMobileNav } from 'store/mobilenav';\nimport { setOrganizationInfo } from 'store/organization';\nimport { setProduct } from 'store/product';\nimport { openModal, setTranslations } from 'store/tramslateModal';\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { ProductVars } from 'screens/Product/Product.props';\nimport { ProductData } from 'types/product';\n//PROPS TYPE\n//COMPONENTS\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport EvidenceModal from 'components/EvidenceModal';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal/MediaEvicenceModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport ProofPointModal from 'components/ProofPointModal';\nimport RenderHtml from 'components/RenderHtml';\nimport AppLayoutWine from 'module/AppLayoutWine';\nimport ProductSkeleton from 'screens/Product/components/ProductSkeleton';\nimport CycleLife from './components/CycleLife';\nimport Pictures from './components/Pictures';\nimport Seals from './components/Seals';\n// import Share from './components/Share';\nimport Tabs from './components/Tabs';\nimport Tags from './components/Tags';\n//STYLES\nimport Icon from 'components/Icon/Icon';\nimport TranslateModal from 'components/TranslateModal/TranslateModal';\nimport { AppLayoutWineWrapper } from 'module/AppLayoutWine/AppLayoutWine.styled';\nimport {\n WineContent,\n WineContentBody,\n WineContentBodyContainer,\n WineContentBodyImages,\n WineContentBodyInformation,\n WineContentLimkWeb,\n WineContentShare,\n // WineContentShareItem,\n // WineContentShareList,\n WineContentTitle,\n WineContentiParagraph,\n WineContentiSeparator,\n WineContentiUnLink,\n} from './Wine.styled';\nimport CycleLifeModal from './components/CycleLifeModal';\nimport {\n sustainabilityLang,\n sustainabilityRecycleText,\n} from './components/sustainability/Constant';\n\n// const SOCIALS: Record = {\n// facebook: 'fb',\n// twitter: 'tw',\n// whatsapp: 'wa',\n// instagram: 'in',\n// youtube: 'yb',\n// linkedin: 'ln',\n// tiktok: 'tt',\n// };\n\nconst Wine = () => {\n const { wineId } = useParams();\n const dispatch = useDispatch();\n\n const matches = useMediaQuery('only screen and (max-width: 920px)');\n const matchesMd = useMediaQuery('only screen and (max-width: 768px)');\n const matchesXs = useMediaQuery('only screen and (max-width: 575px)');\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const [metaInformation, setMetaInformation] = useState({});\n const [selected_language, setSelectedLanguage] = useState(\n null\n );\n\n const { data: resProduct, loading, refetch } = useQuery<\n ProductData,\n ProductVars\n >(productQuery, {\n variables: {\n pk: wineId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idProduct === wineId)\n ?.short_name\n : '',\n },\n });\n\n // const {\n // data: resRelatedProduct,\n // loading: loadingRelated,\n // error: errorRelated,\n // refetch: refetchRelated,\n // } = useQuery(relatedProductQuery, {\n // variables: {\n // id: wineId,\n // language:\n // translateSelect && translateSelect.length > 0\n // ? translateSelect.find((lang) => lang.idProduct === wineId)\n // ?.short_name\n // : '',\n // },\n // });\n\n useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: window.location.pathname,\n title: 'wine',\n });\n }, []);\n\n useEffect(() => {\n if (resProduct && resProduct.product && resProduct.product.data) {\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: resProduct.product.data.name,\n description: resProduct.product.data.description,\n image:\n resProduct.product.data.images.length > 0\n ? resProduct.product.data.images[0].url\n : '',\n url: window.location.href,\n });\n }\n }, [resProduct, dispatch]);\n\n useEffect(() => {\n if (resProduct && resProduct.product && resProduct.product.data) {\n dispatch(\n setOrganizationInfo({\n name: resProduct.product.data.organization.name,\n logo: resProduct.product.data.organization.logo.url,\n })\n );\n dispatch(setProduct(resProduct.product.data));\n }\n }, [dispatch, resProduct]);\n\n useEffect(() => {\n const selectLanguage = translateSelect.find(\n (lang) => lang.idProduct === wineId\n );\n\n if (selectLanguage) {\n setSelectedLanguage(selectLanguage.short_name);\n } else {\n const _productLang = resProduct?.product?.data?.translationStatus;\n const productLang = _productLang\n ? Object.keys(JSON.parse(_productLang))\n : null;\n\n setSelectedLanguage(productLang?.[0] || null);\n }\n\n if (\n !selectLanguage &&\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.translationStatus &&\n Object.keys(JSON.parse(resProduct.product.data.translationStatus))\n .length > 1\n ) {\n dispatch(\n openModal({\n isOpen: true,\n translations: JSON.parse(resProduct.product.data.translationStatus),\n isHiddenClose: true,\n })\n );\n } else if (\n selectLanguage &&\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.translationStatus &&\n Object.keys(JSON.parse(resProduct.product.data.translationStatus))\n .length > 1\n ) {\n dispatch(\n setTranslations({\n translations: JSON.parse(resProduct.product.data.translationStatus),\n })\n );\n }\n }, [translateSelect, resProduct, dispatch, wineId]);\n\n const handleRefetchQuery = useCallback(() => {\n refetch();\n }, [refetch]);\n\n const { isOpen, proof, wineProductLanguage } = useSelector(\n (state: AppState) => state.proofPointDetailModal\n );\n\n const details = resProduct?.product?.data?.tabs[0]?.nutritionFact?.details!;\n const [alcoholicStrengthTitle, setAlcoholicStrengthTitle] = useState();\n const [alcoholicStrength, setAlcoholicStrength] = useState();\n const [alcoholUnit, setAlcoholUnit] = useState('');\n\n useEffect(() => {\n if (details) {\n const detailsList = JSON.parse(details);\n detailsList.map((detail: any) => {\n if (detail.title === 'alcoholicStrength') {\n setAlcoholicStrengthTitle(\n detail.translated_title[wineProductLanguage?.shortName!]\n );\n setAlcoholicStrength(detail.description ? detail.description : '');\n setAlcoholUnit(detail.unit ? detail.unit : '');\n }\n return detail;\n });\n }\n }, [details, wineProductLanguage]);\n\n return (\n }\n metas={metaInformation}\n errorType={\n resProduct && resProduct.product && resProduct.product.errors\n ? resProduct.product.errors.message\n : resProduct && resProduct.product && resProduct.product.error\n ? resProduct.product.error\n : undefined\n }\n errorUrl={resProduct && resProduct.product && resProduct.product.url}\n logo={\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.organization &&\n resProduct.product.data.organization.logo.url\n }\n hideOrgData={\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.hideFromOrgMirror\n }\n type=\"wine\"\n id={wineId}\n >\n \n \n \n {!matchesXs &&\n resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.organization &&\n resProduct.product.data.organization.socialChannels &&\n resProduct.product.data.organization.socialChannels.length > 0 &&\n !resProduct.product.data.hideFromOrgMirror && (\n \n {/* \n {resProduct.product.data.organization.socialChannels.map(\n (social) => (\n \n {SOCIALS[social.type.toLowerCase()]}\n \n )\n )}\n */}\n \n )}\n {resProduct && resProduct.product && resProduct.product.data && (\n \n {!matches &&\n resProduct.product.data &&\n resProduct.product.data.images &&\n resProduct.product.data.images.length > 0 && (\n \n image.url\n )}\n />\n \n // ) : (\n // \n // \"placeholder\"\n //

No Product image

\n //
\n )}\n\n \n {resProduct.product.data &&\n resProduct.product.data.organization &&\n !resProduct.product.data.hideFromOrgMirror && (\n \n {resProduct.product.data.organization.name}\n \n )}\n {resProduct.product.data &&\n resProduct.product.data.organization &&\n !resProduct.product.data.hideFromOrgMirror &&\n !!resProduct.product.data.organization.url && (\n
\n \n {' '}\n {resProduct.product.data.organization.url\n .replace('https://', '')\n .replace('http://', '')\n .replace('www.', '')}\n \n
\n )}\n \n {resProduct.product.data && resProduct.product.data.name}\n \n {/* \n {resProduct.product.data &&\n resProduct.product.data.organization && (\n \n )}\n\n \n Saber más\n \n */}\n \n {resProduct.product.data &&\n resProduct.product.data.description && (\n \n \n \n )}\n {resProduct.product.data.featuredProofPoints &&\n resProduct.product.data.featuredProofPoints.length > 0 && (\n \n )}\n {alcoholicStrengthTitle && alcoholicStrength ? (\n
\n {`${alcoholicStrengthTitle} `} : {` ${alcoholicStrength}`}{' '}\n {alcoholUnit}\n
\n ) : (\n <>\n )}\n {resProduct.product.data.featuredProofPoints &&\n resProduct.product.data.featuredProofPoints.length > 0 && (\n \n )}\n {matches &&\n resProduct.product.data.images &&\n resProduct.product.data.images.length > 0 && (\n \n image.url\n )}\n />\n \n )}\n\n {resProduct.product.data.tabs && (\n // resProduct.product.data.tabs.length > -1 &&\n \n )}\n {/* */}\n
\n
\n )}\n
\n
\n {resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n resProduct.product.data.journey &&\n resProduct.product.data.journey.milestones &&\n resProduct.product.data.journey.milestones.length > 0 && (\n \n )}\n\n \n {/* {resProduct &&\n resProduct.product &&\n resProduct.product.data &&\n !resProduct.product.data.hideFromOrgMirror && (\n \n {resProduct.product.data.organization && (\n \n Saber más sobre {resProduct.product.data.organization.name}\n \n )}\n \n )} */}\n \n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default Wine;\n","import { useQuery } from '@apollo/react-hooks';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useParams } from 'react-router-dom';\n//import ReactGA from 'react-ga4';\n//QUERIES\nimport { lotQuery } from 'queries/lot';\n//STORE\nimport { AppState } from 'store';\nimport { setMobileNav } from 'store/mobilenav';\nimport { setOrganizationInfo } from 'store/organization';\nimport { setProduct } from 'store/product';\nimport {\n openModal as langOpenModal,\n setTranslations,\n} from 'store/tramslateModal';\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { LotData } from 'types/lot';\n//PROPS TYPE\n//COMPONENTS\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport EvidenceModal from 'components/EvidenceModal';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal/MediaEvicenceModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport ProofPointModal from 'components/ProofPointModal';\nimport RenderHtml from 'components/RenderHtml';\nimport AppLayoutWine from 'module/AppLayoutWine';\nimport ProductSkeleton from 'screens/Product/components/ProductSkeleton';\nimport CycleLife from './components/CycleLife';\nimport Pictures from './components/Pictures';\nimport Seals from './components/Seals';\nimport Tabs from './components/Tabs';\nimport Tags from './components/Tags';\n//STYLES\nimport Button from 'components/Button';\nimport Modal from 'components/Modal';\nimport {\n LANGUAGE_MAP,\n LanguageMapProp,\n} from 'components/ProductTabs/templates/ProductLanguage';\n// import SelectLanguageComponent from 'components/SelectLanguage/SelectLanguageComponent';\nimport TranslateModal from 'components/TranslateModal/TranslateModal';\nimport { AppLayoutWineWrapper } from 'module/AppLayoutWine/AppLayoutWine.styled';\nimport { LotVars } from 'screens/Lot/Lot.props';\nimport { openModal as openBlockchainDetailModal } from 'store/blockchainDetailModal';\nimport CycleLifeModal from './components/CycleLifeModal';\nimport { generateTranslatedText, TranslatedText } from './LangTranslator';\nimport {\n WineContent,\n WineContentBody,\n WineContentBodyContainer,\n WineContentBodyImages,\n WineContentBodyInformation,\n WineContentFooter,\n WineContentiLink,\n WineContentiParagraph,\n WineContentiSeparator,\n WineContentLimkWeb,\n WineContentOrganization,\n WineContentOrganizationImage,\n WineContentShare,\n WineContentShareItem,\n WineContentShareList,\n WineContentTitle,\n} from './Wine.styled';\nimport { sustainabilityLang, sustainabilityRecycleText } from './components/sustainability/Constant';\n\nconst SOCIALS: Record = {\n facebook: 'fb',\n twitter: 'tw',\n instagram: 'in',\n youtube: 'yb',\n linkedin: 'ln',\n};\n\nconst Wine = () => {\n const { wineId } = useParams();\n const dispatch = useDispatch();\n\n const matches = useMediaQuery('only screen and (max-width: 920px)');\n const matchesMd = useMediaQuery('only screen and (max-width: 768px)');\n const matchesXs = useMediaQuery('only screen and (max-width: 575px)');\n const [certIsOpen, setCertIsOpen] = useState(false);\n\n const { isOpen, proof, wineProductLanguage } = useSelector(\n (state: AppState) => state.proofPointDetailModal\n );\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const { blockStats } = useSelector((state: AppState) => state.blockStats);\n\n const [metaInformation, setMetaInformation] = useState({});\n const [languageSelect, setLanguageSelect] = useState<\n LanguageMapProp | undefined\n >(LANGUAGE_MAP.find((lang) => lang.shortName === 'es'));\n const [\n selectedTranslationObj,\n setSelectedTranslationObj,\n ] = useState(null);\n const [selected_language, setSelectedLanguage] = useState(\n null\n );\n\n const { data: resProduct, loading, refetch } = useQuery(\n lotQuery,\n {\n variables: {\n pk: wineId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idProduct === wineId)\n ?.short_name\n : '',\n },\n }\n );\n\n const lotResult = resProduct?.productLot;\n const lotData = resProduct?.productLot?.data;\n\n const _extraFieldsArr: any[] = [];\n\n // Iterate over each step in lotData.steps\n lotData?.steps?.forEach((el) => {\n const _parsedData = JSON.parse(el.extraFields!);\n\n // Check if _parsedData is an array of objects\n if (Array.isArray(_parsedData)) {\n _extraFieldsArr.push(..._parsedData); // Merge the parsed array into _extraFieldsArr\n }\n });\n // const loteArray =\n // _extraFieldsArr.filter((item) => item.internal_id === 'lote') || [];\n\n // get the last item in the array\n // const lote = loteArray[loteArray.length - 1] || null;\n\n useEffect(() => {\n const selectLanguage = translateSelect.find(\n (lang) => lang.idProduct === wineId\n );\n\n if (selectLanguage) {\n setSelectedLanguage(selectLanguage.short_name);\n } else {\n setSelectedLanguage(null);\n }\n\n const translationStatus = lotData?.product?.translationStatus;\n const parsedTranslationStatus = translationStatus\n ? JSON.parse(translationStatus)\n : {};\n\n if (Object.keys(parsedTranslationStatus).length > 1) {\n if (selectLanguage) {\n setLanguageSelect(\n LANGUAGE_MAP.find(\n (lang) => lang.shortName === selectLanguage.short_name\n )\n );\n dispatch(\n setTranslations({\n translations: parsedTranslationStatus,\n })\n );\n } else {\n setLanguageSelect(\n LANGUAGE_MAP.find(\n (lang) => lang.shortName === parsedTranslationStatus.default\n ) ?? LANGUAGE_MAP.find((lang) => lang.shortName === 'es')\n );\n dispatch(\n langOpenModal({\n isOpen: true,\n translations: parsedTranslationStatus,\n isHiddenClose: true,\n })\n );\n }\n }\n }, [translateSelect, lotData, dispatch, wineId]);\n\n /**useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: window.location.pathname,\n title: 'wine-bottle',\n });\n }, []);**/\n const isEcological = lotData\n ? JSON.parse(lotData?.steps[3]?.extraFields!)?.find((field: any) => {\n return field?.internal_id === 'ecological';\n })?.value === 'yes'\n : false;\n\n useEffect(() => {\n if (!lotData?.product) {\n return;\n }\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: lotData.product.name,\n description: lotData.product.description,\n image:\n lotData.product.images.length > 0 ? lotData.product.images[0].url : '',\n url: window.location.href,\n });\n\n dispatch(\n setOrganizationInfo({\n name: lotData.product.organization.name,\n logo: lotData.product.organization.logo.url,\n })\n );\n dispatch(setProduct(lotData.product));\n }, [lotData, dispatch]);\n\n const handleRefetchQuery = useCallback(() => {\n refetch();\n }, [refetch]);\n\n const handleOpenBlockchainDetailModal = useCallback(() => {\n if (lotData) {\n dispatch(\n openBlockchainDetailModal({\n proof: lotData?.featuredProofPoints[0],\n lotId: lotData.pk,\n lotData,\n isStatic: true,\n })\n );\n }\n }, [dispatch, lotData]);\n\n const [alcoholicStrengthTitle, setAlcoholicStrengthTitle] = useState();\n const [alcoholUnit, setAlcoholUnit] = useState('');\n const [alcoholicStrength, setAlcoholicStrength] = useState();\n const [deguelleDateState, setDeguelleDate] = useState(null);\n const details = lotData?.product?.tabs[0]?.nutritionFact?.details!;\n\n useEffect(() => {\n if (details) {\n const detailsList = JSON.parse(details);\n detailsList.map((detail: any, index: number) => {\n if (detail.title === 'alcoholicStrength') {\n setAlcoholicStrengthTitle(\n detail?.translated_title[wineProductLanguage?.shortName!]\n );\n setAlcoholicStrength(detail?.description);\n setAlcoholUnit(detail?.unit);\n }\n });\n }\n }, [details, wineProductLanguage]);\n\n const _queryCertificateId =\n URLSearchParams &&\n new URLSearchParams(window.location.search).get('certificateId');\n\n useEffect(() => {\n if (languageSelect && lotData && lotData?.product) {\n let arg3 = 'Dosage';\n let deguelleDate = 'deguelle date';\n const allExtraFields = lotData.steps.map((step, index) => {\n return JSON.parse(step.extraFields!);\n });\n allExtraFields.flat(1).map((extraField, index) => {\n if (\n extraField.name === 'Fecha de Deguelle' &&\n extraField.type === 'date'\n ) {\n deguelleDate = extraField.value;\n setDeguelleDate(extraField.value);\n }\n });\n allExtraFields.flat(1).map((extraField, index) => {\n if (extraField.name === 'Dosage') {\n arg3 = extraField.value;\n }\n });\n\n const ecologicalTranslations = {\n en: 'Ecologic',\n es: 'ecológica',\n ca: 'ecològic',\n };\n\n const response = generateTranslatedText({\n product_name: lotData?.product?.name,\n product_number: _queryCertificateId ?? '',\n arg2: isEcological\n ? ecologicalTranslations[\n languageSelect?.shortName as keyof typeof ecologicalTranslations\n ] || ''\n : '',\n arg3,\n deguelle_date: deguelleDate,\n languageSelect: languageSelect as LanguageMapProp,\n });\n\n setSelectedTranslationObj(response);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [languageSelect, lotData?.product]);\n\n\n return (\n }\n metas={metaInformation}\n errorType={lotResult && lotResult.error}\n errorUrl={lotResult && lotResult.url}\n logo={\n lotData &&\n lotData.product &&\n lotData.product.organization &&\n lotData.product.organization.logo &&\n lotData.product.organization.logo.url\n }\n type=\"wine\"\n id={wineId}\n hideOrgData={\n lotData && lotData.product && lotData.product.hideFromOrgMirror\n }\n >\n \n \n \n {/* \n {!matchesXs &&\n lotData &&\n lotData.product &&\n lotData.product.organization &&\n lotData.product.organization.socialChannels &&\n lotData.product.organization.socialChannels.length > 0 &&\n !lotData.product.hideFromOrgMirror && (\n \n \n {lotData.product.organization.socialChannels.map(\n (social) => (\n \n {SOCIALS[social.type.toLowerCase()]}\n \n )\n )}\n \n \n )}\n */}\n {lotData && lotData.product && (\n \n {!matches &&\n lotData.product &&\n lotData.product.images &&\n lotData.product.images.length > 0 && (\n \n image.url\n )}\n />\n \n // ) : (\n // \n // \"placeholder\"\n //

No Product image

\n //
\n )}\n\n \n {lotData.product &&\n lotData.product.organization &&\n !lotData.product.hideFromOrgMirror && (\n \n {lotData.product.organization.name}\n \n )}\n
\n {lotData.product.organization &&\n !lotData.product.hideFromOrgMirror && (\n \n {' '}\n {lotData.product.organization.url\n .replace('https://', '')\n .replace('http://', '')\n .replace('www.', '')}\n \n )}\n
\n \n {lotData.product && lotData.product.name}\n \n {lotData.workflow &&\n lotData.workflow.verifier &&\n (lotData.workflow.verifier.name.toLowerCase() === '' ||\n lotData.workflow.verifier.name.toLowerCase() ===\n 'davecast') &&\n lotData.steps &&\n lotData.steps.length > 0 &&\n !lotData.product.hideFromOrgMirror && (\n \n \n\n \n \n )}\n setCertIsOpen(true)}\n className=\"cursor-pointer\"\n />\n {/* {lote?.value && (\n

LOTE: {lote?.value || ''}

\n )} */}\n \n {lotData.product && lotData.product.description && (\n \n \n \n )}\n\n {lotData.featuredProofPoints &&\n lotData.featuredProofPoints.length > 0 && (\n \n )}\n
\n {/* {alcoholicStrengthTitle\n ? `${alcoholicStrengthTitle} :`\n : ''}{' '}\n {` ${alcoholicStrength || ''}`} {alcoholUnit || ''} */}\n {alcoholicStrengthTitle && `${alcoholicStrengthTitle}: `}\n {alcoholicStrength && `${alcoholicStrength} `}\n {alcoholUnit}\n
\n {lotData.featuredProofPoints &&\n lotData.featuredProofPoints.length > 0 && (\n \n )}\n {matches &&\n lotData.product.images &&\n lotData.product.images.length > 0 && (\n \n image.url\n )}\n />\n \n )}\n {/* {lotData.product.tabs && lotData.product.tabs.length > 0 && (\n \n )} */}\n {lotData.product.tabs && lotData.product.tabs.length > -1 && (\n \n )}\n {/* */}\n
\n
\n )}\n
\n
\n {lotData &&\n lotData.product &&\n lotData.journey &&\n lotData.journey.milestones &&\n lotData.journey.milestones.length > 0 && (\n \n )}\n \n {lotData && lotData.product && !lotData.product.hideFromOrgMirror && (\n \n {lotData.product.organization && (\n \n )}\n {/* setCertIsOpen(true)}\n className=\"cursor-pointer\"\n /> */}\n \n )}\n \n \n \n \n \n \n \n setCertIsOpen(false)}\n backcolor=\"white\"\n size=\"big\"\n hiddeClose\n >\n
\n \n\n
\n {/* setLanguageSelect(val)}\n data={_LANGUAGES}\n overRide\n defaultLang={languageSelect?.shortName || 'es'}\n /> */}\n
\n\n setCertIsOpen(true)}\n className=\"cursor-pointer\"\n />\n\n

\n {/* Corpinnat Certificate */}\n {selectedTranslationObj?._title ?? ''}\n

\n

\n {lotData?.product.name}\n

\n

\n \n {/* Unique Bottled ID: */}\n {selectedTranslationObj?._subTitle ?? ''}\n : \n \n {_queryCertificateId ?? ''}\n

\n
\n \n {/* {selectedLanguageText} */}\n {selectedTranslationObj?.text ?? ''}\n

\n {\n if (!blockStats.errors) {\n handleOpenBlockchainDetailModal();\n }\n }}\n >\n {selectedTranslationObj?._viewOnBlockchain ?? ''}\n
\n\n
\n\n setCertIsOpen(false)}\n />\n
\n \n \n \n \n );\n};\n\nexport default Wine;\n","import { LanguageMapProp } from 'components/ProductTabs/templates/ProductLanguage';\n\nexport const generateTranslatedText = ({\n product_name,\n product_number,\n arg2,\n arg3,\n deguelle_date,\n languageSelect,\n}: {\n product_name: string;\n product_number: string;\n arg2: string;\n arg3: string;\n deguelle_date: string;\n languageSelect: LanguageMapProp;\n}) => {\n const dataBank = [\n {\n id: 'ca',\n title: 'COMPROMIS DE CORPINNAT',\n subTitle: \"Identificador únic de l'ampolla\",\n text: `CORPINNAT CERTIFICA que aquesta ampolla de {product_name}, número {product_number}, ha estat elaborada a partir de raïm {arg2} collit a mà, premsat i vinificat íntegrament en el mateix celler. Després d’una llarga criança a la cava, aquest {arg3} ha estat degorjat i etiquetat el {deguelle_date}. Tot aquest procés s’audita anualment per una empresa externa qualificada.`,\n buttonBlockchain: 'Veure a la cadena de blocs',\n buttonViewed: 'Vist, gràcies!',\n },\n {\n id: 'es',\n title: 'CERTIFICADO CORPINNAT',\n subTitle: 'ID de botella única',\n text: `CORPINNAT CERTIFICA que esta botella de {product_name} número {product_number}, ha sido elaborada a partir de uva {arg2} cultivada exclusivamente en el corazón del Penedès, vendimiada a mano, prensada y vinificada íntegramente en la propia bodega. Después de una larga crianza en la cava, este {arg3} ha sido degollado y etiquetado el {deguelle_date}. Todo este proceso se audita anualmente por una empresa externa cualificada`,\n buttonBlockchain: 'Ver en la cadena de bloques',\n buttonViewed: 'Visto, Igracias!',\n },\n {\n id: 'en',\n title: 'CORPINNAT CERTIFICATE',\n subTitle: 'Unique Bottle ID',\n text: `CORPINNAT CERTIFIES that this bottle of {product_name} number {product_number}, has been elaborated from {arg2} grapes, grown exclusively in the heart of Penedes, hand harvested, pressed and vinified entirely in the same winery. After a long ageing in the cellar, this {arg3} has been disgorged and labelled the {deguelle_date}. All this process is audited annually by a qualified external Enterprise`,\n buttonBlockchain: 'View on Blockchain',\n buttonViewed: 'Seen, Thank You!',\n },\n {\n id: 'fr',\n title: 'Certificat Corpinnat',\n subTitle: 'Identification unique de la bouteille',\n text: `CORPINNAT CERTIFIE que cette bouteille {product_name} numéro {product_number}, a été élaborée à partir {arg2} de raisins, cultivés exclusivement au cœur du Penedes, vendangés à la main, pressés et vinifiés entièrement dans la même cave. Après un long vieillissement en cave, ce {arg3} a été dégorgé et étiqueté le {deguelle_date}. Tout ce processus est contrôlé annuellement par une entreprise externe qualifiée.`,\n buttonBlockchain: 'Voir sur blockchain',\n buttonViewed: 'Vu, merci!',\n },\n {\n id: 'pt',\n title: 'Certificado Corpinnat ',\n subTitle: 'Identificação única da garrafa',\n text: `CORPINNAT CERTIFICA que esta garrafa de {product_name} número {product_number}, foi elaborada a partir de uvas {arg2}, cultivadas exclusivamente no coração de Penedes, colhidas à mão, prensadas e vinificadas inteiramente na mesma adega. Depois de um longo estágio na adega, este {arg3} foi degolado e rotulado com a data {deguelle_date}. Todo este processo é auditado anualmente por uma empresa externa qualificada.`,\n buttonBlockchain: 'Ver no blockchain',\n buttonViewed: 'Visto, obrigado!',\n },\n {\n id: 'de',\n title: 'Corpinnat-Zertifikat ',\n subTitle: 'Eindeutige Flaschen-ID',\n text: `CORPINNAT ZERTIFIZIERT, dass diese Flasche {product_name} mit der Nummer {product_number} aus {arg2} Trauben hergestellt wurde, die ausschließlich im Herzen von Penedes angebaut, von Hand geerntet, gepresst und vollständig in derselben Weinkellerei vinifiziert wurden. Nach einer langen Reifung im Keller wurde dieser {arg3} degorgiert und mit dem Etikett {deguelle_date} versehen. Der gesamte Prozess wird jährlich von einem qualifizierten externen Unternehmen überprüft.`,\n buttonBlockchain: 'Blick auf Blockchain',\n buttonViewed: 'Gesehen, danke!',\n },\n {\n id: 'it',\n title: 'Certificato Corpinnat',\n subTitle: 'Identificazione univoca della bottiglia',\n text: `CORPINNAT CERTIFICA che questa bottiglia di {product_name} numero {product_number}, è stata elaborata da uve {arg2}, coltivate esclusivamente nel cuore del Penedes, raccolte a mano, pressate e vinificate interamente nella stessa cantina. Dopo un lungo invecchiamento in cantina, questo {arg3} è stato sboccato ed etichettato con la data {deguelle_date}. Tutto questo processo viene controllato annualmente da un'impresa esterna qualificata.`,\n buttonBlockchain: 'vista su blockchain',\n buttonViewed: 'Visto, grazie!',\n },\n {\n id: 'sv',\n title: 'Corpinnat-certifikat',\n subTitle: 'Unikt flask-ID',\n text: `CORPINNAT CERTIFIERAR att denna flaska {product_name} nummer {product_number}, har framställts av {arg2} druvor som uteslutande odlats i hjärtat av Penedes, handskördats, pressats och vinifierats helt och hållet i samma vingård. Efter en lång åldring i källaren har denna {arg3} degorgerats och märkts {deguelle_date}. Hela denna process granskas årligen av ett kvalificerat externt företag.`,\n buttonBlockchain: 'Syn på blockchain',\n buttonViewed: 'Sett, tack!',\n },\n {\n id: 'ja',\n title: 'コルピナット証明書 ',\n subTitle: 'ユニークなボトルID',\n text: `CORPINNATは、この{product_name}のボトル番号{product_number}が、{arg2}ブドウから精巧に造られ、手摘みで収穫され、プレスされ、全て同じワイナリーで醸造されたことを証明します。セラーでの長い熟成の後、この{arg3}は排出され、{deguelle_date}のラベルが貼られている。この工程はすべて、毎年、資格を有する外部の企業によって監査されている。`,\n buttonBlockchain: 'ブロックチェーンの見方',\n buttonViewed: 'わかりました、ありがとう',\n },\n {\n id: 'bg',\n title: 'Сертификат Corpinnat',\n subTitle: 'Уникален идентификатор на бутилката',\n text: `CORPINNAT УДОСТОВЕРЯВА, че тази бутилка {product_name} с номер {product_number} е произведена от {arg2} грозде, отгледано изключително в сърцето на Пенедес, ръчно събрано, пресовано и винифицирано изцяло в същата винарна. След продължително отлежаване в избата, тази {arg3} е разпечатана и етикетирана на {deguelle_date}. Целият този процес се одитира ежегодно от квалифицирано външно предприятие.`,\n buttonBlockchain: 'преглед на блокчейн',\n buttonViewed: 'Видяно, благодаря',\n },\n {\n id: 'cs',\n title: 'Certifikát Corpinnat',\n subTitle: 'Jedinečné ID lahve',\n text: `CORPINNAT POTVRZUJE, že tato láhev {product_name} číslo {product_number} byla vyrobena z {arg2} hroznů vypěstovaných výhradně v srdci Penedes, ručně sklizených, lisovaných a vinifikovaných výhradně ve stejném vinařství. Po dlouhém zrání ve sklepě byla tato {arg3} disgorigována a označena etiketou {deguelle_date}. Celý tento proces je každoročně kontrolován kvalifikovaným externím podnikem.`,\n buttonBlockchain: 'pohled na blockchain',\n buttonViewed: 'Viděno, děkuji!',\n },\n {\n id: 'hr',\n title: 'Certifikat Corpinnat',\n subTitle: 'Jedinstveni ID boce',\n text: `CORPINNAT POTVRĐUJE da je ova boca {product_name} broj {product_number} izrađena od {arg2} grožđa, uzgojenog isključivo u srcu Penedesa, ručno branog, prešanog i vinificiranog u cijelosti u istoj vinariji. Nakon dugog odležavanja u podrumu, ovaj {arg3} je degoržiran i označen kao {deguelle_date}. Cijeli ovaj proces godišnje revidira kvalificirano vanjsko poduzeće.`,\n buttonBlockchain: 'pogled na blockchain',\n buttonViewed: 'Vidjeno, hvala!',\n },\n {\n id: 'da',\n title: 'Corpinnat-certifikat',\n subTitle: 'Unikt flaske-id',\n text: `CORPINNAT BEKRÆFTER, at denne flaske {product_name} med nummeret {product_number} er fremstillet af {arg2} druer, der udelukkende er dyrket i hjertet af Penedes, håndhøstet, presset og vinificeret udelukkende i den samme vingård. Efter en lang modning i kælderen er denne {arg3} blevet degorgeret og mærket {deguelle_date}. Hele denne proces revideres årligt af en kvalificeret ekstern virksomhed.`,\n buttonBlockchain: 'syn på blockchain',\n buttonViewed: 'Set, tak!',\n },\n {\n id: 'sk',\n title: 'Certifikát Corpinnat ',\n subTitle: 'Jedinečné identifikačné číslo fľaše',\n text: `CORPINNAT POTVRDZUJE, že táto fľaša {product_name} číslo {product_number} bola vyrobená z {arg2} hrozna vypestovaného výlučne v srdci Penedes, ručne zozbieraného, vylisovaného a vinifikovaného výlučne v tom istom vinárstve. Po dlhom dozrievaní v pivnici bola táto {arg3} disgorigovaná a označená etiketou {deguelle_date}. Celý tento proces každoročne kontroluje kvalifikovaný externý podnik.`,\n buttonBlockchain: 'pohľad na blockchain',\n buttonViewed: 'Vidieť, ďakujem!',\n },\n {\n id: 'fi',\n title: 'Corpinnat-todistus',\n subTitle: 'Ainutlaatuinen pullon tunnus',\n text: `CORPINNAT VARMISTAA, että tämä pullo {product_name} numero {product_number} on valmistettu yksinomaan Penedesin sydämessä kasvatetuista {arg2} rypäleistä, jotka on korjattu käsin, puristettu ja viiniytetty kokonaan samalla viinitilalla. Pitkän kellarissa kypsymisen jälkeen tämä {arg3} on puristettu ja merkitty etiketillä {deguelle_date}. Pätevä ulkopuolinen yritys tarkastaa tämän prosessin vuosittain.`,\n buttonBlockchain: 'näkymä lohkoketjussa',\n buttonViewed: 'Nähty, kiitos!',\n },\n {\n id: 'el',\n title: 'Πιστοποιητικό Corpinnat ',\n subTitle: 'Μοναδικό αναγνωριστικό φιάλης',\n text: `Η CORPINNAT ΠΙΣΤΟΠΟΙΕΙ ότι αυτή η φιάλη του {product_name} με αριθμό {product_number}, έχει παραχθεί από σταφύλια {arg2} που καλλιεργούνται αποκλειστικά στην καρδιά του Penedes, έχουν συλλεχθεί με το χέρι, έχουν πιεστεί και οινοποιηθεί εξ ολοκλήρου στο ίδιο οινοποιείο. Μετά από μακρά παλαίωση στο κελάρι, αυτό το {arg3} έχει εκχυλιστεί και φέρει την ετικέτα {deguelle_date}. Όλη αυτή η διαδικασία ελέγχεται ετησίως από εξειδικευμένη εξωτερική επιχείρηση.`,\n buttonBlockchain: 'προβολή στο blockchain',\n buttonViewed: 'Είδα, ευχαριστώ!',\n },\n {\n id: 'ga',\n title: 'Teastas Corp',\n subTitle: 'Aitheantas uathúil buidéal',\n text: `DEARBHAÍONN AN CHORPARÁID go bhfuil an buidéal seo {product_name} uimhir {product_number}, déanta as fíonchaora {arg2}, a fhástar go heisiach i gcroílár Penedes, bainte de láimh, brúite agus fíniúnacha go hiomlán sa winery céanna. Tar éis dul in aois sa cellar le fada, tá an {arg3} seo curtha faoi cheilt agus lipéadaithe mar {deguelle_date}. Déanann Fiontar seachtrach cáilithe iniúchadh bliantúil ar an bpróiseas seo go léir.`,\n buttonBlockchain: 'radharc ar blockchain',\n buttonViewed: 'Feictear, go raibh maith agat!',\n },\n {\n id: 'sl',\n title: 'Certifikat Corpinnat ',\n subTitle: 'Edinstvena identifikacijska oznaka steklenice',\n text: `CORPINNAT POTRJUJE, da je bila ta steklenica {product_name} številka {product_number}, izdelana iz grozdja {arg2}, ki je zraslo izključno v osrčju Penedesa, ročno obrano, stisnjeno in vinificirano v celoti v isti kleti. Po dolgem zorenju v kleti je bila ta {arg3} razpršena in označena z etiketo {deguelle_date}. Ves ta postopek vsako leto revidira usposobljeno zunanje podjetje.`,\n buttonBlockchain: 'pogled na blockchain',\n buttonViewed: 'Videno, hvala!',\n },\n {\n id: 'et',\n title: 'Corpinnat sertifikaat ',\n subTitle: 'Unikaalne pudelitunnus',\n text: `CORPINNAT KINNITAB, et see pudel {product_name} number {product_number} on valmistatud viinamarjadest {arg2}, mis on kasvatatud eranditult Penedes'i südames, käsitsi korjatud, pressitud ja veinivalmistatud täielikult samas veinitehases. Pärast pikka laagerdumist veinikeldris on see {arg3} disgorged ja märgistatud {deguelle_date}. Kogu seda protsessi auditeerib igal aastal kvalifitseeritud väline ettevõte.`,\n buttonBlockchain: 'vaade plokiahelale',\n buttonViewed: 'Nähtud, aitäh!',\n },\n {\n id: 'hu',\n title: 'Corpinnat tanúsítvány ',\n subTitle: 'Egyedi palack azonosító',\n text: `A CORPINNAT BIZONYÍTJA, hogy ez a palack {product_name} 2018-as {product_number} számú, kizárólag Penedes szívében termesztett {arg2} szőlőből készült, amelyet kézzel szüreteltek, préseltek és borkészítettek, teljes egészében ugyanabban a pincészetben. Hosszú pincében történő érlelés után ez a {arg3} bor degorzsálásra került, és a {deguelle_date}-as címkével van ellátva. Mindezt a folyamatot évente ellenőrzi egy minősített külső vállalkozás.\n`,\n buttonBlockchain: 'nézet a blokkláncon',\n buttonViewed: 'Láttam, köszönöm!',\n },\n {\n id: 'lv',\n title: 'Corpinnat sertifikāts ',\n subTitle: 'Unikāls pudeles ID',\n text: `CORPINNAT APLIECINA, ka šī {product_name} 2018. gada pudele ar numuru {product_number} ir izstrādāta no vīnogām {arg2}, kas audzētas tikai Penedesas centrā, novāktas ar rokām, presētas un vinificētas tikai tajā pašā vīna darītavā. Pēc ilgas nogatavināšanas pagrabā šis {arg3} vīns ir izņemts un marķēts ar {deguelle_date} etiķeti. Visu šo procesu katru gadu pārbauda kvalificēts ārējs uzņēmums.`,\n buttonBlockchain: 'Skatīt blokķēdē',\n buttonViewed: 'Redzēts, paldies!',\n },\n {\n id: 'lt',\n title: 'Corpinnat sertifikatas ',\n subTitle: 'Unikalus butelio ID',\n text: `CORPINNAT PATVIRTINA, kad šis {product_name} 2018 m. butelis, kurio numeris {product_number}, buvo pagamintas iš vynuogių {arg2}, užaugintų tik pačioje Penedeso širdyje, surinktų rankomis, išspaustų ir vinifikuotų tik toje pačioje vyno gamykloje. Po ilgo brandinimo rūsyje šis {arg3} buvo išpilstytas ir paženklintas {deguelle_date} etikete. Visą šį procesą kasmet tikrina kvalifikuota išorės įmonė.`,\n buttonBlockchain: 'vaizdas į blockchain',\n buttonViewed: 'Mačiau, ačiū',\n },\n {\n id: 'mt',\n title: 'Ċertifikat Corpinnat ',\n subTitle: 'Id flixkun uniku',\n text: `CORPINNAT JIĊĊERTIFIKA li dan il-flixkun ta’ {product_name} numru {product_number}, ġie elaborat minn għeneb {arg2}, imkabbar esklussivament fil-qalba tal-Penedes, maħsud bl-idejn, ippressat u vinifikat kollu kemm hu fl-istess inbid. Wara maturazzjoni twila fil-kantina, dan in-{arg3} ġie mneħħi u ttikkettat bħala {deguelle_date}. Dan il-proċess kollu jiġi vverifikat kull sena minn intrapriża esterna kwalifikata.`,\n buttonBlockchain: 'ħsieb fuq blockchain',\n buttonViewed: 'Ara, grazzi!',\n },\n {\n id: 'nl',\n title: 'Corpinnat Certificaat ',\n subTitle: 'Unieke fles-id',\n text: `CORPINNAT CERTIFICEERT dat deze fles {product_name} 2018 nummer {product_number}, is bereid uit druiven {arg2}, uitsluitend geteeld in het hart van Penedes, met de hand geoogst, geperst en gevinifieerd volledig in dezelfde wijnmakerij. Na een lange rijping in de kelder, is deze {arg3} gedegorgeerd en voorzien van het etiket {deguelle_date}. Dit hele proces wordt jaarlijks gecontroleerd door een gekwalificeerde externe onderneming.`,\n buttonBlockchain: 'visie op blockchain',\n buttonViewed: 'Gezien, dank je!',\n },\n {\n id: 'pl',\n title: 'Certyfikat Corpinnat ',\n subTitle: 'Unikalny identyfikator butelki',\n text: `CORPINNAT ZAŚWIADCZA, że ta butelka {product_name} 2018 o numerze {product_number} została opracowana z winogron {arg2}, uprawianych wyłącznie w sercu Penedes, ręcznie zbieranych, tłoczonych i winifikowanych w całości w tej samej winnicy. Po długim okresie leżakowania w piwnicy, ten {arg3} został wylany i oznaczony jako {deguelle_date}. Cały ten proces jest corocznie kontrolowany przez wykwalifikowaną firmę zewnętrzną.`,\n buttonBlockchain: 'Zobacz na blockchainie',\n buttonViewed: 'Widziane, dziękuję!',\n },\n {\n id: 'ro',\n title: 'Certificat Corpinnat ',\n subTitle: 'Identificare unică a sticlei',\n text: `CORPINNAT CERTIFICĂ că această sticlă {product_name} numărul {product_number}, a fost elaborată din struguri {arg2}, crescuți exclusiv în inima Penedes, recoltați manual, presați și vinificați în întregime în aceeași cramă. După o lungă îmbătrânire în pivniță, acest {arg3} a fost degorjat și etichetat {deguelle_date}. Tot acest proces este auditat anual de o întreprindere externă calificată.`,\n buttonBlockchain: 'Vizualizare pe blockchain',\n buttonViewed: 'Văzut, mulțumesc!',\n },\n ];\n\n // find the object filtered by the language selected\n const found = dataBank.find((data) => data.id === languageSelect?.shortName);\n\n if (!found) return;\n\n const placeholders: { [key: string]: string } = {\n product_name,\n product_number,\n arg2,\n arg3,\n deguelle_date,\n };\n // Replace placeholders with actual values\n const text = found.text.replace(/{(.*?)}/g, (_, key) => placeholders[key]);\n const _title = found.title;\n const _subTitle = found.subTitle;\n const _langId = found.id;\n const _viewOnBlockchain = found.buttonBlockchain;\n const _buttonThankYou = found.buttonViewed;\n\n return {\n _langId,\n _title,\n _subTitle,\n text,\n _viewOnBlockchain,\n _buttonThankYou,\n };\n};\n\nexport type TranslatedText = ReturnType;\n","import styled from \"styled-components\";\nimport { Text } from \"components/Text\";\nimport { breakpoints } from \"theme/Theme.breackoints\";\nimport { Link } from 'react-router-dom';\n\nexport const CatalogContaier = styled.div`\n width: 100%;\n max-width: calc(calc(1230px + calc(calc(100% - 1230px) / 2)) - calc(2rem + 4.5vw));\n margin: 0 0 0 auto;\n @media screen and (max-width: ${breakpoints.lg}px) {\n max-width: 100%;\n padding-left: calc(2rem + 4.5vw);\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n padding: 0;\n margin: 0 0 1.5rem;\n }\n\n`\nexport const CatalogTitle = styled.div`\n font-size: 32px;\n line-height: 32px;\n margin: 0 0 2.5rem;\n`\nexport const CatalogList = styled.div`\n display: grid;\n grid-template: 1fr / repeat(5, 1fr);\n gap: 2rem 1rem;\n max-width: 100%;\n overflow: auto;\n padding-bottom: 1.125rem;\n @media screen and (max-width: ${breakpoints.lg}px) {\n grid-template: 1fr / repeat(4, 1fr);\n }\n @media screen and (max-width: ${breakpoints.sm}px) {\n grid-template: 1fr / repeat(2, 1fr);\n }\n @media screen and (max-width: ${breakpoints.xs}px) {\n grid-template: 1fr / 1fr;\n padding: 0;\n overflow: hidden;\n }\n`\nexport const CatalogItem = styled.div`\n width: 100%;\n max-width: 100%;\n position: relative;\n flex: 1 0 auto;\n`\nexport const CatalogItemDate = styled(Text)`\n font-family: ${({ theme }) => theme.fonts.main};\n font-size: 14px;\n line-height: 14px;\n color: ${({ theme }) => theme.colors.wineGray};\n margin: 0 0 1.125rem;\n`\nexport const CatalogItemTitle = styled(Link)`\n font-size: 1.5rem;\n line-height: 2rem;\n color: ${({ theme }) => theme.colors.wineBlack};\n margin: 0 0 0.75rem;\n max-width: 78%;\n cursor: pointer;\n &:hover {\n color: ${({ theme }) => theme.colors.winePrimary};\n }\n`\nexport const CatalogItemImage = styled.img`\n max-width: 100%;\n margin: 0 0 1.5rem;\n min-height: 355px;\n width: 100%;\n object-fit: cover;\n @media screen and (max-width: ${breakpoints.xs}px) {\n min-height: 56.25vh;\n }\n`","import React from 'react';\nimport { Product } from 'types/product';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//STYLES\nimport {\n CatalogContaier,\n CatalogTitle,\n CatalogList,\n CatalogItem,\n CatalogItemDate,\n CatalogItemTitle,\n CatalogItemImage,\n} from './Catalog.styled';\n\ninterface CatalogProps {\n products: Product[];\n organizationName: string;\n}\n\nconst Catalog = ({ products, organizationName }: CatalogProps) => {\n return (\n \n Catálogo\n \n {products.map((product) => (\n \n \n {organizationName}\n \n {product.name}\n \n {/* Denominación de origen */}\n \n ))}\n \n \n );\n};\n\nexport default Catalog;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useMediaQuery } from '@react-hook/media-query';\nimport ReactGA from 'react-ga4';\nimport useGetQuery from 'hooks/useGetQuery';\n//ASSETS\nimport placeholderImage from 'assets/images/placeholder255x255.png';\n//PROPS TYPE\nimport { MetaHeadProps } from 'components/MetaHead/MetaHead';\nimport { OrganizationVars } from 'screens/Organization/Organization.props';\nimport { OrganizationData } from 'types/organization';\n//QUERIES\nimport { organizationQuery } from 'queries/organization';\n//STORE\nimport { AppState } from 'store';\nimport { openModal, setTranslations } from 'store/tramslateModal';\nimport { setOrganizationInfo, setOrganization } from 'store/organization';\nimport { setMobileNav } from 'store/mobilenav';\n//COMPONENTS\nimport AppLayoutWine from 'module/AppLayoutWine';\nimport Tags from 'screens/Wine/components/Tags';\nimport Seals from 'screens/Wine/components/Seals';\nimport Share from 'screens/Wine/components/Share';\nimport Pictures from 'screens/Wine/components/Pictures';\nimport Catalog from './components/Catalog';\nimport OrganizationSkeleton from 'screens/Organization/components/OrganizationSkeleton';\nimport RenderHtml from 'components/RenderHtml';\nimport ProofPointModal from 'components/ProofPointModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal/MediaEvicenceModal';\nimport EvidenceModal from 'components/EvidenceModal';\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport ReviewModal from 'components/ReviewModal';\n//STYLES\nimport { AppLayoutWineWrapper } from 'module/AppLayoutWine/AppLayoutWine.styled';\nimport {\n WineContent,\n WineContentBody,\n WineContentShare,\n WineContentAction,\n WineContentActionBtn,\n WineContentiLink,\n WineContentBodyImages,\n WineContentBodyContainer,\n WineContentBodyInformation,\n WineContentTitle,\n WineContentiSeparator,\n WineContentiParagraph,\n WineContentShareList,\n WineContentShareItem,\n WineContentLimkWeb,\n} from 'screens/Wine/Wine.styled';\nimport TranslateModal from 'components/TranslateModal/TranslateModal';\nimport Icon from 'components/Icon/Icon';\n\nconst SOCIALS: Record = {\n facebook: 'fb',\n twitter: 'tw',\n instagram: 'in',\n youtube: 'yb',\n linkedin: 'ln',\n};\n\nconst Winery = () => {\n const dispatch = useDispatch();\n const query = useGetQuery();\n const { wineryId } = useParams();\n\n const matches = useMediaQuery('only screen and (max-width: 920px)');\n const matchesMd = useMediaQuery('only screen and (max-width: 768px)');\n const matchesXs = useMediaQuery('only screen and (max-width: 575px)');\n\n const { translateSelect } = useSelector(\n (state: AppState) => state.translateModal\n );\n\n const [isPrivate, setIsPrivate] = useState(false);\n const [metaInformation, setMetaInformation] = useState({});\n\n const { data: resOrganization, loading, error, refetch } = useQuery<\n OrganizationData,\n OrganizationVars\n >(organizationQuery, {\n variables: {\n pk: wineryId,\n language:\n translateSelect && translateSelect.length > 0\n ? translateSelect.find((lang) => lang.idOrganization === wineryId)\n ?.short_name\n : '',\n },\n });\n\n useEffect(() => {\n if (resOrganization && resOrganization.organization.data === null) {\n setIsPrivate(true);\n }\n }, [resOrganization]);\n\n useEffect(() => {\n ReactGA.send({\n hitType: 'pageview',\n page: window.location.pathname,\n title: 'winery',\n });\n }, []);\n\n useEffect(() => {\n if (\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data\n ) {\n dispatch(setMobileNav('info'));\n setMetaInformation({\n title: resOrganization.organization.data.name,\n description: resOrganization.organization.data.description,\n image: resOrganization.organization.data.logo.url\n ? resOrganization.organization.data.logo.url\n : '',\n url: window.location.href,\n });\n }\n }, [resOrganization, dispatch]);\n\n useEffect(() => {\n if (\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data\n ) {\n dispatch(\n setOrganizationInfo({\n name: resOrganization.organization.data.name,\n logo: resOrganization.organization.data.logo.url,\n })\n );\n dispatch(setOrganization(resOrganization.organization.data));\n }\n }, [dispatch, resOrganization]);\n\n useEffect(() => {\n const selectLanguage = translateSelect.find(\n (lang) => lang.idOrganization === wineryId\n );\n\n if (\n !selectLanguage &&\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.translationStatus &&\n Object.keys(\n JSON.parse(resOrganization.organization.data.translationStatus)\n ).length > 1\n ) {\n dispatch(\n openModal({\n isOpen: true,\n translations: JSON.parse(\n resOrganization.organization.data.translationStatus\n ),\n isHiddenClose: true,\n })\n );\n } else if (\n selectLanguage &&\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.translationStatus &&\n Object.keys(\n JSON.parse(resOrganization.organization.data.translationStatus)\n ).length > 1\n ) {\n dispatch(\n setTranslations({\n translations: JSON.parse(\n resOrganization.organization.data.translationStatus\n ),\n })\n );\n }\n }, [translateSelect, wineryId, resOrganization, dispatch]);\n\n const handleRefetchQuery = useCallback(() => {\n refetch();\n }, [refetch]);\n\n return (\n }\n metas={metaInformation}\n errorType={\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.errors\n ? resOrganization.organization.errors.message\n : resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.error\n ? resOrganization.organization.error\n : undefined\n }\n logo={\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.logo &&\n resOrganization.organization.data.logo.url\n }\n type=\"wine\"\n id={wineryId}\n >\n \n \n \n {!matchesXs &&\n resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.socialChannels &&\n resOrganization.organization.data.socialChannels.length > 0 && (\n \n \n {resOrganization.organization.data.socialChannels.map(\n (social) => (\n \n {SOCIALS[social.type.toLowerCase()]}\n \n )\n )}\n \n \n )}\n\n {resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data && (\n \n {!matches && resOrganization.organization.data.headImage && (\n \n \n \n )}\n\n \n {query.get('wineId') && (\n \n \n Volver\n \n \n )}\n\n \n {resOrganization.organization.data.name}\n \n\n \n\n {resOrganization.organization &&\n resOrganization.organization.data && (\n
\n \n {' '}\n {resOrganization.organization.data.url\n .replace('https://', '')\n .replace('http://', '')\n .replace('www.', '')}\n \n
\n )}\n\n {resOrganization.organization.data.description && (\n \n \n \n )}\n\n {resOrganization.organization.data.proofPoints &&\n resOrganization.organization.data.proofPoints.length >\n 0 && (\n \n )}\n {resOrganization.organization.data.proofPoints &&\n resOrganization.organization.data.proofPoints.length >\n 0 && (\n \n )}\n {matches && resOrganization.organization.data.headImage && (\n \n \n \n )}\n\n \n
\n
\n )}\n
\n
\n\n \n {resOrganization &&\n resOrganization.organization &&\n resOrganization.organization.data &&\n resOrganization.organization.data.products.length > 0 && (\n \n )}\n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default Winery;\n","import gql from 'graphql-tag';\n\nexport const widgetsSpreadQuery = gql`\n query widget($id: String!) {\n widget(id: $id) {\n name\n pk\n description\n icon {\n value\n icon\n label\n }\n mediaEvidences {\n name\n url\n type\n }\n evidences {\n file\n evidenceName\n pk\n }\n conditions {\n value\n type\n typeDisplay\n unit\n }\n verifier {\n pk\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n organization {\n name\n pk\n logo(size: \"45x45\") {\n url\n }\n }\n product {\n name\n description\n internalId\n pk\n brand\n thumbnail(size: \"40x40\") {\n url\n }\n organization {\n name\n pk\n logo(size: \"45x45\") {\n url\n }\n }\n images {\n id\n url(size: \"266x266\")\n order\n }\n featuredProofPoints {\n name\n pk\n description\n createdAt\n mediaEvidences {\n name\n url\n type\n }\n shouldShowWidget\n icon {\n value\n icon\n label\n }\n evidences {\n file\n evidenceName\n pk\n }\n conditions {\n value\n type\n typeDisplay\n unit\n }\n verifier {\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n journey {\n name\n milestones {\n id\n name\n startDate\n endDate\n internalId\n description\n icon\n location {\n name\n }\n createdAt\n image(size: \"700x700\") {\n url\n }\n proofPoints {\n name\n pk\n shouldShowWidget\n description\n icon {\n value\n icon\n label\n }\n mediaEvidences {\n name\n url\n type\n }\n createdAt\n conditions {\n value\n type\n typeDisplay\n unit\n }\n evidences {\n file\n evidenceName\n pk\n }\n verifier {\n name\n description\n logo(size: \"250x250\") {\n url\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n","import styled from 'styled-components';\n\nexport const SpreadWidgetContainer = styled.div`\n background-color: rgba(255, 255, 255, 0.8);\n width: 100vw;\n height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n","import React, { useState, useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useQuery } from '@apollo/react-hooks';\nimport { useDispatch } from 'react-redux';\nimport ReactGA from 'react-ga4';\n//QUERIES\nimport { widgetsSpreadQuery } from 'queries/widgets';\n//STORE\nimport { setProduct } from 'store/product';\nimport { setOrganizationInfo } from 'store/organization';\nimport { openModal } from 'store/proofPointModal';\n//PROPS TYPE\nimport { WidgetSpreadVars } from './SpreadWidget.props';\nimport { WidgetSpreadData } from 'types/widgetsSpread';\n//COMPONENTS\nimport BlockchainDetailModal from 'components/BlockchainDetailModal';\nimport ProofPointDetailModal from 'components/ProofPointDetailModal';\nimport ProofPointModal from 'components/ProofPointModal';\nimport Loader from 'components/Loader';\nimport MediaEvicenceModal from 'components/MediaEvidenceModal';\nimport EvidenceModal from 'components/EvidenceModal';\n//SCREENS\nimport Error404 from 'screens/Error404';\n\n//STYLES\nimport { SpreadWidgetContainer } from './SpreadWidget.styled';\n\nconst SpreadWidget = () => {\n const { proofId } = useParams();\n\n const dispatch = useDispatch();\n\n const [isSendEvent, setIsSendEvent] = useState(true);\n\n const { data, loading, error } = useQuery(\n widgetsSpreadQuery,\n {\n variables: { id: proofId },\n }\n );\n\n useEffect(() => {\n if (data && data.widget) {\n if (data.widget.product) {\n dispatch(\n setOrganizationInfo({\n name: data.widget.product.organization.name,\n logo: data.widget.product.organization.logo.url,\n })\n );\n dispatch(setProduct(data.widget.product));\n }\n\n if (data.widget.organization) {\n dispatch(\n setOrganizationInfo({\n name: data.widget.organization.name,\n logo: data.widget.organization.logo.url,\n })\n );\n }\n\n dispatch(\n openModal({\n proof: data.widget,\n })\n );\n }\n }, [dispatch, data]);\n\n useEffect(() => {\n if (isSendEvent && data && data.widget) {\n setIsSendEvent(false);\n handleEvent(data.widget.pk);\n }\n }, [isSendEvent, data]);\n\n const handleEvent = async (id: string) => {\n await ReactGA.event({\n category: 'Page Click',\n action: 'Shared Widget Click',\n label: `proof_point/${id}`,\n });\n };\n\n if (error) {\n return ;\n }\n\n return (\n \n {loading ? (\n \n ) : (\n <>\n \n \n \n \n {data && data.widget && data.widget.organization && (\n \n )}\n {data && data.widget && data.widget.product && (\n \n )}\n \n )}\n \n );\n};\n\nexport default SpreadWidget;\n","import React from 'react';\nimport { Route, BrowserRouter as Router, Routes } from 'react-router-dom';\n\nimport get from 'lodash/get';\nimport AppContainer from 'module/App';\nimport ReactGA from 'react-ga4';\nimport Certificate from 'screens/Certificate';\nimport CertificateBottle from 'screens/Certificate/CertificateBottle';\nimport CheckIt from 'screens/CheckIt';\nimport Error404 from 'screens/Error404';\nimport Lot from 'screens/Lot';\nimport Organization from 'screens/Organization';\nimport Product from 'screens/Product';\nimport Wine from 'screens/Wine';\nimport WineBottle from 'screens/Wine/WineBottle';\nimport Winery from 'screens/Winery';\nimport SpreadWidget from 'widgets/SpreadWidget';\n\nconst TRACKING_ID = get(process.env, 'REACT_APP_GOOGLE_ANALYTICS_ID', '');\nReactGA.initialize(TRACKING_ID);\n\nfunction App() {\n return (\n \n \n \n } />\n } />\n } />\n } />\n }\n />\n } />\n } />\n } />\n } />\n }\n />\n } />\n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import en from './en.json';\nimport es from './es.json';\n\nexport default {\n en,\n es,\n};\n","import i18next from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\n\nimport resources from './languages';\n\ni18next\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: {\n 'en-US': ['en'],\n default: ['es'],\n },\n resources,\n ns: ['translations'],\n defaultNS: 'translations',\n returnObjects: true,\n debug: process.env.NODE_ENV === 'development',\n interpolation: {\n escapeValue: false, // not needed for react!!\n },\n react: {\n wait: true,\n },\n });\n\ni18next.languages = ['es', 'en'];\n\nexport default i18next;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { ApolloProvider } from '@apollo/react-hooks';\nimport apolloClient from 'lib/apolloClient';\n\nimport store from './store';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport './i18n/init';\nimport '@reach/dialog/styles.css';\nimport '@phuocng/react-pdf-viewer/cjs/react-pdf-viewer.css';\nimport './styles.css';\nimport 'moment/locale/es';\n//SWIPER\nimport SwiperCore, { Autoplay, Pagination } from 'swiper';\nimport 'swiper/swiper.min.css';\nimport 'swiper/modules/pagination/pagination.min.css';\n\nSwiperCore.use([Autoplay]);\nSwiperCore.use([Pagination]);\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/es.6239ecf0.png\";"],"sourceRoot":""}