{"version":3,"sources":["utils/index.ts","contexts/SnackbarContext.tsx","store/location.js","api/backend.js","store/shrimpHarvest.js","contexts/FlagContext.js","store/sessionTwa.js","libs/twaChecker.js","features/authentication/api/users.js","features/authentication/context/auth.js","store/utm.js","store/dashboard.js","components/reusable/BottomSheet.js","utils/date.ts","hooks/useQueryString.ts","assets/icons/icon-cross-black.svg","contexts/AlertContext.tsx","utils/operation.ts","utils/debounce.ts","assets/icons/new-dashboard/icon-calculator.png","assets/icons/new-dashboard/icon-shrimp.png","assets/icons/new-dashboard/icon-consultation.png","utils/cookies.js","utils/transform.ts","assets/icons/icon-cross-circle-white.svg","components/reusable/PopupAlert.tsx","libs/analytics.js","assets/icons/new-dashboard/icon-shop.png","assets/icons/new-dashboard/icon-play.png","hooks/useWindowDimensions.js","assets/logo-efarm.webp","assets/icons/icon-check-circle.svg","components/reusable/StickyInternalMode.tsx","libs/survicate.js","libs/efiauth.js","store/auth.js","pages/LoadingScreen.js","assets/logo-text.png","libs/queryClient.js","assets/img/dashboard/greeting-internalmode.svg","components/reusable/DownloadPrompt.js","components/reusable/snackbar/styles.tsx","components/reusable/snackbar/Snackbar.tsx","features/clevertap-popup/components/PopupModal.tsx","features/clevertap-popup/constant/index.ts","features/clevertap-popup/helpers/getPopupObject.ts","features/clevertap-popup/helpers/actions.ts","features/clevertap-popup/context/ClevertapContext.tsx","components/App.js","serviceWorkerRegistration.js","reportWebVitals.js","libs/errorMonitoring.js","index.js","utils/userAgent.js","libs/helpers.js","store/skeleton.ts","assets/img/shrimp-harvest/benefit-1.svg","assets/img/shrimp-harvest/benefit-2.svg","assets/img/shrimp-harvest/benefit-3.svg","assets/img/dashboard/consultation/mamang.webp","assets/img/dashboard/consultation/sapto.webp","assets/img/dashboard/consultation/syarifa.webp","assets/img/dashboard/consultation/chat-via-wa.svg","assets/img/dashboard/consultation/free-consultation.svg","assets/img/dashboard/consultation/with-expert.svg","config/index.js","libs/env.js","store/acquisition.js","libs/firebase.js","libs/flags.js","features/authentication/api/skeleton.js","store/leads.js","libs/notification.js","features/authentication/tracking/index.js","assets/icons/new-dashboard/icon-calendar.png","config/features.js","components/reusable/Typography/index.tsx","features/cultivation-records/store/reportExternal.ts"],"names":["defaultValuesSnackbarContext","message","isDisplayed","isHideConfirmButton","onDisplay","onClose","onConfirm","confirmStateClicked","SnackbarContext","createContext","SnackbarProvider","children","useState","setMessage","setIsDisplayed","setHideConfirmButton","windowTimeout","setWindowTimeout","setConfirmStateClicked","handleClose","useCallback","clearTimeout","handleDisplay","window","setTimeout","Provider","value","prevState","LOCATION_STATE_STORAGE_KEY","getLocationState","state","JSON","parse","localStorage","getItem","defaultAddress","province_name","city_name","district_name","subdistrict_name","isRequiredAddressDetail","name","setLocationState","setItem","stringify","deleteLocationState","removeItem","axios","instanceWithToken","request","requester","a","res","data","response","status","efiauth","fetchLeadProfile","get","process","fetchSummary","fetchAllBlock","params","fetchAllPonds","blockName","fetchPonds","pondName","fetchCycle","cycleId","postDevices","lead_id","device_token","post","patchSwitchInternalMode","patch","SHRIMP_HARVEST_FORM_STORAGE_KEY","storeStateBenefitShrimp","getStateBenefitShrimp","deleteStateBenefitShrimp","storeFormShrimpState","getFormShrimpState","deleteFormShrimpState","persistHistoryState","payload","getPersistedHistory","deletePersistedHistory","persistHistoryDetailState","deletePersistedHistoryDetail","FlagsContext","FlagsProvider","defaults","flags","setFlags","useEffect","remoteConfig","defaultConfig","handleRemoteConfig","fetchFlags","newFlags","currentFlags","KEY_IS_TWA","isTrustedWebActivity","sessionStorage","referrer","document","trim","length","referrerUrl","URL","protocol","hostname","instance","api","instanceToken","instanceCustomHeaders","baseUrl","signin","tempToken","headers","Authorization","completeSignup","editProfile","put","signup","withCredentials","AuthContext","createContainer","initialState","isInitialized","setIsInitialized","error","setError","tempIsLogged","setTempIsLogged","user","setUser","greetingPopup","setGreetingPopup","useCookies","isNotifBlocked","isSubscribeCT","removeCookie","isFetchLeadLoading","setIsFetchLeadLoading","isRefreshTokenEnabled","defaultValuesFlagsContext","isLoggedIn","setNameFromStorage","persistedName","loadPersistedName","setLeadsFromStorage","leadState","getLeadsState","query","getQueryParams","tokenExp","refreshExp","removePersistedTokens","tokens","loadPersistedTokens","access_token","refresh_token","fetchUserProfile","newUser","login","username","password","getTempToken","app_token","signinResponse","accessToken","token","accessTokenExpiryTime","token_expired","refreshTokenExpiryTime","refresh_expired","isPushNotificationEnabled","getFirebaseToken","storePersistedName","trackUserLogin","deleteDummyState","deleteAcquisitionState","loginByPhone","phoneNumber","acquireUser","trackCompleteSignUp","editUser","trackUpdateData","leads","id","clevertapEventUpdateProfile","position","province","locations","city","district","subDistrict","signUp","trackSignUp","phone","setDummyState","logout","isFarmer","is_farmer","isFarmerRegistered","isGuestMode","useMemo","location","leadId","leadName","leadPhone","setLeadsState","clevertapEventUserLogin","identity","uuid","email","verified","is_verified","cultivationType","farm","address","trackAlreadyLoggedIn","isUserInternal","fbd","isInternalMode","is_internal_mode","setInternalModeUser","UTM_CAMPAIGN_KEY","UTM_ROUTE_KEY","storeUtmCampaign","content","getUtmCampaign","removeUtmCampaign","storeUtmRoute","getUtmRoute","removeUtmRoute","DASHBOARD_UVP_CONSULTATION_KEY","DASHBOARD_COACHMARK_KEY","storeCoachmarkDashboardFlag","getCoachmarkDashboardFlag","storeDashboardUVPFlag","getDashboardUVPFlag","BottomSheet","isOpen","btnFunc","sheetTitle","sheetDesc","btnText","layoutBody","layoutButton","isPrimaryButtonBlock","img","textBodyAlign","toggle","disableClose","className","btnId","style","bottom","width","margin","transform","left","right","onClosed","src","iconCross","onClick","backgroundColor","display","color","block","displayName","defaultProps","dayjs","extend","relativeTime","timezone","utc","locale","DATE_TIME_FORMAT","now","format","fromNow","date","transformToDefaultFormat","transformToISOFormat","toISOString","transformToBackEndFormat","convertStartDate","convertEndDate","useQueryString","search","useLocation","URLSearchParams","defaultValueAlertContext","showAlert","handleShowAlert","AlertContext","AlertProvider","props","setShowAlert","typeAlert","setTypeAlert","showIcon","setShowIcon","msg","type","icon","handleCloseAlert","variant","isEmpty","obj","Object","keys","constructor","insertArrayAt","array","index","slice","escapeRegExp","text","replace","debounce","callback","wait","timeout","args","apply","notifCookiesExpires","days","generateDayFromNowTo","formatNumber","amount","validAmount","defaultValue","parseInt","isNaN","toLocaleString","Alert","styled","div","Wrapper","PopupAlert","handleClosePopupAlert","CircleCrossIcon","CircleCheckIcon","alt","loading","Typography","memo","initializeGtm","tagManagerArgs","gtmId","ConfigEnv","analytics","TagManager","initialize","initializeFbPixel","f","b","e","n","t","s","fbq","callMethod","arguments","queue","push","_fbq","loaded","version","createElement","async","getElementsByTagName","parentNode","insertBefore","fbPixelId","initializeAppsFlyer","i","o","p","pba","webAppId","appsFlyerId","AppsFlyerSdkObject","AF","q","Date","concat","Array","prototype","call","plugins","split","sort","join","initializeCleverTap","clevertap","init","projectId","region","privacy","useIP","spa","traffic_route","trackEvent","eventName","eventProperties","dataLayer","event","eventProps","eventType","eventValue","trackAFUserId","userId","trackerLandingPage","trackButtonMasuk","trackTopButtonDaftar","trackFeature","feature","landing_page_features","trackBottomButtonDaftar","trackTestimonialButtonDaftar","trackConsultationClicked","trackTestimoni","trackConsultationCardClicked","trackDeeplink","campaign","utm_campaign","trackerDashboard","trackConsultationChatStarted","trackBannerClick","bannerId","banner_id","trackCloseSheetNotif","trackTabChanges","pathName","tabName","tab_name","trackLogout","trackHelp","page","trackMarketplaceCardClicked","trackWAConsultationClicked","consultant_phone","trackerLaporanHarian","trackBack","trackerLaporanSiklus","trackGrowth","growth","trackFeedig","feedig","trackerQuestionnaire","trackIsFarmers","trackIsNotFarmers","trackInterest","trackReferral","trackerFeatureStopperSheets","trackIsFarmerToggle","trackIsNotFarmerToggle","trackBackAcquisitionForm","trackIsiDataDiri","trackButtonUpdateData","trackUtm","utmParams","trackSelectBlock","trackSelectPond","trackDetailKolam","trackLaporanSiklus","trackPengaturan","trackExpandRecommendation","trackNotificationReceived","trackNotificationClicked","trackNotifHomepage","trackNotifPengaturan","trackFabShrimpForm","trackNextShrimpForm","trackGoToHarvestHistory","trackChangeNumberShrimpForm","trackChangeLocationShrimpForm","trackSubmitShrimpFormData","shrimp_form_data","trackSlideBenefitPanenUdang","trackTertarikPanenUdang","trackCloseBenefitPanenUdang","trackBannerPanenUdang","trackShrimpHarvest","category","chosen_panen_udang_category","trackChooseHistory","transaction_id","closeHistory","trackSharePanenUdang","trackSharePanenUdangSocialMedia","social_media","trackShrimpHarvestCardClicked","trackPanenUdangNonVerifiedFarmer","trackPanenUdangNonVerifiedFarmerClicked","feature_name","trackPanenUdangNonVerifiedUpdateProfile","trackBackFromTokoBudidaya","trackSearchInputHomepage","keyword","trackChosenProductPakan","product_id","trackChosenProductNonPakan","trackChosenProductCategory","category_name","trackBackFromPCP","trackSearchInputPCP","trackChosenProduct","trackOrderPCP","trackOrderPDP","trackBackFromOrderDetail","trackChosenPayment","duration_name","trackFinishedPayment","trackDetailProduct","trackCartPage","trackClickPayment","trackPaymentPage","trackProductRecommendation","product_recommendation_id","entry_point","trackDirectToTokbud","trackProductPersonalize","model_name","trackProductGeneral","clevertapEventPush","onUserLogin","Site","Identity","Email","Name","Phone","phoneInvertNormalize","Verified","Position","Province","City","District","profile","getWindowDimensions","innerWidth","height","innerHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","addEventListener","removeEventListener","Sticky","StickyInternalMode","step","setStep","switchStep","disableTargeting","_sva","getSurveyId","surveyName","displaySurvey","surveyId","options","forceDisplay","displayMethod","survicate","setVisitorTraits","showSurvey","questionAnswered","questionId","answer","closeSurvey","getStateSurvey","getState","visit","visitor","authsUrl","refreshToken","InvalidTokenError","Error","AuthServiceError","config","getAccessToken","setAccessToken","newAccessToken","getRefreshToken","setRefreshToken","newRefreshToken","setAccessTokenExpiryTime","newAccessTokenExpiryTime","setRefreshTokenExpiryTime","newRefreshTokenExpiryTime","checkExpired","overheadSecond","expiryTime","getTime","setTokens","storePersistedTokens","setTokenExpiryTime","storePersistedExpiryTokenTime","TOKEN_STATIC_CUSTOMER","loadPersistedExpiryTokenTime","createAxios","opts","create","packageJson","onBeforeRequest","refreshIfExpired","setHeaders","onRequestError","err","Promise","reject","interceptors","use","createAxiosCustomer","fetchApiRequest","endpoint","mem","doLogout","maxAge","removePersistedExpiryTokenTime","removePersistedName","removeToolsbudToken","deleteLeadsState","TOKENS_STORAGE_KEY","EXPIRY_TIME_TOKENS_STORAGE_KEY","NAME_STORAGE_KEY","undefined","expiryTimes","expiryTimesJson","tokensJson","console","LoadingScreen","Container","queryClient","QueryClient","defaultOptions","queries","retry","refetchOnWindowFocus","cacheTime","keepPreviousData","DownloadPrompt","isInProhibitedPage","downloadBar","prohibitedRoutes","some","route","useRouteMatch","isExact","viewportWidth","isDownloadPromptVisible","logoeFarm","classNames","href","playStoreLink","target","rel","Button","Dismiss","Snackbar","hideCloseButton","useContext","snackbarRef","useRef","container","getElementById","createPortal","CSSTransition","in","nodeRef","unmountOnExit","ref","weight","PopupBox","lazy","PopupBanner","PopupInterstitial","PopupInterstitialFullscreen","PopupInterstitialImage","PopupInterstitialImageFullscreen","PopupInterstitialImageOnly","PopupBannerImage","ClevertapPopup","templateType","notificationObject","interstitialType","bannerType","validTemplateType","regexPattern","defaultPopupStyle","textColor","buttonColor","buttonTextColor","buttonText","getImageSource","html","match","getPopupStyle","interstitialBtnPattern","interstitialStylePattern","bannerBtnPattern","bannerStylePattern","filter","x","includes","forEach","properties","getTemplateType","kv","template","toLowerCase","normalizeKV","url","onActionClicked","popupObject","msgId","pivotId","onNewTab","open","onActionVisitUrl","Boolean","renderNotificationClicked","ClevertapContext","ClevertapProvider","customPopupFeature","ClevertapPopupProvider","isActive","clevertapExt","notificationObj","setNotificationObj","popupOpen","setPopupOpen","notificationCallback","msgContent","title","description","notifObject","imgSrc","renderNotificationViewed","openState","toggleClose","NewDashboard","Otp","LocationPicker","Maps","SuccessPage","Questionnaire","LoginUsername","LoginPhone","RegisterPhone","Onboarding","MyPondsRouter","CultivationRecordsRouter","CultivationRecordsExternalRouter","MarketplaceRouterGuestMode","CultivationGPTRouter","MaintenancePageProvider","LoginGate","history","useHistory","utmRoute","toolsbudToken","getToolsbudToken","useFlags","isMyPondsEnabled","isCultivationRecordsEnabled","isMarketplaceUsingGuestMode","isInternalModeEnabled","auth","useContainer","isDummy","getDummyState","is_trial","acquisitionName","pathname","isMarketplace","isCultivation","dataTestId","imgGreetingInternal","App","getAnalytics","firebase","client","exact","path","render","quessionaireUrl","isLocalhost","registerValidSW","swUrl","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","controller","waiting","postMessage","alert","reload","onUpdate","onSuccess","catch","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","dsn","integrations","BrowserTracing","environment","tracesSampleRate","appVersion","ReactDOM","currentVersion","isEnabled","isVerboseMode","loadingComponent","StrictMode","fallback","origin","fetch","contentType","indexOf","ready","unregister","log","checkValidServiceWorker","serviceWorkerRegistration","userAgent","userAgentData","platform","test","preventGoBack","pushState","searchParams","fromEntries","entries","redirectToWhatsapp","number","customNumber","encodeURIComponent","whatsapp","handleComplaint","leads_name","leads_id","backUrl","urlFormComplaint","cycleToInterval","cycle","start","tanggal","end","final_harvest","Number","React","flaggedWaterParams","parameters","flag","map","el","label","validationRegexes","inputValue","parsePhoneNumber","charAt","isValid","RegExp","closeTooltip","tooltipClass","getElementsByClassName","numberize","isArray","item","result","key","groupCycleIdentity","selectedCycle","selectedPond","desc","komoditas","jenis_budidaya","jumlah_benih","asal_benih","ukuran_benih","berat_benih","area","toFixed","starting_aqualisan_dose","ObjectString","byString","k","generateRangeDate","start_date","end_date","formatedStartDate","formatedEndDate","year","formatRupiah","currencyIndonesian","convert","toString","reverse","formatCurrency","Intl","NumberFormat","phoneReplaceNormalize","String","startsWith","getUrlFeatureByUtmCampaign","utmCampaign","redirectUrl","belajar_budidaya","konsultasi_budidaya","rencana_panen","kalkulator_budidaya","toko_budidaya","DEEP_LINK_CREATE_FARM","goToFeature","dt","setDate","getDate","isShowedMarketplaceIconByProvince","marketplace","excludeProvince","debounceTimer","time","debouncer","secureStorage","SecureLS","encodingType","set","remove","joinNumber","water","chartValues","limits","range","yKey","feedLog","dataKey","dashboardKey","chart","pie","markerColors","form","checkbox","source","radio","roles","role","seedCount","feedPrice","harvestSize","joinNumberUrl","harvestShrimpBenefit","image","imgBenefit","imgBenefit2","imgBenefit3","harvestShrimpBanner","benefits","sellShrimp","harvestType","questions","questionnaire","interest","excludeCategory","dashboard","consultationValues","consultationFreeConsultation","consultationWithExpert","consultationChatViaApp","consultationTesti","sapto","testi","syarifa","mamang","consultationMessage","tawkTo","propertyId","widgetId","apiKey","authDomain","storageBucket","messagingSenderId","appId","measurementId","ACQUSISITION_STATE_STORAGE_KEY","ACQUSISITION_DUMMY_STORAGE_KEY","getAcquisitionState","setAcquisitionState","messaging","firebaseConfig","Firebase","initializeApp","isPushNotificationSupported","getMessaging","getToken","vapidKey","currentToken","onMessageListener","resolve","onMessage","isWaterParameterEnabled","isRecommendationEnabled","isCycleIdentityEnabled","isSREnabled","isTotalFeedEnabled","isFCREnabled","isGrowthEnabled","isFeedLogsEnabled","isDiseaseEnabled","isHarvestEnabled","isSaprodiEnabled","isAmoniaAndNitriteEnabled","isLandingPageEnabled","isAcquisitionFormEnabled","isUsingNewDashboardVersion2","isVideoCanLike","isVideoCanComment","isSellShrimpEnabled","isCultivationCalculatorEnabled","isMarketplaceEnabled","isSurveyCalculatorEnabled","isSurvicateCanClose","isDownloadPromptEnabled","isHarvestShrimpEnabledV2","isCultivationEventEnabled","isCultivationEventTutorialVideoEnabled","isCultivationHomePageEnabled","isProductRecommendationEnabled","isRelatedEventEnabled","isShipmentCostAndAddressEnabled","isOtpByWAEnabled","isListPromoEnabled","isNewConsultationEnabled","isUsingNewHistoryOrder","isMaintenanceEnabled","isReportPerCycleEnabled","isConsultationRegisterPremiumEnabled","isNotificationEnabled","isNonVerifiedFarmerInterceptorEnabled","isReportDetailsEnabled","isProductBestSellingEFarmEnabled","is3plInfoEnable","isABTestingProductEnabled","isJoinMentoringMemberPageEnabled","isProductBundlingEnabled","tokbudCsNumber","expiryDurationPayment","isPaymentGatewayEnabled","isConfirmOrderCompleteEnabled","isComplaintFormEnabled","isFeedbackCustomerEnabled","isGetWithLeadIdFarmsCultivation","isComplaintRequestTokenEnabled","getRemoteConfig","fetchAndActivate","remoteFlags","getAll","keyWithObjectValues","keyWithStringValues","_value","asString","setHeaderCultivation","baseURL","apiCultivation","instanceTokenOpts","instanceWithTokenCustomer","instanceWithoutToken","method","assign","requestWithData","LEADS_STATE_STORAGE_KEY","Notification","permission","leadsId","leadsName","lead_name","lead_phone","trackOtpRequested","media","trackOtpValid","trackOtpResend","trackUserLoginPhone","trackerSignUpJourney","trackLoginWithUsername","trackLoginWithPhone","trackUseReferral","trackAttemptOTP","try","LearnCultivationCard","EventCultivationCard","SellShrimpCard","ConsultationCard","featureCard","iconShrimp","oldComponent","iconShop","iconConsultation","iconPlay","iconCalculator","iconCalendar","EFI_TOOLSBUD_TOKEN","setToolsbudToken"],"mappings":"47JAAA,oR,+HCiBaA,EAA+B,CAC1CC,QAAS,GACTC,aAAa,EACbC,qBAAqB,EACrBC,UAAW,aACXC,QAAS,aACTC,UAAW,aACXC,oBAAqB,GAGVC,EAAkBC,wBAC7BT,GAGWU,EAA8C,SAAC,GAAkB,IAAhBC,EAAe,EAAfA,SAC5D,EAA8BC,mBAAS,IAAvC,mBAAOX,EAAP,KAAgBY,EAAhB,KACA,EAAsCD,oBAAS,GAA/C,mBAAOV,EAAP,KAAoBY,EAApB,KACA,EAAoDF,oBAAS,GAA7D,mBAAOT,EAAP,KAA4BY,EAA5B,KACA,EAA0CH,mBAAS,GAAnD,mBAAOI,EAAP,KAAsBC,EAAtB,KACA,EAAsDL,mBAAS,GAA/D,mBAAOL,EAAP,KAA4BW,EAA5B,KAEMC,EAAcC,uBAAY,WAC9BN,GAAe,GACfC,GAAqB,GAErBM,aAAaL,KACZ,CAACA,IAEEM,EAAgBF,uBACpB,SAACnB,GAAiD,IAAhCE,IAA+B,yDAC/CU,EAAWZ,GACXa,GAAe,GACfC,EAAqBZ,GAEjBA,GACFc,EACEM,OAAOC,YAAW,WAChBL,MACC,QAIT,CAACA,IAQH,OACE,cAACX,EAAgBiB,SAAjB,CACEC,MAAO,CACLnB,sBACAJ,sBACAD,cACAD,UACAI,QAASc,EACTf,UAAWkB,EACXhB,UAdN,WACEa,IACAD,GAAuB,SAACS,GAAD,OAAeA,EAAY,OAIlD,SAWGhB,M,iCC/EP,0GAAMiB,EAA6B,iBAEtBC,EAAmB,WAC9B,IAAIC,EACFC,KAAKC,MAAMC,aAAaC,QAAQN,KAAgC,GAElE,GAAc,KAAVE,EAAc,CAChB,IAAMK,EAAc,iBAAML,QAAN,IAAMA,OAAN,EAAMA,EAAOM,cAAb,oBAA+BN,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAOO,UAAtC,oBAAoDP,QAApD,IAAoDA,OAApD,EAAoDA,EAAOQ,cAA3D,oBAA6ER,QAA7E,IAA6EA,OAA7E,EAA6EA,EAAOS,kBACxGT,EAAMU,yBACC,OAALV,QAAK,IAALA,OAAA,EAAAA,EAAOW,QAASN,GAAkC,MAAX,OAALL,QAAK,IAALA,OAAA,EAAAA,EAAOW,MAG7C,OAAOX,GAGIY,EAAmB,SAACZ,GAC/BG,aAAaU,QAAQf,EAA4BG,KAAKa,UAAUd,KASrDe,EAAsB,WACjCZ,aAAaa,WAAWlB,K,2VCvBpBmB,E,MAAQC,EAERC,EAAO,uCAAG,WAAOC,GAAP,eAAAC,EAAA,+EAEMD,IAFN,cAENE,EAFM,yBAGLA,EAAIC,KAAKA,MAHJ,sCAKR,KAAIC,WACN,KAAIrD,QAAJ,qBAA4B,KAAIqD,SAASC,QACb,MAAxB,KAAID,SAASC,QACfC,OARQ,8DAAH,sDAeAC,EAAgB,uCAAG,sBAAAN,EAAA,+EACvBF,GAAQ,kBAAMF,EAAMW,IAAN,UAAaC,oCAAb,eADS,2CAAH,qDAIhBC,EAAY,uCAAG,sBAAAT,EAAA,+EACnBF,GAAQ,kBAAMF,EAAM,GAAD,OAAIY,oCAAJ,iBADA,2CAAH,qDAUZE,EAAa,uCAAG,WAAOC,GAAP,SAAAX,EAAA,+EACpBF,GAAQ,kBACbF,EAAM,GAAD,OAAIY,oCAAJ,kCACCG,GAAU,CAAEA,gBAHO,2CAAH,sDAQbC,EAAa,uCAAG,WAAOC,GAAP,SAAAb,EAAA,+EACpBF,GAAQ,kBACbF,EAAM,GAAD,OAAIY,oCAAJ,0BAAuDK,QAFnC,2CAAH,sDAMbC,EAAU,uCAAG,WAAOC,GAAP,SAAAf,EAAA,+EACjBF,GAAQ,kBACbF,EAAM,GAAD,OAAIY,oCAAJ,yBAAsDO,QAFrC,2CAAH,sDAMVC,EAAU,uCAAG,WAAOC,GAAP,SAAAjB,EAAA,+EACjBF,GAAQ,kBACbF,EAAM,GAAD,OAAIY,oCAAJ,mBAAgDS,QAF/B,2CAAH,sDAMVC,EAAW,uCAAG,WAAOC,EAASC,GAAhB,SAAApB,EAAA,+EAClBF,GAAQ,kBACbF,EAAMyB,KAAN,UAAcb,oCAAd,kBAAiE,CAC/DW,UACAC,qBAJqB,2CAAH,wDASXE,EAAuB,uCAAG,sBAAAtB,EAAA,+EAC9BF,GAAQ,kBACbF,EAAM2B,MAAN,UAAef,oCAAf,2BAFmC,2CAAH,sD,iCCrEpC,0XAAMgB,EAAkC,uBAE3BC,EAA0B,SAAC9C,GACtCG,aAAaU,QAAQ,qCAAsCb,IAGhD+C,EAAwB,WAEnC,OADY5C,aAAaC,QAAQ,uCAOtB4C,EAA2B,WACtC7C,aAAaa,WAAW,uCAGbiC,EAAuB,SAACjD,GACnCG,aAAaU,QAAQgC,EAAiC5C,KAAKa,UAAUd,KAG1DkD,EAAqB,WAGhC,OADEjD,KAAKC,MAAMC,aAAaC,QAAQyC,KAAqC,IAI5DM,EAAwB,WACnChD,aAAaa,WAAW6B,IAGbO,EAAsB,SAAC7B,GAClC,IAAI8B,EAAUpD,KAAKa,UAAUS,GAC7BpB,aAAaU,QAAQ,gCAAiCwC,IAG3CC,EAAsB,WAGjC,OADErD,KAAKC,MAAMC,aAAaC,QAAQ,mCAAqC,IAI5DmD,EAAyB,WACpCpD,aAAaa,WAAW,kCAGbwC,EAA4B,SAACjC,GACxC,IAAI8B,EAAUpD,KAAKa,UAAUS,GAC7BpB,aAAaU,QAAQ,uCAAwCwC,IAGlDI,EAA+B,WAC1CtD,aAAaa,WAAW,0C,mIClDb0C,EAAe/E,0BAiCbgF,IA7BO,SAAC,GAA4B,IAA1BC,EAAyB,EAAzBA,SAAU/E,EAAe,EAAfA,SACjC,EAA0BC,mBAAS8E,GAAnC,mBAAOC,EAAP,KAAcC,EAAd,KAGAC,qBAAU,WACRC,cAAeC,cAAgBL,IAC9B,CAACA,IASJ,IAAMM,EAAqB5E,sBAAW,sBAAC,4BAAA+B,EAAA,sEACd8C,cADc,OAC/BC,EAD+B,OAErCN,GAAS,SAACO,GAAD,mBAAC,eAAuBA,GAAiBD,MAFb,2CAGpC,CAACJ,MAMJ,OAJAD,qBAAU,WACRG,MACC,CAACA,IAGF,cAACR,EAAa/D,SAAd,CAAuBC,MAAOiE,EAA9B,SAAsChF,M,mEChC1C,IAAMyF,EAAa,qBCSNC,EAAuB,WAGlC,GAA6B,SDTtBC,eAAepE,QAAQkE,GCU5B,OAAO,EAGT,IAAMG,EAAWC,SAASD,SAASE,OACnC,GAAwB,IAApBF,EAASG,OACX,OAAO,EAGT,IDf6BhF,ECevBiF,EAAc,IAAIC,IAAIL,GAE5B,MAtBmB,iBAuBjBI,EAAYE,UAtBIlD,4BAuBhBgD,EAAYG,WDnBepF,ECqBZ,ODpBV4E,eAAe3D,QAAQyD,EAAY1E,ICqBjC,K,6IC1BLqF,EAAWC,IACX/D,EAAU+D,IACVC,EAAgBD,IAChBE,EAAwBF,IACxBG,EAAUxD,oCAEHyD,EAAS,SAACC,GACrB,IAAMC,EAAU,CACdC,cAAc,UAAD,OAAYF,IAE3B,OAAOpE,GAAQ,kBAAMiE,EAAsB,OAAQ,gBAAiBI,OAGzDE,EAAiB,SAACrC,GAC7B,OAAOlC,GAAQ,kBACbgE,EAAczC,KAAd,UAAsB2C,EAAtB,0BAAuDhC,OAI9CsC,EAAc,SAACtC,GAC1B,OAAOlC,GAAQ,kBAAMgE,EAAcS,IAAd,UAAqBP,EAArB,iBAA6ChC,OAGvDwC,EAAS,SAACxC,GACrB,OAAOlC,GAAQ,kBACb8D,EAASvC,KAAK,gBAAiBW,EAAS,CAAEyC,iBAAiB,Q,2FCiTzDC,EAAcC,aAvSJ,WAA0B,IAAD,EAAxBC,EAAwB,uDAAT,KAC9B,EAA0CnH,oBAAS,GAAnD,mBAAOoH,EAAP,KAAsBC,EAAtB,KACA,EAA0BrH,mBAAS,MAAnC,mBAAOsH,EAAP,KAAcC,EAAd,KACA,EAAwCvH,oBAAS,GAAjD,mBAAOwH,EAAP,KAAqBC,EAArB,KACA,EAAwBzH,mBAASmH,GAAjC,mBAAOO,EAAP,KAAaC,EAAb,KACA,EAA0C3H,oBAAS,GAAnD,mBAAO4H,EAAP,KAAsBC,EAAtB,KAEA,EAA2BC,YAAW,CAACC,IAAgBC,MAAvD,mBAAWC,EAAX,KAEA,EAAoDjI,oBAAS,GAA7D,mBAAOkI,EAAP,KAA2BC,EAA3B,KAEQC,EAA0BC,IAA1BD,sBAEFE,GAAa1F,KAAsB4E,EAEnCe,GAAqB,WACzB,IAAMC,EAAgBC,cAClBD,GACFb,EAAQ,2BACHD,GADE,IAEL7F,KAAM2G,MAKNE,GAAsB,WAC1B,IAAMC,EAAYC,cACdD,GACFhB,EAAQ,2BACHD,GACAiB,KAKT1D,qBAAU,WACR,sBAAC,gCAAA1C,EAAA,yDACOsG,EAAQC,cADf,UAGY,OAALD,QAAK,IAALA,KAAOE,UAAP,OAAmBF,QAAnB,IAAmBA,KAAOG,cAC5BpG,IAA2BiG,EAAME,SAAUF,EAAMG,YACjDvB,GAAgB,KAEdW,EAPP,gBAQKa,cARL,0BAUWC,EAASC,cAVpB,uBAYa,IAAIvG,IAA0B,iBAZ3C,QAeKA,IAAuBsG,EAAOE,cAC9BxG,IAAwBsG,EAAOG,eAhBpC,YAkBOf,GAlBP,kCAmB2BgB,KAnB3B,QAmBWC,EAnBX,OAoBK5B,EAAQ4B,GACRlC,GAAiB,GArBtB,0DAwBO,gBAAezE,KAGjB2E,EAAS,EAAD,IA3Bb,yBA8BGgB,KACAG,KA/BH,4EAAD,KAkCC,CAACJ,KAEJ,IAAMkB,GAAK,uCAAG,WAAOC,EAAUC,GAAjB,mCAAAnH,EAAA,4DAKWQ,oCALX,kBAOiBZ,IAAMyB,KAAN,UAFNb,oCAEM,cAA0C,CACnE0G,WACAC,aATQ,cAOJC,EAPI,OAWJlD,EAAYkD,EAAalH,KAAKA,KAAKmH,UAX/B,SAYmBpD,EAAOC,GAZ1B,OAYJoD,EAZI,OAaVC,EAAcD,EAAeE,MAC7BC,EAAwBH,EAAeI,cACvCC,EAAyBL,EAAeM,gBAf9B,wDAiBV,sCAAI,KAAKzH,gBAAT,iBAAI,EAAeD,YAAnB,OAAI,EAAqBpD,UACvB,KAAIA,QAAJ,gDAAiB,KAAKqD,gBAAtB,iBAAiB,EAAeD,YAAhC,aAAiB,EAAqBpD,QAAtC,aAAkD,KAAIA,QAAtD,MAlBQ,oBAsBZuD,IAAkBkH,EAAa,YAC/BlH,IAA2BoH,EAAuBE,GAvBtC,UAwBUZ,KAxBV,QAwBNC,EAxBM,OAyBwB,YAAhCa,eACFC,YAAiBd,EAAQ7F,SAE3B4G,YAAmBf,EAAQ1H,MAC3B0I,YAAed,EAAUF,EAAQ7F,QAAS6F,EAAQ1H,MAClD8F,EAAQ4B,GAERiB,cACAC,cAjCY,0DAAH,wDAoCLC,GAAY,uCAAG,WACnBZ,EACAa,EACAX,EACAE,GAJmB,eAAA3H,EAAA,6DAMnBK,IAAkBkH,EAAa,YAC/BlH,IAA2BoH,EAAuBE,GAP/B,SASGZ,KATH,OASbC,EATa,OAUiB,YAAhCa,eACFC,YAAiBd,EAAQ7F,SAG3B4G,YAAmBf,EAAQ1H,MAC3B0I,YAAeI,EAAapB,EAAQ7F,QAAS6F,EAAQ1H,MACrD8F,EAAQ4B,GAhBW,2CAAH,4DAmBZqB,GAAW,uCAAG,WAAOrG,GAAP,2BAAAhC,EAAA,+EAGEqE,EAAerC,GAHjB,OAGV/B,EAHU,OAIhBsH,EAActH,EAAIuH,MAJF,sDAOhB,sCAAI,KAAKrH,gBAAT,iBAAI,EAAeD,YAAnB,OAAI,EAAqBpD,UACvB,KAAIA,QAAJ,gDAAiB,KAAKqD,gBAAtB,iBAAiB,EAAeD,YAAhC,aAAiB,EAAqBpD,QAAtC,aAAkD,KAAIA,QAAtD,MARc,oBAYlBuD,IAAkBkH,EAAa,YAZb,UAaIR,KAbJ,QAaZC,EAbY,OAckB,YAAhCa,eACFC,YAAiBd,EAAQ7F,SAE3B4G,YAAmBf,EAAQ1H,MAC3B8F,EAAQ4B,GACRsB,YAAmB,OAACtB,QAAD,IAACA,OAAD,EAACA,EAAS7F,QAAV,OAAmB6F,QAAnB,IAAmBA,OAAnB,EAAmBA,EAAS1H,MAnB7B,yDAAH,sDAsBXiJ,GAAQ,uCAAG,WAAOvG,GAAP,+BAAAhC,EAAA,+EAGKsE,EAAYtC,GAHjB,OAGP/B,EAHO,OAIbsH,EAActH,EAAIuH,MAElBgB,YAAe,OAACvI,QAAD,IAACA,GAAD,UAACA,EAAKwI,aAAN,aAAC,EAAYC,GAAb,OAAiBzI,QAAjB,IAAiBA,GAAjB,UAAiBA,EAAKwI,aAAtB,aAAiB,EAAYnJ,MAC5CqJ,YAA4B,CAC1BrJ,MAAa,OAAP0C,QAAO,IAAPA,OAAA,EAAAA,EAAS1C,OAAQ,GACvBsJ,UAAiB,OAAP5G,QAAO,IAAPA,OAAA,EAAAA,EAAS4G,WAAY,GAC/BC,UAAiB,OAAP7G,QAAO,IAAPA,OAAA,EAAAA,EAAS8G,UAAU7J,gBAAiB,GAC9C8J,MAAa,OAAP/G,QAAO,IAAPA,OAAA,EAAAA,EAAS8G,UAAU5J,YAAa,GACtC8J,UAAiB,OAAPhH,QAAO,IAAPA,OAAA,EAAAA,EAAS8G,UAAU3J,gBAAiB,GAC9C8J,aAAoB,OAAPjH,QAAO,IAAPA,OAAA,EAAAA,EAAS8G,UAAU1J,mBAAoB,KAbzC,sDAgBb,sCAAI,KAAKe,gBAAT,iBAAI,EAAeD,YAAnB,OAAI,EAAqBpD,UACvB,KAAIA,QAAJ,gDAAiB,KAAKqD,gBAAtB,iBAAiB,EAAeD,YAAhC,aAAiB,EAAqBpD,QAAtC,aAAkD,KAAIA,QAAtD,MAjBW,oBAqBfuD,IAAkBkH,EAAa,YArBhB,UAsBOR,KAtBP,QAsBTC,EAtBS,OAuBfe,YAAmBf,EAAQ1H,MAC3B8F,EAAQ4B,GAxBO,yDAAH,sDA2BRkC,GAAM,uCAAG,WAAOlH,GAAP,+BAAAhC,EAAA,+EAKOwE,EAAOxC,GALd,OAKL/B,EALK,OAMXsH,EAActH,EAAIuH,MAClBC,EAAwBxH,EAAIyH,cAC5BC,EAAyB1H,EAAI2H,gBAC7BuB,YAAYnH,EAAQoH,MAAOpH,GAThB,wDAWX,sCAAI,KAAK7B,gBAAT,iBAAI,EAAeD,YAAnB,OAAI,EAAqBpD,UACvB,KAAIA,QAAJ,gDAAiB,KAAKqD,gBAAtB,iBAAiB,EAAeD,YAAhC,aAAiB,EAAqBpD,QAAtC,aAAkD,KAAIA,QAAtD,MAZS,oBAgBbuD,IAAkBkH,EAAa,YAC/BlH,IAA2BoH,EAAuBE,GAjBrC,UAkBSZ,KAlBT,QAkBPC,EAlBO,OAmBuB,YAAhCa,eACFC,YAAiBd,EAAQ7F,SAE3BkI,cACAtB,YAAmB,qBACnB3C,EAAQ4B,GAxBK,0DAAH,sDA2BNsC,GAAS,WACbjJ,MACAqF,EAAaF,KACbE,EAAaD,KACbL,EAAQ,OAIJmE,GAAQ,OAAGpE,QAAH,IAAGA,OAAH,EAAGA,EAAMqE,UACjBC,GAAoC,QAAX,OAAJtE,QAAI,IAAJA,OAAA,EAAAA,EAAM7F,MAE3BoK,GAAcC,mBAAQ,WAC1B,OAAQhE,IAAuBR,IAC9B,CAACA,EAAMQ,IAEJoB,GAAgB,uCAAG,4CAAA/G,EAAA,6DACvB4F,GAAsB,GADC,kBAGDtF,cAHC,cAGfmI,EAHe,OAIfmB,EAAWnB,EAAMmB,SACjBC,EALe,OAKNpB,QALM,IAKNA,OALM,EAKNA,EAAOtH,QAChB2I,EANe,OAMJrB,QANI,IAMJA,OANI,EAMJA,EAAOnJ,KAClByK,EAPe,OAOHtB,QAPG,IAOHA,OAPG,EAOHA,EAAOW,MACzBY,YAAcvB,GACdwB,YAAwB,CACtBC,SAAUzB,EAAM0B,MAAQ,GACxB7K,KAAMmJ,EAAMnJ,MAAQ,GACpB8J,MAAOX,EAAMW,OAAS,GACtBgB,MAAO3B,EAAM2B,OAAS,GACtBC,SAAU5B,EAAM6B,YAChB1B,SAAUH,EAAMG,UAAY,GAC5BC,SAAUJ,EAAMmB,SAAS3K,eAAiB,GAC1C8J,KAAMN,EAAMmB,SAAS1K,WAAa,GAClC8J,SAAUP,EAAMmB,SAASzK,eAAiB,GAC1C8J,YAAaR,EAAMmB,SAASxK,kBAAoB,GAChDmL,gBAAiB9B,EAAM+B,MAAQ,KAEjCjL,YAAiB,2BACZqK,GADW,IAEdtK,KAAMmJ,EAAMgC,WAEVZ,GAAQa,YAAqBb,EAAQC,EAAUC,GA1B9B,kBA2BdtB,GA3Bc,wCA6BrB,sCAAI,KAAKtI,gBAAT,iBAAI,EAAeD,YAAnB,OAAI,EAAqBpD,UACvB,KAAIA,QAAJ,gDAAiB,KAAKqD,gBAAtB,iBAAiB,EAAeD,YAAhC,aAAiB,EAAqBpD,UA9BnB,8BAkCrB8I,GAAsB,GAlCD,6EAAH,qDAsChB+E,KAAkB,OAACxF,QAAD,IAACA,MAAMyF,KACzBC,GAAc,OAAG1F,QAAH,IAAGA,GAAH,UAAGA,EAAMyF,WAAT,aAAG,EAAWE,iBAE5BC,GAAsB9M,uBAC1B,SAAC6M,GACC1F,EAAQ,2BACHD,GADE,IAELyF,IAAI,2BACCzF,EAAKyF,KADP,IAEDE,0BAIN,CAAC3F,IAGH,MAAO,CACLQ,qBACAd,gBACAE,QACAI,OACA8B,SACAqC,UACAnB,gBACApC,cACAsC,eACAE,YACAW,UACAK,YACAE,sBACAC,eACAiB,kBACAE,kBACAxF,gBACAC,mBACAyF,2BAKWrG,O,iCC7Uf,gNAAMsG,EAAmB,eACnBC,EAAgB,YAETC,EAAmB,SAACC,GAC/BrM,aAAaU,QAAQwL,EAAkBG,IAG5BC,EAAiB,WAC5B,OAAOtM,aAAaC,QAAQiM,IAGjBK,EAAoB,WAC/BvM,aAAaa,WAAWqL,IAGbM,EAAgB,SAACH,GAC5BrM,aAAaU,QAAQyL,EAAeE,IAGzBI,EAAc,WACzB,OAAOzM,aAAaC,QAAQkM,IAGjBO,EAAiB,WAC5B1M,aAAaa,WAAWsL,K,iCCxB1B,4IAAMQ,EAAiC,8BACjCC,EAA0B,iCAEnBC,EAA8B,WACzC7M,aAAaU,QAAQkM,GAAyB,IAGnCE,EAA4B,WACvC,OAAO9M,aAAaC,QAAQ2M,IAOjBG,EAAwB,WACnC/M,aAAaU,QAAQiM,GAAgC,IAG1CK,EAAsB,WACjC,OAAOhN,aAAaC,QAAQ0M,K,8ECfxBM,EAAc,SAAC,GAkBd,IAAD,IAjBJrD,UAiBI,MAjBC,cAiBD,EAhBJsD,EAgBI,EAhBJA,OACAC,EAeI,EAfJA,QACAC,EAcI,EAdJA,WACAC,EAaI,EAbJA,UACAC,EAYI,EAZJA,QACAC,EAWI,EAXJA,WACAC,EAUI,EAVJA,aACAC,EASI,EATJA,qBACAC,EAQI,EARJA,IACAC,EAOI,EAPJA,cACAC,EAMI,EANJA,OACAlP,EAKI,EALJA,SACAmP,EAII,EAJJA,aACAC,EAGI,EAHJA,UACAC,EAEI,EAFJA,MACA3P,EACI,EADJA,QAEA,OACE,8BACE,cAAC,IAAD,CACEwL,GAAIA,EACJoE,MAAO,CACLlE,SAAU,QACVmE,OAAQ,EACRC,MAAO,OACPC,OAAQ,OACRC,UAAW,iBACXC,KAAM,EACNC,MAAO,GAETpB,OAAQA,EACRU,OAAQA,EACRE,UAAWA,EACXS,SAAUnQ,EAdZ,SAgBE,sBAAK0P,UAAU,wBAAf,WACID,GACA,qBACE,cAAY,eACZC,UAAU,oBACVU,IAAKC,IACLC,QAAS,WACPd,IACAxP,OAILM,GAGC,qCACE,qBAAKsP,MAAO,CAAEW,gBAAiB,WAA/B,SACE,wBACEvN,KAAMsM,EACNM,MAAO,CAAEY,QAAS,QAAST,OAAQ,UACnCL,UAAU,WAGd,qBAAKA,UAAU,sCAAf,SACGV,IAEFG,GACC,qBACEO,UAAS,qEAAgEH,GAD3E,SAGGN,IAGJG,GACC,cAAC,IAAD,CACE5D,GAAImE,EACJc,MAAM,UACNH,QAASvB,GAAWS,EACpBkB,MAAOrB,EAJT,SAMGH,eAWnBL,EAAY8B,YAAc,cAE1B9B,EAAY+B,aAAe,CACzB9B,QAAQ,EACRC,QAAS,aACTC,WAAY,GACZC,UAAW,GACXC,QAAS,YACTC,WAAY,KACZC,aAAc,KACdC,sBAAsB,EACtBC,IAAK,KACLC,cAAe,OACfC,OAAQ,aACRlP,SAAU,KACVmP,cAAc,EACdC,UAAW,KACXC,MAAO,KACP3P,QAAS,cAsBI6O,O,iCCrIf,gUAOAgC,IAAMC,OAAOC,KACbF,IAAMC,OAAOE,KACbH,IAAMC,OAAOG,KACbJ,IAAMK,OAAO,MAIb,IAAMC,EAAmB,sBAIlB,SAASC,IAAgD,IAA5CC,EAA2C,uDAA1BF,EACnC,OAAON,MAAQQ,OAAOA,GAGjB,SAASC,EAAQC,GACtB,OAAOV,IAAMU,GAAMD,UAGd,SAASE,EAAyBD,GACvC,OAAOV,IAAMU,GAAMF,OAZO,gBAerB,SAASI,EAAqBF,GACnC,OAAOV,IAAMU,GAAMG,cAmCd,SAASC,EAAyBJ,GACvC,OAAOV,IAAMU,GAAMF,OAnDQ,cAsDtB,SAASO,EAAiBL,GAC/B,OAAOV,IAAMU,GAAML,OAAO,MAAMG,OAAO,kCAGlC,SAASQ,EAAeN,GAC7B,OAAOV,IAAMU,GAAML,OAAO,MAAMG,OAAO,W,iCC3EzC,mBAQeS,IALf,WACE,IAAQC,EAAWC,cAAXD,OACR,OAAOtF,mBAAQ,kBAAM,IAAIwF,gBAAgBF,KAAS,CAACA,M,iCCLtC,QAA0B,8C,sKCc5BG,EAA2B,CACtCtS,QAAS,GACTuS,WAAW,EACXC,gBAAiB,cAGNC,EAAejS,wBAC1B8R,GAGWI,EAAyC,SAAC,GAGhD,IAFLhS,EAEI,EAFJA,SACGiS,EACC,iBACJ,EAAkChS,oBAAS,GAA3C,mBAAO4R,EAAP,KAAkBK,EAAlB,KACA,EAA8BjS,mBAAS,IAAvC,mBAAOX,EAAP,KAAgBY,EAAhB,KACA,EAAkCD,mBAAS,IAA3C,mBAAOkS,EAAP,KAAkBC,EAAlB,KACA,EAAgCnS,oBAAS,GAAzC,mBAAOoS,EAAP,KAAiBC,EAAjB,KAEMR,EAAkBrR,uBAAY,SAAC8R,EAAKC,GAAuB,IAAjBC,IAAgB,yDAC9DP,GAAa,GACbhS,EAAWqS,GACXH,EAAaI,GACbF,EAAYG,KACX,IAEGC,EAAmBjS,uBAAY,WACnCyR,GAAa,GACbhS,EAAW,IACXkS,EAAa,IACbE,GAAY,KACX,IAEGvR,EAAQ,CACZ+Q,kBACAxS,UACAuS,aAGF,OACE,eAACE,EAAajR,SAAd,yBAAuBC,MAAOA,GAAWkR,GAAzC,cACE,cAAC,IAAD,CACEzD,OAAQqD,EACRnS,QAASgT,EACTpT,QAASA,EACTqT,QAASR,EACTE,SAAUA,IAEXrS,Q,mJC9DA,SAAS4S,IAAwD,IAAhDC,EAA+C,uDAAb,GACxD,QAASA,GAAmC,IAA5BC,OAAOC,KAAKF,GAAK9M,QAAgB8M,EAAIG,cAAgBF,OAGhE,SAASG,EAAiBC,EAAYC,EAAepS,GAC1D,MAAM,GAAN,mBAAWmS,EAAME,MAAM,EAAGD,IAA1B,CAAkCpS,GAAlC,YAA4CmS,EAAME,MAAMD,KAGnD,SAASE,EAAaC,GAC3B,OAAOA,EAAKC,QAAQ,2BAA4B,U,iCCR3C,SAASC,EACdC,EACAC,GAEA,IAAIC,EAEJ,OAAO,WAA2C,IAAC,IAAD,0BAAnBC,EAAmB,yBAAnBA,EAAmB,gBAChDlT,aAAaiT,GACbA,EAAU/S,OAAOC,YAAW,kBAAM4S,EAASI,MAAM,EAAMD,KAAOF,IATlE,mC,iCCAe,QAA0B,6C,iCCA1B,QAA0B,yC,iCCA1B,QAA0B,+C,iCCAzC,kHAEa1L,EAAiB,iBACjBC,EAAgB,kBAChB6L,EAAsB,eAACC,EAAD,uDAAQ,EAAR,OAAcC,YAAqBD,K,iCCJ/D,SAASE,EAAaC,GAA8C,IAKrEC,EALwCC,EAA4B,uDAAb,IAC3D,MAAsB,kBAAXF,GAAyC,kBAAXA,EAChCE,GAMPD,EADoB,kBAAXD,EACKA,EAEAG,SAASH,GAGrBI,MAAMH,GAAqBC,EAExBD,EAAYI,eAAe,CAAC,MAAO,QAf5C,mC,yECAe,MAA0B,oD,eCmBnCC,EAAQC,IAAOC,IAAV,4RACE,qBAAGlG,OAAuB,OAAS,UAQhC,kBACA,WADA,EAAGmE,QACQ,UAAY,aAMjCgC,EAAUF,IAAOC,IAAV,0DAIPE,EAAmC,SAAC,GAMnC,IALLpG,EAKI,EALJA,OACA9O,EAII,EAJJA,QACAJ,EAGI,EAHJA,QACAqT,EAEI,EAFJA,QAEI,IADJN,gBACI,SACEwC,EAAwBpU,uBAAY,WACxCI,YAAW,WACTnB,MACC,OACF,CAACA,IAMJ,OAJAwF,qBAAU,WACJsJ,GAAQqG,MACX,CAACrG,EAAQqG,IAGV,eAACL,EAAD,CAAOhG,OAAQA,EAAQmE,QAASA,EAAhC,UACGN,GACC,cAACsC,EAAD,UACE,qBACE7E,IAAiB,WAAZ6C,EAAuBmC,EAAkBC,IAC9CC,IAAI,cACJC,QAAQ,WAId,cAACC,EAAA,EAAD,CAAY/E,MAAM,QAAQf,UAAU,OAApC,SACG9P,QAMM6V,mBAAKP,I,67ECpEPQ,EAAgB,WAC3B,IAAMC,EAAiB,CACrBC,MAAOC,IAAUC,UAAUF,OAE7B,OAAOG,IAAWC,WAAWL,IAIlBM,EAAoB,WAE3B,IAAUC,EAAGC,EAAGC,EAAMC,EAAGC,EAAGC,EADb,qBAARC,MACGN,EAkBVhV,OAlBaiV,EAmBbhQ,SAnBgBiQ,EAoBhB,SAnBIF,EAAEM,MACNH,EAAIH,EAAEM,IAAM,WACVH,EAAEI,WACEJ,EAAEI,WAAWtC,MAAMkC,EAAGK,WACtBL,EAAEM,MAAMC,KAAKF,YAEdR,EAAEW,OAAMX,EAAEW,KAAOR,GACtBA,EAAEO,KAAOP,EACTA,EAAES,QAAS,EACXT,EAAEU,QAAU,MACZV,EAAEM,MAAQ,IACVL,EAAIH,EAAEa,cAAcZ,IAClBa,OAAQ,EACVX,EAAElG,IAOF,kDANAmG,EAAIJ,EAAEe,qBAAqBd,GAAG,IAC5Be,WAAWC,aAAad,EAAGC,IAO/BC,IAAI,OAAQX,IAAUC,UAAUuB,WAChCb,IAAI,QAAS,cAIJc,EAAsB,WAC/B,IAAUhB,EAAGF,EAAGC,EAAYkB,EAAGC,EAAGC,EAAxBnB,EAmBTpV,OAnBYkV,EAmBJjQ,SAnBOkQ,EAmBG,SAnBSkB,EAmBiB,CAC7CG,IAAK,CAAEC,SAAU9B,IAAUC,UAAU8B,cAnBpCtB,EAAEuB,mBAkB6B,KAjB7BvB,EAAEwB,GACDxB,EAAEwB,IACF,YACGxB,EAAEwB,GAAGC,EAAIzB,EAAEwB,GAAGC,GAAK,IAAInB,KACtB,CAACoB,KAAK5G,OAAO6G,OAAOC,MAAMC,UAAUzE,MAAM0E,KAAK1B,cAGpDJ,EAAEwB,GAAGtM,GAAK8K,EAAEwB,GAAGtM,IAAM+L,EACrBjB,EAAEwB,GAAGO,QAAU,GACfb,EAAIpB,EAAEY,cAAcX,GACpBoB,EAAIrB,EAAEc,qBAAqBb,GAAG,GAC9BmB,EAAEP,MAAQ,EACVO,EAAEpH,IACD,iCAIkC,MAH/B/J,OAAS,EAAI,MAGkB,MAHRiS,MAAM,KAAKC,OAAOC,KAAK,KAAO,IAAM,KAC7DjB,EAAElR,OAAS,EAAI,SAAWkR,EAAI,IACjCE,EAAEN,WAAWC,aAAaI,EAAGC,IAMtBgB,EAAsB,WAEjCC,IAAUC,KAAK9C,IAAU6C,UAAUE,UAAW/C,IAAU6C,UAAUG,QAElEH,IAAUI,QAAQlC,KAAK,CAAEmC,OAAO,IAEhCL,IAAUM,KAAM,GAWdC,EAAgB,CAClBA,cAHiBjT,cAGa,uBAAyB,eAG5CkT,EAAa,SAACC,EAAWC,GAChClY,SACFA,OAAOmY,UAAYnY,OAAOmY,WAAa,GACvCnY,OAAOmY,UAAUzC,KAAK,CACpB0C,MAAOH,EACPI,WAAW,2BACNH,GACAH,KAGP/X,OAAOsV,IAAI,cAAe2C,EAAWC,GACrClY,OAAO4W,GAAG,MAAO,QAAS,CACxB0B,UAAW,QACXC,WAAYL,EACZD,UAAU,MAAD,OAAQA,OAKVO,EAAgB,SAACC,GAC5BzY,OAAO4W,GAAG,MAAO,oBAAqB6B,IAG3BC,EAAqB,CAChCC,iBAAkB,WAChBX,EAAW,sBAEbY,qBAAsB,WACpBZ,EAAW,6BAEba,aAAc,SAACC,GACbd,EAAW,wBAAyB,CAClCe,sBAAuBD,KAG3BE,wBAAyB,WACvBhB,EAAW,gCAEbiB,6BAA8B,WAC5BjB,EAAW,qCAEbkB,yBAA0B,WACxBlB,EAAW,6BAEbmB,eAAgB,WACdnB,EAAW,oBAEboB,6BAA8B,WAC5BpB,EAAW,8BAEbqB,cAAe,SAACC,GACdtB,EAAW,qBAAsB,CAC/BuB,aAAcD,MAKPE,EAAmB,CAC9BC,6BAA8B,WAC5BzB,EAAW,4CAEb0B,iBAAkB,SAACC,GACjB3B,EAAW,gBAAiB,CAC1B4B,UAAWD,KAGfE,qBAAsB,WACpB7B,EAAW,0BAEb8B,gBAAiB,SAACC,GAChB,IAAIC,EAEa,MAAbD,EACFC,EAAU,UACY,iBAAbD,EACTC,EAAU,WACY,cAAbD,IACTC,EAAU,QAGZhC,EAAW,aAAc,CACvBiC,SAAUD,KAGdE,YAAa,WACXlC,EAAW,WAEbmC,UAAW,WAAgB,IAAfC,EAAc,uDAAP,GACjBpC,EAAW,mBAAoB,CAC7BoC,KAAMA,KAGVC,4BAA6B,WAC3BrC,EAAW,6BAEbsC,2BAA4B,SAACC,GAC3BvC,EAAW,sCAAuC,CAChDuC,iBAAkBA,MAKXC,EAAuB,CAClCC,UAAW,WACTzC,EAAW,4BAIF0C,EAAuB,CAClCD,UAAW,WACTzC,EAAW,mBAEb2C,YAAa,SAACxa,GACZ6X,EAAW,aAAc,CACvB4C,OAAQza,KAGZ0a,YAAa,SAAC1a,GACZ6X,EAAW,aAAc,CACvB8C,OAAQ3a,MAKD4a,EAAuB,CAClCC,eAAgB,WACdhD,EAAW,qBAEbiD,kBAAmB,WACjBjD,EAAW,yBAEbkD,cAAe,WACblD,EAAW,mBAEbmD,cAAe,WACbnD,EAAW,oBAIFoD,EAA8B,CACzCC,oBAAqB,WACnBrD,EAAW,0BAEbsD,uBAAwB,WACtBtD,EAAW,+BAIFuD,EAA2B,WACtCvD,EAAW,+BAOAwD,EAAmB,WAC9BxD,EAAW,wBAGAyD,EAAwB,WACnCzD,EAAW,sBASA0D,EAAW,SAACC,GACL,OAAdA,GAAoB3D,EAAW,cAAe2D,IAGvCC,EAAmB,WAC9B5D,EAAW,iBAGA6D,EAAkB,WAC7B7D,EAAW,gBAGA8D,EAAmB,WAC9B9D,EAAW,gBAGA+D,EAAqB,WAChC/D,EAAW,6BAGAgE,EAAkB,WAC7BhE,EAAW,mBAGAiE,EAA4B,WACvCjE,EAAW,0BAGAkE,EAA4B,WACvClE,EAAW,0BAGAmE,EAA2B,WACtCnE,EAAW,yBAGAoE,EAAqB,WAChCpE,EAAW,mBAGAqE,EAAuB,WAClCrE,EAAW,qBAIAsE,EAAqB,WAChCtE,EAAW,oBAGAuE,EAAsB,WACjCvE,EAAW,sCAGAwE,EAA0B,WACrCxE,EAAW,mCAGAyE,EAA8B,WACzCzE,EAAW,gCAGA0E,EAAgC,WAC3C1E,EAAW,gCAGA2E,EAA4B,SAAC/Y,GACxCoU,EAAW,wBAAyB,CAClC4E,iBAAkBhZ,KAITiZ,EAA8B,WACzC7E,EAAW,8BAGA8E,EAA0B,WACrC9E,EAAW,6BAGA+E,EAA8B,WACzC/E,EAAW,wCAGAgF,EAAwB,WACnChF,EAAW,6BAGAiF,EAAqB,SAACC,GACjClF,EAAW,8BAA+B,CACxCmF,4BAA6BD,KAIpBE,EAAqB,SAACC,GACjCrF,EAAW,6BAA8B,CACvCqF,eAAgBA,KAIPC,EAAe,SAACD,GAC3BrF,EAAW,4BAA6B,CACtCqF,eAAgBA,KAIPE,EAAuB,WAClCvF,EAAW,0BAGAwF,EAAkC,SAACC,GAC9CzF,EAAW,yBAAD,OAA0ByF,KAGzBC,EAAgC,WAC3C1F,EAAW,6BAGA2F,GAAmC,WAC9C3F,EAAW,wCAGA4F,GAA0C,SAACC,GACtD7F,EAAW,kCAAmC,CAAE6F,kBAGrCC,GAA0C,WACrD9F,EAAW,mCAMA+F,GAA4B,WACvC/F,EAAW,4BAGAgG,GAA2B,SAACC,GACvCjG,EAAW,wBAAyB,CAClCiG,aAISC,GAA0B,SAACC,GACtCnG,EAAW,uBAAwB,CACjCmG,gBAISC,GAA6B,SAACD,GACzCnG,EAAW,0BAA2B,CACpCmG,gBAISE,GAA6B,SAACC,GACzCtG,EAAW,0BAA2B,CACpCsG,mBAISC,GAAmB,WAC9BvG,EAAW,kBAGAwG,GAAsB,SAACP,GAClCjG,EAAW,mBAAoB,CAC7BiG,aAISQ,GAAqB,SAACN,GACjCnG,EAAW,iBAAkB,CAC3BmG,gBAISO,GAAgB,SAACP,GAC5BnG,EAAW,YAAa,CACtBmG,gBAISQ,GAAgB,SAACR,GAC5BnG,EAAW,YAAa,CACtBmG,gBAISS,GAA2B,WACtC5G,EAAW,2BAGA6G,GAAqB,SAACC,GACjC9G,EAAW,iBAAkB,CAAE8G,mBAGpBC,GAAuB,SAACD,GACnC9G,EAAW,mBAAoB,CAAE8G,mBAGtBE,GAAqB,SAACb,GACjCnG,EAAW,qBAAsB,CAC/BmG,gBAISc,GAAgB,WAC3BjH,EAAW,eAGAkH,GAAoB,WAC/BlH,EAAW,yBAGAmH,GAAmB,WAC9BnH,EAAW,qBAGAoH,GAA6B,SACxCC,EACAC,GAEAtH,EAAW,gCAAiC,CAC1CqH,4BACAC,iBAISC,GAAsB,WACjCvH,EAAW,0CAGAwH,GAA0B,SAACrB,EAAYsB,GAClDzH,EAAW,6BAA8B,CACvCmG,aACAsB,gBAISC,GAAsB,SAACvB,EAAYsB,GAC9CzH,EAAW,yBAA0B,CACnCmG,aACAsB,gBAaSE,GAAqB,SAAC,GAAoC,IAAlC1H,EAAiC,EAAjCA,UAAWC,EAAsB,EAAtBA,gBAC9CV,IAAUY,MAAM1C,KAAKuC,EAAWC,IAqBrBrM,GAA0B,SAAC,GAYjC,IAXLC,EAWI,EAXJA,SACA5K,EAUI,EAVJA,KACA8J,EASI,EATJA,MACAgB,EAQI,EARJA,MACAC,EAOI,EAPJA,SACAzB,EAMI,EANJA,SACAC,EAKI,EALJA,SACAE,EAII,EAJJA,KACAC,EAGI,EAHJA,SACAC,EAEI,EAFJA,YACAsB,EACI,EADJA,gBAEAqL,IAAUoI,YAAYlK,KAAK,CACzBmK,KAAM,CACJC,SAAUhU,EACViU,MAAO/T,EACPgU,KAAM9e,EACN+e,MAAOC,YAAqBlV,GAC5BmV,SAAUlU,EACVmU,SAAU5V,EACV6V,SAAU5V,EACV6V,KAAM3V,EACN4V,SAAU3V,EACV,eAAgBC,EAChB,mBAAoBsB,MASb5B,GAA8B,SAAC,GAOrC,IANLrJ,EAMI,EANJA,KACAsJ,EAKI,EALJA,SACAC,EAII,EAJJA,SACAE,EAGI,EAHJA,KACAC,EAEI,EAFJA,SACAC,EACI,EADJA,YAEA2M,IAAUgJ,QAAQ9K,KAAK,CACrBmK,KAAM,CACJG,KAAM9e,EACNkf,SAAU5V,EACV6V,SAAU5V,EACV6V,KAAM3V,EACN4V,SAAU3V,EACV,eAAgBC,O,iCC1kBP,QAA0B,uC,iCCA1B,QAA0B,uC,sFCEzC,SAAS4V,IACP,MAAmDzgB,OACnD,MAAO,CACL4O,MAFF,EAAQ8R,WAGNC,OAHF,EAA2BC,aAOd,SAASC,IACtB,MAAgDxhB,mBAC9CohB,KADF,mBAAOK,EAAP,KAAyBC,EAAzB,KAaA,OATAzc,qBAAU,WACR,SAAS0c,IACPD,EAAoBN,KAItB,OADAzgB,OAAOihB,iBAAiB,SAAUD,GAC3B,kBAAMhhB,OAAOkhB,oBAAoB,SAAUF,MACjD,IAEIF,I,iCCxBM,QAA0B,yC,iCCA1B,QAA0B,+C,uFCInC/M,EAAUF,IAAOC,IAAV,6NAcPqN,EAAStN,IAAOC,IAAV,yOA+DGsN,IAlDY,WACzB,MAAwB/hB,mBAAS,GAAjC,mBAAOgiB,EAAP,KAAaC,EAAb,KA4BA,OAJAhd,qBAAU,YAtBS,SAAC+c,GAClB,OAAQA,GACN,KAAK,EACHphB,YAAW,WACTqhB,EAAQ,KACP,KACH,MACF,KAAK,EACHrhB,YAAW,WACTqhB,EAAQ,KACP,KACH,MACF,KAAK,EACHrhB,YAAW,WACTqhB,EAAQ,KACP,MAQPC,CAAWF,KACV,CAACA,IAGF,cAACtN,EAAD,CAAS,cAAY,uBAArB,SACE,cAACoN,EAAD,UACE,cAAC,IAAD,CAAYpP,QAAQ,MAApB,SACY,IAATsP,EACC,8DACwB,iDAEb,IAATA,EACF,qCACE,8CADF,4CAIA,sD,iCCzEZ,wNAEaG,EAAmB,YAO1BxhB,OAAOyhB,KAAOzhB,OAAOyhB,MAAQ,IAD1BD,kBAAmB,GAIfE,EAAc,SAAC,GAAoB,IAAlBC,EAAiB,EAAjBA,WAE5B,OADkBnhB,KAAKC,MAAM2B,uDAAuC,IACnDuf,IAAe,IAGrBC,EAAgB,SAAC,GAMvB,IAAD,IALJC,gBAKI,MALO,GAKP,MAJJC,eAII,MAJM,CACRC,cAAc,EACdC,cAAe,eAEb,EACEC,EAAYjiB,OAAOyhB,KACzB,IAAKQ,EAAW,OAAO,EAEvB,MAKIha,eAAmB,GALvB,IACElF,eADF,MACY,GADZ,MAEEiJ,aAFF,MAEU,GAFV,MAGE9K,YAHF,MAGS,GAHT,MAIE8J,aAJF,MAIU,GAJV,EAOA,OAAIiX,GACFA,EAAUC,iBAAiB,CACzBlW,QACA9K,OACA8J,QACAjI,YAEFkf,EAAUE,WAAWN,EAAUC,IAExB,QATT,GAaWM,EAAmB,SAACvP,GAC/B,IAAMoP,EAAYjiB,OAAOyhB,KACrBQ,GACFA,EAAUhB,iBACR,qBACA,SAACY,EAAUQ,EAAYC,GACrBzP,EAAS,CAAEgP,WAAUQ,aAAYC,eAM5BC,EAAc,SAAC1P,GAC1B,IAAMoP,EAAYjiB,OAAOyhB,KACrBQ,GACFA,EAAUhB,iBAAiB,iBAAiB,SAACY,GAAD,OAC1ChP,EAASgP,OAKFW,EAAiB,WAC5B,IACA,GADkBxiB,OAAOyhB,MAAQ,IACzBgB,gBAAR,MAAmB,aAAnB,EAEA,IAAKA,IAAY,OAAO,EACxB,MAAqCA,KAAc,GAAnD,IAAQC,aAAR,MAAgB,GAAhB,MAAoBC,QACpB,MAAO,CACLD,QACAC,aAHF,MAA8B,GAA9B,K,4jBC3CEC,EAAWxgB,oCACX+G,EAAc,KAEd0Z,EAAe,KAGNC,EAAb,qJAAuCC,QAC1BC,EAAb,qJAAsCD,QAIzBjO,EAAa,WAAkB,IAAjBmO,EAAgB,uDAAP,GAClCL,EAAWK,EAAOL,UAGPM,EAAiB,WAC5B,OAAO/Z,GAGIga,EAAiB,SAACC,GAC7Bja,EAAcia,GAGHC,EAAkB,WAC7B,OAAOR,GAGIS,EAAkB,SAACC,GAC9BV,EAAeU,GAOJC,EAA2B,SAACC,GACfA,GAObC,EAA4B,SAACC,GACfA,GAGdC,EAAe,WAGtB,IAFJC,EAEG,uDApD2B,GAmD9BC,EACG,uCACG5T,GAAM,IAAI4G,MAAOiN,UAAY,IACnC,OAAO7T,EAAM2T,EAAiBC,GAGnBE,EAAY,SAAC7a,EAAa0Z,GAChCpb,IACH0b,EAAeha,GACfma,EAAgBT,GAEhBoB,YAAqB,CACnBxb,aAAcya,IACdxa,cAAe2a,QAKRa,EAAqB,SAChC7a,EACAE,GAEI9B,IACF+b,EAAyBna,GACzBqa,EAA0Bna,GAE1B4a,YAA8B,CAC5B7a,cAAeD,EACfG,gBAAiBD,MAeV9B,GACXrF,EAEIgiB,EAAwBhiB,mCAEjBuF,EACXa,eAAyB6b,cACdC,EAAc,WAAgB,IAAfC,EAAc,uDAAP,GAC3B/e,EAAWhE,IAAMgjB,OAAN,2BACZD,GADY,IAEfxe,QAAS,CACP,eAAgB,mBAChB,cAAe,QACf,mBAAoB0e,EAAY5O,SAElCxP,gBAAiBoB,KAGbid,EAAe,uCAAG,WAAOzB,GAAP,eAAArhB,EAAA,0DAClB6F,EADkB,gCACWkd,IADX,cAEhB5e,GAAgB,OAANkd,QAAM,IAANA,OAAA,EAAAA,EAAQld,UAAW,GACJ,qBAApBwe,EAAKK,aACV,OAAJL,QAAI,IAAJA,KAAMK,WAAW7e,EAASmd,MAC5BD,EAAOld,QAAUA,EALK,kBAMfkd,GANe,2CAAH,sDASf4B,EAAiB,SAACC,GACtB,OAAOC,QAAQC,OAAOF,IAIxB,OADAtf,EAASyf,aAAavjB,QAAQwjB,IAAIR,EAAiBG,GAC5Crf,GAGI2f,EAAsB,WAAgB,IAAfZ,EAAc,uDAAP,GACnC/e,EAAWhE,IAAMgjB,OAAN,2BACZD,GADY,IAEfxe,QAAS,CACP,cAAeqe,EACf,cAAe,oBAIbM,EAAe,uCAAG,WAAOzB,GAAP,eAAArhB,EAAA,0DAClB6F,EADkB,gCACWkd,IADX,cAEhB5e,GAAgB,OAANkd,QAAM,IAANA,OAAA,EAAAA,EAAQld,UAAW,GAEJ,qBAApBwe,EAAKK,aACV,OAAJL,QAAI,IAAJA,KAAMK,WAAW7e,EAASmd,MAC5BD,EAAOld,QAAUA,EANK,kBAOfkd,GAPe,2CAAH,sDAUf4B,EAAiB,SAACC,GACtB,OAAOC,QAAQC,OAAOF,IAIxB,OADAtf,EAASyf,aAAavjB,QAAQwjB,IAAIR,EAAiBG,GAC5Crf,GAGH4f,EAAe,uCAAG,WAAOC,GAAP,iBAAAzjB,EAAA,sEACJJ,IAAMyB,KAAN,UAAc2f,GAAd,OAAyByC,GAAY,KAAM,CAC3Dhf,iBAAiB,IAFG,cAChBxE,EADgB,gCAIfA,QAJe,IAIfA,GAJe,UAIfA,EAAKC,YAJU,aAIf,EAAWA,MAJI,2CAAH,sDAWf6iB,EAAmBW,YAAG,sBAC1B,8CAAA1jB,EAAA,yDAAOiiB,EAAP,+BAxK8B,GA0KP,aAAjBhB,EAFN,oDAIQxZ,EAAwBgb,cACDT,EAC3BC,EADuC,OAEvCxa,QAFuC,IAEvCA,OAFuC,EAEvCA,EAAuBC,eAP3B,2EAYsB8b,EAAgB,kBAZtC,eAYUvjB,EAZV,OAaIqiB,EAAmBriB,EAAIyH,cAAezH,EAAI2H,iBAb9C,kBAcW3H,GAdX,wCAgBQ,KAAME,WACsB,MAA1B,KAAMA,SAASC,QACjB,KAAMtD,QAAU,IAAIokB,EAClB,+CAEFyC,KAEA,KAAM7mB,QAAU,IAAIskB,EAAJ,qDACN,KAAOjhB,gBADD,aACN,EAAiBC,UAxBnC,+DA+BA,CACEwjB,OAlCgB,MAsCPD,EAAQ,uCAAG,4BAAA3jB,EAAA,+EAEdwjB,EAAgB,kBAFF,sDAIpB,KAAM1mB,QAAU,IAAIskB,EAAJ,qDAA6B,KAAOjhB,gBAApC,aAA6B,EAAiBC,SAJ1C,uBAMWwL,eACHD,cAC5BkY,cACAnd,cACAod,cACAC,cACAC,cACAtkB,cACAuI,cACAC,cACAhG,cACAE,cACAT,cACAvD,OAAOwL,SAASmH,QAAQ,KAnBJ,0EAAH,sD,6ECxOrB,8TAEMkT,EAAqB,aACrBC,EAAiC,yBACjCC,EAAmB,cAEZ1B,EAA+B,WAM1C,YAJ8C2B,IAA5CrlB,YAAQmlB,IACoC,KAA5CnlB,YAAQmlB,GACJtlB,KAAKC,MAAME,YAAQmlB,IACnB,MAIK3B,EAAgC,SAAC8B,GAC5C,IAAMC,EAAkB1lB,KAAKa,UAAU4kB,GACvC7kB,YAAQ0kB,EAAgCI,IAG7BT,EAAiC,WAC5C/kB,aAAaa,WAAWukB,IAGbtd,EAAsB,WACjC,IACE,IAAM2d,EAAazlB,aAAaC,QAAQklB,GAExC,OADerlB,KAAKC,MAAM0lB,GAE1B,MAAOjR,GACPkR,QAAQzf,MAAMuO,KAIL+O,EAAuB,SAAC1b,GACnC,IAAM4d,EAAa3lB,KAAKa,UAAUkH,GAClC7H,aAAaU,QAAQykB,EAAoBM,IAG9B7d,EAAwB,WACnC5H,aAAaa,WAAWskB,IAGb/d,EAAoB,WAE/B,OADapH,aAAaC,QAAQolB,IAIvBpc,EAAqB,SAACzI,GACjCR,aAAaU,QAAQ2kB,EAAkB7kB,IAG5BwkB,EAAsB,WACjChlB,aAAaa,WAAWwkB,K,0LCrCXM,EAZO,kBACpB,cAACC,EAAA,EAAD,CAAW9X,UAAU,uBAArB,SACE,qBACEU,ICPS,qsYDQTN,MAAM,MACN+R,OAAO,OACPnS,UAAU,YACV4F,IAAI,qB,4EEEKmS,EAXK,IAAIC,cAAY,CAClCC,eAAgB,CACdC,QAAS,CACPC,OAAO,EACPC,sBAAsB,EACtBC,UAAW,IACXC,kBAAkB,M,yBCRT,G,cAAA,IAA0B,mD,4CCQnCC,EAAiB,WACrB,IAAMC,EAAqB/D,IAAOgE,YAAYC,iBAAiBC,MAC7D,SAACC,GAAD,aAAW,UAAAC,YAAcD,UAAd,eAAsBE,WAAW,KAGxCC,EADkB1G,cACcjS,MACtC,OACE4Y,MACCR,GACC,sBAAKxY,UAAU,0GAAf,UACE,8BACE,qBAAKI,MAAO,GAAI+R,OAAQ,GAAIzR,IAAKuY,IAAWrT,IAAI,iBAElD,sBAAK5F,UAAU,OAAf,UACE,qBACEA,UAAWkZ,IACTH,EAAgB,IAAM,gBAAkB,gBACxC,sBAHJ,2CAQA,qBACE/Y,UAAWkZ,IACTH,EAAgB,IAAM,gBAAkB,gBAF5C,sEAQF,8BACE,mBACEI,KAAM1E,IAAO2E,cACbC,OAAO,SACPC,IAAI,aACJxd,GAAG,yBACH,cAAY,gBALd,SAOE,cAACyd,EAAA,EAAD,CAAQxY,MAAM,UAAd,8BAQZwX,EAAetX,YAAc,iBACdsX,I,IAAAA,I,yBCrDFhT,EAAUF,IAAOC,IAAV,40BAwCPkU,EAAUnU,IAAOC,IAAV,yF,iBCxBdmU,EAA8B,SAAC,GAAiC,IAAD,IAA9BC,uBAA8B,SACnE,EACEC,qBAAWlpB,KADLN,EAAR,EAAQA,YAAaC,EAArB,EAAqBA,oBAAqBF,EAA1C,EAA0CA,QAASI,EAAnD,EAAmDA,QAASC,EAA5D,EAA4DA,UAGtDqpB,EAAcC,iBAAO,MACrBC,EAAYrjB,SAASsjB,eAAe,kBAE1C,OAAOC,uBACL,cAACC,EAAA,EAAD,CACEC,GAAI/pB,EACJ+oB,WAAW,WACXiB,QAASP,EACTrV,QAAS,IACT6V,eAAa,EALf,SAOE,eAAC7U,EAAD,CAAS8U,IAAKT,EAAd,UACE,cAAC9T,EAAA,EAAD,CAAY/E,MAAM,QAAQwC,QAAQ,MAAM+W,OAAQ,IAAhD,SACGpqB,KAGDwpB,GAAmB,cAACF,EAAD,CAAS5Y,QAAStQ,EAAlB,mBAEnBF,GAAuB,cAACmpB,EAAA,EAAD,CAAQ3Y,QAASrQ,EAAjB,sBAG7BupB,IAIW/T,iBAAK0T,G,4EC3Cdc,EAAWC,gBAAK,kBAAM,mCACtBC,EAAcD,gBAAK,kBAAM,mCACzBE,EAAoBF,gBAAK,kBAAM,mCAC/BG,EAA8BH,gBAClC,kBAAM,mCAEFI,GAAyBJ,gBAAK,kBAAM,mCACpCK,GAAmCL,gBACvC,kBAAM,mCAEFM,GAA6BN,gBACjC,kBAAM,mCAEFO,GAAmBP,gBAAK,kBAAM,mCAErB,SAASQ,GAAenY,GACrC,IACwBoY,EACpBpY,EADFqY,mBAAsBD,aAGxB,OACE,qCACoB,iBAAjBA,GAAmC,cAACP,EAAD,eAAuB7X,IACzC,4BAAjBoY,GACC,cAACN,EAAD,eAAiC9X,IAEjB,uBAAjBoY,GACC,cAACL,GAAD,eAA4B/X,IAEZ,kCAAjBoY,GACC,cAACJ,GAAD,eAAsChY,IAEtB,4BAAjBoY,GACC,cAACH,GAAD,eAAgCjY,IAEhB,QAAjBoY,GAA0B,cAACV,EAAD,eAAc1X,IACvB,WAAjBoY,GAA6B,cAACR,EAAD,eAAiB5X,IAC7B,iBAAjBoY,GAAmC,cAACF,GAAD,eAAsBlY,OCzCzD,IAAMsY,GAAmB,CAC9B,eACA,0BACA,qBACA,gCACA,2BAEWC,GAAa,CAAC,SAAU,gBAExBC,GAAiB,CAAI,OAAJ,OAAcF,GAAqBC,IAEpDE,GACI,qBADJA,GAES,oCAFTA,GAIT,8DAJSA,GAKe,0CALfA,GAOT,oEAGSC,GAAoB,CAC/B1a,gBAAiB,GACjB2a,UAAW,GACXC,YAAa,GACbC,gBAAiB,GACjBC,WAAY,YCZP,SAASC,GAAe/Y,GAA8B,IAAD,EAE1D,iBADiBA,EAATgZ,KACIC,MAAMR,WAAlB,aAAO,EAAyC,GAG3C,SAASS,GAAclZ,GAA6B,IAAD,YAChDgZ,EAAuBhZ,EAAvBgZ,KAAMZ,EAAiBpY,EAAjBoY,aAEZe,EAIEV,GAHFW,EAGEX,GAFFY,EAEEZ,GADFa,EACEb,GAEEpb,EAAQqb,GAEd,OAAQN,GACN,IAAK,eAEH,UAAAY,EACGC,MAAMG,UADT,SACqC,GAClCrT,MAAM,KACNwT,QAAO,SAACC,GAAD,OAAOA,EAAEC,SAAS,sBAAwBD,EAAEC,SAAS,aAC5DC,SAAQ,SAACF,GACR,MAA4BA,EAAEzT,MAAM,KAApC,mBAAO4T,EAAP,KAAmB7qB,EAAnB,KACmB,qBAAf6qB,IACFtc,EAAMW,gBAAkBlP,GAEP,UAAf6qB,IACFtc,EAAMsb,UAAY7pB,MAKxBuO,EAAMyb,WAAN,oBAAmBE,EAAKC,MAAME,UAA9B,aAAmB,EAAqC,UAAxD,QAA8D,WAC9D,MACF,IAAK,SAEH,UAAAH,EACGC,MAAMK,UADT,SAC+B,GAC5BvT,MAAM,KACNwT,QAAO,SAACC,GAAD,OAAOA,EAAEC,SAAS,sBAAwBD,EAAEC,SAAS,aAC5DC,SAAQ,SAACF,GACR,MAA4BA,EAAEzT,MAAM,KAApC,mBAAO4T,EAAP,KAAmB7qB,EAAnB,KACmB,qBAAf6qB,IACFtc,EAAMW,gBAAkBlP,GAEP,UAAf6qB,IACFtc,EAAMsb,UAAY7pB,MAKxBuO,EAAMyb,WAAN,oBAAmBE,EAAKC,MAAMI,UAA9B,aAAmB,EAA+B,UAAlD,QAAwD,WAI5D,OAAOhc,EAGF,SAASuc,GAAgB5Z,GAA0B,IAAD,IAC/CoY,EAAqBpY,EAArBoY,aAAcyB,EAAO7Z,EAAP6Z,GACtB,OAAQzB,GACN,IAAK,MACH,MAAO,MACT,IAAK,SACH,OAAIG,GAAWkB,SAAX,OAAqBI,QAArB,IAAqBA,GAArB,UAAqBA,EAAIC,gBAAzB,aAAoB,EAA0BC,eAChD,OAAOF,QAAP,IAAOA,OAAP,EAAOA,EAAIC,SACN,SACT,IAAK,eACH,OAAIxB,GAAiBmB,SAAjB,OAA2BI,QAA3B,IAA2BA,GAA3B,UAA2BA,EAAIC,gBAA/B,aAA0B,EAA0BC,eACtD,OAAOF,QAAP,IAAOA,OAAP,EAAOA,EAAIC,SACN,eACT,QACE,OAAO1B,GAIN,SAAS4B,GAAYha,GAK1B,MAHmB,MAAV,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOia,OACTja,EAAMia,IAAM,aAEPja,ECnFF,IAAMka,GAAkB,SAC7B/T,EACAgU,GAEA,IAKqC,EAL7BC,EAAyBD,EAAzBC,MAAOC,EAAkBF,EAAlBE,QAAS5pB,EAAS0pB,EAAT1pB,MAhBnB,SAA0BuP,GAC/B,IAAQia,EAAkBja,EAAlBia,IAAKK,EAAata,EAAbsa,SACb,QAAKL,IACO,cAARA,IACAK,EACF3rB,OAAO4rB,KAAKN,GAEZtrB,OAAOwL,SAASmc,KAAO2D,IAJO,GAchBO,CAAiB,CAC/BP,IAAG,OAAExpB,QAAF,IAAEA,OAAF,EAAEA,EAAMwpB,IACXK,SAAUG,QAAO,OAAChqB,QAAD,IAACA,OAAD,EAACA,EAAM6pB,aAEX,OAAC7pB,QAAD,IAACA,KAAI,YAClB,UAAA0V,EAAUuU,iCAAV,cAAAvU,EAAsC,CAAEiU,QAAOC,c,yCCFtCM,GAAmB9sB,wBAC9B,MAGK,SAAS+sB,GAAT,GAAuE,IAA1C7sB,EAAyC,EAAzCA,SAAaiS,EAA4B,kBAE5D6a,EACXvX,KADF6C,UAAa0U,mBAEf,OACE,mCACGA,EACC,cAACC,GAAD,2BAA4B9a,GAA5B,aAAoCjS,KAEpC,cAAC4sB,GAAiB9rB,SAAlB,yBACEC,MAAO,CAAEisB,UAAU,EAAO1C,mBAAoB,OAC1CrY,GAFN,aAIGjS,OAOX,SAAS+sB,GAAT,GAA4E,IAA1C/sB,EAAyC,EAAzCA,SAAaiS,EAA4B,kBACnEgb,EAA2B7U,IACjC,EAA8CnY,mBAC5C,MADF,mBAAOitB,EAAP,KAAwBC,EAAxB,KAGA,EAAkCltB,oBAAS,GAA3C,mBAAOmtB,EAAP,KAAkBC,EAAlB,KACAJ,EAAaK,qBAAuB,SAAChuB,GAA8B,IAAD,EAChE,EAIIA,EAHFiuB,WAAc/a,EADhB,EACgBA,KAAMyY,EADtB,EACsBA,KAAMuC,EAD5B,EAC4BA,MAAOC,EADnC,EACmCA,YAAapD,EADhD,EACgDA,aAAcyB,EAD9D,EAC8DA,GAC5DO,EAEE/sB,EAFF+sB,MACAC,EACEhtB,EADFgtB,QAIIoB,EAA4B,CAChCrB,QACAC,UACAkB,QACAC,cACAjb,OACA6X,aAAcwB,GAAgB,CAAExB,eAAcyB,OAC9C6B,OAAQ3C,GAAe,CAAEX,eAAcY,SACvCvoB,KAAMupB,GAAYH,GAClBxc,MAAO6b,GAAc,CAAEd,eAAcY,UAGvCkC,EAAmBO,IAGjBjD,GAAkBiB,SAASgC,EAAYrD,eACvC,OAACyB,QAAD,IAACA,KAAE,WAEH,UAAAmB,EAAaW,gCAAb,cAAAX,EAAwC,CAAEZ,QAAOC,aAGrDW,EAAad,gBAAkBA,GAE/B,IAAMprB,EAAQ,CACZisB,UAAU,EACV1C,mBAAoB4C,GAmBtB,OAXAhoB,qBAAU,WACJgoB,GACFG,GAAa,KAEd,CAACH,IAQF,eAACN,GAAiB9rB,SAAlB,yBAA2BC,MAAOA,GAAWkR,GAA7C,cACGjS,EACAktB,GACC,cAAC9C,GAAD,CACEhS,UAAW6U,EACXY,UAAWT,EACX9C,mBAAoB4C,EACpBY,YAxBY,WAClBT,GAAcD,GACdD,EAAmB,a,uBC/CjBY,GAAenE,gBAAK,kBAAM,8EAC1BoE,GAAMpE,gBAAK,kBAAM,iEACjBqE,GAAiBrE,gBAAK,kBAAM,yDAC5BsE,GAAOtE,gBAAK,kBAAM,yDAClBuE,GAAcvE,gBAAK,kBAAM,kEACzBwE,GAAgBxE,gBAAK,kBAAM,gEAC3ByE,GAAgBzE,gBAAK,kBAAM,yDAC3B0E,GAAa1E,gBAAK,kBAAM,iEACxB2E,GAAgB3E,gBAAK,kBAAM,yDAI3B4E,GAAa5E,gBAAK,kBAAM,yDACxB6E,GAAgB7E,gBAAK,kBAAM,mCAC3B8E,GAA2B9E,gBAAK,kBACpC,kEAEI+E,GAAmC/E,gBAAK,kBAC5C,kEAEIgF,GAA6BhF,gBAAK,kBACtC,mCAEIiF,GAAuBjF,gBAAK,kBAAM,mCAgHlCkF,GAA0B,SAAC,GAW7B,OAX8C,EAAf9uB,UAe7B+uB,GAAY,WAAO,IAAD,QAChBC,EAAUC,cACV7iB,EAAWsF,cACXvO,EAASgJ,mBAAQ,WACrB,cAAOC,QAAP,IAAOA,OAAP,EAAOA,EAAUqF,SAChB,CAACrF,IACE8iB,EAAW,IAAIvd,gBAAgBxO,GAAQJ,IAAI,aAG3CiH,EADcwH,eACMzO,IAAI,SACxBosB,EAAgBC,eAEtB,EAKIC,cAJFC,EADF,EACEA,iBACAC,EAFF,EAEEA,4BACAC,EAHF,EAGEA,4BACAC,EAJF,EAIEA,sBAEI7H,EAAkB,OAAG/D,UAAH,IAAGA,KAAH,UAAGA,IAAQgE,mBAAX,iBAAG,EAAqBC,wBAAxB,aAAG,EAAuCC,MAEhE,SAACC,GAAD,OAAWC,YAAcD,MAGrB0H,EAAOxoB,IAAYyoB,eAEnBC,EADoBC,gBACO,OAAIH,QAAJ,IAAIA,GAAJ,UAAIA,EAAM/nB,YAAV,aAAI,EAAYmoB,UAE3CC,GADS,OAAGL,QAAH,IAAGA,GAAH,UAAGA,EAAM/nB,YAAT,aAAG,EAAY7F,OACO,oBAErCoD,qBAAU,WAEmB,OAAf,OAARkH,QAAQ,IAARA,OAAA,EAAAA,EAAU4jB,WACZ,OAAId,QAAJ,IAAIA,KAAUxD,SAAS,iBACrBsD,EAAQ1Y,KAAK4Y,KAGhB,IAEHhqB,qBAAU,YACoB,IAAxBwqB,EAAKriB,gBAA4BqiB,EAAKnnB,WAGxCmnB,EAAK5nB,kBAAiB,GAFtB4nB,EAAK5nB,kBAAiB,KAIvB,CAAC4nB,EAAKnnB,aAET,IAIM0nB,EAAgB9jB,mBAAQ,WAAO,IAAD,EAClC,cAAOC,QAAP,IAAOA,GAAP,UAAOA,EAAU4jB,gBAAjB,aAAO,EAAoBtE,SAAS,kBACnC,CAACtf,IAEE8jB,EAAgB/jB,mBAAQ,WAAO,IAAD,EAClC,cAAOC,QAAP,IAAOA,GAAP,UAAOA,EAAU4jB,gBAAjB,aAAO,EAAoBtE,SAAS,kBACnC,CAACtf,IAEJ,OACEojB,IACAS,GACA,OAACP,QAAD,IAACA,KAAM/nB,MACN+nB,EAAKvnB,oBAMN+nB,GACA,OAACR,QAAD,IAACA,KAAM/nB,MACN+nB,EAAKvnB,qBACH6B,IAAWmlB,EAMd,sBACE/f,UAAWkZ,IACT,oBACAF,MAA4BR,EACxB,sBACA,GACJ6H,GAAyBC,EAAKriB,eAAiB,mBAAqB,IANxE,UASGqiB,EAAK/nB,MAAQioB,EACZ,qCACGH,GAAyBC,EAAKriB,gBAC7B,cAAC2U,EAAA,EAAD,IAGF,cAAC+L,GAAD,CACEgC,gBAAiBA,EACjBL,KAAMA,EACNE,QAASA,EACTZ,QAASA,IAGVS,GACC,cAAClhB,EAAA,EAAD,CACE4hB,WAAW,gCACXnhB,IAAKohB,EACL3hB,QAzDY,WACtBihB,EAAK5nB,kBAAiB,IAyDZqH,cAAY,EACZX,OAAQkhB,EAAK7nB,cACb6G,WAAW,sCACXC,UAAU,wEACVC,QAAQ,kBAIX0gB,GAAoB,cAACb,GAAD,IACpBc,GAA+B,cAACb,GAAD,IAChC,cAACG,GAAD,OAGF,cAACL,GAAD,IAEF,cAAC,EAAD,CAAU1F,iBAAe,IACzB,cAAC,EAAD,OA/CK,cAAC6F,GAAD,IATA,cAACC,GAAD,KA6DIyB,GA1PH,WAOV,OANAC,YAAaC,KACbnb,cACAO,cACAqB,cACAmB,cAGE,cAAC,sBAAD,CAAqBqY,OAAQrJ,EAA7B,SACE,cAAC,IAAD,CAAepiB,SAAUuD,IAAzB,SACE,cAAC,IAAYxH,SAAb,UACE,cAAC,IAAD,UACE,cAAC,IAAD,UACE,cAAC+rB,GAAD,UACE,cAAC,IAAD,UACE,cAAC,GAAD,UACE,eAAC,IAAD,WACE,cAAC,IAAD,CACE4D,OAAK,EACLC,KAAK,mBACLC,OAAQ,SAAC1e,GAAD,OACN,mCACE,cAACgc,GAAD,eAAoBhc,SAI1B,cAAC,IAAD,CACEwe,OAAK,EACLC,KAAK,QACLC,OAAQ,SAAC1e,GAAD,OACN,mCACE,cAACic,GAAD,eAAUjc,SAIhB,cAAC,IAAD,CACEwe,OAAK,EACLC,KAAK,OACLC,OAAQ,SAAC1e,GAAD,OACN,qCACE,cAAC+b,GAAD,CAAKgB,QAAS/c,EAAM+c,UACpB,cAAC,EAAD,UAIN,cAAC,IAAD,CACEyB,OAAK,EACLC,KAAK,kBACLC,OAAQ,SAAC1e,GAAD,OACN,qCACE,cAACoc,GAAD,eAAmBpc,IACnB,cAAC,EAAD,UAIN,cAAC,IAAD,CACEwe,OAAK,EACLC,KAAK,eACLC,OAAQ,SAAC1e,GAAD,OACN,qCACE,cAACqc,GAAD,eAAgBrc,IAChB,cAAC,EAAD,UAIN,cAAC,IAAD,CACEwe,OAAK,EACLC,KAAK,YACLC,OAAQ,SAAC1e,GAAD,OACN,qCACE,cAACsc,GAAD,eAAmBtc,IACnB,cAAC,EAAD,UAIN,cAAC,IAAD,CACEwe,OAAK,EACLC,KAAK,gBACLC,OAAQ,SAAC1e,GAAD,OACN,mCACE,cAACkc,GAAD,CAAaa,QAAS/c,EAAM+c,eAIlC,cAAC,IAAD,CACEyB,OAAK,EACLC,KAAK,iBACLC,OAAQ,SAAC1e,GAAD,OACN,mCACE,cAACmc,GAAD,CACEhiB,SAAU6F,EAAM7F,SAChB4iB,QAAS/c,EAAM+c,QACf4B,gBAAiB3e,EAAMiZ,MAAMgB,WAKrC,cAAC,GAAD,wB,SCzJhB2E,GAAcnE,QACW,cAA7B9rB,OAAOwL,SAASjG,UAEe,UAA7BvF,OAAOwL,SAASjG,UAEhBvF,OAAOwL,SAASjG,SAAS+kB,MACvB,2DAsCN,SAAS4F,GAAgBC,EAAOlN,GAC9BmN,UAAUC,cACPC,SAASH,GACTI,MAAK,SAACC,GACLA,EAAaC,cAAgB,WAC3B,IAAMC,EAAmBF,EAAaG,WACd,MAApBD,IAGJA,EAAiBE,cAAgB,WACA,cAA3BF,EAAiBnwB,QACf6vB,UAAUC,cAAcQ,YAQ1BL,EAAaM,QAAQC,YAAY,CAAEnf,KAAM,iBAEzCof,MACE,0EAEFhxB,OAAOwL,SAASylB,QAAO,GAEnBhO,GAAUA,EAAOiO,UACnBjO,EAAOiO,SAASV,IASdvN,GAAUA,EAAOkO,WACnBlO,EAAOkO,UAAUX,UAO5BY,OAAM,SAACzqB,GACNyf,QAAQzf,MAAM,4CAA6CA,MCrGjE,IAYe0qB,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,iCAAqBhB,MAAK,YAAkD,IAA/CiB,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,O,uECEPrB,KACHxY,aAAK,CACHoa,IAJczvB,oEAKd0vB,aAAc,CAAC,IAAIC,MACnBC,YAPgB5vB,aAQhB6vB,iBAAkB,ICYxB,IAAIC,GAAazN,GAAY5O,QAC7B7V,OAAOkyB,WAAaA,GAQpBjwB,KAAmB,CACjB2gB,SAAUxgB,sCAIZof,eAEA2Q,IAASpC,OACP,cAAC,KAAD,CACEqC,eAAgBF,GAChBG,WAjBiBjwB,EAkBjBkwB,eAAe,EACfC,iBAAkB,cAAC,EAAD,IAJpB,SAME,cAAC,IAAMC,WAAP,UACE,cAAC,WAAD,CAAUC,SAAU,cAAC,EAAD,IAApB,SACE,sBAAKjkB,UAAWkZ,IAAW,qCAA3B,UACE,cAAC,GAAD,IACA,qBAAKpd,GAAG,0BAKhBrF,SAASsjB,eAAe,SHpCnB,SAAkBtF,GACvB,GAA6C,kBAAmBmN,UAAW,CAGzE,GADkB,IAAI/qB,IAAIjD,GAAwBpC,OAAOwL,SAASmc,MACpD+K,SAAW1yB,OAAOwL,SAASknB,OAIvC,OAGF1yB,OAAOihB,iBAAiB,QAAQ,WAC9B,IAAMkP,EAAK,UAAM/tB,GAAN,sBAEP6tB,KAqEV,SAAiCE,EAAOlN,GAEtC0P,MAAMxC,EAAO,CACXpqB,QAAS,CAAE,iBAAkB,YAE5BwqB,MAAK,SAACxuB,GAEL,IAAM6wB,EAAc7wB,EAASgE,QAAQ5D,IAAI,gBAEnB,MAApBJ,EAASC,QACO,MAAf4wB,IAA8D,IAAvCA,EAAYC,QAAQ,cAG5CzC,UAAUC,cAAcyC,MAAMvC,MAAK,SAACC,GAClCA,EAAauC,aAAaxC,MAAK,WAC7BvwB,OAAOwL,SAASylB,eAKpBf,GAAgBC,EAAOlN,MAG1BmO,OAAM,WACLhL,QAAQ4M,IACN,oEA5FAC,CAAwB9C,EAAOlN,GAI/BmN,UAAUC,cAAcyC,MAAMvC,MAAK,WACjCnK,QAAQ4M,IACN,+GAMJ9C,GAAgBC,EAAOlN,OGc/BiQ,GAKA7B,M,u7BCrEM8B,EAAY/C,UAAU+C,U,IAEjB,QAAT,EAAA/C,iBAAA,mBAAWgD,qBAAX,eAA0BC,YAA1B,UAAsCjD,iBAAtC,OAAsC,EAAWiD,U,yCCkBtC7L,EDAJ,WAAW8L,KAAKH,IAIE,qBAAXnzB,SCHgD,IAA3B8E,cAExByuB,EAAgB,WAC3BnF,QAAQoF,UAAU,KAAM,KAAMvuB,SAASI,KACvCrF,OAAOihB,iBAAiB,YAAY,WAClCmN,QAAQoF,UAAU,KAAM,KAAMvuB,SAASI,SAQ9B8C,EAAiB,WAC5B,IAAMsrB,EAAe,IAAI1iB,gBAAgB/Q,OAAOwL,SAASqF,QACnDtO,EAAS2P,OAAOwhB,YAAYD,EAAaE,WAC/C,OAAsC,IAA/BzhB,OAAOC,KAAK5P,GAAQ4C,QAAgB5C,EAAO6P,cAAgBF,OAC9D,KACA3P,GAGOqxB,EAAqB,SAACl1B,EAASm1B,GAC1C,IAAMC,EAAY,8CAA0CC,mBAC1DF,IAEF,MAAM,GAAN,OAAUA,EAASC,EAAe7Q,IAAO+Q,SAAS1I,IAAlD,iBAA8D5sB,IAGnDu1B,EAAkB,SAACC,EAAYC,EAAU/qB,GACpD,IAAMgrB,EAAUL,mBAAmB/zB,OAAOwL,SAASmc,MAE7C0M,EAAgB,UAlCDjyB,0CAkCC,qBAAiCgyB,EAAjC,0BAA0DF,EAA1D,qBAAiFC,EAAjF,mBADP,iBACO,OACpB/qB,EAAK,iBAAaA,GAAU,IAE9BpJ,OAAOwL,SAASmc,KAAO0M,GAwCZC,EAAkB,SAACC,GAC9B,IAAMC,EAAQ7kB,IAAM4kB,EAAME,SAAStkB,OAAO,cACpCukB,EAAMH,EAAMI,cAAN,UACLhlB,IAAM4kB,EAAMI,cAAcF,SAAStkB,OAAO,cADrC,YAER,WACJ,MAAM,GAAN,OAAUqkB,EAAV,mBAAqBE,IAGVrhB,EAAe,SAACwgB,GAC3B,OAAOe,OAAOf,GAAQlgB,eAAe,CAAC,MAAO,QAGlC8a,EAAW,WAEtB,OADgBoG,IAAM1M,WAAWlkB,MAItB6wB,EAAqB,SAACC,EAAYC,GAC7C,OAAKA,EASID,EARAA,EACJE,KAAI,SAACC,GACJ,GAAiB,WAAbA,EAAGC,OAAmC,WAAbD,EAAGC,MAC9B,OAAOD,KAGVtK,QAAO,SAACsK,GAAD,MAAsB,qBAAPA,MAMhBE,EAAoB,SAACC,EAAYzjB,GAC5C,IAEI5H,EACJ,OAAQ4H,GACN,IAAK,QAEH,GADA5H,EAAcsrB,YAAiBD,EAAY,MACxB,KAAfA,GAAqBrrB,GAAwC,MAAzBqrB,EAAWE,OAAO,GACxD,OAAOvrB,EAAYwrB,UACrB,MACF,IAAK,OACH,OAAQ,IAAIC,OAVE,eAUgB,MAAMnC,KAAK+B,GAC3C,QACE,OAAQ,IAAII,OAXI,WAWgB,MAAMnC,KAAK+B,KAIpCK,EAAe,WAE1B,IADA,IAAIC,EAAe1wB,SAAS2wB,uBAAuB,aAC1Cvf,EAAI,EAAGA,EAAIsf,EAAaxwB,OAAQkR,IACvCsf,EAAatf,GAAG3H,MAAMY,QAAU,QAIvBumB,EAAY,SAAZA,EAAa11B,GACxB,GAAI6W,MAAM8e,QAAQ31B,GAChB,OAAOA,EAAM80B,KAAI,SAACc,GAAD,OAAUF,EAAUE,MAGvC,GAAc,OAAV51B,EACF,OAAOA,EAGT,GAAqB,kBAAVA,EAAoB,CAE7B,IADA,IAAM61B,EAAS,GACf,MAA0B9jB,OAAOyhB,QAAQxzB,GAAzC,eAAiD,CAA5C,0BAAO81B,EAAP,KAAYF,EAAZ,KACHC,EAAOC,GAAOJ,EAAUE,GAE1B,OAAOC,EAGT,MAAqB,kBAAV71B,IAEDA,KAAWA,EAAQy0B,OAAOz0B,GAE3BA,GAIE+1B,EAAqB,SAACC,EAAeC,GAAkB,IAAD,IAC3D7B,EAAQ,GA0Dd,OAzDAA,EAAM7e,KACJ,CACEkX,MAAO,YACPyJ,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAeG,WAEvB,CACE1J,MAAO,iBACPyJ,MACe,OAAbF,QAAa,IAAbA,GAAA,UAAAA,EAAeI,sBAAf,eAA+B5jB,QAAQ,KAAM,OAAQ,kBAEzD,CACEia,MAAO,gBACPyJ,KAAM1mB,IAAK,OAACwmB,QAAD,IAACA,OAAD,EAACA,EAAe1B,SAASzkB,OAAO,MAAMG,OAAO,iBAE1D,CACEyc,MAAO,gBACPyJ,KAAmB,OAAbF,QAAa,IAAbA,KAAexB,cACjBhlB,IAAK,OAACwmB,QAAD,IAACA,OAAD,EAACA,EAAexB,cAAcF,SAAStkB,OAAO,gBACnD,eAEN,CACEyc,MAAO,eACPyJ,KAAI,OAAEF,QAAF,IAAEA,GAAF,UAAEA,EAAeK,oBAAjB,aAAE,EAA6B7iB,eAAe,CAAC,MAAO,QAE5D,CACEiZ,MAAO,aACPyJ,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAeM,YAEvB,CACE7J,MAAO,sBACPyJ,MAAmB,OAAbF,QAAa,IAAbA,OAAA,EAAAA,EAAeO,cAAe,OAEtC,CACE9J,MAAO,qBACPyJ,MAAmB,OAAbF,QAAa,IAAbA,OAAA,EAAAA,EAAeQ,aAAc,OAErC,CACE/J,MAAO,oBACPyJ,MAAmB,OAAbF,QAAa,IAAbA,OAAA,EAAAA,EAAeQ,cAAf,OAA6BR,QAA7B,IAA6BA,OAA7B,EAA6BA,EAAeK,cAAe,OAEnE,CACE5J,MAAO,cACPyJ,KAAkB,OAAZD,QAAY,IAAZA,KAAcQ,OACF,OAAbT,QAAa,IAAbA,OAAA,EAAAA,EAAeK,eAAf,OAA8BJ,QAA9B,IAA8BA,OAA9B,EAA8BA,EAAcQ,OAAMC,QAAQ,GAAK,SAChE,kBAEN,CACEjK,MAAO,aACPyJ,KAAkB,OAAZD,QAAY,IAAZA,KAAcQ,MAAmB,OAAZR,QAAY,IAAZA,OAAA,EAAAA,EAAcQ,MAAO,SAAQ,kBAE1D,CACEhK,MAAO,uBACPyJ,KAAmB,OAAbF,QAAa,IAAbA,KAAeW,yBACJ,OAAbX,QAAa,IAAbA,OAAA,EAAAA,EAAeW,yBAA0B,eACzC,mBAGDvC,GAGIwC,EAAgB7kB,OAAO8kB,SAAW,SAAC1gB,EAAGjB,GAIjD,IADA,IAAIzT,GADJyT,GADAA,EAAIA,EAAE1C,QAAQ,aAAc,QACtBA,QAAQ,MAAO,KACXyE,MAAM,KACPf,EAAI,EAAGlB,EAAIvT,EAAEuD,OAAQkR,EAAIlB,IAAKkB,EAAG,CACxC,IAAI4gB,EAAIr1B,EAAEyU,GACV,KAAI4gB,KAAK3gB,GAGP,OAFAA,EAAIA,EAAE2gB,GAKV,OAAO3gB,GAGI4gB,EAAoB,SAACC,EAAYC,GAC5C,IAAIC,EAAmBC,EAIvB,OAHoB3nB,IAAMwnB,GAAYI,SACpB5nB,IAAMynB,GAAUG,QAGhCF,EAAoB1nB,IAAMwnB,GAAYnnB,OAAO,MAAMG,OAAO,UAC1DmnB,EAAkB3nB,IAAMynB,GAAUpnB,OAAO,MAAMG,OAAO,eAChD,GAAN,OAAUknB,EAAV,cAAiCC,KAGnCD,EAAoB1nB,IAAMwnB,GAAYnnB,OAAO,MAAMG,OAAO,eAC1DmnB,EAAkB3nB,IAAMynB,GAAUpnB,OAAO,MAAMG,OAAO,eAChD,GAAN,OAAUknB,EAAV,cAAiCC,KAGtBE,EAAe,SAACC,GAC3B,IAAK7C,OAAO6C,GACV,MAAO,GAGT,IACMC,EADSD,EAAmBE,WAAWvgB,MAAM,IAAIwgB,UAAUtgB,KAAK,IAC/CgT,MAAM,YAE7B,MADY,UAAMoN,EAAQpgB,KAAK,KAAKF,MAAM,IAAIwgB,UAAUtgB,KAAK,MAIlDugB,EAAiB,SAAChE,GAE7B,OADkB,IAAIiE,KAAKC,aAAa,MACvB5nB,OAAO0jB,IAGbmE,EAAwB,SAAChtB,GAOpC,OANAA,EAAQitB,OAAOjtB,GAAO9F,QACZgzB,WAAW,OACnBltB,EAAQ,IAAMA,EAAMwH,MAAM,GACjBxH,EAAMktB,WAAW,QAC1BltB,EAAQ,IAAMA,EAAMwH,MAAM,IAErBxH,EAAM2H,QAAQ,SAAU,KAGpBuN,EAAuB,SAAClV,GACnC,OAAIA,EAAMktB,WAAW,KACZ,MAAQltB,EAAMwH,MAAM,GAEzBxH,EAAMktB,WAAW,MACZ,IAAMltB,EAERA,GAGImtB,EAA6B,SAACC,GACzC,IAAIC,EAAc,IAYlB,OAVID,IAAgBE,MAAkBD,EAAc,2BAChDD,IAAgBG,MAAqBF,EAAc,oBACnDD,IAAgBI,MAAeH,EAAc,mBAC7CD,IAAgBK,MAClBJ,EAAc,2BACZD,IAAgBM,MAAeL,EAAc,gBAC7CD,IAAgBO,MAClBN,EAAc,0BAGTA,GAGIO,EAAc,SAACxK,EAASgK,EAAa9J,GAChD,IAAM+J,EAAcF,EAA2BC,GAE/C1f,KAAmBW,cAAc+e,GACjCnrB,cACAG,cACAghB,EAAQ1Y,KAAK4Y,GAAY+J,IAGdjlB,EAAuB,WAAe,IAAdD,EAAa,uDAAN,EACpC0lB,EAAK,IAAI/hB,KAEf,OADA+hB,EAAGC,QAAQD,EAAGE,UAAY5lB,GACnB0lB,GAIIG,EAAoC,SAACvuB,GAChD,QAAKA,IACoBwY,IAAOgW,YAAYC,gBAEnB/R,MAEvB,SAAC+R,GAAD,MACsB,MAApBA,GAA2BzuB,EAASktB,aAAeuB,MAI5CjJ,EACW,cAAtBzkB,SAASjG,UACa,cAAtBiG,SAASjG,WACTnD,EAEWwQ,EAAW,SAACC,GAA0B,IAC7CsmB,EAD6BC,EAAe,uDAAR,IAGlCC,EAAY,WAAc,IAAD,uBAATrmB,EAAS,yBAATA,EAAS,gBAC7BlT,aAAaq5B,GACbA,EAAgBl5B,YAAW,WACzB4S,EAAQ,WAAR,EAAYG,KACXomB,IAGL,OAAOC,I,gCC1WT,mHAEMC,EAAgB,IAFtB,OAE0BC,GAAS,CAAEC,aAAc,QAGtCp4B,EAAU,SAAC60B,EAAa91B,GAE/Bm5B,EAAcG,IAAIxD,EAAK91B,IAIhBQ,EAAU,SAAOs1B,GAK5B,IACE,OAAOqD,EAAcn3B,IAAI8zB,GACzB,MAAO/gB,GACP,IAAM/U,EAAQO,aAAaC,QAAQs1B,GAEnC,OADAqD,EAAcG,IAAIxD,EAAK91B,GAChBm5B,EAAcn3B,IAAI8zB,KAIhB10B,EAAa,SAAC00B,GACVqD,EAAcI,OAAOzD,K,gCC1BvB,I,EAAA,MAA0B,sCCA1B,MAA0B,sCCA1B,MAA0B,sCCA1B,MAA0B,oCCA1B,MAA0B,mCCA1B,MAA0B,qCCA1B,MAA0B,wCCA1B,MAA0B,8CCA1B,MAA0B,wCCYnC0D,EAAa,gBAEb1W,EAAS,CACb2W,MAAO,CACL7E,WAAY,CACV,CACEI,MAAO,KACP0E,YAAa,CACX,CACEC,OAAQ,CACN,CACE35B,MAAO,EACPe,KAAM,gBAER,KAEF64B,MAAO,CAAC,EAAG,KACXnN,MAAO,OACP1rB,KAAM,UACN84B,KAAM,WAER,CACEF,OAAQ,CACN,CACE35B,MAAO,IACPe,KAAM,gBAER,GAEF64B,MAAO,CAAC,EAAG,KACXnN,MAAO,OACP1rB,KAAM,UACN84B,KAAM,WAER,CACEF,OAAQ,CACN,CACE35B,MAAO,GACPe,KAAM,eAGV0rB,MAAO,WACP1rB,KAAM,WACN84B,KAAM,kBAIZ,CACE7E,MAAO,SACP2E,OAAQ,CACN,CACE35B,MAAO,GACPe,KAAM,sBAGV24B,YAAa,UACb34B,KAAM,UAER,CACEi0B,MAAO,KACP0E,YAAa,CACX,CACEjN,MAAO,OACPkN,OAAQ,CACN,CACE35B,MAAO,EACPe,KAAM,mBAGVA,KAAM,UACN84B,KAAM,WAER,CACEpN,MAAO,OACPkN,OAAQ,CACN,CACE35B,MAAO,EACPe,KAAM,mBAGVA,KAAM,UACN84B,KAAM,aAIZ,CACE7E,MAAO,YACP2E,OAAQ,CACN,CACE35B,MAAO,GACPe,KAAM,wBAER,IAEF24B,YAAa,UACb34B,KAAM,aAER,CACEi0B,MAAO,OACP0E,YAAa,CACX,CACEjN,MAAO,OACPkN,OAAQ,CACN,CACE35B,MAAO,GACPe,KAAM,gBAER,IAEF84B,KAAM,YACN94B,KAAM,aAER,CACE0rB,MAAO,OACPkN,OAAQ,CACN,CACE35B,MAAO,GACPe,KAAM,gBAER,IAEF84B,KAAM,YACN94B,KAAM,eAIZ,CACEi0B,MAAO,SACPj0B,KAAM,SACN44B,OAAQ,CACN,CACE35B,MAAO,GACPe,KAAM,sBAGV24B,YAAa,WAEf,CACE1E,MAAO,cACPj0B,KAAM,cACN44B,OAAQ,CACN,CACE35B,MAAO,IACPe,KAAM,gBAER,KAEF24B,YAAa,qBAEf,CACE1E,MAAO,KACPj0B,KAAM,KACN44B,OAAQ,CACN,CACE35B,MAAO,IACPe,KAAM,gBAER,KAEF24B,YAAa,MAEf,CACE1E,MAAO,KACPj0B,KAAM,KACN44B,OAAQ,CACN,CACE35B,MAAO,IACPe,KAAM,gBAER,MAEF24B,YAAa,QAInBI,QAAS,CACPlF,WAAY,CACV,CACEnI,MAAO,WACPzsB,MAAO,YACP+5B,QAAS,kBACTh5B,KAAM,iBACNi5B,aAAc,YAEhB,CACEvN,MAAO,SACPzsB,MAAO,cACP+5B,QAAS,UACTh5B,KAAM,yBACNi5B,aAAc,UAIpBvf,OAAQ,CACNma,WAAY,CACV,CACEnI,MAAO,MACP1rB,KAAM,4BACNf,MAAO,cACP+5B,QAAS,MACTC,aAAc,YAEhB,CACEvN,MAAO,MACP1rB,KAAM,4BACNf,MAAO,MACP+5B,QAAS,MACTC,aAAc,cAIpBC,MAAO,CACLC,IAAK,CACHC,aAAc,CACZ,oBACA,mBACA,mBACA,oBACA,sBAINC,KAAM,CACJC,SAAU,CACRC,OAAQ,CACN,CAAEnwB,GAAI,IAAK6qB,MAAO,UAAWh1B,MAAO,WACpC,CAAEmK,GAAI,IAAK6qB,MAAO,UAAWh1B,MAAO,WACpC,CAAEmK,GAAI,IAAK6qB,MAAO,YAAah1B,MAAO,aACtC,CAAEmK,GAAI,IAAK6qB,MAAO,SAAUh1B,MAAO,UACnC,CAAEmK,GAAI,IAAK6qB,MAAO,WAAYh1B,MAAO,YACrC,CAAEmK,GAAI,IAAK6qB,MAAO,2BAA4Bh1B,MAAO,YACrD,CAAEmK,GAAI,IAAK6qB,MAAO,KAAMh1B,MAAO,MAC/B,CAAEmK,GAAI,IAAK6qB,MAAO,SAAUh1B,MAAO,UACnC,CAAEmK,GAAI,IAAK6qB,MAAO,UAAWh1B,MAAO,WACpC,CAAEmK,GAAI,KAAM6qB,MAAO,gBAAiBh1B,MAAO,eAC3C,CAAEmK,GAAI,KAAM6qB,MAAO,0BAA2Bh1B,MAAO,iBACrD,CAAEmK,GAAI,KAAM6qB,MAAO,+BAAgCh1B,MAAO,SAC1D,CAAEmK,GAAI,KAAM6qB,MAAO,UAAWh1B,MAAO,WAGzCu6B,MAAO,CACLC,MAAO,CACL,mDACA,UACA,UACA,QACA,UACA,aACA,QACA,OACA,YAGJ7Y,QAAS,CACP8Y,KAAM,CACJ,CACEzF,MAAO,gBACPh1B,MAAO,iBAET,CACEg1B,MAAO,UACPh1B,MAAO,WAET,CACEg1B,MAAO,iBACPh1B,MAAO,kBAET,CACEg1B,MAAO,QACPh1B,MAAO,SAET,CACEg1B,MAAO,aACPh1B,MAAO,cAET,CACEg1B,MAAO,YACPh1B,MAAO,aAET,CACEg1B,MAAO,kBACPh1B,MAAO,mBAET,CACEg1B,MAAO,UACPh1B,MAAO,YAGX06B,UAAW,CACT,gBACA,oBACA,kBACA,gBAEFC,UAAW,CAAC,GAAI,cAAe,UAAW,gBAAiB,WAC3DC,YAAa,CAAC,GAAI,QAAS,SAAU,UAAW,WAAY,aAC5D5uB,gBAAiB,CACf,CACEgpB,MAAO,KACPh1B,MAAO,SAET,CACEg1B,MAAO,QACPh1B,MAAO,cAKf6zB,SAAU,CACR1I,IAAI,uCAAD,OAtTU,iBAuTb0P,cAAc,uCAAD,OAAyCrB,GACtDA,cAEFsB,qBAAsB,CACpB,CACEC,MAAOC,EACPzoB,KAAM,0DAER,CACEwoB,MAAOE,EACP1oB,KAAM,kDAER,CACEwoB,MAAOG,EACP3oB,KAAM,sDAGV4oB,oBAAqB,CACnB,CACE5oB,KAAM,8FAER,CACEA,KAAM,iDAER,CACEA,KAAM,wDAGV7J,MAAO,CACL0yB,SAAU,CACR,+CACA,uCACA,4BACA,wBAGJC,WAAY,CACVjB,KAAM,CACJkB,YAAa,CACX,CACEtG,MAAO,UACPh1B,MAAO,WAET,CACEg1B,MAAO,QACPh1B,MAAO,UAGXs6B,OAAQ,CACN,UACA,gBACA,KACA,SACA,SACA,yBAEFiB,UAAW,CACT,kDAAmD,KACnD,qDAAsD,KACtD,2BAA4B,KAC5B,0BAA2B,KAC3B,6BAA8B,QAIpCC,cAAe,CACbC,SAAU,CACR,yBACA,4CACA,6DACA,YAGJ3U,YAAa,CACXC,iBAAkB,CAChB,eACA,oBACA,gBACA,oBACA,SACA,mBACA,4BACA,cACA,iBACA,mBACA,0BACA,iCACA,8BACA,0BACA,+BACA,kBACA,yBACA,8BAGJ+R,YAAa,CACXC,gBAAe,iBACb92B,SADa,EACbA,IAAuDgV,MAAM,YADhD,QACwD,GACvEykB,gBAAiB,IAEnBC,UAAW,CACTC,mBAAoB,CAClB,CACEnP,MAAO,oBACPyJ,KAAM,iEACNjoB,IAAK4tB,GAEP,CACEpP,MAAO,0BACPyJ,KAAM,+EACNjoB,IAAK6tB,GAEP,CACErP,MAAO,oBACPyJ,KAAM,4CACNjoB,IAAK8tB,IAGTC,kBAAmB,CACjB,CACEj7B,KAAM,gBACNsK,SAAU,UACV4C,IAAKguB,EACLC,MACE,sGAEJ,CACEn7B,KAAM,gBACNsK,SAAU,iBACV4C,IAAKkuB,EACLD,MACE,oLAEJ,CACEn7B,KAAM,SACNsK,SAAU,iBACV4C,IAAKmuB,EACLF,MACE,yKAGNG,oBACE,8FAEJC,OAAQ,CACNC,WAAYt6B,2BACZu6B,SAAUv6B,aAEZwlB,cACE,2ZAGW3E,O,4FC1dR,IAOMtO,EAAY,CACvBgb,SAAU,CACRiN,OAAM,UAAEx6B,2CAAF,EAA4C,OAClDy6B,WAAU,UAAEz6B,uCAAF,EAAgD,OAC1DsV,UAAS,UAAEtV,uBAAF,EAA+C,OACxD06B,cAAa,UAAE16B,mCAAF,EAAmD,OAChE26B,kBAAiB,UACf36B,eADe,EACuC,OACxD46B,MAAK,UAAE56B,4CAAF,EAA2C,OAChD66B,cAAa,UAAE76B,gBAAF,EAAmD,QAElEwS,UAAW,CACTF,MAAK,UAAEtS,eAAF,EAAkC,GACvC+T,UAAS,UAAE/T,oBAAF,EAAuC,GAChDsU,YAAW,UAAEtU,wCAAF,EAAyC,IAEtDoV,UAAW,CACTE,UAAS,UAAEtV,gBAAF,EAAgD,GACzDuV,OAAM,OAAEvV,YAA0C,GAClD8pB,oBAAoB9pB,K,gCC1BxB,gNAAM86B,EAAiC,oBACjCC,EAAiC,WAE1BC,EAAsB,WAGjC,OADE58B,KAAKC,MAAMC,aAAaC,QAAQu8B,KAAoC,IAI3DG,EAAsB,SAAC98B,GAClCG,aAAaU,QAAQ87B,EAAgC18B,KAAKa,UAAUd,KASzDuJ,EAAyB,WACpCpJ,aAAaa,WAAW27B,IAGbjO,EAAgB,WAE3B,MAAiB,SADHvuB,aAAaC,QAAQw8B,IAIxBlyB,EAAgB,WAC3BvK,aAAaU,QAAQ+7B,EAAgC,SAG1CtzB,EAAmB,WAC9BnJ,aAAaa,WAAW47B,K,0ICtBtBG,E,mFAHEC,EAAiB5oB,IAAUgb,SACpBA,EAAW6N,IAASC,cAAcF,GAG3CG,gBACFJ,EAAYK,YAAahO,IAGpB,IAAMjmB,EAAgB,uCAAG,WAAO3G,GAAP,eAAAnB,EAAA,+EAEDg8B,YAASN,EAAW,CAC7CO,SAAUz7B,4FAHgB,YAEtB07B,EAFsB,yCAMpBh7B,YAAYC,EAAS+6B,GAND,iCAOnB,GAPmB,eAS1B1X,QAAQ4M,IAAR,8BAAmC8K,IATT,mBAUnB,GAVmB,iEAa5B1X,QAAQ4M,IAAR,qCAb4B,mBAcrB,GAdqB,0DAAH,sDAkBhB+K,EAAoB,kBAC/B,IAAIhZ,SAAQ,SAACiZ,GACXV,EAAUW,WAAU,SAACr6B,GACnBsY,cACA8hB,EAAQp6B,W,0LC/BD8D,EAA4B,CACvCw2B,yBAAyB,EACzBC,yBAAyB,EACzBC,wBAAwB,EACxBC,aAAa,EACbC,oBAAoB,EACpBC,cAAc,EACdC,iBAAiB,EACjBC,mBAAmB,EACnBC,kBAAkB,EAClBC,kBAAkB,EAClBC,kBAAkB,EAClBC,2BAA2B,EAC3BC,sBAAsB,EACtBC,0BAA0B,EAC1BC,6BAA6B,EAC7BC,gBAAgB,EAChBC,mBAAmB,EACnBC,qBAAqB,EACrBC,gCAAgC,EAChCC,sBAAsB,EACtBC,2BAA2B,EAC3B5Q,kBAAkB,EAClB6Q,qBAAqB,EACrBC,yBAAyB,EACzBC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,wCAAwC,EACxCC,8BAA8B,EAC9BC,gCAAgC,EAChCC,uBAAuB,EACvBC,iCAAiC,EACjCpR,6BAA6B,EAC7BqR,kBAAkB,EAClBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,wBAAwB,EACxBC,sBAAsB,EACtBC,yBAAyB,EACzBC,sCAAsC,EACtCC,uBAAuB,EACvBC,uCAAuC,EACvC5R,6BAA6B,EAC7B6R,wBAAwB,EACxBC,kCAAkC,EAClCC,iBAAiB,EACjBC,2BAA2B,EAC3BC,kCAAkC,EAClCp5B,uBACErF,EACF0+B,0BAA0B,EAC1BjS,uBAAuB,EACvBkS,eAAgB,IAChBC,sBAAuB,OACvBC,yBAAyB,EACzBC,+BAA+B,EAC/BC,wBAAwB,EACxBC,2BAA2B,EAE3BC,iCAAiC,EACjCC,gCAAgC,GAGrB/8B,EAAe,WAC1B,IACE,OAAOg9B,YAAgB5R,KACvB,MAAO7K,GAIP,MAHIA,EAAI/iB,WACN+iB,EAAIpmB,QAAJ,kCAAyComB,EAAI/iB,SAASC,SAElD8iB,IAIGpgB,EAAU,uCAAG,4CAAA9C,EAAA,6DACpB+C,EAAW,GADS,kBAGhB68B,YAAiBj9B,KAHD,OAYtB,IARMk9B,EAAcC,YAAOn9B,KAErBo9B,EAAsB,CAC1B,uBACA,kCAEIC,EAAsB,CAAC,iBAAkB,yBAE/C,MAA4B1vB,OAAOyhB,QAAQ8N,GAA3C,eAA0D,EAAD,oBAA7CxL,EAA6C,KAAxChT,EAAwC,KACnD0e,EAAoB7W,SAASmL,GAC/BtxB,EAASsxB,GAAOhT,EAAO4e,OAASrhC,KAAKC,MAAMwiB,EAAO4e,QAAU,GACnDD,EAAoB9W,SAASmL,GACtCtxB,EAASsxB,GAAOhT,EAAO4e,OAEvBl9B,EAASsxB,GAA6B,SAAtBhT,EAAO6e,WAlBL,yBAqBfn9B,GArBe,wCAuBlB,KAAM5C,WACR,KAAMrD,QAAN,mCAA4C,KAAMqD,SAASC,SAxBvC,+DAAH,sD,mVCzEjB+/B,EAAuB,CAC3BC,QAHgC5/B,wDAIhCwiB,WAAY,SAAC7e,EAASqD,GACpB,IAAMmlB,EAAgBC,cAEtBzoB,EAAO,cAAP,iBACEwoB,GAAgCnlB,GAElCrD,EAAQ,eAAiBwoB,EAAgB,oBAAsB,UAItD0T,EAAiBhgC,IAAoB8/B,GAE5CG,EAAoB,CACxBtd,WAAY,SAAC7e,EAASqD,GACpBrD,EAAO,cAAP,iBAAqCqD,KAI5B3H,EAAoBQ,IAC/BA,IAAgC,GAAKigC,GAG1BC,EAA4BlgC,IACvCA,IAAgC,GAAKigC,GAG1BE,EAAuB5gC,IAAMgjB,OAAO,CAC/Cwd,QAAS5/B,oCACT2D,QAAS,CACP,cAAe,QACf,mBAAoB0e,EAAY5O,WAIvBlQ,EAAwB,SAAC08B,EAAQhd,EAAUtf,EAASnC,GAC/D,IAAIqf,EAAS,CACXof,SACA/W,IAAI,GAAD,OAAKlpB,qCAAL,OAAyCijB,GAC5Ctf,UACAM,gBAAiBpE,KAGnB,OADI2B,GAASsO,OAAOowB,OAAOrf,EAAQ,CAAEnhB,KAAM8B,IACpCpC,IAAMyhB,IAGFvhB,EAAO,uCAAG,WAAOC,GAAP,iBAAAC,EAAA,+EAEDD,IAFC,cAEbE,EAFa,gCAGZA,QAHY,IAGZA,GAHY,UAGZA,EAAKC,YAHO,aAGZ,EAAWA,MAHC,sCAKf,KAAIC,WACN,KAAIrD,QAAJ,qBAA4B,KAAIqD,SAASC,QACb,MAAxB,KAAID,SAASC,QACfC,OARe,8DAAH,sDAcPsgC,EAAe,uCAAG,WAAO5gC,GAAP,eAAAC,EAAA,+EAETD,IAFS,cAErBE,EAFqB,gCAGpBA,QAHoB,IAGpBA,OAHoB,EAGpBA,EAAKC,MAHe,sCAKvB,KAAIC,WACN,KAAIrD,QAAJ,qBAA4B,KAAIqD,SAASC,QACb,MAAxB,KAAID,SAASC,QACfC,OARuB,8DAAH,uD,gCCrE5B,oJACMugC,EAA0B,cAEnBv6B,EAAgB,WAM3B,YAJuC+d,IAArCrlB,YAAQ6hC,IAC6B,KAArC7hC,YAAQ6hC,GACJhiC,KAAKC,MAAME,YAAQ6hC,IACnB,IAIK52B,EAAgB,SAACrL,GAC5Ba,YAAQohC,EAAyBhiC,KAAKa,UAAUd,KASrCqlB,EAAmB,WAC9BrkB,YAAWihC,IAGA16B,EAAoB,WAC/B,IAAMvH,EAAQ0H,IACd,MAAiB,KAAV1H,EAAe,mBAAf,OAAoCA,QAApC,IAAoCA,OAApC,EAAoCA,EAAOW,O,gCC5BpD,oEAAO,IAAMw8B,EAA8B,WACzC,MAAO,kBAAmBtN,WAAa,gBAAiBpwB,QAG7CyJ,EAA4B,WACvC,GAAIi0B,IAEF,OADY+E,aAAaC,YAEvB,IAAK,UACH,MAAO,UACT,IAAK,SACH,MAAO,SACT,QACE,MAAO,a,gCCbf,gWAEa94B,EAAiB,SAACd,EAAU65B,EAASC,GAChD5qB,YAAW,QAAS,CAClBlP,WACA/F,QAAS4/B,EACTE,UAAWD,IAEbpqB,YAAcmqB,IAGH53B,EAAc,SAACf,EAAa2xB,GACvC3jB,YAAW,qBAAsB,CAC/B8qB,WAAY94B,EACZ2xB,kBAEFnjB,YAAcxO,IAGHE,EAAsB,SAACy4B,EAASC,GAC3C5qB,YAAW,UAAW,CACpBjV,QAAS4/B,EACTE,UAAWD,IAEbpqB,YAAcmqB,IAGHv4B,EAAkB,SAACu4B,EAASC,GACvC5qB,YAAW,cAAe,CACxBjV,QAAS4/B,EACTE,UAAWD,IAEbpqB,YAAcmqB,IAGHr2B,EAAuB,SAACq2B,EAASC,EAAW53B,GACvDgN,YAAW,oBAAqB,CAC9BjV,QAAS4/B,EACTE,UAAWD,EACX53B,UAEFwN,YAAcmqB,IAGHI,EAAoB,SAAC/3B,EAAOg4B,GACvChrB,YAAW,gBAAiB,CAC1BhN,MAAM,KAAD,OAAOA,GACZg4B,WAISC,EAAgB,SAACj4B,GAC5BgN,YAAW,YAAa,CACtBhN,MAAM,KAAD,OAAOA,MAIHk4B,EAAiB,SAACl4B,EAAOg4B,GACpChrB,YAAW,WAAY,CACrBhN,MAAM,KAAD,OAAOA,GACZg4B,WAISG,EAAsB,SAACn4B,GAClCgN,YAAW,cAAe,CACxBhN,WAISo4B,EAAuB,CAClCC,uBAAwB,WACtBrrB,YAAW,4BAEbsrB,oBAAqB,WACnBtrB,YAAW,yBAEburB,iBAAkB,WAChBvrB,YAAW,qBAEbwrB,gBAAiB,SAACrjC,GAChB6X,YAAW,cAAe,CACxByrB,IAAKtjC,O,6TClFI,MAA0B,0C,gBCQnCujC,EAAuB1a,gBAAK,kBAChC,oCAEI2a,EAAuB3a,gBAAK,kBAChC,oCAEI4a,EAAiB5a,gBAAK,kBAC1B,oCAGI6a,EAAmB7a,gBAAK,kBAC5B,oCAGW8a,EAAc,CACzB,CACEx5B,GAAI,mBACJsiB,MAAO,gBACPpe,UAAW,OACXshB,KAAM,kBACNje,KACE,qBAAK3C,IAAK60B,IAAYn1B,MAAM,KAAKwF,IAAI,gBAAgBC,QAAQ,SAE/D2vB,aAAc,cAACJ,EAAD,KAEhB,CACEt5B,GAAI,mBACJsiB,MAAO,gBACPkD,KAAM,eACNthB,UAAW,OACXqD,KAAM,qBAAK3C,IAAK+0B,IAAUr1B,MAAM,KAAKwF,IAAI,gBAAgBC,QAAQ,SACjE2vB,aAAc,MAEhB,CACE15B,GAAI,oBACJsiB,MAAO,aACPkD,KAAM,mBACNthB,UAAW,OACXqD,KACE,qBACE3C,IAAKg1B,IACLt1B,MAAM,KACNwF,IAAI,sBACJC,QAAQ,SAGZ2vB,aAAc,cAACH,EAAD,KAEhB,CACEv5B,GAAI,yBACJsiB,MAAO,mBACPkD,KAAM,0BACNthB,UAAW,OACXqD,KACE,qBAAK3C,IAAKi1B,IAAUv1B,MAAM,KAAKwF,IAAI,mBAAmBC,QAAQ,SAEhE2vB,aAAc,cAACN,EAAD,KAEhB,CACEp5B,GAAI,8BACJsiB,MAAO,aACP/a,KACE,qBAAK3C,IAAKk1B,IAAgBx1B,MAAM,KAAKwF,IAAI,gBAAgBC,QAAQ,SAEnEyb,KAAM,0BACNkU,aAAc,MAEhB,CACE15B,GAAI,yBACJsiB,MAAO,iBACPkD,KAAM,0BACNthB,UAAW,OACXqD,KACE,qBAAK3C,IAAKm1B,EAAcz1B,MAAM,KAAKwF,IAAI,iBAAiBC,QAAQ,SAElE2vB,aAAc,cAACL,EAAD,MAYLrL,EAAmB,mBACnBC,EAAsB,sBACtBC,EAAgB,gBAChBC,EAAsB,sBACtBC,EAAgB,gBAEhBC,EAAwB,e,8CC/E/BrkB,E,MAAaT,EAAOC,IAAV,wdAEZ,SAACzC,GAAD,OAAWA,EAAM7B,OAAN,mBAA2B6B,EAAM7B,OAAS,eAA1C,QACA,SAAC6B,GAAD,MAA6B,YAAlBA,EAAMU,SAAyB,SAC1C,SAACV,GAAD,MAA6B,UAAlBA,EAAMU,SAAuB,UACxC,SAACV,GAAD,MAA6B,QAAlBA,EAAMU,SAAqB,UACtC,SAACV,GAAD,MAA6B,QAAlBA,EAAMU,SAAqB,UACtC,SAACV,GAAD,MAA6B,QAAlBA,EAAMU,SAAqB,UACtC,SAACV,GAAD,MAA6B,QAAlBA,EAAMU,SAAqB,UACtC,SAACV,GAAD,MAA6B,QAAlBA,EAAMU,SAAqB,UACpC,SAACV,GAAD,OAAWA,EAAMyX,UACvB,SAACzX,GAAD,MAA2B,SAAhBA,EAAM9B,OAAoB,aACrC,SAAC8B,GAAD,MAA2B,UAAhBA,EAAM9B,OAAqB,aACtC,SAAC8B,GAAD,MAA2B,UAAhBA,EAAM9B,OAAqB,aACtC,SAAC8B,GAAD,MAA2B,WAAhBA,EAAM9B,OAAsB,aACvC,SAAC8B,GAAD,MAA2B,WAAhBA,EAAM9B,OAAsB,aACvC,SAAC8B,GAAD,MAA2B,QAAhBA,EAAM9B,OAAmB,aACpC,SAAC8B,GAAD,MAA2B,UAAhBA,EAAM9B,OAAqB,aACtC,SAAC8B,GAAD,MAA2B,cAAhBA,EAAM9B,OAAyB,aAC1C,SAAC8B,GAAD,MAA2B,cAAhBA,EAAM9B,OAAyB,aAC1C,SAAC8B,GAAD,MAA2B,cAAhBA,EAAM9B,OAAyB,aAC1C,SAAC8B,GAAD,MAA2B,gBAAhBA,EAAM9B,OAA2B,aAC5C,SAAC8B,GAAD,MAA2B,gBAAhBA,EAAM9B,OAA2B,aACtC,SAAC8B,GAAD,MAA4B,QAAjBA,EAAMsP,QAAoB,UACrC,SAACtP,GAAD,MAA4B,QAAjBA,EAAMsP,QAAoB,UACrC,SAACtP,GAAD,MAA4B,QAAjBA,EAAMsP,QAAoB,UAIvCrM,O,gCCnDf,sGAAO,IAAMgwB,EAAqB,oBAE3B,SAASC,EAAiBn7B,GAC/BrE,eAAe3D,QAAQkjC,EAAoBl7B,GAGtC,SAASolB,IACd,OAAOzpB,eAAepE,QAAQ2jC,GAGzB,SAAS3e,IACd,OAAO5gB,eAAexD,WAAW+iC,M","file":"static/js/main.158b21e9.chunk.js","sourcesContent":["export * from './cookies';\nexport * from './date';\nexport * from './debounce';\nexport * from './operation';\nexport * from './transform';\n","import { useState, createContext, FC, ReactNode, useCallback } from 'react';\nimport { node } from 'prop-types';\n\ninterface SnackbarProviderProps {\n children: ReactNode;\n}\n\ninterface SnackbarContext {\n isDisplayed: boolean;\n message: string;\n isHideConfirmButton: boolean;\n onDisplay(message?: string, isConfirmAble?: boolean): void;\n onClose(): void;\n onConfirm(): void;\n confirmStateClicked: number;\n}\n\nexport const defaultValuesSnackbarContext = {\n message: '',\n isDisplayed: false,\n isHideConfirmButton: true,\n onDisplay: () => {},\n onClose: () => {},\n onConfirm: () => {},\n confirmStateClicked: 0\n};\n\nexport const SnackbarContext = createContext(\n defaultValuesSnackbarContext\n);\n\nexport const SnackbarProvider: FC = ({ children }) => {\n const [message, setMessage] = useState('');\n const [isDisplayed, setIsDisplayed] = useState(false);\n const [isHideConfirmButton, setHideConfirmButton] = useState(true);\n const [windowTimeout, setWindowTimeout] = useState(0);\n const [confirmStateClicked, setConfirmStateClicked] = useState(0);\n\n const handleClose = useCallback(() => {\n setIsDisplayed(false);\n setHideConfirmButton(true);\n\n clearTimeout(windowTimeout);\n }, [windowTimeout]);\n\n const handleDisplay = useCallback(\n (message: string, isHideConfirmButton = true) => {\n setMessage(message);\n setIsDisplayed(true);\n setHideConfirmButton(isHideConfirmButton);\n\n if (isHideConfirmButton) {\n setWindowTimeout(\n window.setTimeout(() => {\n handleClose();\n }, 2000)\n );\n }\n },\n [handleClose]\n );\n\n function handleConfirm(): void {\n handleClose();\n setConfirmStateClicked((prevState) => prevState + 1);\n }\n\n return (\n \n {children}\n \n );\n};\n\nSnackbarProvider.propTypes = {\n children: node.isRequired\n};\n","const LOCATION_STATE_STORAGE_KEY = 'location-state';\n\nexport const getLocationState = () => {\n let state =\n JSON.parse(localStorage.getItem(LOCATION_STATE_STORAGE_KEY)) || '';\n\n if (state !== '') {\n const defaultAddress = `${state?.province_name}, ${state?.city_name}, ${state?.district_name}, ${state?.subdistrict_name}`;\n state.isRequiredAddressDetail =\n state?.name === defaultAddress || state?.name === '';\n }\n\n return state;\n};\n\nexport const setLocationState = (state) => {\n localStorage.setItem(LOCATION_STATE_STORAGE_KEY, JSON.stringify(state));\n};\n\nexport const editLocationState = (key, value) => {\n const state = getLocationState();\n state[key] = value;\n setLocationState(state);\n};\n\nexport const deleteLocationState = () => {\n localStorage.removeItem(LOCATION_STATE_STORAGE_KEY);\n};\n","import * as efiauth from 'libs/efiauth';\nimport { instanceWithToken } from '@auth/api/skeleton';\n\nconst axios = instanceWithToken;\n\nconst request = async (requester) => {\n try {\n const res = await requester();\n return res.data.data;\n } catch (err) {\n if (err.response) {\n err.message = `Error HTTP ${err.response.status}`;\n if (err.response.status === 401) {\n efiauth.doLogout();\n }\n }\n throw err;\n }\n};\n\nexport const fetchLeadProfile = async () => {\n return request(() => axios.get(`${process.env.REACT_APP_BACKEND_URL}/leads`));\n};\n\nexport const fetchSummary = async () => {\n return request(() => axios(`${process.env.REACT_APP_BACKEND_URL}/summary`));\n};\n\nexport const fetchBlockList = async () => {\n return request(() =>\n axios(`${process.env.REACT_APP_BACKEND_URL}/summary/block`)\n );\n};\n\nexport const fetchAllBlock = async (params) => {\n return request(() =>\n axios(`${process.env.REACT_APP_BACKEND_URL}/summary/blocks`, {\n ...(params && { params })\n })\n );\n};\n\nexport const fetchAllPonds = async (blockName) => {\n return request(() =>\n axios(`${process.env.REACT_APP_BACKEND_URL}/summary/block/${blockName}`)\n );\n};\n\nexport const fetchPonds = async (pondName) => {\n return request(() =>\n axios(`${process.env.REACT_APP_BACKEND_URL}/summary/pond/${pondName}`)\n );\n};\n\nexport const fetchCycle = async (cycleId) => {\n return request(() =>\n axios(`${process.env.REACT_APP_BACKEND_URL}/cycles/${cycleId}`)\n );\n};\n\nexport const postDevices = async (lead_id, device_token) => {\n return request(() =>\n axios.post(`${process.env.REACT_APP_BACKEND_URL}/leads/devices`, {\n lead_id,\n device_token\n })\n );\n};\n\nexport const patchSwitchInternalMode = async () => {\n return request(() =>\n axios.patch(`${process.env.REACT_APP_BACKEND_URL}/fbd/internal-mode`)\n );\n};\n","const SHRIMP_HARVEST_FORM_STORAGE_KEY = 'shrimp-harvest-state';\n\nexport const storeStateBenefitShrimp = (state) => {\n localStorage.setItem('efarm@modal-shrimp-harvest-benefit', state);\n};\n\nexport const getStateBenefitShrimp = () => {\n let state = localStorage.getItem('efarm@modal-shrimp-harvest-benefit');\n if (state) {\n return false;\n }\n return true;\n};\n\nexport const deleteStateBenefitShrimp = () => {\n localStorage.removeItem('efarm@modal-shrimp-harvest-benefit');\n};\n\nexport const storeFormShrimpState = (state) => {\n localStorage.setItem(SHRIMP_HARVEST_FORM_STORAGE_KEY, JSON.stringify(state));\n};\n\nexport const getFormShrimpState = () => {\n const state =\n JSON.parse(localStorage.getItem(SHRIMP_HARVEST_FORM_STORAGE_KEY)) || '';\n return state;\n};\n\nexport const deleteFormShrimpState = () => {\n localStorage.removeItem(SHRIMP_HARVEST_FORM_STORAGE_KEY);\n};\n\nexport const persistHistoryState = (data) => {\n let payload = JSON.stringify(data);\n localStorage.setItem('efarm@store-persisted-history', payload);\n};\n\nexport const getPersistedHistory = () => {\n const state =\n JSON.parse(localStorage.getItem('efarm@store-persisted-history')) || [];\n return state;\n};\n\nexport const deletePersistedHistory = () => {\n localStorage.removeItem('efarm@store-persisted-history');\n};\n\nexport const persistHistoryDetailState = (data) => {\n let payload = JSON.stringify(data);\n localStorage.setItem('efarm@store-persisted-history-detail', payload);\n};\n\nexport const deletePersistedHistoryDetail = () => {\n localStorage.removeItem('efarm@store-persisted-history-detail');\n};\n","import { useCallback, createContext, useState, useEffect } from 'react';\nimport { remoteConfig, fetchFlags } from 'libs/flags';\n\nexport const FlagsContext = createContext();\n// it can cause error indexedDB is not defined in the unit test, so add async await to the function\n// WIP fix unit test, revert the remote config line\n\nconst FlagsProvider = ({ defaults, children }) => {\n const [flags, setFlags] = useState(defaults);\n\n // Get all remote flags\n useEffect(() => {\n remoteConfig().defaultConfig = defaults;\n }, [defaults]);\n\n if (process.env.NODE_ENV === 'development') {\n remoteConfig().settings = {\n minimumFetchIntervalMillis: 3600000\n };\n }\n\n // Get all remote flags\n const handleRemoteConfig = useCallback(async () => {\n const newFlags = await fetchFlags();\n setFlags((currentFlags) => ({ ...currentFlags, ...newFlags }));\n }, [remoteConfig]);\n\n useEffect(() => {\n handleRemoteConfig();\n }, [handleRemoteConfig]);\n\n return (\n {children}\n );\n};\n\nexport default FlagsProvider;\n","const KEY_IS_TWA = 'trustedWebActivity';\n\nexport const getTwaStatus = () => {\n return sessionStorage.getItem(KEY_IS_TWA);\n};\n\nexport const storeTwaStatus = (value) => {\n return sessionStorage.setItem(KEY_IS_TWA, value);\n};\n","import { getTwaStatus, storeTwaStatus } from 'store/sessionTwa';\nconst TWA_PROTOCOL = 'android-app:';\nconst packageName = process.env.REACT_APP_APPLICATION_ID;\n\n/**\n * This method should run on every page load. `packageName` corresponds to the ID\n * of the app on the Play Store. This is important to differentiate from the page\n * being opened from a Custom Tab, for instance.\n */\nexport const isTrustedWebActivity = () => {\n const sessionStorageStatus = getTwaStatus();\n // alert(sessionStorageStatus);\n if (sessionStorageStatus === 'true') {\n return true;\n }\n\n const referrer = document.referrer.trim();\n if (referrer.length === 0) {\n return false;\n }\n\n const referrerUrl = new URL(referrer);\n // alert(referrerUrl.protocol);\n if (\n referrerUrl.protocol === TWA_PROTOCOL &&\n referrerUrl.hostname === packageName\n ) {\n storeTwaStatus('true');\n return true;\n }\n\n return false;\n};\n","import * as api from './skeleton';\n\nconst instance = api.instanceWithoutToken;\nconst request = api.request;\nconst instanceToken = api.instanceWithToken;\nconst instanceCustomHeaders = api.instanceCustomHeaders;\nconst baseUrl = process.env.REACT_APP_BACKEND_URL;\n\nexport const signin = (tempToken) => {\n const headers = {\n Authorization: `Bearer ${tempToken}`\n };\n return request(() => instanceCustomHeaders('post', '/users/signin', headers));\n};\n\nexport const completeSignup = (payload) => {\n return request(() =>\n instanceToken.post(`${baseUrl}/users/complete-signup`, payload)\n );\n};\n\nexport const editProfile = (payload) => {\n return request(() => instanceToken.put(`${baseUrl}/users/update`, payload));\n};\n\nexport const signup = (payload) => {\n return request(() =>\n instance.post('/users/signup', payload, { withCredentials: true })\n );\n};\n","import axios from 'axios';\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport { createContainer } from 'unstated-next';\nimport {\n trackUserLogin,\n trackSignUp,\n trackCompleteSignUp,\n trackUpdateData,\n trackAlreadyLoggedIn\n} from '@auth/tracking';\nimport * as efiauth from 'libs/efiauth';\nimport { fetchLeadProfile } from 'api/backend';\nimport { signup, completeSignup, editProfile, signin } from '@auth/api/users';\nimport {\n loadPersistedName,\n storePersistedName,\n removePersistedTokens,\n loadPersistedTokens\n} from 'store/auth';\nimport {\n deleteDummyState,\n deleteAcquisitionState,\n setDummyState\n} from 'store/acquisition';\nimport { getLeadsState, setLeadsState } from 'store/leads';\nimport { setLocationState } from 'store/location';\nimport {\n clevertapEventUserLogin,\n clevertapEventUpdateProfile\n} from 'libs/analytics';\nimport { defaultValuesFlagsContext } from 'libs/flags';\nimport { getQueryParams } from 'libs/helpers';\nimport { useCookies } from 'react-cookie';\nimport { isNotifBlocked, isSubscribeCT } from 'utils';\nimport { getFirebaseToken } from 'libs/firebase';\nimport { isPushNotificationEnabled } from 'libs/notification';\n\nconst useAuth = (initialState = null) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const [error, setError] = useState(null);\n const [tempIsLogged, setTempIsLogged] = useState(false);\n const [user, setUser] = useState(initialState);\n const [greetingPopup, setGreetingPopup] = useState(false);\n\n const [, , removeCookie] = useCookies([isNotifBlocked, isSubscribeCT]);\n\n const [isFetchLeadLoading, setIsFetchLeadLoading] = useState(false);\n\n const { isRefreshTokenEnabled } = defaultValuesFlagsContext;\n\n const isLoggedIn = efiauth.isLoggedIn || tempIsLogged;\n\n const setNameFromStorage = () => {\n const persistedName = loadPersistedName();\n if (persistedName) {\n setUser({\n ...user,\n name: persistedName\n });\n }\n };\n\n const setLeadsFromStorage = () => {\n const leadState = getLeadsState();\n if (leadState) {\n setUser({\n ...user,\n ...leadState\n });\n }\n };\n\n useEffect(() => {\n (async () => {\n const query = getQueryParams();\n try {\n if (query?.tokenExp || query?.refreshExp) {\n efiauth.setTokenExpiryTime(query.tokenExp, query.refreshExp);\n setTempIsLogged(true);\n }\n if (isRefreshTokenEnabled) {\n removePersistedTokens();\n } else {\n const tokens = loadPersistedTokens();\n if (!tokens) {\n throw new efiauth.InvalidTokenError('not logged in');\n }\n\n efiauth.setAccessToken(tokens.access_token);\n efiauth.setRefreshToken(tokens.refresh_token);\n }\n if (isLoggedIn) {\n const newUser = await fetchUserProfile();\n setUser(newUser);\n setIsInitialized(true);\n }\n } catch (err) {\n if (err instanceof efiauth.InvalidTokenError) {\n // not an error, it means user is not logged in\n } else {\n setError(err);\n }\n } finally {\n setNameFromStorage();\n setLeadsFromStorage();\n }\n })();\n }, [isLoggedIn]);\n\n const login = async (username, password) => {\n // WIP Refactor remove this after BE proxy\n let accessToken;\n let accessTokenExpiryTime;\n let refreshTokenExpiryTime;\n const authServiceUrl = process.env.REACT_APP_BACKEND_URL;\n try {\n const getTempToken = await axios.post(`${authServiceUrl}/app/login`, {\n username,\n password\n });\n const tempToken = getTempToken.data.data.app_token;\n const signinResponse = await signin(tempToken);\n accessToken = signinResponse.token;\n accessTokenExpiryTime = signinResponse.token_expired;\n refreshTokenExpiryTime = signinResponse.refresh_expired;\n } catch (err) {\n if (err?.response?.data?.message) {\n err.message = `${err?.response?.data?.message} (${err.message})`;\n }\n throw err;\n }\n efiauth.setTokens(accessToken, 'disabled');\n efiauth.setTokenExpiryTime(accessTokenExpiryTime, refreshTokenExpiryTime);\n const newUser = await fetchUserProfile();\n if (isPushNotificationEnabled() === 'granted') {\n getFirebaseToken(newUser.lead_id);\n }\n storePersistedName(newUser.name);\n trackUserLogin(username, newUser.lead_id, newUser.name);\n setUser(newUser);\n // delete acquisiton related state\n deleteDummyState();\n deleteAcquisitionState();\n };\n\n const loginByPhone = async (\n accessToken,\n phoneNumber,\n accessTokenExpiryTime,\n refreshTokenExpiryTime\n ) => {\n efiauth.setTokens(accessToken, 'disabled');\n efiauth.setTokenExpiryTime(accessTokenExpiryTime, refreshTokenExpiryTime);\n\n const newUser = await fetchUserProfile();\n if (isPushNotificationEnabled() === 'granted') {\n getFirebaseToken(newUser.lead_id);\n }\n\n storePersistedName(newUser.name);\n trackUserLogin(phoneNumber, newUser.lead_id, newUser.name);\n setUser(newUser);\n };\n\n const acquireUser = async (payload) => {\n let accessToken;\n try {\n const res = await completeSignup(payload);\n accessToken = res.token;\n // WIP REFACTOR handle non farmers analytics user props\n } catch (err) {\n if (err?.response?.data?.message) {\n err.message = `${err?.response?.data?.message} (${err.message})`;\n }\n throw err;\n }\n efiauth.setTokens(accessToken, 'disabled');\n const newUser = await fetchUserProfile();\n if (isPushNotificationEnabled() === 'granted') {\n getFirebaseToken(newUser.lead_id);\n }\n storePersistedName(newUser.name);\n setUser(newUser);\n trackCompleteSignUp(newUser?.lead_id, newUser?.name);\n };\n\n const editUser = async (payload) => {\n let accessToken;\n try {\n const res = await editProfile(payload);\n accessToken = res.token;\n // WIP REFACTOR handle non farmers analytics user props\n trackUpdateData(res?.leads?.id, res?.leads?.name);\n clevertapEventUpdateProfile({\n name: payload?.name || '',\n position: payload?.position || '',\n province: payload?.locations.province_name || '',\n city: payload?.locations.city_name || '',\n district: payload?.locations.district_name || '',\n subDistrict: payload?.locations.subdistrict_name || ''\n });\n } catch (err) {\n if (err?.response?.data?.message) {\n err.message = `${err?.response?.data?.message} (${err.message})`;\n }\n throw err;\n }\n efiauth.setTokens(accessToken, 'disabled');\n const newUser = await fetchUserProfile();\n storePersistedName(newUser.name);\n setUser(newUser);\n };\n\n const signUp = async (payload) => {\n let accessToken;\n let accessTokenExpiryTime;\n let refreshTokenExpiryTime;\n try {\n const res = await signup(payload);\n accessToken = res.token;\n accessTokenExpiryTime = res.token_expired;\n refreshTokenExpiryTime = res.refresh_expired;\n trackSignUp(payload.phone, payload);\n } catch (err) {\n if (err?.response?.data?.message) {\n err.message = `${err?.response?.data?.message} (${err.message})`;\n }\n throw err;\n }\n efiauth.setTokens(accessToken, 'disabled');\n efiauth.setTokenExpiryTime(accessTokenExpiryTime, refreshTokenExpiryTime);\n const newUser = await fetchUserProfile();\n if (isPushNotificationEnabled() === 'granted') {\n getFirebaseToken(newUser.lead_id);\n }\n setDummyState();\n storePersistedName('Hai, Pembudidaya!');\n setUser(newUser);\n };\n\n const logout = () => {\n efiauth.doLogout();\n removeCookie(isNotifBlocked);\n removeCookie(isSubscribeCT);\n setUser(null);\n };\n\n // WIP REFACTOR to flag from BE\n const isFarmer = user?.is_farmer;\n const isFarmerRegistered = user?.name !== null;\n\n const isGuestMode = useMemo(() => {\n return !isFetchLeadLoading && !user;\n }, [user, isFetchLeadLoading]);\n\n const fetchUserProfile = async () => {\n setIsFetchLeadLoading(true);\n try {\n const leads = await fetchLeadProfile();\n const location = leads.location;\n const leadId = leads?.lead_id;\n const leadName = leads?.name;\n const leadPhone = leads?.phone;\n setLeadsState(leads);\n clevertapEventUserLogin({\n identity: leads.uuid || '',\n name: leads.name || '',\n phone: leads.phone || '',\n email: leads.email || '',\n verified: leads.is_verified,\n position: leads.position || '',\n province: leads.location.province_name || '',\n city: leads.location.city_name || '',\n district: leads.location.district_name || '',\n subDistrict: leads.location.subdistrict_name || '',\n cultivationType: leads.farm || ''\n });\n setLocationState({\n ...location,\n name: leads.address\n });\n if (leadId) trackAlreadyLoggedIn(leadId, leadName, leadPhone);\n return leads;\n } catch (err) {\n if (err?.response?.data?.message) {\n err.message = `${err?.response?.data?.message}`;\n }\n throw err;\n } finally {\n setIsFetchLeadLoading(false);\n }\n };\n\n const isUserInternal = !!user?.fbd;\n const isInternalMode = user?.fbd?.is_internal_mode;\n\n const setInternalModeUser = useCallback(\n (is_internal_mode) => {\n setUser({\n ...user,\n fbd: {\n ...user.fbd,\n is_internal_mode\n }\n });\n },\n [user]\n );\n\n return {\n isFetchLeadLoading,\n isInitialized,\n error,\n user,\n login,\n logout,\n loginByPhone,\n isLoggedIn,\n acquireUser,\n editUser,\n signUp,\n isFarmer,\n isFarmerRegistered,\n isGuestMode,\n isUserInternal,\n isInternalMode,\n greetingPopup,\n setGreetingPopup,\n setInternalModeUser\n };\n};\n\nconst AuthContext = createContainer(useAuth);\nexport default AuthContext;\n","const UTM_CAMPAIGN_KEY = 'utm-campaign';\nconst UTM_ROUTE_KEY = 'utm-route';\n\nexport const storeUtmCampaign = (content) => {\n localStorage.setItem(UTM_CAMPAIGN_KEY, content);\n};\n\nexport const getUtmCampaign = () => {\n return localStorage.getItem(UTM_CAMPAIGN_KEY);\n};\n\nexport const removeUtmCampaign = () => {\n localStorage.removeItem(UTM_CAMPAIGN_KEY);\n};\n\nexport const storeUtmRoute = (content) => {\n localStorage.setItem(UTM_ROUTE_KEY, content);\n};\n\nexport const getUtmRoute = () => {\n return localStorage.getItem(UTM_ROUTE_KEY);\n};\n\nexport const removeUtmRoute = () => {\n localStorage.removeItem(UTM_ROUTE_KEY);\n};\n","const DASHBOARD_UVP_CONSULTATION_KEY = 'has-opened-uvp-consultation';\nconst DASHBOARD_COACHMARK_KEY = 'has-opened-dashboard-coachmark';\n\nexport const storeCoachmarkDashboardFlag = () => {\n localStorage.setItem(DASHBOARD_COACHMARK_KEY, true);\n};\n\nexport const getCoachmarkDashboardFlag = () => {\n return localStorage.getItem(DASHBOARD_COACHMARK_KEY);\n};\n\nexport const removeCoachmarkDashboardFlag = () => {\n localStorage.removeItem(DASHBOARD_COACHMARK_KEY);\n};\n\nexport const storeDashboardUVPFlag = () => {\n localStorage.setItem(DASHBOARD_UVP_CONSULTATION_KEY, true);\n};\n\nexport const getDashboardUVPFlag = () => {\n return localStorage.getItem(DASHBOARD_UVP_CONSULTATION_KEY);\n};\n","import iconCross from 'assets/icons/icon-cross-black.svg';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Button, Modal } from 'reactstrap';\n\nconst BottomSheet = ({\n id = 'BottomSheet',\n isOpen,\n btnFunc,\n sheetTitle,\n sheetDesc,\n btnText,\n layoutBody,\n layoutButton,\n isPrimaryButtonBlock,\n img,\n textBodyAlign,\n toggle,\n children,\n disableClose,\n className,\n btnId,\n onClose\n}) => {\n return (\n
\n \n
\n {!disableClose && (\n {\n toggle();\n onClose();\n }}\n />\n )}\n {children ? (\n children\n ) : (\n <>\n
\n \n
\n
\n {sheetTitle}\n
\n {layoutBody || (\n \n {sheetDesc}\n
\n )}\n {layoutButton || (\n \n {btnText}\n \n )}\n \n )}\n
\n \n \n );\n};\n\nBottomSheet.displayName = 'BottomSheet';\n\nBottomSheet.defaultProps = {\n isOpen: false,\n btnFunc: () => {},\n sheetTitle: '',\n sheetDesc: '',\n btnText: 'Lanjutkan',\n layoutBody: null,\n layoutButton: null,\n isPrimaryButtonBlock: true,\n img: null,\n textBodyAlign: 'left',\n toggle: () => {},\n children: null,\n disableClose: false,\n className: null,\n btnId: null,\n onClose: () => {}\n};\n\nBottomSheet.propTypes = {\n isOpen: PropTypes.bool,\n btnFunc: PropTypes.func,\n sheetTitle: PropTypes.string,\n sheetDesc: PropTypes.string,\n btnText: PropTypes.string,\n layoutBody: PropTypes.element,\n layoutButton: PropTypes.element,\n isPrimaryButtonBlock: PropTypes.bool,\n img: PropTypes.string,\n textBodyAlign: PropTypes.oneOf(['left', 'center', 'right']),\n toggle: PropTypes.func,\n children: PropTypes.element,\n disableClose: PropTypes.bool,\n className: PropTypes.string,\n btnId: PropTypes.string,\n onClose: PropTypes.func\n};\n\nexport default BottomSheet;\n","import dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\nimport 'dayjs/locale/id';\n\ndayjs.extend(relativeTime);\ndayjs.extend(timezone);\ndayjs.extend(utc);\ndayjs.locale('id');\n\ntype IDate = string | number | Date | dayjs.Dayjs | null;\n\nconst DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';\nconst DEFAULT_DATE_FORMAT = 'DD MMMM YYYY';\nconst BACK_END_DATE_FORMAT = 'YYYY-MM-DD';\n\nexport function now(format: string = DATE_TIME_FORMAT): string {\n return dayjs().format(format);\n}\n\nexport function fromNow(date?: IDate): string {\n return dayjs(date).fromNow();\n}\n\nexport function transformToDefaultFormat(date?: IDate): string {\n return dayjs(date).format(DEFAULT_DATE_FORMAT);\n}\n\nexport function transformToISOFormat(date?: IDate): string {\n return dayjs(date).toISOString();\n}\n\n/**\n * Return the date in ISO8601 with current time.\n * @param date The date\n * @returns The date in ISO8601 with current time\n *\n * @example\n * ```\n * const actionTime = transformToISOWithCurrentTimeFormat(new Date());\n * console.log(actionTime);\n * // 2022-09-29T15:54:16+07:00\n * ```\n */\nexport function transformToISOWithCurrentTimeFormat(date?: IDate): string {\n if (!date) return dayjs().format();\n\n const startOfDay = dayjs(date).startOf('day');\n\n return dayjs(startOfDay)\n .add(\n dayjs.duration({\n hours: dayjs().hour(),\n minutes: dayjs().minute(),\n seconds: dayjs().second()\n })\n )\n .format();\n}\n\nexport function transformToUTC(date?: IDate): string {\n return dayjs(date).utc().local().format();\n}\n\nexport function transformToBackEndFormat(date?: IDate): string {\n return dayjs(date).format(BACK_END_DATE_FORMAT);\n}\n\nexport function convertStartDate(date?: IDate): string {\n return dayjs(date).locale('id').format('dddd, D MMMM YYYY • HH:mm');\n}\n\nexport function convertEndDate(date?: IDate): string {\n return dayjs(date).locale('id').format('HH:mm');\n}\n","import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nfunction useQueryString(): URLSearchParams {\n const { search } = useLocation();\n return useMemo(() => new URLSearchParams(search), [search]);\n}\n\nexport default useQueryString;\n","export default __webpack_public_path__ + \"static/media/icon-cross-black.8658d033.svg\";","import { useCallback, useState, createContext, ReactNode, FC } from 'react';\n\nimport PopupAlert from 'components/reusable/PopupAlert';\n\ninterface IAlertProviderProps {\n children: ReactNode;\n}\n\ninterface IAlertContext {\n message: string;\n showAlert: boolean;\n handleShowAlert: (msg: string, type: string) => void;\n}\n\nexport const defaultValueAlertContext = {\n message: '',\n showAlert: false,\n handleShowAlert: () => {}\n};\n\nexport const AlertContext = createContext(\n defaultValueAlertContext\n);\n\nexport const AlertProvider: FC = ({\n children,\n ...props\n}) => {\n const [showAlert, setShowAlert] = useState(false);\n const [message, setMessage] = useState('');\n const [typeAlert, setTypeAlert] = useState('');\n const [showIcon, setShowIcon] = useState(false);\n\n const handleShowAlert = useCallback((msg, type, icon = true) => {\n setShowAlert(true);\n setMessage(msg);\n setTypeAlert(type);\n setShowIcon(icon);\n }, []);\n\n const handleCloseAlert = useCallback(() => {\n setShowAlert(false);\n setMessage('');\n setTypeAlert('');\n setShowIcon(false);\n }, []);\n\n const value = {\n handleShowAlert,\n message,\n showAlert\n };\n\n return (\n \n \n {children}\n \n );\n};\n","export function isEmpty(obj: Record | null = {}): boolean {\n return !!obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n}\n\nexport function insertArrayAt(array: T[], index: number, value: T): T[] {\n return [...array.slice(0, index), value, ...array.slice(index)];\n}\n\nexport function escapeRegExp(text: string): string {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nexport function debounce(\n callback: T,\n wait: number\n): (...args: any[]) => void {\n let timeout: number;\n\n return function (this: any, ...args: any[]): void {\n clearTimeout(timeout);\n timeout = window.setTimeout(() => callback.apply(this, args), wait);\n };\n}\n","export default __webpack_public_path__ + \"static/media/icon-calculator.be0e39dd.png\";","export default __webpack_public_path__ + \"static/media/icon-shrimp.f9b7f87f.png\";","export default __webpack_public_path__ + \"static/media/icon-consultation.dcd336a5.png\";","import { generateDayFromNowTo } from 'libs/helpers';\n\nexport const isNotifBlocked = '_hasBlocknotif';\nexport const isSubscribeCT = '_hasSubscribeCT';\nexport const notifCookiesExpires = (days = 7) => generateDayFromNowTo(days);\n","export function formatNumber(amount: unknown, defaultValue = '0'): string {\n if (typeof amount !== 'number' && typeof amount !== 'string') {\n return defaultValue;\n }\n\n let validAmount: number;\n\n if (typeof amount === 'number') {\n validAmount = amount;\n } else {\n validAmount = parseInt(amount);\n }\n\n if (isNaN(validAmount)) return defaultValue;\n\n return validAmount.toLocaleString(['ban', 'id']);\n}\n","export default __webpack_public_path__ + \"static/media/icon-cross-circle-white.90041760.svg\";","import { FC, memo, useCallback, useEffect } from 'react';\nimport styled from 'styled-components';\nimport CircleCheckIcon from 'assets/icons/icon-check-circle.svg';\nimport CircleCrossIcon from 'assets/icons/icon-cross-circle-white.svg';\nimport Typography from 'components/reusable/Typography';\n\ninterface IPopupAlertProps {\n isOpen: boolean | false;\n onClose: () => void;\n message?: string | null;\n variant: string;\n showIcon?: boolean;\n}\n\ninterface IPopupAlertStyleProps {\n isOpen: boolean | false;\n variant: string;\n}\n\nconst Alert = styled.div`\n display: ${({ isOpen }) => (isOpen ? 'flex' : 'none')};\n flex-direction: row;\n align-items: center;\n z-index: 13;\n position: fixed;\n height: 56px;\n left: 16px;\n top: 40px;\n background: ${({ variant }) =>\n variant === 'danger' ? '#D44140' : '#038767'};\n width: 92%;\n border-radius: 8px;\n transition: visibility 0s, opacity 0.5s linear;\n`;\n\nconst Wrapper = styled.div`\n padding: 24px 0 24px 24px;\n`;\n\nconst PopupAlert: FC = ({\n isOpen,\n onClose,\n message,\n variant,\n showIcon = true\n}) => {\n const handleClosePopupAlert = useCallback(() => {\n setTimeout(() => {\n onClose();\n }, 2000);\n }, [onClose]);\n\n useEffect(() => {\n if (isOpen) handleClosePopupAlert();\n }, [isOpen, handleClosePopupAlert]);\n\n return (\n \n {showIcon && (\n \n \n \n )}\n \n {message}\n \n \n );\n};\n\nexport default memo(PopupAlert);\n","import TagManager from 'react-gtm-module';\nimport { ConfigEnv } from './env';\nimport { isTrustedWebActivity } from 'libs/twaChecker';\nimport clevertap from 'clevertap-web-sdk';\nimport { phoneInvertNormalize } from './helpers';\n\nexport const initializeGtm = () => {\n const tagManagerArgs = {\n gtmId: ConfigEnv.analytics.gtmId\n };\n return TagManager.initialize(tagManagerArgs);\n};\n\n/* eslint-disable */\nexport const initializeFbPixel = () => {\n if (typeof fbq === 'undefined') {\n !(function (f, b, e, v, n, t, s) {\n if (f.fbq) return;\n n = f.fbq = function () {\n n.callMethod\n ? n.callMethod.apply(n, arguments)\n : n.queue.push(arguments);\n };\n if (!f._fbq) f._fbq = n;\n n.push = n;\n n.loaded = !0;\n n.version = '2.0';\n n.queue = [];\n t = b.createElement(e);\n t.async = !0;\n t.src = v;\n s = b.getElementsByTagName(e)[0];\n s.parentNode.insertBefore(t, s);\n })(\n window,\n document,\n 'script',\n 'https://connect.facebook.net/en_US/fbevents.js'\n );\n fbq('init', ConfigEnv.analytics.fbPixelId);\n fbq('track', 'PageView');\n }\n};\n\nexport const initializeAppsFlyer = () => {\n !(function (t, e, n, s, a, c, i, o, p) {\n (t.AppsFlyerSdkObject = a),\n (t.AF =\n t.AF ||\n function () {\n (t.AF.q = t.AF.q || []).push(\n [Date.now()].concat(Array.prototype.slice.call(arguments))\n );\n }),\n (t.AF.id = t.AF.id || i),\n (t.AF.plugins = {}),\n (o = e.createElement(n)),\n (p = e.getElementsByTagName(n)[0]),\n (o.async = 1),\n (o.src =\n 'https://websdk.appsflyer.com?' +\n (c.length > 0 ? 'st=' + c.split(',').sort().join(',') + '&' : '') +\n (i.length > 0 ? 'af_id=' + i : '')),\n p.parentNode.insertBefore(o, p);\n })(window, document, 'script', 0, 'AF', 'pba', {\n pba: { webAppId: ConfigEnv.analytics.appsFlyerId }\n });\n};\n\nexport const initializeCleverTap = () => {\n // configure projectId and region.\n clevertap.init(ConfigEnv.clevertap.projectId, ConfigEnv.clevertap.region);\n // share IP data\n clevertap.privacy.push({ useIP: true });\n // configure apps project is SPA or not.\n clevertap.spa = true;\n\n if (process.env.REACT_APP_ENV !== 'production') {\n // https://developer.clevertap.com/docs/web-quickstart-guide#debugging\n clevertap.setLogLevel(3);\n }\n};\n/* eslint-enable */\n\nlet checkTraffic = isTrustedWebActivity();\n\nlet traffic_route = {\n traffic_route: checkTraffic ? 'trusted-web-activity' : 'browser-app'\n};\n\nexport const trackEvent = (eventName, eventProperties) => {\n if (window) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n event: eventName,\n eventProps: {\n ...eventProperties,\n ...traffic_route\n }\n });\n window.fbq('trackCustom', eventName, eventProperties);\n window.AF('pba', 'event', {\n eventType: 'EVENT',\n eventValue: eventProperties,\n eventName: `af_${eventName}`\n });\n }\n};\n\nexport const trackAFUserId = (userId) => {\n window.AF('pba', 'setCustomerUserId', userId);\n};\n\nexport const trackerLandingPage = {\n trackButtonMasuk: () => {\n trackEvent('btn_login_clicked');\n },\n trackTopButtonDaftar: () => {\n trackEvent('btn_top_register_clicked');\n },\n trackFeature: (feature) => {\n trackEvent('landing_page_features', {\n landing_page_features: feature\n });\n },\n trackBottomButtonDaftar: () => {\n trackEvent('btn_bottom_register_clicked');\n },\n trackTestimonialButtonDaftar: () => {\n trackEvent('btn_testimonial_register_clicked');\n },\n trackConsultationClicked: () => {\n trackEvent('btn_consultation_clicked');\n },\n trackTestimoni: () => {\n trackEvent('slide_testimoni');\n },\n trackConsultationCardClicked: () => {\n trackEvent('card_consultation_pressed');\n },\n trackDeeplink: (campaign) => {\n trackEvent('deeplink_triggered', {\n utm_campaign: campaign\n });\n }\n};\n\nexport const trackerDashboard = {\n trackConsultationChatStarted: () => {\n trackEvent('tawkto_consultation_cultivation_started');\n },\n trackBannerClick: (bannerId) => {\n trackEvent('chosen_banner', {\n banner_id: bannerId\n });\n },\n trackCloseSheetNotif: () => {\n trackEvent('btn_close_sheet_notif');\n },\n trackTabChanges: (pathName) => {\n let tabName;\n\n if (pathName === '/') {\n tabName = 'Beranda';\n } else if (pathName === '/cultivation') {\n tabName = 'Budidaya';\n } else if (pathName === '/settings') {\n tabName = 'Akun';\n }\n\n trackEvent('tab_change', {\n tab_name: tabName\n });\n },\n trackLogout: () => {\n trackEvent('logout');\n },\n trackHelp: (page = '') => {\n trackEvent('btn_help_clicked', {\n page: page\n });\n },\n trackMarketplaceCardClicked: () => {\n trackEvent('card_marketplace_pressed');\n },\n trackWAConsultationClicked: (consultant_phone) => {\n trackEvent('button_consultation_direct_whatsapp', {\n consultant_phone: consultant_phone\n });\n }\n};\n\nexport const trackerLaporanHarian = {\n trackBack: () => {\n trackEvent('back_from_daily_report');\n }\n};\n\nexport const trackerLaporanSiklus = {\n trackBack: () => {\n trackEvent('back_from_cyle');\n },\n trackGrowth: (value) => {\n trackEvent('btn_growth', {\n growth: value\n });\n },\n trackFeedig: (value) => {\n trackEvent('btn_feedig', {\n feedig: value\n });\n }\n};\n\nexport const trackerQuestionnaire = {\n trackIsFarmers: () => {\n trackEvent('click_is_farmers');\n },\n trackIsNotFarmers: () => {\n trackEvent('click_is_not_farmers');\n },\n trackInterest: () => {\n trackEvent('click_interest');\n },\n trackReferral: () => {\n trackEvent('click_referral');\n }\n};\n\nexport const trackerFeatureStopperSheets = {\n trackIsFarmerToggle: () => {\n trackEvent('close_is_farmer_sheet');\n },\n trackIsNotFarmerToggle: () => {\n trackEvent('close_is_not_farmer_sheet');\n }\n};\n\nexport const trackBackAcquisitionForm = () => {\n trackEvent('back_from_acquisition_form');\n};\n\nexport const trackAcquisitionState = () => {\n trackEvent('acquisition_state_saved');\n};\n\nexport const trackIsiDataDiri = () => {\n trackEvent('click_isi_data_diri');\n};\n\nexport const trackButtonUpdateData = () => {\n trackEvent('click_update_data');\n};\n\nexport const trackPlanClicked = (planName) => {\n trackEvent('wa_plan_clicked', {\n plan_name: planName\n });\n};\n\nexport const trackUtm = (utmParams) => {\n if (utmParams !== null) trackEvent('utm_tracked', utmParams);\n};\n\nexport const trackSelectBlock = () => {\n trackEvent('select_block');\n};\n\nexport const trackSelectPond = () => {\n trackEvent('select_pond');\n};\n\nexport const trackDetailKolam = () => {\n trackEvent('detail_pond');\n};\n\nexport const trackLaporanSiklus = () => {\n trackEvent('click_laporan_per_siklus');\n};\n\nexport const trackPengaturan = () => {\n trackEvent('click_settings');\n};\n\nexport const trackExpandRecommendation = () => {\n trackEvent('expand_recommendation');\n};\n\nexport const trackNotificationReceived = () => {\n trackEvent('notification_received');\n};\n\nexport const trackNotificationClicked = () => {\n trackEvent('notification_clicked');\n};\n\nexport const trackNotifHomepage = () => {\n trackEvent('notif_homepage');\n};\n\nexport const trackNotifPengaturan = () => {\n trackEvent('notif_pengaturan');\n};\n\n// Event Tracker Panen Udang\nexport const trackFabShrimpForm = () => {\n trackEvent('fab_shrimp_form');\n};\n\nexport const trackNextShrimpForm = () => {\n trackEvent('btn_next_step_shrimp_form_clicked');\n};\n\nexport const trackGoToHarvestHistory = () => {\n trackEvent('btn_to_harvest_history_clicked');\n};\n\nexport const trackChangeNumberShrimpForm = () => {\n trackEvent('input_change_number_clicked');\n};\n\nexport const trackChangeLocationShrimpForm = () => {\n trackEvent('btn_change_location_clicked');\n};\n\nexport const trackSubmitShrimpFormData = (payload) => {\n trackEvent('shrimp_form_submitted', {\n shrimp_form_data: payload\n });\n};\n\nexport const trackSlideBenefitPanenUdang = () => {\n trackEvent('slide_benefit_panen_udang');\n};\n\nexport const trackTertarikPanenUdang = () => {\n trackEvent('btn_tertarik_panen_udang');\n};\n\nexport const trackCloseBenefitPanenUdang = () => {\n trackEvent('btn_close_popup_benefit_panen_udang');\n};\n\nexport const trackBannerPanenUdang = () => {\n trackEvent('slide_banner_panen_udang');\n};\n\nexport const trackShrimpHarvest = (category) => {\n trackEvent('chosen_panen_udang_category', {\n chosen_panen_udang_category: category\n });\n};\n\nexport const trackChooseHistory = (transaction_id) => {\n trackEvent('chosen_history_panen_udang', {\n transaction_id: transaction_id\n });\n};\n\nexport const closeHistory = (transaction_id) => {\n trackEvent('close_history_panen_udang', {\n transaction_id: transaction_id\n });\n};\n\nexport const trackSharePanenUdang = () => {\n trackEvent('btn_share_panen_udang');\n};\n\nexport const trackSharePanenUdangSocialMedia = (social_media) => {\n trackEvent(`btn_share_panen_udang_${social_media}`);\n};\n\nexport const trackShrimpHarvestCardClicked = () => {\n trackEvent('card_sell_shrimp_pressed');\n};\n\nexport const trackPanenUdangNonVerifiedFarmer = () => {\n trackEvent('open_panen_udang_non_verified_sheet');\n};\n\nexport const trackPanenUdangNonVerifiedFarmerClicked = (feature_name) => {\n trackEvent('btn_panen_udang_feature_clicked', { feature_name });\n};\n\nexport const trackPanenUdangNonVerifiedUpdateProfile = () => {\n trackEvent('btn_panen_udang_update_profile');\n};\n\n// End Event Tracker Panen Udang\n\n// Tracker Marketplace / Toko Budidaya\nexport const trackBackFromTokoBudidaya = () => {\n trackEvent('back_from_toko_budidaya');\n};\n\nexport const trackSearchInputHomepage = (keyword) => {\n trackEvent('search_input_homepage', {\n keyword\n });\n};\n\nexport const trackChosenProductPakan = (product_id) => {\n trackEvent('chosen_product_pakan', {\n product_id\n });\n};\n\nexport const trackChosenProductNonPakan = (product_id) => {\n trackEvent('chosen_product_nonpakan', {\n product_id\n });\n};\n\nexport const trackChosenProductCategory = (category_name) => {\n trackEvent('chosen_product_category', {\n category_name\n });\n};\n\nexport const trackBackFromPCP = () => {\n trackEvent('back_from_pcp');\n};\n\nexport const trackSearchInputPCP = (keyword) => {\n trackEvent('search_input_pcp', {\n keyword\n });\n};\n\nexport const trackChosenProduct = (product_id) => {\n trackEvent('chosen_product', {\n product_id\n });\n};\n\nexport const trackOrderPCP = (product_id) => {\n trackEvent('order_pcp', {\n product_id\n });\n};\n\nexport const trackOrderPDP = (product_id) => {\n trackEvent('order_pdp', {\n product_id\n });\n};\n\nexport const trackBackFromOrderDetail = () => {\n trackEvent('back_from_order_detail');\n};\n\nexport const trackChosenPayment = (duration_name) => {\n trackEvent('chosen_payment', { duration_name });\n};\n\nexport const trackFinishedPayment = (duration_name) => {\n trackEvent('finished_payment', { duration_name });\n};\n\nexport const trackDetailProduct = (product_id) => {\n trackEvent('see_detail_product', {\n product_id\n });\n};\n\nexport const trackCartPage = () => {\n trackEvent('click_cart');\n};\n\nexport const trackClickPayment = () => {\n trackEvent('click_payment_button');\n};\n\nexport const trackPaymentPage = () => {\n trackEvent('see_payment_page');\n};\n\nexport const trackProductRecommendation = (\n product_recommendation_id,\n entry_point\n) => {\n trackEvent('chosen_product_recommendation', {\n product_recommendation_id,\n entry_point\n });\n};\n\nexport const trackDirectToTokbud = () => {\n trackEvent('direct_to_tokbud_recommendation_efarm');\n};\n\nexport const trackProductPersonalize = (product_id, model_name) => {\n trackEvent('chosen_product_personalize', {\n product_id,\n model_name\n });\n};\n\nexport const trackProductGeneral = (product_id, model_name) => {\n trackEvent('chosen_product_general', {\n product_id,\n model_name\n });\n};\n// End Tracker Marketplace / Toko Budidaya\n\n/**\n * clevertapEventPush\n * Fungsi untuk push event ke dashboard clevertap.\n * eventName dan eventProperties di set bebas di components.\n *\n * @param {string} eventName | nama event untuk dijadikan segment.\n * @param {object} eventProperties | object event yang akan di jadikan data tracking.\n */\nexport const clevertapEventPush = ({ eventName, eventProperties }) => {\n clevertap.event.push(eventName, eventProperties);\n};\n\n/**\n * clevertapEventUserLogin\n * Fungsi untuk push data user ketika sudah login.\n * Event : Page Load\n *\n * @param {*}\n * @param {string} {identity} | UUID pengguna\n * @param {string} {name} | nama pengguna\n * @param {string} {phone} | telepon pengguna\n * @param {string} {email} | email pengguna\n * @param {boolean} {verified} | status pengguna\n * @param {string} {position} | posisi pengguna\n * @param {string} {province} | provinsi pengguna\n * @param {string} {city} | kota pengguna\n * @param {string} {district} | kelurahan pengguna\n * @param {string} {subDistrict} | desa pengguna\n * @param {string} {cultivationType} | type cultivation pengguna\n */\nexport const clevertapEventUserLogin = ({\n identity,\n name,\n phone,\n email,\n verified,\n position,\n province,\n city,\n district,\n subDistrict,\n cultivationType\n}) => {\n clevertap.onUserLogin.push({\n Site: {\n Identity: identity,\n Email: email,\n Name: name,\n Phone: phoneInvertNormalize(phone),\n Verified: verified,\n Position: position,\n Province: province,\n City: city,\n District: district,\n 'Sub-District': subDistrict,\n 'Cultivation Type': cultivationType\n }\n });\n};\n\n/**\n * eventEditProfile\n * Fungsi untuk push event update profile\n */\nexport const clevertapEventUpdateProfile = ({\n name,\n position,\n province,\n city,\n district,\n subDistrict\n}) => {\n clevertap.profile.push({\n Site: {\n Name: name,\n Position: position,\n Province: province,\n City: city,\n District: district,\n 'Sub-District': subDistrict\n }\n });\n};\n\n/**\n * clevertapGrantPermission\n * Fungsi untuk memunculkan clevertap popup grant permission.\n * Contoh payload\n *\n * {\n * titleText: 'Would you like to receive Push Notifications?',\n * bodyText:\n * 'We promise to only send you relevant content and give you updates on your transactions',\n * okButtonText: 'Sign me up!',\n * rejectButtonText: 'No thanks',\n * okButtonColor: '#f28046'\n * }\n */\nexport const clevertapGrantPermission = (webPushPayload) => {\n // {\n // titleText: 'Would you like to receive Push Notifications?',\n // bodyText:\n // 'We promise to only send you relevant content and give you updates on your transactions',\n // okButtonText: 'Sign me up!',\n // rejectButtonText: 'No thanks',\n // okButtonColor: '#f28046'\n // }\n clevertap.notifications.push({\n ...webPushPayload,\n serviceWorkerPath: '/service-worker.js'\n });\n};\n","export default __webpack_public_path__ + \"static/media/icon-shop.b31a1469.png\";","export default __webpack_public_path__ + \"static/media/icon-play.d49af8dd.png\";","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height\n };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(\n getWindowDimensions()\n );\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n}\n","export default __webpack_public_path__ + \"static/media/logo-efarm.a64ea944.webp\";","export default __webpack_public_path__ + \"static/media/icon-check-circle.ebf13a9b.svg\";","import { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport Typography from './Typography';\n\nconst Wrapper = styled.div`\n position: fixed;\n z-index: 999;\n top: 0;\n left: 0;\n right: 0;\n height: 40px;\n max-width: 500px;\n display: grid;\n background-color: #359f85;\n color: white;\n margin: auto;\n`;\n\nconst Sticky = styled.div`\n position: relative;\n z-index: 99;\n display: grid;\n max-width: 500px;\n display: flex;\n align-items: center;\n margin: auto;\n padding-top: 8px;\n padding-bottom: 8px;\n text-align: center;\n`;\n\nconst StickyInternalMode = () => {\n const [step, setStep] = useState(0);\n\n const switchStep = (step: number) => {\n switch (step) {\n case 0:\n setTimeout(() => {\n setStep(1);\n }, 10000);\n break;\n case 1:\n setTimeout(() => {\n setStep(2);\n }, 10000);\n break;\n case 2:\n setTimeout(() => {\n setStep(0);\n }, 20000);\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n switchStep(step);\n }, [step]);\n\n return (\n \n \n \n {step === 0 ? (\n <>\n Kamu sedang berada di Mode Internal\n \n ) : step === 1 ? (\n <>\n Mode Internal digunakan untuk keperluan lapangan\n \n ) : (\n Mode Internal\n )}\n \n \n \n );\n};\n\nexport default StickyInternalMode;\n","import { getLeadsState } from 'store/leads';\n\nexport const disableTargeting = () => {\n // Survicate: Disable automatic targeting\n // referensi:\n // 1. https://help.survicate.com/en/articles/3937822-show-your-survey-after-a-javascript-event\n // 2. https://developers.survicate.com/javascript/configuration/?_gl=1*1x4x1mb*_ga*MTI3NzYzOTEyOS4xNjQzOTYzNTA2*_ga_ZRE7VLNMPF*MTY0OTIzNTA5NC4yNS4xLjE2NDkyMzY5NDEuMA..#disable-automatic-targeting\n (function (opts) {\n opts.disableTargeting = true;\n })((window._sva = window._sva || {}));\n};\n\nexport const getSurveyId = ({ surveyName }) => {\n const surveyIds = JSON.parse(process.env.REACT_APP_SURVICATE_ID) || {};\n return surveyIds[surveyName] || '';\n};\n\nexport const displaySurvey = ({\n surveyId = '',\n options = {\n forceDisplay: true,\n displayMethod: 'immediately'\n }\n}) => {\n const survicate = window._sva;\n if (!survicate) return false;\n\n const {\n lead_id = '',\n email = '',\n name = '',\n phone = ''\n } = getLeadsState() || {};\n\n if (survicate) {\n survicate.setVisitorTraits({\n email,\n name,\n phone,\n lead_id\n });\n survicate.showSurvey(surveyId, options);\n\n return true;\n }\n};\n\nexport const questionAnswered = (callback) => {\n const survicate = window._sva;\n if (survicate) {\n survicate.addEventListener(\n 'question_answered',\n (surveyId, questionId, answer) => {\n callback({ surveyId, questionId, answer });\n }\n );\n }\n};\n\nexport const closeSurvey = (callback) => {\n const survicate = window._sva;\n if (survicate) {\n survicate.addEventListener('survey_closed', (surveyId) =>\n callback(surveyId)\n );\n }\n};\n\nexport const getStateSurvey = () => {\n const survicate = window._sva || {};\n const { getState = () => {} } = survicate;\n\n if (!getState()) return false;\n const { visit = {}, visitor = {} } = getState() || {};\n return {\n visit,\n visitor\n };\n};\n","/* eslint-disable indent */\nimport axios from 'axios';\nimport mem from 'mem/dist';\nimport {\n storeCoachmarkDashboardFlag,\n getCoachmarkDashboardFlag\n} from 'store/dashboard';\nimport {\n deletePersistedHistory,\n deletePersistedHistoryDetail,\n deleteStateBenefitShrimp\n} from 'store/shrimpHarvest';\nimport {\n removePersistedName,\n removePersistedTokens,\n removePersistedExpiryTokenTime,\n loadPersistedExpiryTokenTime,\n storePersistedTokens,\n storePersistedExpiryTokenTime,\n loadPersistedTokens\n} from 'store/auth';\nimport { deleteLeadsState } from 'store/leads';\nimport { deleteLocationState } from 'store/location';\nimport { deleteDummyState, deleteAcquisitionState } from 'store/acquisition';\nimport packageJson from 'package-json';\n\nimport { removeToolsbudToken } from '@cultivation-records/store/reportExternal';\n\nconst DEFAULT_OVERHEAD_SECOND = 10;\n\nlet authsUrl = process.env.REACT_APP_BACKEND_URL;\nlet accessToken = null;\nlet accessTokenExpiryTime = null;\nlet refreshToken = null;\nlet refreshTokenExpiryTime = null;\n\nexport class InvalidTokenError extends Error {}\nexport class AuthServiceError extends Error {}\n\n// \n\nexport const initialize = (config = {}) => {\n authsUrl = config.authsUrl;\n};\n\nexport const getAccessToken = () => {\n return accessToken;\n};\n\nexport const setAccessToken = (newAccessToken) => {\n accessToken = newAccessToken;\n};\n\nexport const getRefreshToken = () => {\n return refreshToken;\n};\n\nexport const setRefreshToken = (newRefreshToken) => {\n refreshToken = newRefreshToken;\n};\n\nexport const getAccessTokenExpiryTime = () => {\n return accessTokenExpiryTime;\n};\n\nexport const setAccessTokenExpiryTime = (newAccessTokenExpiryTime) => {\n accessTokenExpiryTime = newAccessTokenExpiryTime;\n};\n\nexport const getRefreshTokenExpiryTime = () => {\n return refreshTokenExpiryTime;\n};\n\nexport const setRefreshTokenExpiryTime = (newRefreshTokenExpiryTime) => {\n refreshTokenExpiryTime = newRefreshTokenExpiryTime;\n};\n\nexport const checkExpired = (\n overheadSecond = DEFAULT_OVERHEAD_SECOND,\n expiryTime\n) => {\n const now = new Date().getTime() / 1000;\n return now + overheadSecond > expiryTime;\n};\n\nexport const setTokens = (accessToken, refreshToken) => {\n if (!isRefreshTokenEnabled) {\n setAccessToken(accessToken);\n setRefreshToken(refreshToken);\n\n storePersistedTokens({\n access_token: getAccessToken(),\n refresh_token: getRefreshToken()\n });\n }\n};\n\nexport const setTokenExpiryTime = (\n accessTokenExpiryTime,\n refreshTokenExpiryTime\n) => {\n if (isRefreshTokenEnabled) {\n setAccessTokenExpiryTime(accessTokenExpiryTime);\n setRefreshTokenExpiryTime(refreshTokenExpiryTime);\n\n storePersistedExpiryTokenTime({\n token_expired: accessTokenExpiryTime,\n refresh_expired: refreshTokenExpiryTime\n });\n }\n};\n\n// \n\n// \n\n/**\n * create axios instance menggunakan fungsi ini.\n * fungsi ini otomatis masukin token ke headers dan otomatis refresh token kalau expired sehingga tak perlu handle sendiri manual\n * parameter `setHeaders` wajib ada. merupakan fungsi yang menerima object `headers` dan jwt `token`. di fungsi ini siakan set sendiri tokennya mau dipasang di header apa.\n */\n\nexport const isRefreshTokenEnabled =\n process.env.REACT_APP_IS_REFRESH_TOKEN_ENABLED === 'true';\n\nconst TOKEN_STATIC_CUSTOMER = process.env.REACT_APP_STATIC_TOKEN_CRM;\n\nexport const isLoggedIn =\n loadPersistedTokens() || loadPersistedExpiryTokenTime();\nexport const createAxios = (opts = {}) => {\n const instance = axios.create({\n ...opts,\n headers: {\n 'Content-Type': 'application/json',\n 'X-Client-Id': 'efarm',\n 'X-Client-Version': packageJson.version\n },\n withCredentials: isRefreshTokenEnabled\n });\n\n const onBeforeRequest = async (config) => {\n if (isRefreshTokenEnabled) await refreshIfExpired();\n const headers = config?.headers || {};\n if (typeof opts.setHeaders !== 'undefined')\n opts?.setHeaders(headers, getAccessToken());\n config.headers = headers;\n return config;\n };\n\n const onRequestError = (err) => {\n return Promise.reject(err);\n };\n\n instance.interceptors.request.use(onBeforeRequest, onRequestError);\n return instance;\n};\n\nexport const createAxiosCustomer = (opts = {}) => {\n const instance = axios.create({\n ...opts,\n headers: {\n 'X-App-token': TOKEN_STATIC_CUSTOMER,\n 'X-Client-Id': 'toko_budidaya'\n }\n });\n\n const onBeforeRequest = async (config) => {\n if (isRefreshTokenEnabled) await refreshIfExpired();\n const headers = config?.headers || {};\n\n if (typeof opts.setHeaders !== 'undefined')\n opts?.setHeaders(headers, getAccessToken());\n config.headers = headers;\n return config;\n };\n\n const onRequestError = (err) => {\n return Promise.reject(err);\n };\n\n instance.interceptors.request.use(onBeforeRequest, onRequestError);\n return instance;\n};\n\nconst fetchApiRequest = async (endpoint) => {\n const res = await axios.post(`${authsUrl}${endpoint}`, null, {\n withCredentials: true\n });\n return res?.data?.data;\n};\n\n/**\n * refresh token expired ke auth-svc\n */\nconst maxCacheAge = 10000;\nconst refreshIfExpired = mem(\n async (overheadSecond = DEFAULT_OVERHEAD_SECOND) => {\n // pakai memo supaya request refresh token di cache, max 10 detik, biar gaada call berulang\n if (refreshToken === 'disabled') return;\n\n const accessTokenExpiryTime = loadPersistedExpiryTokenTime();\n const isAccessTokenExpired = checkExpired(\n overheadSecond,\n accessTokenExpiryTime?.token_expired\n );\n if (!isAccessTokenExpired) return;\n\n try {\n const res = await fetchApiRequest('/users/refresh');\n setTokenExpiryTime(res.token_expired, res.refresh_expired);\n return res;\n } catch (error) {\n if (error.response) {\n if (error.response.status === 401) {\n error.message = new InvalidTokenError(\n 'Sesi Anda sudah habis. Silakan login ulang.'\n );\n doLogout();\n } else {\n error.message = new AuthServiceError(\n `HTTP ${error?.response?.status}`\n );\n }\n }\n throw error;\n }\n },\n {\n maxAge: maxCacheAge\n }\n);\n\nexport const doLogout = async () => {\n try {\n await fetchApiRequest('/users/signout');\n } catch (error) {\n error.message = new AuthServiceError(`HTTP ${error?.response?.status}`);\n } finally {\n const coachmarkDashboardFlag = getCoachmarkDashboardFlag();\n if (coachmarkDashboardFlag) storeCoachmarkDashboardFlag();\n removePersistedExpiryTokenTime();\n removePersistedTokens();\n removePersistedName();\n removeToolsbudToken();\n deleteLeadsState();\n deleteLocationState();\n deleteDummyState();\n deleteAcquisitionState();\n deletePersistedHistory();\n deletePersistedHistoryDetail();\n deleteStateBenefitShrimp();\n window.location.replace('/');\n }\n};\n\n// \n","import { getItem, setItem } from './skeleton';\n\nconst TOKENS_STORAGE_KEY = 'sfdu_token';\nconst EXPIRY_TIME_TOKENS_STORAGE_KEY = 'expiry_time_sfdu_token';\nconst NAME_STORAGE_KEY = 'farmer_name';\n\nexport const loadPersistedExpiryTokenTime = () => {\n const expiryTimes =\n getItem(EXPIRY_TIME_TOKENS_STORAGE_KEY) !== undefined &&\n getItem(EXPIRY_TIME_TOKENS_STORAGE_KEY) !== ''\n ? JSON.parse(getItem(EXPIRY_TIME_TOKENS_STORAGE_KEY))\n : null;\n return expiryTimes;\n};\n\nexport const storePersistedExpiryTokenTime = (expiryTimes) => {\n const expiryTimesJson = JSON.stringify(expiryTimes);\n setItem(EXPIRY_TIME_TOKENS_STORAGE_KEY, expiryTimesJson);\n};\n\nexport const removePersistedExpiryTokenTime = () => {\n localStorage.removeItem(EXPIRY_TIME_TOKENS_STORAGE_KEY);\n};\n\nexport const loadPersistedTokens = () => {\n try {\n const tokensJson = localStorage.getItem(TOKENS_STORAGE_KEY);\n const tokens = JSON.parse(tokensJson);\n return tokens;\n } catch (e) {\n console.error(e);\n }\n};\n\nexport const storePersistedTokens = (tokens) => {\n const tokensJson = JSON.stringify(tokens);\n localStorage.setItem(TOKENS_STORAGE_KEY, tokensJson);\n};\n\nexport const removePersistedTokens = () => {\n localStorage.removeItem(TOKENS_STORAGE_KEY);\n};\n\nexport const loadPersistedName = () => {\n const name = localStorage.getItem(NAME_STORAGE_KEY);\n return name;\n};\n\nexport const storePersistedName = (name) => {\n localStorage.setItem(NAME_STORAGE_KEY, name);\n};\n\nexport const removePersistedName = () => {\n localStorage.removeItem(NAME_STORAGE_KEY);\n};\n\nexport const storeDeviceToken = (device_id) => {\n localStorage.setItem('efarm@device_id', device_id);\n};\n\nexport const getDeviceToken = () => {\n return localStorage.getItem('efarm@device_id');\n};\n","import React from 'react';\nimport { Container } from 'reactstrap';\nimport logo from 'assets/logo-text.png';\n\nconst LoadingScreen = () => (\n \n \n \n);\n\nexport default LoadingScreen;\n","export default \"data:image/png;base64,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\"","import { QueryClient } from 'react-query';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n refetchOnWindowFocus: false,\n cacheTime: 5 * 60 * 1000,\n keepPreviousData: true\n }\n }\n});\n\nexport default queryClient;\n","export default __webpack_public_path__ + \"static/media/greeting-internalmode.8f488532.svg\";","import { Button } from 'reactstrap';\nimport useWindowDimensions from 'hooks/useWindowDimensions';\nimport logoeFarm from 'assets/logo-efarm.webp';\nimport config from 'config';\nimport classNames from 'classnames';\nimport { isDownloadPromptVisible } from 'libs/helpers';\nimport { useRouteMatch } from 'react-router-dom';\n\nconst DownloadPrompt = () => {\n const isInProhibitedPage = config.downloadBar.prohibitedRoutes.some(\n (route) => useRouteMatch(route)?.isExact || false\n );\n const windowDimension = useWindowDimensions();\n const viewportWidth = windowDimension.width;\n return (\n isDownloadPromptVisible &&\n !isInProhibitedPage && (\n
\n
\n \"logo\n
\n
\n 395 ? 'size-font-200' : 'size-font-100',\n 'font-weight-medium'\n )}\n >\n Download aplikasi eFarm, yuk!\n
\n 395 ? 'size-font-100' : 'size-font-10'\n )}\n >\n Biar bisa buka dan akses semua fiturnya dengan mudah.\n
\n \n
\n \n \n \n
\n \n )\n );\n};\n\nDownloadPrompt.displayName = 'DownloadPrompt';\nexport default DownloadPrompt;\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n align-items: center;\n background-color: #4a4a4a;\n border-radius: 8px;\n bottom: 24px;\n box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.16);\n color: #ffffff;\n display: flex;\n justify-content: space-between;\n left: 0;\n max-width: calc(100vw - 32px);\n margin: 0 auto;\n overflow: hidden;\n padding: 12px 16px;\n position: fixed;\n right: 0;\n width: 100%;\n z-index: 9999999;\n\n .btn-secondary {\n background-color: transparent;\n border-color: transparent;\n border: 0px;\n margin-left: 16px;\n\n &:hover,\n &:active,\n &:focus {\n box-shadow: none !important;\n border: 0px !important;\n background-color: transparent !important;\n border-color: transparent !important;\n }\n }\n\n @media screen and (min-width: 500px) {\n max-width: 480px;\n }\n`;\n\nexport const Dismiss = styled.div`\n color: #ae7ee9;\n cursor: pointer;\n font-weight: bold;\n`;\n","import { FC, memo, useContext, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport { Button } from 'reactstrap';\n\n// local path\nimport { Wrapper, Dismiss } from './styles';\nimport './snackbar.scss';\n\n// global path\nimport { SnackbarContext } from 'contexts/SnackbarContext';\nimport Typography from 'components/reusable/Typography';\n\ninterface SnackbarProps {\n hideCloseButton?: boolean;\n hideConfirmButton?: boolean;\n}\n\nconst Snackbar: FC = ({ hideCloseButton = false }) => {\n const { isDisplayed, isHideConfirmButton, message, onClose, onConfirm } =\n useContext(SnackbarContext);\n\n const snackbarRef = useRef(null);\n const container = document.getElementById('snackbarPortal') as HTMLElement;\n\n return createPortal(\n \n \n \n {message}\n \n\n {!hideCloseButton && ×}\n\n {!isHideConfirmButton && }\n \n ,\n container\n );\n};\n\nexport default memo(Snackbar);\n","import { lazy } from 'react';\nimport { IClevertapPopupProps } from '../interfaces';\n\n// Lazy render\nconst PopupBox = lazy(() => import('./PopupBox'));\nconst PopupBanner = lazy(() => import('./PopupBanner'));\nconst PopupInterstitial = lazy(() => import('./PopupInterstitial'));\nconst PopupInterstitialFullscreen = lazy(\n () => import('./PopupInterstitialFullscreen')\n);\nconst PopupInterstitialImage = lazy(() => import('./PopupInterstitialImage'));\nconst PopupInterstitialImageFullscreen = lazy(\n () => import('./PopupInterstitialImageFullscreen')\n);\nconst PopupInterstitialImageOnly = lazy(\n () => import('./PopupInterstitialImageOnly')\n);\nconst PopupBannerImage = lazy(() => import('./PopupBannerImage'));\n\nexport default function ClevertapPopup(props: IClevertapPopupProps) {\n const {\n notificationObject: { templateType }\n } = props;\n\n return (\n <>\n {templateType === 'interstitial' && }\n {templateType === 'interstitial-fullscreen' && (\n \n )}\n {templateType === 'interstitial-image' && (\n \n )}\n {templateType === 'interstitial-image-fullscreen' && (\n \n )}\n {templateType === 'interstitial-image-only' && (\n \n )}\n {templateType === 'box' && }\n {templateType === 'banner' && }\n {templateType === 'banner-image' && }\n \n );\n}\n","export const interstitialType = [\n 'interstitial',\n 'interstitial-fullscreen',\n 'interstitial-image',\n 'interstitial-image-fullscreen',\n 'interstitial-image-only'\n];\nexport const bannerType = ['banner', 'banner-image'];\n\nexport const validTemplateType = ['box', ...interstitialType, ...bannerType];\n\nexport const regexPattern = {\n imgSrcPattern: /src=['\"](.*?)['\"]/i,\n bannerStylePattern: /\\.CT_Banner(?!\\w).[^{]*{([^}]*)}/i,\n bannerBtnPattern:\n /]*class=['\"]jsCT_CTA CT_BannerCTA['\"][^>]*>(.*?)<\\/a>/i,\n interstitialStylePattern: /\\.CT_Interstitial(?!\\w).[^{]*{([^}]*)}/i,\n interstitialBtnPattern:\n /]*class=['\"]jsCT_CTA CT_InterstitialCTA['\"][^>]*>(.*?)<\\/a>/i\n};\n\nexport const defaultPopupStyle = {\n backgroundColor: '',\n textColor: '',\n buttonColor: '',\n buttonTextColor: '',\n buttonText: 'Kunjungi'\n};\n","import {\n bannerType,\n defaultPopupStyle,\n interstitialType,\n regexPattern\n} from '../constant';\nimport {\n ICTPopupMessage,\n IGetImageSourceProps,\n IGetPopupStyleProps,\n IGetTemplateType,\n PopupTemplateType\n} from '../interfaces';\n\nexport function getImageSource(props: IGetImageSourceProps) {\n const { html } = props;\n return html.match(regexPattern.imgSrcPattern)?.[1];\n}\n\nexport function getPopupStyle(props: IGetPopupStyleProps) {\n const { html, templateType } = props;\n const {\n interstitialBtnPattern,\n interstitialStylePattern,\n bannerBtnPattern,\n bannerStylePattern\n } = regexPattern;\n\n const style = defaultPopupStyle;\n\n switch (templateType) {\n case 'interstitial':\n // get styles\n html\n .match(interstitialStylePattern)?.[0]\n .split(';')\n .filter((x) => x.includes('background-color:') || x.includes('color:'))\n .forEach((x) => {\n const [properties, value] = x.split(':');\n if (properties === 'background-color') {\n style.backgroundColor = value;\n }\n if (properties === 'color') {\n style.textColor = value;\n }\n });\n\n // get Button text\n style.buttonText = html.match(interstitialBtnPattern)?.[1] ?? 'Kunjungi';\n break;\n case 'banner':\n // get styles\n html\n .match(bannerStylePattern)?.[0]\n .split(';')\n .filter((x) => x.includes('background-color:') || x.includes('color:'))\n .forEach((x) => {\n const [properties, value] = x.split(':');\n if (properties === 'background-color') {\n style.backgroundColor = value;\n }\n if (properties === 'color') {\n style.textColor = value;\n }\n });\n\n // get Button text\n style.buttonText = html.match(bannerBtnPattern)?.[1] ?? 'Kunjungi';\n break;\n default:\n }\n return style;\n}\n\nexport function getTemplateType(props: IGetTemplateType) {\n const { templateType, kv } = props;\n switch (templateType) {\n case 'box':\n return 'box';\n case 'banner':\n if (bannerType.includes((kv?.template as string)?.toLowerCase()))\n return kv?.template as PopupTemplateType;\n return 'banner';\n case 'interstitial':\n if (interstitialType.includes((kv?.template as string)?.toLowerCase()))\n return kv?.template as PopupTemplateType;\n return 'interstitial';\n default:\n return templateType;\n }\n}\n\nexport function normalizeKV(props: ICTPopupMessage['msgContent']['kv']) {\n // Normalize url if the url is empty string\n if (props?.url === '') {\n props.url = 'doNothing';\n }\n return props;\n}\n","import { ICTExtends, IOnActionVisitUrl, IPopupObject } from '../interfaces';\n\nexport function onActionVisitUrl(props: IOnActionVisitUrl) {\n const { url, onNewTab } = props;\n if (!url) return false;\n if (url === 'doNothing') return true;\n if (onNewTab) {\n window.open(url);\n } else {\n window.location.href = url;\n }\n return true;\n}\n\nexport const onActionClicked = (\n clevertap: ICTExtends,\n popupObject: IPopupObject\n) => {\n const { msgId, pivotId, data } = popupObject;\n const success = onActionVisitUrl({\n url: data?.url as string,\n onNewTab: Boolean(data?.onNewTab)\n });\n if (success && !data?.['localTest']) {\n clevertap.renderNotificationClicked?.({ msgId, pivotId });\n }\n};\n","import clevertap from 'clevertap-web-sdk';\nimport {\n ICTExtends,\n ICTPopupMessage,\n IClevertapContext,\n IClevertapContextProps,\n IPopupObject\n} from '../interfaces';\nimport { createContext, useEffect, useState } from 'react';\nimport ClevertapPopup from '../components/PopupModal';\nimport {\n getImageSource,\n getPopupStyle,\n getTemplateType,\n normalizeKV,\n onActionClicked\n} from '../helpers';\nimport { validTemplateType } from '../constant';\nimport { ConfigEnv } from 'libs/env';\n\n// import msgJSON from '../constant/mock-popup-message.json';\n\nexport const ClevertapContext = createContext(\n null\n);\n\nexport function ClevertapProvider({ children, ...props }: IClevertapContext) {\n const {\n clevertap: { customPopupFeature }\n } = ConfigEnv;\n return (\n <>\n {customPopupFeature ? (\n {children}\n ) : (\n \n {children}\n \n )}\n \n );\n}\n\nfunction ClevertapPopupProvider({ children, ...props }: IClevertapContext) {\n const clevertapExt: ICTExtends = clevertap;\n const [notificationObj, setNotificationObj] = useState(\n null\n );\n const [popupOpen, setPopupOpen] = useState(false);\n clevertapExt.notificationCallback = (message: ICTPopupMessage) => {\n const {\n msgContent: { type, html, title, description, templateType, kv },\n msgId,\n pivotId\n } = message;\n\n // get ImageSrc if present\n const notifObject: IPopupObject = {\n msgId,\n pivotId,\n title,\n description,\n type,\n templateType: getTemplateType({ templateType, kv }),\n imgSrc: getImageSource({ templateType, html }),\n data: normalizeKV(kv),\n style: getPopupStyle({ templateType, html })\n };\n\n setNotificationObj(notifObject);\n // trigger Popup Viewed Event when the template valid\n if (\n validTemplateType.includes(notifObject.templateType) &&\n !kv?.['localTest']\n )\n clevertapExt.renderNotificationViewed?.({ msgId, pivotId });\n };\n\n clevertapExt.onActionClicked = onActionClicked;\n\n const value = {\n isActive: true,\n notificationObject: notificationObj\n };\n\n const togglePopup = () => {\n setPopupOpen(!popupOpen);\n setNotificationObj(null);\n };\n\n useEffect(() => {\n if (notificationObj) {\n setPopupOpen(true);\n }\n }, [notificationObj]);\n\n // un-comment this line below for local testing purposses\n // useEffect(() => {\n // clevertapExt.notificationCallback?.(msgJSON.interstitial as any);\n // }, []);\n\n return (\n \n {children}\n {notificationObj && (\n \n )}\n \n );\n}\n","import AuthContext from '@auth/context/auth';\nimport classNames from 'classnames';\nimport config from 'config';\nimport FlagsProvider from 'contexts/FlagContext';\nimport { SnackbarProvider } from 'contexts/SnackbarContext';\nimport { defaultValuesFlagsContext } from 'libs/flags';\nimport queryClient from 'libs/queryClient';\nimport { lazy, useEffect, useMemo } from 'react';\nimport { QueryClientProvider } from 'react-query';\nimport {\n BrowserRouter as Router,\n Redirect,\n Route,\n Switch,\n useHistory,\n useLocation,\n useRouteMatch\n} from 'react-router-dom';\nimport { getDummyState } from '../store/acquisition';\n// Assets\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'assets/styles/onefish.scss';\n// Init tag manager\nimport imgGreetingInternal from 'assets/img/dashboard/greeting-internalmode.svg';\nimport BottomSheet from 'components/reusable/BottomSheet';\nimport DownloadPrompt from 'components/reusable/DownloadPrompt';\nimport { Snackbar } from 'components/reusable/snackbar';\nimport { AlertProvider } from 'contexts/AlertContext';\nimport { getAnalytics } from 'firebase/analytics';\nimport { isDownloadPromptVisible, useFlags } from 'libs/helpers';\nimport {\n initializeAppsFlyer,\n initializeCleverTap,\n initializeFbPixel,\n initializeGtm\n} from '../libs/analytics';\nimport { firebase } from '../libs/firebase';\nimport StickyInternalMode from './reusable/StickyInternalMode';\nimport { ClevertapProvider } from 'features/clevertap-popup/context/index';\nimport useQueryString from 'hooks/useQueryString';\nimport { getToolsbudToken } from '@cultivation-records/store/reportExternal';\n\n// Pages\nconst NewDashboard = lazy(() => import('components/dashboard/NewDashboard'));\nconst Otp = lazy(() => import('@auth/pages/otp'));\nconst LocationPicker = lazy(() => import('pages/LocationPicker'));\nconst Maps = lazy(() => import('@maps/Maps'));\nconst SuccessPage = lazy(() => import('pages/SuccessPage'));\nconst Questionnaire = lazy(() => import('@auth/pages/questionnaire'));\nconst LoginUsername = lazy(() => import('@auth/pages/login-username'));\nconst LoginPhone = lazy(() => import('@auth/pages/login-phone'));\nconst RegisterPhone = lazy(() => import('@auth/pages/register'));\n\n// lazy\nconst MaintenancePage = lazy(() => import('pages/MaintenancePage'));\nconst Onboarding = lazy(() => import('@app-onboarding/pages/onboarding'));\nconst MyPondsRouter = lazy(() => import('@my-ponds/routers'));\nconst CultivationRecordsRouter = lazy(() =>\n import('@cultivation-records/routers')\n);\nconst CultivationRecordsExternalRouter = lazy(() =>\n import('@cultivation-records/routers/routesExternal')\n);\nconst MarketplaceRouterGuestMode = lazy(() =>\n import('@marketplace/routes/routesGuestMode')\n);\nconst CultivationGPTRouter = lazy(() => import('@cultivation-gpt/routers'));\n\nconst App = () => {\n getAnalytics(firebase);\n initializeGtm();\n initializeFbPixel();\n initializeAppsFlyer();\n initializeCleverTap();\n\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 />\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\nconst MaintenancePageProvider = ({ children }) => {\n const isMaintenanceEnabled =\n process.env.REACT_APP_MAINTENANCE_MODE === 'true';\n if (isMaintenanceEnabled) {\n return (\n <>\n } />\n \n \n );\n } else {\n return children;\n }\n};\n\nconst LoginGate = () => {\n const history = useHistory();\n const location = useLocation();\n const params = useMemo(() => {\n return location?.search;\n }, [location]);\n const utmRoute = new URLSearchParams(params).get('utm_route');\n\n const queryString = useQueryString();\n const token = queryString.get('token');\n const toolsbudToken = getToolsbudToken();\n\n const {\n isMyPondsEnabled,\n isCultivationRecordsEnabled,\n isMarketplaceUsingGuestMode,\n isInternalModeEnabled\n } = useFlags();\n const isInProhibitedPage = config?.downloadBar?.prohibitedRoutes?.some(\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (route) => useRouteMatch(route)\n );\n\n const auth = AuthContext.useContainer();\n const dummyStorageState = getDummyState();\n const isDummy = dummyStorageState || auth?.user?.is_trial;\n const leadsName = auth?.user?.name;\n const acquisitionName = leadsName || 'Hai, pembudidaya!';\n\n useEffect(() => {\n //check if deeplink has marketplace utm route\n if (location?.pathname === '/') {\n if (utmRoute?.includes('/marketplace')) {\n history.push(utmRoute);\n }\n }\n }, []);\n\n useEffect(() => {\n if (auth.isInternalMode === true && !auth.isLoggedIn) {\n auth.setGreetingPopup(true);\n } else {\n auth.setGreetingPopup(false);\n }\n }, [auth.isLoggedIn]);\n\n const handleHidePopup = () => {\n auth.setGreetingPopup(false);\n };\n\n const isMarketplace = useMemo(() => {\n return location?.pathname?.includes('/marketplace');\n }, [location]);\n\n const isCultivation = useMemo(() => {\n return location?.pathname?.includes('/cultivation');\n }, [location]);\n\n if (\n isMarketplaceUsingGuestMode &&\n isMarketplace &&\n !auth?.user &&\n !auth.isFetchLeadLoading\n ) {\n return ;\n }\n\n if (\n isCultivation &&\n !auth?.user &&\n !auth.isFetchLeadLoading &&\n (!!token || !!toolsbudToken)\n ) {\n return ;\n }\n\n return (\n \n {auth.user || isDummy ? (\n <>\n {isInternalModeEnabled && auth.isInternalMode && (\n \n )}\n\n \n\n {isInternalModeEnabled && (\n \n )}\n\n {isMyPondsEnabled && }\n {isCultivationRecordsEnabled && }\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://cra.link/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\nexport function register(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(process.env.PUBLIC_URL, window.location.href);\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://cra.link/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, 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://cra.link/PWA.'\n // );\n registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n // Alert user when there are new updates\n alert(\n 'Terdapat update terbaru terkait aplikasi, silakan klik OK untuk reload'\n );\n window.location.reload(true);\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, 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","const reportWebVitals = (onPerfEntry) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { init } from '@sentry/react';\nimport { BrowserTracing } from '@sentry/tracing';\nimport { isLocalhost } from './helpers';\n\n// Sentry init\nexport default () => {\n const environment = process.env.REACT_APP_ENV;\n const sentryDsn = process.env.REACT_APP_SENTRY_DSN;\n\n if (!isLocalhost) {\n init({\n dsn: sentryDsn,\n integrations: [new BrowserTracing()],\n environment,\n tracesSampleRate: 1.0\n });\n }\n};\n","import React, { Suspense } from 'react';\nimport ReactDOM from 'react-dom';\nimport LoadingScreen from 'pages/LoadingScreen';\nimport App from 'components/App';\nimport * as efiauth from 'libs/efiauth';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\nimport reportWebVitals from 'reportWebVitals';\nimport { disableTargeting } from 'libs/survicate';\nimport CacheBuster from 'react-cache-buster';\nimport packageJson from '../package.json';\nimport classNames from 'classnames';\nimport sentry from 'libs/errorMonitoring';\n\n// Polyfill\nimport 'core-js/es/reflect/own-keys';\nimport 'core-js/es/object/values';\nimport 'core-js/es/object/from-entries';\nimport 'core-js/es/object/entries';\nimport 'core-js/es/object/keys';\nimport 'core-js/es/array/includes';\nimport 'promise-polyfill';\nimport 'proxy-polyfill';\nimport 'url-search-params-polyfill';\n\nsentry();\n\nlet appVersion = packageJson.version;\nwindow.appVersion = appVersion;\nconst isProduction = process.env.NODE_ENV === 'production';\n\n// const isDownloadPromptVisible =\n// isAndroid() && isUsingBrowser() && isTrustedWebActivity() === false;\n\n// const App = lazy(() => componentLoader(() => import('components/App')));\n\nefiauth.initialize({\n authsUrl: process.env.REACT_APP_BACKEND_URL\n});\n\n// Survicate: Disable automatic targeting\ndisableTargeting();\n\nReactDOM.render(\n }\n >\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://cra.link/PWA\nserviceWorkerRegistration.register();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","const userAgent = navigator.userAgent;\nconst platform =\n navigator?.userAgentData?.platform || navigator?.platform || 'unknown';\n\nexport const isiOS = () => {\n return (\n [\n 'iPad Simulator',\n 'iPhone Simulator',\n 'iPod Simulator',\n 'iPad',\n 'iPhone',\n 'iPod'\n ].includes(platform) ||\n // iPad on iOS 13 detection\n (userAgent.includes('Mac') && 'ontouchend' in document)\n );\n};\n\nexport const isAndroid = () => {\n return /Android/i.test(userAgent);\n};\n\nexport const isUsingBrowser = () => {\n return typeof window !== 'undefined';\n};\n","import React from 'react';\nimport dayjs from 'dayjs';\nimport { FlagsContext } from '../contexts/FlagContext';\nimport { isTrustedWebActivity } from 'libs/twaChecker';\nimport { isAndroid, isUsingBrowser } from 'utils/userAgent';\nimport parsePhoneNumber from 'libphonenumber-js';\nimport config from '../config';\nimport { removeUtmCampaign, removeUtmRoute } from 'store/utm';\nimport {\n belajar_budidaya,\n DEEP_LINK_CREATE_FARM,\n kalkulator_budidaya,\n konsultasi_budidaya,\n rencana_panen,\n toko_budidaya\n} from 'config/features';\nimport { trackerLandingPage } from 'libs/analytics';\n\nconst FORM_COMPLAINT = process.env.REACT_APP_FORM_COMPLAINT;\n\nexport const isDownloadPromptVisible =\n isAndroid() && isUsingBrowser() && isTrustedWebActivity() === false;\n\nexport const preventGoBack = () => {\n history.pushState(null, null, document.URL);\n window.addEventListener('popstate', function () {\n history.pushState(null, null, document.URL);\n });\n};\n\nexport const goToRegister = (history) => {\n history.push('/login/phone');\n};\n\nexport const getQueryParams = () => {\n const searchParams = new URLSearchParams(window.location.search);\n const params = Object.fromEntries(searchParams.entries());\n return Object.keys(params).length === 0 && params.constructor === Object\n ? null\n : params;\n};\n\nexport const redirectToWhatsapp = (message, number) => {\n const customNumber = `https://api.whatsapp.com/send?phone=${encodeURIComponent(\n number\n )}`;\n return `${number ? customNumber : config.whatsapp.url}&text=${message}`;\n};\n\nexport const handleComplaint = (leads_name, leads_id, token) => {\n const backUrl = encodeURIComponent(window.location.href);\n const source = 'Toko Budidaya';\n const urlFormComplaint = `${FORM_COMPLAINT}?back_url=${backUrl}&customer_name=${leads_name}&leads_id=${leads_id}&source=${source}${\n token ? `&token=${token}` : ''\n }`;\n window.location.href = urlFormComplaint;\n};\n\nexport const setLandingPagePricingThemeBasedOnPlan = (plan) => {\n switch (plan) {\n case 'Panen Maksimal': {\n return {\n icon: 'white',\n bg: 'bg-aqua-600',\n color: 'color-brand-primary-white',\n recommended: false,\n chip: {\n bg: 'bg-observatory-100',\n color: 'color-observatory-500'\n },\n btn: {\n bg: 'bg-observatory-500',\n color: 'color-brand-primary-white'\n }\n };\n }\n case 'Untung Berlipat': {\n return {\n icon: 'white',\n bg: 'bg-observatory-500',\n color: 'color-brand-primary-white',\n recommended: false,\n chip: {\n bg: 'bg-observatory-100',\n color: 'color-observatory-500'\n },\n btn: {\n bg: 'bg-brand-primary-white',\n color: 'color-observatory-500'\n }\n };\n }\n }\n};\n\nexport const cycleToInterval = (cycle) => {\n const start = dayjs(cycle.tanggal).format('D MMM YYYY');\n const end = cycle.final_harvest\n ? `${dayjs(cycle.final_harvest.tanggal).format('D MMM YYYY')} (Panen)`\n : 'Sekarang';\n return `${start} — ${end}`;\n};\n\nexport const formatNumber = (number) => {\n return Number(number).toLocaleString(['ban', 'id']);\n};\n\nexport const useFlags = () => {\n const context = React.useContext(FlagsContext);\n return context;\n};\n\nexport const flaggedWaterParams = (parameters, flag) => {\n if (!flag) {\n return parameters\n .map((el) => {\n if (el.label !== 'Nitrit' && el.label !== 'Amonia') {\n return el;\n }\n })\n .filter((el) => typeof el !== 'undefined');\n } else {\n return parameters;\n }\n};\n\nexport const validationRegexes = (inputValue, type) => {\n const textRegex = '^[a-zA-Z ]*$';\n const numberRegex = '^[0-9]*$';\n let phoneNumber;\n switch (type) {\n case 'phone':\n phoneNumber = parsePhoneNumber(inputValue, 'ID');\n if (inputValue !== '' && phoneNumber && inputValue.charAt(0) === '0')\n return phoneNumber.isValid();\n break;\n case 'text':\n return !new RegExp(textRegex, 'gm').test(inputValue);\n default:\n return !new RegExp(numberRegex, 'gm').test(inputValue);\n }\n};\n\nexport const closeTooltip = () => {\n let tooltipClass = document.getElementsByClassName('hovertext');\n for (let i = 0; i < tooltipClass.length; i++) {\n tooltipClass[i].style.display = 'none';\n }\n};\n\nexport const numberize = (value) => {\n if (Array.isArray(value)) {\n return value.map((item) => numberize(item));\n }\n\n if (value === null) {\n return value;\n }\n\n if (typeof value === 'object') {\n const result = {};\n for (const [key, item] of Object.entries(value)) {\n result[key] = numberize(item);\n }\n return result;\n }\n\n if (typeof value === 'string') {\n // https://stackoverflow.com/questions/175739/built-in-way-in-javascript-to-check-if-a-string-is-a-valid-number#comment32052139_175787\n return +value === +value ? Number(value) : value;\n } else {\n return value;\n }\n};\n\nexport const groupCycleIdentity = (selectedCycle, selectedPond) => {\n const cycle = [];\n cycle.push(\n {\n title: 'Komoditas',\n desc: selectedCycle?.komoditas\n },\n {\n title: 'Jenis Budidaya',\n desc:\n selectedCycle?.jenis_budidaya?.replace(/_/g, ' ') || 'Tidak ada data'\n },\n {\n title: 'Tanggal Tebar',\n desc: dayjs(selectedCycle?.tanggal).locale('id').format('DD MMMM YYYY')\n },\n {\n title: 'Tanggal Panen',\n desc: selectedCycle?.final_harvest\n ? dayjs(selectedCycle?.final_harvest.tanggal).format('DD MMMM YYYY')\n : 'Belum Panen'\n },\n {\n title: 'Jumlah Benih',\n desc: selectedCycle?.jumlah_benih?.toLocaleString(['ban', 'id'])\n },\n {\n title: 'Asal Benih',\n desc: selectedCycle?.asal_benih\n },\n {\n title: 'Rataan Ukuran Benih',\n desc: selectedCycle?.ukuran_benih + ' cm'\n },\n {\n title: 'Rataan Berat Benih',\n desc: selectedCycle?.berat_benih + ' gr'\n },\n {\n title: 'Berat Total Benih',\n desc: selectedCycle?.berat_benih * selectedCycle?.jumlah_benih + ' kg'\n },\n {\n title: 'Padat Tebar',\n desc: selectedPond?.area\n ? (selectedCycle?.jumlah_benih / selectedPond?.area).toFixed(2) + '/m²'\n : 'Tidak ada data'\n },\n {\n title: 'Luas Kolam',\n desc: selectedPond?.area ? selectedPond?.area + ' m²' : 'Tidak ada data'\n },\n {\n title: 'Dosis Awal Akualisan',\n desc: selectedCycle?.starting_aqualisan_dose\n ? selectedCycle?.starting_aqualisan_dose + ' Liter/m³'\n : 'Tidak ada data'\n }\n );\n return cycle;\n};\n\nexport const ObjectString = (Object.byString = (o, s) => {\n s = s.replace(/\\[(\\w+)\\]/g, '.$1'); // convert indexes to properties\n s = s.replace(/^\\./, ''); // strip a leading dot\n var a = s.split('.');\n for (var i = 0, n = a.length; i < n; ++i) {\n var k = a[i];\n if (k in o) {\n o = o[k];\n } else {\n return;\n }\n }\n return o;\n});\n\nexport const generateRangeDate = (start_date, end_date) => {\n let formatedStartDate, formatedEndDate;\n let startDateYear = dayjs(start_date).year();\n let endDateYear = dayjs(end_date).year();\n\n if (startDateYear === endDateYear) {\n formatedStartDate = dayjs(start_date).locale('id').format('DD MMM');\n formatedEndDate = dayjs(end_date).locale('id').format('DD MMM YYYY');\n return `${formatedStartDate} - ${formatedEndDate}`;\n }\n\n formatedStartDate = dayjs(start_date).locale('id').format('DD MMM YYYY');\n formatedEndDate = dayjs(end_date).locale('id').format('DD MMM YYYY');\n return `${formatedStartDate} - ${formatedEndDate}`;\n};\n\nexport const formatRupiah = (currencyIndonesian) => {\n if (!Number(currencyIndonesian)) {\n return '';\n }\n\n const format = currencyIndonesian.toString().split('').reverse().join('');\n const convert = format.match(/\\d{1,3}/g);\n const rupiah = `${convert.join('.').split('').reverse().join('')}`;\n return rupiah;\n};\n\nexport const formatCurrency = (number) => {\n const formatter = new Intl.NumberFormat('id');\n return formatter.format(number);\n};\n\nexport const phoneReplaceNormalize = (phone) => {\n phone = String(phone).trim();\n if (phone.startsWith('+62')) {\n phone = '0' + phone.slice(3);\n } else if (phone.startsWith('62')) {\n phone = '0' + phone.slice(2);\n }\n return phone.replace(/[- .]/g, '');\n};\n\nexport const phoneInvertNormalize = (phone) => {\n if (phone.startsWith('0')) {\n return '+62' + phone.slice(1);\n }\n if (phone.startsWith('62')) {\n return '+' + phone;\n }\n return phone;\n};\n\nexport const getUrlFeatureByUtmCampaign = (utmCampaign) => {\n let redirectUrl = '/';\n\n if (utmCampaign === belajar_budidaya) redirectUrl = '/learn-cultivation/list';\n if (utmCampaign === konsultasi_budidaya) redirectUrl = '/consultation/wa';\n if (utmCampaign === rencana_panen) redirectUrl = '/shrimp-harvest';\n if (utmCampaign === kalkulator_budidaya)\n redirectUrl = '/cultivation-calculator';\n if (utmCampaign === toko_budidaya) redirectUrl = '/marketplace';\n if (utmCampaign === DEEP_LINK_CREATE_FARM) {\n redirectUrl = '/my-ponds/farms/create';\n }\n\n return redirectUrl;\n};\n\nexport const goToFeature = (history, utmCampaign, utmRoute) => {\n const redirectUrl = getUrlFeatureByUtmCampaign(utmCampaign);\n\n trackerLandingPage.trackDeeplink(utmCampaign);\n removeUtmCampaign();\n removeUtmRoute();\n history.push(utmRoute || redirectUrl);\n};\n\nexport const generateDayFromNowTo = (days = 1) => {\n const dt = new Date();\n dt.setDate(dt.getDate() + days);\n return dt;\n};\n\n//TO DO : FOR testing purpose in Staging & UAT. Using in Prod Will be discuss before deployment\nexport const isShowedMarketplaceIconByProvince = (province) => {\n if (!province) return false;\n const excludeProvinces = config.marketplace.excludeProvince;\n\n return !excludeProvinces.some(\n // 0 -> it means exclude for all provinces\n (excludeProvince) =>\n excludeProvince === '0' || province.toString() === excludeProvince\n );\n};\n\nexport const isLocalhost =\n location.hostname === 'localhost' ||\n location.hostname === '127.0.0.1' ||\n process.env.NODE_ENV === 'development';\n\nexport const debounce = (callback, time = 300) => {\n let debounceTimer;\n\n const debouncer = (...args) => {\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(() => {\n callback(...args);\n }, time);\n };\n\n return debouncer;\n};\n","import SecureLS from 'secure-ls';\n\nconst secureStorage = new SecureLS({ encodingType: 'aes' });\nconst isProduction = process.env.NODE_ENV === 'production';\n\nexport const setItem = (key: string, value: string): void => {\n isProduction\n ? secureStorage.set(key, value)\n : localStorage.setItem(key, value);\n};\n\nexport const getItem = (key: string): Type | string | null => {\n if (!isProduction) {\n return localStorage.getItem(key);\n }\n\n try {\n return secureStorage.get(key);\n } catch (e) {\n const value = localStorage.getItem(key);\n secureStorage.set(key, value);\n return secureStorage.get(key);\n }\n};\n\nexport const removeItem = (key: string): void => {\n isProduction ? secureStorage.remove(key) : localStorage.removeItem(key);\n};\n","export default __webpack_public_path__ + \"static/media/benefit-1.457a5b5d.svg\";","export default __webpack_public_path__ + \"static/media/benefit-2.48f21400.svg\";","export default __webpack_public_path__ + \"static/media/benefit-3.a2da481e.svg\";","export default __webpack_public_path__ + \"static/media/mamang.c6a943de.webp\";","export default __webpack_public_path__ + \"static/media/sapto.eecac878.webp\";","export default __webpack_public_path__ + \"static/media/syarifa.d2deb74d.webp\";","export default __webpack_public_path__ + \"static/media/chat-via-wa.2db603f8.svg\";","export default __webpack_public_path__ + \"static/media/free-consultation.2446bbcf.svg\";","export default __webpack_public_path__ + \"static/media/with-expert.42eb5600.svg\";","import imgBenefit from 'assets/img/shrimp-harvest/benefit-1.svg';\nimport imgBenefit2 from 'assets/img/shrimp-harvest/benefit-2.svg';\nimport imgBenefit3 from 'assets/img/shrimp-harvest/benefit-3.svg';\nimport mamang from 'assets/img/dashboard/consultation/mamang.webp';\nimport sapto from 'assets/img/dashboard/consultation/sapto.webp';\nimport syarifa from 'assets/img/dashboard/consultation/syarifa.webp';\nimport consultationChatViaApp from 'assets/img/dashboard/consultation/chat-via-wa.svg';\nimport consultationFreeConsultation from 'assets/img/dashboard/consultation/free-consultation.svg';\nimport consultationWithExpert from 'assets/img/dashboard/consultation/with-expert.svg';\n\n// WIP REFACTOR MOVE WANUMBER TO FIREBASE\nconst waNumber = '6281359593535';\nconst joinNumber = '6281385545425';\n\nconst config = {\n water: {\n parameters: [\n {\n label: 'pH',\n chartValues: [\n {\n limits: [\n {\n value: 8,\n name: 'Ambang Batas'\n },\n 7.5\n ],\n range: [7, 9.5],\n title: 'Pagi',\n name: 'pH Pagi',\n yKey: 'ph_pagi'\n },\n {\n limits: [\n {\n value: 8.4,\n name: 'Ambang Batas'\n },\n 8\n ],\n range: [7, 9.5],\n title: 'Sore',\n name: 'pH Sore',\n yKey: 'ph_sore'\n },\n {\n limits: [\n {\n value: 0.5,\n name: 'Batas Atas'\n }\n ],\n title: 'Range pH',\n name: 'Range pH',\n yKey: 'fluktuasi_ph'\n }\n ]\n },\n {\n label: 'Nitrit',\n limits: [\n {\n value: 0.5,\n name: 'Batas Atas Nitrit'\n }\n ],\n chartValues: 'nitrite',\n name: 'Nitrit'\n },\n {\n label: 'DO',\n chartValues: [\n {\n title: 'Pagi',\n limits: [\n {\n value: 4,\n name: 'Batas Bawah DO'\n }\n ],\n name: 'DO Pagi',\n yKey: 'do_pagi'\n },\n {\n title: 'Sore',\n limits: [\n {\n value: 4,\n name: 'Batas Bawah DO'\n }\n ],\n name: 'DO Sore',\n yKey: 'do_sore'\n }\n ]\n },\n {\n label: 'Salinitas',\n limits: [\n {\n value: 25,\n name: 'Batas Atas Salinitas'\n },\n 15\n ],\n chartValues: 'salinty',\n name: 'Salinitas'\n },\n {\n label: 'Suhu',\n chartValues: [\n {\n title: 'Pagi',\n limits: [\n {\n value: 30,\n name: 'Ambang Batas'\n },\n 27\n ],\n yKey: 'suhu_pagi',\n name: 'Suhu Pagi'\n },\n {\n title: 'Sore',\n limits: [\n {\n value: 30,\n name: 'Ambang Batas'\n },\n 27\n ],\n yKey: 'suhu_sore',\n name: 'Suhu Sore'\n }\n ]\n },\n {\n label: 'Amonia',\n name: 'Amonia',\n limits: [\n {\n value: 0.1,\n name: 'Batas Atas Amonia'\n }\n ],\n chartValues: 'ammonia'\n },\n {\n label: 'Alkalinitas',\n name: 'Alkalinitas',\n limits: [\n {\n value: 150,\n name: 'Ambang Batas'\n },\n 100\n ],\n chartValues: 'total_alkalinitas'\n },\n {\n label: 'Mg',\n name: 'Mg',\n limits: [\n {\n value: 4000,\n name: 'Ambang Batas'\n },\n 2000\n ],\n chartValues: 'mg'\n },\n {\n label: 'Ca',\n name: 'Ca',\n limits: [\n {\n value: 3000,\n name: 'Ambang Batas'\n },\n 1500\n ],\n chartValues: 'ca'\n }\n ]\n },\n feedLog: {\n parameters: [\n {\n title: 'Kumulasi',\n value: 'amount_kg',\n dataKey: 'feed_cumulative',\n name: 'Kumulasi Pakan',\n dashboardKey: 'computed'\n },\n {\n title: 'Harian',\n value: 'berat_total',\n dataKey: 'feeding',\n name: 'Pengeluaran Pakan/Hari',\n dashboardKey: 'data'\n }\n ]\n },\n growth: {\n parameters: [\n {\n title: 'ABW',\n name: 'Rataan Pertumbuhan Harian',\n value: 'weight_gram',\n dataKey: 'abw',\n dashboardKey: 'computed'\n },\n {\n title: 'ADG',\n name: 'Rataan Pertumbuhan Harian',\n value: 'adg',\n dataKey: 'abw',\n dashboardKey: 'computed'\n }\n ]\n },\n chart: {\n pie: {\n markerColors: [\n 'rgb(53, 159, 133)',\n 'rgb(255, 228, 0)',\n 'rgb(212, 65, 64)',\n 'rgb(93, 199, 227)',\n 'rgb(192, 87, 23)'\n ]\n }\n },\n form: {\n checkbox: {\n source: [\n { id: '1', label: 'Webinar', value: 'webinar' },\n { id: '2', label: 'Youtube', value: 'youtube' },\n { id: '3', label: 'Instagram', value: 'instagram' },\n { id: '4', label: 'Tiktok', value: 'tiktok' },\n { id: '5', label: 'Facebook', value: 'facebook' },\n { id: '6', label: 'WA / Telegram / FB Group', value: 'wa_group' },\n { id: '7', label: 'WA', value: 'wa' },\n { id: '8', label: 'Google', value: 'google' },\n { id: '9', label: 'Majalah', value: 'majalah' },\n { id: '10', label: 'Berita online', value: 'online_news' },\n { id: '11', label: 'Kunjungan team eFishery', value: 'offline_visit' },\n { id: '12', label: 'Acara yang diadakan eFishery', value: 'event' },\n { id: '13', label: 'Lainnya', value: 'other' }\n ]\n },\n radio: {\n roles: [\n 'Saya tidak bekerja / tidak memiliki tambak udang',\n 'Pemilik',\n 'Manager',\n 'Admin',\n 'Teknisi',\n 'Anak Kolam',\n 'Bakul',\n 'Agen',\n 'Lainnya'\n ]\n },\n options: {\n role: [\n {\n label: 'Owner/pemilik',\n value: 'Owner/pemilik'\n },\n {\n label: 'Teknisi',\n value: 'Teknisi'\n },\n {\n label: 'Manager Tambak',\n value: 'Manager Tambak'\n },\n {\n label: 'Bakul',\n value: 'Bakul'\n },\n {\n label: 'Processing',\n value: 'Processing'\n },\n {\n label: 'Akademisi',\n value: 'Akademisi'\n },\n {\n label: 'Pelaku industri',\n value: 'Pelaku industri'\n },\n {\n label: 'Lainnya',\n value: 'Lainnya'\n }\n ],\n seedCount: [\n '>200 ekor /m2',\n '>100-200 ekor /m2',\n '50-120 ekor /m2',\n '<50 ekor /m2'\n ],\n feedPrice: ['', 'Pakan alami', '<10.000', '11.000-40.000', '>40.000'],\n harvestSize: ['', '10-50', '50-100', '100-200', '200-1000', '1000-2000'],\n cultivationType: [\n {\n label: 'Ya',\n value: 'udang'\n },\n {\n label: 'Tidak',\n value: 'lainnya'\n }\n ]\n }\n },\n whatsapp: {\n url: `https://api.whatsapp.com/send?phone=${waNumber}`,\n joinNumberUrl: `https://api.whatsapp.com/send?phone=${joinNumber}`,\n joinNumber\n },\n harvestShrimpBenefit: [\n {\n image: imgBenefit,\n text: 'Anda bisa mendapatkan insentif yang menarik dari kami!'\n },\n {\n image: imgBenefit2,\n text: 'Dapatkan gratis layanan \\n konsultasi budidaya'\n },\n {\n image: imgBenefit3,\n text: 'Anda bisa mendapatkan gratis layanan pendampingan'\n }\n ],\n harvestShrimpBanner: [\n {\n text: 'Dapatkan diskon hingga 40% Feeder dan probiotik udang untuk tingkatkan produktivitas kolam'\n },\n {\n text: 'Dapatkan gratis layanan \\nkonsultasi budidaya'\n },\n {\n text: 'Anda bisa mendapatkan gratis \\nlayanan pendampingan'\n }\n ],\n login: {\n benefits: [\n 'Laporan kualitas air harian (fisika & kimia)',\n 'Informasi dan rekomendasi tiap kolam',\n 'Laporan budidaya 1 siklus',\n 'Konsultasi budidaya'\n ]\n },\n sellShrimp: {\n form: {\n harvestType: [\n {\n label: 'Parsial',\n value: 'PARTIAL'\n },\n {\n label: 'Total',\n value: 'TOTAL'\n }\n ],\n source: [\n 'Youtube',\n 'WA / Telegram',\n 'FB',\n 'Tiktok',\n 'Google',\n 'Tim lapangan eFishery'\n ],\n questions: {\n 'Saya sudah memiliki kontrak dengan pembeli lain': null,\n 'Saya tertarik jika udang saya dibeli oleh eFishery': null,\n 'Saya memiliki tim sortir': null,\n 'Saya memiliki tim panen': null,\n 'Saya memiliki tim logistik': null\n }\n }\n },\n questionnaire: {\n interest: [\n 'Ingin belajar budidaya',\n 'Ingin mendapat update seputar pasar udang',\n 'Ingin mendapat update tentang produk sarana budidaya udang',\n 'Lainnya'\n ]\n },\n downloadBar: {\n prohibitedRoutes: [\n '/summary/all',\n '/acquisition-form',\n '/profile/edit',\n '/shrimp-harvest**',\n '/cycle',\n '/summary/:id/:id',\n '/cultivation-calculator**',\n '/my-ponds**',\n '/marketplace**',\n '/location-picker',\n '/event-cultivation/list',\n '/event-cultivation/ticket-list',\n '/event-cultivation/detail**',\n '/cultivation/records/**',\n '/cultivation/daily-report/**',\n '/cultivation/**',\n '/join-mentoring-member',\n '/acquisition-form/success'\n ]\n },\n marketplace: {\n excludeProvince:\n process.env.REACT_APP_MARKETPLACE_EXCLUDE_PROVINCE_ID?.split(',') ?? [],\n excludeCategory: []\n },\n dashboard: {\n consultationValues: [\n {\n title: 'Konsultasi Gratis',\n desc: 'Diskusi semuanya tentang budidaya tanpa pungutan biaya apapun.',\n img: consultationFreeConsultation\n },\n {\n title: 'Langsung dengan Ahlinya',\n desc: 'Konsultasi budidaya mulai dari pH air hingga penyakit udang dengan pakarnya.',\n img: consultationWithExpert\n },\n {\n title: 'Chat via WhatsApp',\n desc: 'Ahli kami akan selalu siap melayani kamu.',\n img: consultationChatViaApp\n }\n ],\n consultationTesti: [\n {\n name: 'Sapto Triyadi',\n location: 'Kebumen',\n img: sapto,\n testi:\n 'Jadi paham cara mengobati penyakit WFD serta berhasil menurunkan dari adanya infeksi penyakit WFD.'\n },\n {\n name: 'Syarifa Mayly',\n location: 'Sumatera Utara',\n img: syarifa,\n testi:\n 'Setelah melakukan konsultasi masalah kematian udang karena kres plankton, kini paham untuk mengatasi dan mengembalikan kondisi air menjadi stabil agar stres pada udang menurun.'\n },\n {\n name: 'Mamang',\n location: 'Sumenep Madura',\n img: mamang,\n testi:\n 'Melakukan konsultasi intens sehingga bisa lolos dari mortality, panennya pun menjadi memuaskan dibandingkan penambak daerah sekitar yang banyak terjadi gagal panen.'\n }\n ],\n consultationMessage:\n 'Halo, saya ingin bertanya seputar budidaya udang atau produk eFishery terkait tambak udang'\n },\n tawkTo: {\n propertyId: process.env.REACT_APP_TAWK_TO_PROPERTY_ID,\n widgetId: process.env.REACT_APP_TAWK_TO_WIDGET_ID\n },\n playStoreLink:\n 'https://play.google.com/store/apps/details?id=com.efishery.farmerapps&referrer=utm_source%3Dbtn_install_web_farmefishery_22%2520Juni%252022%26utm_medium%3Dbtn_install_web_farmefishery_22%2520Juni%252022%26utm_term%3Dbtn_install_web_farmefishery_22%2520Juni%252022%26utm_content%3Dbtn_install_web_farmefishery_22%2520Juni%252022%26utm_campaign%3Dbtn_install_web_farmefishery_22%2520Juni%252022%26anid%3Dadmob'\n};\n\nexport default config;\n","export const FlagsEnv = {\n isDev: process.env.REACT_APP_ENV === 'development',\n isStaging: process.env.REACT_APP_ENV === 'staging',\n isProduction: process.env.REACT_APP_ENV === 'production',\n isUat: process.env.REACT_APP_ENV === 'uat'\n};\n\nexport const ConfigEnv = {\n firebase: {\n apiKey: process.env.REACT_APP_FIREBASE_API_KEY ?? 'null',\n authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN ?? 'null',\n projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID ?? 'null',\n storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET ?? 'null',\n messagingSenderId:\n process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID ?? 'null',\n appId: process.env.REACT_APP_FIREBASE_APP_ID ?? 'null',\n measurementId: process.env.REACT_APP_FIREBASE_MEASUREMENT_ID ?? 'null'\n },\n analytics: {\n gtmId: process.env.REACT_APP_GTM_ID ?? '',\n fbPixelId: process.env.REACT_APP_FB_PIXEL_ID ?? '',\n appsFlyerId: process.env.REACT_APP_APPS_FLYER_ID ?? ''\n },\n clevertap: {\n projectId: process.env.REACT_APP_CLEVERTAP_PROJECT_ID ?? '',\n region: process.env.REACT_APP_CLEVERTAP_REGION ?? '',\n customPopupFeature: process.env.REACT_APP_FEATURE_CLEVERTAP_POPUP === '1'\n }\n};\n","const ACQUSISITION_STATE_STORAGE_KEY = 'acquisition-state';\nconst ACQUSISITION_DUMMY_STORAGE_KEY = 'is_dummy';\n\nexport const getAcquisitionState = () => {\n const state =\n JSON.parse(localStorage.getItem(ACQUSISITION_STATE_STORAGE_KEY)) || '';\n return state;\n};\n\nexport const setAcquisitionState = (state) => {\n localStorage.setItem(ACQUSISITION_STATE_STORAGE_KEY, JSON.stringify(state));\n};\n\nexport const editAcquisitionState = (key, value) => {\n const state = getAcquisitionState();\n state[key] = value;\n setAcquisitionState(state);\n};\n\nexport const deleteAcquisitionState = () => {\n localStorage.removeItem(ACQUSISITION_STATE_STORAGE_KEY);\n};\n\nexport const getDummyState = () => {\n const state = localStorage.getItem(ACQUSISITION_DUMMY_STORAGE_KEY);\n return state === 'true';\n};\n\nexport const setDummyState = () => {\n localStorage.setItem(ACQUSISITION_DUMMY_STORAGE_KEY, 'true');\n};\n\nexport const deleteDummyState = () => {\n localStorage.removeItem(ACQUSISITION_DUMMY_STORAGE_KEY);\n};\n","import Firebase from 'firebase/compat/app';\nimport { ConfigEnv } from './env';\nimport { getMessaging } from 'firebase/messaging/sw';\nimport { getToken } from 'firebase/messaging';\nimport { postDevices } from 'api/backend';\nimport { trackNotificationReceived } from './analytics';\nimport { isPushNotificationSupported } from './notification';\n\nconst firebaseConfig = ConfigEnv.firebase;\nexport const firebase = Firebase.initializeApp(firebaseConfig);\n\nlet messaging;\nif (isPushNotificationSupported()) {\n messaging = getMessaging(firebase);\n}\n\nexport const getFirebaseToken = async (lead_id) => {\n try {\n const currentToken = await getToken(messaging, {\n vapidKey: process.env.REACT_APP_FIREBASE_VAPID_KEY\n });\n if (currentToken) {\n await postDevices(lead_id, currentToken);\n return true;\n } else {\n console.log(`firebaseTokenError: ${currentToken}`);\n return false;\n }\n } catch (err) {\n console.log(`firebaseTokenError: ${err}`);\n return false;\n }\n};\n\nexport const onMessageListener = () =>\n new Promise((resolve) => {\n messaging.onMessage((payload) => {\n trackNotificationReceived();\n resolve(payload);\n });\n });\n","import {\n fetchAndActivate,\n getAll,\n getRemoteConfig\n} from 'firebase/remote-config';\nimport { firebase } from '../libs/firebase';\n\nexport const defaultValuesFlagsContext = {\n isWaterParameterEnabled: true,\n isRecommendationEnabled: true,\n isCycleIdentityEnabled: true,\n isSREnabled: true,\n isTotalFeedEnabled: true,\n isFCREnabled: true,\n isGrowthEnabled: true,\n isFeedLogsEnabled: true,\n isDiseaseEnabled: true,\n isHarvestEnabled: true,\n isSaprodiEnabled: true,\n isAmoniaAndNitriteEnabled: true,\n isLandingPageEnabled: true,\n isAcquisitionFormEnabled: true,\n isUsingNewDashboardVersion2: true,\n isVideoCanLike: true,\n isVideoCanComment: true,\n isSellShrimpEnabled: true,\n isCultivationCalculatorEnabled: true,\n isMarketplaceEnabled: true,\n isSurveyCalculatorEnabled: true,\n isMyPondsEnabled: false,\n isSurvicateCanClose: false,\n isDownloadPromptEnabled: false,\n isHarvestShrimpEnabledV2: false,\n isCultivationEventEnabled: false,\n isCultivationEventTutorialVideoEnabled: false,\n isCultivationHomePageEnabled: false,\n isProductRecommendationEnabled: false,\n isRelatedEventEnabled: false,\n isShipmentCostAndAddressEnabled: false,\n isCultivationRecordsEnabled: false,\n isOtpByWAEnabled: false,\n isListPromoEnabled: false,\n isNewConsultationEnabled: false,\n isUsingNewHistoryOrder: false,\n isMaintenanceEnabled: false,\n isReportPerCycleEnabled: false,\n isConsultationRegisterPremiumEnabled: false,\n isNotificationEnabled: true,\n isNonVerifiedFarmerInterceptorEnabled: false,\n isMarketplaceUsingGuestMode: false,\n isReportDetailsEnabled: false,\n isProductBestSellingEFarmEnabled: false,\n is3plInfoEnable: false,\n isABTestingProductEnabled: false,\n isJoinMentoringMemberPageEnabled: false,\n isRefreshTokenEnabled:\n process.env.REACT_APP_IS_REFRESH_TOKEN_ENABLED === 'true',\n isProductBundlingEnabled: false,\n isInternalModeEnabled: false,\n tokbudCsNumber: '-',\n expiryDurationPayment: '1440',\n isPaymentGatewayEnabled: false,\n isConfirmOrderCompleteEnabled: false,\n isComplaintFormEnabled: false,\n isFeedbackCustomerEnabled: true,\n //hapus kalau sudah aman di prod\n isGetWithLeadIdFarmsCultivation: false,\n isComplaintRequestTokenEnabled: false\n};\n\nexport const remoteConfig = () => {\n try {\n return getRemoteConfig(firebase);\n } catch (err) {\n if (err.response) {\n err.message = `Error get remote config ${err.response.status}`;\n }\n throw err;\n }\n};\n\nexport const fetchFlags = async () => {\n let newFlags = {};\n try {\n await fetchAndActivate(remoteConfig());\n const remoteFlags = getAll(remoteConfig());\n\n const keyWithObjectValues = [\n 'categoryDailyReports',\n 'isReportDetailsCategoryEnabled'\n ];\n const keyWithStringValues = ['tokbudCsNumber', 'expiryDurationPayment'];\n\n for (const [key, config] of Object.entries(remoteFlags)) {\n if (keyWithObjectValues.includes(key)) {\n newFlags[key] = config._value ? JSON.parse(config._value) : {};\n } else if (keyWithStringValues.includes(key)) {\n newFlags[key] = config._value;\n } else {\n newFlags[key] = config.asString() === 'true';\n }\n }\n return newFlags;\n } catch (error) {\n if (error.response) {\n error.message = `Error fetching flag HTTP ${error.response.status}`;\n }\n throw error;\n }\n};\n","import * as efiauth from 'libs/efiauth';\nimport axios from 'axios';\nimport packageJson from 'package-json';\n\nimport { getToolsbudToken } from '@cultivation-records/store/reportExternal';\n\nconst baseUrlCultivationService = process.env.REACT_APP_CULTIVATION_API_URL;\n\nconst setHeaderCultivation = {\n baseURL: baseUrlCultivationService,\n setHeaders: (headers, token) => {\n const toolsbudToken = getToolsbudToken();\n\n headers['Authorization'] = `Bearer ${\n toolsbudToken ? toolsbudToken : token\n }`;\n headers['X-Client-Id'] = toolsbudToken ? 'TOOLS_BUDIDAYA_V1' : 'EFARM';\n }\n};\n\nexport const apiCultivation = efiauth.createAxios(setHeaderCultivation);\n\nconst instanceTokenOpts = {\n setHeaders: (headers, token) => {\n headers['Authorization'] = `Bearer ${token}`;\n }\n};\n\nexport const instanceWithToken = efiauth.createAxios(\n efiauth.isRefreshTokenEnabled ? {} : instanceTokenOpts\n);\n\nexport const instanceWithTokenCustomer = efiauth.createAxiosCustomer(\n efiauth.isRefreshTokenEnabled ? {} : instanceTokenOpts\n);\n\nexport const instanceWithoutToken = axios.create({\n baseURL: process.env.REACT_APP_BACKEND_URL,\n headers: {\n 'X-Client-Id': 'efarm',\n 'X-Client-Version': packageJson.version\n }\n});\n\nexport const instanceCustomHeaders = (method, endpoint, headers, payload) => {\n let config = {\n method,\n url: `${process.env.REACT_APP_BACKEND_URL}${endpoint}`,\n headers,\n withCredentials: efiauth.isRefreshTokenEnabled\n };\n if (payload) Object.assign(config, { data: payload });\n return axios(config);\n};\n\nexport const request = async (requester) => {\n try {\n const res = await requester();\n return res?.data?.data;\n } catch (err) {\n if (err.response) {\n err.message = `Error HTTP ${err.response.status}`;\n if (err.response.status === 401) {\n efiauth.doLogout();\n }\n }\n throw err;\n }\n};\nexport const requestWithData = async (requester) => {\n try {\n const res = await requester();\n return res?.data;\n } catch (err) {\n if (err.response) {\n err.message = `Error HTTP ${err.response.status}`;\n if (err.response.status === 401) {\n efiauth.doLogout();\n }\n }\n throw err;\n }\n};\n","import { getItem, setItem, removeItem } from './skeleton';\nconst LEADS_STATE_STORAGE_KEY = 'leads-state';\n\nexport const getLeadsState = () => {\n const state =\n getItem(LEADS_STATE_STORAGE_KEY) !== undefined &&\n getItem(LEADS_STATE_STORAGE_KEY) !== ''\n ? JSON.parse(getItem(LEADS_STATE_STORAGE_KEY))\n : '';\n return state;\n};\n\nexport const setLeadsState = (state) => {\n setItem(LEADS_STATE_STORAGE_KEY, JSON.stringify(state));\n};\n\nexport const editLeadsState = (key, value) => {\n const state = getLeadsState();\n state[key] = value;\n setLeadsState(state);\n};\n\nexport const deleteLeadsState = () => {\n removeItem(LEADS_STATE_STORAGE_KEY);\n};\n\nexport const loadPersistedName = () => {\n const state = getLeadsState();\n return state === '' ? 'Hai, Pembudidaya' : state?.name;\n};\n","export const isPushNotificationSupported = () => {\n return 'serviceWorker' in navigator && 'PushManager' in window;\n};\n\nexport const isPushNotificationEnabled = () => {\n if (isPushNotificationSupported()) {\n let state = Notification.permission;\n switch (state) {\n case 'granted':\n return 'granted';\n case 'denied':\n return 'denied';\n default:\n return 'default';\n }\n }\n};\n","import { trackEvent, trackAFUserId } from 'libs/analytics';\n\nexport const trackUserLogin = (username, leadsId, leadsName) => {\n trackEvent('login', {\n username,\n lead_id: leadsId,\n lead_name: leadsName\n });\n trackAFUserId(leadsId);\n};\n\nexport const trackSignUp = (phoneNumber, questionnaire) => {\n trackEvent('sign_up_incomplete', {\n lead_phone: phoneNumber,\n questionnaire\n });\n trackAFUserId(phoneNumber);\n};\n\nexport const trackCompleteSignUp = (leadsId, leadsName) => {\n trackEvent('sign_up', {\n lead_id: leadsId,\n lead_name: leadsName\n });\n trackAFUserId(leadsId);\n};\n\nexport const trackUpdateData = (leadsId, leadsName) => {\n trackEvent('update_data', {\n lead_id: leadsId,\n lead_name: leadsName\n });\n trackAFUserId(leadsId);\n};\n\nexport const trackAlreadyLoggedIn = (leadsId, leadsName, phone) => {\n trackEvent('already_logged_in', {\n lead_id: leadsId,\n lead_name: leadsName,\n phone\n });\n trackAFUserId(leadsId);\n};\n\nexport const trackOtpRequested = (phone, media) => {\n trackEvent('otp_requested', {\n phone: `62${phone}`,\n media\n });\n};\n\nexport const trackOtpValid = (phone) => {\n trackEvent('otp_valid', {\n phone: `62${phone}`\n });\n};\n\nexport const trackOtpResend = (phone, media) => {\n trackEvent('otp_sent', {\n phone: `62${phone}`,\n media\n });\n};\n\nexport const trackUserLoginPhone = (phone) => {\n trackEvent('login_phone', {\n phone\n });\n};\n\nexport const trackerSignUpJourney = {\n trackLoginWithUsername: () => {\n trackEvent('btn_login_with_username');\n },\n trackLoginWithPhone: () => {\n trackEvent('btn_login_with_phone');\n },\n trackUseReferral: () => {\n trackEvent('btn_use_referral');\n },\n trackAttemptOTP: (value) => {\n trackEvent('attempt_otp', {\n try: value\n });\n }\n};\n","export default __webpack_public_path__ + \"static/media/icon-calendar.e888850a.png\";","import { lazy } from 'react';\nimport iconShop from 'assets/icons/new-dashboard/icon-shop.png';\nimport iconPlay from 'assets/icons/new-dashboard/icon-play.png';\nimport iconCalculator from 'assets/icons/new-dashboard/icon-calculator.png';\nimport iconShrimp from 'assets/icons/new-dashboard/icon-shrimp.png';\nimport iconCalendar from 'assets/icons/new-dashboard/icon-calendar.png';\nimport iconConsultation from 'assets/icons/new-dashboard/icon-consultation.png';\n\nconst LearnCultivationCard = lazy(() =>\n import('components/home/new-dashboard/LearnCultivationCard')\n);\nconst EventCultivationCard = lazy(() =>\n import('components/home/new-dashboard/EventCultivationCard')\n);\nconst SellShrimpCard = lazy(() =>\n import('components/home/new-dashboard/SellShrimpCard')\n);\n\nconst ConsultationCard = lazy(() =>\n import('components/home/new-dashboard/ConsultationCard')\n);\n\nexport const featureCard = [\n {\n id: 'sell-shrimp-card',\n title: 'Rencana Panen',\n className: 'px-2',\n path: '/shrimp-harvest',\n icon: (\n \"Rencana\n ),\n oldComponent: \n },\n {\n id: 'marketplace-card',\n title: 'Toko Budidaya',\n path: '/marketplace',\n className: 'pr-0',\n icon: \"Toko,\n oldComponent: null\n },\n {\n id: 'consultation-card',\n title: 'Konsultasi',\n path: '/consultation/wa',\n className: 'pl-0',\n icon: (\n \n ),\n oldComponent: \n },\n {\n id: 'learn-cultivation-card',\n title: 'Belajar Budidaya',\n path: '/learn-cultivation/list',\n className: 'pr-0',\n icon: (\n \"Belajar\n ),\n oldComponent: \n },\n {\n id: 'cultivation-calculator-card',\n title: 'Kalkulator',\n icon: (\n \"Rencana\n ),\n path: '/cultivation-calculator',\n oldComponent: null\n },\n {\n id: 'event-cultivation-card',\n title: 'Acara Budidaya',\n path: '/event-cultivation/list',\n className: 'pr-0',\n icon: (\n \"Acara\n ),\n oldComponent: \n }\n // {\n // id: \"financial-records\",\n // title: \"Pencatatan Keuangan\",\n // path: \"/learn-cultivation/list\",\n // className: \"pr-0\",\n // icon: \"Pencatatan,\n // oldComponent: \n // }\n];\n\nexport const belajar_budidaya = 'belajar_budidaya';\nexport const konsultasi_budidaya = 'konsultasi_budidaya';\nexport const rencana_panen = 'rencana_panen';\nexport const kalkulator_budidaya = 'kalkulator_budidaya';\nexport const toko_budidaya = 'toko_budidaya';\nexport const dl_konsultasi_budidaya = 'dl_konsultasi_budidaya';\nexport const DEEP_LINK_CREATE_FARM = 'buat_tambak';\n","import styled from 'styled-components';\n\ninterface TypographyProps {\n block: boolean;\n color:\n | 'grey'\n | 'white'\n | 'green'\n | 'orange'\n | 'yellow'\n | 'red'\n | 'black'\n | 'black-100'\n | 'black-300'\n | 'black-700'\n | 'primary-600'\n | 'primary-700';\n height: '400' | '600' | '800';\n weight: number;\n variant: '100' | '200' | '300' | '400' | '500' | 'caption' | 'small';\n}\n\nconst Typography = styled.div>`\n margin: 0;\n ${(props) => props.block && `display:${!props.block && 'inline-block'};`}\n font-size: ${(props) => props.variant === 'caption' && '8px'};\n font-size: ${(props) => props.variant === 'small' && '10px'};\n font-size: ${(props) => props.variant === '100' && '12px'};\n font-size: ${(props) => props.variant === '200' && '14px'};\n font-size: ${(props) => props.variant === '300' && '16px'};\n font-size: ${(props) => props.variant === '400' && '18px'};\n font-size: ${(props) => props.variant === '500' && '20px'};\n font-weight: ${(props) => props.weight};\n color: ${(props) => props.color === 'grey' && '#A5A5A5'};\n color: ${(props) => props.color === 'white' && '#FFFFFF'};\n color: ${(props) => props.color === 'green' && '#038767'};\n color: ${(props) => props.color === 'orange' && '#C05717'};\n color: ${(props) => props.color === 'yellow' && '#f49342'};\n color: ${(props) => props.color === 'red' && '#D44140'};\n color: ${(props) => props.color === 'black' && '#1D1D1D'};\n color: ${(props) => props.color === 'black-100' && '#D2D2D2'};\n color: ${(props) => props.color === 'black-300' && '#777777'};\n color: ${(props) => props.color === 'black-700' && '#26282B'};\n color: ${(props) => props.color === 'primary-600' && '#026C52'};\n color: ${(props) => props.color === 'primary-700' && '#02513E'};\n line-height: ${(props) => props.height === '400' && '18px'};\n line-height: ${(props) => props.height === '600' && '22px'};\n line-height: ${(props) => props.height === '800' && '26px'};\n letter-spacing: 0.5px;\n`;\n\nexport default Typography;\n","export const EFI_TOOLSBUD_TOKEN = '_efiToolsbudToken';\n\nexport function setToolsbudToken(token: string) {\n sessionStorage.setItem(EFI_TOOLSBUD_TOKEN, token);\n}\n\nexport function getToolsbudToken() {\n return sessionStorage.getItem(EFI_TOOLSBUD_TOKEN);\n}\n\nexport function removeToolsbudToken() {\n return sessionStorage.removeItem(EFI_TOOLSBUD_TOKEN);\n}\n"],"sourceRoot":""}