{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/common/Common.js","webpack:///./src/stores/loginSlice.js","webpack:///./src/Compare/CompareStore.js","webpack:///./src/stores/paylaterAPI.js","webpack:///external \"provinces\"","webpack:///./src/Compare/UseObservableState.js","webpack:///./src/Compare/UseSubscription.js","webpack:///./src/Detail/IdeaDecoration.js","webpack:///./src/stores/paylaterSlice.js","webpack:///./src/common/Component.js","webpack:///./src/Detail/partnerCalc.css?e0bd","webpack:///./src/Detail/partnerCalc.css","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/store.js","webpack:///./src/Detail/common.js","webpack:///./src/common/PropertyBox.js","webpack:///./src/Detail/ValidateHelper.js","webpack:///./src/Detail/calculatorsV2.js","webpack:///./src/Detail/PartnerHomeCalculatorTab.js","webpack:///./src/Detail/PartnerSMECalculatorTab.js","webpack:///./src/Detail/PartnerCalculator.js","webpack:///./src/Detail/Breadcrumbs.js","webpack:///./src/Detail/GallerySlide.js","webpack:///./src/Detail/HeadingWrapper.js","webpack:///./src/Detail/NewGoogleMap.js","webpack:///./src/Detail/Index.js","webpack:///./src/stores/propertySlice.js","webpack:///./src/Compare/Common.js","webpack:///./src/common/SearchHeader.js","webpack:///./src/common/Header.js","webpack:///./src/Compare/Comparision.js","webpack:///./src/Compare/FloatingCompareButton.js","webpack:///./src/common/LoginFooter.js","webpack:///./src/Compare/Comparision.css?fb03","webpack:///./src/Compare/Comparision.css","webpack:///./src/Compare/FloatingCompareButton.css?9f28","webpack:///./src/Compare/FloatingCompareButton.css","webpack:///./src/Detail/auctionConstants.js","webpack:///external \"configs\"","webpack:///./src/Detail/index.css?32d4","webpack:///./src/Detail/index.css"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","API_URL","process","Config","backendPFSURL","searchPagePath","_Config$pagesLink","pagesLink","search","$","mapipingForFriendlyUrl","gotoSearchPage","args","keys","queryParams","forEach","field","fieldName","from","to","indexOf","concat","unitToValue","values","split","location","option","filter","x","JSON","stringify","join","getUTM","num","multiple","parseFloat","replace","addSearchUrlParameter","obj","history","pushState","param","paramKeys","paramValues","_paramValues$i","_toConsumableArray","newurl","protocol","host","searchFilter","path","addCommas","nStr","z","x1","x2","rgx","test","undefined","isNaN","repeat","toFixed","utmParam","temp","getURLParameter","toLowerCase","decodeURIComponent","RegExp","exec","getPropertyType","_property$PropertyTyp","propertyType","PropertyTypeName","trim","getPropertyTypeEn","_property$PropertyTyp2","getArea","typeCode","hasValue","UseableArea","unit","AreaValue","Area","Rai","Ngan","SquareArea","formattedString","showBedAndBath","showAreaValue","showUseableAreaValue","val","isMobile","navigator","userAgent","postApiDataAsync","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","apiUrl","wrap","_context","prev","next","objRequest","abrupt","axios","post","urlPath","then","parse","Success","Data","error","success","errorMsg","errorCode","response","status","stop","_x","arguments","getApiDataAsync","_ref2","_callee2","_context2","params","headers","unused","sent","_x2","kloader","loader","removeClass","addClass","hasClass","valueRangeMaxMin","copyObject","getPathFromUrl","url","questionMarkIndex","sharpIndex","endIndex","areEqualObjValue","a","b","valid","index","_a$key$option","_b$key$option","noSpecialChar","scrollToValue","document","body","scrollTop","documentElement","setCookie","cname","cvalue","exdays","Date","setTime","getTime","expires","toUTCString","cookie","getCookie","ca","charAt","substring","after","times","func","this","setLikeProperty","PropertyID","like","favProp","includes","e","getCookieData","targetList","Promise","resolve","Items","PageSize","FavMaxPropertyReturnCount","CurrentPageIndex","PropertyIds","commonSearchDataChange","dispatch","payload","searchDataChange","OnsearchListChange","list","find","child","timeInRangeList","rangeList","time","some","range","dmyHmsToDateObj","str","dateTimeParts","dateParts","timeParts","getDateTimeFormat","date","hasTime","toLocaleDateString","year","month","day","toLocaleTimeString","hour","minute","groupDataBy","array","propertyName","reduce","acc","addQueryString","queryString","URLSearchParams","toString","getQueryStringParameter","addToFavoriteProperty","id","currentFavorites","updatedFavorites","Array","Set","removeFromFavoriteProperty","favorite","loginSlice","createSlice","initialState","customerInfo","fullName","required","errorMessage","label","placeholder","maxLength","phone","inputmode","email","otp","otpRef","otpID","token","IsActive","searchCriteria","customerSubscribeId","criteriaName","province","placeholderSearch","dropdownParent","district","subDistrict","housetype","code","group","land","townhouse","condo","commercialbuilding","warehouse","factory","apartment","office","resort","houseother","rangePrice","min","max","from_value","to_value","step","count","areaRange","useableAreaRange","frequency","submitFavEnable","AutoID","criteriaList","loading","reducers","searchCriteriaDataChange","state","action","searchCriteriaValidateChange","searchCriteriaListChange","searchCriteriaIonRangeChange","searchCriteriaIonRangeListChange","updateCriteriaIonRange","CheckBoxCriteriaChange","groupLength","entries","map","item","ClearSearchCriteria","addObjToCriteriaList","_action$payload","_action$payload2","_action$payload3","_provinceData$find","_action$payload4","_district$option$find","_action$payload5","_action$payload6","_action$payload7","_action$payload8","_action$payload9","provinceData","M","removeObjInCriteriaList","fillFromObjCriteriaList","assign","keyCheckBox","_typeof","searchCriteriaValidate","formsCusInfoDataChange","ClearCusInfo","_loginSlice$actions","actions","_rxjs","rxjs","BehaviorSubject","_rxjs$operators","Observable","defer","operators","tap","CompareStore","first","_createClass","_this","_classCallCheck","_defineProperty","compareProperty$","pipe","prop","Math","abs","_","openErrorPopup","initValue","element","addCompareProperty","message","html","css","display","on","_prop$BuildingAge","show","comparePropertyList","PropertyMediaes","newProperty","PropertyIDFormat","VillageTH","PromotionPrice","AdjustPrice","SellPrice","PMMaintenanceStatus","AmphurName","ProvinceName","Bedroom","Bathroom","BuildingAge","Age","MediaType","_objectSpread","section_comparision","compareStore","COMPARE_STORE_CONTEXT","createContext","merchantAPI","createApi","reducerPath","baseQuery","fetchBaseQuery","baseUrl","endpoints","builder","getMerchants","query","cacheTime","useGetMerchantsQuery","provinces","useObservableState","source","_useState","useState","_useState2","_slicedToArray","setState","observer","useEffect","subscription","subscribe","unsubscribe","useSubscription","getFullMediaURL","mediaPath","mediaURLPrefix","IdeaDecoration","React","memo","props","propertyDetail","AIImg","IdeaDecTemp","MediaPath","arr","IdeaDec","mediaArray","order","_order$map","type","media","rearrangeMediaTypes","toUpperCase","addtion","tab","tabDetail","tabModal","isArray","createElement","className","role","Fragment","img","src","alt","ideaSwiper","thumbs","Swiper","slidesPerView","initialSlide","spaceBetween","loop","pagination","el","clickable","navigation","nextEl","prevEl","threshold","centeredSlides","autoHeight","swiper","zoom","breakpoints","idElm","attr","slideIndex","slideName","slideTo","title","style","ModalDetail","makeAnOfferClick","isDecoration","areNearbyPlacesEqual","prevProps","nextProps","_prevProps$propertyDe","_nextProps$propertyDe","paylaterSlice","merchants","categories","subcategories","cate_relation","cate_logo","default_popular","selected_category","selected_subcategory","filter_popular_merchants","filter_merchants","search_popular_merchants","search_all_merchants","setMerchants","keysArray","sortedArray","sort","seq","parseInt","cate_th","subcat","subcate","popular","fg","unshift","self","findIndex","relation","temp2","setSelectedCategory","setSelectedSubCategory","unselectedCategory","filterCategory","_state$subcategories","setSearch","nm_en","nm_th","clearSearch","filterSubCategory","_paylaterSlice$action","updateMerchants","SelectList","_React$Component","_callSuper","templateSelection","minimumResultsForSearch","handleChange","handleOpen","_inherits","clearOption","OnformsDataChange","preventDefault","$el","select2","select2Setting","allowClear","templateResult","idioma","$span","text","one","trigger","_this2","ref","readOnly","notShowEmptyOption","renderChild","Component","IonRange","_React$Component2","_this3","size","ionRangeSlider","skin","grid","hide_from_to","hide_min_max","onFinish","update","destroy","_this4","RangeInput","Start","setStartValue","_useState3","_useState4","setEndValue","_useState5","_useState6","StartList","_useState7","_useState8","EndList","setEndListValue","dropdown","createRef","setStart","current","setEnd","renderStartChild","onClick","startClick","renderEndChild","endClick","classnames","CounterInput","CheckBoxIonInput","checked","hidden","CheckBoxCustomInput","spanText","dangerouslySetInnerHTML","__html","DropLeadSelectList","_React$Component4","_this7","dropdownCssClass","_this8","DropLeadInputField","onChange","target","onBlur","formsBlur","inputMode","api","content","default","options","locals","___CSS_LOADER_EXPORT___","webpackContext","req","webpackContextResolve","Error","configureStore","reducer","propertyReducer","login","loginReducer","paylater","paylaterReducer","middleware","getDefaultMiddleware","devTools","TagBadgeWrapper","IsPartner","IsNew","IsHot","PromotionName","PartnerDetail","SourceImageLogo","PriceWrapper","tag","Price","isAuction","PropertyDetailsTable","area","AssetInfoTH","whiteSpace","PropertyDetailsCondition","propertySourceName","PropertySourceID","PropertySourceName","InOutProblemTH","genList","PromotionRemark","PropertyInfoTable","coordinateHtmls","Latitude","Longtitude","PropertyDocumentName","DocumentNo","SpecialAnnouncement","color","AnnouncementText","promoStart","PromotionStartDate","promoEnd","PromotionEndDate","setHours","href","auctionDetailLink","_unused","PropertyRemark","remarkHtml","RemarkDetail","substr","listStyle","PropertyNearByTabList2024","NearbyPlaces","lg","CategoryDetail","hasFirstTab","details","detail","_detail$split","_detail$split2","PlaceName","Distance","TypeCode","icon","NameTH","places","_prevProps$NearbyPlac","_nextProps$NearbyPlac","DetailContainer","ShowAreaValue","ShowUseableArea","CarParking","PrivacyText","kbankPrivacyLink","getLocation","AddressNoTH","BuildingTH","FloorTH","SoiTH","RoadTH","isBangkok","TambonName","TagPropertiesWrapper","_group$split$filter","_group$split","CategoryGroup","tags","tagToLink","DetailWrapper","TableDetail","ShareConent","tabIndex","defaultValue","tweetShare","fbShare","lineMSG","mailShare","_props$title","_prepareDataForProope","prepareDataForProopertyBox","propertyDetailURL","thumbnailURL","areaHtml","bedRoomHtml","propertyTypeHtml","defaultThumbnailURL","PropertyImgComp","imgUrl","_ref$altName","altName","onError","currentTarget","onerror","ImgHoverComponent","PropertyBox","_property$PropertyID","isLike","setIslike","showLike","imgPCList","partner","pcUrl","active","OnLikeCheck","CompareButton","PropertyList","_property$PropertyMed","_property$PropertyMed2","_property$PropertyID2","_property$PropertyID3","_property$PropertyID4","_ref3","_ref3$isBedPTag","isBedPTag","_ref3$atBath","atBath","thumbnail","isInBangkok","addSpan","opacity","bed","bath","Logo","checkIsPartner","SourceSaleType","numberOnlyRegEx","IsNumberOnly","toThousandSeparated","isNegative","output","getAmount","VaridateCalcDataField","formData","formDataField","minValue","VaridateDropleadDataField","isThaiEngNonNumber","mobileNo","sum","checkID","companyNameRegEx","ch","thaiEngNonNumberRegEx","CalculatorsV2","useDispatch","isEditMode","setIsEditMode","forcePositiveNumber","forceNumber","formsDataChange","numValue","numStr","maxDigit","formsCalcDataChange","CalcValidateChange","newValue","calFormData","stayInstallmentYear","stayPropertyLimitAmount","stayDecorationLimitAmount","stayIncomePerMonth","stayDebtBurdenPerMonth","businessInstallmentYear","businessPropertyLimitAmount","businessDecorationLimitAmount","businessIncomePerMonth","businessDebtBurdenPerMonth","calHomeLoanSetting","calculatorHomeLoanSetting","calLandSetting","calculatorLandSetting","calSMESetting","calculatorSMESetting","stayTotalInstallmentPerMonth","stayTotalLimitAmount","maxValue","note","validateCalcForm","stayCanTakeDecoration","stayPropertyInstallmentPerMonth","stayDecorationInstallmentPerMonth","appliedCalcTypes","forStay","calcTypes","Home","checkCalError","calHomeLoan","B2_propertyPrice","definedPropertyPrice","B3_homeLoanType","B3HomeLoanType","B5_propertyLoanAmount","B6_career","B6Career","B7_age","B7Age","B9_propertyLoanYear","B10_salary","B11_deptBurdenPerMonth","B12_appraisalPrice","appraisalPrice","B20_decorationLoanAmount","B21_decorationLoanYear","showCalErrorPopup","B16_HLInstallmentPerMonth","B26_HDInstallmentPerMonth","B14_HLPrimaryMaxLimit","B24_HDPrimaryMaxLimit","B19_canTakeOnDecorationLoan","getValidateField","decoration","Land","calLand","B16_installmentPerMonth","B14_primaryMaxLimit","businessTotalInstallmentPerMonth","businessTotalLimitAmount","businessPropertyInstallmentPerMonth","businessDecorationInstallmentPerMonth","resultSME","calSME","D10_propertyPrice","D12_propertyLoanAmount","D18_propertyType","smePropertyType","D20_appraisalPrice","D28_propertyLoanYear","D30_profitPerMonth","D32_deptBurdenPerMonth","D37_decorationLoanAmount","D53_errorMessage","D46_propertyInstallmentPerMonth","D50_decorationInstallmentPerMonth","D44_propertyPrimaryMaxLoanAmount","D48_decorationPrimaryMaxLoanAmount","recalculate","calResult","errors","validateFields","stayValidateFields","businessValidateFields","every","validateField","ErrorMessage","defaultLoanYear","DefaultLoanYear","B29_HLInstallmentPerMonth","B34_HDInstallmentPerMonth","B28_HLLimit","B33_HDLimit","B8_maxLoanYear","B19_HLInstallmentPerMonth","B18_HLLimit","propertyTypeID","smeDefaultLoanYear","DefaultOtherLoanYear","DefaultBuildingLoanYear","D56_loanableYear","I30_maxLoanYear","propertyId","paddingTop","class","oninput","F4_limitBot","ROUNDUP","formulajs","ROUNDDOWN","PV","PMT","F5_limitKBank","LimitKBank","F15_MRR","KBankMRR","F18_HLBaseRate","HLBaseRate","F24_HDBaseRate","HDBaseRate","LimitBotHouse1LessThan10MB","LimitBotHouse1GreaterThan10MB","LimitBotHouse2InstallGreaterThan2Years","LimitBotHouse2InstallLessThan2Years","LimitBotHouse3","B4_maxLimitFromPrice","F6","F8_salary","F9_entre","F10","F8SalaryLessThan30000","F8Salary30000To70000","F8SalaryGreaterThan70000","F9SalaryLessThan30000","F9Salary30000To70000","F9SalaryGreaterThan70000","B15_HLLoanableYear","F12_Inst2","F19_HLRate","maxPropertyLimit","F13_Limt","F14_LTVMinusHL","B19_HDMaxDecorationLimit","B25_HDLoanableYear","F28_Inst2MinusB16","F25_HDRate","maxDecorationLimit","F29_Limit2","inputs","F18_baseRate","F18BaseRate","B15_loanableYear","F19_rate","ROUND","I25_MRR","C1_MRR","I26_LNRateForInstallmentSecured","C2_LNRateForInstallmentSecured","I27_MinimumDSCR","C3_MinimumDSCR","I28_NetProfitDeptRatioConfig","C4_NetProfitDeptRatioConfig","I32_LTV","C8_LTV","I17_profitPerMonth","O14_finalTerm","pow","O17_debtRatio","I18_deptBurdenPerMonth","I11_finalPrice","O11_interestForIncomingDebt","V11_DSCR","I12_loanAmount","S17_incomingDebt","Z14_finalOffer","AD11_limitDSCRNotPass","V17_installmentLimit","Z13_limitOnPrice","Z21_finalOfferLorPorGor","AD12_limitDSCRPass","AE18_primaryMaxLoanAmount","Z20_limitOnLorPorGor","D35_maxDecorationLimit","AE11_installmentDSCRNotPass","Z15_installmentPlusIntOffer","AE12_installmentDSCRPass","AE22_installmentPerMonth","Z22_installmentPlusIntOffer","C54_debtRecommendMessage","D54_debtRecommendAmount","PartnerHomeCalculatorTab","validateMaxMin","tabClick","onTabClick","price","Intl","NumberFormat","useGrouping","format","getElementById","disabled","pointerEvents","fontSize","PartnerSMECalculatorTab","calPartnerSME","Partner_DefaultLoanYear","Partner_C1_MRR","Partner_C2_LNRateForInstallmentSecured","Partner_C3_MinimumDSCR","Partner_C4_NetProfitDeptRatioConfig","Partner_C6_MaxLoanYear","Partner_C8_LTV","PartnerCalculator","calTab","setCalTab","_extends","calcDetail","Breadcrumbs","home","rel","clas","TitlePageName","areEqual","GallerySlide","slideImages","setslideImages","onLoad","initPageJs","ReaderChild","componentClassName","setAttribute","imageTypes","areSlideImagesEqual","_prevProps$list","_nextProps$list","HeadingWrapper","PropertyIDPN","GaCountView","FavoriteToggleButton","propId","ShareBtn","PrintBtn","CompareButtonWithText","printDetail","isFavorite","setIsFavorite","isPropertyInFavorites","containerStyle","width","height","GMap","PropertiesInfoRelated","isLoaded","useJsApiLoader","googleMapsApiKey","lat","lng","center","_React$useState","_React$useState2","setMap","_React$useState3","scaledSize","anchor","y","_React$useState4","mainPin","setMainPin","_React$useState5","_React$useState6","pin","setPin","activeMarker","setActiveMarker","handleActiveMarker","marker","useCallback","google","maps","Size","Point","controlDiv","controls","ControlPosition","LEFT_BOTTOM","GoogleMap","mapContainerStyle","Marker","position","InfoWindow","onCloseClick","RenderInfoWindow","renderMarker","MyGoogleMap","arePropertiesInfoRelatedEqual","_prevProps$Properties","_nextProps$Properties","geolocation","getCurrentPosition","coords","latitude","longitude","open","err","alertMessage","mapNavButtonClicked","store","placeTypes","backendNPAURL","ReCAPTCHASiteKey","regexForReplace","freeze","thaiEngWithSpace","numberOnly","emojiRegEx","propertyForAuction","auctionTime","currentlyInAuction","DetailPage","_propertyDetail$AIImg","_useSelector","useSelector","Like","dropleadDetail","_useSelector2","closePageStartTime","closePageEndTime","enableOfferLink","setEnableOfferLink","enableDropleadLink","setIsAuction","currentTime","_useState9","_useState10","showNaCitizenId","setShowNaCitizenId","_useState11","_useState12","hasCustomerInfo","setHasCustomerInfo","_useState13","_useState14","fbNpaList","setFbNpaList","_useState15","_useState16","recaptchaRef","_useCookies","useCookies","_useCookies2","cookies","tempDataDetail","GAScore","getValue","makeAnOffer","enablePageLink","moment","locale","leadby","propID","urlWithQuery","offer","cancelMakeAnOffer","getNearByPlaceByGroupCode","placeList","PlaceType","dropleadDataChange","limit","tempValue","toLocaleString","formsDropleadDataChange","dropleadBlur","usertype","dropLeadDraft","juValidateField","DropleadValidateChange","validateDropleadPart1","dataLayer","event","trigger_type","fb_npa_list","_sendDraft","sendDraft","_recaptchaRef$current","reset","_recaptchaRef$current2","userType","interest","utm_campaign","utm_source","utm_medium","utm_content","utm_term","e2e_bannerid","pfsURL","postPromise","naCitizenIdVal","executeAsync","recapchaResult","t0","consentCheck","naCitizenId","jwtData","value01","value02","value03","value04","value05","value06","value07","value08","value09","value10","value11","value12","value13","SourceCode","value14","juJuristicId","juFirstName","juLastName","value15","value16","HasCustomerInfo","animate","offset","top","eventCategory","eventAction","eventLabel","dimension40","dimension41","dropLeadSubmit","normalValidateField","normalValidateFieldNotHasCustomerInfo","validateDropleadPart2","firstName","lastName","naSalary","naFirstName","naLastName","naCareer","availableTime","value17","value18","companyName","juCompanyName","dimension15","dimension5","dimension18","dimension19","dimension20","dimension21","eventCallback","eventTimeout","getCalculatorSetting","settingRow","setting","Code","Value","whenSetCookie","Allow_Cookies","liveChatClick","_tempDataDetail$Prope","hasSellPrice","LinkLineChat","DataLineChat","placeTypesList","tempDataDetailPropertiesInfoRelated","updateSearchResultList","hasMore","likeProperty","recentlyviewedProperty","hide","definePrice","KKApprovePrice","CalculatorHomeLoanSetting","CalculatorLandSetting","CalculatorSMESetting","areaValue","forBusiness","SME","getAppliedCalcTypes","updatePropertyDetail","initDetail","content_id","content_type","property_type","careerList","OccupationList","row","Description","DropleadListChange","callbackPeriodList","ConvenientTimeList","ready","ReCAPTCHA","sitekey","HeaderWithSearch","searchBtn","hideDesktop","htmlFor","AfterShowOpacity","confirmphone","dropleadDesktopBack","margin","dropleadMobileBack","SuggestPart","_useSelector3","searchResult","suggestProperty","ReactDOM","render","CookiesProvider","Provider","LoginFooter","propertySlice","keyword","station","rangeField","areaField","useableAreaField","bedroom","bathroom","assetTypes","propertybank","propertywaitsale","partnership","expand","resultLength","showTab","pageIndex","isLoading","TotalRows","promoProperty","popularProperty","favoriteProperty","favoritePropertyList","searchListChange","searchIonRangeChange","searchIonRangeListChange","updateIonRange","CheckBoxChange","ClearSearch","suggest","likePropertyList","PropertyObjTemp","PropertyObj","listName","likeList","updateLikeInList","PropertyLikeList","updatesearchFilterCheckBox","valueCode","toUpdate","searchResultDataChange","OnPropertyListLoading","searchResultPageIndexChange","visible","formsCalcRangeInputChange","formsCalcPropsChange","_propertySlice$action","useContext","isCompare","isExistCompareProperty","priceFilter","provinceFilter","propertyTypeFilter","PopUpSearch","OnInputChange","OnRadioCheck","IonRangeDataChange","RangeInputDataChange","GoToSearch","rangeMin","setRangeMin","rangeMax","setRangeMax","areaMin","setAreaMin","areaMax","setAreaMax","useableAreaMin","setUseableAreaMin","useableAreaMax","setUseableAreaMax","handleRadioChange","minMaxString","onRangeChange","onAreaChange","onUseableAreaChange","onKeyPress","renderAssetTypesCheckBox","renderCheckBox","HeaderNav","Body","promotion","tutorial","faq","querySelectorAll","addEventListener","event_category","event_action","event_label","innerText","MobileNav","marginRight","Header","StationNameTH","StationID","Longitude","localeCompare","setTimeout","querySelector","noti","search_text","search_location","search_filter_1","search_filter_2","dimension49","dimension7","dimension50","dimension51","Comparision","comparePropertyLength","comparePropertyLength$","onRemoveAllCompareProperty","removeAllCompareProperty","Compare","AllCardCompare","getComparePropertyList","GenerateCard","propertyMediaes","getPropertyName","propertyImage","removeCompareProperty","FloatingCompareButton","setCompareProperty","classNames","Boolean","likeCount","setLikeCount","favClick","goToUrl","favoritePropertyValue","setInterval","InfoFooter","PropertyforsaleLinkComponent","HouseLinkComponent","TownhouseLinkComponent","CondominiumLinkComponent","CommercialBuildingLinkComponent","LandLinkComponent","AllLinkComponent","showHomePage","pathname","configs"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAKlC,IAFGe,GAAqBA,EAAoBhB,GAEtCO,EAASC,QACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,GACR,CACA,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,EAC9C,CACGA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,IAEtE,CAEA,OAAOD,CACR,CAGA,IAAIQ,EAAmB,CAAC,EAKpBhB,EAAkB,CACrB,EAAG,GAGAK,EAAkB,GAGtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU6B,QAGnC,IAAIC,EAASF,EAAiB5B,GAAY,CACzCK,EAAGL,EACH+B,GAAG,EACHF,QAAS,CAAC,GAUX,OANAf,EAAQd,GAAUW,KAAKmB,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG/DI,EAAOC,GAAI,EAGJD,EAAOD,OACf,CAIAH,EAAoBM,EAAIlB,EAGxBY,EAAoBO,EAAIL,EAGxBF,EAAoBQ,EAAI,SAASL,EAASM,EAAMC,GAC3CV,EAAoBW,EAAER,EAASM,IAClC3B,OAAO8B,eAAeT,EAASM,EAAM,CAAEI,YAAY,EAAMC,IAAKJ,GAEhE,EAGAV,EAAoBe,EAAI,SAASZ,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CnC,OAAO8B,eAAeT,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DpC,OAAO8B,eAAeT,EAAS,aAAc,CAAEe,OAAO,GACvD,EAOAlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKxC,OAAOyC,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBxC,OAAO8B,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBQ,EAAEc,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAtB,EAAoB0B,EAAI,SAAStB,GAChC,IAAIM,EAASN,GAAUA,EAAOiB,WAC7B,WAAwB,OAAOjB,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAJ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,CACR,EAGAV,EAAoBW,EAAI,SAASgB,EAAQC,GAAY,OAAO9C,OAAOC,UAAUC,eAAeC,KAAK0C,EAAQC,EAAW,EAGpH5B,EAAoB6B,EAAI,GAExB,IAAIC,EAAaC,OAAqB,aAAIA,OAAqB,cAAK,GAChEC,EAAmBF,EAAW3C,KAAKsC,KAAKK,GAC5CA,EAAW3C,KAAOf,EAClB0D,EAAaA,EAAWG,QACxB,IAAI,IAAItD,EAAI,EAAGA,EAAImD,EAAWjD,OAAQF,IAAKP,EAAqB0D,EAAWnD,IAC3E,IAAIU,EAAsB2C,EAI1BzC,EAAgBJ,KAAK,CAAC,IAAI,IAEnBM,G,qwCCnJHyC,EAAUC,IADY,OAANC,UAAM,IAANA,SAAM,EAANA,IAAQC,eAExBC,EAAuB,OAANF,UAAM,IAANA,KAAiB,QAAXG,EAANH,IAAQI,iBAAS,IAAAD,OAAA,EAAjBA,EAAmBE,OACpCC,EAAIX,OAAOW,EAEXC,EAAyB,CAC7B,sBAAuB,6CACvB,kBAAmB,0CACnB,oBAAqB,uCACrB,kBAAmB,kCACnB,kBAAmB,mCACnB,kBAAmB,uCACnB,kBAAmB,yCACnB,kBAAmB,iDACnB,kBAAmB,uCACnB,kBAAmB,qCACnB,kBAAmB,uCACnB,kBAAmB,6CACnB,kBAAmB,oCACnB,cAAe,qCACf,cAAe,wCACf,cAAe,yCACf,cAAe,yCACf,cAAe,0CACf,cAAe,uCACf,cAAe,sCACf,cAAe,sCACf,cAAe,8CACf,cAAe,oCACf,uBAAwB,wCACxB,6BAA8B,wCAC9B,6BAA8B,wCAC9B,8BAA+B,yCAC/B,+BAAgC,0CAChC,sBAAuB,4CAGZC,EAAiB,SAACC,GAc7B,GAAiC,IAA7B/D,OAAOgE,KAAKD,GAAMhE,OACpB,OAAOyD,EAGT,IAAIS,EAAc,GAsClB,OArCAjE,OAAOgE,KAAKD,GAAMG,SAAQ,SAAUxB,GAClC,IAAIyB,EAAQJ,EAAKrB,GAAK0B,UACtB,GAAIL,EAAKrB,GAAKN,MACZ,GAAY,eAARM,GAAgC,cAARA,GAA+B,qBAARA,EAA4B,CAC7E,IAAIN,EAAQ2B,EAAKrB,GAAKN,MAClBiC,EAAO,IACPC,EAAK,KAEwB,IAA7BlC,EAAMmC,QAAQ,WAChBD,EAAKlC,EACLA,EAAQ,GAAHoC,OAAMC,EAAYJ,GAAK,KAAAG,OAAIC,EAAYH,MACJ,IAA/BlC,EAAMmC,QAAQ,aACvBF,EAAOjC,EACPkC,EAAKP,EAAKrB,GAAKgC,OAAOvB,OAAO,GAAG,GAChCf,EAAQ,GAAHoC,OAAMC,EAAYJ,MAEvBA,EAAOjC,EAAMuC,MAAM,KAAK,GACxBL,EAAKlC,EAAMuC,MAAM,KAAK,GACtBvC,EAAQ,GAAHoC,OAAMC,EAAYJ,GAAK,KAAAG,OAAIC,EAAYH,KAI9CL,EAAY5D,KAAK,GAADmE,OAAIL,EAAK,KAAAK,OAAIpC,GAC/B,MAAO,GAAY,UAARM,QACJ,GAAY,YAARA,EAAmB,CAC5BuB,EAAY5D,KAAK,GAADmE,OAAIL,EAAK,KAAAK,OAAIT,EAAKrB,GAAKN,QACvC,IAAIwC,EAAWb,EAAKrB,GAAKmC,OAAOC,QAAO,SAACC,GAAC,OAAKA,EAAE3C,OAAS2B,EAAKrB,GAAKN,KAAK,IAAE,GACtEwC,GACFX,EAAY5D,KAAK,UAADmE,OAAWQ,KAAKC,UAAUL,EAASA,WAEvD,MACEX,EAAY5D,KAAK,GAADmE,OAAIL,EAAK,KAAAK,OAAIT,EAAKrB,GAAKN,YAEX,iBAAd2B,EAAKrB,IAAqBqB,EAAKrB,IAC/CuB,EAAY5D,KAAK,GAADmE,OAAIL,EAAK,KAAAK,OAAIT,EAAKrB,IAEtC,IACImB,EAAuBI,EAAYiB,KAAK,MACnCrB,EAAuBI,EAAYiB,KAAK,MAAQ,IAElD1B,EAAiB,IAAMS,EAAYiB,KAAK,KAAO,IAAMC,GAC9D,EAEO,SAASV,EAAYW,GAC1B,IAAMC,GAAmC,IAAxBD,EAAIb,QAAQ,OAAgB,KAAkC,IAAxBa,EAAIb,QAAQ,OAAgB,IAAM,EAGzF,OAFce,WAAWF,EAAIG,QAAQ,OAAQ,KAE9BF,CACjB,CAEO,SAASG,EAAsBC,EAAK3C,GACzC,GAAI4C,QAAQC,UAAW,CACrB,IAAIC,EAAQ,GAENC,EAAY7F,OAAOgE,KAAKyB,GACxBK,EAAc9F,OAAO0E,OAAOe,GAElC,IAAK,IAAM5F,KAAKgG,EAAW,KAAAE,EACzBH,EAAQ,GAAHpB,OAAAwB,IAAOJ,GAAK,IAAApB,OAAKqB,EAAUhG,GAAE,KAAA2E,OAAkB,QAAlBuB,EAAID,EAAYjG,UAAE,IAAAkG,IAAI,KAC1D,CAEA,IAAIE,EACFhD,OAAO2B,SAASsB,SAChB,KACAjD,OAAO2B,SAASuB,KAChBrC,EAAehB,EAASsD,eACvBR,EAAM7F,OAAS,GAAK,GAAJyE,OAAOoB,EAAMV,KAAK,OACrCjC,OAAOyC,QAAQC,UAAU,CAAEU,KAAMJ,GAAU,GAAIA,EACjD,CACF,CAEO,SAASK,EAAUC,EAAMC,GAO9B,IAJA,IAAIzB,GADJwB,GADAA,GAAQ,IACIhB,QAAQ,KAAM,KACbZ,MAAM,KACf8B,EAAK1B,EAAE,GACP2B,EAAK3B,EAAEhF,OAAS,EAAI,IAAMgF,EAAE,GAAK,GACjC4B,EAAM,eACHA,EAAIC,KAAKH,IACdA,EAAKA,EAAGlB,QAAQoB,EAAK,SASvB,YAPUE,IAANL,IAEAE,EADQ,IAANF,EACG,GAEAM,MAAMxB,WAAWoB,IAAO,IAAM,IAAIK,OAAOP,GAAKlB,WAAWoB,GAAIM,QAAQR,GAAGrD,MAAM,IAGhFsD,EAAKC,CACd,CAEO,SAASvB,IACd,IAAI8B,EAAW,GAOf,MANA,CAAC,aAAc,aAAc,eAAgB,cAAe,YAAY/C,SAAQ,SAACa,GAC/E,IAAImC,EAAOC,EAAgBpC,GACvBmC,IACFD,GAAY,IAAMlC,EAAI,IAAMmC,EAEhC,IACOD,EAASlH,OAAS,EAAIkH,EAAS9D,MAAM,GAAK8D,CACnD,CAEO,SAASE,EAAgBxF,GAE9B,OADAA,EAAOA,EAAKyF,cAEVC,oBACG,IAAIC,OAAO,QAAU3F,EAAV,uBAA6C4F,KACvD3C,SAASjB,OAAOyD,gBACb,CAAC,CAAE,KAAK,GAAG7B,QAAQ,MAAO,SAC5B,IAET,CAEO,SAASiC,EAAgB1E,GAAU,IAAA2E,EACpCC,GAAyC,QAA1BD,EAAC3E,EAAS6E,wBAAgB,IAAAF,IAAI,IAC9CG,OACArC,QAAQ,WAAY,IACpBZ,MAAM,KAAK,GAEd,MAAqB,iBAAjB+C,EACK,aACmB,oBAAjBA,EACF,eACmB,oBAAjBA,EACF,SACmB,gBAAjBA,EACF,SAEAA,CAEX,CAEO,SAASG,EAAkB/E,GAAU,IAAAgF,EAM1C,QAL6C,QAA1BA,EAAChF,EAAS6E,wBAAgB,IAAAG,IAAI,IAC9CF,OACArC,QAAQ,WAAY,IACpBZ,MAAM,KAAK,IAGZ,IAAK,KACH,MAAO,YACT,IAAK,KACH,MAAO,QACT,IAAK,KACH,MAAO,QACT,IAAK,KACH,MAAO,OACT,IAAK,KACH,MAAO,eACT,IAAK,KACH,MAAO,YACT,QACE,MAAO,QAEb,CAEO,SAASoD,EAAQjF,GACtB,IAAIkF,EAQJ,GAAiB,QALfA,EADEC,EAASnF,EAAS6E,kBACT7E,EAAS6E,iBAAiBC,OAAOjD,MAAM,KAAK,GAE5C,MAKX,OAAIsD,EAASnF,EAASoF,cAAyC,IAAzBpF,EAASoF,YACtC,CACL9F,MAAOU,EAASoF,YAAYlB,QAAQ,GACpCmB,KAAM,SAECF,EAASnF,EAASsF,YAAqC,IAAvBtF,EAASsF,UAC3C,CACLhG,MAAOU,EAASsF,UAAUpB,QAAQ,GAClCmB,KAAM,SAGD,KAEJ,GAAiB,OAAbH,EAET,OAAIC,EAASnF,EAASoF,cAAyC,IAAzBpF,EAASoF,YACtC,CACL9F,MAAOU,EAASoF,YAAYlB,QAAQ,GACpCmB,KAAM,SAECF,EAASnF,EAASsF,YAAqC,IAAvBtF,EAASsF,UAC3C,CACLhG,MAAOU,EAASsF,UAAUpB,QAAQ,GAClCmB,KAAM,SAGD,KAEJ,GAAiB,OAAbH,GAAkC,OAAbA,GAAkC,OAAbA,GAAkC,OAAbA,EAExE,OAAIC,EAASnF,EAASsF,YAAqC,IAAvBtF,EAASsF,UACpC,CACLhG,MAAOU,EAASsF,UAAUpB,QAAQ,GAClCmB,KAAM,SAGD,KAEJ,GAAiB,OAAbH,EAET,OAAO,KAGP,GAAIC,EAASnF,EAASuF,OAA2B,aAAlBvF,EAASuF,KACtC,MAAO,CACLjG,MAAOU,EAASuF,KAChBF,KAAM,OAEH,GAAIF,EAASnF,EAASwF,MAAQL,EAASnF,EAASyF,OAASN,EAASnF,EAAS0F,YAAa,CAC7F,IAAMC,EAAkB,GAAHjE,OAAM1B,EAASwF,IAAG,KAAA9D,OAAI1B,EAASyF,KAAI,KAAA/D,OACtD1B,EAAS0F,WAAWxB,QAAQ,IAAM,QAEpC,MAAuB,YAAnByB,EACK,KAEF,CACLrG,MAAOqG,EACPN,KAAM,MAEV,CACE,OAAO,IAGb,CAEO,SAASO,EAAe5F,GAC7B,IAAIkF,EAQJ,MACe,QANbA,EADEC,EAASnF,EAAS6E,kBACT7E,EAAS6E,iBAAiBC,OAAOjD,MAAM,KAAK,GAE5C,OAKE,OAAbqD,GACa,OAAbA,GACa,OAAbA,GACa,OAAbA,GACa,OAAbA,GACa,OAAbA,CAQJ,CAEO,SAASW,EAAc7F,GAC5B,IAAIkF,EAQJ,MAAiB,QALfA,EADEC,EAASnF,EAAS6E,kBACT7E,EAAS6E,iBAAiBC,OAAOjD,MAAM,KAAK,GAE5C,OAGyB,OAAbqD,CAO3B,CAEO,SAASY,EAAqB9F,GACnC,IACIkF,EAQJ,OALEA,EADEC,EAASnF,EAAS6E,kBACT7E,EAAS6E,iBAAiBC,OAAOjD,MAAM,KAAK,GAE5C,MAG8B,IATnB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MASnCJ,QAAQyD,EAO9B,CAEA,SAASC,EAASY,GAChB,OAAY,OAARA,GAAwB,KAARA,QAAsBhC,IAARgC,CAKpC,CAEO,SAASC,IACd,MAAO,iEAAiElC,KAAKmC,UAAUC,UACzF,CAEO,IAAMC,EAAgB,eAAAC,EAAAC,IAAAC,IAAAC,MAAG,SAAAC,EAAOvF,GAAI,IAAAwF,EAAA,OAAAH,IAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAQxC,OAPgB5F,EAAK6F,WAGlBL,EAASnG,EAETW,EAAKwF,SACPA,EAASlG,GAA2BU,EAAKwF,QAC1CE,EAAAI,OAAA,SAEMC,IAAMC,KAAK,GAADvF,OAAI+E,GAAM/E,OAAGT,EAAKiG,SAAWjG,EAAK6F,YAAYK,MAC7D,SAAU1K,GACR,IAAMqB,EAASoE,KAAKkF,MAAM3K,EAAKA,KAAKmC,GACpC,GAAId,EAAOuJ,QACT,OAAOvJ,EAAOwJ,KAEhB,MAAMxJ,CACR,IACA,SAAUyJ,GACR,KAAM,CACJC,SAAS,EACTC,SAAU,qDACVC,UAAWH,EAAMI,SAAWJ,EAAMI,SAASC,OAASL,EAExD,KACD,wBAAAZ,EAAAkB,OAAA,GAAArB,EAAA,KACF,gBA1B4BsB,GAAA,OAAA1B,EAAAxI,MAAA,KAAAmK,UAAA,KA4BhBC,EAAe,eAAAC,EAAA5B,IAAAC,IAAAC,MAAG,SAAA2B,EAAOjH,GAAI,IAAAwF,EAAA,OAAAH,IAAAI,MAAA,SAAAyB,GAAA,cAAAA,EAAAvB,KAAAuB,EAAAtB,MAAA,OAOvC,OAJGJ,EAASnG,EAETW,EAAKwF,SACPA,EAASlG,GAA2BU,EAAKwF,QAC1C0B,EAAAtB,KAAA,EAEYG,IACV9H,IAAI,GAADwC,OAAI+E,GAAM/E,OAAGT,EAAKiG,SAAW,CAC/BkB,OAAQnH,EAAKmH,OACbC,QAAS,CACP,eAAgB,kCAElB5L,KAAM,CAAE6L,OAAQ,KAEjBnB,MACC,SAAU1K,GACR,IAAMqB,EAASoE,KAAKkF,MAAM3K,EAAKA,KAAKmC,GACpC,GAAId,EAAOuJ,QACT,OAAOvJ,EAAOwJ,KAEhB,MAAMxJ,CACR,IACA,SAAUyJ,GACR,KAAM,CACJC,SAAS,EACTC,SAAU,qDACVC,UAAWH,EAAMI,SAAWJ,EAAMI,SAASC,OAASL,EAExD,IACD,cAAAY,EAAApB,OAAA,SAAAoB,EAAAI,MAAA,wBAAAJ,EAAAN,OAAA,GAAAK,EAAA,KACJ,gBAjC2BM,GAAA,OAAAP,EAAArK,MAAA,KAAAmK,UAAA,KA6DrB,SAASU,EAAQnJ,GACtB,IAAMoJ,EAAS5H,EAAE,qBAEI,IAAVxB,EACLA,EAEFoJ,EAAOC,YAAY,QAGnB7H,EAAE4H,GAAQE,SAAS,QAGjBF,EAAOG,SAAS,QAElBH,EAAOC,YAAY,QAGnB7H,EAAE4H,GAAQE,SAAS,OAGzB,CAEO,SAASE,EAAiBxH,EAAWC,EAAMC,GAChD,IAAIlC,EAAQ,GAYZ,MAXa,YAATiC,GAA6B,YAAPC,EACxBlC,EAAQ,GACU,YAATiC,GAA+B,KAATA,EAC/BjC,EAAQ,UAAYkC,EACJ,YAAPA,GAA2B,KAAPA,GAC7BlC,EAAQ,YAAciC,EACtBC,EAAK,OAELlC,EAAQ,GAAHoC,OAAMH,EAAI,OAAAG,OAAMF,GAGhB,CAAEF,YAAWhC,QAAOiC,OAAMC,KACnC,CAEO,SAASuH,EAAWpG,GACzB,OAAOT,KAAKkF,MAAMlF,KAAKC,UAAUQ,GACnC,CAEO,SAASqG,EAAeC,GAC7B,IAAIC,EAAoBD,EAAIxH,QAAQ,KAChC0H,EAAaF,EAAIxH,QAAQ,KAE7B,IAA2B,IAAvByH,IAA4C,IAAhBC,EAC9B,OAAOF,EAGT,IAAIG,EAAWH,EAAIhM,OAUnB,OAR2B,IAAvBiM,GAA4BA,EAAoBE,IAClDA,EAAWF,IAGO,IAAhBC,GAAqBA,EAAaC,IACpCA,EAAWD,GAGNF,EAAI5I,MAAM,EAAG+I,EACtB,CAEO,SAASC,EAAiBC,EAAGC,GAClC,IAAIC,GAAQ,EAcZ,OAbAtM,OAAOgE,KAAKoI,GAAGlI,SAAQ,SAACxB,EAAK6J,GAAU,IAAAC,EAAAC,EAChCL,EAAE1J,IAAS2J,EAAE3J,KAGd0J,EAAE1J,GAAKN,QAAUiK,EAAE3J,GAAKN,QAIX,QAAboK,EAAAJ,EAAE1J,GAAKmC,cAAM,IAAA2H,OAAA,EAAbA,EAAezM,WAAwB,QAAlB0M,EAAKJ,EAAE3J,GAAKmC,cAAM,IAAA4H,OAAA,EAAbA,EAAe1M,UAH3CuM,GAAQ,GAOZ,IACOA,CACT,CAEO,SAASI,EAActK,GAE5B,OAAOA,EAAMmD,QADU,8CACc,GACvC,CAEO,SAASoH,EAAcvK,GAC5BwK,SAASC,KAAKC,UAAY1K,EAC1BwK,SAASG,gBAAgBD,UAAY1K,CACvC,CAEO,SAAS4K,EAAUC,EAAOC,EAAQC,GAEvC,IAAMzL,EAAI,IAAI0L,KACd1L,EAAE2L,QAAQ3L,EAAE4L,UAAqB,GAATH,EAAc,GAAK,GAAK,KAChD,IAAII,EAAU,WAAa7L,EAAE8L,cAC7BZ,SAASa,OAASR,EAAQ,IAAMC,EAAS,IAAMK,EAAU,SAC3D,CAEO,SAASG,EAAUT,GAIxB,IAHA,IAAItL,EAAOsL,EAAQ,IAEfU,EADgBtG,mBAAmBuF,SAASa,QACzB9I,MAAM,KACpB9E,EAAI,EAAGA,EAAI8N,EAAG5N,OAAQF,IAAK,CAElC,IADA,IAAI4B,EAAIkM,EAAG9N,GACW,KAAf4B,EAAEmM,OAAO,IACdnM,EAAIA,EAAEoM,UAAU,GAElB,GAAuB,GAAnBpM,EAAE8C,QAAQ5C,GACZ,OAAOF,EAAEoM,UAAUlM,EAAK5B,OAAQ0B,EAAE1B,OAEtC,CACA,MAAO,EACT,CA8BO,SAAS+N,EAAMC,EAAOC,GAC3B,OAAO,WACL,KAAMD,EAAQ,EACZ,OAAOC,EAAKtN,MAAMuN,KAAMpD,UAE5B,CACF,CAEO,SAASqD,EAAgBC,EAAYC,GAC1C,IAAIC,EAAUX,EAAU,oBACpBU,EACGC,EAAQ1J,MAAM,KAAK2J,SAASH,IAC/BnB,EACE,mBACAqB,EACG1J,MAAM,KACNH,OAAO2J,GACPrJ,QAAO,SAACC,GAAC,OAAKA,CAAC,IACfG,KAAK,KACR,IAIAmJ,GACFrB,EACE,mBACAqB,EACG1J,MAAM,KACNG,QAAO,SAACyJ,GAAC,OAAKA,GAAKJ,CAAU,IAC7BjJ,KAAK,KACR,GAIR,CAEO,IAAMsJ,EAAgB,SAACC,GAC5B,OAA0B,IAAtBA,EAAW1O,OAAqB2O,QAAQC,QAAQ,CAAEC,MAAO,KACtD3F,EAAiB,CACtBe,QAAS,iBACTJ,WAAY,CACV9E,OAAQ,CACN+J,SAAUvL,IAAOwL,0BACjBC,iBAAkB,EAClBC,YAAaP,KAIrB,EAEaQ,EAAyB,SACpCC,EACAC,EACA/I,EACAgJ,EACAC,GAEA,IAAMlL,EAAQgL,EAAQhL,MAEtB,GAAc,aAAVA,EAAsB,CACxB,IAAMmL,EAAOlJ,EAAajC,GAAOU,OAAO0K,MAAK,SAACxK,GAAC,OAAKA,EAAE3C,OAAS+M,EAAQ/M,KAAK,IAC5EiN,EAAmB,CAAElL,MAAO,WAAY/B,OAAOkN,aAAI,EAAJA,EAAME,QAAS,KAC9DH,EAAmB,CAAElL,MAAO,cAAe/B,MAAO,IACpD,MAAO,GAAc,aAAV+B,EAAsB,CAC/B,IAAMmL,EAAOlJ,EAAajC,GAAOU,OAAO0K,MAAK,SAACxK,GAAC,OAAKA,EAAE3C,OAAS+M,EAAQ/M,KAAK,IAE5EiN,EAAmB,CAAElL,MAAO,cAAe/B,OAAOkN,aAAI,EAAJA,EAAME,QAAS,IACnE,CACAN,EAASE,EAAiBD,GAC5B,EAEO,SAASM,EAAgBC,GAA8B,IAAnBC,EAAI9E,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,GAAAA,UAAA,GAAG,IAAIuC,KAChDxM,EAAS,KAIb,OAHA8O,EAAUE,MAAK,SAACC,GACd,OAAOF,GAAQE,EAAM,IAAMF,GAAQE,EAAM,KAAOjP,EAASiP,GAAQ,EACnE,IACOjP,CACT,CAEO,SAASkP,EAAgBC,GAC9B,IAAIC,EAAgBD,EAAIpL,MAAM,KAC1BsL,EAAYD,EAAc,GAAGrL,MAAM,KACnCuL,EAAYF,EAAc,GAAGrL,MAAM,KAEvC,OAAO,IAAIyI,MACR6C,EAAU,IACVA,EAAU,GAAK,GACfA,EAAU,IACVC,EAAU,IACVA,EAAU,IACVA,EAAU,GAEf,CACO,SAASC,EAAkBC,GAAsB,IAAhBC,IAAOxF,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,KAAAA,UAAA,GACzCkF,EAAMK,EAAKE,mBAAmB,QAAS,CACzCC,KAAM,UACNC,MAAO,OACPC,IAAK,YAYP,OAVIJ,IACFN,GACE,SACAK,EAAKM,mBAAmB,QAAS,CAC/BC,KAAM,UACNC,OAAQ,YAEV,OAGGb,CACT,CAwCO,SAASc,EAAYC,EAAOC,GACjC,OAAID,EACKA,EAAME,QAAO,SAACC,EAAKxL,GACxB,IAAM/C,EAAM+C,EAAIsL,GAKhB,OAJKE,EAAIvO,KACPuO,EAAIvO,GAAO,IAEbuO,EAAIvO,GAAKrC,KAAKoF,GACPwL,CACT,GAAG,CAAC,GAEG,EAEX,CAEO,SAASC,EAAejN,GAC7B,IAAMkN,EAAc,IAAIC,gBAAgBnN,GAAaoN,WACrD,MAAO,IAAP7M,OAAW2M,EACb,CAEO,SAASG,EAAwB1L,GAEtC,IAAMuL,EAAclO,OAAO2B,SAASjB,OAMpC,OAHkB,IAAIyN,gBAAgBD,GAGrBnP,IAAI4D,EACvB,CAlEA3C,OAAOsO,sBAAwB,SAAUC,GAEvC,IAGMC,GAHoB/D,EAAU,qBAAuB,IAGhB/I,MAAM,KAG3C+M,EAAmB,GAAHlN,OAAAwB,IAAOyL,GAAgB,CAAED,IAS/CxE,EAAU,mBANc2E,MAAMtN,KAAK,IAAIuN,IAAIF,IAGIxM,KAAK,KAGE,GACxD,EAEAjC,OAAO4O,2BAA6B,SAAUL,GAc5CxE,EAAU,oBAZgBU,EAAU,qBAAuB,IAGhB/I,MAAM,KAGPG,QAAO,SAACgN,GAAQ,OAAKA,IAAaN,CAAE,IAG9BtM,KAAK,KAGC,GACxD,C,giBCtuBa6M,EAAaC,YAAY,CAClCrQ,KAAM,UACNsQ,aAAc,CACVC,aAAc,CACVC,SAAU,CAAE/P,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,WAAYkO,MAAO,eAAgBC,YAAa,eAAgBC,UAAW,KAC/IC,MAAO,CAAErQ,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,QAASkO,MAAO,gBAAiBC,YAAa,gBAAiBC,UAAW,GAAIE,UAAW,WAC1JC,MAAO,CAAEvQ,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,QAASkO,MAAO,QAASC,YAAa,QAASC,UAAW,KAC3HI,IAAK,CAAExQ,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,MAAOkO,MAAO,MAAOC,YAAa,gBAAiBC,UAAW,GAAIE,UAAW,WAC5IG,OAAQ,CAAEzQ,MAAO,IACjB0Q,MAAO,CAAE1Q,MAAO,IAChB2Q,MAAO,CAAE3Q,MAAO,IAChB4Q,SAAU,CAAE5Q,OAAO,IAEvB6Q,eAAgB,CACZC,oBAAqB,CAAE9Q,MAAO,IAC9B+Q,aAAc,CAAE/Q,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,eAAgBkO,MAAO,GAAIC,YAAa,2BAA4BC,UAAW,KACvJY,SAAU,CACNhR,MAAO,GAAIgC,UAAW,WAAYiP,kBAAmB,cAAed,YAAa,UAAWe,eAAgB,kBAC5GzO,OAAQ,IAEZ0O,SAAU,CACNnR,MAAO,GAAIgC,UAAW,WAAYiP,kBAAmB,gBAAiBd,YAAa,YAAae,eAAgB,kBAChHzO,OAAQ,IAEZ2O,YAAa,CACTpR,MAAO,GAAIgC,UAAW,cAAeiP,kBAAmB,gBAAiBd,YAAa,YAAae,eAAgB,kBACnHzO,OAAQ,IAGZ6C,aAAc,CACVtF,MAAO,GAAIgC,UAAW,eAAgBiO,aAAc,GAAID,UAAU,EAClEqB,UAAW,CAAErR,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,aAAcyC,UAAW,YAAauP,MAAO,gBAC1FC,KAAM,CAAExR,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,SAAUyC,UAAW,OAAQuP,MAAO,gBAC5EE,UAAW,CAAEzR,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,cAAeyC,UAAW,YAAauP,MAAO,gBAC3FG,MAAO,CAAE1R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,eAAgByC,UAAW,QAASuP,MAAO,gBACpFI,mBAAoB,CAAE3R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,eAAgByC,UAAW,qBAAsBuP,MAAO,gBAC9GK,UAAW,CAAE5R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,QAASyC,UAAW,YAAauP,MAAO,gBACrFM,QAAS,CAAE7R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,SAAUyC,UAAW,UAAWuP,MAAO,gBAClFO,UAAW,CAAE9R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,eAAgByC,UAAW,YAAauP,MAAO,gBAC5FQ,OAAQ,CAAE/R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,gBAAiByC,UAAW,SAAUuP,MAAO,gBACvFS,OAAQ,CAAEhS,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,UAAWyC,UAAW,SAAUuP,MAAO,gBACjFU,WAAY,CAAEjS,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,SAAUyC,UAAW,aAAcuP,MAAO,iBAE5FW,WAAY,CACRlS,MAAO,GAAIgC,UAAW,aAAcmQ,IAAK,EAAGC,IAAK,GAAInQ,KAAM,EAAGoQ,WAAY,EAAGnQ,GAAI,EAAGoQ,SAAU,EAAGC,KAAM,EAAGC,MAAO,EAAGrC,YAAa,yBACjI7N,OAAQ,CACJ,UAAW,YAAa,YAAa,YAAa,aAAc,aAAc,eAGtFmQ,UAAW,CACPzS,MAAO,GAAIgC,UAAW,YAAamQ,IAAK,EAAGC,IAAK,EAAGnQ,KAAM,EAAGC,GAAI,EAAGqQ,KAAM,EAAGC,MAAO,EAAGrC,YAAa,6BACnG7N,OAAQ,CACJ,UAAW,WAAY,YAAa,YAAa,YAAa,QAAS,QAAS,SAAU,WAGlGoQ,iBAAkB,CACd1S,MAAO,GAAIgC,UAAW,mBAAoBmQ,IAAK,EAAGC,IAAK,EAAGnQ,KAAM,EAAGC,GAAI,EAAGqQ,KAAM,EAAGC,MAAO,EAAGrC,YAAa,4BAC1G7N,OAAQ,CACJ,UAAW,WAAY,WAAY,YAAa,YAAa,cAGrEqQ,UAAW,CAAE3S,MAAO,MAExB4S,gBAAiB,CACb5S,OAAO,GAEX6S,OAAQ,GACRC,aAAc,GACdC,QAAS,MAEbC,SAAU,CACNC,yBAA0B,SAACC,EAAOC,GAC9B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MACvBiQ,EAAekD,EAAOpG,QAAQkD,aAEpCiD,EAAMrC,eAAe9O,GAAO/B,MAAQA,EAEpCkT,EAAMrC,eAAe9O,GAAOkO,aAAeA,CAC/C,EACAmD,6BAA8B,SAACF,EAAOC,GAClC,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvBkO,EAAekD,EAAOpG,QAAQkD,aACpCiD,EAAMrC,eAAe9O,GAAOkO,aAAeA,CAC/C,EACAoD,yBAA0B,SAACH,EAAOC,GAC9B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMrC,eAAe9O,GAAO/B,MAAQ,GACpCkT,EAAMrC,eAAe9O,GAAOU,OAASzC,CACzC,EACAsT,6BAA8B,SAACJ,EAAOC,GAClC,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBhC,EAAQmT,EAAOpG,QAAQ/M,MACvBiC,EAAOkR,EAAOpG,QAAQ9K,KACtBC,EAAKiR,EAAOpG,QAAQ7K,GAE1BgR,EAAMrC,eAAe9O,GAAO/B,MAAQA,EACpCkT,EAAMrC,eAAe9O,GAAOE,KAAOiR,EAAMrC,eAAe9O,GAAOO,OAAOH,QAAQF,GAE1EiR,EAAMrC,eAAe9O,GAAOG,GADrB,QAAPA,EACiCgR,EAAMrC,eAAe9O,GAAOqQ,IAG5Bc,EAAMrC,eAAe9O,GAAOO,OAAOH,QAAQD,EAEpF,EACAqR,iCAAkC,SAACL,EAAOC,GACtC,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBhC,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMrC,eAAe9O,GAAOO,OAAStC,CACzC,EACAwT,uBAAwB,SAACN,EAAOC,GAC5B,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UAE7BkR,EAAMrC,eAAe9O,GAAOyQ,OAAS,CACzC,EACAiB,uBAAwB,SAACP,EAAOC,GAC5B,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBhC,EAAQmT,EAAOpG,QAAQ/M,MACvBuR,EAAQ4B,EAAOpG,QAAQwE,MAEvBmC,EAAc9V,OAAOgE,KAAKsR,EAAMrC,eAAeU,IAAQ5T,OAAS,EAEtEuV,EAAMrC,eAAeU,GAAOxP,GAAO/B,MAAQA,EAE3C,IAAM8E,EAAOlH,OAAO+V,QAAQT,EAAMrC,eAAeU,IAAQqC,KAAI,SAACC,GAC1D,GAAgB,cAAZA,EAAK,IAAkC,UAAZA,EAAK,IAAkBA,EAAK,GAAG7T,MAC1D,OAAO6T,EAAK,GAAGvC,IAEvB,IAAG5O,QAAO,SAAAC,GAAC,OAAIA,CAAC,IAEhBuQ,EAAMrC,eAAeU,GAAOvR,MAAQ8E,EAAKnH,SAAW+V,EAAc,GAAK5O,EAAKhC,KAAK,KACjFoQ,EAAMrC,eAAeU,GAAOtB,aAAe,EAC/C,EACA6D,oBAAqB,SAACZ,EAAOC,GAEzBvV,OAAOgE,KAAKsR,EAAMrC,gBAAgB/O,SAAQ,SAAUxB,GAE5C4S,EAAMrC,eAAevQ,GAAKN,MADlB,aAARM,GAA8B,YAARA,EACY,EACnB,cAARA,EAC2B,IAEA,EAE1C,IAEA4S,EAAMrC,eAAeE,aAAad,aAAe,GACjDiD,EAAMrC,eAAevL,aAAa2K,aAAe,GAEjDiD,EAAMrC,eAAevL,aAAa+L,UAAUrR,OAAQ,EACpDkT,EAAMrC,eAAevL,aAAakM,KAAKxR,OAAQ,EAC/CkT,EAAMrC,eAAevL,aAAamM,UAAUzR,OAAQ,EACpDkT,EAAMrC,eAAevL,aAAaoM,MAAM1R,OAAQ,EAChDkT,EAAMrC,eAAevL,aAAaqM,mBAAmB3R,OAAQ,EAC7DkT,EAAMrC,eAAevL,aAAasM,UAAU5R,OAAQ,EACpDkT,EAAMrC,eAAevL,aAAauM,QAAQ7R,OAAQ,EAClDkT,EAAMrC,eAAevL,aAAawM,UAAU9R,OAAQ,EACpDkT,EAAMrC,eAAevL,aAAayM,OAAO/R,OAAQ,EACjDkT,EAAMrC,eAAevL,aAAa0M,OAAOhS,OAAQ,EACjDkT,EAAMrC,eAAevL,aAAa2M,WAAWjS,OAAQ,EAErDkT,EAAMrC,eAAeqB,WAAWjQ,KAAO,EACvCiR,EAAMrC,eAAeqB,WAAWhQ,GAAK,EACrCgR,EAAMrC,eAAeqB,WAAWM,OAAS,EACzCU,EAAMrC,eAAe4B,UAAUxQ,KAAO,EACtCiR,EAAMrC,eAAe4B,UAAUvQ,GAAK,EACpCgR,EAAMrC,eAAe4B,UAAUD,OAAS,EACxCU,EAAMrC,eAAe6B,iBAAiBzQ,KAAO,EAC7CiR,EAAMrC,eAAe6B,iBAAiBxQ,GAAK,EAC3CgR,EAAMrC,eAAe6B,iBAAiBF,OAAS,EAE/CU,EAAMN,gBAAgB5S,OAAQ,CAElC,EACA+T,qBAAsB,SAACb,EAAOC,GAAW,IAAAa,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACjC5D,EAAsB,CAAE9Q,MAAOmT,EAAOpG,QAAQ+D,qBAAuB,IACrEC,EAAe,CAAE/Q,OAAqB,QAAdgU,EAAAb,EAAOpG,eAAO,IAAAiH,OAAA,EAAdA,EAAgBjD,eAAgB,IACxDC,EAAW,CAAEhR,OAAqB,QAAdiU,EAAAd,EAAOpG,eAAO,IAAAkH,OAAA,EAAdA,EAAgBjD,WAAY,IAChDG,EAAW,CAAEnR,OAAqB,QAAdkU,EAAAf,EAAOpG,eAAO,IAAAmH,OAAA,EAAdA,EAAgB/C,WAAY,GAAI1O,QAAyD,QAAjD0R,EAAAQ,IAAaxH,MAAK,SAAAxK,GAAC,OAAIA,EAAE3C,OAASgR,EAAShR,KAAK,WAAC,IAAAmU,OAAA,EAAjDA,EAAmD/G,QAAS,IACxHgE,EAAc,CAAEpR,OAAqB,QAAdoU,EAAAjB,EAAOpG,eAAO,IAAAqH,OAAA,EAAdA,EAAgBhD,cAAe,GAAI3O,QAA4D,QAApD4R,EAAAlD,EAAS1O,OAAO0K,MAAK,SAAAxK,GAAC,OAAIA,EAAE3C,OAASmR,EAASnR,KAAK,WAAC,IAAAqU,OAAA,EAApDA,EAAsDjH,QAAS,IACjI9H,EAAe,CAAEtF,OAAqB,QAAdsU,EAAAnB,EAAOpG,eAAO,IAAAuH,OAAA,EAAdA,EAAgBhP,eAAgB,IACxD4M,EAAa,CAAElS,OAAqB,QAAduU,EAAApB,EAAOpG,eAAO,IAAAwH,OAAA,EAAdA,EAAgBrC,aAAc,IACpDO,EAAY,CAAEzS,OAAqB,QAAdwU,EAAArB,EAAOpG,eAAO,IAAAyH,OAAA,EAAdA,EAAgB/B,YAAa,IAClDC,EAAmB,CAAE1S,OAAqB,QAAdyU,EAAAtB,EAAOpG,eAAO,IAAA0H,OAAA,EAAdA,EAAgB/B,mBAAoB,IAChEC,EAAY,CAAE3S,OAAqB,QAAd0U,EAAAvB,EAAOpG,eAAO,IAAA2H,OAAA,EAAdA,EAAgB/B,YAAa,KAElDrN,EAAatF,OACesF,EAAatF,MAAMuC,MAAM,KAAKqR,KAAI,SAACtC,GAC3D,OAAO1T,OAAOgE,KAAKsR,EAAMrC,eAAevL,cAAc5C,QAAO,SAACpC,GAC1D,OAAO4S,EAAMrC,eAAevL,aAAahF,GAAKgR,OAASA,CAC3D,IAAG,EACP,IAAG5O,QAAO,SAACC,GAAC,OAAKA,CAAC,IAIIiR,KAAI,SAAC7R,GACvBuD,EAAavD,GAAS,CAAE/B,OAAO,EACnC,IAGJ,GAAIkS,EAAWlS,MAAO,CAClBkS,EAAWlS,MAAQkS,EAAWlS,MAAQ,GACtC,IAAM4U,EAAI,IACN3S,EAAOiQ,EAAWlS,MAAMuC,MAAM,KAAK,GACnCL,EAAKgQ,EAAWlS,MAAMuC,MAAM,KAAK,GAGjCN,EADS,MAATA,EACO,UAECiB,WAAWjB,GAAQ2S,EAAK,WAGhC1S,EADAA,EACMgB,WAAWhB,GAAM0S,EAAK,WAEvB,WAGT1C,EAAa1I,YAAiB,aAAcvH,EAAMC,IACvCD,KAAOiR,EAAMrC,eAAeqB,WAAW5P,OAAOH,QAAQ+P,EAAWjQ,MAC5EiQ,EAAWhQ,GAAuB,QAAlBgQ,EAAWhQ,GACvBgR,EAAMrC,eAAeqB,WAAWE,IAChCc,EAAMrC,eAAeqB,WAAW5P,OAAOH,QAAQ+P,EAAWhQ,GAClE,CACA,GAAIuQ,EAAUzS,MAAO,CACjByS,EAAUzS,MAAQyS,EAAUzS,MAAQ,GACpC,IAAIiC,EAAOwQ,EAAUzS,MAAMuC,MAAM,KAAK,GAClCL,EAAKuQ,EAAUzS,MAAMuC,MAAM,KAAK,GAEvB,MAATN,EACAA,EAAO,WAEPA,EAAOiB,WAAWjB,KACN,IACRA,EAAQA,EAAO,IAAO,OAEtBA,GAAc,SAGlBC,GACAA,EAAKgB,WAAWhB,KACN,IACNA,EAAMA,EAAK,IAAO,OAElBA,GAAU,SAGdA,EAAK,WAGTuQ,EAAYjJ,YAAiB,YAAavH,EAAMC,IACtCD,KAAOiR,EAAMrC,eAAe4B,UAAUnQ,OAAOH,QAAQsQ,EAAUxQ,MACzEwQ,EAAUvQ,GAAsB,QAAjBuQ,EAAUvQ,GACrBgR,EAAMrC,eAAe4B,UAAUL,IAC/Bc,EAAMrC,eAAe4B,UAAUnQ,OAAOH,QAAQsQ,EAAUvQ,GAChE,CACA,GAAIwQ,EAAiB1S,MAAO,CACxB0S,EAAiB1S,MAAQ0S,EAAiB1S,MAAQ,GAClD,IAAIiC,EAAOyQ,EAAiB1S,MAAMuC,MAAM,KAAK,GACzCL,EAAKwQ,EAAiB1S,MAAMuC,MAAM,KAAK,GAGvCN,EADS,MAATA,EACO,UAEAiB,WAAWjB,GAAQ,SAG1BC,EADAA,EACKgB,WAAWhB,GAAM,SAEjB,WAGTwQ,EAAmBlJ,YAAiB,mBAAoBvH,EAAMC,IAC7CD,KAAOiR,EAAMrC,eAAe6B,iBAAiBpQ,OAAOH,QAAQuQ,EAAiBzQ,MAC9FyQ,EAAiBxQ,GAA6B,QAAxBwQ,EAAiBxQ,GACnCgR,EAAMrC,eAAe6B,iBAAiBN,IACtCc,EAAMrC,eAAe6B,iBAAiBpQ,OAAOH,QAAQuQ,EAAiBxQ,GAC9E,CAEA,IAAMmB,EAAM,CACRyN,oBAAqBA,EACrBC,aAAcA,EACdC,SAAUA,EACVG,SAAUA,EACVC,YAAaA,EACb9L,aAAcA,EACd4M,WAAYA,EACZO,UAAWA,EACXC,iBAAkBA,EAClBC,UAAWA,GAEfO,EAAMJ,aAAe,GAAH1Q,OAAAwB,IAAOsP,EAAMJ,aAAapQ,QAAO,SAAAC,GAAC,OAAIA,EAAEmO,oBAAoB9Q,OAAS8Q,EAAoB9Q,KAAK,KAAC,CAAEqD,GACvH,EACAwR,wBAAyB,SAAC3B,EAAOC,GAC7B,IAAMhJ,EAAQgJ,EAAOpG,QAAQ5C,MAEzBA,GAAS,GACT+I,EAAMJ,aAAajU,OAAOsL,EAAO,EAEzC,EACA2K,wBAAyB,SAAC5B,EAAOC,GAC7B,IAAMhJ,EAAQgJ,EAAOpG,QAAQ5C,MAE7BvM,OAAOgE,KAAKsR,EAAMrC,gBAAgB/O,SAAQ,SAACxB,GAC5B,gBAAPA,EACA1C,OAAOmX,OAAO7B,EAAMrC,eAAevQ,GAAM4S,EAAMJ,aAAa3I,GAAO7J,IAEnE1C,OAAOgE,KAAKsR,EAAMJ,aAAa3I,GAAO7J,IAAMwB,SAAQ,SAACkT,GACU,WAAvDC,IAAO/B,EAAMJ,aAAa3I,GAAO7J,GAAK0U,IACtCpX,OAAOmX,OAAO7B,EAAMrC,eAAevQ,GAAK0U,GAAc9B,EAAMJ,aAAa3I,GAAO7J,GAAK0U,IAErF9B,EAAMrC,eAAevQ,GAAK0U,GAAe9B,EAAMJ,aAAa3I,GAAO7J,GAAK0U,EAGhF,IAGA,CAAC,aAAc,YAAa,oBAAoB9I,SAAS5L,KACzD4S,EAAMrC,eAAevQ,GAAKkS,OAAS,EAE3C,GACJ,EACA0C,uBAAwB,SAAChC,EAAOC,GACxBD,EAAMrC,eAAeE,aAAa/Q,OAClCkT,EAAMrC,eAAevL,aAAatF,OAClCkT,EAAMrC,eAAe8B,UAAU3S,MAC/BkT,EAAMN,gBAAgB5S,OAAQ,EAE9BkT,EAAMN,gBAAgB5S,OAAQ,CAEtC,EACAmV,uBAAwB,SAACjC,EAAOC,GAC5B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MACvBiQ,EAAekD,EAAOpG,QAAQkD,aAChCiD,EAAMpD,aAAa/N,GAAOqO,UAC1B8C,EAAMpD,aAAa/N,GAAO/B,MAAQA,EAAMe,MAAM,EAAGmS,EAAMpD,aAAa/N,GAAOqO,WAE3E8C,EAAMpD,aAAa/N,GAAO/B,MAAQA,EAGtCkT,EAAMpD,aAAa/N,GAAOkO,aAAeA,CAC7C,EACAmF,aAAc,SAAClC,EAAOC,GAClBvV,OAAOgE,KAAKsR,EAAMpD,cAAchO,SAAQ,SAAUxB,GAClC,aAARA,GAA8B,YAARA,EACtB4S,EAAMpD,aAAaxP,GAAKN,MAAQ,EACjB,UAARM,IAGP4S,EAAMpD,aAAaxP,GAAKN,MAAQ,GAExC,GACJ,KAKDqV,EAGH1F,EAAW2F,QAHArC,EAAwBoC,EAAxBpC,yBAA0BI,EAAwBgC,EAAxBhC,yBAA0BC,EAA4B+B,EAA5B/B,6BAAgEE,GAAF6B,EAAhC9B,iCAAwD8B,EAAtB7B,wBAAwBC,EAAsB4B,EAAtB5B,uBAAwBK,EAAmBuB,EAAnBvB,oBAC/KC,EAAoBsB,EAApBtB,qBAAsBe,EAAuBO,EAAvBP,wBAAyB1B,EAA4BiC,EAA5BjC,6BAA8ByB,EAAuBQ,EAAvBR,wBAAyBK,EAAsBG,EAAtBH,uBACtGC,EAAsBE,EAAtBF,uBAAwBC,EAAYC,EAAZD,aAGbzF,MAAkB,O,uuBC9WjC,IAAA4F,EAA+CC,KAAvCC,EAAeF,EAAfE,gBACRC,GADmCH,EAAVI,WAAiBJ,EAALK,MACDJ,KAAKK,WAA5BjC,GAAF8B,EAAHI,IAAQJ,EAAH9B,KAEAmC,GAFWL,EAANhT,OAAagT,EAALM,MAED,WAsBtB,OAAAC,KAfD,SAAAF,IAAc,IAAAG,EAAA,KAAAC,IAAA,KAAAJ,GAAAK,IAAA,wBANK,IAAIX,EAAgB,KAAGW,IAAA,8BAEjBvK,KAAKwK,iBAAiBC,KAC7C1C,GAAI,SAACC,GAAI,OAAKA,EAAKlW,MAAM,MAC1ByY,IAAA,8BA0HuB,eAACG,EAAI9N,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,GAAAA,UAAA,GAAG,KAAI,OAClCyN,EAAKG,iBAAiBC,KACpB1C,GAAI,SAAC1G,GAAI,OACPqJ,IAASrJ,EAAKnB,aAAewK,EAAKxK,YAAcmB,EAAKvP,QAAU,CAAC,IAEnE,IAAAyY,IAAA,+BAEsB,eAACG,EAAI9N,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,GAAAA,UAAA,GAAG,KAAI,OACnCyN,EAAKG,iBAAiBC,KACpB1C,GAAI,SAAC1G,GAIH,OAHmBA,EAAKM,MACtB,SAACqG,GAAI,OAAKA,EAAK9H,aAAewK,EAAKxK,UAAU,GAGjD,IACD,IAAAqK,IAAA,8BAEsBvK,KAAKwK,iBAAiBC,KAC7C1C,GAAI,SAAC1G,GAKH,MAJe,GAAH9K,OAAAwB,IACPsJ,GAAItJ,IACJ2L,MAAMtN,KAAK,CAAEtE,OAAQ6Y,KAAKC,IAAIvJ,EAAKvP,OAAS,KAAM,SAAC+Y,GAAC,OAAK,IAAI,KAGpE,MA/IA7V,OAAO8V,eAAiB9K,KAAK8K,eAI7B,IAAMC,EAA6C,KAAjCtL,YAAU,mBACxB1I,KAAKkF,MAAMwD,YAAU,oBACrB,GAKSc,YAAcwK,GAAW/O,MAAK,SAAC1K,GAC1CA,EAAKqP,MAAM1K,SAAQ,SAAA+U,GAAO,OAAIX,EAAKY,mBAAmBD,GAAS,EAAM,GACvE,GACF,GAAC,EAAAvW,IAAA,iBAAAN,MAED,SAAe+W,GACbvV,EAAE,0BAA0BwV,KAAKD,GACjCvV,EAAE,gBAAgByV,IAAI,CACpBC,QAAS,SAGX1V,EAAE,sBAAsB2V,GAAG,SAAS,WAClC3V,EAAE,gBAAgByV,IAAI,CACpBC,QAAS,IAEb,GACF,GAAC,CAAA5W,IAAA,qBAAAN,MAED,SAAmBuW,GAAmB,IAAAa,EAAbC,IAAI5O,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,KAAAA,UAAA,GACvB6O,EAAsBzL,KAAKwK,iBAAiBrW,MAEhD,GACEsX,EAAoB9J,MAAK,SAACqG,GAAI,OAAKA,EAAK9H,aAAewK,EAAKxK,UAAU,IAEtEF,KAAKwK,iBAAiB9O,KAAI3D,IAAK0T,QAHjC,CASA,MAFAA,EAAsBA,EAAoB5U,QAAO,SAACmR,GAAI,OAAKA,CAAI,KAEvClW,QAAU,GAAlC,CAKA,IAAI4Z,EAA6C,MAA1BhB,aAAI,EAAJA,EAAMgB,iBAA0B,GAAKhB,EAAKgB,gBAa3DC,EAAc,CAClBzL,WAAYwK,EAAKxK,WACjB0L,iBAAkBlB,EAAKkB,iBACvBC,UAAWnB,EAAKmB,UAChBnS,iBAAkBgR,EAAKhR,iBACvBoS,eAAgBpB,EAAKoB,eACrBC,YAAarB,EAAKqB,YAClBC,UAAWtB,EAAKsB,UAChBC,oBAAqBvB,EAAKuB,oBAC1BC,WAAYxB,EAAKwB,WACjBC,aAAczB,EAAKyB,aACnBhS,UAAWuQ,EAAKvQ,UAChBF,YAAayQ,EAAKzQ,YAClBmS,QAAS1B,EAAK0B,QACdC,SAAU3B,EAAK2B,SACfC,YAA6B,QAAlBf,EAAEb,EAAK4B,mBAAW,IAAAf,IAAIb,EAAK6B,IACtCb,gBAAe3T,IACV2T,EAAgB7U,QACjB,SAACmR,GAAI,MAAwB,oBAAnBA,EAAKwE,SAA+B,MAKpDf,EAAsB,GAAHlV,OAAAwB,IAAO0T,GAAmB,CAAAgB,EAAA,GAAOd,KAEpD5M,YAAU,kBAAmBhI,KAAKC,UAAU0M,MAAMtN,KAAKqV,GAAqB,SAAA3U,GAAC,OAAIA,EAAEoJ,UAAU,KAAI,IAKjGF,KAAKwK,iBAAiB9O,KAAI3D,IAAK0T,IAE/B,IAAIiB,EAAsB/W,EAAE,gBAG5B,OAFI6V,GAAMkB,EAAoBjP,SAAS,UAEvC1F,IAAW0T,EAlDX,CAFEX,eAAe,2BALjB,CA0DF,GAAC,CAAArW,IAAA,wBAAAN,MAED,SAAsBuW,GACpB,IAAIe,EAAsBzL,KAAKwK,iBAAiBrW,MAEhDsX,EAAsBA,EAAoB5U,QACxC,SAACmR,GAAI,OAAKA,EAAK9H,aAAewK,EAAKxK,UAAU,IAG/CnB,YAAU,kBAAmBhI,KAAKC,UAASe,IAAK0T,IAAuB,IAEvEzL,KAAKwK,iBAAiB9O,KAAI3D,IAAK0T,GACjC,GAAC,CAAAhX,IAAA,2BAAAN,MAED,WACE,IAAIsX,EAAsBzL,KAAKwK,iBAAiBrW,MAEhDsX,EAAsB,GAEtB1M,YAAU,kBAAmBhI,KAAKC,UAASe,IAAK0T,IAAuB,IAEvEzL,KAAKwK,iBAAiB9O,KAAI3D,IAAK0T,GACjC,IAAC,CA7HsB,IA2JnBkB,EAAe,IAAIzC,EAEZ0C,EAAwBC,wBAAcF,E,qDClKnD,wFAGaG,EAAcC,YAAU,CACnCC,YAAa,cACbC,UAAWC,YAAe,CACxBC,QACA,6BAGFC,UAAW,SAACC,GAAO,MAAM,CACvBC,aAAcD,EAAQE,MAAM,CAC1BA,MAAO,WAAF,MAAQ,uBAAuB,EACpCC,UAAW,MAEd,IAKYC,EAAyBX,EAAzBW,oB,mBCpBfpa,EAAOD,QAAUsa,S,+FCGV,SAASC,EAAmBC,GACjC,IAAAC,EAA0BC,mBAAS,MAAKC,EAAAC,IAAAH,EAAA,GAAjCxG,EAAK0G,EAAA,GAAEE,EAAQF,EAAA,GAMtB,OCRK,SAAyBH,GAA8B,IAAtBM,EAAQtR,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,GAAAA,UAAA,QAAGhE,EACjDuV,qBAAU,WACR,IAAMC,EAAeR,EAAOS,UAAUH,GACtC,OAAO,WACLE,EAAaE,aACf,CACF,GAAG,CAACV,GACN,CDJEW,CAAgBX,EAAQ,CACtBlS,KAAM,SAACvH,GACL8Z,EAAS9Z,EACX,IAEKkT,CACT,C,oCEXA,iGAOkBhS,IAAOI,UAEzB,SAAS+Y,EAAgBC,GAOvB,MAN4B,MAAxBA,EAAU9O,OAAO,KACnB8O,EAAY,IAAMA,GAGHpZ,IAAOqZ,eAAiBD,CAG3C,CAEO,IAAME,EAAiBC,IAAMC,MAAK,SAACC,GACxC,IAAMC,EAAiBD,EAAMC,eACvBC,EAAQD,EAAeC,MAEvB/V,EAAO2J,YAAYoM,EAAO,aAC1BC,EAAcld,OAAOgE,KAAKkD,GAAM8O,KAAI,SAACyE,GAAS,MAAM,CACxDA,YACA0C,UAAWjW,EAAKuT,GACjB,IAaD,IAP+B2C,EAQzBC,GARyBD,EAJ/B,SAA6BE,EAAYC,GAAO,IAAAC,EAC9C,OAA4E,QAA5EA,EAAOD,EAAMvH,KAAI,SAAAyH,GAAI,OAAIH,EAAW/N,MAAK,SAAAmO,GAAK,OAAIA,EAAMjD,YAAcgD,CAAI,GAAC,WAAC,IAAAD,OAAA,EAArEA,EAAuE1Y,QAAO,SAAAC,GAAC,OAAEA,CAAC,GAC3F,CAUsC4Y,CAAoBT,EAD5C,CAAC,SAAU,UAAW,SAN3BE,EAAIpH,KAAI,SAAAvQ,GAEX,OADAA,EAAIgV,UAAYhV,EAAIgV,UAAU7M,OAAO,GAAGgQ,cAAgBnY,EAAIgV,UAAUtX,MAAM,GACrEsC,CACX,KAMEoY,EAAUb,EAAea,QAEzBC,EAAM,GACNC,EAAY,GAEZC,EAAW,GAEf,OAAIrM,MAAMsM,QAAQZ,IAAYA,EAAQtd,OAAS,GAC7Csd,EAAQrH,KAAI,SAACC,EAAM1J,GACjB,IAAMiF,EAAKyE,EAAKwE,UAChBqD,EAAIzd,KACFwc,IAAAqB,cAAA,MACE,YAAU,QAAQ,qBAAA1Z,OAAoByR,EAAKwE,WAAa,YAAU,aAAa,YAAU,aAAa,YAAWuC,EAAe7O,WAChIgQ,UAAS,cAAA3Z,OAA0B,IAAV+H,EAAc,SAAW,IAClD6R,KAAK,MACL1b,IAAK,WAAa8O,GAElBqL,IAAAqB,cAAA,YAAOjI,EAAKwE,aAIhBsD,EAAU1d,KACRwc,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKxb,IAAK,iBAAmB8O,EAAI2M,UAAS,aAAA3Z,OAAyB,IAAV+H,EAAc,SAAW,KAChFsQ,IAAAqB,cAAA,OAAK1M,GAAE,cAAAhN,OAAgB+H,EAAQ,GAAK4R,UAAU,aAC5CtB,IAAAqB,cAAA,OAAKC,UAAU,kBACZlI,EAAKkH,UAAUnH,KAAI,SAACvQ,EAAK8G,GACxB,IAAI+R,EAAM7B,EAAgBhX,EAAI0X,WAC9B,OACEN,IAAAqB,cAAA,OAAKxb,IAAK,gBAAkB4b,EAAMT,EAASM,UAAU,gBACnDtB,IAAAqB,cAAA,WAASC,UAAU,aACjBtB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,OAAKC,UAAU,aAAaI,IAAKD,EAAKE,IAAI,QAAQ,YAAU,aAAa,YAAU,UAAU,YAAU,aAAa,YAAU,aAAa,YAAWxB,EAAe7O,aACrK0O,IAAAqB,cAAA,OAAKC,UAAU,aAAaI,IAAKD,EAAKE,IAAI,QAAQ,YAAU,aAAa,YAAU,UAAU,YAAU,aAAa,YAAU,aAAa,YAAWxB,EAAe7O,eAK/K,KAEF0O,IAAAqB,cAAA,OAAKC,UAAU,uBAEjBtB,IAAAqB,cAAA,OAAK1M,GAAE,cAAAhN,OAAgB+H,EAAQ,GAAK4R,UAAU,cAC5CtB,IAAAqB,cAAA,OAAKC,UAAU,kBACZlI,EAAKkH,UAAUnH,KAAI,SAACvQ,EAAK8G,GACxB,IAAI+R,EAAM7B,EAAgBhX,EAAI0X,WAC9B,OACEN,IAAAqB,cAAA,OAAKC,UAAU,eAAezb,IAAK,iBAAmB4b,EAAMT,GAC1DhB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,OAAKC,UAAU,QAAQI,IAAKD,EAAKE,IAAI,WACnC,YAAU,QAAQ,YAAU,YAAY,YAAU,aAAa,YAAU,aAAa,YAAWxB,EAAe7O,cAI1H,KAEF0O,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,0BAMvBH,EAAS3d,KACPwc,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKxb,IAAK,sBAAwB8O,EAAI2M,UAAS,aAAA3Z,OAAyB,IAAV+H,EAAc,SAAW,KACrFsQ,IAAAqB,cAAA,OAAK1M,GAAE,eAAAhN,OAAiB+H,EAAQ,GAAK4R,UAAU,sBAC7CtB,IAAAqB,cAAA,OAAKC,UAAU,kBACZlI,EAAKkH,UAAUnH,KAAI,SAACvQ,EAAK8G,GACxB,IAAI+R,EAAM7B,EAAgBhX,EAAI0X,WAC9B,OACEN,IAAAqB,cAAA,OAAKxb,IAAK,qBAAuB4b,EAAMT,EAASM,UAAU,gBACxDtB,IAAAqB,cAAA,OAAKC,UAAU,YAAYI,IAAKD,EAAKE,IAAI,cAG/C,KAEF3B,IAAAqB,cAAA,OAAKC,UAAU,qBAAqB,YAAU,QAAQ,YAAU,aAAa,YAAU,aAAa,YAAU,aAAa,YAAWnB,EAAe7O,aACrJ0O,IAAAqB,cAAA,OAAKC,UAAU,qBAAqB,YAAU,QAAQ,YAAU,aAAa,YAAU,aAAa,YAAU,aAAa,YAAWnB,EAAe7O,aACrJ0O,IAAAqB,cAAA,OAAKC,UAAU,8BACXtB,IAAAqB,cAAA,YAAM,6DACNrB,IAAAqB,cAAA,OAAKC,UAAU,eAO7B,IAKF/B,qBAAU,WAER,IADA,IAAIqC,EAAa,CAAC,EACT5e,EAAI,EAAGA,GAAKwd,EAAQtd,OAAQF,IAAK,CACxC,IAAI6e,EAAS,IAAIC,OAAO,eAADna,OAAgB3E,GAAK,CAC1C+e,cAAe,OACfC,aAAc,EACdC,aAAc,EACdC,MAAM,EACNC,WAAY,CACVC,GAAI,mBACJC,WAAW,GAEbC,WAAY,CACVC,OAAQ,sBACRC,OAAQ,uBAEVC,UAAW,KAGA,IAAIX,OAAO,eAADna,OAAgB3E,GAAK,CAC1C+e,cAAe,OACfC,aAAc,EACdC,aAAc,GACdS,gBAAgB,EAChBC,YAAY,EACZT,MAAM,EACNL,OAAQ,CACNe,OAAQf,GAEVM,WAAY,CACVC,GAAI,qBACJC,WAAW,KAIfT,EAAW,eAADja,OAAgB3E,IAAO,IAAI8e,OAAO,gBAADna,OAAiB3E,GAAK,CAC/D6f,MAAM,EACNP,WAAY,CACVC,OAAQ,sBACRC,OAAQ,uBAEVM,YAAa,CACX,IAAK,CACHf,cAAe,EACfE,aAAc,IAEhB,KAAM,CACJF,cAAe,EACfE,aAAc,KAGlBE,WAAY,CACVC,GAAI,UACJxB,KAAM,aAGZ,CAEA7Z,EAAE,cAAc2V,GAAG,SAAS,WAC5B,IAAIqG,EAAQhc,EAAEqK,MAAM4R,KAAK,MACrBC,EAAalc,EAAE,IAAMgc,GACtBrQ,KAAK,wBACLhQ,KAAK,sBAEJwgB,EAAY,GACF,iBAAVH,EACFG,EAAYtB,EAAW,iBACJ,iBAAVmB,EACTG,EAAYtB,EAAW,iBACJ,iBAAVmB,IACTG,EAAYtB,EAAW,kBAGzBsB,EAAUC,QAAQF,GAElBlc,EAAE,eAAe8H,SAAS,UAC1B9H,EAAE,QAAQ8H,SAAS,iBACrB,GACA,GAAG,CAAC2R,IAKFR,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAK1M,GAAG,kBAAkB2M,UAAU,2BAClCtB,IAAAqB,cAAA,UAAI,yBACJrB,IAAAqB,cAAA,OACE1M,GAAG,QACH2M,UAAU,+CACV8B,MAAM,uBAENpD,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,MAAIC,UAAU,iBAAiBL,IAEjCjB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,gBAC9BtB,IAAAqB,cAAA,KAAGC,UAAU,iBAEftB,IAAAqB,cAAA,OAAKC,UAAU,aAEjBtB,IAAAqB,cAAA,OAAKC,UAAU,iBAAiBJ,KAIpClB,IAAAqB,cAAA,OAAK1M,GAAG,aAAa2M,UAAU,oBAC7BtB,IAAAqB,cAAA,OAAKC,UAAU,eACftB,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,UAAI,yBACJrB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,uBAC9BtB,IAAAqB,cAAA,OACEK,IAAI,0EACJC,IAAI,YAIV3B,IAAAqB,cAAA,OAAKC,UAAU,UACbtB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,OAAK1M,GAAG,WAAW2M,UAAU,wBAC3BtB,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,MAAIC,UAAU,iBAAiBL,IAEjCjB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,eAAe+B,MAAO,CAAE5G,QAAS,SAC/DuD,IAAAqB,cAAA,KAAGC,UAAU,iBAEftB,IAAAqB,cAAA,OAAKC,UAAU,aAEjBtB,IAAAqB,cAAA,OAAKC,UAAU,iBAAiBH,MAItCnB,IAAAqB,cAACiC,IAAW,CACVnD,eAAgBA,EAChBiD,MAAM,wBACNG,iBAAkBrD,EAAMqD,iBACxBC,cAAc,SA5IhBxD,IAAAqB,cAAArB,IAAAwB,SAAA,KAmJZ,GAAGiC,GAEH,SAASA,EAAqBC,EAAWC,GAAW,IAAAC,EAAAC,EAClD,OAA4B,QAAxBD,EAAAF,EAAUvD,sBAAc,IAAAyD,GAAO,QAAPA,EAAxBA,EAA0BxD,aAAK,IAAAwD,OAAA,EAA/BA,EAAiC1gB,WAAmC,QAA7B2gB,EAAKF,EAAUxD,sBAAc,IAAA0D,GAAO,QAAPA,EAAxBA,EAA0BzD,aAAK,IAAAyD,OAAA,EAA/BA,EAAiC3gB,OAInF,C,k7BC9RO,IAAM4gB,EAAgB3O,YAAY,CACvCrQ,KAAM,WACNsQ,aAAc,CACZ2O,UAAW,GACXC,WAAY,GACZC,cAAe,GACfC,cAAe,GACfC,UAAW,GACXC,gBAAiB,KACjBtd,OAAQ,GACRud,kBAAmB,KACnBC,qBAAsB,GACtBhM,QAAS,KACTiM,yBAA0B,KAC1BC,iBAAkB,KAClBC,yBAA0B,KAC1BC,qBAAsB,MAExBnM,SAAU,CACRoM,aAAc,SAAClM,EAAOC,GACpB,IAAMhW,EAAOgW,EAAOpG,QAAQ5P,KAAKyW,KAAI,SAACxU,GACpC,IAAMigB,EAAYjgB,EAAEwC,KAAKW,MAAM,KAC/B,OAAA+V,IAAA,GAAYlZ,GAAC,IAAEwC,KAAMyd,GACvB,IACAnM,EAAMsL,UAAYrhB,EACLgW,EAAOpG,QAAQ5P,KAA5B,IAIMmiB,EAAc1b,IAAIsP,EAAMsL,WAAWe,MAAK,SAACvV,EAAGC,GAChD,MAAc,KAAVD,EAAEwV,KAAwB,KAAVvV,EAAEuV,IACbC,SAASzV,EAAEwV,KAAOC,SAASxV,EAAEuV,KACjB,KAAVxV,EAAEwV,KACH,EACW,KAAVvV,EAAEuV,IACJ,EAEA,CAEX,IACAtM,EAAMsL,UAAYc,EAElB,IAAIV,EAAY1L,EAAMsL,UAAU5K,KAAI,SAAA9M,GAAqB,MAAQ,CAC/D4Y,QAD4C5Y,EAAP4Y,QAErCd,UAFuD9X,EAAT8X,UAG/C,IAGGe,EAASzM,EAAMsL,UAAU5K,KAAI,SAACxU,GAAC,OAAKA,EAAEwgB,OAAO,IAAEld,QAAO,SAACC,GAAC,OAAKA,CAAC,IAC9Dkd,EAAU3M,EAAMsL,UAAU9b,QAAO,SAACtD,GAAC,MAAa,KAARA,EAAE0gB,EAAS,IAEvDlB,EAAUmB,QADA,CAAEL,QAAS,iBAAkBd,UAAW,YAElD1L,EAAMuL,WAAU7a,IAAO,IAAI4L,IAAIoP,IAC/B,IAEMpgB,EAFa+Q,MAAMtN,KAAK,IAAIuN,IAAI0D,EAAMuL,WAAW7K,IAAIhR,KAAKC,aAAa+Q,IAAIhR,KAAKkF,OAE5DpF,QACxB,SAACW,EAAK8G,EAAO6V,GAAI,OACf7V,IACA6V,EAAKC,WAAU,SAACxgB,GAAC,OAAKA,EAAEigB,UAAYrc,EAAIqc,SAAWjgB,EAAEmf,YAAcvb,EAAIub,SAAS,GAAC,IAErF1L,EAAMuL,WAAajgB,EACnB0U,EAAMwL,cAAa9a,IAAO,IAAI4L,IAAImQ,IAElCzM,EAAM2L,gBAAejb,IAAO,IAAI4L,IAAIqQ,IAEpC,IAAIK,EAAWhN,EAAMuL,WAAW7K,KAAI,SAACvU,GACnC,IACI8gB,EADOjN,EAAMsL,UAAU9b,QAAO,SAACtD,GAAC,OAAKA,EAAEsgB,SAAWrgB,CAAC,IACtCuU,KAAI,SAAC3T,GAAC,OAAKA,EAAE2f,OAAO,IACjC5E,EAAM,GAEV,OADAA,EAAI3b,GAAEuE,IAAO,IAAI4L,IAAI2Q,IACdnF,CACT,IAEA9H,EAAMyL,cAAgBuB,CACxB,EACAE,oBAAqB,SAAClN,EAAOC,GAC3BD,EAAM4L,kBAAoB3L,EAAOpG,OACnC,EACAsT,uBAAwB,SAACnN,EAAOC,GACR,WAAlBA,EAAOpG,QACTmG,EAAM6L,qBAAuB,KAE7B7L,EAAM6L,qBAAuB5L,EAAOpG,OAExC,EACAuT,mBAAoB,SAACpN,EAAOC,GAC1BD,EAAM4L,kBAAoB,KAC1B5L,EAAM6L,qBAAuB,KAC7B7L,EAAM8L,yBAA2B,KACjC9L,EAAM+L,iBAAmB,IAC3B,EACAsB,eAAgB,SAACrN,EAAOC,GAAW,IAAAqN,EAIjC,GAHAtN,EAAM+L,iBAAmB/L,EAAMsL,UAAU9b,QAAO,SAACtD,GAAC,OAAKA,EAAEsgB,SAAWxM,EAAM4L,iBAAiB,IAC3F5L,EAAM8L,yBAA2B9L,EAAM+L,iBAAiBvc,QAAO,SAACtD,GAAC,MAAa,KAARA,EAAE0gB,EAAS,IAElD,kBAA3B5M,EAAM4L,kBAAuC,CAC/C,IAAIha,EAAOoO,EAAM+L,iBAAiBrL,KAAI,SAACxU,GAAC,OAAKA,EAAEwgB,OAAO,IAAEld,QAAO,SAACC,GAAC,OAAKA,CAAC,IAIrEuQ,EAAMwL,cADI,GAAR5Z,EACiBlB,IAAO,IAAI4L,IAAI1K,IAEZ,IAE1B,KAAO,CACL,IAAI6a,EAASzM,EAAMsL,UAAU5K,KAAI,SAACxU,GAAC,OAAKA,EAAEwgB,OAAO,IACjD1M,EAAMwL,cAAa9a,IAAO,IAAI4L,IAAImQ,GACpC,CACA,IAAI5gB,EAAuB,QAAnByhB,EAAAtN,EAAMwL,qBAAa,IAAA8B,GAAnBA,EAAqB7iB,OAASuV,EAAMwL,cAAgB,GAC5DxL,EAAMwL,cAAgB3f,CACxB,EACA0hB,UAAW,SAACvN,EAAOC,GACjBD,EAAM3R,OAAS4R,EAAOpG,QACS,MAA3BmG,EAAM4L,kBACR5L,EAAM+L,iBAAmB/L,EAAM+L,iBAAiBvc,QAC9C,SAACtD,GAAC,OACAA,EAAEshB,MAAM1b,cAAckH,SAASiH,EAAOpG,QAAQ/H,gBAC9C5F,EAAEuhB,MAAMzU,SAASiH,EAAOpG,UACxB3N,EAAEwC,KAAKsK,SAASiH,EAAOpG,QAAQ,IAGnCmG,EAAM+L,iBAAmB/L,EAAMsL,UAAU9b,QACvC,SAACtD,GAAC,OACAA,EAAEshB,MAAM1b,cAAckH,SAASiH,EAAOpG,QAAQ/H,gBAC9C5F,EAAEuhB,MAAMzU,SAASiH,EAAOpG,UACxB3N,EAAEwC,KAAKsK,SAASiH,EAAOpG,QAAQ,IAGrCmG,EAAM+L,iBAAmB/L,EAAM+L,iBAAiBvc,QAC9C,SAACtD,GAAC,OACAA,EAAEshB,MAAM1b,cAAckH,SAASiH,EAAOpG,QAAQ/H,gBAC9C5F,EAAEuhB,MAAMzU,SAASiH,EAAOpG,UACxB3N,EAAEwC,KAAKsK,SAASiH,EAAOpG,QAAQ,IAOnCmG,EAAM8L,yBAA2B9L,EAAM+L,iBAAiBvc,QAAO,SAACtD,GAAC,MAAa,KAARA,EAAE0gB,EAAS,GACnF,EACAc,YAAa,SAAC1N,EAAOC,GACnBD,EAAM3R,OAAS,GACf2R,EAAM+L,iBAAmB,KACzB/L,EAAM8L,yBAA2B,KACjC9L,EAAM4L,kBAAoB,KAC1B5L,EAAM6L,qBAAuB,EAC/B,EACA8B,kBAAmB,SAAC3N,EAAOC,GACS,MAA9BD,EAAM6L,sBACR7L,EAAM+L,iBAAmB/L,EAAMsL,UAAU9b,QACvC,SAACtD,GAAC,OAAKA,EAAEwgB,SAAW1M,EAAM6L,oBAAoB,IAGhD7L,EAAM8L,yBAA2B9L,EAAM+L,iBAAiBvc,QAAO,SAACtD,GAAC,MAAa,KAARA,EAAE0gB,EAAS,MAEjF5M,EAAM+L,iBAAmB/L,EAAMsL,UAAU9b,QACvC,SAACtD,GAAC,OAAKA,EAAEsgB,SAAWxM,EAAM4L,iBAAiB,IAE7C5L,EAAM8L,yBAA2B9L,EAAM+L,iBAAiBvc,QAAO,SAACtD,GAAC,MAAa,KAARA,EAAE0gB,EAAS,IAErF,KAKGgB,EAUHvC,EAAcjJ,QAThB8J,EAAY0B,EAAZ1B,aACAgB,EAAmBU,EAAnBV,oBACAC,EAAsBS,EAAtBT,uBAEAE,GADeO,EAAfC,gBACcD,EAAdP,gBACAM,EAAiBC,EAAjBD,kBACAJ,EAASK,EAATL,UACAG,EAAWE,EAAXF,YACAN,EAAkBQ,EAAlBR,mBAGa/B,MAAqB,O,2rBChLpC,IAAM/c,EAAIX,OAAOW,EACJwf,EAAU,SAAAC,GACrB,SAAAD,EAAYrG,GAAO,IAAAzE,EAkB4B,OAlB5BC,IAAA,KAAA6K,IACjB9K,EAAAgL,EAAA,KAAAF,EAAA,CAAMrG,KACGA,MAAMoB,UACb7F,EAAK6F,UAAY7F,EAAKyE,MAAMoB,UAE5B7F,EAAK6F,UAAY,oBAGf7F,EAAKyE,MAAMwG,kBACbjL,EAAKiL,kBAAoBjL,EAAKyE,MAAMwG,kBAEpCjL,EAAKiL,kBAAoB,GAG3BjL,EAAKkL,wBAA0BlL,EAAKyE,MAAMyG,wBAG1ClL,EAAKmL,aAAenL,EAAKmL,aAAa9gB,KAAI2V,GAC1CA,EAAKoL,WAAapL,EAAKoL,WAAW/gB,KAAI2V,GAAOA,CAC/C,CAAC,OAAAqL,IAAAP,EAAAC,GAAAhL,IAAA+K,EAAA,EAAA1gB,IAAA,eAAAN,MAED,SAAamM,GAGPN,KAAK8O,MAAM6G,aAAwC,SAAzBrV,EAAErD,OAAOnH,KAAKxE,KAAKiS,GAC/CvD,KAAK8O,MAAM8G,kBAAkB,CAC3B1f,MAAO8J,KAAK8O,MAAM3Y,UAClBhC,MAAO,KAGT6L,KAAK8O,MAAM8G,kBAAkB,CAC3B1f,MAAO8J,KAAK8O,MAAM3Y,UAClBhC,MAAOmM,EAAErD,OAAOnH,KAAKxE,KAAKiS,KAI9BjD,EAAEuV,iBACF7V,KAAK8V,IAAIC,QAAQ,QACnB,GAAC,CAAAthB,IAAA,aAAAN,MAED,WAEEwB,EAAE,+BAA+B+U,KAC/B,cACA1K,KAAK8O,MAAM1J,kBAEf,GAAC,CAAA3Q,IAAA,oBAAAN,MAED,WAEE6L,KAAK8V,IAAMngB,EAAEqK,KAAKgR,IAEdhR,KAAK8V,IAAIxkB,KAAK,YAChB0O,KAAK8V,IAAIC,QAAQ,WAGnB/V,KAAKgW,eAAiB,CACpB1R,YAAatE,KAAK8O,MAAMxK,YACxB2R,YAAY,GAIVjW,KAAK8O,MAAMzJ,iBACbrF,KAAKgW,eAAe3Q,eAAiB1P,EAAEqK,KAAK8O,MAAMzJ,iBAGvB,YAAzBrF,KAAK8O,MAAM3Y,YACb6J,KAAKgW,eAAeE,eAAiB,SAAUC,GAC7C,GAAkB,UAAdA,EAAO5S,GACT,IAAI6S,EAAQzgB,EACV,mEACAwgB,EAAOE,KACP,gBAGC,GAAoB,OAAhBF,EAAOnE,MACVoE,EAAQzgB,EACV,mEACAwgB,EAAOE,KACP,sGAGED,EAAQzgB,EACV,mEACAwgB,EAAOE,KACP,iGAGJ,OAAOD,CACT,EAEApW,KAAKgW,eAAeV,kBAAoB,SAAUa,GAChD,GAAIA,EAAO5S,GACT,GAAoB,OAAhB4S,EAAOnE,MACT,IAAIoE,EAAQzgB,EACV,mEACAwgB,EAAOE,KACP,kIAGED,EAAQzgB,EACV,mEACAwgB,EAAOE,KACP,kIAIAD,EAAQzgB,EAAE,SAAWwgB,EAAOE,KAAO,WAEzC,OAAOD,CACT,GAGEpW,KAAK8O,MAAMwG,oBACbtV,KAAKgW,eAAeV,kBAAoBtV,KAAK8O,MAAMwG,mBAGjDtV,KAAK8O,MAAMyG,0BACbvV,KAAKgW,eAAeT,wBAClBvV,KAAK8O,MAAMyG,yBAIfvV,KAAK8V,IACFC,QAAQ/V,KAAKgW,gBACbM,IAAI,eAAgBtW,KAAKyV,YACzBnK,GAAG,oBAAqBtL,KAAKwV,aAClC,GAAC,CAAA/gB,IAAA,qBAAAN,MAED,SAAmBme,GACbA,EAAU1b,SAAWoJ,KAAK8O,MAAMlY,SAClCoJ,KAAK8V,IAAIC,QAAQ,WACjB/V,KAAK8V,IACFC,QACC/V,KAAKgW,gBAONM,IAAI,eAAgBtW,KAAKyV,YACzBnK,GAAG,oBAAqBtL,KAAKwV,eAG9BlD,EAAUne,QAAU6L,KAAK8O,MAAM3a,OACjC6L,KAAK8V,IAAIS,QAAQ,iBAErB,GAAC,CAAA9hB,IAAA,SAAAN,MAED,WAAS,IAAAqiB,EAAA,KACP,OACE5H,IAAAqB,cAAA,OAAKC,UAAWlQ,KAAKkQ,WACnBtB,IAAAqB,cAAA,UACEvc,KAAMsM,KAAK8O,MAAMvL,GACjBA,GAAIvD,KAAK8O,MAAMvL,GACfpP,MAAO6L,KAAK8O,MAAM3a,MAClBsiB,IAAK,SAACzF,GAAE,OAAMwF,EAAKxF,GAAKA,CAAE,EAC1B0F,UAAQ,IAEN1W,KAAK8O,MAAM6H,oBAAsB/H,IAAAqB,cAAA,eAClCjQ,KAAK8O,MAAM6G,aAAe/G,IAAAqB,cAAA,UAAQ9b,MAAM,SAAQ,WAChDuP,MAAMsM,QAAQhQ,KAAK8O,MAAMlY,SACxBoJ,KAAK8O,MAAMlY,OAAOmR,KAAI,SAACC,EAAM1J,GAAK,OAO9C,SAAqB0J,GACnB,OACE4G,IAAAqB,cAAA,UAAQxb,IAAKuT,EAAK7T,MAAOA,MAAO6T,EAAK7T,MAAO6d,MAAOhK,EAAKgK,OACrDhK,EAAKqO,KAGZ,CAbmDO,CAAY5O,EAAY,KAIzE,IAAC,CAxKoB,CAAS4G,IAAMiI,WAmL/B,IAAMC,EAAQ,SAAAC,GACnB,SAAAD,EAAYhI,GAAO,IAAAkI,EAOgC,OAPhC1M,IAAA,KAAAwM,IACjBE,EAAA3B,EAAA,KAAAyB,EAAA,CAAMhI,KAMD0G,aAAewB,EAAKxB,aAAa9gB,KAAIsiB,GAAOA,CACnD,CAAC,OAAAtB,IAAAoB,EAAAC,GAAA3M,IAAA0M,EAAA,EAAAriB,IAAA,eAAAN,MAED,SAAa7C,GACX0O,KAAK8O,MAAM8G,kBACT5V,KAAK8O,MAAM3Y,UACX7E,EAAKkV,WAC6C,IAAjD,IAAI7C,IAAI,CAACrS,EAAK8E,KAAM9E,EAAK+E,GAAI/E,EAAKiV,MAAM0Q,KAAc,GAAK3lB,EAAKmV,SAErE,GAAC,CAAAhS,IAAA,oBAAAN,MAED,WAGE6L,KAAK8V,IAAMngB,EAAEqK,KAAKgR,IAClBhR,KAAK8V,IAAIoB,eAAe,CACtBC,KAAM,MACN3H,KAAM,SACN4H,MAAM,EACN9Q,IAAKtG,KAAK8O,MAAMxI,IAChBC,IAAKvG,KAAK8O,MAAMvI,IAChBnQ,KAAM4J,KAAK8O,MAAM1Y,KACjBC,GAAI2J,KAAK8O,MAAMzY,GACfqQ,KAAM1G,KAAK8O,MAAMpI,KACjBjQ,OAAQuJ,KAAK8O,MAAMrY,OACnB4gB,cAAc,EACdC,cAAc,EAIdC,SAAUvX,KAAKwV,cAEnB,GAAC,CAAA/gB,IAAA,qBAAAN,MAED,SAAmBme,GAGftS,KAAK8O,MAAMvI,MAAQ+L,EAAU/L,KAC7BvG,KAAK8O,MAAMxI,MAAQgM,EAAUhM,KAC7BtG,KAAK8O,MAAMpI,OAAS4L,EAAU5L,MAC9B1G,KAAK8O,MAAMnI,QAAU2L,EAAU3L,OAE/B3G,KAAK8V,IAAIxkB,KAAK,kBAAkBkmB,OAAO,CACrClR,IAAKtG,KAAK8O,MAAMxI,IAChBC,IAAKvG,KAAK8O,MAAMvI,IAChBG,KAAM1G,KAAK8O,MAAMpI,KACjBtQ,KAAM4J,KAAK8O,MAAM1Y,KACjBC,GAAI2J,KAAK8O,MAAMzY,IAGrB,GAAC,CAAA5B,IAAA,uBAAAN,MAED,WACE6L,KAAK8V,IAAIxkB,KAAK,kBAAkBmmB,SAClC,GAAC,CAAAhjB,IAAA,SAAAN,MAED,WAAS,IAAAujB,EAAA,KACP,OACE9I,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,SAAOwG,IAAK,SAACzF,GAAE,OAAM0G,EAAK1G,GAAKA,CAAE,IAGvC,IAAC,CAtEkB,CAASpC,IAAMiI,WAyEvBc,EAAa,SAAC7I,GACzB,IAAAjB,EAA+BC,mBAAS,IAAGC,EAAAC,IAAAH,EAAA,GAApC+J,EAAK7J,EAAA,GAAE8J,EAAa9J,EAAA,GAC3B+J,EAA2BhK,mBAAS,IAAGiK,EAAA/J,IAAA8J,EAAA,GAA3BE,GAAFD,EAAA,GAAaA,EAAA,IACvBE,EAAuCnK,mBAASgB,EAAMrY,QAAOyhB,EAAAlK,IAAAiK,EAAA,GAAtDE,EAASD,EAAA,GAChBE,GADmCF,EAAA,GACApK,mBAASgB,EAAMrY,SAAO4hB,EAAArK,IAAAoK,EAAA,GAAlDE,EAAOD,EAAA,GAAEE,EAAeF,EAAA,GACzBG,EAAWC,sBAUjB,SAASC,IACP/iB,EAAE6iB,EAASG,SAASlb,SAAS,SAC7B9H,EAAE6iB,EAASG,SAASnb,YAAY,MAClC,CAEA,SAASob,IACPjjB,EAAE6iB,EAASG,SAASlb,SAAS,OAC7B9H,EAAE6iB,EAASG,SAASnb,YAAY,QAClC,CA0BA,SAASqb,EAAiB7Q,EAAM1J,GAC9B,OACEsQ,IAAAqB,cAAA,MAAIxb,IAAK6J,EAAOnK,MAAO6T,EAAM8Q,QAAS,SAACxY,GAAC,OA1B5C,SAAoB0H,GAElB6P,EAAc7P,GACd,IAAM1J,EAAQ6Z,EAAU7hB,QAAQ0R,GAE9BuQ,EADEja,EAAQ,EAER6Z,EAAUjjB,MAAM,EAAG,GAAGqB,OACpB4hB,EAAUjjB,MAAMijB,EAAU7hB,QAAQ0R,GAAQ,IAI9BmQ,GAElBrJ,EAAM8G,kBAAkB9G,EAAM3Y,UAAW6R,EAAM,IAC/C4Q,GACF,CAWiDG,CAAW/Q,EAAK,GAC1DA,EAGP,CAEA,SAASgR,EAAehR,EAAM1J,GAC5B,OACEsQ,IAAAqB,cAAA,MAAIxb,IAAK6J,EAAOnK,MAAO6T,EAAM8Q,QAAS,SAACxY,GAAC,OAjB5C,SAAkB0H,GAEhBgQ,EAAYhQ,GACZ8G,EAAM8G,kBAAkB9G,EAAM3Y,UAAWyhB,EAAO5P,GAChDrS,EAAE6iB,EAASG,SAASnb,YAAY,SAClC,CAYiDyb,CAASjR,EAAK,GACxDA,EAGP,CAEA,OACE4G,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,SACE1M,GAAG,mBACHiM,KAAK,OACLU,UAAU,eACVxc,KAAK,mBACL4Q,YAAawK,EAAMxK,YACnBoS,UAAQ,EACRoC,QAnEN,WACMnjB,EAAE,0BAA0B7D,OAAS,GACvC6D,EAAE,0BAA0B6H,YAAY,UAE1C7H,EAAE6iB,EAASG,SAASlb,SAAS,UAC7Bib,GACF,EA8DMvkB,MAAO2a,EAAM3a,QAEfya,IAAAqB,cAAA,OAAKC,UAAWgJ,IAAW,CAAC,mBAAoBzC,IAAK+B,GACnD5J,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBAAkB4I,QAASJ,GAAU,YAGpD9J,IAAAqB,cAAA,WAAK,KACLrB,IAAAqB,cAAA,OAAKC,UAAU,gBAAgB4I,QAASF,GAAQ,YAIlDhK,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,MAAIC,UAAU,qBACXiI,EAAUpQ,KAAI,SAACC,EAAM1J,GAAK,OAAKua,EAAiB7Q,EAAM1J,EAAM,KAE/DsQ,IAAAqB,cAAA,MAAIC,UAAU,mBACXoI,EAAQvQ,KAAI,SAACC,EAAM1J,GAAK,OAAK0a,EAAehR,EAAM1J,EAAM,OAMrE,EAEa6a,EAAe,SAACrK,GAmB3B,OACEF,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBAAkB4I,QApBrC,WACMhK,EAAM3a,MAAQ2a,EAAMxI,KACtBwI,EAAM8G,kBAAkB,CACtB1f,MAAO4Y,EAAM3Y,UACbhC,MAAO2a,EAAM3a,MAAQ,GAG3B,GAcMya,IAAAqB,cAAA,KAAGC,UAAU,8BAEftB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,gBACV,WAAUpB,EAAMxI,IAChB,WAAUwI,EAAMvI,IAChBpS,MAAO2a,EAAM3a,MACbuiB,UAAQ,IAEV9H,IAAAqB,cAAA,OAAKC,UAAU,kBAAkB4I,QAtBrC,WACMhK,EAAM3a,MAAQ2a,EAAMvI,KACtBuI,EAAM8G,kBAAkB,CACtB1f,MAAO4Y,EAAM3Y,UACbhC,MAAO2a,EAAM3a,MAAQ,GAG3B,GAgBMya,IAAAqB,cAAA,KAAGC,UAAU,6BAIrB,EAEakJ,EAAmB,SAACtK,GAK/B,OACEF,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,SACET,KAAK,WACL9b,KAAK,gBACL2lB,QAASvK,EAAM3a,MACfmlB,QAAM,EACN5C,UAAQ,IAEV9H,IAAAqB,cAAA,SAAOC,UAAU,aAAa4I,QAblC,WACEhK,EAAM8G,kBAAkB9G,EAAM3Y,WAAY2Y,EAAM3a,MAAO2a,EAAMpJ,MAC/D,GAYMkJ,IAAAqB,cAAA,OAAKC,UAAU,sBACftB,IAAAqB,cAAA,KAAGC,UAAS,sBAAA3Z,OAAwBuY,EAAM3Y,cAE5CyY,IAAAqB,cAAA,SAAInB,EAAMpb,MAGhB,EAEa6lB,EAAsB,SAACzK,GAKlC,OACEF,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,SACET,KAAK,WACL9b,KAAK,gBACL2lB,QAASvK,EAAM3a,MACfmlB,QAAM,EACN5C,UAAQ,IAEV9H,IAAAqB,cAAA,SAAOC,UAAU,eAAe4I,QAbpC,WACEhK,EAAM8G,kBAAkB9G,EAAM3Y,WAAY2Y,EAAM3a,MAAO2a,EAAMpJ,MAC/D,GAYMkJ,IAAAqB,cAAA,OAAKC,UAAU,sBACftB,IAAAqB,cAAA,KAAGC,UAAS,sBAAA3Z,OAAwBuY,EAAM3Y,aACzC2Y,EAAM0K,UAAY5K,IAAAqB,cAAA,YAAOnB,EAAM0K,WAElC5K,IAAAqB,cAAA,KAAGwJ,wBAAyB,CAAEC,OAAQ5K,EAAMpb,QAGlD,EA8HaimB,GA5HuB/K,IAAMiI,UA4HX,SAAA+C,GAC7B,SAAAD,EAAY7K,GAAO,IAAA+K,EAK8B,OAL9BvP,IAAA,KAAAqP,IACjBE,EAAAxE,EAAA,KAAAsE,EAAA,CAAM7K,KAGD0G,aAAeqE,EAAKrE,aAAa9gB,KAAImlB,GAC1CA,EAAKjD,YAAciD,EAAKjD,YAAYliB,KAAImlB,GAAOA,CACjD,CAAC,OAAAnE,IAAAiE,EAAAC,GAAAxP,IAAAuP,EAAA,EAAAllB,IAAA,eAAAN,MAED,SAAamM,GAEXN,KAAK8O,MAAM8G,kBAAkB5V,KAAK8O,MAAM3Y,UAAWmK,EAAErD,OAAOnH,KAAKxE,KAAKiS,IACtEjD,EAAEuV,iBACF7V,KAAK8V,IAAIC,QAAQ,QACnB,GAAC,CAAAthB,IAAA,oBAAAN,MAED,WAEE6L,KAAK8V,IAAMngB,EAAEqK,KAAKgR,IAEdhR,KAAK8V,IAAIxkB,KAAK,YAChB0O,KAAK8V,IAAIC,QAAQ,WAGnB/V,KAAKgW,eAAiB,CACpB1R,YAAatE,KAAK8O,MAAMxK,YACxB2R,YAAY,EACZV,yBAA0B,EAC1BuE,iBAAkB,mBAGpB9Z,KAAK8V,IACFC,QAAQ/V,KAAKgW,gBACb1K,GAAG,oBAAqBtL,KAAKwV,aAClC,GAAC,CAAA/gB,IAAA,qBAAAN,MAED,SAAmBme,GACbA,EAAU1b,SAAWoJ,KAAK8O,MAAMlY,SAClCoJ,KAAK8V,IAAIC,QAAQ,WACjB/V,KAAK8V,IACFC,QAAQ/V,KAAKgW,gBACb1K,GAAG,oBAAqBtL,KAAKwV,eAG9BlD,EAAUne,QAAU6L,KAAK8O,MAAM3a,OACjC6L,KAAK8V,IAAIS,QAAQ,iBAErB,GAAC,CAAA9hB,IAAA,cAAAN,MAED,SAAY6T,GACV,OACE4G,IAAAqB,cAAA,UAAQxb,IAAKuT,EAAK7T,MAAOA,MAAO6T,EAAK7T,MAAO6d,MAAOhK,EAAKgK,OACrDhK,EAAKqO,KAGZ,GAAC,CAAA5hB,IAAA,SAAAN,MAED,WAAS,IAAA4lB,EAAA,KACP,OACEnL,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,aAAQjQ,KAAK8O,MAAMzK,OACnBuK,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,UACE9b,MAAO6L,KAAK8O,MAAM3a,MAClBsiB,IAAK,SAACzF,GAAE,OAAM+I,EAAK/I,GAAKA,CAAE,EAC1B0F,UAAQ,GAER9H,IAAAqB,cAAA,eACCvM,MAAMsM,QAAQhQ,KAAK8O,MAAMlY,SACxBoJ,KAAK8O,MAAMlY,OAAOmR,KAAI,SAACC,GAAI,OAAK+R,EAAKnD,YAAY5O,EAAK,MAG3DhI,KAAK8O,MAAM1K,cACVwK,IAAAqB,cAAA,QAAMC,UAAU,gBAAgB+B,MAAO,CAAE5G,QAAS,UAC/CrL,KAAK8O,MAAM1K,cAKtB,IAAC,CA/E4B,CAASwK,IAAMiI,YAkFjCmD,EAAqB,SAAClL,GAcjC,OACEF,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,SACEwJ,wBAAyB,CACvBC,OAAQ5K,EAAMzK,MAAQyK,EAAMzK,MAAQ,OAGxCuK,IAAAqB,cAAA,SACE3L,YAAawK,EAAMxK,YACnB4L,UAAU,eACV/b,MAAO2a,EAAM3a,MACb8lB,SAtBN,SAA2B3Z,GACzBwO,EAAM8G,kBAAkB9G,EAAM3Y,UAAWmK,EAAE4Z,OAAO/lB,MACpD,EAqBMgmB,OAnBN,SAAqB7Z,GACnB,GAAIwO,EAAMsL,UAAW,CACnB,IAAIjmB,EAAQmM,EAAE4Z,OAAO/lB,MACrB2a,EAAMsL,UAAUtL,EAAM3Y,UAAWhC,EACnC,CACF,EAeMoQ,UAAWuK,EAAMvK,UACjB8V,UAAWvL,EAAMrK,YAElBqK,EAAM1K,cACLwK,IAAAqB,cAAA,QAAMC,UAAU,gBAAgB+B,MAAO,CAAE5G,QAAS,UAC/CyD,EAAM1K,cAKjB,C,sBC9qBA,IAAIkW,EAAM,EAAQ,IACFC,EAAU,EAAQ,KAIC,iBAFvBA,EAAUA,EAAQjmB,WAAaimB,EAAQC,QAAUD,KAG/CA,EAAU,CAAC,CAAClnB,EAAOzB,EAAI2oB,EAAS,MAG9C,IAAIE,EAAU,CAEdA,OAAiB,OACjBA,WAAoB,GAEPH,EAAIC,EAASE,GAI1BpnB,EAAOD,QAAUmnB,EAAQG,QAAU,CAAC,C,mCClBpC,mBAEIC,EAFJ,MAE8B,IAA4B,GAE1DA,EAAwBvoB,KAAK,CAACiB,EAAOzB,EAAI,u7SAAk9S,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wCAAwC,MAAQ,GAAG,SAAW,4xDAA4xD,eAAiB,CAAC,w7SAAk9S,WAAa,MAEl1pB,W,sBCNf,IAAImW,EAAM,CACT,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,WAAY,IACZ,cAAe,IACf,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,WAAY,IACZ,cAAe,IACf,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,QAAS,IACT,aAAc,IACd,gBAAiB,IACjB,WAAY,IACZ,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,KAIf,SAAS6S,EAAeC,GACvB,IAAItX,EAAKuX,EAAsBD,GAC/B,OAAO5nB,EAAoBsQ,EAC5B,CACA,SAASuX,EAAsBD,GAC9B,IAAI5nB,EAAoBW,EAAEmU,EAAK8S,GAAM,CACpC,IAAIva,EAAI,IAAIya,MAAM,uBAAyBF,EAAM,KAEjD,MADAva,EAAEmF,KAAO,mBACHnF,CACP,CACA,OAAOyH,EAAI8S,EACZ,CACAD,EAAe7kB,KAAO,WACrB,OAAOhE,OAAOgE,KAAKgS,EACpB,EACA6S,EAAela,QAAUoa,EACzBznB,EAAOD,QAAUwnB,EACjBA,EAAerX,GAAK,G,6FClSL,sBACbyX,YAAe,CACbC,QAAO1Q,IAAA,CACL1V,SAAUqmB,IACVC,MAAOC,IACPC,SAAUC,KACTxO,IAAYE,YAAcF,IAAYmO,SAEzCM,WAAY,SAACC,GAAoB,OAC/BA,IAAuBjlB,OAAOuW,IAAYyO,WAAW,EACvDE,UAAUrmB,GACV,C,+rBCCEK,EAAYJ,IAAOI,UAIZimB,EAAkB9M,IAAMC,MAAK,SAACE,GAGzC,OACEH,IAAAqB,cAAA,OAAKC,UAAU,iBACZnB,EAAe4M,WACd/M,IAAAqB,cAAA,OAAKC,UAAU,gCACbtB,IAAAqB,cAAA,KAAGC,UAAU,wCACbtB,IAAAqB,cAAA,SAAG,iBAGoC,OAA1ClB,EAAe7O,WAAWhL,MAAM,EAAG,IAClC0Z,IAAAqB,cAAA,OAAKC,UAAU,sCACbtB,IAAAqB,cAAA,KAAGC,UAAU,8CACbtB,IAAAqB,cAAA,SAAG,iBAGNlB,EAAe6M,OACdhN,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,KAAGC,UAAU,iCACbtB,IAAAqB,cAAA,SAAG,QAGNlB,EAAe8M,OACdjN,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,KAAGC,UAAU,iCACbtB,IAAAqB,cAAA,SAAG,QAGNlB,EAAe+M,eACdlN,IAAAqB,cAAA,OAAKC,UAAU,uBACbtB,IAAAqB,cAAA,KAAGC,UAAU,uCACbtB,IAAAqB,cAAA,SAAG,cAKb,IAEa8L,EAAgBnN,IAAMC,MAAK,SAACE,GAEvC,GAAKA,EAAe4M,UACpB,OACE/M,IAAAqB,cAAA,OAAKC,UAAU,8BACbtB,IAAAqB,cAAA,YAAM,kBACNrB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,OACEK,IACE,0DACAvB,EAAeiN,gBAEjBzL,IAAI,kBAKd,IAEa0L,EAAerN,IAAMC,MAAK,SAACC,GAEtC,IAAIoN,EAAM,GACNpQ,EAAiB,GACjBqQ,EAAQ,GAoCZ,OAnCIrN,EAAMhD,gBAENoQ,EADEpN,EAAMsN,UACFxN,IAAAqB,cAAA,OAAKC,UAAU,iBAAgB,yBAE/BtB,IAAAqB,cAAA,OAAKC,UAAU,iBAAgB,aAGvCpE,EACE8C,IAAAqB,cAAA,MAAIC,UAAU,iBACX7X,YAAUyW,EAAMhD,gBACjB8C,IAAAqB,cAAA,YAAM,QAGVkM,EAAQvN,IAAAqB,cAAA,KAAGC,UAAU,aAAa7X,YAAUyW,EAAM9C,WAAW,SACpD8C,EAAM/C,aACfmQ,EAAMtN,IAAAqB,cAAA,OAAKC,UAAU,eAAc,oBACnCpE,EACE8C,IAAAqB,cAAA,MAAIC,UAAU,yBACX7X,YAAUyW,EAAM/C,aACjB6C,IAAAqB,cAAA,YAAM,QAGVkM,EAAQvN,IAAAqB,cAAA,KAAGC,UAAU,aAAa7X,YAAUyW,EAAM9C,WAAW,UAE7DkQ,EAAMtN,IAAAqB,cAAA,YACNnE,EACE8C,IAAAqB,cAAA,MAAIC,UAAU,yBACX7X,YAAUyW,EAAM9C,WACjB4C,IAAAqB,cAAA,YAAM,SAQVrB,IAAAqB,cAAA,OAAKC,UAAU,iBACZgM,EACDtN,IAAAqB,cAAA,OAAKC,UAAU,iBACZpE,EACAqQ,GAIT,IAEaE,EAAuBzN,IAAMC,MAAK,SAACE,GAG9C,IAAIuN,EAAO5hB,YAAcqU,GAAkBjV,YAAQiV,GAAkB,GAIrE,OAFAuN,EAAOA,EAAOA,EAAKnoB,MAAQ,IAAMmoB,EAAKpiB,KAAO,GAG3C0U,IAAAqB,cAAA,OAAKC,UAAU,kBACZnB,EAAerV,kBACdkV,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBAAoB,gBACnCtB,IAAAqB,cAAA,OAAKC,UAAU,sBAAsB3W,YAAgBwV,KAGxDA,EAAewN,aACd3N,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBAAoB,aACvBtB,IAAAqB,cAAA,QAAMgC,MAAO,CAAEuK,WAAY,WAAY,cAEnD5N,IAAAqB,cAAA,OAAKC,UAAU,sBAAsBnB,EAAewN,cAGvDD,GACC1N,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBAAoB,eACnCtB,IAAAqB,cAAA,OAAKC,UAAU,sBAAsBoM,IAK/C,IAEaG,EAA2B7N,IAAMC,MAAK,SAACE,GAGlD,IAAM9C,EACmC,gBAAvC8C,EAAe9C,oBACX,mBACA8C,EAAe9C,oBACjByQ,EAAqB,GACzB,GAAI3N,EAAe4N,iBACjB,OAAQ5N,EAAe4N,kBACrB,IAAK,KACL,IAAK,KACL,IAAK,KACHD,EAAqB,iCACrB,MACF,IAAK,KACL,IAAK,KACHA,EAAqB,wCACrB,MACF,IAAK,KACHA,EAAqB,wCACrB,MAIF,QACEA,EAAqB3N,EAAe6N,mBAK1C,IAAIC,EAAiB,GAMrB,SAASC,EAAQ3oB,GACf,OACEya,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAGC,UAAU,6BACZ/b,EAGP,CAEA,OAbI4a,EAAe8N,iBACjBA,EAAiB,+BAajBjO,IAAAqB,cAAA,OAAKC,UAAU,sBAEbtB,IAAAqB,cAAA,UAAI,uBAEJrB,IAAAqB,cAAA,MAAIC,UAAU,YACXjE,GAAuB6Q,EAAQ7Q,GAC/ByQ,GAAsBI,EAAQJ,GAC9BG,GAAkBC,EAAQD,GAC1B9N,EAAegO,iBAAmBD,EAAQ/N,EAAegO,kBAIlE,IAEaC,EAAoBpO,IAAMC,MAAK,SAACE,GAG3C,IAAIkO,EAmBJ,OAhBElO,EAAemO,UACa,MAA5BnO,EAAemO,UACfnO,EAAeoO,YACe,MAA9BpO,EAAeoO,WAEfF,EACErO,IAAAqB,cAAArB,IAAAwB,SAAA,KAAE,YACUrB,EAAemO,SAAS,IAACtO,IAAAqB,cAAA,WAAM,cAAYlB,EAAeoO,YAG/DpO,EAAemO,UAAwC,MAA5BnO,EAAemO,SACnDD,EAAkBrO,IAAAqB,cAAArB,IAAAwB,SAAA,KAAE,YAAUrB,EAAemO,UACpCnO,EAAeoO,YAA4C,MAA9BpO,EAAeoO,aACrDF,EAAkBrO,IAAAqB,cAAArB,IAAAwB,SAAA,KAAE,aAAWrB,EAAeoO,aAI9CvO,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,kBACZnB,EAAeqO,sBACdxO,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,SACrBtB,IAAAqB,cAAA,QAAMgC,MAAO,CAAEuK,WAAY,WAAY,iBAE/C5N,IAAAqB,cAAA,OAAKC,UAAU,eAAenB,EAAeqO,uBAGhDrO,EAAesO,YACdzO,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,SACrBtB,IAAAqB,cAAA,QAAMgC,MAAO,CAAEuK,WAAY,WAAY,iBAE/C5N,IAAAqB,cAAA,OAAKC,UAAU,eAAenB,EAAesO,aAGhDJ,GACCrO,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAC7BtB,IAAAqB,cAAA,OAAKC,UAAU,eAAe+M,KAIpCrO,IAAAqB,cAACqN,EAAwBvO,GAO/B,IAEMuO,EAAsB1O,IAAMC,MAAK,SAACE,GAEtC,GAAiC,aAA7BA,EAAe7O,WACjB,OACE0O,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,YAAM,oBACNrB,IAAAqB,cAAA,QAAMgC,MAAO,CAAEsL,MAAO,QAAS,gPAUzC,IAEaC,EAAmB5O,IAAMC,MAAK,SAACE,GAC1C,IACE,IAAI0O,EAAa5b,YAAgBkN,EAAe2O,oBAC5CC,EAAW9b,YAAgBkN,EAAe6O,kBAE9C,IAAKpc,YAAgB,CAAC,CAACic,EAAYE,KAAY,IAAIxe,MAAO0e,SAAS,EAAG,EAAG,EAAG,IAC1E,OAGF,GAAI9O,EAAeqN,UAEjB,OACExN,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,WAEFrB,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBAAe,uBACPhO,YAAkB6M,EAAeqN,UAAU,IAAI,IAEtExN,IAAAqB,cAAA,OAAKC,UAAU,iBACftB,IAAAqB,cAAA,KAAG6N,KAAMC,KAAmB,4BAOtC,IAAI1H,EAAO,iBAUX,OARGtH,EAAe+M,cAAczb,SAAS,cACvCgW,GAAQ,mCACDtH,EAAe+M,cAAczb,SAAS,eAC7CgW,GAAQ,oCAERA,GAAQ,YAIRzH,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,WAEFrB,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBAAgBmG,GAC/BzH,IAAAqB,cAAA,OAAKC,UAAU,gBAAe,iBACbhO,YAAkBub,GAAY,GAAO,KAAG,IACtDvb,YAAkByb,GAAU,MAMzC,CAAE,MAAAK,GACA,MACF,CACF,IAEaC,EAAiBrP,IAAMC,MAAK,SAACE,GAGxC,IAAImP,EAEJ,GAAInP,EAAeoP,aACjBD,EAAatP,IAAAqB,cAAArB,IAAAwB,SAAA,KAAGnU,YAAM8S,EAAeoP,oBAChC,GAAIpP,EAAe7O,WAAY,CACpC,IAAIuF,EAAOsJ,EAAe7O,WAAWke,OAAO,EAAG,GAG7CF,EADEnP,EAAe4M,UAEf/M,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,UAAI,0GAIJrB,IAAAqB,cAAA,UAAI,8HAMS,MAARxK,EAEPmJ,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,UAAI,6EACJrB,IAAAqB,cAAA,UAAI,6EACJrB,IAAAqB,cAAA,UAAI,iEACJrB,IAAAqB,cAAA,UAAI,qFACJrB,IAAAqB,cAAA,UAAI,sQAMJrB,IAAAqB,cAAA,UAAI,+EACJrB,IAAAqB,cAAA,UAAI,2BACsBrB,IAAAqB,cAAA,SAAG,gCAAgC,+IAMhD,MAARxK,EAEPmJ,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,UAAI,oFACJrB,IAAAqB,cAAA,UAAI,qMAKJrB,IAAAqB,cAAA,UAAI,0IAIJrB,IAAAqB,cAAA,UAAI,gZAQJrB,IAAAqB,cAAA,UAAI,+EACJrB,IAAAqB,cAAA,UAAI,6MAKJrB,IAAAqB,cAAA,UAAI,wCACJrB,IAAAqB,cAAA,UAAI,yFAEFrB,IAAAqB,cAAA,MAAIgC,MAAO,CAAEoM,UAAW,OACtBzP,IAAAqB,cAAA,UAAI,iCACJrB,IAAAqB,cAAA,UAAI,qFAGJrB,IAAAqB,cAAA,UAAI,gIAIJrB,IAAAqB,cAAA,UAAI,8GAIJrB,IAAAqB,cAAA,UAAI,uZAOS,IACXrB,IAAAqB,cAAA,KAAG6N,KAAK,gBAAgB5N,UAAU,YAAW,cAExC,IAAI,YASjBtB,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,UAAI,oFACJrB,IAAAqB,cAAA,UAAI,sQAMJrB,IAAAqB,cAAA,UAAI,0IAIJrB,IAAAqB,cAAA,UAAI,4MAKJrB,IAAAqB,cAAA,UAAI,0QAKE,IACJrB,IAAAqB,cAAA,KAAG6N,KAAK,gBAAgB5N,UAAU,YAAW,cAExC,IAAI,SAMnB,CAEA,OACEtB,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,cAC7BtB,IAAAqB,cAAA,MAAIC,UAAU,aAAagO,GAC3BtP,IAAAqB,cAAA,OAAKC,UAAU,YAAY,YAAU,qBACnCtB,IAAAqB,cAAA,QAAM,YAAU,qBAAqB,YAAU,SAAS,YAAU,UAAS,aAC3ErB,IAAAqB,cAAA,KAAGC,UAAU,+BAKvB,IASO,IAiIMoO,EAA4B1P,IAAMC,MAAK,SAACE,GACnD,IAAMwP,EAAexP,EAAewP,aAEhC1O,EAAM,GACNC,EAAY,GACZ0O,EAAKzP,EAAea,QAElB6O,EAAiB1P,EAAe0P,eAElCC,GAAc,EAElB,GAAID,EAAgB,CAClB,IAAME,EAAUF,EAAe/nB,MAAM,KAAKG,QAAO,SAAC+nB,GAAM,MAAgB,KAAXA,CAAa,IACpEttB,EAAO,GAEbqtB,EAAQ1oB,SAAQ,SAAC2oB,GACf,IAAAC,EAA8BD,EAAOloB,MAAM,KAAIooB,EAAA9Q,IAAA6Q,EAAA,GAAxCE,EAASD,EAAA,GAAEE,EAAQF,EAAA,GAC1BxtB,EAAKc,KAAK,CAAE2sB,YAAWC,YACzB,IACAlP,EAAU1d,KACRwc,IAAAqB,cAAA,OAAKxb,IAAK,iBAAkByb,UAAS,oBACnCtB,IAAAqB,cAAA,aACErB,IAAAqB,cAAA,aACG3e,EAAKyW,KAAI,SAACC,EAAM1J,GACf,OACEsQ,IAAAqB,cAAA,MAAIxb,IAAKuT,EAAgB,UAAIwW,EAAKlgB,GAChCsQ,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,QAAMC,UAAU,QAAQlI,EAAK+W,YAE/BnQ,IAAAqB,cAAA,UAAK5Y,WAAW2Q,EAAKgX,UAAUjmB,QAAQ,GAAG,QAGhD,SAKR2lB,EAAc5O,EAAUhe,OAAS,IAG/B+d,EAAIzd,KACFwc,IAAAqB,cAAA,MAAIC,UAAS,oBAAuBC,KAAK,MAAM1b,IAAK,oBAClDma,IAAAqB,cAAA,YAAM,eAId,CA0DA,OAxDIsO,GACFA,EAAaxW,KAAI,SAACC,EAAM1J,GACtB,IAAIiF,EAAK,GAEPA,EAD2B,iBAAlByE,EAAKiX,SACTjX,EAAKiX,SAAS,GAEdjX,EAAKiX,SAKRjX,EAAKkX,MACAlX,EAAKkX,KAGdrP,EAAIzd,KACFwc,IAAAqB,cAAA,MACEC,UAAS,cAAA3Z,OAA0B,IAAV+H,GAAgBogB,EAAyB,GAAX,UACvDvO,KAAK,MACL1b,IAAK,aAAe8O,EACpB,YAAU,QAAQ,YAAU,SAAS,YAAU,SAAS,YAAU,UAElEqL,IAAAqB,cAAA,YAAOjI,EAAKmX,UAIhBrP,EAAU1d,KACRwc,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OACExb,IAAK,mBAAqB8O,EAC1B2M,UAAS,aAAA3Z,OAAyB,IAAV+H,GAAgBogB,EAAyB,GAAX,WAEtD9P,IAAAqB,cAAA,aACErB,IAAAqB,cAAA,aACGjI,EAAKoX,OAAOlqB,MAAM,EAAG,IAAI6S,KAAI,SAACC,EAAM1J,GACnC,OACEsQ,IAAAqB,cAAA,MAAIxb,IAAKuT,EAAgB,UAAIwW,EAAKlgB,GAChCsQ,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,QAAMC,UAAU,QAAQlI,EAAK+W,YAE/BnQ,IAAAqB,cAAA,WAAM5Y,WAAW2Q,EAAKgX,UAAY,KAAMjmB,QAAQ,GAAG,QAGzD,QAOZ,IAOA6V,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,UAAI,oBACJrB,IAAAqB,cAAA,OAAK1M,GAAG,QAAQ2M,UAAU,wBACxBtB,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,MAAIC,UAAU,iBAAiBL,IAEjCjB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,gBAC9BtB,IAAAqB,cAAA,KAAGC,UAAU,iBAEftB,IAAAqB,cAAA,OAAKC,UAAU,aAEjBtB,IAAAqB,cAAA,OAAKC,UAAU,iBAAiBJ,KAK1C,GAAGuC,GAEH,SAASA,EAAqBC,EAAWC,GAAW,IAAA8M,EAAAC,EAClD,OAA0B,QAAtBD,EAAA/M,EAAUiM,oBAAY,IAAAc,OAAA,EAAtBA,EAAwBvtB,WAAiC,QAA3BwtB,EAAK/M,EAAUgM,oBAAY,IAAAe,OAAA,EAAtBA,EAAwBxtB,OAIjE,CAEO,IAAMytB,EAAkB3Q,IAAMC,MAAK,SAACE,GACzC,IAAI3C,EACF3R,YAAesU,IAAmBA,EAAe3C,QAAU,EAAI2C,EAAe3C,QAAU,GACtFC,EACF5R,YAAesU,IAAmBA,EAAe1C,SAAW,EAAI0C,EAAe1C,SAAW,GAExFiQ,EAAO5hB,YAAcqU,GAAkBjV,YAAQiV,GAAkB,GAEjEyQ,EAAgBlD,EAAOA,EAAKnoB,MAAQ,IAAMmoB,EAAKpiB,KAAO,GACtDulB,EACF9kB,YAAqBoU,IAAmBA,EAAe9U,YACnD8U,EAAe9U,YAAYlB,QAAQ,GAAK,SACxC,GAEN,OACE6V,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,oBACZsP,GACC5Q,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,SAAQ,YACrBtB,IAAAqB,cAAA,KAAGC,UAAU,4BACbtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWsP,IAI3BC,GACC7Q,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,SAAQ,iBACrBtB,IAAAqB,cAAA,KAAGC,UAAU,kCACbtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWuP,IAI3BrT,GACCwC,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,SAAQ,WACrBtB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,KAAGC,UAAU,WAAW9D,EAAQ,UAInCC,GACCuC,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,SAAQ,WACrBtB,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,KAAGC,UAAU,WAAW7D,EAAS,UAIpC0C,EAAe2Q,YACd9Q,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,SAAQ,YACrBtB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWnB,EAAe2Q,WAAW,UAM9D,IAEaC,EAAc/Q,IAAMC,MAAK,SAACE,GACrC,IAAM6Q,EAAmB,mCAEzB,GAAI7Q,EAAe4M,UAAW,CAK5B,OACE/M,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,KAAGC,UAAU,gBAJf,sUAMItB,IAAAqB,cAAA,KAAG6N,KAAM8B,EAAkB1F,OAAO,UAAS,6CAEtC,IAAI,uFAKjB,CAEA,OACEtL,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,KAAGC,UAAU,gBAAe,kJAEuD,IACjFtB,IAAAqB,cAAA,KAAG6N,KAAM8B,EAAkB1F,OAAO,UAAS,qCAMnD,IAEO,SAAS2F,EAAYvuB,GAC1B,IAAIqF,EAAW,GAEXrF,EAAKwuB,cACPnpB,GAAY,UAAYrF,EAAKwuB,aAG3BxuB,EAAKyuB,aACPppB,GAAY,UAAYrF,EAAKyuB,YAG3BzuB,EAAK0uB,UACPrpB,GAAY,SAAWrF,EAAK0uB,SAG1B1uB,EAAKua,YACPlV,GAAY,aAAerF,EAAKua,WAG9Bva,EAAK2uB,QACPtpB,GAAY,QAAUrF,EAAK2uB,OAGzB3uB,EAAK4uB,SACPvpB,GAAY,QAAUrF,EAAK4uB,QAG7B,IAAIC,EAAY7uB,EAAK6a,eAA0D,IAA1C7a,EAAK6a,aAAa7V,QAAQ,WAuB/D,OArBIhF,EAAK8uB,aACPzpB,IAAawpB,EAAY,SAAW,UAAY7uB,EAAK8uB,YAGnD9uB,EAAK4a,aAEHiU,EACqC,IAAnC7uB,EAAK4a,WAAW5V,QAAQ,OAC1BK,GAAY,IAAMrF,EAAK4a,WAEvBvV,GAAY,QAAUrF,EAAK4a,WAG7BvV,GAAY,UAAYrF,EAAK4a,YAI7B5a,EAAK6a,eACPxV,GAAY,YAAcrF,EAAK6a,cAG1BxV,EAASgD,MAClB,CAEO,IAAM0mB,EAAuBzR,IAAMC,MAAK,SAACE,GAAmB,IAAAuR,EAAAC,EAC3D7a,EAAQqJ,EAAeyR,cAEvBC,EAAqD,QAAjDH,EAAG5a,SAAiB,QAAZ6a,EAAL7a,EAAOhP,MAAM,YAAI,IAAA6pB,OAAA,EAAjBA,EAAmB1pB,QAAO,SAACqlB,GAAG,MAAa,KAARA,CAAU,WAAC,IAAAoE,IAAI,GAEzDI,EAAY,SAACxE,GACjB,OAAQA,GACN,IAAK,sBACH,OAAOzmB,EAAUC,OAAO,yBAC1B,IAAK,sBACH,OAAOD,EAAUC,OAAO,2BAC1B,IAAK,+BACH,OAAOD,EAAUC,OAAO,6BAC1B,IAAK,wBACH,OAAOD,EAAUC,OAAO,+BAC1B,IAAK,uBACH,OAAOD,EAAUC,OAAO,8CAC1B,QACE,OAAOD,EAAUC,OAEvB,EAQA,OACEkZ,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,0BACZuQ,EAAK1Y,KAAI,SAACmU,GAAG,OACZtN,IAAAqB,cAAA,KACExb,IAAKynB,EACL4B,KAAM4C,EAAUxE,GAChBhM,UAAU,sCACV8B,MAAOkK,EACP,YAAU,aAAa,YAAU,MAAM,YAAU,aAAa,YAAU,UAEvEA,EACC,KAmCd,IAEayE,EAAgB/R,IAAMC,MAAK,SAACE,GACvC,OACEH,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,uBACZnB,EAAeyQ,eACd5Q,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,YACxBtB,IAAAqB,cAAA,KAAGC,UAAU,4BACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,YACxBtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWnB,EAAeyQ,iBAI5CzQ,EAAe0Q,iBACd7Q,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,iBACxBtB,IAAAqB,cAAA,KAAGC,UAAU,kCACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,iBACxBtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWnB,EAAe0Q,mBAI5C1Q,EAAe3C,SACdwC,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,WACxBtB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,WACxBtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWnB,EAAe3C,QAAQ,WAIpD2C,EAAe1C,UACduC,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,WACxBtB,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,WACxBtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWnB,EAAe1C,SAAS,WAIrD0C,EAAe2Q,YACd9Q,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,YACxBtB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,YACxBtB,IAAAqB,cAAA,KAAGC,UAAU,WAAWnB,EAAe2Q,WAAW,WAOhE,IAEakB,EAAchS,IAAMC,MAAK,SAACE,GAGrC,IAAIuN,EAAO5hB,YAAcqU,GAAkBjV,YAAQiV,GAAkB,GAIrE,OAFAuN,EAAOA,EAAOA,EAAKnoB,MAAQ,IAAMmoB,EAAKpiB,KAAO,GAG3C0U,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,UAAI,uBACJrB,IAAAqB,cAAA,aACErB,IAAAqB,cAAA,aACGlB,EAAerV,kBACdkV,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,UAAI,gBACJrB,IAAAqB,cAAA,UAAK1W,YAAgBwV,KAGxBA,EAAewN,aACd3N,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,UAAI,oBACJrB,IAAAqB,cAAA,UAAKlB,EAAewN,cAGvBD,GACC1N,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,UAAI,eACJrB,IAAAqB,cAAA,UAAKqM,OAgBrB,IAEauE,EAAc,WACzB,OACEjS,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OACEC,UAAU,8CACV4Q,SAAS,KACTvd,GAAG,oBAEHqL,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,MAAIC,UAAU,mBAAkB,QAChCtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,uBACV,kBAAgB,YAChB,aAAW,WAGftB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,SACET,KAAK,OACLuR,aAAa,GACb7Q,UAAU,aACV3M,GAAG,oBACH,iBAAe,UACf,oBAAkB,MAClByO,MAAM,mBACN,uBAAqB,mBAEvBpD,IAAAqB,cAAA,OAAKC,UAAU,uBACbtB,IAAAqB,cAAA,KAAGC,UAAU,6DACbtB,IAAAqB,cAAA,KACEC,UAAU,iEACV+B,MAAO,CAAE5G,QAAS,YAIxBuD,IAAAqB,cAAA,OAAKC,UAAU,mDACbtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASkI,WAAY9Q,UAAU,uBAC1DtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,6BACb,YAAU,QAAQ,YAAU,IAAI,YAAU,eAAe,YAAU,YAC/D,WAGRtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASmI,QAAS/Q,UAAU,yCACvDtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,8BACb,YAAU,QAAQ,YAAU,WAAW,YAAU,eAAe,YAAU,YACtE,YAGRtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASoI,QAAShR,UAAU,uBACvDtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,0BACb,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAU,YAClE,QAGRtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASqI,UAAWjR,UAAU,uBACzDtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACZ,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAU,YACnE,YAOdtB,IAAAqB,cAAA,OACEC,UAAU,8CACV4Q,SAAS,KACTvd,GAAG,sBAEHqL,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,MAAIC,UAAU,mBAAkB,QAChCtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,uBACV,iBAAe,YACf,iBAAe,mBACf,gBAAc,qBAGlBtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,OAAKC,UAAU,mDACbtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASkI,WAAY9Q,UAAU,uBAC1DtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,6BACb,YAAU,QAAQ,YAAU,IAAI,YAAU,eAAe,YAAU,YAC/D,WAGRtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASmI,QAAS/Q,UAAU,yCACvDtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,8BACb,YAAU,QAAQ,YAAU,WAAW,YAAU,eAAe,YAAU,YACtE,YAGRtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASoI,QAAShR,UAAU,uBACvDtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,0BACb,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAU,YAClE,QAGRtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASqI,UAAWjR,UAAU,uBACzDtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACb,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAU,YAClE,YAQpB,EAEagC,EAAc,SAACpD,GAAU,IAAAsS,EAC9BrS,EAAiBD,EAAMC,eACvBiD,EAAmB,QAAdoP,EAAGtS,EAAMkD,aAAK,IAAAoP,IAAI,mBACvBjP,EAAmBrD,EAAMqD,iBACzBC,EAAetD,EAAMsD,aAE3BiP,EAaIC,YAA2BvS,GAV7BpY,GAFiB0qB,EAAjBE,kBACYF,EAAZG,aACQH,EAAR1qB,UACAmM,EAAYue,EAAZve,aACAoZ,EAAGmF,EAAHnF,IACApQ,EAAcuV,EAAdvV,eACAqQ,EAAKkF,EAALlF,MACAsF,EAAQJ,EAARI,SACAC,EAAWL,EAAXK,YACAC,EAAgBN,EAAhBM,iBACgBN,EAAhBzV,iBACSyV,EAAT1F,UAGF,OACE/M,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,UAAK+B,GACLpD,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,uBAC9BtB,IAAAqB,cAAA,OACEK,IAAI,0EACJC,IAAI,YAIV3B,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,OAAKC,UAAU,WAKftB,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,YAAM,SAERrB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAASmI,QACT/Q,UAAU,sEACVtB,IAAAqB,cAAA,KAAGC,UAAU,+BACb,YAAU,QAAQ,YAAU,WAAW,YAAU,eAAe,YAAWkC,EAAa,aAAa,WAEvGxD,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAASkI,WACT9Q,UAAU,mEACVtB,IAAAqB,cAAA,KAAGC,UAAU,mBACX,YAAU,QAAQ,YAAU,IAAI,YAAU,eAAe,YAAWkC,EAAa,aAAa,WAGlGxD,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAASoI,QACThR,UAAU,gEAEVtB,IAAAqB,cAAA,KAAGC,UAAU,2BACX,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAWkC,EAAa,aAAa,WAGrGxD,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAASqI,UACTjR,UAAU,gEAEVtB,IAAAqB,cAAA,KAAGC,UAAU,sBACX,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAWkC,EAAa,aAAa,aAKzGxD,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,KAAG6N,KAAK,sBACNlP,IAAAqB,cAAA,MAAIC,UAAU,eAAepN,KAGjC8L,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACbtB,IAAAqB,cAAA,SAAItZ,IAENiY,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,KAAGC,UAAU,iBAAiByR,GAC9B/S,IAAAqB,cAAA,KAAGC,UAAU,cAAa,QAAMnB,EAAenD,mBAEjDgD,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,OAAKC,UAAU,cAAcwR,GAC7B9S,IAAAqB,cAAA,OAAKC,UAAU,cAAcuR,IAE/B7S,IAAAqB,cAAA,OAAKC,UAAU,cACZgM,EACDtN,IAAAqB,cAAA,OAAKC,UAAU,SACZpE,EACAqQ,IAILvN,IAAAqB,cAAA,OAAKC,UAAU,0BACbtB,IAAAqB,cAAA,KACE6N,KAAK,qBACL5N,UAAU,0CACV8B,MAAM,wCACN,YAAU,aAAa,YAAU,gBAAgB,YAAU,cAAc,YAAWI,EAAa,aAAa,QAAS,YAAWrD,EAAe7O,YAClJ,yCAGD0O,IAAAqB,cAAA,UACEC,UAAU,gCACV,iBAAe,YACf,iBAAe,qBACf,gBAAc,oBACd8B,MAAM,wCACN,YAAU,aAAa,YAAU,gBAAgB,YAAU,cAAc,YAAWI,EAAa,aAAa,QAAS,YAAWrD,EAAe7O,YAClJ,yCAGD0O,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAAS3G,EACTjC,UAAU,YACV8B,MAAM,uCACN,YAAU,aAAa,YAAU,QAAQ,YAAU,cAAc,YAAWI,EAAa,aAAa,QAAS,YAAWrD,EAAe7O,YAC1I,oBASf,C,4NC90CMzK,EAAYJ,IAAOI,UACnBiZ,EAAiBrZ,IAAOqZ,eACxBkT,EAAsBvsB,IAAOusB,oBAE7BC,EAAkB,SAAH5mB,GAA0C,IAApC6mB,EAAM7mB,EAAN6mB,OAAMC,EAAA9mB,EAAE+mB,eAAO,IAAAD,EAAG,YAAWA,EACtD,OACEnT,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OACEK,IAAKwR,EACLG,QAAS,SAAFnlB,GAAyB,IAApBolB,EAAaplB,EAAbolB,cACVA,EAAcC,QAAU,KACxBD,EAAc5R,IAAMsR,CACtB,EACArR,IAAKyR,EACL9a,QAAQ,SAIhB,EAEMkb,EAAoB,WACxB,OACExT,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAAA,OAAKC,UAAU,QACbtB,IAAAqB,cAAA,OACEK,IAAI,sEACJC,IAAI,iBAGR3B,IAAAqB,cAAA,QAAMC,UAAU,OAAM,gBAI9B,EAEMmS,EAAc,SAACxtB,GAAa,IAAAytB,EAChCzU,EAA4BC,oBAAS,GAAMC,EAAAC,IAAAH,EAAA,GAApC0U,EAAMxU,EAAA,GAAEyU,EAASzU,EAAA,GACxB+J,EAAgChK,oBAAS,GAAKiK,EAAA/J,IAAA8J,EAAA,GAAvC2K,EAAQ1K,EAAA,GAAaA,EAAA,GAE5B5J,qBAAU,WAKR,IAAI/N,EAAUX,YAAU,oBACpBW,GAAWA,EAAQ1J,MAAM,KAAK2J,SAASxL,EAASqL,aAClDsiB,GAAU,EAEd,GAAG,IA4CH,IAAAnB,EAcIC,EAA2BzsB,GAb7B0sB,EAAiBF,EAAjBE,kBACAC,EAAYH,EAAZG,aACA7qB,EAAQ0qB,EAAR1qB,SACAmM,EAAYue,EAAZve,aACAoZ,EAAGmF,EAAHnF,IACApQ,EAAcuV,EAAdvV,eACAqQ,EAAKkF,EAALlF,MACAsF,EAAQJ,EAARI,SACAC,EAAWL,EAAXK,YACAC,EAAgBN,EAAhBM,iBACA/V,EAAgByV,EAAhBzV,iBACA+P,EAAS0F,EAAT1F,UACA+G,EAASrB,EAATqB,UAKF,OACE9T,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OACEC,UAAWgJ,IAAW,CAAC,eAAgB,CAAEyJ,QAAShH,KAClDlnB,IAAKI,EAASqL,YAEd0O,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,KACEC,UAAU,8BACV,YAAU,aAAa,YAAU,aAAa,YAAU,eAAe,YAAU,kBAAkB,YAAWrb,EAASqL,WAEvH4d,KAAMyD,GAEL5F,GACC/M,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OAAKK,IAAKqL,EAAWpL,IAAI,kBAiB7B3B,IAAAqB,cAAA,OAAKC,UAAU,uBACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,sBACQ,GAApBwS,EAAU5wB,QAAe8c,IAAAqB,cAACmS,EAAiB,MAE1CxT,IAAAqB,cAAC4R,EAAe,CACdC,OAAQN,EACRQ,QAASlf,MAMhB4f,EAAU5wB,OAAS,GAClB4wB,EAAU3a,KAAI,SAAC6a,EAAOtkB,GACpB,OACEsQ,IAAAqB,cAAA,OAAKC,UAAU,gBACZ5R,GAASokB,EAAU5wB,OAAS,GAAK8c,IAAAqB,cAACmS,EAAiB,MACpDxT,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAC4R,EAAe,CAACvR,IAAKsS,EAAOrS,IAAKzN,KAI1C,KAEH4f,EAAU5wB,OAAS,GAClB8c,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,yBAKvBtB,IAAAqB,cAAA,OAAKC,UAAU,uBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,OAAKC,UAAU,aACZyL,GACC/M,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KAAGC,UAAU,wCACbtB,IAAAqB,cAAA,YAAM,iBAG4B,QAAlB,QAAnBqS,EAAAztB,EAASqL,kBAAU,IAAAoiB,OAAA,EAAnBA,EAAqBptB,MAAM,EAAG,KAC7B0Z,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,KAAGC,UAAU,8CAAgD,IAE7DtB,IAAAqB,cAAA,YAAM,iBAGTpb,EAAS+mB,OACRhN,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,KAAGC,UAAU,iCAAmC,IAChDtB,IAAAqB,cAAA,YAAM,QAGTpb,EAASgnB,OACRjN,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,KAAGC,UAAU,iCAAmC,IAChDtB,IAAAqB,cAAA,YAAM,QAGTpb,EAASinB,eACRlN,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,KAAGC,UAAU,uCAAyC,IACtDtB,IAAAqB,cAAA,YAAM,gBAKdrB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,KAAG6N,KAAMyD,EACT,YAAU,aAAa,YAAU,aAAa,YAAU,eAAe,YAAU,kBAAkB,YAAW1sB,EAASqL,YACrH0O,IAAAqB,cAAA,MAAIC,UAAU,eAAepN,IAE/B8L,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBACZuS,GACC7T,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAWgJ,IAAW,CACpB,oBACA,CAAE2J,OAAQN,KAEZzJ,QAAS,SAACxY,GAAC,OAjL/B,SAAqBA,GAEnBA,EAAEuV,iBAKF5V,YAAgBpL,EAASqL,YAAaqiB,GACtCC,GAAWD,EA4Bb,CA6IoCO,CAAYxiB,EAAE,GAE9BsO,IAAAqB,cAAA,KACE,YAAU,QAAQ,YAAU,WAAW,YAAU,eAAe,YAAU,kBAAkB,YAAWpb,EAASqL,WAChHgQ,UAAWgJ,IAAW,CACpB,SACA,CAAE,oBAAqBqJ,GACvB,CAAE,0BAA2BA,QAKrC3T,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,kBAChCtB,IAAAqB,cAAA,YAAM,iBACUrB,IAAAqB,cAAA,WAAM,kBAAerB,IAAAqB,cAAA,WAAO,IAAI,yBAKpDrB,IAAAqB,cAAC8S,IAAkBluB,KAGvB+Z,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACbtB,IAAAqB,cAAA,SAAItZ,IAENiY,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,KAAGC,UAAU,iBAAiByR,GAC9B/S,IAAAqB,cAAA,KAAGC,UAAU,cAAa,QAAMtE,IAElCgD,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,OAAKC,UAAU,cAAcwR,GAC7B9S,IAAAqB,cAAA,OAAKC,UAAU,cAAcuR,IAE/B7S,IAAAqB,cAAA,OAAKC,UAAU,cACZgM,EACDtN,IAAAqB,cAAA,OAAKC,UAAU,SACZpE,EACAqQ,OAQjB,EAEa6G,EAAe,SAAClU,GAC3B,OAAKA,EAAMzN,KAITuN,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,iBACf,YAAU,QAAQ,YAAU,aAAa,YAAU,eAAe,YAAU,kBAAkB,YAAWpB,EAAM5O,YAC5G4O,EAAMzN,KAAK0G,KAAI,SAAClT,EAAUjD,GAAC,OAC1Bgd,IAAAqB,cAACoS,EAAgBxtB,EAAY,MAP5B+Z,IAAAqB,cAAArB,IAAAwB,SAAA,KAYX,EAEO,SAASkR,EACdzsB,GAEA,IAAAouB,EAAAC,EAAAC,EAAAC,EAAAC,EAWI7B,EAXJ8B,EAAA1mB,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,GAAAA,UAAA,GADuC,CAAC,EAAC2mB,EAAAD,EAAvCE,iBAAS,IAAAD,GAAQA,EAAAE,EAAAH,EAAEI,cAAM,IAAAD,GAAOA,EAG9BlC,EACF9rB,EAAUmpB,OAAOtnB,QAAQ,aAAczC,EAASqL,YAChD,IACAhJ,cAEEysB,EAAoC,QAA3BV,EAAGpuB,EAAS6W,uBAAe,IAAAuX,OAAA,EAAxBA,EAA0BpsB,QAAO,SAAU4Y,GACzD,MAA2B,oBAApBA,EAAMjD,SACf,IAAG,GAKDgV,OADgB5oB,IAAd+qB,EACajV,EAAiBiV,EAAUzU,UAE3B0S,EAGjB,IA4BI9e,EA5BA4f,EAAoC,QAA3BQ,EAAGruB,EAAS6W,uBAAe,IAAAwX,OAAA,EAAxBA,EAA0BrsB,QAAO,SAAU4Y,GACzD,MAA2B,aAApBA,EAAMjD,SACf,IAAGzE,KAAI,SAACC,GACN,OAAO0G,EAAiB1G,EAAKkH,SAC/B,IAGI0U,EACF/uB,EAASsX,eAA8D,IAA9CtX,EAASsX,aAAa7V,QAAQ,WACrDK,EAAW,GAEX9B,EAASqX,aAETvV,GADEitB,GAEwC,IAAxC/uB,EAASqX,WAAW5V,QAAQ,OACxBzB,EAASqX,WACT,MAAQrX,EAASqX,WAEXrX,EAASqX,WAEvBvV,GAAY,KAGV9B,EAASsX,eACXxV,GAAY9B,EAASsX,cAOnBtX,EAASgX,WAAoC,MAAvBhX,EAASgX,WACjC/I,EAAejO,EAASgX,WACP/Z,OAAS,KACxBgR,EAAeA,EAAa5N,MAAM,EAAG,IAAM,OAI7C4N,EAAe,GAAHvM,OAAMgD,YAAgB1E,GAAS,KAAA0B,OAAI1B,EAASsX,cAK1D,IA+CIsV,EA/CAvF,EAAM,GACNpQ,EAAiB,GACjBqQ,EAAQ,GACRtnB,EAASiX,gBACXoQ,EACEtN,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,SAAG,cAGPnE,EACE8C,IAAAqB,cAAA,KAAGC,UAAU,+BACV2T,EAAQhvB,EAASiX,eAAgB4X,IAGtCvH,EAAQvN,IAAAqB,cAAA,KAAGC,UAAU,aAAa7X,YAAUxD,EAASmX,UAAW,GAAG,SAC1DnX,EAASkX,aAClBmQ,EACEtN,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SAAG,qBAGPnE,EACE8C,IAAAqB,cAAA,KAAGC,UAAU,uCACV2T,EAAQhvB,EAASkX,YAAa2X,IAGnCvH,EAAQvN,IAAAqB,cAAA,KAAGC,UAAU,aAAa7X,YAAUxD,EAASmX,UAAW,GAAG,UAEnEF,EACE8C,IAAAqB,cAAA,KAAGC,UAAU,uCACV2T,EAAQhvB,EAASmX,UAAW0X,IAGjCvH,EACEvN,IAAAqB,cAAA,KAAGC,UAAU,YAAY+B,MAAO,CAAE6R,QAAS,MAAO,KAKpD5H,EACEtN,IAAAqB,cAAA,OAAKC,UAAU,cAAc+B,MAAO,CAAE6R,QAAS,MAC7ClV,IAAAqB,cAAA,SAAG,OAOT,IAkBIyR,EAEEqC,EACAC,EA6CFrC,EAlEArF,EAAOxiB,YAAQjF,IAGjB4sB,EADW,OAATnF,EAEA1N,IAAAqB,cAAA,SACErB,IAAAqB,cAAA,KAAGC,UAAU,4BAA8B,IAACtB,IAAAqB,cAAA,YAAOqM,EAAKnoB,OAAc,IACrEmoB,EAAKpiB,MAKR0U,IAAAqB,cAAA,SACErB,IAAAqB,cAAA,KAAGC,UAAU,4BAA8B,KAO7CzV,YAAe5F,MAGbA,EAASuX,SAAWvX,EAASuX,QAAU,IAEvC2X,EADEP,EAEA5U,IAAAqB,cAAA,SACErB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,YAAOpb,EAASuX,UAKlBwC,IAAAqB,cAAA,YACErB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,YAAOpb,EAASuX,WAKpBvX,EAASwX,UAAYxX,EAASwX,SAAW,IAEzC2X,EADER,EAEA5U,IAAAqB,cAAA,SACErB,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,YAAOpb,EAASwX,WAKlBuC,IAAAqB,cAAA,YACErB,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,YAAOpb,EAASwX,YAMtBqV,EADEqC,GAAOC,EACK,CAACD,EAAKnV,IAAAqB,cAAA,QAAMC,UAAU,gBAAuB8T,GAClDD,GAAOC,EACF,CAACD,EAAKC,GAENpV,IAAAqB,cAAA,SAAG,MAOnB0R,EADE9sB,EAAS6E,iBACQH,YAAgB1E,GAEhB,SAGrB,IAAI+W,EAAmB/W,EAASqL,WAAU,GAAA3J,OAChB,QADgB4sB,EACnCtuB,EAASqL,kBAAU,IAAAijB,OAAA,EAAnBA,EAAqBjuB,MAAM,EAAG,GAAE,KAAAqB,OAAuB,QAAvB6sB,EAAIvuB,EAASqL,kBAAU,IAAAkjB,OAAA,EAAnBA,EAAqBluB,MAC1D,EACA,GACD,KAAAqB,OAAuB,QAAvB8sB,EAAIxuB,EAASqL,kBAAU,IAAAmjB,OAAA,EAAnBA,EAAqBnuB,MAAM,IAChC,GAEA+uB,EACF,0DACApvB,EAASmnB,gBAGX,MAAO,CACLuF,oBACAC,eACA7qB,WACAmM,eACAoZ,MACApQ,iBACAqQ,QACAsF,WACAC,cACAC,mBACA/V,mBACA+P,YAdcuI,EAAervB,IAAYovB,EAezCvB,YAEJ,CAEA,SAASmB,EAAQ1vB,GACf,QAD4ByI,UAAA9K,OAAA,QAAA8G,IAAAgE,UAAA,KAAAA,UAAA,GAGxBgS,IAAAqB,cAAArB,IAAAwB,SAAA,KACG/X,YAAUlE,EAAO,GAAG,IAACya,IAAAqB,cAAA,YAAM,QAK9BrB,IAAAqB,cAAArB,IAAAwB,SAAA,KACG,IACDxB,IAAAqB,cAAA,YAAO5X,YAAUlE,EAAO,IAAU,OAI1C,CAEO,SAAS+vB,EAAe5yB,GAC7B,MAA8B,WAAvBA,EAAK6yB,cAQd,C,0RCpiBMC,GADIpvB,OAAOW,EACO,YAgBxB,SAAS0uB,EAAaviB,GAClB,MAAO,gBAAgBnJ,KAAKmJ,EAChC,CAgBO,SAASwiB,EAAoBntB,GAChC,GAAY,KAARA,EACA,MAAO,GAUX,IALA,IAAIotB,EAAkC,KAFtCptB,EAAM,GAAKA,GAEUb,QAAQ,KACzBkuB,EAASD,EAAaptB,EAAIjC,MAAM,GAAKiC,EACrCwP,EAAQ,EACR/U,EAAI4yB,EAAO1yB,OAAS,EAEjBF,EAAI,KACP+U,GAEa,IACT6d,EAASA,EAAOtvB,MAAM,EAAGtD,GAAK,IAAM4yB,EAAOtvB,MAAMtD,GACjD+U,EAAQ,GAGZ/U,IAGJ,OAAQ2yB,EAAa,IAAM,IAAMC,CACrC,CAEO,SAASC,EAAUtwB,GACtB,OAAOA,EAAMwF,OAAOrC,QAAQ+B,OAAO,IAAK,KAAM,GAClD,CAMO,SAASqrB,EAAsBC,EAAUzuB,EAAO/B,GAC7B,kBAAVA,IACRA,EAAQA,EAAMiP,YAGlB,IAAMwhB,EAAgBD,EAASzuB,GAE/B,OAAQA,GACJ,IAAK,sBA0CL,IAAK,0BAGD,MAAc,MAFd/B,EAAQswB,EAAUtwB,IAGP,4BAGJ,GAzCX,IAAK,0BA0CL,IAAK,8BAGD,MAAc,MAFdA,EAAQswB,EAAUtwB,IAGP,wBAGJ,GAzCX,IAAK,4BA0CL,IAAK,gCAGD,MAAc,MAFdA,EAAQswB,EAAUtwB,IAGP,wBAGJ,GAzCX,IAAK,qBAGD,MAAc,MAFdA,EAAQswB,EAAUtwB,IAGP,2BACCA,EAAQywB,EAAcC,SACvB,6BAA+BP,EAAoB,GAAKM,EAAcC,UAAY,OAGtF,GACX,IAAK,yBAwCL,IAAK,6BAGD,MAAc,MAFd1wB,EAAQswB,EAAUtwB,IAGP,oBAGJ,GAfX,IAAK,yBAGD,MAAc,MAFdA,EAAQswB,EAAUtwB,IAGP,6BAGJ,GAsBX,QACI,MAAO,GAEnB,CAEO,SAAS2wB,EAA0BH,EAAUzuB,EAAO/B,GAKvD,IA0IIwS,EALqB7E,EApIzB,GALsB,kBAAV3N,IACRA,EAAQA,EAAMiP,aAGIuhB,EAASzuB,GACbiO,SAkHd,MAAO,GAjHP,OAAQjO,GACJ,IAAK,eACD,MAAc,KAAV/B,EACO,wBACC,eAAewE,KAAKxE,GAIzB,GAHI,mCAIf,IAAK,cA2DL,IAAK,cACD,MAAc,KAAVA,EACO,gBACC4wB,EAAmB5wB,GAIxB,GAHI,2BAvDf,IAAK,aA2DL,IAAK,aACD,MAAc,KAAVA,EACO,mBACC4wB,EAAmB5wB,GAIxB,GAHI,8BAvDf,IAAK,QACD,MAAc,KAAVA,EACO,uBArMhB,0BAA0BwE,KAsMUxE,IAAW,UAAUwE,KAAKxE,GAIlD,GAHI,kCAIf,IAAK,eACD,IAAI6wB,EAAWL,EAAgB,MAAExwB,MAAMwF,OAEvC,MAAc,KAAVxF,GAEOA,IAAU6wB,EADV,gCAKJ,GACX,IAAK,QACD,MAAc,KAAV7wB,EACO,iBA2Ed,oDACCwE,KA3E2BxE,GAIlB,GAHI,4BAIf,IAAK,cACD,MAAc,KAAVA,EACO,0BA3O3B,SAAiBoP,GACb,GAAkB,KAAdA,EAAGzR,OAAe,OAAO,EAE7B,IADA,IAAImzB,EAAM,EACDrzB,EAAI,EAAGA,EAAI,GAAIA,IACpBqzB,GAAO5tB,WAAWkM,EAAG5D,OAAO/N,KAAO,GAAKA,GAE5C,OAAK,GAAKqzB,EAAM,IAAM,KAAO5tB,WAAWkM,EAAG5D,OAAO,IAGtD,CAmO4BulB,CAAQ/wB,GAIb,GAHI,qCAIf,IAAK,eACL,IAAK,gBACD,MAAc,KAAVA,EACO,uBAqEE2N,EApEmB3N,EAqErCgxB,EAAiBxsB,KAAKmJ,GAjEV,GAHI,kCAoBf,IAAK,WACD,MAAc,KAAV3N,EACO,iBAGJ,GACX,IAAK,WAGD,MAAc,MAFdA,EAAQswB,EAAUtwB,IAGP,2BACCkwB,EAAalwB,KACjB,SAASwE,KAAKxE,KAwC9BwS,EAAQ,EAvCsBxS,EAyC9BuC,MAAM,IAAIG,QAAO,SAAUuuB,GACvBhB,EAAgBzrB,KAAKysB,IACrBze,GAER,IAEOA,EA/CoC,GACpB,qCAGJ,GACX,IAAK,gBACD,MAAc,KAAVxS,EACO,yCAGJ,GACX,QACI,MAAO,GAMvB,CASA,IAAIkxB,EAAwB,6BAE5B,SAASN,EAAmBjjB,GACxB,OAAOujB,EAAsB1sB,KAAKmJ,EACtC,CAEA,IAAIqjB,EAAmB,qC,YCpThB,SAASG,EAAcxW,GAC5B,IAAM7N,EAAWskB,cAEjB1X,EAAoCC,oBAAS,GAAMC,EAAAC,IAAAH,EAAA,GAA5C2X,EAAUzX,EAAA,GAAE0X,EAAa1X,EAAA,GA8PhC,SAAS2X,EAAoBvuB,EAAK4pB,GAChC,IAAIpuB,EAASgzB,EAAYxuB,EAAK4pB,GAE9B,OAAGpuB,EAAS,EACD,EAGJA,CACT,CAEA,SAASgzB,EAAYxuB,EAAK4pB,GAKxB,YAJqBnoB,IAAjBmoB,IACAA,EAAe,GAGA,iBAAR5pB,GAIP0B,MAAM1B,GAHC4pB,EAOJ5pB,CACT,CAEA,SAASyuB,EAAgB/V,EAAK3Z,EAAOoK,GAGnC,IAAInM,EAAQmM,EAAE4Z,OAAO/lB,MACjB0xB,EAAWxuB,WAAWlD,EAAMmD,QAAQ,KAAM,KAU9C,GAAIuuB,GAAyB,IAAbA,EAAgB,CAG5B,IAAIC,EAAS,GAAKD,EAEd/W,EAAM5Y,GAAO6vB,WACbD,EAASA,EAAO5wB,MAAM,EAAG4Z,EAAM5Y,GAAO6vB,WAG1C5xB,EAAQmwB,EAAoB,GAAKwB,EACrC,MACI3xB,EAAQ,GAGZ8M,EAAS+kB,YAAoB,CACzB9vB,MAAOA,EACP/B,MAAOA,IAKb,CAEA,SAASimB,EAAUvK,EAAK3Z,EAAOoK,GAG7BA,EAAEuV,iBAEF5U,EAASglB,YAAmB,CACxB/vB,MAAOA,EACPkO,aAAcsgB,EAAsB5V,EAAO5Y,EAAOoK,EAAE4Z,OAAO/lB,UAMjE,SAAqB0b,EAAK3Z,EAAOgwB,GAC/B,IAAIC,EAAc,CACdC,oBAAqBtX,EAAMsX,oBAAoBjyB,MAC/CkyB,wBAAyBvX,EAAMuX,wBAAwBlyB,MACvDmyB,0BAA2BxX,EAAMwX,0BAA0BnyB,MAC3DoyB,mBAAoBzX,EAAMyX,mBAAmBpyB,MAC7CqyB,uBAAwB1X,EAAM0X,uBAAuBryB,MAErDsyB,wBAAyB3X,EAAM2X,wBAAwBtyB,MACvDuyB,4BAA6B5X,EAAM4X,4BAA4BvyB,MAC/DwyB,8BAA+B7X,EAAM6X,8BAA8BxyB,MACnEyyB,uBAAwB9X,EAAM8X,uBAAuBzyB,MACrD0yB,2BAA4B/X,EAAM+X,2BAA2B1yB,OAGjEgyB,EAAYjwB,GAASgwB,EAErB,IAAIY,EAAqBhY,EAAMiY,0BAA0B5yB,MACrD6yB,EAAiBlY,EAAMmY,sBAAsB9yB,MAC7C+yB,EAAgBpY,EAAMqY,qBAAqBhzB,MAE/C,GAAY,SAAR0b,EAAgB,CAChB,IAwCIuX,EACAC,EACAhB,EA1CAD,EAAsBzb,KAAKrE,KAAKme,EAAU0B,EAAYC,qBAAsBtX,EAAMsX,oBAAoBkB,UAiB1G,GAfc,wBAAVpxB,IACwC,KAApCiwB,EAAYC,sBAA+B3B,EAAU0B,EAAYC,qBAAuBtX,EAAMsX,oBAAoBkB,SAClHrmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACP/B,MAAOmwB,EAAoB,GAAK8B,EAAoBrtB,QAAQ,IAC5DwuB,KAAM,0BAA4BzY,EAAMsX,oBAAoBkB,SAAW,SAG3ErmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACPqxB,KAAM,QAKdC,EAAiB3X,EAAKsW,GAoBtB,OAjBAllB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAO,YAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,oCACP/B,MAAO,OASf,IAEIszB,EACAC,EACAC,EAJArB,EAA4B,EAMhC,GAAIxX,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAUC,KAmBtDC,EAjBCr1B,EAASs1B,EAAY,CACrBC,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBtB,EAAmBuB,eACpCC,uBAAwB7D,EAAU0B,EAAYE,yBAC9CkC,UAAWzB,EAAmB0B,SAC9BC,QAAS3B,EAAmB4B,MAC5BC,oBAAqBvC,EACrBwC,YAAanE,EAAU0B,EAAYI,oBACnCsC,wBAAyBpE,EAAU0B,EAAYK,wBAC/CsC,mBAAoBha,EAAMia,eAAe50B,MACzC60B,0BAA2BvE,EAAU0B,EAAYG,2BACjD2C,uBAAwB7C,EACxBU,mBAAoBA,IAKC,yBAGrBM,EAA+B,EAC/BC,EAAuB,EACvBhB,EAA0B,EAC1BC,EAA4B,EAC5BoB,EAAkC,EAClCC,EAAoC,EAEpCuB,EAAkB,kCAElB9B,EAA+BzB,EAAYhzB,EAAOw2B,2BAA6BxD,EAAYhzB,EAAOy2B,2BAClG/B,EAAuB1B,EAAYhzB,EAAO02B,uBAAyB1D,EAAYhzB,EAAO22B,uBACtFjD,EAA0BV,EAAYhzB,EAAO02B,uBAC7C/C,EAA4BX,GAAahzB,EAAO22B,uBAEhD7B,EAAwB90B,EAAO42B,4BAC/B7B,EAAkC/B,EAAYhzB,EAAOw2B,2BACrDxB,EAAoChC,EAAYhzB,EAAOy2B,2BAEvDnoB,EAAS+kB,YAAoB,CACzB9vB,MAAO,wBACP/B,MAAOszB,KAGXxmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAOq1B,EAAiB,OAAQ1a,EAAM2a,WAAWt1B,OAASszB,OAIlExmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,OAEpEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,4BACP/B,MAAOmwB,EAAoB,GAAKgC,EAA0BvtB,QAAQ,OAEtEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,OAE5EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,oCACP/B,MAAOmwB,EAAoB,GAAKqD,EAAkC5uB,QAAQ,YAE3E,GAAI+V,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAU4B,KAAM,CAEtE,IAAI/2B,EAeDq1B,EAfCr1B,EAASg3B,EAAQ,CACjBzB,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBpB,EAAeqB,eAChCC,uBAAwB7D,EAAU0B,EAAYE,yBAC9CkC,UAAWvB,EAAewB,SAC1BC,QAASzB,EAAe0B,MACxBC,oBAAqBvC,EACrBwC,YAAanE,EAAU0B,EAAYI,oBACnCsC,wBAAyBpE,EAAU0B,EAAYK,wBAC/CsC,mBAAoBha,EAAMia,eAAe50B,MACzC6yB,eAAgBA,IAKK,yBAGrBI,EAA+B,EAC/BC,EAAuB,EACvBhB,EAA0B,EAC1BqB,EAAkC,EAElCwB,EAAkB,kCAElB9B,EAA+BzB,EAAYhzB,EAAOi3B,yBAClDvC,EAAuB1B,EAAYhzB,EAAOk3B,qBAC1CxD,EAA0BV,EAAYhzB,EAAOk3B,qBAE7CnC,EAAkC/B,EAAYhzB,EAAOi3B,0BAGzD3oB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,OAEpEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,MAEhF,CAGJ,KAAO,IAAY,aAAR8W,EAyGP,MAAM,IAAIkL,MAAM,qCAxGhB,IAAI0L,EAA0B9b,KAAKrE,KAAKme,EAAU0B,EAAYM,yBAA0B3X,EAAM2X,wBAAwBa,UAiBtH,GAfc,4BAAVpxB,IAC4C,KAAxCiwB,EAAYM,0BAAmChC,EAAU0B,EAAYM,yBAA2B3X,EAAM2X,wBAAwBa,SAC9HrmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAKmC,EAAwB1tB,QAAQ,IAChEwuB,KAAM,0BAA4BzY,EAAM2X,wBAAwBa,SAAW,SAG/ErmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACPqxB,KAAM,QAKdC,EAAiB3X,EAAKsW,GAoBtB,OAjBAllB,EAAS+kB,YAAoB,CACzB9vB,MAAO,mCACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,2BACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,sCACP/B,MAAO,YAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,wCACP/B,MAAO,OAMf,IAcI21B,EACAC,EACArD,EACAC,EACAqD,EACAC,EAnBAC,EAAYC,EAAO,CACnBC,kBAAmBtb,EAAMqZ,qBAAqBh0B,MAC9Ck2B,uBAAwB1f,KAAKrE,KAAKme,EAAU0B,EAAYO,6BAA8B5X,EAAMqZ,qBAAqBh0B,OACjHm2B,iBAAkBxb,EAAMyb,gBAAgBp2B,MACxCq2B,mBAAoB1b,EAAMia,eAAe50B,MACzCs2B,qBAAsBhE,EACtBiE,oBAAqBjG,EAAU0B,EAAYS,wBAC3C+D,wBAAyBlG,EAAU0B,EAAYU,4BAC/C+D,0BAA2BnG,EAAU0B,EAAYQ,+BACjDO,cAAeA,IAYgB,KAA/BgD,EAAUW,kBACVf,EAAmC,EACnCC,EAA2B,EAC3BrD,EAA8B,EAC9BC,EAAgC,EAChCqD,EAAsC,EACtCC,EAAwC,EAExCf,EAAkB,2CAElBY,EAAmCpE,EAAoBwE,EAAUY,iCAAmCpF,EAAoBwE,EAAUa,mCAClIhB,EAA2BrE,EAAoBwE,EAAUc,kCAAoCtF,EAAoBwE,EAAUe,oCAC3HvE,EAA8BhB,EAAoBwE,EAAUc,kCAC5DrE,EAAgCjB,EAAoBwE,EAAUe,oCAC9DjB,EAAsCtE,EAAoBwE,EAAUY,iCACpEb,EAAwCvE,EAAoBwE,EAAUa,oCAG1E9pB,EAAS+kB,YAAoB,CACzB9vB,MAAO,mCACP/B,MAAOmwB,EAAoB,GAAKwF,EAAiC/wB,QAAQ,OAE7EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,2BACP/B,MAAOmwB,EAAoB,GAAKyF,EAAyBhxB,QAAQ,OAErEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,8BACP/B,MAAOmwB,EAAoB,GAAKoC,EAA4B3tB,QAAQ,OAExEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,gCACP/B,MAAOmwB,EAAoB,GAAKqC,EAA8B5tB,QAAQ,OAE1EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sCACP/B,MAAOmwB,EAAoB,GAAK0F,EAAoCjxB,QAAQ,OAEhFkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,wCACP/B,MAAOmwB,EAAoB,GAAK2F,EAAsClxB,QAAQ,MAItF,CACF,CArTEmyB,CAAYrb,EAAK3Z,EAAOoK,EAAE4Z,OAAO/lB,MACnC,CAsTA,SAAS+0B,EAAkBhe,GACzB4D,EAAMhE,eAAeI,EACvB,CAEA,SAAS8c,EAAcmD,EAAW5uB,GAChC,OAAO4uB,EAAUC,OAAOv0B,QAAO,SAASuF,GACpC,OAAOA,EAAMG,YAAcA,CAC/B,IAAGzK,OAAS,CACf,CAEC,SAAS01B,EAAiB3X,EAAK8U,GAC7B,IAAI0G,EAAiB,GA6BrB,MA3BY,SAARxb,EACAwb,EAAiBvc,EAAMwc,mBAAmBn3B,MAM3B,aAAR0b,IACPwb,EAAiBvc,EAAMyc,uBAAuBp3B,OAQ1Bk3B,EAAetjB,KAAI,SAAA7R,GACvC,IAAIkO,EAAesgB,EAAsB5V,EAAO5Y,EAAOyuB,EAASzuB,IAOhE,OALA+K,EAASglB,YAAmB,CACxB/vB,MAAOA,EACPkO,aAAcA,KAGM,KAAjBA,CACX,IAEuBonB,OAAM,SAAAh4B,GAAC,OAAIA,CAAC,GACrC,CAEA,SAASg2B,EAAiB3Z,EAAK4Z,GAC7B,IAAIgC,EAAgB,GA0BpB,MAxBY,SAAR5b,GACA4b,EAAgB,CACZ,sBACA,0BACA,qBACA,0BAGAhC,GACAgC,EAAcr5B,KAAK,8BAER,aAARyd,IACP4b,EAAgB,CACZ,0BACA,8BACA,yBACA,8BAGAhC,GACAgC,EAAcr5B,KAAK,kCAIpBq5B,CACT,CAEA,SAASC,EAAa5c,GACpB,OAAOF,IAAAqB,cAAA,QAAMC,UAAU,gBAAgB+B,MAAO,CAAE5G,QAASyD,EAAM5D,QAAU,QAAU,SAAW4D,EAAM5D,QACtG,CAUA,OAjtBAiD,qBAAU,WAGR,GAA6C,IAA1CW,EAAMiY,0BAA0B5yB,OACU,IAAtC2a,EAAMmY,sBAAsB9yB,OACS,IAArC2a,EAAMqY,qBAAqBhzB,MAFlC,CAOA,IAIIizB,EACAC,EACAjB,EACAC,EACAqB,EACApB,EACAqB,EAGAF,EAbAX,EAAqBhY,EAAMiY,0BAA0B5yB,MACrD6yB,EAAiBlY,EAAMmY,sBAAsB9yB,MAC7C+yB,EAAgBpY,EAAMqY,qBAAqBhzB,MAa/C,GAAI2a,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAUC,KAAM,CAC/D,IAAI4D,GAAmB7E,EAAmB8E,gBAEtCj5B,EAASs1B,EAAY,CACrBC,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBtB,EAAmBuB,eACpCC,sBAAuBxZ,EAAMqZ,qBAAqBh0B,MAClDo0B,UAAWzB,EAAmB0B,SAC9BC,QAAS3B,EAAmB4B,MAC5BC,oBAAqBgD,EACrB/C,WAAY,GACZC,uBAAwB,GACxBC,mBAAoBha,EAAMia,eAAe50B,MACzC60B,yBAA0B,KAC1BC,uBAAwB0C,EACxB7E,mBAAoBA,IAKxBW,EAAwB3Y,EAAMqZ,qBAAqBh0B,OAAS,IAE5DizB,EAA+BzB,EAAYhzB,EAAOk5B,4BAA8BpE,EAAwB9B,EAAYhzB,EAAOm5B,2BAA6B,GACxJzE,EAAuB1B,EAAYhzB,EAAOo5B,cAAgBtE,EAAwB9B,EAAYhzB,EAAOq5B,aAAe,GACpH3F,EAA0BV,EAAYhzB,EAAOo5B,aAC7CzF,EAA4BX,GAAahzB,EAAOq5B,aAEhD5F,EAAsBT,EAAYhzB,EAAOs5B,gBACzCvE,EAAkC/B,EAAYhzB,EAAOk5B,2BACrDlE,EAAoChC,GAAahzB,EAAOm5B,2BAExD7qB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACP/B,MAAOmwB,EAAoB,GAAK8B,EAAoBrtB,QAAQ,IAC5DuuB,SAAU30B,EAAOs5B,kBAErBhrB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,IAChEuuB,UAAWjB,EAAwBttB,QAAQ,MAE/CkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,OAE5EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,4BACP/B,MAAOmwB,EAAoB,GAAKgC,EAA0BvtB,QAAQ,IAClEuuB,UAAWhB,EAA0BvtB,QAAQ,MAGjDkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,oCACP/B,MAAOmwB,EAAoB,GAAKqD,EAAkC5uB,QAAQ,OAE9EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,wBACP/B,MAAOszB,IAEf,MAAO,GAAI3Y,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAU4B,KAAM,CAClEiC,GAAmB3E,EAAe4E,gBAiBtCxE,EAA+BzB,GAf3BhzB,EAASg3B,EAAQ,CACjBzB,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBpB,EAAeqB,eAChCC,sBAAuBxZ,EAAMqZ,qBAAqBh0B,MAClDo0B,UAAWvB,EAAewB,SAC1BC,QAASzB,EAAe0B,MACxBC,oBAAqBgD,EACrB/C,WAAY,GACZC,uBAAwB,GACxBC,mBAAoBha,EAAMia,eAAe50B,MACzC6yB,eAAgBA,KAK8BkF,2BAClD7E,EAAuB1B,EAAYhzB,EAAOw5B,aAC1C9F,EAA0BV,EAAYhzB,EAAOw5B,aAE7C/F,EAAsBT,EAAYhzB,EAAOs5B,gBACzCvE,EAAkC/B,EAAYhzB,EAAOu5B,2BACrDzE,GAAwB,EAExBxmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACP/B,MAAOmwB,EAAoB,GAAK8B,EAAoBrtB,QAAQ,IAC5DuuB,SAAU30B,EAAOs5B,kBAErBhrB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,IAChEuuB,UAAWjB,EAAwBttB,QAAQ,MAE/CkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,OAE5EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,wBACP/B,MAAOszB,IAEf,CAEA,IAAIgC,EAA4C,OAA/B3a,EAAMsd,eAAej4B,MAClCo2B,GAAqF,IAAlE,CAAC,KAAM,KAAM,KAAM,MAAMj0B,QAAQwY,EAAMsd,eAAej4B,OAAiB2a,EAAMsd,eAAej4B,MAAQ,QAE3H8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,kBACP/B,MAAOo2B,KAGX,IAAI8B,IAA4C,UAApB9B,EAA+BrD,EAAcoF,qBAAuBpF,EAAcqF,yBAE1GrC,EAAYC,EAAO,CACnBC,kBAAmBtb,EAAMqZ,qBAAqBh0B,MAC9Ck2B,uBAAwBvb,EAAMqZ,qBAAqBh0B,MACnDm2B,iBAAkBC,EAClBC,mBAAoB1b,EAAMia,eAAe50B,MACzCs2B,qBAAsB4B,EACtB3B,mBAAoB,GACpBC,uBAAwB,GACxBC,yBAA0BnB,EAAa,KAAO,EAC9CvC,cAAeA,IAKf4C,EAAmCpE,EAAoBwE,EAAUY,iCAAmCpF,EAAoBwE,EAAUa,mCAClIhB,EAA2BrE,EAAoBwE,EAAUc,kCAAoCtF,EAAoBwE,EAAUe,oCAC3HxE,EAA0Bf,EAAoBwE,EAAUsC,kBACxD9F,EAA8BhB,EAAoBwE,EAAUc,kCAC5DhB,EAAsCtE,EAAoBwE,EAAUY,iCACpEnE,EAAgCjB,EAAoBwE,EAAUe,oCAC9DhB,EAAwCvE,EAAoBwE,EAAUa,mCAE1E9pB,EAAS+kB,YAAoB,CACzB9vB,MAAO,mCACP/B,MAAOmwB,EAAoB,GAAKwF,EAAiC/wB,QAAQ,OAE7EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,2BACP/B,MAAOmwB,EAAoB,GAAKyF,EAAyBhxB,QAAQ,OAErEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAKmC,EAAwB1tB,QAAQ,IAChEuuB,SAAU4C,EAAUuC,mBAExBxrB,EAAS+kB,YAAoB,CACzB9vB,MAAO,8BACP/B,MAAOmwB,EAAoB,GAAKoC,EAA4B3tB,QAAQ,IACpEuuB,UAAWZ,EAA4B3tB,QAAQ,MAEnDkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sCACP/B,MAAOmwB,EAAoB,GAAK0F,EAAoCjxB,QAAQ,OAEhFkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,gCACP/B,MAAOmwB,EAAoB,GAAKqC,EAA8B5tB,QAAQ,IACtEuuB,UAAWX,EAA8B5tB,QAAQ,MAErDkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,wCACP/B,MAAOmwB,EAAoB,GAAK2F,EAAsClxB,QAAQ,OAElFkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,6BACP/B,MAAO,OAGX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,aACP/B,MAAOs1B,KAEXxoB,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAOq1B,EAAiB,OAAQC,GAAchC,MAElDxmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAOq1B,EAAiB,WAAYC,KA5OxC,CAkPF,GAAG,CAAC3a,EAAM8Y,iBAAiBzzB,QAwdzBya,IAAAqB,cAAA,WAAS1M,GAAG,cAAc2M,UAAU,uBAChCtB,IAAAqB,cAAA,OAAKC,UAAU,gCAAgC,gBAAgBpB,EAAM2a,WAAWt1B,MAAiB,QAAT,QACpFya,IAAAqB,cAAA,MAAIC,UAAU,SAAQ,+BAA4BtB,IAAAqB,cAAA,QAAMgC,MAAO,CAAEuK,WAAY,WAAY,oBACzF5N,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,gBAAe,wBAC9BtB,IAAAqB,cAAA,MAAIC,UAAU,2BAA2B3M,GAAG,QAAQ4M,KAAK,WACrDvB,IAAAqB,cAAA,MAAIE,KAAK,eAAe8B,MAAO,CAAC5G,QAAkD,OAAzCyD,EAAM8Y,iBAAiBzzB,MAAM0zB,QAAmB,YAAc,SACnGjZ,IAAAqB,cAAA,UAAQ1M,GAAG,mBAAmB2M,UAAW,qBAAgE,OAAzCpB,EAAM8Y,iBAAiBzzB,MAAM0zB,QAAmB,SAAW,IAAK,iBAAe,MAAM,iBAAe,YAAYrY,KAAK,SAASW,KAAK,MAAM,gBAAc,WAAW,gBAAc,QAC5OvB,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,QAAM,YAAU,cAAc,YAAU,OAAO,YAAU,WAAW,YAAU,YAAY,YAAWnB,EAAM4d,YAAY,oBAG/H9d,IAAAqB,cAAA,MAAIE,KAAK,gBACLvB,IAAAqB,cAAA,UAAQ1M,GAAG,uBAAuB2M,UAAW,qBAAgE,OAAzCpB,EAAM8Y,iBAAiBzzB,MAAM0zB,QAAmB,GAAK,UAAW,iBAAe,MAAM,iBAAe,gBAAgBrY,KAAK,SAASW,KAAK,MAAM,gBAAc,eAAe,gBAAc,SACxPvB,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,QAAM,YAAU,cAAc,YAAU,WAAW,YAAU,WAAW,YAAU,YAAY,YAAWnB,EAAM4d,YAAY,mBAM3I9d,IAAAqB,cAAA,OAAKC,UAAU,iCACXtB,IAAAqB,cAAA,OAAKC,UAAW,kBAA6D,OAAzCpB,EAAM8Y,iBAAiBzzB,MAAM0zB,QAAmB,cAAgB,IAAKtkB,GAAG,WAAW4M,KAAK,WAAW,kBAAgB,eAAe,gBAAgBrB,EAAM2Y,sBAAsBtzB,MAAiB,QAAT,QACtNya,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,aAAY,uBAC3BtB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,oBAAoBpB,EAAMsY,6BAA6BjzB,OACtEya,IAAAqB,cAAA,WAAK,SAGbrB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,iBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,mBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,oBAAoBpB,EAAMuY,qBAAqBlzB,MAAM,IAACya,IAAAqB,cAAA,YAAM,SAE/ErB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,oBAAiBtB,IAAAqB,cAAA,YAAM,kBAAgBnB,EAAMsX,oBAAoBkB,SAAS,SACtG1Y,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,yBAAyBiM,KAAK,OAAOU,UAAWpB,EAAMsX,oBAAoBhiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMsX,oBAAoBjyB,MAAOoQ,UAAWuK,EAAMsX,oBAAoB7hB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,uBAAwBma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,yBACzT4O,IAAAqB,cAAA,YAAM,OAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMsX,oBAAoBhiB,kBAM7DwK,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,6BAA6BiM,KAAK,OAAOU,UAAWpB,EAAMuX,wBAAwBjiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMuX,wBAAwBlyB,MAAOoQ,UAAWuK,EAAMuX,wBAAwB9hB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,2BAA4Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,6BAC7U4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMuX,wBAAwBjiB,gBAGzDwK,IAAAqB,cAAA,OAAKC,UAAU,oCACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAM4Y,gCAAgCvzB,MAAOuiB,UAAQ,IAC/E9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,6BAA6B+B,MAAO,CAAE0a,WAAY,IAC7D/d,IAAAqB,cAAA,OAAKC,UAAU,cAAa,kBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,wBAAwBiM,KAAK,OAAOU,UAAWpB,EAAMyX,mBAAmBniB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMyX,mBAAmBpyB,MAAOoQ,UAAWuK,EAAMyX,mBAAmBhiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,sBAAuBma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,wBACpT4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMyX,mBAAmBniB,iBAIxDwK,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAW,+CACZtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,+BAA+BiM,KAAK,OAAOU,UAAWpB,EAAMwX,0BAA0BliB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMwX,0BAA0BnyB,MAAOoQ,UAAWuK,EAAMwX,0BAA0B/hB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,6BAA8Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,+BACvV4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMwX,0BAA0BliB,gBAG3DwK,IAAAqB,cAAA,OAAKC,UAAU,iEACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAM6Y,kCAAkCxzB,MAAOuiB,UAAQ,IACjF9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,8CAA8C+B,MAAO,CAAE0a,WAAY,IAC9E/d,IAAAqB,cAAA,OAAKC,UAAU,eAAc,YAC7BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,4BAA4BiM,KAAK,OAAOU,UAAWpB,EAAM0X,uBAAuBpiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM0X,uBAAuBryB,MAAOoQ,UAAWuK,EAAM0X,uBAAuBjiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,0BAA2Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,4BACxU4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM0X,uBAAuBpiB,mBAMpEwK,IAAAqB,cAAA,OAAKC,UAAW,kBAA6D,OAAzCpB,EAAM8Y,iBAAiBzzB,MAAM0zB,QAAmB,GAAK,eAAgBtkB,GAAG,eAAe4M,KAAK,WAAW,kBAAgB,oBACvJvB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,aAAY,uBAC3BtB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,oBAAoBpB,EAAMgb,iCAAiC31B,OAC1Eya,IAAAqB,cAAA,WAAK,SAGbrB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,iBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,mBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cAAcpB,EAAMib,yBAAyB51B,MAAM,IAACya,IAAAqB,cAAA,YAAM,SAE7ErB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,oBAAiBtB,IAAAqB,cAAA,YAAM,kBAAgBnB,EAAM2X,wBAAwBa,SAAS,SAC1G1Y,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,6BAA6BiM,KAAK,OAAOU,UAAWpB,EAAM2X,wBAAwBriB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM2X,wBAAwBtyB,MAAOoQ,UAAWuK,EAAM2X,wBAAwBliB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,2BAA4Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,6BACrV4O,IAAAqB,cAAA,YAAM,OAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM2X,wBAAwBriB,kBAMjEwK,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,iCAAiCiM,KAAK,OAAOU,UAAWpB,EAAM4X,4BAA4BtiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM4X,4BAA4BvyB,MAAOoQ,UAAWuK,EAAM4X,4BAA4BniB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,+BAAgCma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,iCACzW4O,IAAAqB,cAAA,YAAM,MAAIuV,GAAc5W,IAAAqB,cAAA,QAAMC,UAAU,uBAAsB,OAElEtB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM4X,4BAA4BtiB,gBAG7DwK,IAAAqB,cAAA,OAAKC,UAAU,oCACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAMkb,oCAAoC71B,MAAOuiB,UAAQ,IACnF9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,6BAA6B+B,MAAO,CAAE0a,WAAY,IAC7D/d,IAAAqB,cAAA,OAAKC,UAAU,cAAa,qBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,4BAA4BiM,KAAK,OAAOU,UAAWpB,EAAM8X,uBAAuBxiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM8X,uBAAuBzyB,MAAOoQ,UAAWuK,EAAM8X,uBAAuBriB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,0BAA2Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,4BAChV4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM8X,uBAAuBxiB,iBAI5DwK,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,+CACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,mCAAmCiM,KAAK,OAAOU,UAAWpB,EAAM6X,8BAA8BviB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM6X,8BAA8BxyB,MAAOoQ,UAAWuK,EAAM6X,8BAA8BpiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,iCAAkCma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,mCACnX4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM6X,8BAA8BviB,gBAG/DwK,IAAAqB,cAAA,OAAKC,UAAU,iEACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAMmb,sCAAsC91B,MAAOuiB,UAAQ,IACrF9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,8CAA8C+B,MAAO,CAAE0a,WAAY,IAC9E/d,IAAAqB,cAAA,OAAKC,UAAU,eAAc,YAC7BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,gCAAgCiM,KAAK,OAAOU,UAAWpB,EAAM+X,2BAA2BziB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM+X,2BAA2B1yB,MAAOoQ,UAAWuK,EAAM+X,2BAA2BtiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,8BAA+Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,gCACpW4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM+X,2BAA2BziB,kBAMhEohB,GAAc5W,IAAAqB,cAAA,OAAK2c,MAAM,gBAAehe,IAAAqB,cAAA,KAAG2c,MAAM,6BAA+Bhe,IAAAqB,cAAA,SAAG,gDAA6CrB,IAAAqB,cAAA,MAAI2c,MAAM,YAAY,mDAMlKhe,IAAAqB,cAAA,OAAKC,UAAU,aAAY,oHAE3BtB,IAAAqB,cAAA,OAAKC,UAAU,mBACXtB,IAAAqB,cAAA,UAAQ1M,GAAG,YAAYiM,KAAK,SAAS9b,KAAK,YAAYolB,QA9MpE,WACE2M,GAAc,EAChB,EA6Mc,YAAU,YAAY,YAAU,wBAAwB,YAAU,YAAY,YAAW3W,EAAM4d,YAAY,6BAE/G9d,IAAAqB,cAAA,OAAK1M,GAAG,mBAAmB2M,UAAU,oBACjCtB,IAAAqB,cAAA,UAAI,gCACJrB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,UAAI,0BACJrB,IAAAqB,cAAA,SAAO1M,GAAG,yBAAyBiM,KAAK,OAAOrb,MAAM,aAAa04B,QAAQ,iIAC1Eje,IAAAqB,cAAA,SAAO1M,GAAG,yBAAyBiM,KAAK,WAE5CZ,IAAAqB,cAAA,OAAKC,UAAU,yBACXtB,IAAAqB,cAAA,UAAI,8BACJrB,IAAAqB,cAAA,SAAO1M,GAAG,aAAaiM,KAAK,OAAOrb,MAAM,KAAK04B,QAAQ,iIACtDje,IAAAqB,cAAA,SAAO1M,GAAG,aAAaiM,KAAK,YAGpCZ,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,SAAG,yBACHrB,IAAAqB,cAAA,UAAI,cAERrB,IAAAqB,cAAA,OAAKC,UAAU,UACXtB,IAAAqB,cAAA,SAAG,yBACHrB,IAAAqB,cAAA,UAAI,YAGZrB,IAAAqB,cAAA,KAAGC,UAAU,UAAS,sHAKtC,CAEA,SAAS+X,EAAYxN,GASjB,IAA4C,IAR9B,CAAC,WAAY,kBAQfnkB,QAAQmkB,EAAQ8N,WACxB,MAAM,IAAIxN,MAAM,8BAGpB,IAAwD,IAXpC,CAChB,QACA,mCACA,kCACA,iBAOczkB,QAAQmkB,EAAQ2N,iBAC9B,MAAM,IAAIrN,MAAM,oCAGpB,IACI,IAwBI+R,EAxBA1B,EAAS,GAET2B,EAAUC,UACVC,EAAYD,YACZE,EAAKF,KACLG,EAAMH,MAEN9E,EAAmBzN,EAAQyN,iBAC3BE,EAAkB3N,EAAQ2N,gBAC1BE,EAAwB7N,EAAQ6N,sBAChCC,EAAY9N,EAAQ8N,UACpBE,EAAShO,EAAQgO,OACjBE,EAAsBlO,EAAQkO,oBAC9BC,EAAanO,EAAQmO,WACrBC,EAAyBpO,EAAQoO,uBACjCC,EAAqBrO,EAAQqO,mBAC7BE,EAA2BvO,EAAQuO,yBACnCC,EAAyBxO,EAAQwO,uBACjCnC,EAAqBrM,EAAQqM,mBAC7BsG,EAAgBtG,EAAmBuG,WAAa,IAChDC,EAAUxG,EAAmByG,SAAW,IACxCC,GAAkB1G,EAAmB2G,WACrCC,GAAkB5G,EAAmB6G,WAIjB,UAApBvF,EAEI0E,EADA5E,EAAmB,IACLpB,EAAmB8G,2BAEnB9G,EAAmB+G,8BAEV,oCAApBzF,EACP0E,EAAchG,EAAmBgH,uCACN,qCAApB1F,EACP0E,EAAchG,EAAmBiH,oCACN,kBAApB3F,EACP0E,EAAchG,EAAmBkH,gBAEjClB,EAAc,GAEd1B,EAAOh5B,KAAK,CACRmK,UAAW,4BACX6H,aAAc,QAItB0oB,GAA4B,IAE5B,IACImB,EADAC,EAAKvjB,KAAKrE,IAAIwmB,EAAaM,GAI3Ba,EADAlB,EAAS7E,EAAmBgG,GAAM,GAAKhG,EAChBA,EAEA6E,EAAS7E,EAAmBgG,GAAM,GAG7D,IACIC,EAmBAC,EAmBAC,EAvCApC,EAAiBthB,KAAKrE,IAAK,GAAKmiB,EAAS,IAGzCG,EAAa,IACbuF,EAAYrH,EAAmBwH,sBACxB1F,EAAa,MACpBuF,EAAYrH,EAAmByH,qBACxB3F,GAAc,MACrBuF,EAAYrH,EAAmB0H,0BAE/BL,EAAY,GAEZ/C,EAAOh5B,KAAK,CACRmK,UAAW,0BACX6H,aAAc,QAItB+pB,GAAwB,IAIpBvF,EAAa,IACbwF,EAAWtH,EAAmB2H,sBACvB7F,EAAa,MACpBwF,EAAWtH,EAAmB4H,qBACvB9F,GAAc,MACrBwF,EAAWtH,EAAmB6H,0BAE9BP,EAAW,GAEXhD,EAAOh5B,KAAK,CACRmK,UAAW,yBACX6H,aAAc,QAItBgqB,GAAsB,IAIJ,aAAd7F,EACA8F,EAAMF,EACe,mBAAd5F,EACP8F,EAAMD,GAENC,EAAM,GAENjD,EAAOh5B,KAAK,CACRmK,UAAW,qBACX6H,aAAc,QAItB,IAGIwqB,EAFAC,EADY9B,EAAQnE,EAAayF,GAAM,GACfxF,EACxBiG,EAAcxB,EAAWE,EAAiB,IAAQ,IAGlDqB,EAAY,KACZD,EAAqB,+BAErBxD,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBwqB,EAAqBjkB,KAAKrE,IAAI2lB,EAAgBtD,GAGlD,IACIU,EACA0F,EAeA5F,EAjBA6F,EAAW/B,EAAUC,EAAG4B,EAAa,GAAyB,GAArBF,GAA0BC,IAAa,GAIhFA,EAAY,KACZxF,EAAwB,+BACxB0F,EAAmB,KAEnB3D,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,mCAGlBilB,EAAwB1e,KAAKrE,IAAI2nB,EAAsB3F,EAAuB0G,EAAUlG,GACxFiG,EAAmBpkB,KAAKrE,IAAI2nB,EAAsBe,EAAUlG,IAK5D+F,EAAY,KACZ1F,EAA4B,+BAE5BiC,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlB+kB,EAA4B4D,EAAQI,EAAI2B,EAAa,GAAyB,GAArBF,GAA0BvF,IAAyB,GAGhH,IAAI4F,EAAiBtkB,KAAKrE,IAAIwiB,EAAqBO,EAA8C,GAAvB4E,GACtEiB,EAA2B,KAC3B3F,GAA8B,EAE9BrB,GAAoB,KACpBgH,EAA2B,2BAC3B3F,GAA8B,EAE9B6B,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAEX6qB,GAAkB,IACzBC,EAA2BD,GAE3BC,EAA2B,2BAC3B3F,GAA8B,EAE9B6B,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAItB,IAEI+qB,EAFAC,EAAoBP,EAAY1F,EAChCkG,EAAc/B,EAAWI,EAAiB,IAAQ,IAGjDnE,EAOM6F,EAAoB,KAC3BD,EAAqB,+BAErB/D,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlB+qB,EADOlG,GAA0B2F,EACZ3F,EAEA2F,GAhBrBO,EAAqB,2BAErB/D,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAetB,IACIklB,EACAgG,EA4BAlG,EA9BAmG,EAAatC,EAAUC,EAAGmC,EAAa,GAAyB,GAArBF,GAA0BC,IAAqB,GAIzF7F,EAQM6F,EAAoB,KAC3B9F,EAAwB,+BACxBgG,EAAqB,KAErBlE,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,mCAIdklB,EAD4B,OAA7BN,EACyBre,KAAKrE,IAAI4oB,EAA0BlG,EAA0BuG,GAE7D5kB,KAAKrE,IAAI4oB,EAA0BK,GAG/DD,EAAqB3kB,KAAKrE,IAAI4oB,EAA0BK,KAtBxDjG,EAAwB,2BACxBgG,EAAqB,KAErBlE,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAsBjBmlB,EAOM6F,EAAoB,KAC3BhG,EAA4B,+BAE5BgC,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBglB,EAA4B2D,EAAQI,EAAIkC,EAAa,GAAyB,GAArBF,GAA0B7F,IAAyB,IAd5GF,EAA4B,2BAE5BgC,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAatB,IAAI2nB,EAAcphB,KAAKrE,IAAI2nB,EAAsBnF,GAC7C+C,EAA4BkB,EAAQI,EAAI2B,EAAa,GAAqB,GAAjB7C,GAAsBF,IAAe,GAC9FC,EAAiC,GAAnB9D,EAGlB,MAAO,CACHkD,OAAQA,EAER6C,qBAAsBA,EACtBhC,eAAgBA,EAChB5C,sBAAuBA,EACvBuF,mBAAoBA,EACpBzF,0BAA2BA,EAC3B+F,yBAA0BA,EAC1B3F,4BAA6BA,EAC7BD,sBAAuBA,EACvB6F,mBAAoBA,EACpB/F,0BAA2BA,EAC3B2F,iBAAkBA,EAClBO,mBAAoBA,EACpBvD,YAAaA,EACbF,0BAA2BA,EAC3BG,YAAaA,EACbF,0BApB4BiB,EAAQI,EAAIkC,EAAa,GAAqB,GAAjBpD,GAAsBD,IAAe,GAsB9FwD,OAAQ/U,EAEhB,CAAE,MAAOna,GAGL,MAAO,CACH8qB,OAAQ,CACJ,CACI7uB,UAAW,KACX6H,aAAc,GAAK9D,IAInC,CACJ,CAEA,SAASqpB,EAAQlP,GASb,IAA4C,IAR9B,CAAC,WAAY,kBAQfnkB,QAAQmkB,EAAQ8N,WACxB,MAAM,IAAIxN,MAAM,8BAGpB,IAAwD,IAXpC,CAChB,QACA,mCACA,kCACA,iBAOczkB,QAAQmkB,EAAQ2N,iBAC9B,MAAM,IAAIrN,MAAM,oCAGpB,IACI,IAqBI+R,EArBA1B,EAAS,GAET2B,EAAUC,UACVC,EAAYD,YACZE,EAAKF,KACLG,EAAMH,MAEN9E,EAAmBzN,EAAQyN,iBAC3BE,EAAkB3N,EAAQ2N,gBAC1BE,EAAwB7N,EAAQ6N,sBAChCC,EAAY9N,EAAQ8N,UACpBE,EAAShO,EAAQgO,OACjBE,EAAsBlO,EAAQkO,oBAC9BC,EAAanO,EAAQmO,WACrBC,EAAyBpO,EAAQoO,uBACjCC,EAAqBrO,EAAQqO,mBAC7B9B,EAAiBvM,EAAQuM,eACzBoG,EAAgBpG,EAAeqG,WAAa,IAC5CC,EAAUtG,EAAeuG,SAAW,IACpCkC,GAAgBzI,EAAe0I,YAIX,UAApBtH,EAEI0E,EADA5E,EAAmB,IACLlB,EAAe4G,2BAEf5G,EAAe6G,8BAEN,oCAApBzF,EACP0E,EAAc9F,EAAe8G,uCACF,qCAApB1F,EACP0E,EAAc9F,EAAe+G,oCACF,kBAApB3F,EACP0E,EAAc9F,EAAegH,gBAE7BlB,EAAc,GAEd1B,EAAOh5B,KAAK,CACRmK,UAAW,4BACX6H,aAAc,QAItB0oB,GAA4B,IAE5B,IACImB,EADAC,EAAKvjB,KAAKrE,IAAIwmB,EAAaM,GAI3Ba,EADAlB,EAAS7E,EAAmBgG,GAAM,GAAKhG,EAChBA,EAEA6E,EAAS7E,EAAmBgG,GAAM,GAG7D,IACIC,EAmBAC,EAmBAC,EAvCApC,EAAiBthB,KAAKrE,IAAK,GAAKmiB,EAAS,IAGzCG,EAAa,IACbuF,EAAYnH,EAAesH,sBACpB1F,EAAa,MACpBuF,EAAYnH,EAAeuH,qBACpB3F,GAAc,MACrBuF,EAAYnH,EAAewH,0BAE3BL,EAAY,GAEZ/C,EAAOh5B,KAAK,CACRmK,UAAW,0BACX6H,aAAc,QAItB+pB,GAAwB,IAIpBvF,EAAa,IACbwF,EAAWpH,EAAeyH,sBACnB7F,EAAa,MACpBwF,EAAWpH,EAAe0H,qBACnB9F,GAAc,MACrBwF,EAAWpH,EAAe2H,0BAE1BP,EAAW,GAEXhD,EAAOh5B,KAAK,CACRmK,UAAW,yBACX6H,aAAc,QAItBgqB,GAAsB,IAIJ,aAAd7F,EACA8F,EAAMF,EACe,mBAAd5F,EACP8F,EAAMD,GAENC,EAAM,GAENjD,EAAOh5B,KAAK,CACRmK,UAAW,qBACX6H,aAAc,QAItB,IAGIurB,EAFAd,EADY9B,EAAQnE,EAAayF,GAAM,GACfxF,EACxB+G,EAAYtC,EAAWmC,EAAe,IAAQ,IAG9CZ,EAAY,KACZc,EAAmB,+BAEnBvE,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBurB,EAAmBhlB,KAAKrE,IAAI2lB,EAAgBtD,GAGhD,IACIkB,EACAkF,EAeAnF,EAjBAoF,EAAW/B,EAAUC,EAAG0C,EAAW,GAAuB,GAAnBD,GAAwBd,IAAa,GAI5EA,EAAY,KACZhF,EAAsB,+BACtBkF,EAAmB,KAEnB3D,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,mCAGlBylB,EAAsBlf,KAAKrE,IAAI2nB,EAAsB3F,EAAuB0G,EAAUlG,GACtFiG,EAAmBpkB,KAAKrE,IAAI2nB,EAAsBe,EAAUlG,IAK5D+F,EAAY,KACZjF,EAA0B,+BAE1BwB,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBwlB,EAA0BmD,EAAQI,EAAIyC,EAAW,GAAuB,GAAnBD,GAAwB9F,IAAuB,GAGxG,IAAIsC,EAAcxhB,KAAKrE,IAAI2nB,EAAsBnF,GAGjD,MAAO,CACHsC,OAAQA,EAER6C,qBAAsBA,EACtBhC,eAAgBA,EAChBpC,oBAAqBA,EACrB8F,iBAAkBA,EAClB/F,wBAAyBA,EACzBmF,iBAAkBA,EAClB5C,YAAaA,EACbD,0BAZ4Ba,EAAQI,EAAIyC,EAAW,GAAqB,GAAjB3D,GAAsBE,IAAe,GAc5FqD,OAAQ/U,EAEhB,CAAE,MAAOna,GAGL,MAAO,CACH8qB,OAAQ,CACJ,CACI7uB,UAAW,KACX6H,aAAc,GAAK9D,IAInC,CACJ,CAEA,SAAS6pB,EAAO1P,GACZ,IACI,IAmBIgS,EAnBAoD,EAAQ7C,QACRD,EAAUC,UAEV5C,EAAoB3P,EAAQ2P,kBAC5BC,EAAyB5P,EAAQ4P,uBACjCC,EAAmB7P,EAAQ6P,iBAC3BE,EAAqB/P,EAAQ+P,mBAC7BC,EAAuBhQ,EAAQgQ,qBAC/BC,EAAqBjQ,EAAQiQ,mBAC7BC,EAAyBlQ,EAAQkQ,uBACjCC,EAA2BnQ,EAAQmQ,yBACnC1D,EAAgBzM,EAAQyM,cACxB4I,EAAU5I,EAAc6I,OAAS,IACjCC,EAAkC9I,EAAc+I,+BAAiC,IACjFC,GAAmBhJ,EAAciJ,eACjCC,GAAgClJ,EAAcmJ,4BAC9CC,EAAUpJ,EAAcqJ,OAAS,IAMjC9D,EADqB,UAArBnC,EACkB,GAEA,GAGtB,IACIkG,EADAC,EAAgB9lB,KAAKrE,IAAImmB,EAAiBhC,GAI1C+F,EAD2B,KAA3B7F,GAAwD,KAAvBD,EACZL,IAA2ByF,EAAUE,GAAmC,KAAO,EAAKrlB,KAAK+lB,IAAI,GAAMZ,EAAUE,GAAmC,IAAO,GAAKS,IAAoBP,EAEhLxF,EAGzB,IACIiG,EADAC,GAA0BjG,EAG9B,IACI,GAA+B,IAA3BiG,EACA,MAAM,IAAI7V,MAAM,kBAIhB4V,EADCH,EAAqBI,EAAyB,GAAMR,EACrC,KAEA,KAExB,CAAE,MAAO9vB,GACLqwB,EAAgB,CACpB,CAEA,IACIE,EAQAC,EASAC,EAlBAC,EAAiB3G,EAiBjB4G,EAAoBD,IALpBF,GARAD,EADArG,EAAqBJ,EACJI,EAEAJ,GAKA,EACa0F,EAAUE,EAEV,IAGsC,KAAQ,EAAKrlB,KAAK+lB,IAAI,EAAKI,EAA8B,IAAuB,GAAhBL,IAGxI,IAEQM,EADkB,OAAlBJ,EACW,IAEAH,GAAsBI,EAAyBK,EAElE,CAAE,MAAM3wB,GACJywB,EAAW,CACf,CAEA,IAIIG,EAQAC,EAVAC,GAFiCZ,EAAqBN,EACSU,EAnEzD,IAoEiD,GAAKE,EAA8B,IAAQ,GAAKA,EAA8B,GAAKnmB,KAAK+lB,IAAI,EAAII,EAA8B,GAAoB,GAAhBL,KACzLY,EAAmBR,EAAiBP,EAGxC,IACIY,EAAiBrB,EAAMllB,KAAKrE,IAAI8qB,EAAsBC,EAAkBL,IAAkB,EAC9F,CAAE,MAAO1wB,GACL4wB,EAAiB,EACrB,CAKIC,EADAJ,EAAW,KAAOG,EAAiB,GAAkB,MAAbH,EAChBG,EAEA,GAG5B,IACII,EAQAC,EAQAC,EAjBAC,EAAuBZ,EAAiBP,EAG5C,IACIgB,EAA0BzB,EAAMllB,KAAKrE,IAAImrB,EAAsBT,EAAgBI,IAAwB,EAC3G,CAAE,MAAO9wB,GACLgxB,EAA0B,EAC9B,CAKIC,EADAR,GAAY,KAAOO,EAA0B,GAAkB,MAAbP,EAC7BO,EAEA,GAWzB,IACII,EAYAzG,EAbAD,EALAwG,EADwD,IAAxD7mB,KAAKpE,IAAI4qB,EAAuBI,GACJ,GAEA5mB,KAAKpE,IAAI4qB,EAAuBI,GAO5DG,EADA/mB,KAAKrE,IAAIkkB,EAAqBH,EAA2D,GAAnCW,IAA2C,EACxE,EAEArgB,KAAKrE,IAAIkkB,EAAqBH,EAA2D,GAAnCW,GAGlD,OAA7BJ,IACAA,EAA2B8G,GAM3BzG,EAD6B,KAA7BL,EACqC,EAEAjgB,KAAKrE,IAAIorB,EAAwB9G,GAG1E,IACI+G,EADAC,EAAgCV,IAAmBpB,EAAUE,GAAmC,KAAQ,EAAKrlB,KAAK+lB,IAAI,GAAMZ,EAAUE,GAAmC,IAAO,GAAKS,IAIrLkB,EADAC,GAA+B,GAA+B,KAA1BT,EACN,GAEAtB,EAAM+B,GAA8B,GAGtE,IACIC,EAQAC,EATAC,EAA+BT,IAA4BxB,EAAUE,GAAmC,KAAQ,EAAKrlB,KAAK+lB,IAAI,GAAMZ,EAAUE,GAAmC,IAAO,GAAKS,IA+DjM,OA3DIoB,EADAE,GAA+B,GAA4B,KAAvBR,EACT,GAEAxE,EAAQgF,GAA8B,GAyD9D,CACH3G,OAAQ,GAERJ,iCAAkCA,EAClCF,gCArDIgH,EAHJN,EAA4B,EAExBA,IAA8BL,EACHQ,EACpBH,IAA8BD,EACVM,EAEA,GAGJ,GA+C3B5G,mCAAoCA,EACpCF,kCA5CoCgC,EAAS9B,EAAqCD,EAAoC8G,GAA2B,GA6CjJtF,iBA1Ca,MAAbuE,GAAsC,IAAlBN,GAAuBA,GAAiB,EACxC,GAEAA,EAwCpB5F,iBAlCa,MAAbkG,EACO,iCAEA,GAgCPiB,yBA1Ba,MAAbjB,EACO,6BAEA,GAwBPkB,wBAlBa,MAAblB,EAC4B,GAArBP,EAEA,GAgBP/D,gBAAiBA,EAEjB+C,OAAQ/U,EAEhB,CAAE,MAAOna,GAGL,MAAO,CACH8qB,OAAQ,CACJ,CACI7uB,UAAW,KACX6H,aAAc,GAAK9D,IAInC,CACJ,CCvsDUtL,OAAOW,EAEV,SAASu8B,EAAyBpjB,GAYrC,SAASqjB,EAAe7xB,GACpBtL,OAAOm9B,eAAe7xB,EAAE4Z,OAC5B,CAEA,SAASkY,EAASviB,EAAKvP,GACnBwO,EAAMujB,WAAWxiB,EACrB,CAEA,OAnBA1B,qBAAU,WAGN,IAAMmkB,EAAQ,IAAIC,KAAKC,aAAa,QAAS,CACzCC,aAAa,IACdC,OAAO5jB,EAAMqZ,qBAAqBh0B,OAGrCwK,SAASg0B,eAAe,oBAAoBx+B,MAAQm+B,CACxD,GAAG,IAWC1jB,IAAAqB,cAAA,OAAK1M,GAAG,2BAA2B2M,UAAU,2DACzCtB,IAAAqB,cAAA,OAAKC,UAAU,oBACXtB,IAAAqB,cAAA,WAAS1M,GAAG,gBAAgB2M,UAAU,8BAA8B,kBAAgB,gBACpFtB,IAAAqB,cAAA,OAAKC,UAAU,YACXtB,IAAAqB,cAAA,OAAKC,UAAU,0BAEftB,IAAAqB,cAAA,MAAIC,UAAU,YAAW,iBAActB,IAAAqB,cAAA,MAAIC,UAAU,iBAAiB,0BAEtEtB,IAAAqB,cAAA,OAAKC,UAAU,uBACXtB,IAAAqB,cAAA,OAAKC,UAAU,uBACXtB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,gBAAe,wBAC9BtB,IAAAqB,cAAA,MAAIC,UAAU,2BAA2B3M,GAAG,WAAW4M,KAAK,WACxDvB,IAAAqB,cAAA,MAAIE,KAAK,gBACLvB,IAAAqB,cAAA,UAAQ1M,GAAG,sBAAsB2M,UAAW,0BAA2BV,KAAK,SAASW,KAAK,MAAM,gBAAc,WAAW,gBAAc,OAAO2I,QAASsZ,EAAS19B,KAAKsL,KAAM,SACvK4O,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,QAAM,YAAU,cAAc,YAAU,OAAO,YAAU,WAAW,YAAU,YAAY,YAAWnB,EAAM4d,YAAa,oBAGhI9d,IAAAqB,cAAA,MAAIE,KAAK,gBACLvB,IAAAqB,cAAA,UAAQ1M,GAAG,0BAA0B2M,UAAW,mBAAoBV,KAAK,SAASW,KAAK,MAAM,gBAAc,eAAe,gBAAc,QAAQ2I,QAASsZ,EAAS19B,KAAKsL,KAAM,aACzK4O,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,QAAM,YAAU,cAAc,YAAU,WAAW,YAAU,WAAW,YAAU,YAAY,YAAWnB,EAAM4d,YAAY,qBAQnJ9d,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,gCACftB,IAAAqB,cAAA,gBACIrB,IAAAqB,cAAA,OAAKC,UAAU,UACftB,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,UACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,UACXtB,IAAAqB,cAAA,UAAQ,mBAAiB,aAAaC,UAAU,UAAU3M,GAAG,mBAAmBwd,aAAa,IACzFnS,IAAAqB,cAAA,UAAQ9b,MAAM,GAAGy+B,UAAQ,GAAC,cAC1BhkB,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,gBAClBya,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,sBAO9Bya,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,kBACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,SAAS+B,MAAO,CAAC4gB,cAAe,SAC3CjkB,IAAAqB,cAAA,UAAQ1M,GAAG,eAAe,mBAAiB,qBAAqB2M,UAAU,UAAU6Q,aAAa,IAAIrK,UAAQ,GACzG9H,IAAAqB,cAAA,UAAQ9b,MAAM,GAAGy+B,UAAQ,GAAC,sBAC1BhkB,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,aAClBya,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,aAClBya,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,mCAQlCya,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,oBACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBAGftB,IAAAqB,cAAA,SAAOT,KAAK,OAAOU,UAAU,0BAA0B3M,GAAG,YAAY8W,UAAU,UAAUF,OAAQgY,EAC9F,eAAa,KAAK,eAAa,KAAK,cAAY,0CAA0C5tB,UAAU,IAAI,cAAY,4CAExHqK,IAAAqB,cAAA,KAAGC,UAAU,aAAY,+BAK7BtB,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,0BACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,OAAKC,UAAU,UACXtB,IAAAqB,cAAA,UAAQ1M,GAAG,gBAAgB0O,MAAO,CAAC6gB,SAAU,QAAS,mBAAiB,yBAAyB5iB,UAAU,UAAU6Q,aAAa,IAC7HnS,IAAAqB,cAAA,UAAQ9b,MAAM,GAAGy+B,UAAQ,GAAC,0BAC1BhkB,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,iBAClBya,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,mDAClBya,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,2DAClBya,IAAAqB,cAAA,UAAQ9b,MAAM,KAAI,iCASlCya,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,8BACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBAEftB,IAAAqB,cAAA,SAAOT,KAAK,OAAOU,UAAU,0BAA0B3M,GAAG,eAAe8W,UAAU,UAAWF,OAAQgY,EAAgB5tB,UAAU,IAAI,eAAa,QAAQ,cAAY,iDAErKqK,IAAAqB,cAAA,KAAGC,UAAU,aAAY,wCAM7BtB,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,6CACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,SAAOT,KAAK,OAAOU,UAAU,0BAA0B3M,GAAG,mBAAmBgB,UAAU,IAAI8V,UAAU,UAAUF,OAAQgY,EAAgB,eAAa,SAAS,eAAa,WAAW,cAAY,uHAAuH,cAAY,2HAEpUvjB,IAAAqB,cAAA,KAAGC,UAAU,aAAY,mDAMjCtB,IAAAqB,cAAA,OAAKC,UAAU,OAEXtB,IAAAqB,cAAA,OAAKC,UAAU,YACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,2BACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBAEftB,IAAAqB,cAAA,SAAOT,KAAK,OAAOU,UAAU,0BAA0BmK,UAAU,UAAW9W,GAAG,mBAAmBgB,UAAU,MAE5GqK,IAAAqB,cAAA,KAAGC,UAAU,aAAY,yEAazCtB,IAAAqB,cAAA,KAAG1M,GAAG,mBAAmBua,KAAK,wBAAwB,UAAQ,wBAAwB5N,UAAU,sBAAsB+B,MAAO,CAAC5G,QAAS,UAEvIuD,IAAAqB,cAAA,OAAK1M,GAAG,uBAAuB2M,UAAU,6BACzCtB,IAAAqB,cAAA,OAAKC,UAAU,mBACXtB,IAAAqB,cAAA,KAAGC,UAAU,iBAAgBtB,IAAAqB,cAAA,KAAGC,UAAU,iBAC1CtB,IAAAqB,cAAA,OAAKC,UAAU,iBACftB,IAAAqB,cAAA,MAAI1M,GAAG,UAAS,iBAKxBqL,IAAAqB,cAAA,OAAK1M,GAAG,mBAAmB2M,UAAU,uCACjCtB,IAAAqB,cAAA,OAAKC,UAAU,mBACftB,IAAAqB,cAAA,KAAGC,UAAU,iBAAgBtB,IAAAqB,cAAA,KAAGC,UAAU,iBAC1CtB,IAAAqB,cAAA,OAAKC,UAAU,iBACXtB,IAAAqB,cAAA,KAAGC,UAAU,oBAAmB,oDAMxCtB,IAAAqB,cAAA,WAAS1M,GAAG,gBAAgB2M,UAAU,qCAAqC,kBAAgB,gBAC3FtB,IAAAqB,cAAA,OAAKC,UAAU,YACXtB,IAAAqB,cAAA,OAAKC,UAAU,0BACftB,IAAAqB,cAAA,OAAKC,UAAU,sBACXtB,IAAAqB,cAAA,KAAG6N,KAAK,iBAAiB5N,UAAU,sBAAsB8B,MAAM,qBAAsBzO,GAAG,WAAUqL,IAAAqB,cAAA,cAAQ,UAC1GrB,IAAAqB,cAAA,SAAOT,KAAK,SAASjM,GAAG,eACxBqL,IAAAqB,cAAA,SAAOT,KAAK,SAASjM,GAAG,kBACxBqL,IAAAqB,cAAA,SAAOT,KAAK,SAASjM,GAAG,aACxBqL,IAAAqB,cAAA,SAAOT,KAAK,SAASjM,GAAG,UACxBqL,IAAAqB,cAAA,SAAOT,KAAK,SAASjM,GAAG,yBAE5BqL,IAAAqB,cAAA,OAAKC,UAAU,aAAa+B,MAAO,CAAC5G,QAAS,SAEzCuD,IAAAqB,cAAA,KAAGC,UAAU,uCAAsC,aAAUtB,IAAAqB,cAAA,MAAIC,UAAU,iBAAiB,sBAE5FtB,IAAAqB,cAAA,OAAKC,UAAU,QACftB,IAAAqB,cAAA,gBACIrB,IAAAqB,cAAA,OAAKC,UAAU,UACftB,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,OAAKC,UAAU,gBACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,0BACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,SAAO8Q,aAAa,aAAavR,KAAK,OAAOjM,GAAG,eAAe2M,UAAU,6CAA6CmK,UAAU,aAEhIzL,IAAAqB,cAAA,SAAOT,KAAK,OAAOjM,GAAG,eAAe2M,UAAU,eAC/C,qBAAmB,8DACnB,YAAU,SAAS,YAAU,OAAO,oBAAkB,QAAQ,WAAS,UAAU,WAAS,YAC1F,YAAU,WAAW,gBAAc,IAAI,0BAAwB,MAC/DtB,IAAAqB,cAAA,SAAOT,KAAK,SAASjM,GAAG,cAAcwd,aAAa,QAGvDnS,IAAAqB,cAAA,OAAKC,UAAU,gBACftB,IAAAqB,cAAA,OAAKC,UAAU,SACXtB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,+BACrCrB,IAAAqB,cAAA,OAAKC,UAAU,uBACftB,IAAAqB,cAAA,SAAO8Q,aAAa,IAAIxd,GAAG,iBAAiBiM,KAAK,OAAOU,UAAU,kDAAkDmK,UAAU,aAE9HzL,IAAAqB,cAAA,SAAOT,KAAK,OAAOjM,GAAG,iBAAiB2M,UAAU,oBACjD,qBAAmB,kFACnB,YAAU,SAAS,YAAU,OAAO,oBAAkB,QAAQ,WAAS,IAAI,WAAS,KACpF,YAAU,IAAI,YAAU,IAAI,gBAAc,IAAI,0BAAwB,IAAI,aAAW,KAAK,qBAAmB,gFAIrHtB,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,OAAKC,UAAU,0BACftB,IAAAqB,cAAA,SAAOC,UAAU,aAAYtB,IAAAqB,cAAA,cAAQ,0BACrCrB,IAAAqB,cAAA,KAAGC,UAAU,aAAa3M,GAAG,uBAAsB,gBAQ/DqL,IAAAqB,cAAA,OAAKC,UAAU,iBACXtB,IAAAqB,cAAA,KAAGC,UAAU,uBAAsBtB,IAAAqB,cAAA,cAAQ,eAC3CrB,IAAAqB,cAAA,UACArB,IAAAqB,cAAA,UAAI,wIAS5B,CCjQO,SAAS8iB,EAAwBjkB,GACtC,IAAM7N,EAAWskB,cAEjB1X,EAAoCC,oBAAS,GAAMC,EAAAC,IAAAH,EAAA,GAA5C2X,EAAUzX,EAAA,GAAE0X,EAAa1X,EAAA,GAgQhC,SAAS2X,EAAoBvuB,EAAK4pB,GAChC,IAAIpuB,EAASgzB,EAAYxuB,EAAK4pB,GAE9B,OAAGpuB,EAAS,EACD,EAGJA,CACT,CAEA,SAASgzB,EAAYxuB,EAAK4pB,GAKxB,YAJqBnoB,IAAjBmoB,IACAA,EAAe,GAGA,iBAAR5pB,GAIP0B,MAAM1B,GAHC4pB,EAOJ5pB,CACT,CAEA,SAASyuB,EAAgB/V,EAAK3Z,EAAOoK,GAGnC,IAAInM,EAAQmM,EAAE4Z,OAAO/lB,MACjB0xB,EAAWxuB,WAAWlD,EAAMmD,QAAQ,KAAM,KAU9C,GAAIuuB,GAAyB,IAAbA,EAAgB,CAG5B,IAAIC,EAAS,GAAKD,EAEd/W,EAAM5Y,GAAO6vB,WACbD,EAASA,EAAO5wB,MAAM,EAAG4Z,EAAM5Y,GAAO6vB,WAG1C5xB,EAAQmwB,EAAoB,GAAKwB,EACrC,MACI3xB,EAAQ,GAGZ8M,EAAS+kB,YAAoB,CACzB9vB,MAAOA,EACP/B,MAAOA,IAKb,CAEA,SAASimB,EAAUvK,EAAK3Z,EAAOoK,GAG7BW,EAASglB,YAAmB,CACxB/vB,MAAOA,EACPkO,aAAcsgB,EAAsB5V,EAAO5Y,EAAOoK,EAAE4Z,OAAO/lB,UAMjE,SAAqB0b,EAAK3Z,EAAOgwB,GAC/B,IAAIC,EAAc,CACdC,oBAAqBtX,EAAMsX,oBAAoBjyB,MAC/CkyB,wBAAyBvX,EAAMuX,wBAAwBlyB,MACvDmyB,0BAA2BxX,EAAMwX,0BAA0BnyB,MAC3DoyB,mBAAoBzX,EAAMyX,mBAAmBpyB,MAC7CqyB,uBAAwB1X,EAAM0X,uBAAuBryB,MAErDsyB,wBAAyB3X,EAAM2X,wBAAwBtyB,MACvDuyB,4BAA6B5X,EAAM4X,4BAA4BvyB,MAC/DwyB,8BAA+B7X,EAAM6X,8BAA8BxyB,MACnEyyB,uBAAwB9X,EAAM8X,uBAAuBzyB,MACrD0yB,2BAA4B/X,EAAM+X,2BAA2B1yB,OAGjEgyB,EAAYjwB,GAASgwB,EAErB,IAAIY,EAAqBhY,EAAMiY,0BAA0B5yB,MACrD6yB,EAAiBlY,EAAMmY,sBAAsB9yB,MAC7C+yB,EAAgBpY,EAAMqY,qBAAqBhzB,MAE/C,GAAY,SAAR0b,EAAgB,CAChB,IAwCIuX,EACAC,EACAhB,EA1CAD,EAAsBzb,KAAKrE,KAAKme,EAAU0B,EAAYC,qBAAsBtX,EAAMsX,oBAAoBkB,UAiB1G,GAfc,wBAAVpxB,IACwC,KAApCiwB,EAAYC,sBAA+B3B,EAAU0B,EAAYC,qBAAuBtX,EAAMsX,oBAAoBkB,SAClHrmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACP/B,MAAOmwB,EAAoB,GAAK8B,EAAoBrtB,QAAQ,IAC5DwuB,KAAM,0BAA4BzY,EAAMsX,oBAAoBkB,SAAW,SAG3ErmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACPqxB,KAAM,QAKdC,EAAiB3X,EAAKsW,GAoBtB,OAjBAllB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAO,YAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,oCACP/B,MAAO,OASf,IAEIszB,EACAC,EACAC,EAJArB,EAA4B,EAMhC,GAAIxX,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAUC,KAmBtDC,EAjBCr1B,EAASs1B,EAAY,CACrBC,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBtB,EAAmBuB,eACpCC,uBAAwB7D,EAAU0B,EAAYE,yBAC9CkC,UAAWzB,EAAmB0B,SAC9BC,QAAS3B,EAAmB4B,MAC5BC,oBAAqBvC,EACrBwC,YAAanE,EAAU0B,EAAYI,oBACnCsC,wBAAyBpE,EAAU0B,EAAYK,wBAC/CsC,mBAAoBha,EAAMia,eAAe50B,MACzC60B,0BAA2BvE,EAAU0B,EAAYG,2BACjD2C,uBAAwB7C,EACxBU,mBAAoBA,IAKC,yBAGrBM,EAA+B,EAC/BC,EAAuB,EACvBhB,EAA0B,EAC1BC,EAA4B,EAC5BoB,EAAkC,EAClCC,EAAoC,EAEpCuB,EAAkB,kCAElB9B,EAA+BzB,EAAYhzB,EAAOw2B,2BAA6BxD,EAAYhzB,EAAOy2B,2BAClG/B,EAAuB1B,EAAYhzB,EAAO02B,uBAAyB1D,EAAYhzB,EAAO22B,uBACtFjD,EAA0BV,EAAYhzB,EAAO02B,uBAC7C/C,EAA4BX,GAAahzB,EAAO22B,uBAEhD7B,EAAwB90B,EAAO42B,4BAC/B7B,EAAkC/B,EAAYhzB,EAAOw2B,2BACrDxB,EAAoChC,EAAYhzB,EAAOy2B,2BAEvDnoB,EAAS+kB,YAAoB,CACzB9vB,MAAO,wBACP/B,MAAOszB,KAGXxmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAOq1B,EAAiB,OAAQ1a,EAAM2a,WAAWt1B,OAASszB,OAIlExmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,OAEpEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,4BACP/B,MAAOmwB,EAAoB,GAAKgC,EAA0BvtB,QAAQ,OAEtEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,OAE5EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,oCACP/B,MAAOmwB,EAAoB,GAAKqD,EAAkC5uB,QAAQ,YAE3E,GAAI+V,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAU4B,KAAM,CAEtE,IAAI/2B,EAeDq1B,EAfCr1B,EAASg3B,EAAQ,CACjBzB,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBpB,EAAeqB,eAChCC,uBAAwB7D,EAAU0B,EAAYE,yBAC9CkC,UAAWvB,EAAewB,SAC1BC,QAASzB,EAAe0B,MACxBC,oBAAqBvC,EACrBwC,YAAanE,EAAU0B,EAAYI,oBACnCsC,wBAAyBpE,EAAU0B,EAAYK,wBAC/CsC,mBAAoBha,EAAMia,eAAe50B,MACzC6yB,eAAgBA,IAKK,yBAGrBI,EAA+B,EAC/BC,EAAuB,EACvBhB,EAA0B,EAC1BqB,EAAkC,EAElCwB,EAAkB,kCAElB9B,EAA+BzB,EAAYhzB,EAAOi3B,yBAClDvC,EAAuB1B,EAAYhzB,EAAOk3B,qBAC1CxD,EAA0BV,EAAYhzB,EAAOk3B,qBAE7CnC,EAAkC/B,EAAYhzB,EAAOi3B,0BAGzD3oB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,OAEpEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,MAEhF,CAGJ,KAAO,IAAY,aAAR8W,EAyGP,MAAM,IAAIkL,MAAM,qCAxGhB,IAAI0L,EAA0B9b,KAAKrE,KAAKme,EAAU0B,EAAYM,yBAA0B3X,EAAM2X,wBAAwBa,UAiBtH,GAfc,4BAAVpxB,IAC4C,KAAxCiwB,EAAYM,0BAAmChC,EAAU0B,EAAYM,yBAA2B3X,EAAM2X,wBAAwBa,SAC9HrmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAKmC,EAAwB1tB,QAAQ,IAChEwuB,KAAM,0BAA4BzY,EAAM2X,wBAAwBa,SAAW,SAG/ErmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACPqxB,KAAM,QAKdC,EAAiB3X,EAAKsW,GAoBtB,OAjBAllB,EAAS+kB,YAAoB,CACzB9vB,MAAO,mCACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,2BACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,sCACP/B,MAAO,YAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,wCACP/B,MAAO,OAMf,IAcI21B,EACAC,EACArD,EACAC,EACAqD,EACAC,EAnBAC,EAAY8I,EAAc,CAC1B5I,kBAAmBtb,EAAMqZ,qBAAqBh0B,MAC9Ck2B,uBAAwB1f,KAAKrE,KAAKme,EAAU0B,EAAYO,6BAA8B5X,EAAMqZ,qBAAqBh0B,OAEjHq2B,mBAAoB1b,EAAMia,eAAe50B,MACzCs2B,qBAAsBhE,EACtBiE,oBAAqBjG,EAAU0B,EAAYS,wBAC3C+D,wBAAyBlG,EAAU0B,EAAYU,4BAE/CK,cAAeA,IAYgB,KAA/BgD,EAAUW,kBACVf,EAAmC,EACnCC,EAA2B,EAC3BrD,EAA8B,EAC9BC,EAAgC,EAChCqD,EAAsC,EACtCC,EAAwC,EAExCf,EAAkB,2CAElBY,EAAmCpE,EAAoBwE,EAAUY,iCAAmCpF,EAAoBwE,EAAUa,mCAClIhB,EAA2BrE,EAAoBwE,EAAUc,kCAAoCtF,EAAoBwE,EAAUe,oCAC3HvE,EAA8BhB,EAAoBwE,EAAUc,kCAC5DrE,EAAgCjB,EAAoBwE,EAAUe,oCAC9DjB,EAAsCtE,EAAoBwE,EAAUY,iCACpEb,EAAwCvE,EAAoBwE,EAAUa,oCAG1E9pB,EAAS+kB,YAAoB,CACzB9vB,MAAO,mCACP/B,MAAOmwB,EAAoB,GAAKwF,EAAiC/wB,QAAQ,OAE7EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,2BACP/B,MAAOmwB,EAAoB,GAAKyF,EAAyBhxB,QAAQ,OAErEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,8BACP/B,MAAOmwB,EAAoB,GAAKoC,EAA4B3tB,QAAQ,OAExEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,gCACP/B,MAAOmwB,EAAoB,GAAKqC,EAA8B5tB,QAAQ,OAE1EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sCACP/B,MAAOmwB,EAAoB,GAAK0F,EAAoCjxB,QAAQ,OAEhFkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,wCACP/B,MAAOmwB,EAAoB,GAAK2F,EAAsClxB,QAAQ,MAItF,CACF,CArTEmyB,CAAYrb,EAAK3Z,EAAOoK,EAAE4Z,OAAO/lB,MACnC,CAsTA,SAAS+0B,EAAkBhe,GACzB4D,EAAMhE,eAAeI,EACvB,CAEA,SAAS8c,EAAcmD,EAAW5uB,GAChC,OAAO4uB,EAAUC,OAAOv0B,QAAO,SAASuF,GACpC,OAAOA,EAAMG,YAAcA,CAC/B,IAAGzK,OAAS,CACf,CAEC,SAAS01B,EAAiB3X,EAAK8U,GAC7B,IAAI0G,EAAiB,GA6BrB,MA3BY,SAARxb,EACAwb,EAAiBvc,EAAMwc,mBAAmBn3B,MAM3B,aAAR0b,IACPwb,EAAiBvc,EAAMyc,uBAAuBp3B,OAQ1Bk3B,EAAetjB,KAAI,SAAA7R,GACvC,IAAIkO,EAAesgB,EAAsB5V,EAAO5Y,EAAOyuB,EAASzuB,IAOhE,OALA+K,EAASglB,YAAmB,CACxB/vB,MAAOA,EACPkO,aAAcA,KAGM,KAAjBA,CACX,IAEuBonB,OAAM,SAAAh4B,GAAC,OAAIA,CAAC,GACrC,CAEA,SAASg2B,EAAiB3Z,EAAK4Z,GAC7B,IAAIgC,EAAgB,GA0BpB,MAxBY,SAAR5b,GACA4b,EAAgB,CACZ,sBACA,0BACA,qBACA,0BAGAhC,GACAgC,EAAcr5B,KAAK,8BAER,aAARyd,IACP4b,EAAgB,CACZ,0BACA,8BACA,yBACA,8BAGAhC,GACAgC,EAAcr5B,KAAK,kCAIpBq5B,CACT,CAEA,SAASC,EAAa5c,GACpB,OAAOF,IAAAqB,cAAA,QAAMC,UAAU,gBAAgB+B,MAAO,CAAE5G,QAASyD,EAAM5D,QAAU,QAAU,SAAW4D,EAAM5D,QACtG,CAMA,SAASknB,EAASviB,EAAKvP,GACnBwO,EAAMujB,WAAWxiB,EACrB,CAMA,OArtBA1B,qBAAU,WAGR,GAA6C,IAA1CW,EAAMiY,0BAA0B5yB,OACU,IAAtC2a,EAAMmY,sBAAsB9yB,OACS,IAArC2a,EAAMqY,qBAAqBhzB,MAFlC,CAOA,IAIIizB,EACAC,EACAjB,EACAC,EACAqB,EACApB,EACAqB,EAGAF,EAbAX,EAAqBhY,EAAMiY,0BAA0B5yB,MACrD6yB,EAAiBlY,EAAMmY,sBAAsB9yB,MAC7C+yB,EAAgBpY,EAAMqY,qBAAqBhzB,MAa/C,GAAI2a,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAUC,KAAM,CAC/D,IAAI4D,GAAmB7E,EAAmB8E,gBAEtCj5B,EAASs1B,EAAY,CACrBC,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBtB,EAAmBuB,eACpCC,sBAAuBxZ,EAAMqZ,qBAAqBh0B,MAClDo0B,UAAWzB,EAAmB0B,SAC9BC,QAAS3B,EAAmB4B,MAC5BC,oBAAqBgD,EACrB/C,WAAY,GACZC,uBAAwB,GACxBC,mBAAoBha,EAAMia,eAAe50B,MACzC60B,yBAA0B,KAC1BC,uBAAwB0C,EACxB7E,mBAAoBA,IAKxBW,EAAwB3Y,EAAMqZ,qBAAqBh0B,OAAS,IAE5DizB,EAA+BzB,EAAYhzB,EAAOk5B,4BAA8BpE,EAAwB9B,EAAYhzB,EAAOm5B,2BAA6B,GACxJzE,EAAuB1B,EAAYhzB,EAAOo5B,cAAgBtE,EAAwB9B,EAAYhzB,EAAOq5B,aAAe,GACpH3F,EAA0BV,EAAYhzB,EAAOo5B,aAC7CzF,EAA4BX,GAAahzB,EAAOq5B,aAEhD5F,EAAsBT,EAAYhzB,EAAOs5B,gBACzCvE,EAAkC/B,EAAYhzB,EAAOk5B,2BACrDlE,EAAoChC,GAAahzB,EAAOm5B,2BAExD7qB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACP/B,MAAOmwB,EAAoB,GAAK8B,EAAoBrtB,QAAQ,IAC5DuuB,SAAU30B,EAAOs5B,kBAErBhrB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,IAChEuuB,UAAWjB,EAAwBttB,QAAQ,MAE/CkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,OAE5EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,4BACP/B,MAAOmwB,EAAoB,GAAKgC,EAA0BvtB,QAAQ,IAClEuuB,UAAWhB,EAA0BvtB,QAAQ,MAGjDkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,oCACP/B,MAAOmwB,EAAoB,GAAKqD,EAAkC5uB,QAAQ,OAE9EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,wBACP/B,MAAOszB,IAEf,MAAO,GAAI3Y,EAAM8Y,iBAAiBzzB,MAAM0zB,UAAY/Y,EAAMgZ,UAAU4B,KAAM,CAClEiC,GAAmB3E,EAAe4E,gBAiBtCxE,EAA+BzB,GAf3BhzB,EAASg3B,EAAQ,CACjBzB,iBAAkBpZ,EAAMqZ,qBAAqBh0B,MAC7Ci0B,gBAAiBpB,EAAeqB,eAChCC,sBAAuBxZ,EAAMqZ,qBAAqBh0B,MAClDo0B,UAAWvB,EAAewB,SAC1BC,QAASzB,EAAe0B,MACxBC,oBAAqBgD,EACrB/C,WAAY,GACZC,uBAAwB,GACxBC,mBAAoBha,EAAMia,eAAe50B,MACzC6yB,eAAgBA,KAK8BkF,2BAClD7E,EAAuB1B,EAAYhzB,EAAOw5B,aAC1C9F,EAA0BV,EAAYhzB,EAAOw5B,aAE7C/F,EAAsBT,EAAYhzB,EAAOs5B,gBACzCvE,EAAkC/B,EAAYhzB,EAAOu5B,2BACrDzE,GAAwB,EAExBxmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,+BACP/B,MAAOmwB,EAAoB,GAAK8C,EAA6BruB,QAAQ,OAEzEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,uBACP/B,MAAOmwB,EAAoB,GAAK+C,EAAqBtuB,QAAQ,OAEjEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sBACP/B,MAAOmwB,EAAoB,GAAK8B,EAAoBrtB,QAAQ,IAC5DuuB,SAAU30B,EAAOs5B,kBAErBhrB,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAK+B,EAAwBttB,QAAQ,IAChEuuB,UAAWjB,EAAwBttB,QAAQ,MAE/CkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,kCACP/B,MAAOmwB,EAAoB,GAAKoD,EAAgC3uB,QAAQ,OAE5EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,wBACP/B,MAAOszB,IAEf,CAEA,IAAIgC,EAA4C,OAA/B3a,EAAMsd,eAAej4B,MAClCo2B,GAAqF,IAAlE,CAAC,KAAM,KAAM,KAAM,MAAMj0B,QAAQwY,EAAMsd,eAAej4B,OAAiB2a,EAAMsd,eAAej4B,MAAQ,QAE3H8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,kBACP/B,MAAOo2B,KAGX,IAAI8B,GAAsBnF,EAAc+L,wBAEpC/I,EAAY8I,EAAc,CAC1B5I,kBAAmBtb,EAAMqZ,qBAAqBh0B,MAC9Ck2B,uBAAwBvb,EAAMqZ,qBAAqBh0B,MAEnDq2B,mBAAoB1b,EAAMia,eAAe50B,MACzCs2B,qBAAsB4B,EACtB3B,mBAAoB,GACpBC,uBAAwB,GAExBzD,cAAeA,IAKf4C,EAAmCpE,EAAoBwE,EAAUY,iCAAmCpF,EAAoBwE,EAAUa,mCAClIhB,EAA2BrE,EAAoBwE,EAAUc,kCAAoCtF,EAAoBwE,EAAUe,oCAC3HxE,EAA0Bf,EAAoBwE,EAAUsC,kBACxD9F,EAA8BhB,EAAoBwE,EAAUc,kCAC5DhB,EAAsCtE,EAAoBwE,EAAUY,iCACpEnE,EAAgCjB,EAAoBwE,EAAUe,oCAC9DhB,EAAwCvE,EAAoBwE,EAAUa,mCAE1E9pB,EAAS+kB,YAAoB,CACzB9vB,MAAO,mCACP/B,MAAOmwB,EAAoB,GAAKwF,EAAiC/wB,QAAQ,OAE7EkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,2BACP/B,MAAOmwB,EAAoB,GAAKyF,EAAyBhxB,QAAQ,OAErEkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,0BACP/B,MAAOmwB,EAAoB,GAAKmC,EAAwB1tB,QAAQ,IAChEuuB,SAAU4C,EAAUuC,mBAExBxrB,EAAS+kB,YAAoB,CACzB9vB,MAAO,8BACP/B,MAAOmwB,EAAoB,GAAKoC,EAA4B3tB,QAAQ,IACpEuuB,UAAWZ,EAA4B3tB,QAAQ,MAEnDkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,sCACP/B,MAAOmwB,EAAoB,GAAK0F,EAAoCjxB,QAAQ,OAEhFkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,gCACP/B,MAAOmwB,EAAoB,GAAKqC,EAA8B5tB,QAAQ,IACtEuuB,UAAWX,EAA8B5tB,QAAQ,MAErDkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,wCACP/B,MAAOmwB,EAAoB,GAAK2F,EAAsClxB,QAAQ,OAElFkI,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAO,OAEX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,6BACP/B,MAAO,OAGX8M,EAAS+kB,YAAoB,CACzB9vB,MAAO,aACP/B,MAAOs1B,KAEXxoB,EAAS+kB,YAAoB,CACzB9vB,MAAO,qBACP/B,MAAOq1B,EAAiB,OAAQC,GAAchC,MAElDxmB,EAAS+kB,YAAoB,CACzB9vB,MAAO,yBACP/B,MAAOq1B,EAAiB,WAAYC,KA5OxC,CAkPF,GAAG,CAAC3a,EAAM8Y,iBAAiBzzB,QA4dzBya,IAAAqB,cAAA,OAAKC,UAAU,uBACXtB,IAAAqB,cAAA,OAAKC,UAAU,gCAAgC,gBAAgBpB,EAAM2a,WAAWt1B,MAAiB,QAAT,QACpFya,IAAAqB,cAAA,MAAIC,UAAU,SAAQ,+BAA4BtB,IAAAqB,cAAA,QAAMgC,MAAO,CAAEuK,WAAY,WAAY,oBACzF5N,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,gBAAe,wBAC9BtB,IAAAqB,cAAA,MAAIC,UAAU,2BAA2B3M,GAAG,QAAQ4M,KAAK,WACrDvB,IAAAqB,cAAA,MAAIE,KAAK,eAAe8B,MAAO,CAAC5G,QAAkD,OAAzCyD,EAAM8Y,iBAAiBzzB,MAAM0zB,QAAmB,YAAc,SACnGjZ,IAAAqB,cAAA,UAAQ1M,GAAG,mBAAmB2M,UAAW,mBAAoBV,KAAK,SAASW,KAAK,MAAM,gBAAc,WAAW,gBAAc,OAAO2I,QAASsZ,EAAS19B,KAAKsL,KAAM,SAC7J4O,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,QAAM,YAAU,cAAc,YAAU,OAAO,YAAU,WAAW,YAAU,YAAY,YAAWnB,EAAM4d,YAAY,oBAG/H9d,IAAAqB,cAAA,MAAIE,KAAK,gBACLvB,IAAAqB,cAAA,UAAQ1M,GAAG,uBAAuB2M,UAAW,0BAA2BV,KAAK,SAASW,KAAK,MAAM,gBAAc,eAAe,gBAAc,QAAQ2I,QAASsZ,EAAS19B,KAAKsL,KAAM,aAC7K4O,IAAAqB,cAAA,KAAGC,UAAU,gCACbtB,IAAAqB,cAAA,QAAM,YAAU,cAAc,YAAU,WAAW,YAAU,WAAW,YAAU,YAAY,YAAWnB,EAAM4d,YAAY,mBAM3I9d,IAAAqB,cAAA,OAAKC,UAAU,iCACXtB,IAAAqB,cAAA,OAAKC,UAAW,gBAAiB3M,GAAG,WAAW4M,KAAK,WAAW,kBAAgB,eAAe,gBAAgBrB,EAAM2Y,sBAAsBtzB,MAAiB,QAAT,QAC9Iya,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,aAAY,uBAC3BtB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,oBAAoBpB,EAAMsY,6BAA6BjzB,OACtEya,IAAAqB,cAAA,WAAK,SAGbrB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,iBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,mBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,oBAAoBpB,EAAMuY,qBAAqBlzB,MAAM,IAACya,IAAAqB,cAAA,YAAM,SAE/ErB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,oBAAiBtB,IAAAqB,cAAA,YAAM,kBAAgBnB,EAAMsX,oBAAoBkB,SAAS,SACtG1Y,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,yBAAyBiM,KAAK,OAAOU,UAAWpB,EAAMsX,oBAAoBhiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMsX,oBAAoBjyB,MAAOoQ,UAAWuK,EAAMsX,oBAAoB7hB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,uBAAwBma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,yBACzT4O,IAAAqB,cAAA,YAAM,OAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMsX,oBAAoBhiB,kBAM7DwK,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,6BAA6BiM,KAAK,OAAOU,UAAWpB,EAAMuX,wBAAwBjiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMuX,wBAAwBlyB,MAAOoQ,UAAWuK,EAAMuX,wBAAwB9hB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,2BAA4Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,6BAC7U4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMuX,wBAAwBjiB,gBAGzDwK,IAAAqB,cAAA,OAAKC,UAAU,oCACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAM4Y,gCAAgCvzB,MAAOuiB,UAAQ,IAC/E9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,6BAA6B+B,MAAO,CAAE0a,WAAY,IAC7D/d,IAAAqB,cAAA,OAAKC,UAAU,cAAa,kBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,wBAAwBiM,KAAK,OAAOU,UAAWpB,EAAMyX,mBAAmBniB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMyX,mBAAmBpyB,MAAOoQ,UAAWuK,EAAMyX,mBAAmBhiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,sBAAuBma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,wBACpT4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMyX,mBAAmBniB,iBAIxDwK,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAW,+CACZtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,+BAA+BiM,KAAK,OAAOU,UAAWpB,EAAMwX,0BAA0BliB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAMwX,0BAA0BnyB,MAAOoQ,UAAWuK,EAAMwX,0BAA0B/hB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,6BAA8Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,+BACvV4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAMwX,0BAA0BliB,gBAG3DwK,IAAAqB,cAAA,OAAKC,UAAU,iEACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAM6Y,kCAAkCxzB,MAAOuiB,UAAQ,IACjF9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,8CAA8C+B,MAAO,CAAE0a,WAAY,IAC9E/d,IAAAqB,cAAA,OAAKC,UAAU,eAAc,YAC7BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,4BAA4BiM,KAAK,OAAOU,UAAWpB,EAAM0X,uBAAuBpiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM0X,uBAAuBryB,MAAOoQ,UAAWuK,EAAM0X,uBAAuBjiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,OAAQ,0BAA2Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,OAAQ,4BACxU4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM0X,uBAAuBpiB,mBAMpEwK,IAAAqB,cAAA,OAAKC,UAAW,4BAA6B3M,GAAG,eAAe4M,KAAK,WAAW,kBAAgB,mBAAmB,gBAAc,QAC5HvB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,aAAY,uBAC3BtB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,oBAAoBpB,EAAMgb,iCAAiC31B,OAC1Eya,IAAAqB,cAAA,WAAK,SAGbrB,IAAAqB,cAAA,OAAKC,UAAU,qBACXtB,IAAAqB,cAAA,OAAKC,UAAU,iBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,mBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cAAcpB,EAAMib,yBAAyB51B,MAAM,IAACya,IAAAqB,cAAA,YAAM,SAE7ErB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,oBAAiBtB,IAAAqB,cAAA,YAAM,kBAAgBnB,EAAM2X,wBAAwBa,SAAS,SAC1G1Y,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,6BAA6BiM,KAAK,OAAOU,UAAWpB,EAAM2X,wBAAwBriB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM2X,wBAAwBtyB,MAAOoQ,UAAWuK,EAAM2X,wBAAwBliB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,2BAA4Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,6BACrV4O,IAAAqB,cAAA,YAAM,OAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM2X,wBAAwBriB,kBAMjEwK,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,iCAAiCiM,KAAK,OAAOU,UAAWpB,EAAM4X,4BAA4BtiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM4X,4BAA4BvyB,MAAOoQ,UAAWuK,EAAM4X,4BAA4BniB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,+BAAgCma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,iCACzW4O,IAAAqB,cAAA,YAAM,MAAIuV,GAAc5W,IAAAqB,cAAA,QAAMC,UAAU,uBAAsB,OAElEtB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM4X,4BAA4BtiB,gBAG7DwK,IAAAqB,cAAA,OAAKC,UAAU,oCACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAMkb,oCAAoC71B,MAAOuiB,UAAQ,IACnF9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,6BAA6B+B,MAAO,CAAE0a,WAAY,IAC7D/d,IAAAqB,cAAA,OAAKC,UAAU,cAAa,qBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,4BAA4BiM,KAAK,OAAOU,UAAWpB,EAAM8X,uBAAuBxiB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM8X,uBAAuBzyB,MAAOoQ,UAAWuK,EAAM8X,uBAAuBriB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,0BAA2Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,4BAChV4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM8X,uBAAuBxiB,iBAI5DwK,IAAAqB,cAAA,OAAKC,UAAU,2BACXtB,IAAAqB,cAAA,OAAKC,UAAU,+CACXtB,IAAAqB,cAAA,OAAKC,UAAU,cAAa,gBAC5BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,mCAAmCiM,KAAK,OAAOU,UAAWpB,EAAM6X,8BAA8BviB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM6X,8BAA8BxyB,MAAOoQ,UAAWuK,EAAM6X,8BAA8BpiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,iCAAkCma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,mCACnX4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM6X,8BAA8BviB,gBAG/DwK,IAAAqB,cAAA,OAAKC,UAAU,iEACXtB,IAAAqB,cAAA,OAAKC,UAAU,eAAc,mBAAgBtB,IAAAqB,cAAA,YAAM,mBACnDrB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAOT,KAAK,OAAOrb,MAAO2a,EAAMmb,sCAAsC91B,MAAOuiB,UAAQ,IACrF9H,IAAAqB,cAAA,YAAM,SAIdrB,IAAAqB,cAAA,OAAKC,UAAU,8CAA8C+B,MAAO,CAAE0a,WAAY,IAC9E/d,IAAAqB,cAAA,OAAKC,UAAU,eAAc,YAC7BtB,IAAAqB,cAAA,OAAKC,UAAU,cACXtB,IAAAqB,cAAA,SAAO1M,GAAG,gCAAgCiM,KAAK,OAAOU,UAAWpB,EAAM+X,2BAA2BziB,aAAe,cAAgB,GAAIjQ,MAAO2a,EAAM+X,2BAA2B1yB,MAAOoQ,UAAWuK,EAAM+X,2BAA2BtiB,UAAW0V,SAAU2L,EAAgBlxB,KAAKsL,KAAM,WAAY,8BAA+Bma,OAAQC,EAAU1lB,KAAKsL,KAAM,WAAY,gCACpW4O,IAAAqB,cAAA,YAAM,QAEVrB,IAAAqB,cAACyb,EAAY,CAACxgB,QAAS4D,EAAM+X,2BAA2BziB,oBAQxEohB,GAAc5W,IAAAqB,cAAA,OAAKC,UAAU,gBAAetB,IAAAqB,cAAA,KAAGC,UAAU,6BAA+BtB,IAAAqB,cAAA,SAAG,gDAA6CrB,IAAAqB,cAAA,MAAIC,UAAU,YAAY,iDAItKtB,IAAAqB,cAAA,OAAKC,UAAU,aAAY,oHAE3BtB,IAAAqB,cAAA,OAAKC,UAAU,mBACXtB,IAAAqB,cAAA,UAAQ1M,GAAG,YAAYiM,KAAK,SAAS9b,KAAK,YAAYolB,QA9MpE,WACE2M,GAAc,EAChB,EA6Mc,YAAU,YAAY,YAAU,wBAAwB,YAAU,YAAY,YAAW3W,EAAM4d,YAAY,6BAE/G9d,IAAAqB,cAAA,OAAK1M,GAAG,mBAAmB2M,UAAU,mBAAmB+B,MAAO,CAAC5G,QAAS,SACrEuD,IAAAqB,cAAA,UAAI,gCACJrB,IAAAqB,cAAA,OAAKC,UAAU,kBACXtB,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,UAAI,0BACJrB,IAAAqB,cAAA,SAAO1M,GAAG,yBAAyBiM,KAAK,OAAOrb,MAAM,aAAa04B,QAAQ,iIAC1Eje,IAAAqB,cAAA,SAAO1M,GAAG,yBAAyBiM,KAAK,WAE5CZ,IAAAqB,cAAA,OAAKC,UAAU,yBACXtB,IAAAqB,cAAA,UAAI,8BACJrB,IAAAqB,cAAA,SAAO1M,GAAG,aAAaiM,KAAK,OAAOrb,MAAM,KAAK04B,QAAQ,iIACtDje,IAAAqB,cAAA,SAAO1M,GAAG,aAAaiM,KAAK,YAGpCZ,IAAAqB,cAAA,OAAKC,UAAU,wBACXtB,IAAAqB,cAAA,OAAKC,UAAU,OACXtB,IAAAqB,cAAA,SAAG,yBACHrB,IAAAqB,cAAA,UAAI,cAERrB,IAAAqB,cAAA,OAAKC,UAAU,UACXtB,IAAAqB,cAAA,SAAG,yBACHrB,IAAAqB,cAAA,UAAI,YAGZrB,IAAAqB,cAAA,KAAGC,UAAU,UAAS,sHAKtC,CAEA,SAAS+X,EAAYxN,GASjB,IAA4C,IAR9B,CAAC,WAAY,kBAQfnkB,QAAQmkB,EAAQ8N,WACxB,MAAM,IAAIxN,MAAM,8BAGpB,IAAwD,IAXpC,CAChB,QACA,mCACA,kCACA,iBAOczkB,QAAQmkB,EAAQ2N,iBAC9B,MAAM,IAAIrN,MAAM,oCAGpB,IACI,IAwBI+R,EAxBA1B,EAAS,GAET2B,EAAUC,UACVC,EAAYD,YACZE,EAAKF,KACLG,EAAMH,MAEN9E,EAAmBzN,EAAQyN,iBAC3BE,EAAkB3N,EAAQ2N,gBAC1BE,EAAwB7N,EAAQ6N,sBAChCC,EAAY9N,EAAQ8N,UACpBE,EAAShO,EAAQgO,OACjBE,EAAsBlO,EAAQkO,oBAC9BC,EAAanO,EAAQmO,WACrBC,EAAyBpO,EAAQoO,uBACjCC,EAAqBrO,EAAQqO,mBAC7BE,EAA2BvO,EAAQuO,yBACnCC,EAAyBxO,EAAQwO,uBACjCnC,EAAqBrM,EAAQqM,mBAC7BsG,EAAgBtG,EAAmBuG,WAAa,IAChDC,EAAUxG,EAAmByG,SAAW,IACxCC,GAAkB1G,EAAmB2G,WACrCC,GAAkB5G,EAAmB6G,WAIjB,UAApBvF,EAEI0E,EADA5E,EAAmB,IACLpB,EAAmB8G,2BAEnB9G,EAAmB+G,8BAEV,oCAApBzF,EACP0E,EAAchG,EAAmBgH,uCACN,qCAApB1F,EACP0E,EAAchG,EAAmBiH,oCACN,kBAApB3F,EACP0E,EAAchG,EAAmBkH,gBAEjClB,EAAc,GAEd1B,EAAOh5B,KAAK,CACRmK,UAAW,4BACX6H,aAAc,QAItB0oB,GAA4B,IAE5B,IACImB,EADAC,EAAKvjB,KAAKrE,IAAIwmB,EAAaM,GAI3Ba,EADAlB,EAAS7E,EAAmBgG,GAAM,GAAKhG,EAChBA,EAEA6E,EAAS7E,EAAmBgG,GAAM,GAG7D,IACIC,EAmBAC,EAmBAC,EAvCApC,EAAiBthB,KAAKrE,IAAK,GAAKmiB,EAAS,IAGzCG,EAAa,IACbuF,EAAYrH,EAAmBwH,sBACxB1F,EAAa,MACpBuF,EAAYrH,EAAmByH,qBACxB3F,GAAc,MACrBuF,EAAYrH,EAAmB0H,0BAE/BL,EAAY,GAEZ/C,EAAOh5B,KAAK,CACRmK,UAAW,0BACX6H,aAAc,QAItB+pB,GAAwB,IAIpBvF,EAAa,IACbwF,EAAWtH,EAAmB2H,sBACvB7F,EAAa,MACpBwF,EAAWtH,EAAmB4H,qBACvB9F,GAAc,MACrBwF,EAAWtH,EAAmB6H,0BAE9BP,EAAW,GAEXhD,EAAOh5B,KAAK,CACRmK,UAAW,yBACX6H,aAAc,QAItBgqB,GAAsB,IAIJ,aAAd7F,EACA8F,EAAMF,EACe,mBAAd5F,EACP8F,EAAMD,GAENC,EAAM,GAENjD,EAAOh5B,KAAK,CACRmK,UAAW,qBACX6H,aAAc,QAItB,IAGIwqB,EAFAC,EADY9B,EAAQnE,EAAayF,GAAM,GACfxF,EACxBiG,EAAcxB,EAAWE,EAAiB,IAAQ,IAGlDqB,EAAY,KACZD,EAAqB,+BAErBxD,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBwqB,EAAqBjkB,KAAKrE,IAAI2lB,EAAgBtD,GAGlD,IACIU,EACA0F,EAeA5F,EAjBA6F,EAAW/B,EAAUC,EAAG4B,EAAa,GAAyB,GAArBF,GAA0BC,IAAa,GAIhFA,EAAY,KACZxF,EAAwB,+BACxB0F,EAAmB,KAEnB3D,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,mCAGlBilB,EAAwB1e,KAAKrE,IAAI2nB,EAAsB3F,EAAuB0G,EAAUlG,GACxFiG,EAAmBpkB,KAAKrE,IAAI2nB,EAAsBe,EAAUlG,IAK5D+F,EAAY,KACZ1F,EAA4B,+BAE5BiC,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlB+kB,EAA4B4D,EAAQI,EAAI2B,EAAa,GAAyB,GAArBF,GAA0BvF,IAAyB,GAGhH,IAAI4F,EAAiBtkB,KAAKrE,IAAIwiB,EAAqBO,EAA8C,GAAvB4E,GACtEiB,EAA2B,KAC3B3F,GAA8B,EAE9BrB,GAAoB,KACpBgH,EAA2B,2BAC3B3F,GAA8B,EAE9B6B,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAEX6qB,GAAkB,IACzBC,EAA2BD,GAE3BC,EAA2B,2BAC3B3F,GAA8B,EAE9B6B,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAItB,IAEI+qB,EAFAC,EAAoBP,EAAY1F,EAChCkG,EAAc/B,EAAWI,EAAiB,IAAQ,IAGjDnE,EAOM6F,EAAoB,KAC3BD,EAAqB,+BAErB/D,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlB+qB,EADOlG,GAA0B2F,EACZ3F,EAEA2F,GAhBrBO,EAAqB,2BAErB/D,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAetB,IACIklB,EACAgG,EA4BAlG,EA9BAmG,EAAatC,EAAUC,EAAGmC,EAAa,GAAyB,GAArBF,GAA0BC,IAAqB,GAIzF7F,EAQM6F,EAAoB,KAC3B9F,EAAwB,+BACxBgG,EAAqB,KAErBlE,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,mCAIdklB,EAD4B,OAA7BN,EACyBre,KAAKrE,IAAI4oB,EAA0BlG,EAA0BuG,GAE7D5kB,KAAKrE,IAAI4oB,EAA0BK,GAG/DD,EAAqB3kB,KAAKrE,IAAI4oB,EAA0BK,KAtBxDjG,EAAwB,2BACxBgG,EAAqB,KAErBlE,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAsBjBmlB,EAOM6F,EAAoB,KAC3BhG,EAA4B,+BAE5BgC,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBglB,EAA4B2D,EAAQI,EAAIkC,EAAa,GAAyB,GAArBF,GAA0B7F,IAAyB,IAd5GF,EAA4B,2BAE5BgC,EAAOh5B,KAAK,CACRmK,UAAW,+BACX6H,aAAc,8BAatB,IAAI2nB,EAAcphB,KAAKrE,IAAI2nB,EAAsBnF,GAC7C+C,EAA4BkB,EAAQI,EAAI2B,EAAa,GAAqB,GAAjB7C,GAAsBF,IAAe,GAC9FC,EAAiC,GAAnB9D,EAGlB,MAAO,CACHkD,OAAQA,EAER6C,qBAAsBA,EACtBhC,eAAgBA,EAChB5C,sBAAuBA,EACvBuF,mBAAoBA,EACpBzF,0BAA2BA,EAC3B+F,yBAA0BA,EAC1B3F,4BAA6BA,EAC7BD,sBAAuBA,EACvB6F,mBAAoBA,EACpB/F,0BAA2BA,EAC3B2F,iBAAkBA,EAClBO,mBAAoBA,EACpBvD,YAAaA,EACbF,0BAA2BA,EAC3BG,YAAaA,EACbF,0BApB4BiB,EAAQI,EAAIkC,EAAa,GAAqB,GAAjBpD,GAAsBD,IAAe,GAsB9FwD,OAAQ/U,EAEhB,CAAE,MAAOna,GAGL,MAAO,CACH8qB,OAAQ,CACJ,CACI7uB,UAAW,KACX6H,aAAc,GAAK9D,IAInC,CACJ,CAEA,SAASqpB,EAAQlP,GASb,IAA4C,IAR9B,CAAC,WAAY,kBAQfnkB,QAAQmkB,EAAQ8N,WACxB,MAAM,IAAIxN,MAAM,8BAGpB,IAAwD,IAXpC,CAChB,QACA,mCACA,kCACA,iBAOczkB,QAAQmkB,EAAQ2N,iBAC9B,MAAM,IAAIrN,MAAM,oCAGpB,IACI,IAqBI+R,EArBA1B,EAAS,GAET2B,EAAUC,UACVC,EAAYD,YACZE,EAAKF,KACLG,EAAMH,MAEN9E,EAAmBzN,EAAQyN,iBAC3BE,EAAkB3N,EAAQ2N,gBAC1BE,EAAwB7N,EAAQ6N,sBAChCC,EAAY9N,EAAQ8N,UACpBE,EAAShO,EAAQgO,OACjBE,EAAsBlO,EAAQkO,oBAC9BC,EAAanO,EAAQmO,WACrBC,EAAyBpO,EAAQoO,uBACjCC,EAAqBrO,EAAQqO,mBAC7B9B,EAAiBvM,EAAQuM,eACzBoG,EAAgBpG,EAAeqG,WAAa,IAC5CC,EAAUtG,EAAeuG,SAAW,IACpCkC,GAAgBzI,EAAe0I,YAIX,UAApBtH,EAEI0E,EADA5E,EAAmB,IACLlB,EAAe4G,2BAEf5G,EAAe6G,8BAEN,oCAApBzF,EACP0E,EAAc9F,EAAe8G,uCACF,qCAApB1F,EACP0E,EAAc9F,EAAe+G,oCACF,kBAApB3F,EACP0E,EAAc9F,EAAegH,gBAE7BlB,EAAc,GAEd1B,EAAOh5B,KAAK,CACRmK,UAAW,4BACX6H,aAAc,QAItB0oB,GAA4B,IAE5B,IACImB,EADAC,EAAKvjB,KAAKrE,IAAIwmB,EAAaM,GAI3Ba,EADAlB,EAAS7E,EAAmBgG,GAAM,GAAKhG,EAChBA,EAEA6E,EAAS7E,EAAmBgG,GAAM,GAG7D,IACIC,EAmBAC,EAmBAC,EAvCApC,EAAiBthB,KAAKrE,IAAK,GAAKmiB,EAAS,IAGzCG,EAAa,IACbuF,EAAYnH,EAAesH,sBACpB1F,EAAa,MACpBuF,EAAYnH,EAAeuH,qBACpB3F,GAAc,MACrBuF,EAAYnH,EAAewH,0BAE3BL,EAAY,GAEZ/C,EAAOh5B,KAAK,CACRmK,UAAW,0BACX6H,aAAc,QAItB+pB,GAAwB,IAIpBvF,EAAa,IACbwF,EAAWpH,EAAeyH,sBACnB7F,EAAa,MACpBwF,EAAWpH,EAAe0H,qBACnB9F,GAAc,MACrBwF,EAAWpH,EAAe2H,0BAE1BP,EAAW,GAEXhD,EAAOh5B,KAAK,CACRmK,UAAW,yBACX6H,aAAc,QAItBgqB,GAAsB,IAIJ,aAAd7F,EACA8F,EAAMF,EACe,mBAAd5F,EACP8F,EAAMD,GAENC,EAAM,GAENjD,EAAOh5B,KAAK,CACRmK,UAAW,qBACX6H,aAAc,QAItB,IAGIurB,EAFAd,EADY9B,EAAQnE,EAAayF,GAAM,GACfxF,EACxB+G,EAAYtC,EAAWmC,EAAe,IAAQ,IAG9CZ,EAAY,KACZc,EAAmB,+BAEnBvE,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBurB,EAAmBhlB,KAAKrE,IAAI2lB,EAAgBtD,GAGhD,IACIkB,EACAkF,EAeAnF,EAjBAoF,EAAW/B,EAAUC,EAAG0C,EAAW,GAAuB,GAAnBD,GAAwBd,IAAa,GAI5EA,EAAY,KACZhF,EAAsB,+BACtBkF,EAAmB,KAEnB3D,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,mCAGlBylB,EAAsBlf,KAAKrE,IAAI2nB,EAAsB3F,EAAuB0G,EAAUlG,GACtFiG,EAAmBpkB,KAAKrE,IAAI2nB,EAAsBe,EAAUlG,IAK5D+F,EAAY,KACZjF,EAA0B,+BAE1BwB,EAAOh5B,KAAK,CACRmK,UAAW,uBACX6H,aAAc,kCAGlBwlB,EAA0BmD,EAAQI,EAAIyC,EAAW,GAAuB,GAAnBD,GAAwB9F,IAAuB,GAGxG,IAAIsC,EAAcxhB,KAAKrE,IAAI2nB,EAAsBnF,GAGjD,MAAO,CACHsC,OAAQA,EAER6C,qBAAsBA,EACtBhC,eAAgBA,EAChBpC,oBAAqBA,EACrB8F,iBAAkBA,EAClB/F,wBAAyBA,EACzBmF,iBAAkBA,EAClB5C,YAAaA,EACbD,0BAZ4Ba,EAAQI,EAAIyC,EAAW,GAAqB,GAAjB3D,GAAsBE,IAAe,GAc5FqD,OAAQ/U,EAEhB,CAAE,MAAOna,GAGL,MAAO,CACH8qB,OAAQ,CACJ,CACI7uB,UAAW,KACX6H,aAAc,GAAK9D,IAInC,CACJ,CAEA,SAAS0yB,EAAcvY,GACnB,IACI,IAmBI+V,EAnBAX,EAAQ7C,QACRD,EAAUC,UAEV5C,EAAoB3P,EAAQ2P,kBAC5BC,EAAyB5P,EAAQ4P,uBACjCG,EAAqB/P,EAAQ+P,mBAC7BC,EAAuBhQ,EAAQgQ,qBAC/BC,EAAqBjQ,EAAQiQ,mBAC7BC,EAAyBlQ,EAAQkQ,uBACjCzD,EAAgBzM,EAAQyM,cACxB4I,EAAU5I,EAAcgM,eAAiB,IACzClD,EAAkC9I,EAAciM,uCAAyC,IACzFjD,GAAmBhJ,EAAckM,uBACjChD,GAAgClJ,EAAcmM,oCAC9C5G,GAAmBvF,EAAcoM,uBACjChD,EAAUpJ,EAAcqM,eAAiB,IAGzC9C,EAAgB9lB,KAAKrE,IAAImmB,EAAiBhC,GAI1C+F,EAD2B,KAA3B7F,GAAwD,KAAvBD,EACZL,IAA2ByF,EAAUE,GAAmC,KAAO,EAAKrlB,KAAK+lB,IAAI,GAAMZ,EAAUE,GAAmC,IAAO,GAAKS,IAAoBP,EAEhLxF,EAGzB,IACIiG,EADAC,GAA0BjG,EAG9B,IACI,GAA+B,IAA3BiG,EACA,MAAM,IAAI7V,MAAM,kBAIhB4V,EADCH,EAAqBI,EAAyB,GAAMR,EACrC,KAEA,KAExB,CAAE,MAAO9vB,GACLqwB,EAAgB,CACpB,CAEA,IACIE,EAQAC,EASAC,EAlBAC,EAAiB3G,EAiBjB4G,EAAoBD,IALpBF,GARAD,EADArG,EAAqBJ,EACJI,EAEAJ,GAKA,EACa0F,EAAUE,EAEV,IAGsC,KAAQ,EAAKrlB,KAAK+lB,IAAI,EAAKI,EAA8B,IAAuB,GAAhBL,IAGxI,IAEQM,EADkB,OAAlBJ,EACW,IAEAH,GAAsBI,EAAyBK,EAElE,CAAE,MAAM3wB,GACJywB,EAAW,CACf,CAEA,IAIIG,EAQAC,EAVAC,GAFiCZ,EAAqBN,EACSU,EA3DzD,IA4DiD,GAAKE,EAA8B,IAAQ,GAAKA,EAA8B,GAAKnmB,KAAK+lB,IAAI,EAAII,EAA8B,GAAoB,GAAhBL,KACzLY,EAAmBR,EAAiBP,EAGxC,IACIY,EAAiBrB,EAAMllB,KAAKrE,IAAI8qB,EAAsBC,EAAkBL,IAAkB,EAC9F,CAAE,MAAO1wB,GACL4wB,EAAiB,EACrB,CAKIC,EADAJ,EAAW,KAAOG,EAAiB,GAAkB,MAAbH,EAChBG,EAEA,GAG5B,IACII,EAQAC,EAQAC,EAjBAC,EAAuBZ,EAAiBP,EAG5C,IACIgB,EAA0BzB,EAAMllB,KAAKrE,IAAImrB,EAAsBT,EAAgBI,IAAwB,EAC3G,CAAE,MAAO9wB,GACLgxB,EAA0B,EAC9B,CAKIC,EADAR,GAAY,KAAOO,EAA0B,GAAkB,MAAbP,EAC7BO,EAEA,GAWzB,IAGIK,EAHA3G,EALAwG,EADwD,IAAxD7mB,KAAKpE,IAAI4qB,EAAuBI,GACJ,GAEA5mB,KAAKpE,IAAI4qB,EAAuBI,GAK5DK,EAAgCV,IAAmBpB,EAAUE,GAAmC,KAAQ,EAAKrlB,KAAK+lB,IAAI,GAAMZ,EAAUE,GAAmC,IAAO,GAAKS,IAIrLkB,EADAC,GAA+B,GAA+B,KAA1BT,EACN,GAEAtB,EAAM+B,GAA8B,GAGtE,IACIC,EADAE,EAA+BT,IAA4BxB,EAAUE,GAAmC,KAAQ,EAAKrlB,KAAK+lB,IAAI,GAAMZ,EAAUE,GAAmC,IAAO,GAAKS,IA8DjM,OA1DIoB,EADAE,GAA+B,GAA4B,KAAvBR,EACT,GAEAxE,EAAQgF,GAA8B,GAwD9D,CACH3G,OAAQ,GAERJ,iCAAkCA,EAClCF,gCAvDA0G,EAA4B,EAExBA,IAA8BL,EACHQ,EACpBH,IAA8BD,EACVM,EAEA,GAGJ,GA8C3BrF,iBAxCa,MAAbuE,GAAsC,IAAlBN,GAAuBA,GAAiB,EACxC,GAEAA,EAsCpB5F,iBAhCa,MAAbkG,EACO,iCAEA,GA8BPiB,yBAxBa,MAAbjB,EACO,6BAEA,GAsBPkB,wBAhBa,MAAblB,EAC4B,GAArBP,EAEA,GAcP/D,gBAAiBA,EAEjB+C,OAAQ/U,EAEhB,CAAE,MAAOna,GAGL,MAAO,CACH8qB,OAAQ,CACJ,CACI7uB,UAAW,KACX6H,aAAc,GAAK9D,IAInC,CACJ,C,OCzqDO,SAASkzB,EAAkB1kB,GAC9B,IAAAjB,EAA4BC,mBAAS,QAAOC,EAAAC,IAAAH,EAAA,GAArC4lB,EAAM1lB,EAAA,GAAE2lB,EAAS3lB,EAAA,GAkBxB,OACIa,IAAAqB,cAAA,WAAS1M,GAAG,eACRqL,IAAAqB,cAAA,OAAKC,UAAW,iBAA8B,SAAXujB,EAAoB,GAAK,SACxD7kB,IAAAqB,cAACiiB,EAAwByB,IAAA,GAAK7kB,EAAM8kB,WAAU,CAAE9oB,eAAgBgE,EAAMhE,eAAgBunB,WAXlG,SAAsBxiB,GAGP,aAARA,GACC6jB,EAAU,WAElB,EAK4HhH,WAAY5d,EAAM5O,eAEtI0O,IAAAqB,cAAA,OAAKC,UAAW,qBAAkC,aAAXujB,EAAwB,GAAK,SAChE7kB,IAAAqB,cAAC8iB,EAAuBY,IAAA,GAAK7kB,EAAM8kB,WAAU,CAAE9oB,eAAgBgE,EAAMhE,eAAgBunB,WAtBjG,SAAqBxiB,GAGN,SAARA,GACC6jB,EAAU,OAElB,EAgB0HhH,WAAY5d,EAAM5O,eAIhJ,C,+CC/BMzK,GAAYJ,IAAOI,UAEZo+B,GAAcjlB,IAAMC,MAAK,SAACC,GACrC,OACEF,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,WAAS1M,GAAG,eACVqL,IAAAqB,cAAA,KACE6N,KAAMroB,GAAUq+B,KAChB5jB,UAAU,uBACV8B,MAAM,eACN+hB,IAAI,YACL,YAGDnlB,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,KACE6N,KAAMroB,GAAUC,OAChBs+B,KAAK,uBACLhiB,MAAM,qBACN+hB,IAAI,YACL,kBAGDnlB,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,KAAGC,UAAU,gBAAgBpB,EAAMmlB,gBAI3C,GAAGC,IAEH,SAASA,GAAS5hB,EAAWC,GAC3B,OAAOD,EAAU2hB,gBAAkB1hB,EAAU0hB,aAC/C,C,4OC7BA,IAAMvlB,GAAiBrZ,IAAOqZ,eACxBkT,GAAsBvsB,IAAOusB,oBAEtBuS,GAAevlB,IAAMC,MAAK,SAACC,GACtC,IAAIC,E,mWAActC,CAAA,GAAQqC,EAAMC,gBACM,IAAlCA,EAAerD,kBACjBqD,EAAerD,gBAAkB,MAEnC,IAAAmC,EAAsCC,mBAAS,IAAGC,EAAAC,IAAAH,EAAA,GAA3CumB,EAAWrmB,EAAA,GAAEsmB,EAActmB,EAAA,GAE5BumB,EAASz0B,YAA2B,EAArBu0B,EAAYtiC,QAAY,WAC3CyiC,YACF,IAEMC,EAAc,SAACnzB,EAAMozB,GAkEzB,OAhEEpzB,EADEozB,EACKpzB,EAAK0G,KAAI,SAAClT,EAAUyJ,GACzB,OACEsQ,IAAAqB,cAAA,OACEC,UAAU,eACVzb,IAAG,GAAA8B,OAAKk+B,EAAqB5/B,EAASqa,YAEtCN,IAAAqB,cAAA,OAAKC,UAAWukB,GACd7lB,IAAAqB,cAAA,OACAC,UAAU,cACR3M,GAAE,GAAAhN,OAAKk+B,EAAqB5/B,EAASqa,WACrCoB,IAAK5B,GAAiB7Z,EAASqa,UAC/BolB,OAAQA,EACRrS,QAAS,SAAFhnB,GAAyB,IAApBinB,EAAajnB,EAAbinB,cACVA,EAAcC,QAAU,KACxBD,EAAc5R,IAAMsR,GACpBM,EAAcwS,aAAa,OAAQ,QACnCJ,GACF,EACA/jB,IAAG,GAAAha,OAAKuY,EAAMhM,aAAY,KAAAvM,OAAI+H,EAAQ,GACtC4I,QAAQ,OACR,YAAU,aACV,YAAU,UACV,YAAU,UACV,YAAU,QACV,YAAW6H,EAAe7O,aAE5B0O,IAAAqB,cAAA,OAAK2c,MAAM,cAInB,IAEOvrB,EAAK0G,KAAI,SAAClT,EAAUyJ,GACzB,OACEsQ,IAAAqB,cAAA,OACEC,UAAU,eACVzb,IAAG,GAAA8B,OAAKk+B,EAAqB5/B,EAASqa,YAGtCN,IAAAqB,cAAA,OACEC,UAAU,cACV3M,GAAE,GAAAhN,OAAKk+B,EAAqB5/B,EAASqa,WACrCoB,IAAK5B,GAAiB7Z,EAASqa,UAC/BolB,OAAQA,EACRrS,QAAS,SAAFnlB,GAAyB,IAApBolB,EAAaplB,EAAbolB,cACVA,EAAcC,QAAU,KACxBD,EAAc5R,IAAMsR,GACpBM,EAAcwS,aAAa,OAAQ,QACnCJ,GACF,EACA/jB,IAAG,GAAAha,OAAKuY,EAAMhM,aAAY,KAAAvM,OAAI+H,EAAQ,GACtC4I,QAAQ,OACR,YAAU,aACV,YAAU,UACV,YAAU,UACV,YAAU,QACV,YAAW6H,EAAe7O,aAE5B0O,IAAAqB,cAAA,OAAK2c,MAAM,aAIjB,GAGJ,EAEAze,qBAAU,WAEN,IAAIwmB,EADF7lB,EAAMzN,MAAQyN,EAAMzN,KAAKvP,OAAS,IAIlC6iC,EADE95B,cACW,CAAC,eAAgB,cAEjB,CAAC,WAAY,UAG5Bw5B,EACEvlB,EAAMzN,KACHxK,QAAO,SAAU4Y,GAChB,OAAgD,IAAzCklB,EAAWr+B,QAAQmZ,EAAMjD,UAClC,IACCkH,MAAK,SAAUvV,EAAGC,GACjB,OAAID,EAAEqO,UAAYpO,EAAEoO,WAAarO,EAAE+Q,UAAY9Q,EAAE8Q,WACvC,EACC/Q,EAAEqO,UAAYpO,EAAEoO,WAAarO,EAAE+Q,UAAY9Q,EAAE8Q,UAC/C,EAEA,CAEX,KAGR,GAAG,CAACJ,EAAMzN,OAGV,IAAAggB,EAaIC,YAA2BvS,GAZZsS,EAAjBE,kBACYF,EAAZG,aACQH,EAAR1qB,SACY0qB,EAAZve,aACGue,EAAHnF,IACcmF,EAAdvV,eACKuV,EAALlF,MACQkF,EAARI,SACWJ,EAAXK,YACgBL,EAAhBM,iBACgBN,EAAhBzV,iBACSyV,EAAT1F,UAGF,OAAIyY,EAAYtiC,OAAS,EAErB8c,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,eACErB,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBAAkBskB,EAAYJ,EAAa,KAE1DxlB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OAAKC,UAAU,0BACbtB,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,QAAMC,UAAU,aAAY,KAC5BtB,IAAAqB,cAAA,YAAM,KACNrB,IAAAqB,cAAA,QAAMC,UAAU,WAAWkkB,EAAYtiC,aAMjD8c,IAAAqB,cAAA,OAAK1M,GAAG,gBAAgB2M,UAAU,oBAChCtB,IAAAqB,cAAA,OAAKC,UAAU,eACftB,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,UAAI,oBACJrB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,uBAC9BtB,IAAAqB,cAAA,OACEK,IAAI,0EACJC,IAAI,YAIV3B,IAAAqB,cAAA,OAAKC,UAAU,UACbtB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OACEgC,MAAO,CACL,4BAA6B,OAC7B,4BAA6B,QAE/B/B,UAAU,0CAEVtB,IAAAqB,cAAA,OAAKC,UAAU,iBAAiB,YAAU,QAAQ,YAAU,cAAc,YAAU,UAAU,YAAU,SAAS,YAAWnB,EAAe7O,YACxIs0B,EAAYJ,EAAa,0BAE5BxlB,IAAAqB,cAAA,OACEC,UAAU,qBACV,YAAU,QACV,YAAU,cACV,YAAU,UACV,YAAU,QACV,YAAWnB,EAAe7O,aAE5B0O,IAAAqB,cAAA,OACEC,UAAU,qBACV,YAAU,QACV,YAAU,cACV,YAAU,UACV,YAAU,QACV,YAAWnB,EAAe7O,aAE5B0O,IAAAqB,cAAA,OAAKC,UAAU,8BACbtB,IAAAqB,cAAA,YAAOlB,EAAeklB,eACtBrlB,IAAAqB,cAAA,OAAKC,UAAU,cAQrBtB,IAAAqB,cAACiC,KAAW,CACVnD,eAAgBA,EAChBoD,iBAAkBrD,EAAMqD,uBAkH7BvD,IAAAqB,cAAArB,IAAAwB,SAAA,KAEX,GAAGwkB,IAEH,SAASA,GAAoBtiB,EAAWC,GAAW,IAAAsiB,EAAAC,EACjD,OAAkB,QAAdD,EAAAviB,EAAUjR,YAAI,IAAAwzB,OAAA,EAAdA,EAAgB/iC,WAAyB,QAAnBgjC,EAAKviB,EAAUlR,YAAI,IAAAyzB,OAAA,EAAdA,EAAgBhjC,OAIjD,C,aC3TM2D,GAAYJ,IAAOI,UAEZs/B,GAAiBnmB,IAAMC,MAAK,SAACE,GACxC,OACEH,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,UAAKlB,EAAeklB,eACpBrlB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,SAAG,QACKlB,EAAenD,iBAAkB,IACtCmD,EAAeimB,cACdpmB,IAAAqB,cAAA,QAAMC,UAAU,SAAO,UAAA3Z,OAAYwY,EAAeimB,aAAY,OAGlEpmB,IAAAqB,cAAA,QAAMC,UAAU,aAChBtB,IAAAqB,cAAA,QACEC,UAAWgJ,IAAW,CAAC,YAAa,CAAE,SAAUnK,EAAekmB,YAAc,QAE7ErmB,IAAAqB,cAAA,KAAGC,UAAU,6BACbtB,IAAAqB,cAAA,SAAG,UAAQ5X,YAAU0W,EAAekmB,YAAa,GAAG,aAI1DrmB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAACilB,GAAoB,CAACC,OAAQpmB,EAAe7O,aAC7C0O,IAAAqB,cAACmlB,GAAQ,MACTxmB,IAAAqB,cAAColB,GAAatmB,IAEhBH,IAAAqB,cAACqlB,KAA0BvmB,MAMvC,GAAGmlB,IAEGmB,GAAW,SAACtmB,GAChB,OACEH,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KACE6N,KAAMroB,GAAU8/B,YAAYj+B,QAAQ,aAAcyX,EAAe7O,YACjEga,OAAO,SACPhK,UAAU,aACV,YAAU,aAAa,YAAU,UAAU,YAAU,SAAS,YAAU,UAExEtB,IAAAqB,cAAA,KAAGC,UAAU,8BAEftB,IAAAqB,cAAA,SAAG,SAGT,EAEMmlB,GAAW,SAACrmB,GAChB,OACEH,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,UAAQT,KAAK,SAAS9b,KAAK,QAAQwc,UAAU,gCAAgC3M,GAAG,cAE9EqL,IAAAqB,cAAA,KAAGC,UAAU,2BACb,YAAU,aAAa,YAAU,YAAY,YAAU,eAAe,YAAU,YAGlFtB,IAAAqB,cAAA,UACET,KAAK,SACL9b,KAAK,QACLwc,UAAU,gCACV,iBAAe,YACf,iBAAe,oBACf,gBAAc,mBAEdtB,IAAAqB,cAAA,KAAGC,UAAU,8BAEftB,IAAAqB,cAAA,SAAG,QACHrB,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,SACET,KAAK,OACLuR,aAAa,GACb7Q,UAAU,aACV3M,GAAG,aACH,iBAAe,UACf,oBAAkB,MAClByO,MAAM,mBACN,uBAAqB,mBAEvBpD,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,KAAGC,UAAU,sDACbtB,IAAAqB,cAAA,KACEC,UAAU,0DACV+B,MAAO,CAAE5G,QAAS,YAIxBuD,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAASkI,WACT9Q,UAAU,kEACV,YAAU,QAAQ,YAAU,IAAI,YAAU,eAAe,YAAU,UAEnEtB,IAAAqB,cAAA,KAAGC,UAAU,gCAEftB,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAASmI,QACT/Q,UAAU,qEACV,YAAU,QAAQ,YAAU,WAAW,YAAU,eAAe,YAAU,UAE1EtB,IAAAqB,cAAA,KAAGC,UAAU,iCAEftB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASoI,QAAShR,UAAU,+DACzD,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAU,UACpEtB,IAAAqB,cAAA,KAAGC,UAAU,6BAEftB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASqI,UAAWjR,UAAU,mDAC3D,YAAU,QAAQ,YAAU,OAAO,YAAU,eAAe,YAAU,UACpEtB,IAAAqB,cAAA,KAAGC,UAAU,gCAMzB,EAEMglB,GAAuB,SAAHj6B,GAAmB,IAAbk6B,EAAMl6B,EAANk6B,OACxBzI,EAAayI,GAAkB,GACrCtnB,EAAoCC,oBAAS,GAAMC,EAAAC,IAAAH,EAAA,GAA5C2nB,EAAUznB,EAAA,GAAE0nB,EAAa1nB,EAAA,GAyBhC,OAJAD,oBAAS,WACP2nB,EAV4B,WAC5B,GAAI/I,EAGF,OAFyBjtB,YAAU,qBAAuB,IACpB/I,MAAM,KACxB2J,SAASqsB,EAAWtpB,WAE5C,CAIgBsyB,GAChB,GAAG,CAAChJ,IAGF9d,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,UACET,KAAK,SACL9b,KAAK,OACLwc,UAAWgJ,IAAW,CAAC,CAAE2J,OAAQ2S,GAAc,4BAC/C1c,QA9Ba,WACf0c,EACF5xB,2BAA2B8oB,GAE3BppB,sBAAsBopB,GAExB+I,GAAeD,EACjB,GAyBQ5mB,IAAAqB,cAAA,KACE,YAAU,QAAQ,YAAU,WAAW,YAAU,SAAS,YAAU,SAAS,YAAWyc,EACxFxc,UAAWgJ,IAAW,CACpB,CAAE,0BAA2Bsc,GAC7B,CAAE,oBAAqBA,GACvB,cAIN5mB,IAAAqB,cAAA,SAAG,SACHrB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,kBAChCtB,IAAAqB,cAAA,YAAM,qDAKhB,EAEA,SAASikB,GAAS5hB,EAAWC,GAC3B,OAAOD,EAAU2hB,gBAAkB1hB,EAAU0hB,aAC/C,C,+BCtLMrS,IAFYvsB,IAAOI,UACFJ,IAAOqZ,eACFrZ,IAAOusB,qBAC7BjsB,GAAIX,OAAOW,EAEXggC,GAAiB,CACrBC,MAAO,OACPC,OAAQ,QAGJC,GAAO,SAAChnB,GACZ,IAAKA,EAAMinB,sBAET,OAAOnnB,IAAAqB,cAAArB,IAAAwB,SAAA,MAKT,IAAQ4lB,EAAaC,aAAe,CAClCC,iBAAkB7gC,IAAO6gC,mBADnBF,SAIRnoB,EAA4BC,mBAAS,CACnCqoB,IAAK9+B,WAAWyX,EAAMoO,UACtBkZ,IAAK/+B,WAAWyX,EAAMqO,cACtBpP,EAAAC,IAAAH,EAAA,GAHKwoB,EAAMtoB,EAAA,GAKbuoB,GALwBvoB,EAAA,GAKFa,IAAMd,SAAS,OAAKyoB,EAAAvoB,IAAAsoB,EAAA,GAA9BE,GAAFD,EAAA,GAAQA,EAAA,IAElBE,EAA8B7nB,IAAMd,SAAS,CAC3ChQ,IAAK,sEACLmZ,KAAM,CAAE4e,OAAQ,MAAOD,MAAO,OAC9Bc,WAAY,CAAEb,OAAQ,MAAOD,MAAO,OACpCe,OAAQ,CAAE7/B,EAAG,EAAG8/B,EAAG,SACnBC,EAAA7oB,IAAAyoB,EAAA,GALKK,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAO1BG,EAAsBpoB,IAAMd,SAAS,CACnChQ,IAAK,wEACLmZ,KAAM,CAAE4e,OAAQ,MAAOD,MAAO,IAC9Bc,WAAY,CAAEb,OAAQ,MAAOD,MAAO,IACpCe,OAAQ,CAAE7/B,EAAG,EAAG8/B,EAAG,MACnBK,EAAAjpB,IAAAgpB,EAAA,GALKE,EAAGD,EAAA,GAAEE,EAAMF,EAAA,GAOlBnf,EAAwChK,mBAAS,MAAKiK,EAAA/J,IAAA8J,EAAA,GAA/Csf,EAAYrf,EAAA,GAAEsf,EAAetf,EAAA,GAE9Buf,EAAqB,SAACC,GAEtBA,IAAWH,GAGfC,EAAgBE,EAClB,EA+BMjD,EAAS1lB,IAAM4oB,aACnB,SAAkBzvB,GAMhB,IAAM+uB,EAAU,CACdh5B,IAAK,sEACLmZ,KAAM,IAAIwgB,OAAOC,KAAKC,KAAK,MAAO,OAClCjB,WAAY,IAAIe,OAAOC,KAAKC,KAAK,MAAO,OACxChB,OAAQ,IAAIc,OAAOC,KAAKE,MAAM,EAAG,QAE7BV,EAAM,CACVp5B,IAAK,wEACLmZ,KAAM,IAAIwgB,OAAOC,KAAKC,KAAK,MAAO,IAClCjB,WAAY,IAAIe,OAAOC,KAAKC,KAAK,MAAO,IACxChB,OAAQ,IAAIc,OAAOC,KAAKE,MAAM,EAAG,KAGnCb,EAAWD,GACXK,EAAOD,GAEP,IAAIW,EAAaliC,GAAE,iFAADY,OAEAugC,EAAQh5B,IAAG,wKAAAvH,OAIX2gC,EAAIp5B,IAAG,oHAIzBiK,EAAI+vB,SAASL,OAAOC,KAAKK,gBAAgBC,aAAa5lC,KAAKylC,EAAW,IACtEP,EAAmBxoB,EAAM5O,YACzBs2B,EAAOzuB,EACT,GACA,CAAC+G,EAAMinB,wBAmBT,OAAKC,EAGHpnB,IAAAqB,cAACgoB,KAAS,CACRC,kBAAmBvC,GACnBlkB,KAAM,GACN4kB,OAAQA,EACR/B,OAAQA,EACRxb,QAAS,WAAF,OAAQue,EAAgB,KAAK,GAEpCzoB,IAAAqB,cAACkoB,KAAM,CACL1jC,IAAKqa,EAAM5O,WACXk4B,SAAU,CACRjC,IAAK9+B,WAAWyX,EAAMoO,UACtBkZ,IAAK/+B,WAAWyX,EAAMqO,aAExBrE,QAAS,WAAF,OAAQwe,EAAmBxoB,EAAM5O,WAAW,EACnDgf,KAAM4X,GAELM,IAAiBtoB,EAAM5O,WACtB0O,IAAAqB,cAACooB,KAAU,CAACC,aAAc,WAAF,OAAQjB,EAAgB,KAAK,GACnDzoB,IAAAqB,cAACsoB,GAAqBzpB,IAEtB,MAxGW,SAACA,GACpB,OAAIA,EAAMinB,sBACDjnB,EAAMinB,sBAAsBhuB,KAAI,SAACC,EAAM1J,GAC5C,OACEsQ,IAAAqB,cAACkoB,KAAM,CACL1jC,IAAKuT,EAAK9H,WACVk4B,SAAU,CACRjC,IAAK9+B,WAAW2Q,EAAKkV,UACrBkZ,IAAK/+B,WAAW2Q,EAAKmV,aAEvBrE,QAAS,WAAF,OAAQwe,EAAmBtvB,EAAK9H,WAAW,EAClDgf,KAAMgY,GAELE,IAAiBpvB,EAAK9H,WACrB0O,IAAAqB,cAACooB,KAAU,CAACC,aAAc,WAAF,OAAQjB,EAAgB,KAAK,GACnDzoB,IAAAqB,cAACsoB,GAAqBvwB,IAEtB,KAGV,IAEK4G,IAAAqB,cAAArB,IAAAwB,SAAA,KACT,CAmFKooB,CAAa1pB,IAzBIF,IAAAqB,cAAArB,IAAAwB,SAAA,KA4BxB,EAGaqoB,GAAc7pB,IAAMC,KAAKinB,GAAM4C,IAE5C,SAASA,GAA8BpmB,EAAWC,GAAW,IAAAomB,EAAAC,EAC3D,OACiC,QAA/BD,EAAArmB,EAAUyjB,6BAAqB,IAAA4C,OAAA,EAA/BA,EAAiC7mC,WACF,QADQ8mC,EACvCrmB,EAAUwjB,6BAAqB,IAAA6C,OAAA,EAA/BA,EAAiC9mC,OAKrC,CAEA,IAAMymC,GAAmB,SAAC1jC,GACxB,IAAAwsB,EAYIC,YAA2BzsB,GAX7B0sB,EAAiBF,EAAjBE,kBACAC,EAAYH,EAAZG,aACA7qB,EAAQ0qB,EAAR1qB,SACAmM,EAAYue,EAAZve,aACAoZ,EAAGmF,EAAHnF,IACApQ,EAAcuV,EAAdvV,eACAqQ,EAAKkF,EAALlF,MACQkF,EAARI,SACWJ,EAAXK,YACgBL,EAAhBM,iBACgBN,EAAhBzV,iBAGF,OACEgD,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,sCACV,aAAW,SAEXtB,IAAAqB,cAAA,OAAKK,IAAI,8EAGb1B,IAAAqB,cAAA,OAAK1M,GAAG,sBACNqL,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OACEK,IAAKkR,EACLS,QAAS,SAAFhnB,GAAyB,IAApBinB,EAAajnB,EAAbinB,cACVA,EAAcC,QAAU,KACxBD,EAAc5R,IAAMsR,EACtB,EACArR,IAAI,QACJrJ,QAAQ,UAGZ0H,IAAAqB,cAAA,OAAKC,UAAU,uBACbtB,IAAAqB,cAAA,KAAG6N,KAAMyD,GACP3S,IAAAqB,cAAA,MAAIC,UAAU,eAAepN,IAE9BnM,GACCiY,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACbtB,IAAAqB,cAAA,SAAItZ,IAGRiY,IAAAqB,cAAA,OAAKC,UAAU,mBACZgM,EACDtN,IAAAqB,cAAA,WACGnE,EACAqQ,MAcTvN,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,KACE6N,UAAM,EACNhF,QAAS,SAACxY,GAAC,OAgBvB,SAA6B4c,EAAUC,GAChCriB,UAAU+9B,aACb7jC,OAAO8V,eAAe,sDAGxBhQ,UAAU+9B,YAAYC,oBACpB,SAAUV,GACR,IAEIt6B,EACF,iDAHas6B,EAASW,OAAOC,SAK7B,IAJcZ,EAASW,OAAOE,UAM9B,gBACA/b,EACA,IACAC,EACA,sBAMFnoB,OAAOkkC,KAAKp7B,EAAK,SAGnB,IACA,SAAUq7B,GACR,IAAIC,EAGFA,EADe,IAAbD,EAAI1zB,KAEJ,yEAEa,wCAGjBzQ,OAAO8V,eAAesuB,EACxB,GAEJ,CAxDcC,CAAoBxkC,EAASqoB,SAAUroB,EAASsoB,WAAW,EAE7D,YAAU,aACV,YAAU,YACV,YAAU,SACV,YAAU,UACX,iBAOX,E,+NC9MA,IAAMmc,GAAQte,cAIRrlB,IAFiBN,IAAOqZ,eACFrZ,IAAOusB,oBACzB5sB,OAAOW,GAEXF,GAAYJ,IAAOI,UACnB8jC,GAAalkC,IAAOkkC,WACpBC,GAAgBnkC,IAAOmkC,cACvBC,GAAmBpkC,IAAOokC,iBAE1BC,GAAkB3nC,OAAO4nC,OAAO,CACpCC,iBAAkB,yCAClBC,WAAY,UACZC,WACE,yGAGJ,SAASj4B,GAAgBC,GACvB,IAAIC,EAAgBD,EAAIpL,MAAM,KAC1BsL,EAAYD,EAAc,GAAGrL,MAAM,KACnCuL,EAAYF,EAAc,GAAGrL,MAAM,KAEvC,OAAO,IAAIyI,MACR6C,EAAU,IACVA,EAAU,GAAK,GACfA,EAAU,IACVC,EAAU,IACVA,EAAU,IACVA,EAAU,GAEf,CAEA,IAAM83B,GAAqB,CACzB,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aAEIC,GAAc,CAClB,CACEn4B,GAAgB,uBAChBA,GAAgB,wBAElB,CACEA,GAAgB,uBAChBA,GAAgB,yBAIdo4B,GAAqB,SAACvN,GAC1B,IAA+C,GAA3CqN,GAAmBzjC,QAAQo2B,GAAmB,CAChD,IAAIhrB,EAAO,IAAIvC,KACXxM,EAAS,KAMb,GALAqnC,GAAYr4B,MAAK,SAACC,GAChB,OAAOF,GAAQE,EAAM,IAAMF,EAAOE,EAAM,KAClCjP,EAASiP,GAAQ,EAEzB,IACIjP,EACF,OAAOA,CAEX,CACA,OAAO,CACT,EAiLA,IAAMunC,GAAa,WAAM,IAAAC,EACvBC,EACEC,aAAY,SAAChzB,GAAK,MAAK,CACrBA,EAAMxS,SAASka,eACf1H,EAAMxS,SAASka,eAAeurB,KAC9BjzB,EAAMxS,SAAS++B,WACfvsB,EAAMxS,SAAS0lC,eACflzB,EAAMxS,SAASsD,aAChB,IAACqiC,EAAAxsB,IAAAosB,EAAA,GAPGrrB,EAAcyrB,EAAA,GAAEjY,EAAMiY,EAAA,GAAE5G,EAAU4G,EAAA,GAAED,EAAcC,EAAA,GASnDC,GATiED,EAAA,GAS5C34B,GAAgB,wBACrC64B,EAAmB74B,GAAgB,uBAEzCiW,EAA8ChK,oBAAS,GAAKiK,EAAA/J,IAAA8J,EAAA,GAArD6iB,EAAe5iB,EAAA,GAAE6iB,EAAkB7iB,EAAA,GAC1CE,EAAoDnK,oBAAS,GAAKoK,EAAAlK,IAAAiK,EAAA,GAA3D4iB,EAAkB3iB,EAAA,GAEzBE,GAFgDF,EAAA,GAEdpK,oBAAS,IAAMuK,EAAArK,IAAAoK,EAAA,GAA/B0iB,GAAFziB,EAAA,GAAcA,EAAA,IAE9BlK,qBAAU,WACR,IAAI4sB,EAAc,IAAI57B,KAElB47B,GAAeN,GAAsBM,EAAcL,GACrDE,GAAmB,EAGvB,GAAG,IAEHzsB,qBAAU,WACJY,EAAe7O,YACjB46B,EAAab,GAAmBlrB,EAAe7O,YAEnD,GAAG,CAAC6O,EAAe7O,aAEnB,IAAA86B,EAA8CltB,oBAAS,GAAMmtB,EAAAjtB,IAAAgtB,EAAA,GAAtDE,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GAC1CG,EAA8CttB,oBAAS,GAAMutB,EAAArtB,IAAAotB,EAAA,GAAtDE,EAAeD,EAAA,GAAEE,EAAkBF,EAAA,GAC1CG,EAAkC1tB,mBAAS,CAAC,GAAE2tB,EAAAztB,IAAAwtB,EAAA,GAAvCE,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAE9BG,EAA0C9tB,oBAAS,GAAM+tB,EAAA7tB,IAAA4tB,EAAA,GAEnDE,IAFcD,EAAA,GAAkBA,EAAA,GAEjBjtB,IAAM6J,aAErBxX,GAAWskB,cACjBwW,GAA6BC,cAAYC,GAAAjuB,IAAA+tB,GAAA,GAAlCG,GAAOD,GAAA,GAAEl9B,GAASk9B,GAAA,GAErBE,GAAiB,CACnB5f,YAAa,GACbuD,YAAa,GACbC,WAAY,GACZC,QAAS,GACTnU,UAAW,GACXoU,MAAO,GACPC,OAAQ,GACRE,WAAY,GACZlU,WAAY,GACZC,aAAc,GACdxV,SAAU,GACV+C,iBAAkB,GAClB0S,QAAS,GACTC,SAAU,GACVL,UAAW,GACXF,eAAgB,GAChBC,YAAa,GACb+P,cAAe,GACfiB,gBAAiB,GACjBnR,iBAAkB,GAClB1L,WAAY,GACZ9F,KAAM,GACND,UAAW,GACXF,YAAa,GACbyR,gBAAiB,GACjB0wB,QAAS,GACTnH,YAAa,GACbqF,KAAM,GACN1e,MAAO,GACP4E,cAAe,IAGjB,SAAS6b,GAASloC,GAChB,OAAOA,GAAmB,MAAVA,EAAgBA,EAAQ,EAC1C,CAEA,SAASge,KACFwoB,GAILr9B,cACAg/B,MAJEC,IAWJ,CAEA,SAASA,KACP,IAAIhpC,EAAIipC,KAAO9B,GAAkB+B,OAAO,MAIxC3xB,GAHuB,8HAAHvU,OAAiIhD,EAAEm/B,OACrJ,OACD,2BAEH,CAEA,SAAS4J,KACP,GAAIvtB,EAAe7O,WAAY,CAC7B,IAAMw8B,EAASr5B,YAAwB,UAEjCrN,E,mWAAWyW,CAAA,CACfkwB,OAAQ5tB,EAAe7O,WACvB0L,iBAAkBmD,EAAenD,iBACjClS,iBAAkBqV,EAAerV,kBAC7BgjC,GAAU,CAAEA,OAAQA,IAGpBx5B,EAAcD,YAAejN,GAE7B4mC,EAAe,GAAHrmC,OAAMd,GAAUonC,OAAKtmC,OAAG2M,GAE1ClO,OAAOkkC,KAAK0D,EAAc,QAO5B,CAGF,CAEA,SAASE,KACPnnC,GAAE,uBAAuByV,IAAI,CAC3BC,QAAS,IAEb,CAQA,SAAS0xB,GAA0B9d,EAAU+d,GAC3C,OAAOA,EAAUnmC,QAAO,SAACC,GAAC,OAAKA,EAAEmmC,YAAche,CAAQ,GACzD,CA4BA,SAASie,GAAmBhnC,EAAO/B,GACjC,IAAIiQ,EAAe,GACnB,OAAQlO,GACN,IAAK,WACH,IAAMinC,EAAQ,IACVC,EAAY/lC,WAAWlD,EAAMmD,QAAQ,KAAM,KAG7CnD,GAFFipC,EAAYA,EAAYD,EAAQA,EAAQC,IACT,IAAdA,EACPA,EAAUC,iBAEV,GAEV,MACF,IAAK,eAEHlpC,GADAA,EAAQA,EAAMmD,QAAQoiC,GAAgBG,WAAY,KACpC3kC,MAAM,EAAG,IACvB,MACF,IAAK,QACL,IAAK,eAEHf,GADAA,EAAQA,EAAMmD,QAAQoiC,GAAgBG,WAAY,KACpC3kC,MAAM,EAAG,IACvB,MAEF,IAAK,gBACL,IAAK,WACHkP,EAAe0gB,EAA0ByV,EAAgBrkC,EAAO/B,GAMpE8M,GAASq8B,YAAwB,CAAEpnC,QAAO/B,QAAOiQ,iBACnD,CAEA,SAASm5B,GAAarnC,EAAO/B,GAG3B,IAAMiQ,EAAe0gB,EACnByV,EACArkC,EACA/B,GAIF,GADA8M,GAASq8B,YAAwB,CAAEpnC,QAAO/B,QAAOiQ,mBAC5CA,GAAgBjQ,GAA2C,OAAlComC,EAAeiD,SAASrpC,MAAgB,CACpE,IAAIs3B,EAAgB,CAAC,QAAS,eAAgB,SAOxCptB,GANNotB,EAAgBA,EAAc50B,QAAO,SAACC,GAAC,OAAKA,IAAMZ,CAAK,KACvB6R,KAAI,SAAC7R,GAGnC,OADEqkC,EAAerkC,GAAO/B,QAAUomC,EAAerkC,GAAOkO,YAE1D,IACwBonB,OAAM,SAACh4B,GAAC,OAAKA,CAAC,IAEtC2nC,EAAmB98B,EACrB,CACF,CAEA,SAASo/B,KACF5C,EA+XP,WACE,IAAIpP,EAAgB,CAAC,QAAS,eAAgB,SAE1CiS,EAAkB,CAAC,eAAgB,cAAe,cAGpDjS,EADoC,OAAlC8O,EAAeiD,SAASrpC,MACVs3B,EAAcl1B,OAAOmnC,GAErBjS,EAAcl1B,OAAO,CAAC,gBAgBxC,GAbkBk1B,EAAc1jB,KAAI,SAAC7R,GACnC,IAAMkO,EAAe0gB,EACnByV,EACArkC,EACAqkC,EAAerkC,GAAO/B,OAIxB,OAFA8M,GAAS08B,YAAuB,CAAEznC,QAAOkO,kBACT,KAAjBA,CAEjB,IAEwBonB,OAAM,SAACh4B,GAAC,OAAKA,CAAC,IAGpC,OAAO,EAET,OAAO,CACT,CAvZOoqC,KAIL5oC,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,iBACPC,aAAc,YACd3F,SAAU,kCACV4F,YAAatC,IAGfp+B,cAwBD,WAEuB,OAAA2gC,GAAAxrC,MAAC,KAADmK,UAAA,CAzBtBshC,GAAYliC,MAAK,WAAM,IAAAmiC,EAErB7gC,cACoB,QAApB6gC,EAAArC,GAAanjB,eAAO,IAAAwlB,GAApBA,EAAsBC,OACxB,KAnBE7B,IAoBJ,CAoBwB,SAAA0B,KA8KvB,OA9KuBA,GAAA/iC,IAAAC,IAAAC,MAAxB,SAAAC,IAAA,IAAAM,EAAA0iC,EAAAv5B,EAAAw5B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA7jC,IAAAI,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAIkC,OAH5BC,EAAa,CAAC,EAACH,EAAAC,KAAA,EAGG,QAApB4iC,EAAAvC,GAAanjB,eAAO,IAAA0lB,GAApBA,EAAsBD,QAAQ5iC,EAAAE,KAAA,EACVogC,GAAanjB,QAAQsmB,eAAc,OAAjDn6B,EAAKtJ,EAAA4B,KACXzB,EAAWujC,eAAiBp6B,EAAMtJ,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAA2jC,GAAA3jC,EAAA,iBAyEnC,OAlEG8iC,EAAW/D,EAAeiD,SAASrpC,MACnCoqC,EAAWhE,EAAe6E,aAAajrC,MACvCqqC,EAAe7oC,GAAE,iBAAiBiF,OAAS,UAC3C6jC,EAAa9oC,GAAE,eAAeiF,OAAS,UACvC8jC,EAAa/oC,GAAE,eAAeiF,OAAS,UACvC+jC,EAAchpC,GAAE,gBAAgBiF,OAAS,UACzCgkC,EAAWjpC,GAAE,aAAaiF,OAAS,UACnCikC,EAAelpC,GAAE,iBAAiBiF,OAAS,UAC3CkkC,EACFjhC,YAAe7I,OAAO2B,SAASmnB,OAC9B/O,EAAe7O,WAAa,IAAM6O,EAAe7O,WAAa,IAIhD,WAAbo+B,GACEU,EAAiBzE,EAAe8E,YAAYlrC,MAEhD4qC,EAAc/jC,YAAiB,CAC7Be,QAAS,4BACTT,OAAQk+B,GACR79B,WAAY,CACVmJ,MAAOnJ,EAAWujC,eAClBI,QAAStqC,OAAsB,cAAE,CAC/BuqC,QAAShF,EAAe/1B,MAAMrQ,MAC9BqrC,QAASjF,EAAe71B,MAAMvQ,MAC9BsrC,QAAST,EACTU,QAASnF,EAAe6E,aAAajrC,MACrCwrC,QAASnB,EACToB,QAASnB,EACToB,QAASnB,EACToB,QAASnB,EACToB,QAASnB,EACToB,QAASnB,EACToB,QAASlxB,EAAe7O,WACxBggC,QAASpB,EACTqB,QAASpxB,EAAeqxB,WACxBC,QAAStxB,EAAe6N,yBAK9BmiB,EAAc/jC,YAAiB,CAC7Be,QAAS,4BACTT,OAAQk+B,GACR79B,WAAY,CACVmJ,MAAOnJ,EAAWujC,eAClBI,QAAStqC,OAAsB,cAAE,CAC/BuqC,QAAShF,EAAe+F,aAAansC,MACrCqrC,QAASjF,EAAegG,YAAYpsC,MACpCsrC,QAASlF,EAAeiG,WAAWrsC,MACnCurC,QAASnF,EAAe/1B,MAAMrQ,MAC9BwrC,QAASpF,EAAe71B,MAAMvQ,MAC9ByrC,QAASrF,EAAe6E,aAAajrC,MACrC0rC,QAASrB,EACTsB,QAASrB,EACTsB,QAASrB,EACTsB,QAASrB,EACTsB,QAASrB,EACTsB,QAASrB,EACTsB,QAASpxB,EAAe7O,WACxBmgC,QAASvB,EACT2B,QAAS1xB,EAAeqxB,WACxBM,QAAS3xB,EAAe6N,wBAI/BphB,EAAAI,OAAA,SAEMmjC,EAAY/iC,MACjB,SAAU1K,GACJA,EAAKqvC,iBACPpF,EAAmBjqC,EAAKqvC,iBArG1B9lC,eACFlF,GAAE,iBAAiB6H,YAAY,WAC/B7H,GAAE,iBAAiB6H,YAAY,mBAC/B7H,GAAE,iBAAiB8H,SAAS,aAE5B9H,GAAE,iBAAiB6H,YAAY,WAC/B7H,GAAE,iBAAiB6H,YAAY,mBAC/B7H,GAAE,iBAAiB8H,SAAS,WAC5B9H,GAAE,CAACgJ,SAASG,gBAAiBH,SAASC,OAAOgiC,QAC3C,CACE/hC,UAAWlJ,GAAE,oBAAoBkrC,SAASC,IAAM,IAElD,IAoGAjD,UAAUzrC,KAAK,CACb0rC,MAAO,uBACPiD,cAAe,cACfC,YAAa,UACbC,WAAY,2BACZC,YAA0B,aAAb5C,EAA0B,cAAgB,YACvD6C,YAAa5C,EAAW,IAAM,KAElC,IACA,SAAUpF,GAKS,yBAAbA,EAAI1zB,KAKNqF,GACE,mIAEoB,iBAAbquB,EAAI1zB,KAKbqF,GACE,yDAEoB,qBAAbquB,EAAI1zB,KACbxE,GACE08B,YAAuB,CACrBznC,MAAO,cACPkO,aAAc,wCAGI,oBAAb+0B,EAAI1zB,KACbxE,GACE08B,YAAuB,CACrBznC,MAAO,QACPkO,aAAc,qCAGI,wBAAb+0B,EAAI1zB,KACbxE,GACE08B,YAAuB,CACrBznC,MAAO,QACPkO,aAAc,+BAGI,sBAAb+0B,EAAI1zB,KACbxE,GACE08B,YAAuB,CACrBznC,MAAO,eACPkO,aAAc,sCAGI,qBAAb+0B,EAAI1zB,KACbxE,GACE08B,YAAuB,CACrBznC,MAAO,cACPkO,aAAc,8BAGI,oBAAb+0B,EAAI1zB,KACbxE,GACE08B,YAAuB,CACrBznC,MAAO,aACPkO,aAAc,iCAIlB0G,GACE,gEAGN,KACD,yBAAAtP,EAAAkB,OAAA,GAAArB,EAAA,mBACF5I,MAAA,KAAAmK,UAAA,CAED,SAASwkC,KAIP,GAgMF,WACE,IAAI3V,EAAgB,CAAC,iBAEjBiS,EAAkB,CAAC,iBAEnB2D,EAAsB,CAAC,WAAY,YAEnCC,EAAwC,CAAC,cAAe,cAEtB,OAAlC/G,EAAeiD,SAASrpC,OAAmBmnC,EAEF,WAAlCf,EAAeiD,SAASrpC,QACjCs3B,EAAgBA,EAAcl1B,OAAO8qC,GAChC/F,IACH7P,EAAgBA,EAAcl1B,OAC5B+qC,KALJ7V,EAAgBA,EAAcl1B,OAAOmnC,GAuBvC,GAbkBjS,EAAc1jB,KAAI,SAAC7R,GACnC,IAAMkO,EAAe0gB,EACnByV,EACArkC,EACAqkC,EAAerkC,GAAO/B,OAIxB,OAFA8M,GAAS08B,YAAuB,CAAEznC,QAAOkO,kBACT,KAAjBA,CAEjB,IAEwBonB,OAAM,SAACh4B,GAAC,OAAKA,CAAC,IAGpC,OAAO,EAET,OAAO,CACT,CArOO+tC,GAAL,CAIAjkC,cAEA,IAQIyhC,EARAT,EAAW/D,EAAeiD,SAASrpC,MACnCoqC,EAAWhE,EAAe6E,aAAajrC,MACvCqqC,EAAe7oC,GAAE,iBAAiBiF,OAAS,UAC3C6jC,EAAa9oC,GAAE,eAAeiF,OAAS,UACvC8jC,EAAa/oC,GAAE,eAAeiF,OAAS,UACvC+jC,EAAchpC,GAAE,gBAAgBiF,OAAS,UACzCgkC,EAAWjpC,GAAE,aAAaiF,OAAS,UACnCikC,EAAelpC,GAAE,iBAAiBiF,OAAS,UAG/C,GAAiB,WAAb0jC,EAAuB,CACzB,IAAIkD,EACAC,EACAC,GAAYjd,EAAU8V,EAAemH,SAASvtC,OAE7CmnC,GAIHkG,EAAY,KACZC,EAAW,OAJXD,EAAYjH,EAAeoH,YAAYxtC,MACvCstC,EAAWlH,EAAeqH,WAAWztC,OAMvC4qC,EAAc/jC,YAAiB,CAC7Be,QAAS,4BACTT,OAAQk+B,GACR79B,WAAY,CACV2jC,QAAStqC,OAAsB,cAAE,CAC/BuqC,QAAShF,EAAe/1B,MAAMrQ,MAC9BqrC,QAASjF,EAAe71B,MAAMvQ,MAC9BsrC,QAASlF,EAAe8E,YAAYlrC,MACpCurC,QAASnB,EACToB,QAAS6B,EACT5B,QAAS6B,EACT5B,QAAStF,EAAesH,SAAS1tC,MACjC2rC,QAAS4B,EACT3B,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS3F,EAAeuH,cAAc3tC,MACtCgsC,QAAS3B,EACT6B,QAAS5B,EACTgC,QAAS/B,EACTgC,QAAS/B,EACToD,QAASnD,EACToD,QAASnD,MAIjB,KAAO,CACL,IAAIoD,EAKFA,EAHG3G,EAGW,KAFAf,EAAe2H,cAAc/tC,MAK7C4qC,EAAc/jC,YAAiB,CAC7Be,QAAS,4BACTT,OAAQk+B,GACR79B,WAAY,CACV2jC,QAAStqC,OAAsB,cAAE,CAC/BuqC,QAAShF,EAAe+F,aAAansC,MACrCqrC,QAASjF,EAAegG,YAAYpsC,MACpCsrC,QAASlF,EAAeiG,WAAWrsC,MACnCurC,QAASnF,EAAe/1B,MAAMrQ,MAC9BwrC,QAASpF,EAAe71B,MAAMvQ,MAC9ByrC,QAASrB,EACTsB,QAASoC,EACTnC,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS1F,EAAeuH,cAAc3tC,MACtC+rC,QAAS1B,EACT2B,QAAS1B,EACT4B,QAAS3B,EACT+B,QAAS9B,EACT+B,QAAS9B,EACTmD,QAASlD,MAIjB,CAEAE,EACG/iC,MACC,SAAU1K,GAYR,GAPA0D,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,iBACPC,aAAc,YACd3F,SAAU,0BACV4F,YAAatC,IAGE,WAAb4C,EAAuB,CACzB,IAAIoD,GAAYjd,EAAU8V,EAAemH,SAASvtC,OAClD0pC,UAAUzrC,KAAK,CACb0rC,MAAO,uBACPiD,cAAe,cACfC,YAAa,UACbC,WAAY,4BACZkB,YAAa5H,EAAesH,SAAS1tC,MACrCiuC,WAAYV,EACZW,YAAa,GACbC,YAAa,GACbC,YAAa,GACbC,YAAajI,EAAeuH,cAAc3tC,MAC1CsuC,cAAe,WACbztC,OAAO2B,SAASmnB,KACd,2DACJ,EACA4kB,aAAc,MAElB,MACE1tC,OAAO2B,SAASmnB,KACd,2DAIN,IACA,SAAUqb,GAKS,yBAAbA,EAAI1zB,KACNqF,GACE,wHAEoB,iBAAbquB,EAAI1zB,KACbqF,GAAe,8CACO,gBAAbquB,EAAI1zB,MAIS,qBAAb0zB,EAAI1zB,KAHbqF,GACE,kEAOFA,GACE,qDAGN,IAED9O,MAAK,WACJsB,aACF,GA7JF,CA8JF,CA4cA,SAASqlC,GAAqBrxC,GAI5B,IAHA,IACIsxC,EADAC,EAAU,CAAC,EAGNjxC,EAAI,EAAGA,EAAIN,EAAKQ,OAAQF,IAG/BixC,GAFAD,EAAatxC,EAAKM,IAECkxC,MAAQF,EAAWG,MAGxC,OAAOF,CACT,CAEA,SAASG,GAActvC,EAAMS,GAEvB+nC,GAAQ+G,cAKVlkC,GAAUrL,EAAMS,EAAO,CAAEiE,KAAM,KAEnC,CAIA,SAAS0S,GAAeI,GACtBvV,GAAE,0BAA0BwV,KAAKD,GACjCvV,GAAE,gBAAgByV,IAAI,CACpBC,QAAS,QAEb,CAQA,SAAS63B,KACPluC,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,iBACPC,aAAc,YACd3F,SAAU,8BACV4F,YAAatC,GAEjB,CAEA,OArbAvtB,qBAAU,WACR,GAAKxY,GAAE,kBAAkBiF,MAAzB,CAGe,IAAIuI,gBAAgBnO,OAAO2B,SAASjB,QAEnD4H,aAAQ,GACR,IAAIhM,EAAOyF,KAAKkF,MAAMtG,GAAE,kBAAkBiF,OAGtCtJ,KA4HN,SAAoBA,GAAM,IAAA6xC,EAExBhH,GAAezwB,gBAAkBpa,EAAKoa,gBAEtCywB,GAAerwB,eAAiBxa,EAAKwa,eACrCqwB,GAAeiH,aAAe9xC,EAAK8xC,aAEnCjH,GAAeziC,iBAAmBpI,EAAKoI,iBAEvCyiC,GAAetwB,UAAYwwB,GAAS/qC,EAAKua,WAEzCswB,GAAe5f,YAAc8f,GAAS/qC,EAAKirB,aAC3C4f,GAAerc,YAAcuc,GAAS/qC,EAAKwuB,aAC3Cqc,GAAepc,WAAasc,GAAS/qC,EAAKyuB,YAC1Coc,GAAenc,QAAUqc,GAAS/qC,EAAK0uB,SACvCmc,GAAelc,MAAQoc,GAAS/qC,EAAK2uB,OACrCkc,GAAejc,OAASmc,GAAS/qC,EAAK4uB,QAEtCic,GAAe/b,WAAaic,GAAS/qC,EAAK8uB,YAC1C+b,GAAejwB,WAAamwB,GAAS/qC,EAAK4a,YAC1CiwB,GAAehwB,aAAekwB,GAAS/qC,EAAK6a,cAC5CgwB,GAAe7vB,YAAc+vB,GAAS/qC,EAAKgb,aAE3C6vB,GAAexlC,SAAWkpB,aAAYsc,IAEtCA,GAAe/vB,QACb3R,YAAenJ,IAASA,EAAK8a,QAAU,EAAI9a,EAAK8a,QAAU,GAC5D+vB,GAAe9vB,SACb5R,YAAenJ,IAASA,EAAK+a,SAAW,EAAI/a,EAAK+a,SAAW,GAE9D8vB,GAAelI,cAAgBkI,GAAetwB,UAC1CswB,GAAetwB,UAAS,GAAAtV,OACrBgD,YAAgB4iC,IAAe,KAAA5lC,OAAI4lC,GAAehwB,cAEzDgwB,GAAenwB,UAAY1a,EAAK0a,UAChCmwB,GAAerwB,eAAiBxa,EAAKwa,eACrCqwB,GAAepwB,YAAcza,EAAKya,YAElCowB,GAAergB,cAAgBxqB,EAAKwqB,cACpCqgB,GAAepf,gBAAkBzrB,EAAKyrB,gBACtCof,GAAevwB,iBAAmBta,EAAKsa,iBACvCuwB,GAAej8B,WAAa5O,EAAK4O,WAEjCi8B,GAAe/hC,KAAO9I,EAAK8I,KAC3B+hC,GAAehiC,UAAY7I,EAAK6I,UAChCgiC,GAAeliC,YAAc3I,EAAK2I,YAElCkiC,GAAekH,aAAe/xC,EAAKgyC,aAEnC,IAAIhnB,EAAO5hB,YAAcpJ,GAAQwI,YAAQxI,GAAQ,GAEjD6qC,GAAe3c,cAAgBlD,EAAOA,EAAKnoB,MAAQ,IAAMmoB,EAAKpiB,KAAO,GACrEiiC,GAAe1c,gBACb9kB,YAAqBrJ,IAASA,EAAK2I,YAC/B3I,EAAK2I,YAAYlB,QAAQ,GAAK,SAC9B,GAINojC,GAAezwB,gBAAkBpa,EAAKoa,gBACtCywB,GAAeC,QAAU9qC,EAAK8qC,QAC9BD,GAAetgB,MAAQvqB,EAAKuqB,MAC5BsgB,GAAelH,YAAc3jC,EAAK2jC,YAClCkH,GAAevgB,MAAQtqB,EAAKsqB,MAC5BugB,GAAehY,eAAiB7yB,EAAK6yB,eACrCgY,GAAexgB,UAAYuI,YAAe5yB,GAC1C6qC,GAAengB,gBAAkB1qB,EAAK0qB,gBAGtCmgB,GAAepf,gBAAkBzrB,EAAKyrB,gBACtCof,GAAelwB,oBAAsB3a,EAAK2a,oBAC1CkwB,GAAexf,iBAAmBrrB,EAAKqrB,iBACvCwf,GAAetf,eAAiBvrB,EAAKurB,eACrCsf,GAAevf,mBAAqBtrB,EAAKsrB,mBACzCuf,GAAeiE,WAAa9uC,EAAK8uC,WACjCjE,GAAe/e,qBAAuB9rB,EAAK8rB,qBAC3C+e,GAAe9e,WAAa/rB,EAAK+rB,WACjC8e,GAAejf,SAAW5rB,EAAK4rB,SAC/Bif,GAAehf,WAAa7rB,EAAK6rB,WACjCgf,GAAehe,aAAe7sB,EAAK6sB,aAKnCge,GAAe5d,cAnvBQA,EAmvBuBjtB,EAAKitB,aAlvB/CglB,EAAiB3lC,YAAW27B,IAEhCgK,EAAex7B,KAAI,SAACrC,GACY,iBAAnBA,EAAMuZ,UACfvZ,EAAM0Z,OAAS,GACf1Z,EAAMuZ,SAAShpB,SAAQ,SAACgpB,GACtBvZ,EAAM0Z,OAAS1Z,EAAM0Z,OAAO7oB,OAC1BwmC,GAA0B9d,EAAUV,GAExC,KAEA7Y,EAAM0Z,OAAS2d,GAA0Br3B,EAAMuZ,SAAUV,EAE7D,KAGAglB,EAAiBA,EAAe1sC,QAAO,SAACC,GAAC,OAAKA,EAAEsoB,OAAOttB,MAAM,IAAEoD,MAAM,EAAG,IAGzDe,SAAQ,SAACa,GACtBA,EAAEsoB,OAAStoB,EAAEsoB,OAAO1L,MAAK,SAACvV,EAAGC,GAAC,OAAKD,EAAE6gB,SAAW5gB,EAAE4gB,QAAQ,GAC5D,IACOukB,GA6tBPpH,GAAepG,sBAAwBzkC,EAAKykC,sBApvB9C,IAAyBxX,EACnBglB,EAovBJ,IAAIC,EACkC,QADCL,EACrChH,GAAepG,6BAAqB,IAAAoN,GAQlC,QARkCA,EAApCA,EAAsCzvB,MAAK,SAACvV,EAAGC,GAC7C,OAAID,EAAE6gB,SAAW5gB,EAAE4gB,UACT,EAEN7gB,EAAE6gB,SAAW5gB,EAAE4gB,SACV,EAEF,CACT,WAAE,IAAAmkB,OAAA,EARFA,EASItsC,QAAO,SAACC,GAAC,MAAkC,OAA7BA,EAAEoJ,WAAWhL,MAAM,EAAG,EAAW,IAChDA,MAAM,EAAG,IAEdinC,GAAepG,sBAAwByN,EAEvCrH,GAAeze,mBAAqBpsB,EAAKosB,mBACzCye,GAAeve,iBAAmBtsB,EAAKssB,iBACvCue,GAAenH,aAAe1jC,EAAK0jC,aAGnCmH,GAAe3b,cAAgBlvB,EAAKkvB,cACpC2b,GAAe1d,eAAiBntB,EAAKmtB,eACrC0d,GAAentB,MAAQ1d,EAAK0d,MAC5BmtB,GAAe/f,UAAY6d,GAAmB3oC,EAAK4O,YAEnDe,GACEwiC,YAAuB,CACrBttC,UAAW,kBACXkL,KAAMmiC,EACNE,SAAS,KAIb,IAAMC,EAAezH,GAA0B,iBAC3C0H,EAAyB1H,GAAgC,uBACvDh8B,EAAa5O,EAAK4O,WAItB0jC,EAHGA,GAAoD,aAA1BA,EAGJA,EAAuBltC,MAAM,KAF7B,GAIvBwlC,GAAQ+G,cAMRU,GACiB,cAAjBA,GACAA,EAAatjC,SAASH,KAEtBi8B,GAAe7B,MAAO,GAEnBsJ,EAAuBvjC,SAASH,IACnC8iC,GACE,yBACA,GAAAzsC,OAAAwB,IAAI6rC,GAAsB,CAAE1jC,IAAYrJ,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEG,KAAK,MAMpEtB,IAAE,WACAA,GAAE,qBAAqBkuC,OACvBluC,GAAE,cAAc2V,GAAG,SAAS,WAC1B3V,GAAE,wBAAwB6H,YAAY,YACxC,GACF,IAEA,IAAMsmC,EAAcxyC,EAAKwa,eACrBxa,EAAKwa,eACLxa,EAAKya,YACLza,EAAKya,YACLza,EAAK0a,UACT/K,GACE+kB,YAAoB,CAAE9vB,MAAO,uBAAwB/B,MAAO2vC,KAG9D,IAAI/a,EAAiBz3B,EAAKyyC,eAEtB5H,GAAexgB,WAAgC,OAAnBoN,IAC9BA,EAAiB+a,GA2BnB,GArBA7iC,GACE+kB,YAAoB,CAAE9vB,MAAO,iBAAkB/B,MAAO40B,KAExD9nB,GACE+kB,YAAoB,CAClB9vB,MAAO,4BACP/B,MAAOwuC,GAAqBrxC,EAAK0yC,8BAGrC/iC,GACE+kB,YAAoB,CAClB9vB,MAAO,wBACP/B,MAAOwuC,GAAqBrxC,EAAK2yC,0BAGrChjC,GACE+kB,YAAoB,CAClB9vB,MAAO,uBACP/B,MAAOwuC,GAAqBrxC,EAAK4yC,yBAGjC5yC,EAAKoI,iBAAkB,CACzB,IAAI0yB,EAAiB96B,EAAKoI,iBAAiBC,OAAOjD,MAAM,KAAK,GAE7DuK,GACE+kB,YAAoB,CAClB9vB,MAAO,iBACP/B,MAAOi4B,KAWX,IAAIxE,EAqBR,SAA6BwE,EAAgB+X,EAAWrc,GACtD,IAAID,EAAU,MAE4C,IAAtD,CAAC,KAAM,KAAM,KAAM,MAAMvxB,QAAQ81B,GACnCvE,EAAUC,EAAUC,KAED,OAAnBqE,GACA+X,GACAA,EAAY,GACZA,GAAa,MAGbtc,EAAUC,EAAU4B,MAGtB,IAAI0a,EAActc,EAAUuc,IAE5B,MAAO,CACLxc,UACAuc,cAEJ,CA1C2BE,CACrBlY,EACA96B,EAAK6I,UACLy5B,EAAW9L,WAKb7mB,GACE+kB,YAAoB,CAClB9vB,MAAO,mBACP/B,MAAOyzB,IAGb,CAIA3mB,GAASsjC,YAAqB,CAAEpwC,MAAOgoC,KACzC,CAjWIqI,CAAWlzC,GAEXqqC,EAAa,CACX,CACE8I,WAAYnzC,EAAK4O,WACjBwkC,aAAc,eACdC,cAAe/qC,YAAkBtI,GACjCghC,MAAOhhC,EAAKwa,gBAAkBxa,EAAKya,aAAeza,EAAK0a,aAI3DhX,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,iBACPC,aAAc,YACd3F,SAAU,wBACV4F,YAAa,CACX,CACEyG,WAAYnzC,EAAK4O,WACjBwkC,aAAc,eACdC,cAAe/qC,YAAkBtI,GACjCghC,MAAOhhC,EAAKwa,gBAAkBxa,EAAKya,aAAeza,EAAK0a,cAK7DrW,GAAE,eAAe2V,GAAG,SAAS,WAC3BtW,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,iBACPC,aAAc,YACd3F,SAAU,yBACV4F,YAAa,CACX,CACEyG,WAAYnzC,EAAK4O,WACjBwkC,aAAc,eACdC,cAAe/qC,YAAkBtI,GACjCghC,MAAOhhC,EAAKwa,gBAAkBxa,EAAKya,aAAeza,EAAK0a,aAI/D,IAEAnP,YAAgB,CACdd,QAAS,WACTT,OAAQk+B,KAEPx9B,MACC,SAAU1K,GAGR,IAAIszC,EAAatzC,EAAKuzC,eAAe98B,KAAI,SAAU+8B,GACjD,MAAO,CAAEzuB,KAAMyuB,EAAIC,YAAa5wC,MAAO2wC,EAAIC,YAC7C,IAEA9jC,GACE+jC,YAAmB,CAAE9uC,MAAO,WAAY/B,MAAOywC,KAGjD,IAAIK,EAAqB3zC,EAAK4zC,mBAAmBn9B,KAAI,SACnD+8B,GAEA,MAAO,CAAEzuB,KAAMyuB,EAAIC,YAAa5wC,MAAO2wC,EAAIC,YAC7C,IAEA9jC,GACE+jC,YAAmB,CACjB9uC,MAAO,gBACP/B,MAAO8wC,IAGb,IACA,SAAU9L,GAERruB,GAAe,4CACjB,IAED9O,MAAK,WACJ,IACA,SACO,WACPsB,aAAQ,EACV,IAxFJ,CA4FF,GAAG,IAEH6Q,qBAAU,WACRxY,GAAEgJ,UAAUwmC,OAAM,WAEhBxvC,GACE,wEACAic,KAAK,WAAY,YACnBjc,GAAE,sBAAsB2V,GAAG,SAAS,WAClC3V,GAAE,gBAAgByV,IAAI,CACpBC,QAAS,IAEb,GACF,GACF,GAAG,IAEH8C,qBAAU,WACR,IAAIw1B,EAAezH,GAA0B,iBAK3CyH,EAHGA,GAAgC,aAAhBA,EAGJA,EAAajtC,MAAM,KAFnB,GAIb6rB,IAAWohB,EAAatjC,SAAS0O,EAAe7O,YAClD8iC,GACE,mBACA,GAAAzsC,OAAAwB,IAAI4rC,GAAY,CAAE50B,EAAe7O,aAAYrJ,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEG,KAAK,OAE3DsrB,GAAUohB,EAAatjC,SAAS0O,EAAe7O,aACzD8iC,GACE,mBACAW,EAAa9sC,QAAO,SAACC,GAAC,OAAKA,IAAMiY,EAAe7O,UAAU,IAAEjJ,KAAK,KAKvE,GAAG,CAACsrB,IAyRJvtB,OAAO8V,eAAiBA,GAyBtB8D,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAACm1B,IAAS,CACR3uB,IAAKqlB,GACL7kB,KAAK,YACLouB,QAAS5L,KAGX7qB,IAAAqB,cAACq1B,IAAgB,CAACC,WAAW,EAAMC,aAAa,IAIhD52B,IAAAqB,cAAC4jB,GAAgB9kB,GAEjBH,IAAAqB,cAACkkB,GAAY,CACX9yB,KAAM0N,EAAerD,gBACrB5I,aAAciM,EAAeklB,cAC7BllB,eAAgBA,EAChBoD,iBAAkBA,KAGpBvD,IAAAqB,cAAA,WAAS1M,GAAG,kBACVqL,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAACuN,KAAqBzO,GACtBH,IAAAqB,cAACyL,KAAoB3M,GACrBH,IAAAqB,cAAC8kB,GAAmBhmB,GACpBH,IAAAqB,cAAC8L,KAAkBhN,GACnBH,IAAAqB,cAACgM,KAAiBlN,GAElBH,IAAAqB,cAAA,OAAKC,UAAU,uBAGftB,IAAAqB,cAAA,OAAKC,UAAU,sBACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACbtB,IAAAqB,cAAA,SAAIlB,EAAepY,WAGrBiY,IAAAqB,cAACoQ,KAAyBtR,GAC1BH,IAAAqB,cAAC0Q,KAAkB5R,IAEE,QAApBorB,EAAAprB,EAAeC,aAAK,IAAAmrB,OAAA,EAApBA,EAAsBroC,QAAS,GAC9B8c,IAAAqB,cAAA,KACE6N,KAAK,mBACL5N,UAAU,aACV8B,MAAM,wCACN,YAAU,aACV,YAAU,kBACV,YAAU,aACV,YAAU,aACV,YAAWjD,EAAe7O,YAE1B0O,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,OACE2lB,MAAO,GACPtlB,IAAI,uFACJC,IAAI,aAEN3B,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,2BAI5BtB,IAAAqB,cAAA,KAAGC,UAAU,8BAGjBtB,IAAAqB,cAAA,OAAKC,UAAU,sBAEftB,IAAAqB,cAAC2Q,KAAgB7R,GAEjBH,IAAAqB,cAAA,OAAKC,UAAU,0BAEZnB,EAAeqN,UACdxN,IAAAqB,cAAA,KACE6N,UAAM,EACNhF,QAAS3G,GACTjC,UAAU,4CACV,YAAU,aACV,YAAU,QACV,YAAU,cACV,YAAU,QACV,YAAWnB,EAAe7O,YAC3B,2BAID0O,IAAAqB,cAAA,KACE6N,UAAM,EACNhF,QAAS3G,GACTjC,UAAU,4CACV,YAAU,aACV,YAAU,QACV,YAAU,cACV,YAAU,QACV,YAAWnB,EAAe7O,YAC3B,gBAIH0O,IAAAqB,cAAA,KACE6N,UAAM,EACN5N,UAAU,YACV,iBAAe,YACf,iBAAe,qBACf,gBAAc,oBACd,YAAU,aACV,YAAU,gBACV,YAAU,cACV,YAAU,SACV,YAAWnB,EAAe7O,YAC3B,0CAKH0O,IAAAqB,cAACqO,KAAyBqV,IAAA,GAAK5kB,EAAc,CAAEa,QAAS,SAExDhB,IAAAqB,cAAA,OAAKC,UAAU,eAKbtB,IAAAqB,cAAA,OAAK1M,GAAG,SAAS2M,UAAU,SAC3BtB,IAAAqB,cAAA,OAAKC,UAAU,SACbtB,IAAAqB,cAACwoB,GAAW9E,IAAA,CACVl/B,IAAI,QACAsa,EAAc,CAClBjE,eAAgBA,QAKtB8D,IAAAqB,cAACtB,KAAc,CACbI,eAAgBA,EAChBa,QAAS,GACTuC,iBAAkBA,KAGnBpD,EAAe4M,UACd/M,IAAAqB,cAACujB,EAAiBG,IAAA,GACZC,EAAU,CACd9oB,eAAgBA,GAChB8oB,WAAYA,EACZlH,WAAY3d,EAAe7O,cAG7B0O,IAAAqB,cAACqV,EAAaqO,IAAA,GACRC,EAAU,CACd9oB,eAAgBA,GAChB4hB,WAAY3d,EAAe7O,cAI/B0O,IAAAqB,cAACwM,KAA6B1N,GAE9BH,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,UAAI,mBACJrB,IAAAqB,cAAC+M,KAAsBjO,IAGzBH,IAAAqB,cAACgO,KAAmBlP,IAEtBH,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,KACE6N,KAAM/O,EAAes0B,aACrBvqB,QAAS,WAAF,OAAQoqB,IAAe,EAC9BhzB,UAAU,6BAEVtB,IAAAqB,cAAA,KAAGC,UAAU,4BACbtB,IAAAqB,cAAA,YAAM,cAERrB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,OAAK1M,GAAG,mBACNqL,IAAAqB,cAAA,OAAK1M,GAAG,UAAU2M,UAAU,gBAC1BtB,IAAAqB,cAAA,UAAI,yCACJrB,IAAAqB,cAAA,KAAGC,UAAU,YAAW,gDAGxBtB,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,OACEC,UAAU,eACV4I,QAAS,SAACxY,GAAC,OAAK48B,GAAmB,WAAY,SAAS,GAExDtuB,IAAAqB,cAAA,SACE1M,GAAG,YACHiM,KAAK,QACL9b,KAAK,WACLS,MAAM,SACNklB,QAA2C,WAAlCkhB,EAAeiD,SAASrpC,MACjCmlB,QAAM,EACN5C,UAAQ,IAEV9H,IAAAqB,cAAA,SACEw1B,QAAQ,YACRv1B,UAAWgJ,IAAW,CACpB,CACEwsB,iBACoC,WAAlCnL,EAAeiD,SAASrpC,OAE5B,gBAGJya,IAAAqB,cAAA,SAAOw1B,QAAQ,YAAYv1B,UAAU,cAAa,gBAIpDtB,IAAAqB,cAAA,OACEC,UAAU,eACV4I,QAAS,SAACxY,GAAC,OAAK48B,GAAmB,WAAY,KAAK,GAEpDtuB,IAAAqB,cAAA,SACE1M,GAAG,YACHiM,KAAK,QACL9b,KAAK,WACLS,MAAM,eACNklB,QAA2C,OAAlCkhB,EAAeiD,SAASrpC,MACjCmlB,QAAM,EACN5C,UAAQ,IAEV9H,IAAAqB,cAAA,SACEw1B,QAAQ,YACRv1B,UAAWgJ,IAAW,CACpB,CACEwsB,iBACoC,OAAlCnL,EAAeiD,SAASrpC,OAE5B,gBAGJya,IAAAqB,cAAA,SAAOw1B,QAAQ,YAAYv1B,UAAU,cAAa,eAOtDtB,IAAAqB,cAAA,OAAK1M,GAAG,eAAe2M,UAAU,sBAC/BtB,IAAAqB,cAAA,OAAKC,UAAU,cACsB,OAAlCqqB,EAAeiD,SAASrpC,OACvBya,IAAAqB,cAAA,WACErB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe+F,aAAY,CAC/B1qB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAegG,YAAW,CAC9B3qB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeiG,WAAU,CAC7B5qB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAKjB3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe/1B,MAAK,CACxBoR,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeoL,aAAY,CAC/B/vB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe71B,MAAK,CACxBkR,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEZrC,GACCtsB,IAAAqB,cAAA,WACErB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe8E,YAAW,CAC9BzpB,kBAAmBsnB,GACnB9iB,UAAWmjB,QAKnB3uB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OACEC,UAAU,gBACV4I,QAAS,SAACxY,GACRA,EAAEuV,iBACFqnB,GACE,gBACC3C,EAAe6E,aAAajrC,MAEjC,GAEAya,IAAAqB,cAAA,SACE1M,GAAG,mBACHiM,KAAK,WACL9b,KAAK,gBACL4lB,QAAM,EACND,QAASkhB,EAAe6E,aAAajrC,MACrCuiB,UAAQ,IAEV9H,IAAAqB,cAAA,SACEw1B,QAAQ,mBACRv1B,UAAWgJ,IAAW,CACpB,CACEwsB,iBACEnL,EAAe6E,aAAajrC,OAEhC,gBAGJya,IAAAqB,cAAA,SACEw1B,QAAQ,mBACRv1B,UAAU,cACX,6BAIHtB,IAAAqB,cAAC0P,KAAgB5Q,IAEnBH,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,qBACV4I,QAAS2kB,IACV,UAIH7uB,IAAAqB,cAAA,OAAKC,UAAU,QACbtB,IAAAqB,cAAA,KACEC,UAAU,2BACV+B,MAAO,CAAE6gB,SAAU,SACpB,uCACqClkB,IAAAqB,cAAA,WAAM,kBAC3BrB,IAAAqB,cAAA,KAAG6N,UAAM,GAAQ,kBAE5B,QAAKlP,IAAAqB,cAAA,KAAG6N,UAAM,GAAQ,oBAAoB,aAMpDlP,IAAAqB,cAAA,OAAK1M,GAAG,eAAe2M,UAAU,cACI,OAAlCqqB,EAAeiD,SAASrpC,QACtBmnC,GACC1sB,IAAAqB,cAAA,WACErB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe2H,cAAa,CAChCtsB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAKgB,WAAlChD,EAAeiD,SAASrpC,OACvBya,IAAAqB,cAAA,YACIqrB,GACA1sB,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeoH,YAAW,CAC9B/rB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeqH,WAAU,CAC7BhsB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAIjB3uB,IAAAqB,cAAC0J,IAAkBga,IAAA,GACb4G,EAAesH,SAAQ,CAC3BjsB,kBAAmBsnB,MAErBtuB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAemH,SAAQ,CAC3B9rB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAIjB3uB,IAAAqB,cAAC0J,IAAkBga,IAAA,GACb4G,EAAeuH,cAAa,CAChClsB,kBAAmBsnB,MAErBtuB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,qBACV4I,QAASsoB,IACV,cAIHxyB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,UACE1M,GAAG,gBACHiM,KAAK,SACLU,UAAU,WACV4I,QAAS8sB,IAETh3B,IAAAqB,cAAA,KAAGC,UAAU,4BAA8B,iBAQtDnB,EAAeqN,UACdxN,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,UAAI,uBACJrB,IAAAqB,cAAA,KACE6N,UAAM,EACNhF,QAAS3G,GACTjC,UAAU,0BACV,YAAU,aACV,YAAU,QACV,YAAU,cACV,YAAU,QACV,YAAWnB,EAAe7O,YAC3B,2BAGD0O,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,KAAG6N,KAAMC,MAAmB,2BAIhCnP,IAAAqB,cAAA,OAAKC,UAAU,iBACZyqB,EACC/rB,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,UAAI,yBACJrB,IAAAqB,cAAA,KACE6N,UAAM,EACNhF,QAAS3G,GACTjC,UAAU,0BACV,YAAU,aACV,YAAU,QACV,YAAU,cACV,YAAU,QACV,YAAWnB,EAAe7O,YAC3B,iBAKH0O,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,QAAMC,UAAU,mBAAkB,+BAEhCtB,IAAAqB,cAAA,WAAM,8BAGRrB,IAAAqB,cAAA,MACEgC,MAAO,CAEL5G,QAAS,QACTw6B,OAAQ,SACRtrB,QAAS,SAGb3L,IAAAqB,cAAA,QAAMC,UAAU,aAAY,qCAG5BtB,IAAAqB,cAAA,WACArB,IAAAqB,cAAA,QAAMC,UAAU,eAAc,+BAE5BtB,IAAAqB,cAAA,WAAM,SACC,IACNusB,KAAO9B,GAAkB+B,OAAO,MAAM/J,OAAO,OAAO,YAYrE9jB,IAAAqB,cAAA,OAAKC,UAAU,cAEftB,IAAAqB,cAAA,OAAKC,UAAU,cAGdrV,eACC+T,IAAAqB,cAAA,OAAK1M,GAAG,mBAAmB2M,UAAU,oBAInCtB,IAAAqB,cAAA,UACEC,UAAU,qBACV,iBAAe,YACf,iBAAe,qBACf,gBAAc,oBACd,YAAU,aACV,YAAU,gBACV,YAAU,cACV,YAAU,SACV,YAAWnB,EAAe7O,YAC3B,yCAGD0O,IAAAqB,cAAA,KACE6N,KAAM/O,EAAes0B,aACrBvqB,QAAS,WAAF,OAAQoqB,IAAe,EAC9BhzB,UAAU,2CACV,YAAU,UACV,YAAU,YACV,YAAU,UACV,YAAWnB,EAAe7O,YAE1B0O,IAAAqB,cAAA,KAAGC,UAAU,6BAEftB,IAAAqB,cAAA,UACEC,UAAU,2BACV,iBAAe,YACf,iBAAe,mBACf,gBAAc,mBAEdtB,IAAAqB,cAAA,KACEC,UAAU,2BACV,YAAU,aACV,YAAU,cACV,YAAU,SACV,YAAU,kBA8BlBtB,IAAAqB,cAAA,OACEC,UAAU,wDACV4Q,SAAS,KACTvd,GAAG,qBAEHqL,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,MAAIC,UAAU,mBAAkB,uBACVtB,IAAAqB,cAAA,WAAM,wBAE5BrB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,uBACV,kBAAgB,YAChB,aAAW,WAGftB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,MAAIC,UAAU,IAAG,gDACjBtB,IAAAqB,cAAA,OAAK1M,GAAG,kBACNqL,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,OACEC,UAAU,eACV4I,QAAS,SAACxY,GAAC,OAAK48B,GAAmB,WAAY,SAAS,GAExDtuB,IAAAqB,cAAA,SACE1M,GAAG,SACHiM,KAAK,QACL9b,KAAK,WACLS,MAAM,SACNklB,QAA2C,WAAlCkhB,EAAeiD,SAASrpC,MACjCmlB,QAAM,EACN5C,UAAQ,IAEV9H,IAAAqB,cAAA,SACEw1B,QAAQ,SACRv1B,UAAWgJ,IAAW,CACpB,CACEwsB,iBACoC,WAAlCnL,EAAeiD,SAASrpC,OAE5B,gBAGJya,IAAAqB,cAAA,SAAOw1B,QAAQ,SAASv1B,UAAU,cAAa,gBAIjDtB,IAAAqB,cAAA,OACEC,UAAU,eACV4I,QAAS,SAACxY,GAAC,OAAK48B,GAAmB,WAAY,KAAK,GAEpDtuB,IAAAqB,cAAA,SACE1M,GAAG,SACHiM,KAAK,QACL9b,KAAK,WACLS,MAAM,eACNklB,QAA2C,OAAlCkhB,EAAeiD,SAASrpC,MACjCmlB,QAAM,EACN5C,UAAQ,IAEV9H,IAAAqB,cAAA,SACEw1B,QAAQ,SACRv1B,UAAWgJ,IAAW,CACpB,CACEwsB,iBAAoD,OAAlCnL,EAAeiD,SAASrpC,OAE5C,gBAGJya,IAAAqB,cAAA,SAAOw1B,QAAQ,SAASv1B,UAAU,cAAa,eAMnDtB,IAAAqB,cAAA,OAAK1M,GAAG,eAAe2M,UAAU,sBAC/BtB,IAAAqB,cAAA,OAAKC,UAAU,cACsB,OAAlCqqB,EAAeiD,SAASrpC,OACvBya,IAAAqB,cAAA,WACErB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe+F,aAAY,CAC/B1qB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAegG,YAAW,CAC9B3qB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeiG,WAAU,CAC7B5qB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAKjB3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe/1B,MAAK,CACxBoR,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeoL,aAAY,CAC/B/vB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe71B,MAAK,CACxBkR,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEZrC,GACCtsB,IAAAqB,cAAA,WACErB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe8E,YAAW,CAC9BzpB,kBAAmBsnB,GACnB9iB,UAAWmjB,QAKnB3uB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OACEC,UAAU,gBACV4I,QAAS,SAACxY,GACRA,EAAEuV,iBACFqnB,GACE,gBACC3C,EAAe6E,aAAajrC,MAEjC,GAEAya,IAAAqB,cAAA,SACE1M,GAAG,gBACHiM,KAAK,WACL9b,KAAK,gBACL4lB,QAAM,EACND,QAASkhB,EAAe6E,aAAajrC,MACrCuiB,UAAQ,IAEV9H,IAAAqB,cAAA,SACEw1B,QAAQ,gBACRv1B,UAAWgJ,IAAW,CACpB,CAAEwsB,iBAAkBnL,EAAe6E,aAAajrC,OAChD,gBAGJya,IAAAqB,cAAA,SAAOw1B,QAAQ,gBAAgBv1B,UAAU,cAAa,6BAIxDtB,IAAAqB,cAAC0P,KAAgB5Q,IAEnBH,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,qBACV4I,QAAS2kB,IACV,UAIH7uB,IAAAqB,cAAA,OAAKC,UAAU,QACbtB,IAAAqB,cAAA,KACEC,UAAU,2BACV+B,MAAO,CAAE6gB,SAAU,SACpB,uCACqClkB,IAAAqB,cAAA,WAAM,kBAC3BrB,IAAAqB,cAAA,KAAG6N,UAAM,GAAQ,kBAAkB,OAAK,IACvDlP,IAAAqB,cAAA,KAAG6N,UAAM,GAAQ,oBAAoB,aAM3ClP,IAAAqB,cAAA,OAAK1M,GAAG,eAAe2M,UAAU,cACI,OAAlCqqB,EAAeiD,SAASrpC,QAAmBmnC,GAC1C1sB,IAAAqB,cAAA,WACErB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAe2H,cAAa,CAChCtsB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAKkB,WAAlChD,EAAeiD,SAASrpC,OACvBya,IAAAqB,cAAA,YACIqrB,GACA1sB,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeoH,YAAW,CAC9B/rB,kBAAmBsnB,GACnB9iB,UAAWmjB,MAEb3uB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAeqH,WAAU,CAC7BhsB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAIjB3uB,IAAAqB,cAAC0J,IAAkBga,IAAA,GACb4G,EAAesH,SAAQ,CAC3BjsB,kBAAmBsnB,MAErBtuB,IAAAqB,cAAC+J,IAAkB2Z,IAAA,GACb4G,EAAemH,SAAQ,CAC3B9rB,kBAAmBsnB,GACnB9iB,UAAWmjB,OAIjB3uB,IAAAqB,cAAC0J,IAAkBga,IAAA,GACb4G,EAAeuH,cAAa,CAChClsB,kBAAmBsnB,MAErBtuB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,qBACV4I,QAASsoB,IACV,cAIHxyB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,UACET,KAAK,SACLjM,GAAG,oBACH2M,UAAU,WACV4I,QAASgtB,IAETl3B,IAAAqB,cAAA,KAAGC,UAAU,4BAA8B,iBAUvDtB,IAAAqB,cAAA,OAAK1M,GAAG,qBAAqB2M,UAAU,iBACrCtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OACEC,UAAU,mBACVI,IAAI,yEACJC,IAAI,cACJuI,QAASgkB,KAEXluB,IAAAqB,cAAA,OAAKC,UAAU,WACbtB,IAAAqB,cAAA,KAAGC,UAAU,mCACbtB,IAAAqB,cAAA,UAAI,6BAENrB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,UACE1M,GAAG,SACHiM,KAAK,SACL9b,KAAK,SACLwc,UAAU,sBACV4I,QAASgkB,IACV,UAGDluB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,qBACV4I,QAASwjB,IACV,aAQP1tB,IAAAqB,cAAC4Q,KAAW,MAGZjS,IAAAqB,cAAA,OACEC,UAAU,6CACV4Q,SAAS,KACTvd,GAAG,mBAEHqL,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,MAAIC,UAAU,mBAAkB,qBAChCtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,uBACV,kBAAgB,YAChB,aAAW,WAGftB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,OAAKC,UAAU,mDACbtB,IAAAqB,cAAA,KACE6N,KAAK,eACL5N,UAAU,sBACV,kBAAgB,YAChB,aAAW,QACX,YAAU,aACV,YAAU,YACV,YAAU,SACV,YAAU,eAEVtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,4BACT,QAENtB,IAAAqB,cAAA,WAAM,YAGRrB,IAAAqB,cAAA,KACE6N,UAAM,EACN5N,UAAU,sBACV,iBAAe,YACf,iBAAe,sBACf,gBAAc,kBACd,YAAU,aACV,YAAU,YACV,YAAU,eACV,YAAU,UAEVtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,8BACT,mBAGRtB,IAAAqB,cAAA,KACE6N,KAAK,qBACLhF,QAl1DZ,WACE,IAAI7f,EAAOlC,KAAKkF,MAAMlF,KAAKC,UAAU+X,IACrC9V,EAAKqhC,MAAQrhC,EAAKqhC,KAClBr5B,GAASsjC,YAAqB,CAAEpwC,MAAO8E,IACzC,EA+0DYiX,UAAU,sBACV,YAAU,QACV,YAAU,WACV,YAAU,SACV,YAAU,cACV,YAAWnB,EAAe7O,YAE1B0O,IAAAqB,cAAA,OACEC,UAAWgJ,IAAW,CACpB,CAAE2J,OAAQN,GACV,mCAGF3T,IAAAqB,cAAA,KACEC,UAAWgJ,IAAW,CACpB,CAAE,0BAA2BqJ,GAC7B,CAAE,oBAAqBA,GACvB,cAGA,eAGR3T,IAAAqB,cAAA,KACE6N,KAAMroB,GAAU8/B,YAAYj+B,QAC1B,aACAyX,EAAe7O,YAEjBgQ,UAAU,sBACVgK,OAAO,SACP,YAAU,aACV,YAAU,UACV,YAAU,SACV,YAAU,eAEVtL,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAGC,UAAU,8BACT,YAQdtB,IAAAqB,cAAA,OAAK1M,GAAG,cAAc2M,UAAU,wBAC9BtB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,UACET,KAAK,SACLjM,GAAG,oBACHuV,QAAS,SAACxY,GA37BlB3K,GAAE,gBAAgByV,IAAI,CACpBC,QAAS,IA07B8B,EACjC6E,UAAU,yBAEVtB,IAAAqB,cAAA,OACEK,IAAI,0EACJC,IAAI,iBAGR3B,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SAAG,qEAQf,EAEM81B,GAAc,WAClB,IAAAC,EAA0B3L,aAAY,SAAChzB,GAAK,MAAK,CAC/CA,EAAMxS,SAASoxC,aAAaC,gBAC7B,IAFMA,EAELl4B,IAAAg4B,EAAA,GAFoB,GAUtB,OAAKE,EAAgB7kC,MAAwC,IAAhC6kC,EAAgB7kC,KAAKvP,OAKhD8c,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,WAAS1M,GAAG,kBAAkB2M,UAAU,0BACtCtB,IAAAqB,cAAA,UAAI,mBACJrB,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAC+S,IAAY,CAAC3hB,KAAM6kC,EAAgB7kC,OACpCuN,IAAAqB,cAAA,OAAKC,UAAU,iDAEjBtB,IAAAqB,cAAA,OACE+B,MAAM,OACN9B,UAAU,yDAEZtB,IAAAqB,cAAA,OACE+B,MAAM,WACN9B,UAAU,2DAjBTtB,IAAAqB,cAAArB,IAAAwB,SAAA,KAsBX,EA2RA,SAASw1B,GAAoBtlC,GAC3B3K,GAAE,iBAAiB8H,SAAS,mBAC5B9H,GAAE,iBAAiB6H,YAAY,WAC/B7H,GAAE,CAACgJ,SAASG,gBAAiBH,SAASC,OAAOgiC,QAC3C,CACE/hC,UAAWlJ,GAAE,oBAAoBkrC,SAASC,IAAM,IAElD,EAEJ,CAEA,SAASgF,KACPnwC,GAAE,iBAAiB8H,SAAS,mBAC5B9H,GAAE,iBAAiB6H,YAAY,UACjC,CAEA2oC,IAASC,OACPx3B,IAAAqB,cAACo2B,IAAe,KACdz3B,IAAAqB,cAACq2B,IAAQ,CAAChN,MAAOA,IACf1qB,IAAAqB,cAACiqB,GAAU,QAGfv7B,SAASg0B,eAAe,qBAE1BwT,IAASC,OACPx3B,IAAAqB,cAACq2B,IAAQ,CAAChN,MAAOA,IACf1qB,IAAAqB,cAAC81B,GAAW,MACZn3B,IAAAqB,cAACs2B,KAAW,OAEd5nC,SAASg0B,eAAe,4B,ksBC3rFb6T,EAAgBziC,YAAY,CACrCrQ,KAAM,UACNsQ,aAAc,CACV7L,aAAc,CACVsuC,QAAS,CAAEtyC,MAAO,GAAIgC,UAAW,WAEjCgP,SAAU,CACNhR,MAAO,GAAIgC,UAAW,WAAYiP,kBAAmB,cAAed,YAAa,UAAWqR,aAAa,EACzG/e,OAAQ,IAEZ0O,SAAU,CACNnR,MAAO,GAAIgC,UAAW,WAAYiP,kBAAmB,gBAAiBd,YAAa,YAAaqR,aAAa,EAC7G/e,OAAQ,IAEZ2O,YAAa,CACTpR,MAAO,GAAIgC,UAAW,cAAeiP,kBAAmB,gBAAiBd,YAAa,YAAaqR,aAAa,EAChH/e,OAAQ,IAEZ8vC,QAAS,CACLvyC,MAAO,GAAIgC,UAAW,UAAWiP,kBAAmB,YAAad,YAAa,sBAAuBqR,aAAa,EAClH/e,OAAQ,IAGZ0Y,MAAO,CACHnb,MAAO,MAAOgC,UAAW,QAASof,yBAA0B,EAAGoB,oBAAoB,EAAM/f,OAAQ,CAC7F,CAAEyf,KAAM,gBAAiBliB,MAAO,OAChC,CAAEkiB,KAAM,eAAgBliB,MAAO,OAC/B,CAAEkiB,KAAM,kBAAmBliB,MAAO,WAClC,CAAEkiB,KAAM,kBAAmBliB,MAAO,WAClC,CAAEkiB,KAAM,qBAAsBliB,MAAO,gBACrC,CAAEkiB,KAAM,qBAAsBliB,MAAO,kBAI7CsF,aAAc,CACVtF,MAAO,GAAIgC,UAAW,eACtBqP,UAAW,CAAErR,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,aAAcyC,UAAW,YAAauP,MAAO,gBAC1FC,KAAM,CAAExR,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,SAAUyC,UAAW,OAAQuP,MAAO,gBAC5EE,UAAW,CAAEzR,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,cAAeyC,UAAW,YAAauP,MAAO,gBAC3FG,MAAO,CAAE1R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,eAAgByC,UAAW,QAASuP,MAAO,gBACpFI,mBAAoB,CAAE3R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,eAAgByC,UAAW,qBAAsBuP,MAAO,gBAC9GK,UAAW,CAAE5R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,QAASyC,UAAW,YAAauP,MAAO,gBACrFM,QAAS,CAAE7R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,SAAUyC,UAAW,UAAWuP,MAAO,gBAClFO,UAAW,CAAE9R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,eAAgByC,UAAW,YAAauP,MAAO,gBAC5FQ,OAAQ,CAAE/R,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,gBAAiByC,UAAW,SAAUuP,MAAO,gBACvFS,OAAQ,CAAEhS,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,UAAWyC,UAAW,SAAUuP,MAAO,gBACjFU,WAAY,CAAEjS,OAAO,EAAOsR,KAAM,KAAM/R,KAAM,SAAUyC,UAAW,aAAcuP,MAAO,iBAE5FW,WAAY,CACRlS,MAAO,GAAIgC,UAAW,aAAcmQ,IAAK,EAAGC,IAAK,GAAInQ,KAAM,EAAGoQ,WAAY,EAAGnQ,GAAI,EAAGoQ,SAAU,EAAGC,KAAM,EAAGC,MAAO,EAAGrC,YAAa,yBACjI7N,OAAQ,CACJ,UAAW,YAAa,YAAa,YAAa,aAAc,aAAc,eAGtFmQ,UAAW,CACPzS,MAAO,GAAIgC,UAAW,YAAamQ,IAAK,EAAGC,IAAK,EAAGnQ,KAAM,EAAGC,GAAI,EAAGqQ,KAAM,GAAIC,MAAO,EAAGrC,YAAa,6BACpG7N,OAAQ,CACJ,UAAW,WAAY,YAAa,YAAa,YAAa,QAAS,QAAS,SAAU,WAGlGoQ,iBAAkB,CACd1S,MAAO,GAAIgC,UAAW,mBAAoBmQ,IAAK,EAAGC,IAAK,IAAKnQ,KAAM,EAAGC,GAAI,EAAGqQ,KAAM,GAAIC,MAAO,EAAGrC,YAAa,4BAC7G7N,OAAQ,CACJ,UAAW,WAAY,WAAY,YAAa,YAAa,cAGrEkwC,WAAY,CAACxyC,MAAO,GAAIgC,UAAW,cACnCywC,UAAW,CAACzyC,MAAO,GAAIgC,UAAW,aAClC0wC,iBAAkB,CAAC1yC,MAAO,GAAIgC,UAAW,oBACzC2wC,QAAS,CAAE3yC,MAAO,EAAGmS,IAAK,EAAGC,IAAK,GAAIpQ,UAAW,WACjD4wC,SAAU,CAAE5yC,MAAO,EAAGmS,IAAK,EAAGC,IAAK,GAAIpQ,UAAW,YAClD6wC,WAAY,CACR7yC,MAAO,GAAIgC,UAAW,aAEtB8wC,aAAc,CAAE9yC,OAAO,EAAOsR,KAAM,QAAS/R,KAAM,mBAAoByC,UAAW,eAAgBuP,MAAO,cACzGwhC,iBAAkB,CAAE/yC,OAAO,EAAOsR,KAAM,MAAO/R,KAAM,mBAAoByC,UAAW,mBAAoBuP,MAAO,cAC/GyhC,YAAa,CAAEhzC,OAAO,EAAOsR,KAAM,UAAW/R,KAAM,mBAAoByC,UAAW,cAAeuP,MAAO,aAAc8T,SAAU,kBAErI4tB,OAAQ,CAAEjzC,MAAO,GAAIgC,UAAW,WAEpC8vC,aAAc,CACVQ,QAAS,CAAEtyC,MAAO,GAAIgC,UAAW,WACjCkxC,aAAc,CAAElzC,MAAO,EAAGgC,UAAW,gBACrC8sC,cAAe,CAAE9uC,OAAO,EAAMgC,UAAW,iBACzCmxC,QAAS,CAAEnzC,MAAO,cAAegC,UAAW,WAC5CwV,YAAa,CAAExX,MAAO,GAAIgC,UAAW,cAAekL,KAAM,GAAIkmC,UAAW,EAAG7D,SAAS,EAAM8D,WAAW,EAAOC,UAAW,GACxHC,cAAe,CAAEvzC,MAAO,GAAIgC,UAAW,gBAAiBkL,KAAM,GAAIkmC,UAAW,EAAG7D,SAAS,EAAM8D,WAAW,EAAOC,UAAW,GAC5HE,gBAAiB,CAAExzC,MAAO,GAAIgC,UAAW,kBAAmBkL,KAAM,GAAIkmC,UAAW,EAAG7D,SAAS,EAAM8D,WAAW,EAAOC,UAAW,GAChIG,iBAAkB,CAAEzzC,MAAO,GAAIgC,UAAW,mBAAoBkL,KAAM,GAAIkmC,UAAW,EAAG7D,SAAS,EAAM8D,WAAW,EAAOK,qBAAsB,GAAIJ,UAAW,GAC5J7D,uBAAwB,CAAEzvC,MAAO,GAAIgC,UAAW,yBAA0BkL,KAAM,GAAIkmC,UAAW,EAAG7D,SAAS,EAAM8D,WAAW,EAAOC,UAAW,GAC9IvB,gBAAiB,CAAE/xC,MAAO,GAAIgC,UAAW,kBAAmBkL,KAAM,GAAIkmC,UAAW,EAAG7D,SAAS,EAAM8D,WAAW,IAElHz4B,eAAgB,CACZwN,YAAa,GACbuD,YAAa,GACbC,WAAY,GACZC,QAAS,GACTnU,UAAW,GACXoU,MAAO,GACPC,OAAQ,GACRE,WAAY,GACZlU,WAAY,GACZC,aAAc,GACdxV,SAAU,GACV+C,iBAAkB,GAClB0S,QAAS,GACTC,SAAU,GACVqT,WAAY,GACZ1T,UAAW,GACXF,eAAgB,GAChBC,YAAa,GACb+P,cAAe,GACfiB,gBAAiB,GACjBnR,iBAAkB,GAClB1L,WAAY,GACZ9F,KAAM,GACND,UAAW,GACXF,YAAa,GACbulB,cAAe,GACfC,gBAAiB,GACjB/T,gBAAiB,GACjB0wB,QAAS,GACT9B,KAAM,GACN1e,MAAO,GACP4E,cAAc,GACd/B,eAAgB,GAChBzP,MAAO,IA8BXurB,eAAgB,CACZiD,SAAU,CAAErpC,MAAO,UACnBmsC,aAAc,CAAEnsC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,eAAgBkO,MAAO,kBAAmBC,YAAa,4BAA6BC,UAAW,IAAKE,UAAW,WACvL87B,YAAa,CAAEpsC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,cAAekO,MAAO,OAAQC,YAAa,iBAAkBC,UAAW,KAC/Ii8B,WAAY,CAAErsC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,aAAckO,MAAO,UAAWC,YAAa,oBAAqBC,UAAW,KAEnJC,MAAO,CAAErQ,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,QAASkO,MAAO,cAAeC,YAAa,wBAAyBC,UAAW,GAAIE,UAAW,WAChKkhC,aAAc,CAAExxC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,eAAgBkO,MAAO,oBAAqBC,YAAa,0BAA2BC,UAAW,GAAIE,UAAW,WAEtL46B,YAAa,CAAElrC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,cAAekO,MAAO,iBAAkBC,YAAa,2BAA4BC,UAAW,GAAIE,UAAW,WAElLC,MAAO,CAAEvQ,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,QAASkO,MAAO,QAASC,YAAa,kBAAmBC,UAAW,KACrI66B,aAAc,CAAEjrC,OAAO,EAAMgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,eAAgBkO,MAAO,2BAA4BC,YAAa,KAE1I49B,cAAe,CAAE/tC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,gBAAiBkO,MAAO,aAAcC,YAAa,cAAeC,UAAW,KACtJo9B,YAAa,CAAExtC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,cAAekO,MAAO,OAAQC,YAAa,QAASC,UAAW,KACtIq9B,WAAY,CAAEztC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,aAAckO,MAAO,UAAWC,YAAa,WAAYC,UAAW,KAC1Is9B,SAAU,CACN1tC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,WAAYkO,MAAO,QAASC,YAAa,SACjG1N,OAAQ,IAGZ8qC,SAAU,CAAEvtC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,WAAYkO,MAAO,iBAAkBC,YAAa,kBAAmBC,UAAW,IAAKE,UAAW,WAEpKq9B,cAAe,CACX3tC,MAAO,GAAIgQ,UAAU,EAAMC,aAAc,GAAIjO,UAAW,gBAAiBkO,MAAO,gCAAiCC,YAAa,iCAC9H1N,OAAQ,KAIhBg9B,WAAY,CACRxH,eAAgB,CAAEj4B,MAAO,MACzBs1B,WAAY,CAAEt1B,MAAO,MACrBg0B,qBAAsB,CAAEh0B,MAAO,GAC/B40B,eAAgB,CAAE50B,MAAO,GACzB2zB,UAAW,CACPC,KAAM,YACN2B,KAAM,OACN2a,IAAK,OAETzc,iBAAkB,CACdzzB,MAAO,CACH0zB,QAAS,KACTuc,YAAa,OAGrB7Z,gBAAiB,CAAEp2B,MAAO,MAC1B4yB,0BAA2B,CAAE5yB,MAAO,EAAGgC,UAAW,6BAClD8wB,sBAAuB,CAAE9yB,MAAO,EAAGgC,UAAW,yBAC9CgxB,qBAAsB,CAAEhzB,MAAO,EAAGgC,UAAW,wBAE7CixB,6BAA8B,CAAEjzB,MAAO,GACvCkzB,qBAAsB,CAAElzB,MAAO,GAC/BiyB,oBAAqB,CAAEjyB,MAAO,EAAGoQ,UAAW,EAAGwhB,SAAU,EAAGuB,SAAU,EAAGljB,aAAc,GAAImjB,KAAM,IACjGlB,wBAAyB,CAAElyB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAGuB,SAAU,EAAGljB,aAAc,IAC5FsjB,gCAAiC,CAAEvzB,MAAO,GAC1CmyB,0BAA2B,CAAEnyB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAGuB,SAAU,EAAGljB,aAAc,IAC9FujB,kCAAmC,CAAExzB,MAAO,GAC5CoyB,mBAAoB,CAAEpyB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAGlB,SAAU,KAAMzgB,aAAc,IAC1FoiB,uBAAwB,CAAEryB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAG3hB,aAAc,IAC9EqjB,sBAAuB,CAAEtzB,OAAO,GAEhC21B,iCAAkC,CAAE31B,MAAO,GAC3C41B,yBAA0B,CAAE51B,MAAO,GACnCsyB,wBAAyB,CAAEtyB,MAAO,EAAGoQ,UAAW,EAAG+iB,SAAU,EAAGljB,aAAc,GAAImjB,KAAM,IACxFb,4BAA6B,CAAEvyB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAGuB,SAAU,EAAGljB,aAAc,IAChG4lB,oCAAqC,CAAE71B,MAAO,GAC9CwyB,8BAA+B,CAAExyB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAGuB,SAAU,EAAGljB,aAAc,IAClG6lB,sCAAuC,CAAE91B,MAAO,GAChDyyB,uBAAwB,CAAEzyB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAG3hB,aAAc,IAC9EyiB,2BAA4B,CAAE1yB,MAAO,EAAGoQ,UAAW,GAAIwhB,SAAU,EAAG3hB,aAAc,IAElFknB,mBAAoB,CAAEn3B,MAAO,IAC7Bo3B,uBAAwB,CAAEp3B,MAAO,KA2DrC+S,QAAS,MAEbC,SAAU,CACNhG,iBAAkB,SAACkG,EAAOC,GACtB,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMlP,aAAajC,GAAO/B,MAAQA,CACtC,EACA2zC,iBAAkB,SAACzgC,EAAOC,GACtB,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMlP,aAAajC,GAAO/B,MAAQ,GAClCkT,EAAMlP,aAAajC,GAAOU,OAASzC,CACvC,EACA4zC,qBAAsB,SAAC1gC,EAAOC,GAC1B,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBhC,EAAQmT,EAAOpG,QAAQ/M,MACvBiC,EAAOkR,EAAOpG,QAAQ9K,KACtBC,EAAKiR,EAAOpG,QAAQ7K,GAE1BgR,EAAMlP,aAAajC,GAAO/B,MAAQA,EAClCkT,EAAMlP,aAAajC,GAAOE,KAAOiR,EAAMlP,aAAajC,GAAOO,OAAOH,QAAQF,GAEtEiR,EAAMlP,aAAajC,GAAOG,GADnB,QAAPA,EAC+BgR,EAAMlP,aAAajC,GAAOqQ,IAG1Bc,EAAMlP,aAAajC,GAAOO,OAAOH,QAAQD,EAEhF,EACA2xC,yBAA0B,SAAC3gC,EAAOC,GAC9B,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBhC,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMlP,aAAajC,GAAOO,OAAStC,CACvC,EACA8zC,eAAgB,SAAC5gC,EAAOC,GACpB,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UAE7BkR,EAAMlP,aAAajC,GAAOyQ,OAAS,CACvC,EACAuhC,eAAgB,SAAC7gC,EAAOC,GACpB,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBhC,EAAQmT,EAAOpG,QAAQ/M,MACvBuR,EAAQ4B,EAAOpG,QAAQwE,MAEvBmC,EAAc9V,OAAOgE,KAAKsR,EAAMlP,aAAauN,IAAQ5T,OAAS,EAEpEuV,EAAMlP,aAAauN,GAAOxP,GAAO/B,MAAQA,EAEzC,IAAM8E,EAAOlH,OAAO+V,QAAQT,EAAMlP,aAAauN,IAAQqC,KAAI,SAACC,GACxD,GAAgB,cAAZA,EAAK,IAAkC,UAAZA,EAAK,IAAkBA,EAAK,GAAG7T,MAC1D,OAAO6T,EAAK,GAAGvC,IAEvB,IAAG5O,QAAO,SAAAC,GAAC,OAAIA,CAAC,IAEhBuQ,EAAMlP,aAAauN,GAAOvR,MAAQ8E,EAAKnH,SAAW+V,EAAc,GAAK5O,EAAKhC,KAAK,IAEnF,EACAkxC,YAAa,SAAC9gC,EAAOC,GAEjBvV,OAAOgE,KAAKsR,EAAMlP,cAAclC,SAAQ,SAAUxB,GAClC,aAARA,GAA8B,YAARA,EACtB4S,EAAMlP,aAAa1D,GAAKN,MAAQ,EACjB,UAARM,IAGP4S,EAAMlP,aAAa1D,GAAKN,MAAQ,GAExC,IAEAkT,EAAMlP,aAAasB,aAAa+L,UAAUrR,OAAQ,EAClDkT,EAAMlP,aAAasB,aAAakM,KAAKxR,OAAQ,EAC7CkT,EAAMlP,aAAasB,aAAamM,UAAUzR,OAAQ,EAClDkT,EAAMlP,aAAasB,aAAaoM,MAAM1R,OAAQ,EAC9CkT,EAAMlP,aAAasB,aAAaqM,mBAAmB3R,OAAQ,EAC3DkT,EAAMlP,aAAasB,aAAasM,UAAU5R,OAAQ,EAClDkT,EAAMlP,aAAasB,aAAauM,QAAQ7R,OAAQ,EAChDkT,EAAMlP,aAAasB,aAAawM,UAAU9R,OAAQ,EAClDkT,EAAMlP,aAAasB,aAAayM,OAAO/R,OAAQ,EAC/CkT,EAAMlP,aAAasB,aAAa0M,OAAOhS,OAAQ,EAC/CkT,EAAMlP,aAAasB,aAAa2M,WAAWjS,OAAQ,EAEnDkT,EAAMlP,aAAa6uC,WAAWC,aAAa9yC,OAAQ,EACnDkT,EAAMlP,aAAa6uC,WAAWE,iBAAiB/yC,OAAQ,EACvDkT,EAAMlP,aAAa6uC,WAAWG,YAAYhzC,OAAQ,EAElDkT,EAAMlP,aAAakO,WAAWjQ,KAAO,EACrCiR,EAAMlP,aAAakO,WAAWhQ,GAAK,EACnCgR,EAAMlP,aAAakO,WAAWM,OAAS,EACvCU,EAAMlP,aAAayO,UAAUxQ,KAAO,EACpCiR,EAAMlP,aAAayO,UAAUvQ,GAAK,EAClCgR,EAAMlP,aAAayO,UAAUD,OAAS,EACtCU,EAAMlP,aAAa0O,iBAAiBzQ,KAAO,EAC3CiR,EAAMlP,aAAa0O,iBAAiBxQ,GAAK,EACzCgR,EAAMlP,aAAa0O,iBAAiBF,OAAS,CAEjD,EACA88B,uBAAwB,SAACp8B,EAAOC,GAC5B,IAAMpR,EAAQoR,EAAOpG,QAAQ/K,UACvBkL,EAAOiG,EAAOpG,QAAQG,KACtBqiC,EAAUp8B,EAAOpG,QAAQwiC,QACzB+D,EAAYngC,EAAOpG,QAAQumC,UAC3BW,EAAU9gC,EAAOpG,QAAQknC,QAE/B/gC,EAAM4+B,aAAa/vC,GAAOmL,KAAOA,EACjCgG,EAAM4+B,aAAa/vC,GAAOwtC,QAAUA,EACpCr8B,EAAM4+B,aAAa/vC,GAAOuxC,UAAYA,EACtCpgC,EAAM4+B,aAAa/vC,GAAOkyC,QAAUA,CACxC,EACAC,iBAAkB,SAAChhC,EAAOC,GACtB,IAAIghC,EAAkBhhC,EAAOpG,QAAQqnC,YAC/BroC,EAAaooC,EAAgBpoC,WAC7BsoC,EAAWlhC,EAAOpG,QAAQsnC,SAE1BroC,GAAOmoC,EAAgBnoC,KAEzBsoC,EAAWphC,EAAM4+B,aAAa2B,iBAAiBzzC,MAAMuC,MAAM,KAE3DyJ,IAASsoC,EAASpoC,SAASH,GAC3BmH,EAAM4+B,aAAa2B,iBAAiBzzC,MAAQ,GAAAoC,OAAAwB,IAAI0wC,GAAQ,CAAEvoC,IAAYrJ,QAAO,SAAAC,GAAC,OAAIA,CAAC,IAAEG,KAAK,MAElFkJ,GAAQsoC,EAASpoC,SAASH,KAClCmH,EAAM4+B,aAAa2B,iBAAiBzzC,MAAQs0C,EAAS5xC,QAAO,SAAAC,GAAC,OAAIA,IAAMoJ,CAAU,IAAEjJ,KAAK,MAG5F,IAAIijB,EAAS7S,EAAM4+B,aAAauC,GAAUnnC,KAAKC,MAAK,SAAAxK,GAAC,OAAIA,EAAEoJ,aAAeA,CAAU,IAChFga,IAAQA,EAAO/Z,KAAOA,EA2B9B,EACAuoC,iBAAkB,SAACrhC,EAAOC,GACtB,IAAMkhC,EAAWlhC,EAAOpG,QAAQsnC,SAC1BG,EAAmBrhC,EAAOpG,QAAQynC,iBAClCnoC,EAAa6G,EAAM4+B,aAAauC,GAAUnnC,KAEhD,GAAIsnC,GAAoBnoC,EAAW1O,OAAS,EAAG,CAC3C,IAAMuP,EAAOsnC,EAAiBjyC,MAAM,KACpCgN,MAAMtN,KAAKoK,GAAY,SAAA1J,GACfuK,EAAKhB,SAASvJ,EAAEoJ,YAChBpJ,EAAEqJ,MAAO,EAETrJ,EAAEqJ,MAAO,CAEjB,GACJ,CAEJ,EACAyoC,2BAA4B,SAACvhC,EAAOC,GAChC,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMlP,aAAajC,GAAO/B,MAAQA,EAElCA,EAAMuC,MAAM,KAAKT,SAAQ,SAAC4yC,GACtB,IAAIC,EAAW/2C,OAAOgE,KAAKsR,EAAMlP,aAAajC,IAAQoL,MAAK,SAAAxK,GAAC,OAAIuQ,EAAMlP,aAAajC,GAAOY,GAAG2O,OAASojC,CAAS,IAC3GxhC,EAAMlP,aAAajC,GAAO4yC,KAC1BzhC,EAAMlP,aAAajC,GAAO4yC,GAAU30C,OAAQ,EAEpD,IAEApC,OAAOgE,KAAKsR,EAAMlP,aAAajC,IAAQD,SAAQ,SAACxB,GAChC,cAARA,GAA+B,UAARA,GAAmB4S,EAAMlP,aAAajC,GAAOzB,GAAKgR,OAAStR,IAClFkT,EAAMlP,aAAajC,GAAOzB,GAAKN,OAAQ,EAE/C,GACJ,EACA40C,uBAAwB,SAAC1hC,EAAOC,GAC5B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAM4+B,aAAa/vC,GAAO/B,MAAQA,CACtC,EACA60C,sBAAuB,SAAC3hC,EAAOC,GAC3B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAM4+B,aAAa/vC,GAAOsxC,UAAYrzC,CAC1C,EACA80C,4BAA6B,SAAC5hC,EAAOC,GACjC,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAM4+B,aAAa/vC,GAAOqxC,UAAYpzC,CAC1C,EACAowC,qBAAsB,SAACl9B,EAAOC,GAC1B,IAAMnT,EAAQmT,EAAOpG,QAAQ/M,MAC7BkT,EAAM0H,eAAiB5a,CAO3B,EACA6xB,oBAAqB,SAAC3e,EAAOC,GACzB,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MACvBmzB,EAAWhgB,EAAOpG,QAAQomB,SAC1BzC,EAAWvd,EAAOpG,QAAQ2jB,SAC1BzgB,EAAekD,EAAOpG,QAAQkD,aAC9B8kC,EAAU5hC,EAAOpG,QAAQgoC,QACzB3hB,EAAOjgB,EAAOpG,QAAQqmB,UAQd3uB,IAAVzE,IACAkT,EAAMusB,WAAW19B,GAAO/B,MAAQA,QAGnByE,IAAb0uB,IACAjgB,EAAMusB,WAAW19B,GAAOoxB,SAAWA,QAGtB1uB,IAAbisB,IACAxd,EAAMusB,WAAW19B,GAAO2uB,SAAWA,QAGlBjsB,IAAjBwL,IACAiD,EAAMusB,WAAW19B,GAAOkO,aAAeA,QAG3BxL,IAAZswC,IACA7hC,EAAMusB,WAAW19B,GAAOgzC,QAAUA,QAGzBtwC,IAAT2uB,IACAlgB,EAAMusB,WAAW19B,GAAOqxB,KAAOA,EAEvC,EACAtB,mBAAoB,SAAC5e,EAAOC,GACxB,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvBkO,EAAekD,EAAOpG,QAAQkD,aACpCiD,EAAMusB,WAAW19B,GAAOkO,aAAeA,CAC3C,EACA+kC,0BAA2B,SAAC9hC,EAAOC,GAC/B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAEzBkT,EAAMusB,WAAW19B,GAAOqO,UACxB8C,EAAMusB,WAAW19B,GAAO/B,MAAQA,EAAMe,MAAM,EAAGmS,EAAMusB,WAAW19B,GAAOqO,WAEvE8C,EAAMusB,WAAW19B,GAAO/B,MAAQA,EAEpCkT,EAAMusB,WAAW19B,GAAOyQ,OAAS,CACrC,EACAyiC,qBAAsB,SAAC/hC,EAAOC,GAC1B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMusB,WAAW19B,GAAS/B,CAE9B,EACAmpC,wBAAyB,SAACj2B,EAAOC,GAC7B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MACvBiQ,EAAekD,EAAOpG,QAAQkD,aAChCiD,EAAMkzB,eAAerkC,GAAOqO,UAC5B8C,EAAMkzB,eAAerkC,GAAO/B,MAAQA,EAAMe,MAAM,EAAGmS,EAAMkzB,eAAerkC,GAAOqO,WAE/E8C,EAAMkzB,eAAerkC,GAAO/B,MAAQA,EAGxCkT,EAAMkzB,eAAerkC,GAAOkO,aAAeA,CAC/C,EACAu5B,uBAAwB,SAACt2B,EAAOC,GAC5B,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvBkO,EAAekD,EAAOpG,QAAQkD,aACpCiD,EAAMkzB,eAAerkC,GAAOkO,aAAeA,CAC/C,EACA4gC,mBAAoB,SAAC39B,EAAOC,GACxB,IAAMpR,EAAQoR,EAAOpG,QAAQhL,MACvB/B,EAAQmT,EAAOpG,QAAQ/M,MAE7BkT,EAAMkzB,eAAerkC,GAAOU,OAASzC,CACzC,KAKDk1C,EAIqE7C,EAAc/8B,QAJ3EtI,EAAgBkoC,EAAhBloC,iBAAkB2mC,EAAgBuB,EAAhBvB,iBAAkBC,EAAoBsB,EAApBtB,qBAAgDE,GAAFoB,EAAxBrB,yBAAwCqB,EAAdpB,gBAAgBC,EAAcmB,EAAdnB,eAAgBC,EAAWkB,EAAXlB,YAC/H1E,EAAsB4F,EAAtB5F,uBAAwB4E,EAAgBgB,EAAhBhB,iBAAkBO,EAA0BS,EAA1BT,2BAA4BG,EAAsBM,EAAtBN,uBAAwBC,EAAqBK,EAArBL,sBAC9FN,EAAgBW,EAAhBX,iBAAkBO,EAA2BI,EAA3BJ,4BAA6B1E,EAAoB8E,EAApB9E,qBAC/Cve,EAAmBqjB,EAAnBrjB,oBAAqBC,EAAkBojB,EAAlBpjB,mBACrBqX,GADkE+L,EAAzBF,0BAA+CE,EAApBD,qBAC7CC,EAAvB/L,yBAAyBK,EAAsB0L,EAAtB1L,uBAAwBqH,EAAkBqE,EAAlBrE,mBAEtCwB,MAAqB,O,kCC7lBpC,yHAKazjB,EAAgB,SAACrY,GAC5B,IAAMiC,EAAeiC,IAAM06B,WAAW18B,KAChC28B,EAAY57B,YAChBhB,EAAa68B,uBAAuB9+B,IAOtC,OACEkE,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,KACEC,UAAWgJ,IAAW,CACpB,SACA,sBACA,CAAE,aAAcqwB,KAElBzwB,QAZN,WACEnM,EAAa1B,mBAAmBP,EAClC,EAWM,YAAU,aAAa,YAAU,UAAU,YAAU,eAAe,YAAU,kBAAkB,YAAWA,EAAKxK,aAIxH,EAEao1B,EAAwB,SAAC5qB,GACpC,IAAMiC,EAAeiC,IAAM06B,WAAW18B,KAChC28B,EAAY57B,YAChBhB,EAAa68B,uBAAuB9+B,IAOtC,OACEkE,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OACEC,UAAWgJ,IAAW,CACpB,cACA,kBACA,UACA,CAAE,aAAcqwB,KAElBzwB,QAbN,WACEnM,EAAa1B,mBAAmBP,EAClC,EAYM,YAAU,aAAa,YAAU,UAAU,YAAU,eAAe,YAAU,kBAAkB,YAAWA,EAAKxK,YAEhH0O,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,YAAM,cAAYs5B,GAAa,SAIvC,C,kPC5CoBl0C,IAAOo0C,YACJp0C,IAAOq0C,eACHr0C,IAAOs0C,mBAyRlC,SAASzV,EAAS5hB,EAAWC,GAC3B,OAAOrU,YAAiBoU,EAAWC,EACrC,CAEO,IAwTMq3B,EAAch7B,IAAMC,MAAK,SAACC,GAErC,IAAM3W,EAAe2W,EACf+6B,EAAgB/6B,EAAM+6B,cACtB1oC,EAAmB2N,EAAM3N,iBAGzB2oC,GAFqBh7B,EAAMi7B,mBACJj7B,EAAMk7B,qBACdl7B,EAAMg7B,cACrBG,EAAan7B,EAAMm7B,WACnB9B,EAAcr5B,EAAMq5B,YAE1Bt6B,EAAgCC,mBAAS,IAAGC,EAAAC,IAAAH,EAAA,GAArCq8B,EAAQn8B,EAAA,GAAEo8B,EAAWp8B,EAAA,GAC5B+J,EAAgChK,mBAAS,IAAGiK,EAAA/J,IAAA8J,EAAA,GAArCsyB,EAAQryB,EAAA,GAAEsyB,EAAWtyB,EAAA,GAC5BE,EAA8BnK,mBAAS,IAAGoK,EAAAlK,IAAAiK,EAAA,GAAnCqyB,EAAOpyB,EAAA,GAAEqyB,EAAUryB,EAAA,GAC1BE,EAA8BtK,mBAAS,IAAGuK,EAAArK,IAAAoK,EAAA,GAAnCoyB,EAAOnyB,EAAA,GAAEoyB,EAAUpyB,EAAA,GAC1B2iB,EAA4CltB,mBAAS,IAAGmtB,EAAAjtB,IAAAgtB,EAAA,GAAjD0P,EAAczP,EAAA,GAAE0P,EAAiB1P,EAAA,GACxCG,EAA4CttB,mBAAS,IAAGutB,EAAArtB,IAAAotB,EAAA,GAAjDwP,EAAcvP,EAAA,GAAEwP,EAAiBxP,EAAA,GAKlCyP,EAAoB,SAACt7B,EAAMrb,GAClB,YAATqb,EAEFq6B,EAAc,UAAW11C,GACP,aAATqb,GAETq6B,EAAc,WAAY11C,EAG9B,EAEM42C,EAAe,SAACzkC,EAAKC,GAEzB,OAAKD,GAAQC,EAEDD,EAEAC,EAGH,GAAPhQ,OAAU+P,EAAG,KAAA/P,OAAIgQ,GAFVD,EAFA,KAAP/P,OAAYgQ,GAFL,EAQX,EAEMykC,EAAgB,SAAC90C,EAAO/B,GACf,OAAT+B,GACFi0C,EAAYh2C,GACZ01C,EAAc,aAAckB,EAAa52C,EAAOi2C,MAEhDC,EAAYl2C,GACZ01C,EAAc,aAAckB,EAAab,EAAU/1C,IAEvD,EAEM82C,EAAe,SAAC/0C,EAAO/B,GACd,OAAT+B,GACFq0C,EAAWp2C,GACX01C,EAAc,YAAakB,EAAa52C,EAAOq2C,MAE/CC,EAAWt2C,GACX01C,EAAc,YAAakB,EAAaT,EAASn2C,IAErD,EAEM+2C,EAAsB,SAACh1C,EAAO/B,GACrB,OAAT+B,GACFy0C,EAAkBx2C,GAClB01C,EAAc,mBAAoBkB,EAAa52C,EAAOy2C,MAEtDC,EAAkB12C,GAClB01C,EAAc,mBAAoBkB,EAAaL,EAAgBv2C,IAEnE,EA0CA,OACEya,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,UAAI,qBACJrB,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,uBAC9BtB,IAAAqB,cAAA,KAAGC,UAAU,8BAGjBtB,IAAAqB,cAAA,OAAKC,UAAU,yBACbtB,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,aACZnQ,MAAOgE,EAAasuC,QAAQtyC,MAC5B8lB,SAAU,SAAC3Z,GAAC,OAAKupC,EAAc,UAAWvpC,EAAE4Z,OAAO/lB,MAAM,EACzDg3C,WAAY,SAAC7qC,GAAC,MAAe,UAAVA,EAAE7L,KAAmBw1C,GAAY,IAEtDr7B,IAAAqB,cAAA,KAAGC,UAAU,+BAEftB,IAAAqB,cAAA,OAAKC,UAAU,yBACZne,OAAO+V,QAAQ3P,EAAa6uC,YAAYj/B,KAAI,SAACC,EAAM1J,GAAK,OAvCxC,SAAC0J,EAAM1J,GACtC,GAAgB,cAAZ0J,EAAK,IAAkC,UAAZA,EAAK,GAAgB,CAChCA,EAAK,GAAvB,IACM1W,EAAO0W,EAAK,GAGlB,OACE4G,IAAAqB,cAAA,OAAKC,UAAU,gBAAgBzb,IAAK,uBAAyB6J,GAC3DsQ,IAAAqB,cAACsJ,IAAmBoa,IAAA,GAAKriC,EAAI,CAAEskB,kBAAmBk0B,KAGxD,CACF,CA4BkBsB,CAAyBpjC,EAAM1J,EAAM,KAGzCsQ,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,eACrBtB,IAAAqB,cAACkF,IAAUwe,IAAA,CACTpwB,GAAG,gBACCpL,EAAagN,SAAQ,CACzByQ,kBAAmBzU,KAErByN,IAAAqB,cAACkF,IAAUwe,IAAA,CACTpwB,GAAG,gBACCpL,EAAamN,SAAQ,CACzBsQ,kBAAmBzU,KAErByN,IAAAqB,cAACkF,IAAUwe,IAAA,CACTpwB,GAAG,oBACCpL,EAAaoN,YAAW,CAC5BqQ,kBAAmBzU,MAGvByN,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,gBACrBtB,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAA,OAAKC,UAAU,oBACZne,OAAO+V,QAAQ3P,EAAasB,cAAcsO,KAAI,SAACC,EAAM1J,GAAK,OAjFxD,SAAC0J,EAAM1J,GAC5B,GAAgB,cAAZ0J,EAAK,IAAkC,UAAZA,EAAK,GAAgB,CAChCA,EAAK,GAAvB,IACM1W,EAAO0W,EAAK,GAGlB,OACE4G,IAAAqB,cAAA,OAAKC,UAAU,eAAezb,IAAK,kBAAoB6J,GACrDsQ,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAACmJ,IAAgBua,IAAA,GAAKriC,EAAI,CAAEskB,kBAAmBk0B,MAIvD,CACF,CAoEsBuB,CAAerjC,EAAM1J,EAAM,QAMrCsQ,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,YACrBtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,UACZnQ,MAAO+1C,EACPjwB,SAAU,SAAC3Z,GAAC,OAAK0qC,EAAc,MAAO1qC,EAAE4Z,OAAO/lB,MAAM,IAEvDya,IAAAqB,cAAA,YAAM,KACNrB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,SACZnQ,MAAOi2C,EACPnwB,SAAU,SAAC3Z,GAAC,OAAK0qC,EAAc,MAAO1qC,EAAE4Z,OAAO/lB,MAAM,MAI3Dya,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,YACrBtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,kBACZnQ,MAAOm2C,EACPrwB,SAAU,SAAC3Z,GAAC,OAAK2qC,EAAa,MAAO3qC,EAAE4Z,OAAO/lB,MAAM,IAEtDya,IAAAqB,cAAA,YAAM,KACNrB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,iBACZnQ,MAAOq2C,EACPvwB,SAAU,SAAC3Z,GAAC,OAAK2qC,EAAa,MAAO3qC,EAAE4Z,OAAO/lB,MAAM,MAI1Dya,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,iBACrBtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,kBACZnQ,MAAOu2C,EACPzwB,SAAU,SAAC3Z,GAAC,OAAK4qC,EAAoB,MAAO5qC,EAAE4Z,OAAO/lB,MAAM,IAE7Dya,IAAAqB,cAAA,YAAM,KACNrB,IAAAqB,cAAA,SACET,KAAK,OACLU,UAAU,eACV5L,YAAY,iBACZnQ,MAAOy2C,EACP3wB,SAAU,SAAC3Z,GAAC,OAAK4qC,EAAoB,MAAO5qC,EAAE4Z,OAAO/lB,MAAM,MAIjEya,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,WACrBtB,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,iBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,UAAW,IAAI,EAClDzxB,QAAwC,MAA/BlhB,EAAa2uC,QAAQ3yC,QAEhCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,iBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,UAAW,IAAI,EAClDzxB,QAAwC,MAA/BlhB,EAAa2uC,QAAQ3yC,QAEhCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,iBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,UAAW,IAAI,EAClDzxB,QAAwC,MAA/BlhB,EAAa2uC,QAAQ3yC,QAEhCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,iBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,UAAW,IAAI,EAClDzxB,QAAwC,MAA/BlhB,EAAa2uC,QAAQ3yC,QAEhCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,iBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,UAAW,IAAI,EAClDzxB,QAAwC,MAA/BlhB,EAAa2uC,QAAQ3yC,QAEhCya,IAAAqB,cAAA,aAAO,OAETrB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,iBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,UAAW,GAAG,EACjDzxB,QAAwC,KAA/BlhB,EAAa2uC,QAAQ3yC,QAEhCya,IAAAqB,cAAA,aAAO,cAKbrB,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,MAAIC,UAAU,QAAO,WACrBtB,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,kBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,WAAY,IAAI,EACnDzxB,QAAyC,MAAhClhB,EAAa4uC,SAAS5yC,QAEjCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,kBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,WAAY,IAAI,EACnDzxB,QAAyC,MAAhClhB,EAAa4uC,SAAS5yC,QAEjCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,kBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,WAAY,IAAI,EACnDzxB,QAAyC,MAAhClhB,EAAa4uC,SAAS5yC,QAEjCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,kBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,WAAY,IAAI,EACnDzxB,QAAyC,MAAhClhB,EAAa4uC,SAAS5yC,QAEjCya,IAAAqB,cAAA,aAAO,MAETrB,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,kBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,WAAY,IAAI,EACnDzxB,QAAyC,MAAhClhB,EAAa4uC,SAAS5yC,QAEjCya,IAAAqB,cAAA,aAAO,OAETrB,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,SACET,KAAK,QACL9b,KAAK,kBACLumB,SAAU,SAAC3Z,GAAC,OAAKwqC,EAAkB,WAAY,GAAG,EAClDzxB,QAAyC,KAAhClhB,EAAa4uC,SAAS5yC,QAEjCya,IAAAqB,cAAA,aAAO,gBAMjBrB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,KAAG6N,UAAM,EAAQ5N,UAAU,aAAa4I,QAASmxB,GAAY,eAG7Dr7B,IAAAqB,cAAA,KAAG6N,UAAM,EAAQ5N,UAAU,mBAAmB4I,QAASqvB,GACrDv5B,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,YAAM,qBAQtB,GAAGikB,G,wBC97BGz+B,EAAYJ,IAAOI,UACnBE,EAAIX,OAAOW,EAEJ21C,EAAY,SAACx8B,GACxB,IAAMy8B,EAAO,SAACz8B,GACZ,IAAIy2B,EA2KJ,OAtFEA,EACE32B,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUC,OAAQwa,UAAU,eACnCtB,IAAAqB,cAAA,OAAKK,IAAI,oEAAoEC,IAAI,YAcnF3B,IAAAqB,cAAA,UAAQT,KAAK,SAASU,UAAU,cAC9BtB,IAAAqB,cAAA,KAAGC,UAAU,wCACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BA+DrB/B,qBAAU,WACRxY,EAAE,wEAAwEic,KAAK,WAAY,WAC7F,GAAG,IAGDhD,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OAAKC,UAAU,yCACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,UACET,KAAK,SACL,iBAAe,YACf,iBAAe,eACf,gBAAc,cACd,aAAW,cACX9b,KAAK,eAELkb,IAAAqB,cAAA,QAAMC,UAAU,qBAChBtB,IAAAqB,cAAA,QAAMC,UAAU,qBAChBtB,IAAAqB,cAAA,QAAMC,UAAU,uBAGpBtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,KAAG6N,KAAK,MAAM5D,OAAO,SACnBtL,IAAAqB,cAAA,OACEC,UAAU,aACVI,IAAI,mFACJC,IAAI,WAGR3B,IAAAqB,cAAA,OAAKC,UAAU,WACftB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUq+B,KAAM5Z,OAAO,SAC9BtL,IAAAqB,cAAA,OACEC,UAAU,kBACVI,IAAI,gFACJC,IAAI,kBAKZ3B,IAAAqB,cAAA,OAAKC,UAAU,iBACbtB,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUC,QAAQ,mBAE7BkZ,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAU+1C,WAAW,aAEhC58B,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUg2C,UAAU,0BAE/B78B,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAK,+BAA8B,iBAExClP,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAK,gCAAgC9L,MAAM,aAAY,cAI5DpD,IAAAqB,cAAA,MAAIC,UAAU,wCACZtB,IAAAqB,cAAA,OACEC,UAAU,kBACV,YAAU,aACV,YAAU,wBACV,YAAU,WACV8B,MAAM,sBAENpD,IAAAqB,cAAA,YAAM,uBAERrB,IAAAqB,cAAA,MAAIC,UAAU,8BACZtB,IAAAqB,cAAA,MAAIC,UAAU,qBACZtB,IAAAqB,cAAA,KACE6N,KAAK,kFACL9L,MAAM,4BACN,YAAU,aACV,YAAU,qCACV,YAAU,YACX,6BAGDpD,IAAAqB,cAAA,KAAGC,UAAU,oBAEftB,IAAAqB,cAAA,MAAIC,UAAU,qBACZtB,IAAAqB,cAAA,KACE6N,KAAK,4FACL9L,MAAM,oCACN,YAAU,aACV,YAAU,4CACV,YAAU,YACX,qCAGDpD,IAAAqB,cAAA,KAAGC,UAAU,sBAOnBtB,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUi2C,KAAK,qBAI7BnG,EAGP,EA4BA,OA1BAp3B,qBAAU,WAERxP,SAASgtC,iBAAiB,8BAA8B11C,SAAQ,SAAU+R,GACxEA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCu9B,UAAUzrC,KAAK,CACb0rC,MAAO,cACP+N,eAAgB,SAChBC,aAAc,QACdC,YAAazrC,EAAE4Z,OAAO3J,KAE1B,GACF,IAGA5R,SAASgtC,iBAAiB,kCAAkC11C,SAAQ,SAAU+R,GAC5EA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCu9B,UAAUzrC,KAAK,CACb0rC,MAAO,cACP+N,eAAgB,SAChBC,aAAc,QACdC,YAAazrC,EAAE4Z,OAAO8xB,WAE1B,GACF,GACF,IAEIl9B,EAAMvT,KAENqT,IAAAqB,cAAA,OAAK1M,GAAG,eAAe2M,UAAU,gCAC/BtB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAACs7B,EAASz8B,KAMhBF,IAAAqB,cAAA,OAAK1M,GAAG,eAAe2M,UAAU,2BAC/BtB,IAAAqB,cAACs7B,EAASz8B,GAGhB,EAEam9B,EAAY,WAcvB,OAbA99B,qBAAU,WAERxP,SAASgtC,iBAAiB,0CAA0C11C,SAAQ,SAAU+R,GACpFA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCtL,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,cACP+N,eAAgB,SAChBC,aAAc,QACdC,YAAazrC,EAAE4Z,OAAO8xB,WAE1B,GACF,GACF,GAAG,IAEDp9B,IAAAqB,cAAA,OACE1M,GAAG,cACH2M,UAAU,6CACV,iBAAe,QACf,mBAAiB,OACjB4Q,SAAS,MAETlS,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,KAAG6N,KAAK,MAAM5D,OAAO,SACnBtL,IAAAqB,cAAA,OACEK,IAAI,mEACJC,IAAI,QACJL,UAAU,gBAGdtB,IAAAqB,cAAA,OAAKC,UAAU,WACftB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUq+B,KAAM5Z,OAAO,SAC9BtL,IAAAqB,cAAA,OACEK,IAAI,wEACJC,IAAI,aACJL,UAAU,sBAIhBtB,IAAAqB,cAAA,UACET,KAAK,SACLU,UAAU,wBACV,kBAAgB,YAChB,aAAW,QACXxc,KAAK,uBAGTkb,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,MAAIC,UAAU,mBACZtB,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUC,QAAQ,mBAE7BkZ,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAU+1C,WAAW,aAEhC58B,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUg2C,UAAU,0BAE/B78B,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAK,+BAA8B,iBAExClP,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAK,gCAAgC9L,MAAM,aAAY,cAI5DpD,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,OACEC,UAAU,sFACV8B,MAAM,qBACN,YAAU,aACV,YAAU,wBACV,YAAU,YAEVpD,IAAAqB,cAAA,YAAM,sBACNrB,IAAAqB,cAAA,KAAGC,UAAU,oBAEftB,IAAAqB,cAAA,MAAIC,UAAU,YACZtB,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KACE6N,KAAK,kFACL,YAAU,aACV,YAAU,qCACV,YAAU,WACV9L,MAAM,6BACP,8BAIHpD,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KACE6N,KAAK,4FACL,YAAU,aACV,YAAU,4CACV,YAAU,WACV9L,MAAM,qCACP,wCASPpD,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUi2C,KAAK,mBAE1B98B,IAAAqB,cAAA,UACErB,IAAAqB,cAAA,KAAG6N,KAAK,OACNlP,IAAAqB,cAAA,OACEK,IAAI,mEACJC,IAAI,QACJ0B,MAAO,CAAE4jB,OAAQ,OAAQqW,YAAa,UACrC,IAAI,WACE,QAKjBt9B,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAG6N,KAAK,sCAAsC5D,OAAO,SAAShK,UAAU,cACtEtB,IAAAqB,cAAA,KAAGC,UAAU,wCAEftB,IAAAqB,cAAA,KAAG6N,KAAK,qCAAqC5D,OAAO,SAAShK,UAAU,cACrEtB,IAAAqB,cAAA,KAAGC,UAAU,uCAEftB,IAAAqB,cAAA,KAAG6N,KAAK,yCAAyC5D,OAAO,SAAShK,UAAU,cACzEtB,IAAAqB,cAAA,KAAGC,UAAU,uCAEftB,IAAAqB,cAAA,KAAG6N,KAAK,uCAAuC5D,OAAO,SAAShK,UAAU,cACvEtB,IAAAqB,cAAA,KAAGC,UAAU,oCAMzB,EAEao1B,EAAmB,SAACx2B,GAC/B,IAAAsrB,EAAuBC,aAAY,SAAChzB,GAAK,MAAK,CAACA,EAAMxS,SAASsD,aAAa,IAApEA,EAAqE6V,IAAAosB,EAAA,GAAzD,GAEnB,OACExrB,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAACk8B,EAAMxY,IAAA,GAAKx7B,EAAkB2W,IAGpC,EAEMq9B,EAASv9B,IAAMC,MAAK,SAACC,GACzB,IAAM3W,EAAe2W,EAEf7N,EAAWskB,cAkDjB,SAASnkB,EAAmBF,GAC1BD,EAAS6mC,YAAiB5mC,GAC5B,CAuGA,OAzJAiN,qBAAU,WACRtR,YAAgB,CACdd,QAAS,qBAERC,MAAK,SAAC1K,GACL,IAAI+P,EAAOqC,MAAMtN,KAAK9E,GAAM,SAACwF,GAC3B,MAAO,CACLuf,KAAMvf,EAAEs1C,cACRj4C,MAAO2C,EAAEu1C,UACTr6B,MAAOlb,EAAEmmC,UACTtmC,SAAU,CAAEumB,SAAUpmB,EAAEomB,SAAUovB,UAAWx1C,EAAEw1C,WAEnD,IAEAjrC,EAAOtJ,IAAIsJ,GAAMqS,MAAK,SAAUvV,EAAGC,GACjC,OAAOD,EAAEkY,KAAKk2B,cAAcnuC,EAAEiY,KAChC,IAEApV,EAAS6mC,YAAiB,CAAE5xC,MAAO,UAAW/B,MAAOkN,IACvD,IAAE,OACK,SAAUjF,GAGjB,IACCJ,MAAK,WACJiF,EAAS6mC,YAAiB,CAAE5xC,MAAO,WAAY/B,MAAOgR,MACxD,IA0JJnQ,OAAO6oC,UAAY7oC,OAAO6oC,WAAa,GAEvCl/B,SACGgtC,iBAAiB,oDACjB11C,SAAQ,SAAU+R,GACjBA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCtL,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,cACP+N,eAAgB,gBAChBC,aAAc,cACdC,YAAa,4BAEjB,GACF,IAGFptC,SACGgtC,iBAAiB,6EACjB11C,SAAQ,SAAU+R,GACjBA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCtL,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,cACP+N,eAAgB,cAChBC,aAAc,cACdC,YAAa,gBAEjB,GACF,IAGFptC,SAASgtC,iBAAiB,6CAA6C11C,SAAQ,SAAU+R,GACvFA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCksC,WACEx3C,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,cACP+N,eAAgB,cAChBC,aAAc,QACdC,YAAazrC,EAAE4Z,OAAO8xB,YAExB,IAEJ,GACF,IAGArtC,SACGgtC,iBACC,2GAED11C,SAAQ,SAAU+R,GACjBA,EAAK4jC,iBAAiB,SAAS,SAAUtrC,GACvCtL,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,cACP+N,eAAgBltC,SAAS8tC,cAAc,mDACpCT,UACHF,aAAc,QACdC,YAAazrC,EAAE4Z,OAAO8xB,UAAU10C,QAAQ,MAAO,KAEnD,GACF,GAjNF,GAAG,IA4HDsX,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,UAAQ1M,GAAG,UACTqL,IAAAqB,cAAA,OAAK1M,GAAG,YAAY2M,UAAU,aAC5BtB,IAAAqB,cAACq7B,EAAS,CAAC/F,UAAWz2B,EAAMy2B,UAAWmH,KAAM59B,EAAM49B,OACnD99B,IAAAqB,cAAA,OAAK1M,GAAG,+BAKZqL,IAAAqB,cAACg8B,EAAS,MACVr9B,IAAAqB,cAAC25B,EAAWjW,IAAA,GACNx7B,EAAY,CAChBgJ,iBAtIN,SAA4BD,GAC1BF,YAAuBC,EAAUC,EAAS/I,EAAcgJ,IAAkBC,EAa5E,EAyHM2oC,mBA9GN,SAA8B5zC,EAAWC,EAAMC,GAC7C,IAAM6K,EAAUvD,YAAiBxH,EAAWC,EAAMC,GAElD4K,EAAS8mC,YAAqB7mC,GAChC,EA2GM8oC,qBAzGN,SAAgC7zC,EAAWC,EAAMC,GAC/C,IAAM6K,EAAUvD,YAAiBxH,EAAWC,EAAMC,GAElD4K,EAAS8mC,YAAqB7mC,IAC9BD,EAASgnC,YAAe,CAAE9xC,cAC5B,EAqGM2zC,aAnGN,SAAsB3zC,EAAWhC,EAAOuR,GAEtCzE,EAASinC,YAAe,CAAE/xC,YAAWhC,QAAOuR,UAC9C,EAiGMukC,WA/FN,WAGE,IAAInsC,EAAM,GAGV,GAFA9I,OAAO6oC,UAAY7oC,OAAO6oC,WAAa,GAoEM,OAA3CloC,EAAE,wBAAwByV,IAAI,WAAsBzV,EAAE,uBAAuB+H,SAAS,QAlExE,CACdI,EAAMjI,YAAesC,GACrB,IAAIw0C,EAAcx0C,EAAasuC,QAAQtyC,MAEnCy4C,EAAkB,CACpBz0C,EAAagN,SAAShR,MACtBgE,EAAamN,SAASnR,MACtBgE,EAAaoN,YAAYpR,OAExB0C,QAAO,SAACC,GAAC,OAAKA,CAAC,IACfG,KAAK,KAEJ41C,EAAkB,CACpB10C,EAAasB,aAAatF,MAC1BgE,EAAakO,WAAWlS,MACxBgE,EAAayO,UAAUzS,MACvBgE,EAAa0O,iBAAiB1S,MAC9BgE,EAAa2uC,QAAQ3yC,MACrBgE,EAAa4uC,SAAS5yC,MACtBgE,EAAauuC,QAAQvyC,OAEpB0C,QAAO,SAACC,GAAC,OAAKA,CAAC,IACfG,KAAK,KAEJ61C,EAAkB30C,EAAa6uC,WAAW7yC,MAC9Ca,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,eACPiD,cAAe,SACfC,YAAa,qBACbC,WAAY,iCACZ8L,YAAa,GAAFx2C,OAAKo2C,GAChBK,WAAY,GAAFz2C,OAAKq2C,GACfK,YAAa,GAAF12C,OAAKs2C,GAChBK,YAAa,GAAF32C,OAAKu2C,IAEpB,MACEhvC,EAAMjI,YAAe,CAAE4wC,QAAStuC,EAAasuC,QAAQtyC,QACrDa,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,eACPiD,cAAe,SACfC,YAAa,qBACbC,WAAY,iCACZ8L,YAAa,GAAFx2C,OAAK4B,EAAasuC,QAAQtyC,OACrC64C,WAAY,GACZC,YAAa,GACbC,YAAa,KAKjBl4C,OAAOkkC,KAAKp7B,EAAK,QACnB,EAuCMqqC,YArCN,WAEEnzC,OAAO6oC,UAAUzrC,KAAK,CACpB0rC,MAAO,cACP+N,eAAgB,gBAChBC,aAAc,cACdC,YAAa,iBAEf9qC,EAASknC,cACX,EA6BM0B,cAxHN,SAAuB1zC,EAAWhC,GAEhC8M,EAASE,YAAiB,CAAEjL,MAAOC,EAAWhC,MAAOA,IACvD,KA0HF,GAAG+J,I,gLC9pBGzI,GAFUkU,KAAKK,UAAbjC,IAEU1S,IAAOI,WACnBiZ,EAAiBrZ,IAAOqZ,eACxBkT,EAAsBvsB,IAAOusB,oBAwB5B,IAAMurB,EAAc,WACzB,IAAMxgC,EAAeiC,IAAM06B,WAAW18B,KAChCwgC,EAAwBz/B,YAC5BhB,EAAa0gC,wBAGf,SAASC,IACP3gC,EAAa4gC,0BACf,CAEA,OACE3+B,IAAAqB,cAAA,WAAS1M,GAAG,eACVqL,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,OAAKC,UAAU,wBACbtB,IAAAqB,cAAA,KAAGC,UAAU,6BAEftB,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,KAAGC,UAAU,+BACbtB,IAAAqB,cAAA,UAAI,qBACJrB,IAAAqB,cAAA,QAAMC,UAAU,kBAAiB,IAC7Bk9B,EAAsB,QAG5Bx+B,IAAAqB,cAAA,QAAMC,UAAU,aAAY,uDAI9BtB,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,OAAKC,UAAU,0BAAyBtB,IAAAqB,cAAA,KAAG6N,UAAM,EAAUhF,QAASw0B,GAA4B,sBAChG1+B,IAAAqB,cAAA,KACE2iB,SAAUwa,EAAwB,EAClCtvB,KAAMroB,EAAU+3C,QAChBt9B,UAAU,qBACV3M,GAAG,eACJ,eAGDqL,IAAAqB,cAAA,OAAKC,UAAU,gBACbtB,IAAAqB,cAAA,KAAGC,UAAU,+BAInBtB,IAAAqB,cAACw9B,EAAc,MACf7+B,IAAAqB,cAAA,OAAKC,UAAU,6BACbtB,IAAAqB,cAAA,KACE6N,KAAMroB,EAAU+3C,QAChBt9B,UAAU,qBACV3M,GAAG,eACJ,eAGDqL,IAAAqB,cAAA,OAAKC,UAAU,0BAAyBtB,IAAAqB,cAAA,KAAG6N,UAAM,EAAUhF,QAASw0B,GAA4B,wBAK1G,EAEMG,EAAiB,WACrB,IAAM9gC,EAAeiC,IAAM06B,WAAW18B,KAChCnB,EAAsBkC,YAC1BhB,EAAa+gC,wBAGf,OACE9+B,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OAAKC,UAAU,eACZzE,aAAmB,EAAnBA,EAAqB1D,KAAI,SAACC,GAAI,OAC7B4G,IAAAqB,cAAC09B,EAAiB3lC,EAAQ,KAKpC,EAEM2lC,EAAe,SAACjjC,GACpB,IAnFwB7V,EAAUouB,EAC5B2qB,EAkFAjhC,EAAeiC,IAAM06B,WAAW18B,KAEhC9J,EAtGR,SAAyBjO,GACvB,GAAqC,IAAjC9C,OAAOgE,KAAKlB,GAAU/C,OAAc,MAAO,GAE/C,IAAIgR,EAAe,GAWnB,OATIjO,EAASgX,WAAoC,MAAvBhX,EAASgX,WACjC/I,EAAejO,EAASgX,WACP/Z,OAAS,KACxBgR,EAAeA,EAAa5N,MAAM,EAAG,IAAM,OAG7C4N,EAAe,GAAHvM,OAAMgD,YAAgB1E,GAAS,KAAA0B,OAAI1B,EAASsX,cAGnDrJ,CACT,CAuFuB+qC,CAAgBnjC,GAC/BojC,GArFAF,EAAkB/4C,OADAA,EAsFe6V,IArFU,QAAjBuY,EAARpuB,EAAU6W,uBAAe,IAAAuX,OAAA,EAAzBA,EAA4B,GAC7C,GAAP1sB,OAAUmY,GAAcnY,OAAGq3C,aAAe,EAAfA,EAAiB1+B,YA0F5C,OAAoC,IAA7Bnd,OAAOgE,KAAK2U,GAAM5Y,OACvB8c,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUC,OAAQwa,UAAU,cACnCtB,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,KAAGC,UAAU,6BAEftB,IAAAqB,cAAA,OAAKC,UAAU,YAAW,gBAG1BtB,IAAAqB,cAAA,OAAKC,UAAU,QACbtB,IAAAqB,cAAA,OAAKC,UAAU,2BACbtB,IAAAqB,cAAA,OACEK,IAAKw9B,EACL7rB,QAAS,SAAFhnB,GAAyB,IAApBinB,EAAajnB,EAAbinB,cACVA,EAAcC,QAAU,KACxBD,EAAc5R,IAAMsR,CACtB,EACArR,IAAKzN,KAGT8L,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OAAKC,UAAU,oBACbtB,IAAAqB,cAAA,OACEK,IAAKw9B,EACL7rB,QAAS,SAAFnlB,GAAyB,IAApBolB,EAAaplB,EAAbolB,cACVA,EAAcC,QAAU,KACxBD,EAAc5R,IAAMsR,CACtB,EACArR,IAAKzN,KAGT8L,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OAAKC,UAAU,QAAQpN,GACvB8L,IAAAqB,cAAA,OAAKC,UAAU,YACbtB,IAAAqB,cAAA,KAAGC,UAAU,2BACbtB,IAAAqB,cAAA,YAAA1Z,OAAOmU,EAAKwB,WAAU,KAAA3V,OAAImU,EAAKyB,kBAIrCyC,IAAAqB,cAAA,OAAKC,UAAU,mBACbtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,QAAMC,UAAU,SACb7X,YACCqS,EAAKoB,eAAiBpB,EAAKoB,eAAiBpB,EAAKsB,YAE9C,OAGRtB,EAAKoB,gBACJ8C,IAAAqB,cAAA,OAAKC,UAAU,aAAa7X,YAAUqS,EAAKsB,aAG/C4C,IAAAqB,cAAA,OAAKC,UAAU,eACbtB,IAAAqB,cAAA,KACEC,UAAU,mBACV4I,QA5Dd,WACEnM,EAAaohC,sBAAsBrjC,EACrC,OAiEF,EChLasjC,G,MAAwB,WACnC,IAAMrhC,EAAeiC,IAAM06B,WAAW18B,KAChCwgC,EAAwBz/B,YAC5BhB,EAAa0gC,wBASf,OANAr4C,OAAOi5C,mBAEP,SAA0BvjC,GACxBiC,EAAa1B,mBAAmBP,EAClC,EAGEkE,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAAA,OACEC,UAAWg+B,IAAW,CACpB,CAAE,UAAWC,QAAQf,IACrB,0BAGFx+B,IAAAqB,cAAA,OAAKC,UAAU,qBACbtB,IAAAqB,cAAA,KAAGC,UAAU,UAAUk9B,GACvBx+B,IAAAqB,cAAA,KAAGC,UAAU,iCAGjBtB,IAAAqB,cAACk9B,EAAW,MAGlB,GC9BM13C,EAAYJ,IAAOI,UAIZ8wC,GAFHvxC,OAAOW,EAEU,SAACmZ,GAC1B,IAAAjB,EAAkCC,mBAAS,GAAEC,EAAAC,IAAAH,EAAA,GAAtCugC,EAASrgC,EAAA,GAAEsgC,EAAYtgC,EAAA,GAe9B,SAASugC,IACHx/B,EAAMw/B,SACRx/B,EAAMw/B,WAENC,EAAQ,0CAGZ,CAcA,SAASA,EAAQzwC,GACf9I,OAAOkkC,KAAKp7B,EAAK,QACnB,CAQA,YA5CoClF,IAAhCkW,EAAM0/B,uBACRrgC,qBAAU,WACRsgC,aAAY,WACV,IAAI9nC,EAAQlH,YAAU,oBACnB/I,MAAM,KACNG,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEhF,OAChB6U,GAASynC,GACXC,EAAa1nC,EAEjB,GAAG,IACL,GAAG,IA4BL3R,OAAOiL,gBAEP,SAAsB9B,EAAGC,GACvB6B,YAAgB9B,EAAGC,EACrB,EAGEwQ,IAAAqB,cAAArB,IAAAwB,SAAA,KACExB,IAAAqB,cAACy+B,EAAU,WACsB91C,IAAhCkW,EAAM0/B,sBACL5/B,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBAuBbtB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUq+B,KAAM5jB,UAAU,WACnC,YAAU,aAAa,YAAU,WAAW,YAAU,WACpDtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KAAGC,UAAU,0CACbtB,IAAAqB,cAAA,QAAMC,UAAU,YAAW,cAG/BtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASw1B,EAAUp+B,UAAU,WAC1D,YAAU,QAAQ,YAAU,WAAW,YAAU,WAC/CtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KAAGC,UAAU,4BACuD,IAAnEpB,EAAM0/B,sBAAsB93C,MAAM,KAAKG,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEhF,QACvD8c,IAAAqB,cAAA,QAAMC,UAAU,2BACbpB,EAAM0/B,sBAAsB93C,MAAM,KAAKG,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEhF,QAG7D8c,IAAAqB,cAAA,QAAMC,UAAU,YAAW,eACyC,IAAnEpB,EAAM0/B,sBAAsB93C,MAAM,KAAKG,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEhF,QACvD8c,IAAAqB,cAAA,QAAMC,UAAU,2BACbpB,EAAM0/B,sBAAsB93C,MAAM,KAAKG,QAAO,SAACC,GAAC,OAAKA,CAAC,IAAEhF,UAKjE8c,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAU+1C,UAAWt7B,UAAU,WACxC,YAAU,aAAa,YAAU,YAAY,YAAU,WACrDtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KAAGC,UAAU,iCACbtB,IAAAqB,cAAA,QAAMC,UAAU,YAAW,gBAMnCtB,IAAAqB,cAAA,OAAKC,UAAU,cACbtB,IAAAqB,cAAA,OAAKC,UAAU,kBACbtB,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAUq+B,KAAM5jB,UAAU,WACnC,YAAU,aAAa,YAAU,WAAW,YAAU,WACpDtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KAAGC,UAAU,0CACbtB,IAAAqB,cAAA,QAAMC,UAAU,YAAW,cAG/BtB,IAAAqB,cAAA,KAAG6N,KAAK,qBAAqBhF,QAASw1B,EAAUp+B,UAAU,WAC1D,YAAU,QAAQ,YAAU,WAAW,YAAU,WAC/CtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KAAGC,UAAU,4BACE,IAAdk+B,GAAmBx/B,IAAAqB,cAAA,QAAMC,UAAU,2BAA2Bk+B,GAC/Dx/B,IAAAqB,cAAA,QAAMC,UAAU,YAAW,eACZ,IAAdk+B,GAAmBx/B,IAAAqB,cAAA,QAAMC,UAAU,2BAA2Bk+B,KAGnEx/B,IAAAqB,cAAA,KAAG6N,KAAMroB,EAAU+1C,UAAWt7B,UAAU,WACxC,YAAU,aAAa,YAAU,YAAY,YAAU,WACrDtB,IAAAqB,cAAA,WACErB,IAAAqB,cAAA,KAAGC,UAAU,iCACbtB,IAAAqB,cAAA,QAAMC,UAAU,YAAW,gBAoBrCtB,IAAAqB,cAAC+9B,EAAqB,MAG5B,GAEMU,EAAa,WACjB,IAAMC,EAA+B,WACnC,OACE//B,IAAAqB,cAAA,KAAG6N,KAAK,4CACL5N,UAAU,OACV8B,MAAM,cAAa,aAI1B,EAEM48B,EAAqB,WACzB,OACEhgC,IAAAqB,cAAA,KACE6N,KAAK,4CACL5N,UAAU,OACV8B,MAAM,cACP,aAIL,EACM68B,EAAyB,WAC7B,OACEjgC,IAAAqB,cAAA,KACE6N,KAAK,gDACL5N,UAAU,OACV8B,MAAM,eACP,cAIL,EACM88B,EAA2B,WAC/B,OACElgC,IAAAqB,cAAA,KACE6N,KAAK,kDACL5N,UAAU,OACV8B,MAAM,gBACP,eAIL,EACM+8B,EAAkC,WACtC,OACEngC,IAAAqB,cAAA,KACE6N,KAAK,0DACL5N,UAAU,OACV8B,MAAM,gBACP,eAIL,EACMg9B,EAAoB,WACxB,OACEpgC,IAAAqB,cAAA,KACE6N,KAAK,2CACL5N,UAAU,OACV8B,MAAM,UACP,SAIL,EAEMi9B,EAAmB,SAACngC,GACxB,OACEF,IAAAqB,cAAArB,IAAAwB,SAAA,KACGtB,EAAMogC,cAAgBtgC,IAAAqB,cAAC0+B,EAA4B,MAAI,IAAC//B,IAAAqB,cAAC2+B,EAAkB,MAAI,IAChFhgC,IAAAqB,cAAC4+B,EAAsB,MAAG,IAACjgC,IAAAqB,cAAC6+B,EAAwB,MAAG,IAAClgC,IAAAqB,cAAC8+B,EAA+B,MAAI,IAAI,OAC5FngC,IAAAqB,cAAC++B,EAAiB,MAAI,IAGhC,EACA,OAAuE,GAAnEh6C,OAAO2B,SAASw4C,SAAS74C,QAAQ,8BAEjCsY,IAAAqB,cAAA,WAASC,UAAU,gBACjBtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,MAAIC,UAAU,sBAAqB,gDACnCtB,IAAAqB,cAAA,SAAG,8GAEiBrB,IAAAqB,cAACg/B,EAAgB,CAACC,cAAc,IAAQ,wCAMa,GAAtEl6C,OAAO2B,SAASw4C,SAAS74C,QAAQ,iCAExCsY,IAAAqB,cAAA,WAASC,UAAU,gBACjBtB,IAAAqB,cAAA,OAAKC,UAAU,aACbtB,IAAAqB,cAAA,MAAIC,UAAU,sBAAqB,4CACnCtB,IAAAqB,cAAA,SAAG,yGAEmBrB,IAAAqB,cAACg/B,EAAgB,CAACC,cAAc,IAAQ,uCAQpEtgC,IAAAqB,cAAA,WAASC,UAAU,gBAEjBtB,IAAAqB,cAAA,MAAIC,UAAU,sBAAqB,0CACnCtB,IAAAqB,cAAA,SAAG,uDACmDrB,IAAAqB,cAACg/B,EAAgB,CAACC,cAAc,IAAQ,2FAMpG,C,qBCxRA,IAAI50B,EAAM,EAAQ,IACFC,EAAU,EAAQ,IAIC,iBAFvBA,EAAUA,EAAQjmB,WAAaimB,EAAQC,QAAUD,KAG/CA,EAAU,CAAC,CAAClnB,EAAOzB,EAAI2oB,EAAS,MAG9C,IAAIE,EAAU,CAEdA,OAAiB,OACjBA,WAAoB,GAEPH,EAAIC,EAASE,GAI1BpnB,EAAOD,QAAUmnB,EAAQG,QAAU,CAAC,C,kCClBpC,mBAEIC,EAFJ,MAE8B,IAA4B,GAE1DA,EAAwBvoB,KAAK,CAACiB,EAAOzB,EAAI,gIAAiI,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yCAAyC,MAAQ,GAAG,SAAW,iDAAiD,eAAiB,CAAC,iIAAiI,WAAa,MAEtc,W,qBCNf,IAAI0oB,EAAM,EAAQ,IACFC,EAAU,EAAQ,IAIC,iBAFvBA,EAAUA,EAAQjmB,WAAaimB,EAAQC,QAAUD,KAG/CA,EAAU,CAAC,CAAClnB,EAAOzB,EAAI2oB,EAAS,MAG9C,IAAIE,EAAU,CAEdA,OAAiB,OACjBA,WAAoB,GAEPH,EAAIC,EAASE,GAI1BpnB,EAAOD,QAAUmnB,EAAQG,QAAU,CAAC,C,kCClBpC,mBAEIC,EAFJ,MAE8B,IAA4B,GAE1DA,EAAwBvoB,KAAK,CAACiB,EAAOzB,EAAI,oHAAqH,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,8CAA8C,eAAiB,CAAC,qHAAqH,WAAa,MAErb,W,kCCNf,kCAAO,IAAMmsB,EAAoB,6F,kBCAjC1qB,EAAOD,QAAUg8C,O,qBCAjB,IAAI90B,EAAM,EAAQ,IACFC,EAAU,EAAQ,IAIC,iBAFvBA,EAAUA,EAAQjmB,WAAaimB,EAAQC,QAAUD,KAG/CA,EAAU,CAAC,CAAClnB,EAAOzB,EAAI2oB,EAAS,MAG9C,IAAIE,EAAU,CAEdA,OAAiB,OACjBA,WAAoB,GAEPH,EAAIC,EAASE,GAI1BpnB,EAAOD,QAAUmnB,EAAQG,QAAU,CAAC,C,kCClBpC,mBAEIC,EAFJ,MAE8B,IAA4B,GAE1DA,EAAwBvoB,KAAK,CAACiB,EAAOzB,EAAI,myFAAoyF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kCAAkC,MAAQ,GAAG,SAAW,k+BAAk+B,eAAiB,CAAC,oyFAAoyF,WAAa,MAEtrN,W","file":"Detail.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([364,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import Config from \"config\";\r\nimport axios from \"axios\";\r\n\r\nconst backendPFSURL = Config?.backendPFSURL;\r\nconst API_URL = process.env.API_ROOT_URL + backendPFSURL;\r\nconst searchPagePath = Config?.pagesLink?.search;\r\nconst $ = window.$;\r\n\r\nconst mapipingForFriendlyUrl = {\r\n \"Tab=popularProperty\": \"/th/propertyforsale/search/popular-propert\",\r\n \"Tab=newProperty\": \"/th/propertyforsale/search/new-property\",\r\n \"Tab=promoProperty\": \"/th/propertyforsale/search/promotion\",\r\n \"propertyType=01\": \"/th/propertyforsale/search/land\",\r\n \"propertyType=02\": \"/th/propertyforsale/search/house\",\r\n \"propertyType=03\": \"/th/propertyforsale/search/townhouse\",\r\n \"propertyType=05\": \"/th/propertyforsale/search/condominium\",\r\n \"propertyType=04\": \"/th/propertyforsale/search/commercial-building\",\r\n \"propertyType=12\": \"/th/propertyforsale/search/warehouse\",\r\n \"propertyType=09\": \"/th/propertyforsale/search/factory\",\r\n \"propertyType=15\": \"/th/propertyforsale/search/apartment\",\r\n \"propertyType=10\": \"/th/propertyforsale/search/office-building\",\r\n \"propertyType=20\": \"/th/propertyforsale/search/resort\",\r\n \"province=10\": \"/th/propertyforsale/search/bangkok\",\r\n \"province=12\": \"/th/propertyforsale/search/nonthaburi\",\r\n \"province=13\": \"/th/propertyforsale/search/pathumthani\",\r\n \"province=11\": \"/th/propertyforsale/search/samutprakan\",\r\n \"province=73\": \"/th/propertyforsale/search/nakhonpathom\",\r\n \"province=50\": \"/th/propertyforsale/search/chiangmai\",\r\n \"province=20\": \"/th/propertyforsale/search/chonburi\",\r\n \"province=40\": \"/th/propertyforsale/search/khonkaen\",\r\n \"province=30\": \"/th/propertyforsale/search/nakhonratchasima\",\r\n \"province=83\": \"/th/propertyforsale/search/phuket\",\r\n \"rangePrice=0,1000000\": \"/th/propertyforsale/search/price-0-1m\",\r\n \"rangePrice=1000000,3000000\": \"/th/propertyforsale/search/price-1-3m\",\r\n \"rangePrice=3000000,5000000\": \"/th/propertyforsale/search/price-3-5m\",\r\n \"rangePrice=5000000,10000000\": \"/th/propertyforsale/search/price-5-10m\",\r\n \"rangePrice=10000000,20000000\": \"/th/propertyforsale/search/price-10-20m\",\r\n \"rangePrice=20000000\": \"/th/propertyforsale/search/price-over20m\",\r\n};\r\n\r\nexport const gotoSearchPage = (args) => {\r\n // Province\r\n // District\r\n // SubDistrict\r\n // PropertyType\r\n // RangePrice\r\n // AreaRange\r\n // UseableAreaRange\r\n // Bedroom\r\n //bathroom\r\n // Station\r\n // Keyword\r\n // AssetTypes\r\n\r\n if (Object.keys(args).length === 0) {\r\n return searchPagePath;\r\n }\r\n\r\n let queryParams = [];\r\n Object.keys(args).forEach(function (key) {\r\n var field = args[key].fieldName;\r\n if (args[key].value) {\r\n if (key === \"rangePrice\" || key === \"areaRange\" || key === \"useableAreaRange\") {\r\n let value = args[key].value;\r\n let from = \"0\";\r\n let to = \"0\";\r\n\r\n if (value.indexOf(\"สูงสุด\") !== -1) {\r\n to = value;\r\n value = `${unitToValue(from)},${unitToValue(to)}`;\r\n } else if (value.indexOf(\"เริ่มต้น\") !== -1) {\r\n from = value;\r\n to = args[key].values.slice(-1)[0];\r\n value = `${unitToValue(from)}`;\r\n } else {\r\n from = value.split(\"-\")[0];\r\n to = value.split(\"-\")[1];\r\n value = `${unitToValue(from)},${unitToValue(to)}`;\r\n }\r\n\r\n // value = `${unitToValue(from)},${unitToValue(to)}`;\r\n queryParams.push(`${field}=${value}`);\r\n } else if (key === \"order\") {\r\n } else if (key === \"station\") {\r\n queryParams.push(`${field}=${args[key].value}`);\r\n var location = args[key].option.filter((x) => x.value == args[key].value)[0];\r\n if (location) {\r\n queryParams.push(`Nearby=${JSON.stringify(location.location)}`);\r\n }\r\n } else {\r\n queryParams.push(`${field}=${args[key].value}`);\r\n }\r\n } else if (typeof args[key] === \"string\" && args[key]) {\r\n queryParams.push(`${field}=${args[key]}`);\r\n }\r\n });\r\n if (mapipingForFriendlyUrl[queryParams.join(\"&\")]) {\r\n return mapipingForFriendlyUrl[queryParams.join(\"&\")] + \"?\";\r\n }\r\n return searchPagePath + \"?\" + queryParams.join(\"&\") + \"&\" + getUTM();\r\n};\r\n\r\nexport function unitToValue(num) {\r\n const multiple = num.indexOf(\"บาท\") !== -1 ? 1000000 : num.indexOf(\"ไร่\") !== -1 ? 400 : 1;\r\n const value = parseFloat(num.replace(/\\D+/g, \"\"));\r\n // console.log(\"float\", num, value)\r\n return value * multiple;\r\n}\r\n\r\nexport function addSearchUrlParameter(obj, property) {\r\n if (history.pushState) {\r\n let param = [];\r\n\r\n const paramKeys = Object.keys(obj);\r\n const paramValues = Object.values(obj);\r\n\r\n for (const i in paramKeys) {\r\n param = [...param, `${paramKeys[i]}=${paramValues[i] ?? \"\"}`];\r\n }\r\n\r\n var newurl =\r\n window.location.protocol +\r\n \"//\" +\r\n window.location.host +\r\n gotoSearchPage(property.searchFilter) +\r\n (param.length > 0 && `${param.join(\"&\")}`);\r\n window.history.pushState({ path: newurl }, \"\", newurl);\r\n }\r\n}\r\n\r\nexport function addCommas(nStr, z) {\r\n nStr += \"\";\r\n nStr = nStr.replace(/,/g, \"\");\r\n let x = nStr.split(\".\");\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? \".\" + x[1] : \"\";\r\n let rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, \"$1\" + \",\" + \"$2\");\r\n }\r\n if (z !== undefined) {\r\n if (z === 0) {\r\n x2 = \"\";\r\n } else {\r\n x2 = isNaN(parseFloat(x2)) ? \".\" + \"0\".repeat(z) : parseFloat(x2).toFixed(z).slice(1);\r\n }\r\n }\r\n return x1 + x2;\r\n}\r\n\r\nexport function getUTM() {\r\n let utmParam = \"\";\r\n [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_content\", \"utm_term\"].forEach((x) => {\r\n var temp = getURLParameter(x);\r\n if (temp) {\r\n utmParam += \"&\" + x + \"=\" + temp;\r\n }\r\n });\r\n return utmParam.length > 1 ? utmParam.slice(1) : utmParam;\r\n}\r\n\r\nexport function getURLParameter(name) {\r\n name = name.toLowerCase();\r\n return (\r\n decodeURIComponent(\r\n (new RegExp(\"[?|&]\" + name + \"=\" + \"([^&;]+?)(&|#|;|$)\").exec(\r\n location.search.toLowerCase()\r\n ) || [, \"\"])[1].replace(/\\+/g, \"%20\")\r\n ) || null\r\n );\r\n}\r\n\r\nexport function getPropertyType(property) {\r\n var propertyType = (property.PropertyTypeName ?? \"\")\r\n .trim()\r\n .replace(/ +(?= )/g, \"\")\r\n .split(\" \")[1];\r\n\r\n if (propertyType === \"บ้านพักอาศัย\") {\r\n return \"บ้านเดี่ยว\";\r\n } else if (propertyType === \"ห้องชุดพักอาศัย\") {\r\n return \"คอนโดมิเนียม\";\r\n } else if (propertyType === \"ที่ดินว่างเปล่า\") {\r\n return \"ที่ดิน\";\r\n } else if (propertyType === \"อาคารโรงงาน\") {\r\n return \"โรงงาน\";\r\n } else {\r\n return propertyType;\r\n }\r\n}\r\n\r\nexport function getPropertyTypeEn(property) {\r\n var propertyType = (property.PropertyTypeName ?? \"\")\r\n .trim()\r\n .replace(/ +(?= )/g, \"\")\r\n .split(\" \")[0];\r\n\r\n switch (propertyType) {\r\n case \"15\":\r\n return \"apartment\"; \r\n case \"05\":\r\n return \"condo\"; \r\n case \"02\":\r\n return \"house\"; \r\n case \"01\":\r\n return \"land\"; \r\n case \"99\":\r\n return \"manufactured\"; \r\n case \"03\":\r\n return \"townhouse\";\r\n default:\r\n return \"other\";\r\n }\r\n}\r\n\r\nexport function getArea(property) {\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (typeCode === \"05\") {\r\n //condo\r\n if (hasValue(property.UseableArea) && property.UseableArea !== 0) {\r\n return {\r\n value: property.UseableArea.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else if (hasValue(property.AreaValue) && property.AreaValue !== 0) {\r\n return {\r\n value: property.AreaValue.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n } else if (typeCode === \"17\") {\r\n //Office suite\r\n if (hasValue(property.UseableArea) && property.UseableArea !== 0) {\r\n return {\r\n value: property.UseableArea.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else if (hasValue(property.AreaValue) && property.AreaValue !== 0) {\r\n return {\r\n value: property.AreaValue.toFixed(2),\r\n unit: \"ตร.ม.\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n } else if (typeCode === \"02\" || typeCode === \"03\" || typeCode === \"04\" || typeCode === \"15\") {\r\n // House , Townhouse , Commercial building , Apartment\r\n if (hasValue(property.AreaValue) && property.AreaValue !== 0) {\r\n return {\r\n value: property.AreaValue.toFixed(2),\r\n unit: \"ตร.ว.\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n } else if (typeCode === \"99\") {\r\n // Machine\r\n return null;\r\n } else {\r\n //other\r\n if (hasValue(property.Area) && property.Area !== \"0-0-0.00\") {\r\n return {\r\n value: property.Area,\r\n unit: \"ไร่\",\r\n };\r\n } else if (hasValue(property.Rai) && hasValue(property.Ngan) && hasValue(property.SquareArea)) {\r\n const formattedString = `${property.Rai}-${property.Ngan}-${\r\n property.SquareArea.toFixed(2) || \"0.00\"\r\n }`;\r\n if (formattedString == \"0-0-0.00\") {\r\n return null;\r\n }\r\n return {\r\n value: formattedString,\r\n unit: \"ไร่\",\r\n };\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport function showBedAndBath(property) {\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (\r\n typeCode === \"02\" ||\r\n typeCode === \"03\" ||\r\n typeCode === \"04\" ||\r\n typeCode === \"15\" ||\r\n typeCode === \"05\" ||\r\n typeCode === \"20\" ||\r\n typeCode === \"08\"\r\n ) {\r\n //show bedroom and bathroom icon\r\n return true;\r\n } else {\r\n //other\r\n return false;\r\n }\r\n}\r\n\r\nexport function showAreaValue(property) {\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (typeCode === \"05\" || typeCode === \"17\") {\r\n //not show Area icon\r\n return false;\r\n } else {\r\n //other\r\n return true;\r\n }\r\n}\r\n\r\nexport function showUseableAreaValue(property) {\r\n const showUseableArea = [\"02\", \"03\", \"04\", \"15\", \"05\", \"17\"];\r\n var typeCode;\r\n\r\n if (hasValue(property.PropertyTypeName)) {\r\n typeCode = property.PropertyTypeName.trim().split(\" \")[0];\r\n } else {\r\n typeCode = null;\r\n }\r\n\r\n if (showUseableArea.indexOf(typeCode) !== -1) {\r\n //show UseableArea icon\r\n return true;\r\n } else {\r\n //other\r\n return false;\r\n }\r\n}\r\n\r\nfunction hasValue(val) {\r\n if (val === null || val === \"\" || val === undefined) {\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nexport function isMobile() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n}\r\n\r\nexport const postApiDataAsync = async (args) => {\r\n let objRequest = args.objRequest;\r\n console.log(\"in async (post) \", args.urlPath, objRequest);\r\n\r\n let apiUrl = API_URL;\r\n\r\n if (args.apiUrl) {\r\n apiUrl = process.env.API_ROOT_URL + args.apiUrl;\r\n }\r\n\r\n return axios.post(`${apiUrl}${args.urlPath}`, args.objRequest).then(\r\n function (data) {\r\n const result = JSON.parse(data.data.d);\r\n if (result.Success) {\r\n return result.Data;\r\n }\r\n throw result;\r\n },\r\n function (error) {\r\n throw {\r\n success: false,\r\n errorMsg: \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\",\r\n errorCode: error.response ? error.response.status : error,\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport const getApiDataAsync = async (args) => {\r\n console.log(\"in async (get) \", args.urlPath, args.params);\r\n\r\n let apiUrl = API_URL;\r\n\r\n if (args.apiUrl) {\r\n apiUrl = process.env.API_ROOT_URL + args.apiUrl;\r\n }\r\n\r\n return await axios\r\n .get(`${apiUrl}${args.urlPath}`, {\r\n params: args.params,\r\n headers: {\r\n \"Content-Type\": \"application/json;charset=utf-8\",\r\n },\r\n data: { unused: 0 },\r\n })\r\n .then(\r\n function (data) {\r\n const result = JSON.parse(data.data.d);\r\n if (result.Success) {\r\n return result.Data;\r\n }\r\n throw result;\r\n },\r\n function (error) {\r\n throw {\r\n success: false,\r\n errorMsg: \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\",\r\n errorCode: error.response ? error.response.status : error,\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport const tempgetApiDataAsync = async (args) => {\r\n return await axios\r\n .get(\"\\\\SiteCollectionDocuments\\\\assets\\\\PFS2022\\\\constants.json\", {\r\n headers: {\r\n \"Content-Type\": \"application/json;charset=utf-8\",\r\n },\r\n data: { unused: 0 },\r\n })\r\n .then(\r\n function (data) {\r\n const result = data.data.d;\r\n if (result.Success) {\r\n return result.Data;\r\n }\r\n throw result;\r\n },\r\n function (error) {\r\n throw {\r\n success: false,\r\n errorMsg: \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\",\r\n errorCode: error.response ? error.response.status : error,\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport function kloader(value) {\r\n const loader = $(\"#loadFormDiv\");\r\n\r\n if (typeof value !== \"undefined\") {\r\n if (value) {\r\n console.log(\"kloader start\");\r\n loader.removeClass(\"hide\");\r\n } else {\r\n console.log(\"kloader stop\");\r\n $(loader).addClass(\"hide\");\r\n }\r\n } else {\r\n if (loader.hasClass(\"hide\")) {\r\n console.log(\"kloader start\");\r\n loader.removeClass(\"hide\");\r\n } else {\r\n console.log(\"kloader stop\");\r\n $(loader).addClass(\"hide\");\r\n }\r\n }\r\n}\r\n\r\nexport function valueRangeMaxMin(fieldName, from, to) {\r\n let value = \"\";\r\n if (from === \"ไม่ระบุ\" && to === \"ไม่ระบุ\") {\r\n value = \"\";\r\n } else if (from === \"ไม่ระบุ\" || from === \"\") {\r\n value = \"สูงสุด \" + to;\r\n } else if (to === \"ไม่ระบุ\" || to === \"\") {\r\n value = \"เริ่มต้น \" + from;\r\n to = \"MAX\";\r\n } else {\r\n value = `${from} - ${to}`;\r\n }\r\n\r\n return { fieldName, value, from, to };\r\n}\r\n\r\nexport function copyObject(obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n}\r\n\r\nexport function getPathFromUrl(url) {\r\n var questionMarkIndex = url.indexOf(\"?\");\r\n var sharpIndex = url.indexOf(\"#\");\r\n\r\n if (questionMarkIndex === -1 && sharpIndex === -1) {\r\n return url;\r\n }\r\n\r\n var endIndex = url.length;\r\n\r\n if (questionMarkIndex !== -1 && questionMarkIndex < endIndex) {\r\n endIndex = questionMarkIndex;\r\n }\r\n\r\n if (sharpIndex !== -1 && sharpIndex < endIndex) {\r\n endIndex = sharpIndex;\r\n }\r\n\r\n return url.slice(0, endIndex);\r\n}\r\n\r\nexport function areEqualObjValue(a, b) {\r\n var valid = true;\r\n Object.keys(a).forEach((key, index) => {\r\n if (!a[key] || !b[key]) {\r\n return;\r\n }\r\n if (a[key].value !== b[key].value) {\r\n valid = false;\r\n return;\r\n }\r\n if (a[key].option?.length !== b[key].option?.length) {\r\n valid = false;\r\n return;\r\n }\r\n });\r\n return valid;\r\n}\r\n\r\nexport function noSpecialChar(value) {\r\n const noSpecialRegEx = /[^A-Za-z0-9\\u0E01-\\u0E3A\\u0E40-\\u0E4D\\-\\s]/g;\r\n return value.replace(noSpecialRegEx, \"\");\r\n}\r\n\r\nexport function scrollToValue(value) {\r\n document.body.scrollTop = value; // For Safari\r\n document.documentElement.scrollTop = value; // For Chrome, Firefox, IE and Opera\r\n}\r\n\r\nexport function setCookie(cname, cvalue, exdays) {\r\n console.log(\"react setCookie\" + cvalue);\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = \"expires=\" + d.toUTCString();\r\n document.cookie = cname + \"=\" + cvalue + \";\" + expires + \";path=/\";\r\n}\r\n\r\nexport function getCookie(cname) {\r\n let name = cname + \"=\";\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(\";\");\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == \" \") {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction containThai(value) {\r\n const isThai = /([\\u0E00-\\u0E7F]+)/g;\r\n return isThai.test(value);\r\n}\r\n\r\nfunction encodeURIThaiObject(obj) {\r\n if (typeof obj !== \"object\" || Array.isArray(obj)) {\r\n return;\r\n }\r\n\r\n Object.keys(obj).forEach(function (key) {\r\n if (typeof obj[key] === \"string\" && containThai(obj[key])) {\r\n obj[key] = encodeURIComponent(obj[key]);\r\n } else if (Array.isArray(obj[key])) {\r\n obj[key].map((x) => {\r\n return encodeURIThaiObject(x);\r\n });\r\n }\r\n });\r\n return obj;\r\n}\r\n\r\nexport function encodeThai(obj) {\r\n obj = JSON.parse(JSON.stringify(obj));\r\n obj = encodeURIThaiObject(obj);\r\n return obj;\r\n}\r\n\r\nexport function after(times, func) {\r\n return function () {\r\n if (--times < 1) {\r\n return func.apply(this, arguments);\r\n }\r\n };\r\n}\r\n\r\nexport function setLikeProperty(PropertyID, like) {\r\n var favProp = getCookie(\"favoriteProperty\");\r\n if (like) {\r\n if (!favProp.split(\",\").includes(PropertyID)) {\r\n setCookie(\r\n \"favoriteProperty\",\r\n favProp\r\n .split(\",\")\r\n .concat(PropertyID)\r\n .filter((x) => x)\r\n .join(\",\"),\r\n 30\r\n );\r\n }\r\n } else {\r\n if (favProp) {\r\n setCookie(\r\n \"favoriteProperty\",\r\n favProp\r\n .split(\",\")\r\n .filter((e) => e != PropertyID)\r\n .join(\",\"),\r\n 30\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport const getCookieData = (targetList) => {\r\n if (targetList.length === 0) return Promise.resolve({ Items: [] });\r\n return postApiDataAsync({\r\n urlPath: \"/GetProperties\",\r\n objRequest: {\r\n filter: {\r\n PageSize: Config.FavMaxPropertyReturnCount,\r\n CurrentPageIndex: 1,\r\n PropertyIds: targetList,\r\n },\r\n },\r\n });\r\n};\r\n\r\nexport const commonSearchDataChange = (\r\n dispatch,\r\n payload,\r\n searchFilter,\r\n searchDataChange,\r\n OnsearchListChange\r\n) => {\r\n const field = payload.field;\r\n\r\n if (field === \"province\") {\r\n const list = searchFilter[field].option.find((x) => x.value == payload.value);\r\n OnsearchListChange({ field: \"district\", value: list?.child || [] });\r\n OnsearchListChange({ field: \"subDistrict\", value: [] });\r\n } else if (field === \"district\") {\r\n const list = searchFilter[field].option.find((x) => x.value == payload.value);\r\n\r\n OnsearchListChange({ field: \"subDistrict\", value: list?.child || [] });\r\n }\r\n dispatch(searchDataChange(payload));\r\n};\r\n\r\nexport function timeInRangeList(rangeList, time = new Date()) {\r\n var result = null;\r\n rangeList.some((range) => {\r\n return time >= range[0] && time <= range[1] ? ((result = range), true) : false;\r\n });\r\n return result;\r\n}\r\n\r\nexport function dmyHmsToDateObj(str) {\r\n var dateTimeParts = str.split(\"T\");\r\n var dateParts = dateTimeParts[0].split(\"-\");\r\n var timeParts = dateTimeParts[1].split(\":\");\r\n\r\n return new Date(\r\n +dateParts[0],\r\n +dateParts[1] - 1,\r\n +dateParts[2],\r\n +timeParts[0],\r\n +timeParts[1],\r\n +timeParts[2]\r\n );\r\n}\r\nexport function getDateTimeFormat(date, hasTime = true) {\r\n var str = date.toLocaleDateString(\"th-TH\", {\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n });\r\n if (hasTime) {\r\n str +=\r\n \" เวลา \" +\r\n date.toLocaleTimeString(\"th-TH\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n }) +\r\n \" น.\";\r\n }\r\n\r\n return str;\r\n}\r\n\r\n// Global favorite func\r\nwindow.addToFavoriteProperty = function (id) {\r\n // Retrieve existing 'favoriteProperty' cookie value\r\n const existingFavorites = getCookie(\"favoriteProperty\") || \"\";\r\n\r\n // Split the existing favorites by commas\r\n const currentFavorites = existingFavorites.split(\",\");\r\n\r\n // Add the new ID to the existing favorites\r\n const updatedFavorites = [...currentFavorites, id];\r\n\r\n // Deduplicate the array by converting it to a Set and then back to an array\r\n const uniqueFavorites = Array.from(new Set(updatedFavorites));\r\n\r\n // Join the unique ids into a comma-separated string\r\n const updatedFavoritesString = uniqueFavorites.join(\",\");\r\n\r\n // Set the 'favoriteProperty' cookie with the updated value\r\n setCookie(\"favoriteProperty\", updatedFavoritesString, 30); // Change 30 to the desired expiration time in days\r\n};\r\n\r\nwindow.removeFromFavoriteProperty = function (id) {\r\n // Retrieve existing 'favoriteProperty' cookie value\r\n const existingFavorites = getCookie(\"favoriteProperty\") || \"\";\r\n\r\n // Split the existing favorites by commas\r\n const currentFavorites = existingFavorites.split(\",\");\r\n\r\n // Remove the specified ID from the existing favorites\r\n const updatedFavorites = currentFavorites.filter((favorite) => favorite !== id);\r\n\r\n // Join the remaining favorites into a comma-separated string\r\n const updatedFavoritesString = updatedFavorites.join(\",\");\r\n\r\n // Set the 'favoriteProperty' cookie with the updated value\r\n setCookie(\"favoriteProperty\", updatedFavoritesString, 30); // Change 30 to the desired expiration time in days\r\n};\r\n\r\nexport function groupDataBy(array, propertyName) {\r\n if (array) {\r\n return array.reduce((acc, obj) => {\r\n const key = obj[propertyName];\r\n if (!acc[key]) {\r\n acc[key] = [];\r\n }\r\n acc[key].push(obj);\r\n return acc;\r\n }, {});\r\n }else{\r\n return [];\r\n }\r\n}\r\n\r\nexport function addQueryString(queryParams) {\r\n const queryString = new URLSearchParams(queryParams).toString();\r\n return `?${queryString}`;\r\n}\r\n\r\nexport function getQueryStringParameter(param) {\r\n // Get the full query string from the URL\r\n const queryString = window.location.search;\r\n\r\n // Create a URLSearchParams object\r\n const urlParams = new URLSearchParams(queryString);\r\n\r\n // Get the value of the specified parameter\r\n return urlParams.get(param);\r\n}","import { createSlice } from '@reduxjs/toolkit'\r\nimport { noSpecialChar, valueRangeMaxMin } from '../common/Common'\r\nimport provinceData from 'province';\r\n\r\nexport const loginSlice = createSlice({\r\n name: \"counter\",\r\n initialState: {\r\n customerInfo: {\r\n fullName: { value: '', required: true, errorMessage: '', fieldName: 'fullName', label: 'ชื่อ-นามสกุล', placeholder: \"ชื่อ-นามสกุล\", maxLength: 250 },\r\n phone: { value: '', required: true, errorMessage: '', fieldName: 'phone', label: 'เบอร์โทรศัพท์', placeholder: \"เบอร์โทรศัพท์\", maxLength: 10, inputmode: \"numeric\" },\r\n email: { value: '', required: true, errorMessage: '', fieldName: 'email', label: 'อีเมล', placeholder: \"อีเมล\", maxLength: 100 },\r\n otp: { value: '', required: true, errorMessage: '', fieldName: 'otp', label: 'OTP', placeholder: \"กรุณากรอก OTP\", maxLength: 10, inputmode: \"numeric\" },\r\n otpRef: { value: '' },\r\n otpID: { value: '' },\r\n token: { value: '' },\r\n IsActive: { value: true },\r\n },\r\n searchCriteria: {\r\n customerSubscribeId: { value: '' },\r\n criteriaName: { value: '', required: true, errorMessage: '', fieldName: 'criteriaName', label: '', placeholder: \"กรอกตั้งชื่อการแจ้งเตือน\", maxLength: 250 },\r\n province: {\r\n value: \"\", fieldName: \"province\", placeholderSearch: \"ชื่อจังหวัด\", placeholder: \"จังหวัด\", dropdownParent: \"#favorite-popup\",\r\n option: []\r\n },\r\n district: {\r\n value: \"\", fieldName: \"district\", placeholderSearch: \"ชื่อเขต/อำเภอ\", placeholder: \"เขต/อำเภอ\", dropdownParent: \"#favorite-popup\",\r\n option: []\r\n },\r\n subDistrict: {\r\n value: \"\", fieldName: \"subDistrict\", placeholderSearch: \"ชื่อแขวง/ตำบล\", placeholder: \"แขวง/ตำบล\", dropdownParent: \"#favorite-popup\",\r\n option: []\r\n },\r\n\r\n propertyType: {\r\n value: \"\", fieldName: \"propertyType\", errorMessage: '', required: true,\r\n housetype: { value: false, code: \"02\", name: \"บ้านเดี่ยว\", fieldName: \"housetype\", group: \"propertyType\" },\r\n land: { value: false, code: \"01\", name: \"ที่ดิน\", fieldName: \"land\", group: \"propertyType\" },\r\n townhouse: { value: false, code: \"03\", name: \"ทาวน์เฮ้าส์\", fieldName: \"townhouse\", group: \"propertyType\" },\r\n condo: { value: false, code: \"05\", name: \"คอนโดมิเนียม\", fieldName: \"condo\", group: \"propertyType\" },\r\n commercialbuilding: { value: false, code: \"04\", name: \"อาคารพาณิชย์\", fieldName: \"commercialbuilding\", group: \"propertyType\" },\r\n warehouse: { value: false, code: \"12\", name: \"โกดัง\", fieldName: \"warehouse\", group: \"propertyType\" },\r\n factory: { value: false, code: \"09\", name: \"โรงงาน\", fieldName: \"factory\", group: \"propertyType\" },\r\n apartment: { value: false, code: \"15\", name: \"อพาร์ทเม้นท์\", fieldName: \"apartment\", group: \"propertyType\" },\r\n office: { value: false, code: \"10\", name: \"อาคารสำนักงาน\", fieldName: \"office\", group: \"propertyType\" },\r\n resort: { value: false, code: \"20\", name: \"รีสอร์ท\", fieldName: \"resort\", group: \"propertyType\" },\r\n houseother: { value: false, code: \"19\", name: \"อื่น ๆ\", fieldName: \"houseother\", group: \"propertyType\" },\r\n },\r\n rangePrice: {\r\n value: \"\", fieldName: \"rangePrice\", min: 0, max: 11, from: 0, from_value: 0, to: 0, to_value: 0, step: 1, count: 0, placeholder: \"ราคาเริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"1 ล้านบาท\", \"3 ล้านบาท\", \"5 ล้านบาท\", \"10 ล้านบาท\", \"20 ล้านบาท\", \"50 ล้านบาท\"\r\n ]\r\n },\r\n areaRange: {\r\n value: \"\", fieldName: \"areaRange\", min: 0, max: 8, from: 0, to: 0, step: 1, count: 0, placeholder: \"เนื้อที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"50 ตร.ว.\", \"100 ตร.ว.\", \"200 ตร.ว.\", \"300 ตร.ว.\", \"1 ไร่\", \"5 ไร่\", \"10 ไร่\", \"50 ไร่\"\r\n ]\r\n },\r\n useableAreaRange: {\r\n value: \"\", fieldName: \"useableAreaRange\", min: 0, max: 6, from: 0, to: 0, step: 1, count: 0, placeholder: \"พื้นที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"30 ตร.ม.\", \"50 ตร.ม.\", \"100 ตร.ม.\", \"200 ตร.ม.\", \"500 ตร.ม.\",\r\n ]\r\n },\r\n frequency: { value: 'D' },\r\n },\r\n submitFavEnable: {\r\n value: false\r\n },\r\n AutoID: \"\",\r\n criteriaList: [],\r\n loading: null,\r\n },\r\n reducers: {\r\n searchCriteriaDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const errorMessage = action.payload.errorMessage;\r\n\r\n state.searchCriteria[field].value = value;\r\n\r\n state.searchCriteria[field].errorMessage = errorMessage;\r\n },\r\n searchCriteriaValidateChange: (state, action) => {\r\n const field = action.payload.field;\r\n const errorMessage = action.payload.errorMessage;\r\n state.searchCriteria[field].errorMessage = errorMessage;\r\n },\r\n searchCriteriaListChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchCriteria[field].value = \"\";\r\n state.searchCriteria[field].option = value;\r\n },\r\n searchCriteriaIonRangeChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const from = action.payload.from;\r\n const to = action.payload.to;\r\n\r\n state.searchCriteria[field].value = value;\r\n state.searchCriteria[field].from = state.searchCriteria[field].values.indexOf(from);\r\n if (to === \"MAX\") {\r\n state.searchCriteria[field].to = state.searchCriteria[field].max;\r\n }\r\n else {\r\n state.searchCriteria[field].to = state.searchCriteria[field].values.indexOf(to);\r\n }\r\n },\r\n searchCriteriaIonRangeListChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n\r\n state.searchCriteria[field].values = value;\r\n },\r\n updateCriteriaIonRange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n\r\n state.searchCriteria[field].count += 1;\r\n },\r\n CheckBoxCriteriaChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const group = action.payload.group;\r\n\r\n const groupLength = Object.keys(state.searchCriteria[group]).length - 2\r\n\r\n state.searchCriteria[group][field].value = value;\r\n\r\n const temp = Object.entries(state.searchCriteria[group]).map((item) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\" && item[1].value) {\r\n return item[1].code\r\n }\r\n }).filter(x => x);\r\n\r\n state.searchCriteria[group].value = temp.length === groupLength ? \"\" : temp.join(',');\r\n state.searchCriteria[group].errorMessage = ''\r\n },\r\n ClearSearchCriteria: (state, action) => {\r\n console.log(\"clear dis\")\r\n Object.keys(state.searchCriteria).forEach(function (key) {\r\n if (key === \"bathroom\" || key === \"bedroom\") {\r\n state.searchCriteria[key].value = 0\r\n } else if (key === \"frequency\") {\r\n state.searchCriteria[key].value = \"D\"\r\n } else {\r\n state.searchCriteria[key].value = \"\"\r\n }\r\n });\r\n\r\n state.searchCriteria.criteriaName.errorMessage = \"\";\r\n state.searchCriteria.propertyType.errorMessage = \"\";\r\n\r\n state.searchCriteria.propertyType.housetype.value = false\r\n state.searchCriteria.propertyType.land.value = false\r\n state.searchCriteria.propertyType.townhouse.value = false\r\n state.searchCriteria.propertyType.condo.value = false\r\n state.searchCriteria.propertyType.commercialbuilding.value = false\r\n state.searchCriteria.propertyType.warehouse.value = false\r\n state.searchCriteria.propertyType.factory.value = false\r\n state.searchCriteria.propertyType.apartment.value = false\r\n state.searchCriteria.propertyType.office.value = false\r\n state.searchCriteria.propertyType.resort.value = false\r\n state.searchCriteria.propertyType.houseother.value = false\r\n\r\n state.searchCriteria.rangePrice.from = 0\r\n state.searchCriteria.rangePrice.to = 0\r\n state.searchCriteria.rangePrice.count += 1\r\n state.searchCriteria.areaRange.from = 0\r\n state.searchCriteria.areaRange.to = 0\r\n state.searchCriteria.areaRange.count += 1\r\n state.searchCriteria.useableAreaRange.from = 0\r\n state.searchCriteria.useableAreaRange.to = 0\r\n state.searchCriteria.useableAreaRange.count += 1\r\n\r\n state.submitFavEnable.value = false\r\n\r\n },\r\n addObjToCriteriaList: (state, action) => {\r\n let customerSubscribeId = { value: action.payload.customerSubscribeId || \"\" };\r\n let criteriaName = { value: action.payload?.criteriaName || \"\" };\r\n let province = { value: action.payload?.province || \"\" };\r\n let district = { value: action.payload?.district || \"\", option: provinceData.find(x => x.value == province.value)?.child || [] };\r\n let subDistrict = { value: action.payload?.subDistrict || \"\", option: district.option.find(x => x.value == district.value)?.child || [] };\r\n let propertyType = { value: action.payload?.propertyType || \"\" };\r\n let rangePrice = { value: action.payload?.rangePrice || \"\" };\r\n let areaRange = { value: action.payload?.areaRange || \"\" };\r\n let useableAreaRange = { value: action.payload?.useableAreaRange || \"\" };\r\n let frequency = { value: action.payload?.frequency || \"D\" };\r\n\r\n if (propertyType.value) {\r\n var propertyTypeValueName = propertyType.value.split(\",\").map((code) => {\r\n return Object.keys(state.searchCriteria.propertyType).filter((key) => {\r\n return state.searchCriteria.propertyType[key].code === code\r\n })[0]\r\n }).filter((x) => x)\r\n\r\n // console.log(\"propertyTypeValueName\", propertyTypeValueName)\r\n\r\n propertyTypeValueName.map((field) => {\r\n propertyType[field] = { value: true };\r\n })\r\n }\r\n\r\n if (rangePrice.value) {\r\n rangePrice.value = rangePrice.value + \"\"\r\n const M = 1000000\r\n let from = rangePrice.value.split(',')[0];\r\n let to = rangePrice.value.split(',')[1];\r\n\r\n if (from === \"0\") {\r\n from = 'ไม่ระบุ'\r\n } else {\r\n from = (parseFloat(from) / M) + \" ล้านบาท\"\r\n }\r\n if (to) {\r\n to = (parseFloat(to) / M) + \" ล้านบาท\"\r\n } else {\r\n to = 'ไม่ระบุ'\r\n }\r\n\r\n rangePrice = valueRangeMaxMin(\"rangePrice\", from, to)\r\n rangePrice.from = state.searchCriteria.rangePrice.values.indexOf(rangePrice.from);\r\n rangePrice.to = rangePrice.to === \"MAX\" ?\r\n state.searchCriteria.rangePrice.max :\r\n state.searchCriteria.rangePrice.values.indexOf(rangePrice.to);\r\n }\r\n if (areaRange.value) {\r\n areaRange.value = areaRange.value + \"\"\r\n let from = areaRange.value.split(',')[0];\r\n let to = areaRange.value.split(',')[1];\r\n\r\n if (from === \"0\") {\r\n from = 'ไม่ระบุ'\r\n } else {\r\n from = parseFloat(from)\r\n if (from >= 400) {\r\n from = (from / 400) + ' ไร่'\r\n } else {\r\n from = from + ' ตร.ว.'\r\n }\r\n }\r\n if (to) {\r\n to = parseFloat(to)\r\n if (to >= 400) {\r\n to = (to / 400) + ' ไร่'\r\n } else {\r\n to = to + ' ตร.ว.'\r\n }\r\n } else {\r\n to = 'ไม่ระบุ'\r\n }\r\n\r\n areaRange = valueRangeMaxMin(\"areaRange\", from, to)\r\n areaRange.from = state.searchCriteria.areaRange.values.indexOf(areaRange.from);\r\n areaRange.to = areaRange.to === \"MAX\" ?\r\n state.searchCriteria.areaRange.max :\r\n state.searchCriteria.areaRange.values.indexOf(areaRange.to);\r\n }\r\n if (useableAreaRange.value) {\r\n useableAreaRange.value = useableAreaRange.value + \"\"\r\n let from = useableAreaRange.value.split(',')[0];\r\n let to = useableAreaRange.value.split(',')[1];\r\n\r\n if (from === \"0\") {\r\n from = 'ไม่ระบุ'\r\n } else {\r\n from = parseFloat(from) + \" ตร.ม.\"\r\n }\r\n if (to) {\r\n to = parseFloat(to) + \" ตร.ม.\"\r\n } else {\r\n to = 'ไม่ระบุ'\r\n }\r\n\r\n useableAreaRange = valueRangeMaxMin(\"useableAreaRange\", from, to)\r\n useableAreaRange.from = state.searchCriteria.useableAreaRange.values.indexOf(useableAreaRange.from);\r\n useableAreaRange.to = useableAreaRange.to === \"MAX\" ?\r\n state.searchCriteria.useableAreaRange.max :\r\n state.searchCriteria.useableAreaRange.values.indexOf(useableAreaRange.to);\r\n }\r\n\r\n const obj = {\r\n customerSubscribeId: customerSubscribeId,\r\n criteriaName: criteriaName,\r\n province: province,\r\n district: district,\r\n subDistrict: subDistrict,\r\n propertyType: propertyType,\r\n rangePrice: rangePrice,\r\n areaRange: areaRange,\r\n useableAreaRange: useableAreaRange,\r\n frequency: frequency,\r\n };\r\n state.criteriaList = [...state.criteriaList.filter(x => x.customerSubscribeId.value != customerSubscribeId.value), obj];\r\n },\r\n removeObjInCriteriaList: (state, action) => {\r\n const index = action.payload.index;\r\n\r\n if (index > -1) {\r\n state.criteriaList.splice(index, 1);\r\n }\r\n },\r\n fillFromObjCriteriaList: (state, action) => {\r\n const index = action.payload.index;\r\n\r\n Object.keys(state.searchCriteria).forEach((key) => {\r\n if (key != \"propertyType\") {\r\n Object.assign(state.searchCriteria[key], state.criteriaList[index][key]);\r\n } else {\r\n Object.keys(state.criteriaList[index][key]).forEach((keyCheckBox) => {\r\n if (typeof state.criteriaList[index][key][keyCheckBox] === 'object') {\r\n Object.assign(state.searchCriteria[key][keyCheckBox], state.criteriaList[index][key][keyCheckBox]);\r\n } else {\r\n state.searchCriteria[key][keyCheckBox] = state.criteriaList[index][key][keyCheckBox];\r\n }\r\n\r\n })\r\n }\r\n\r\n if ([\"rangePrice\", \"areaRange\", \"useableAreaRange\"].includes(key)) {\r\n state.searchCriteria[key].count += 1;\r\n }\r\n })\r\n },\r\n searchCriteriaValidate: (state, action) => {\r\n if (state.searchCriteria.criteriaName.value &&\r\n state.searchCriteria.propertyType.value &&\r\n state.searchCriteria.frequency.value) {\r\n state.submitFavEnable.value = true\r\n } else {\r\n state.submitFavEnable.value = false\r\n }\r\n },\r\n formsCusInfoDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const errorMessage = action.payload.errorMessage;\r\n if (state.customerInfo[field].maxLength) {\r\n state.customerInfo[field].value = value.slice(0, state.customerInfo[field].maxLength);\r\n } else {\r\n state.customerInfo[field].value = value;\r\n }\r\n\r\n state.customerInfo[field].errorMessage = errorMessage;\r\n },\r\n ClearCusInfo: (state, action) => {\r\n Object.keys(state.customerInfo).forEach(function (key) {\r\n if (key === \"bathroom\" || key === \"bedroom\") {\r\n state.customerInfo[key].value = 0\r\n } else if (key === \"order\") {\r\n // state.customerInfo[key].value = \"new\"\r\n } else {\r\n state.customerInfo[key].value = \"\"\r\n }\r\n });\r\n },\r\n },\r\n})\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const { searchCriteriaDataChange, searchCriteriaListChange, searchCriteriaIonRangeChange, searchCriteriaIonRangeListChange, updateCriteriaIonRange, CheckBoxCriteriaChange, ClearSearchCriteria,\r\n addObjToCriteriaList, fillFromObjCriteriaList, searchCriteriaValidateChange, removeObjInCriteriaList, searchCriteriaValidate,\r\n formsCusInfoDataChange, ClearCusInfo,\r\n} = loginSlice.actions\r\n\r\nexport default loginSlice.reducer","import React, { createContext, useContext } from \"react\";\r\nimport { getCookie, setCookie, encodeThai, getCookieData } from \"../common/Common\";\r\nconst { BehaviorSubject, Observable, defer } = rxjs;\r\nconst { tap, map, filter, first } = rxjs.operators;\r\n\r\nexport class CompareStore {\r\n compareProperty$ = new BehaviorSubject([]);\r\n\r\n comparePropertyLength$ = this.compareProperty$.pipe(\r\n map((item) => item.length)\r\n );\r\n\r\n constructor() {\r\n window.openErrorPopup = this.openErrorPopup;\r\n\r\n console.log(\"compare cookie\" + getCookie(\"compareProperty\"));\r\n\r\n const initValue = getCookie(\"compareProperty\") !== \"\"\r\n ? JSON.parse(getCookie(\"compareProperty\"))\r\n : []\r\n // window.setTimeout(() => {\r\n // this.compareProperty$.next(initValue);\r\n // }, 1000)\r\n console.log(getCookieData)\r\n var result = getCookieData(initValue).then((data) => {\r\n data.Items.forEach(element => this.addCompareProperty(element, false));\r\n })\r\n }\r\n\r\n openErrorPopup(message) {\r\n $(\"#error-popup div div p\").html(message);\r\n $(\"#error-popup\").css({\r\n display: \"flex\",\r\n });\r\n\r\n $(\"#close-error-popup\").on(\"click\", function () {\r\n $(\"#error-popup\").css({\r\n display: \"\",\r\n });\r\n });\r\n }\r\n\r\n addCompareProperty(prop, show = true) {\r\n let comparePropertyList = this.compareProperty$.value;\r\n\r\n if (\r\n comparePropertyList.some((item) => item.PropertyID === prop.PropertyID)\r\n ) {\r\n this.compareProperty$.next([...comparePropertyList]);\r\n return;\r\n }\r\n\r\n comparePropertyList = comparePropertyList.filter((item) => item);\r\n\r\n if (comparePropertyList.length >= 5) {\r\n openErrorPopup(\"เลือกได้ไม่เกิน 5 ทรัพย์\");\r\n return;\r\n }\r\n\r\n let PropertyMediaes = (prop?.PropertyMediaes === \"\") ? [] : prop.PropertyMediaes;\r\n\r\n // const newProperty = {\r\n // ...prop,\r\n // PropertyMediaes: [\r\n // ...prop.PropertyMediaes.filter(\r\n // (item) => item.MediaType === \"IMAGE-THUMBNAIL\"\r\n // ),\r\n // ],\r\n // NearbyPlaces: null,\r\n // PropertiesInfoRelated: null,\r\n // };\r\n\r\n const newProperty = {\r\n PropertyID: prop.PropertyID,\r\n PropertyIDFormat: prop.PropertyIDFormat,\r\n VillageTH: prop.VillageTH,\r\n PropertyTypeName: prop.PropertyTypeName,\r\n PromotionPrice: prop.PromotionPrice,\r\n AdjustPrice: prop.AdjustPrice,\r\n SellPrice: prop.SellPrice,\r\n PMMaintenanceStatus: prop.PMMaintenanceStatus,\r\n AmphurName: prop.AmphurName,\r\n ProvinceName: prop.ProvinceName,\r\n AreaValue: prop.AreaValue,\r\n UseableArea: prop.UseableArea,\r\n Bedroom: prop.Bedroom,\r\n Bathroom: prop.Bathroom,\r\n BuildingAge: prop.BuildingAge ?? prop.Age,\r\n PropertyMediaes: [\r\n ...PropertyMediaes.filter(\r\n (item) => item.MediaType === \"IMAGE-THUMBNAIL\"\r\n ),\r\n ],\r\n };\r\n\r\n comparePropertyList = [...comparePropertyList, { ...newProperty }];\r\n\r\n setCookie(\"compareProperty\", JSON.stringify(Array.from(comparePropertyList, x => x.PropertyID)), 30);\r\n // setCookie(\"compareProperty\", JSON.stringify(comparePropertyList.map((item) => { return encodeThai(item) })), 30);\r\n\r\n console.log(\"compare after set cookie\" + getCookie(\"compareProperty\"));\r\n\r\n this.compareProperty$.next([...comparePropertyList]);\r\n\r\n let section_comparision = $(\"#comparision\");\r\n if (show) section_comparision.addClass(\"active\");\r\n\r\n return [...comparePropertyList];\r\n }\r\n\r\n removeCompareProperty(prop) {\r\n let comparePropertyList = this.compareProperty$.value;\r\n\r\n comparePropertyList = comparePropertyList.filter(\r\n (item) => item.PropertyID !== prop.PropertyID\r\n );\r\n\r\n setCookie(\"compareProperty\", JSON.stringify([...comparePropertyList]), 30);\r\n\r\n this.compareProperty$.next([...comparePropertyList]);\r\n }\r\n\r\n removeAllCompareProperty() {\r\n let comparePropertyList = this.compareProperty$.value;\r\n\r\n comparePropertyList = [];\r\n\r\n setCookie(\"compareProperty\", JSON.stringify([...comparePropertyList]), 30);\r\n\r\n this.compareProperty$.next([...comparePropertyList]);\r\n }\r\n\r\n canAddCompareProperty = (prop = null) =>\r\n this.compareProperty$.pipe(\r\n map((list) =>\r\n prop ? !(list.PropertyID === prop.PropertyID) : list.length <= 5\r\n )\r\n );\r\n\r\n isExistCompareProperty = (prop = null) =>\r\n this.compareProperty$.pipe(\r\n map((list) => {\r\n const isCompared = list.some(\r\n (item) => item.PropertyID === prop.PropertyID\r\n );\r\n return isCompared;\r\n })\r\n );\r\n\r\n getComparePropertyList = this.compareProperty$.pipe(\r\n map((list) => {\r\n const result = [\r\n ...list,\r\n ...Array.from({ length: Math.abs(list.length - 5) }, (_) => null),\r\n ];\r\n return result;\r\n })\r\n );\r\n}\r\n\r\nconst compareStore = new CompareStore();\r\n\r\nexport const COMPARE_STORE_CONTEXT = createContext(compareStore);\r\n\r\nexport const CompareStoreProvider = (prop) => {\r\n return (\r\n \r\n {prop.children}\r\n \r\n );\r\n};\r\n","import { createApi, fetchBaseQuery } from \"@reduxjs/toolkit/query/react\";\r\n\r\n// Define a service using a base URL and expected endpoints\r\nexport const merchantAPI = createApi({\r\n reducerPath: \"merchantAPI\",\r\n baseQuery: fetchBaseQuery({\r\n baseUrl:\r\n \"/th/KpaylaterConsoleDoc/\",\r\n // \"/SiteCollectionDocuments/personal/loan/personal-loan/paylater-map/json/\",\r\n }),\r\n endpoints: (builder) => ({\r\n getMerchants: builder.query({\r\n query: () => \"merchant.txt?limit=10\",\r\n cacheTime: 60000,\r\n }),\r\n }),\r\n});\r\n\r\n// Export hooks for usage in functional components, which are\r\n// auto-generated based on the defined endpoints\r\nexport const { useGetMerchantsQuery } = merchantAPI;\r\n","module.exports = provinces;","import { useState } from \"react\";\r\nimport { useSubscription } from \"./UseSubscription\";\r\n\r\nexport function useObservableState(source) {\r\n const [state, setState] = useState(null);\r\n useSubscription(source, {\r\n next: (value) => {\r\n setState(value);\r\n },\r\n });\r\n return state;\r\n}\r\n","import { useEffect } from \"react\";\r\n\r\nexport function useSubscription(source, observer = undefined) {\r\n useEffect(() => {\r\n const subscription = source.subscribe(observer);\r\n return () => {\r\n subscription.unsubscribe();\r\n };\r\n }, [source]);\r\n}\r\n","import Config from \"config\";\r\nimport React, { useEffect } from \"react\";\r\nimport {\r\n groupDataBy\r\n} from \"../common/Common\";\r\nimport { ModalDetail } from \"./common\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\n\r\nfunction getFullMediaURL(mediaPath) {\r\n if (mediaPath.charAt(0) !== \"/\") {\r\n mediaPath = \"/\" + mediaPath;\r\n }\r\n\r\n const fullPath = Config.mediaURLPrefix + mediaPath;\r\n\r\n return fullPath;\r\n}\r\n\r\nexport const IdeaDecoration = React.memo((props) => {\r\n const propertyDetail = props.propertyDetail;\r\n const AIImg = propertyDetail.AIImg;\r\n\r\n const temp = groupDataBy(AIImg, \"MediaType\");\r\n const IdeaDecTemp = Object.keys(temp).map((MediaType) => ({\r\n MediaType,\r\n MediaPath: temp[MediaType],\r\n }));\r\n\r\n function rearrangeMediaTypes(mediaArray, order) {\r\n return order.map(type => mediaArray.find(media => media.MediaType === type))?.filter(x=>x);\r\n }\r\n\r\n function capitalizeFirstLetter(arr) {\r\n return arr.map(obj => {\r\n obj.MediaType = obj.MediaType.charAt(0).toUpperCase() + obj.MediaType.slice(1);\r\n return obj;\r\n });\r\n }\r\n\r\n const order = [\"modern\", \"minimal\", \"loft\"];\r\n const IdeaDec = capitalizeFirstLetter(rearrangeMediaTypes(IdeaDecTemp, order));\r\n\r\n let addtion = propertyDetail.addtion;\r\n\r\n let tab = [];\r\n let tabDetail = [];\r\n\r\n let tabModal = [];\r\n\r\n if (Array.isArray(IdeaDec) && IdeaDec.length > 0) {\r\n IdeaDec.map((item, index) => {\r\n const id = item.MediaType;\r\n tab.push(\r\n \r\n {item.MediaType}\r\n \r\n );\r\n\r\n tabDetail.push(\r\n <>\r\n
\r\n
\r\n
\r\n {item.MediaPath.map((obj, index) => {\r\n var img = getFullMediaURL(obj.MediaPath);\r\n return (\r\n
\r\n
\r\n
\r\n \"Image\"\r\n \"Image\"\r\n
\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {item.MediaPath.map((obj, index) => {\r\n var img = getFullMediaURL(obj.MediaPath);\r\n return (\r\n
\r\n
\r\n \"Test\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n\r\n tabModal.push(\r\n <>\r\n
\r\n
\r\n
\r\n {item.MediaPath.map((obj, index) => {\r\n var img = getFullMediaURL(obj.MediaPath);\r\n return (\r\n
\r\n \"Promotion\"\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n หมายเหตุ : ภาพดังกล่าวไม่ใช่ภายจริงแต่ถูกสร้างขึ้นด้วย AI\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n // console.log(item, index, id, tab, tabDetail)\r\n });\r\n }else{\r\n return (<>);\r\n }\r\n\r\n useEffect(() => {\r\n let ideaSwiper = {};\r\n for (let i = 1; i <= IdeaDec.length; i++) {\r\n let thumbs = new Swiper(`#idea-thumb-${i}`, {\r\n slidesPerView: \"auto\",\r\n initialSlide: 1,\r\n spaceBetween: 8,\r\n loop: true,\r\n pagination: {\r\n el: \".gallery-sm-pagi\",\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n threshold: 20,\r\n });\r\n\r\n let slider = new Swiper(`#idea-slide-${i}`, {\r\n slidesPerView: \"auto\",\r\n initialSlide: 1,\r\n spaceBetween: 10,\r\n centeredSlides: true,\r\n autoHeight: true,\r\n loop: true,\r\n thumbs: {\r\n swiper: thumbs,\r\n },\r\n pagination: {\r\n el: \".swiper-pagination\",\r\n clickable: true,\r\n },\r\n });\r\n\r\n ideaSwiper[`idea-swiper-${i}`] = new Swiper(`#idea-swiper-${i}`, {\r\n zoom: false,\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 20,\r\n },\r\n 1025: {\r\n slidesPerView: 1,\r\n spaceBetween: 20,\r\n },\r\n },\r\n pagination: {\r\n el: \".g-page\",\r\n type: \"fraction\",\r\n },\r\n });\r\n }\r\n\r\n $(\".idea-list\").on(\"click\", function () {\r\n let idElm = $(this).attr(\"id\");\r\n let slideIndex = $(\"#\" + idElm)\r\n .find(\".swiper-slide-active\")\r\n .data(\"swiper-slide-index\");\r\n\r\n let slideName = \"\";\r\n if (idElm === \"idea-slide-1\") {\r\n slideName = ideaSwiper[`idea-swiper-1`];\r\n } else if (idElm === \"idea-slide-2\") {\r\n slideName = ideaSwiper[`idea-swiper-2`];;\r\n } else if (idElm === \"idea-slide-3\") {\r\n slideName = ideaSwiper[`idea-swiper-3`];;\r\n }\r\n\r\n slideName.slideTo(slideIndex);\r\n\r\n $(\"#idea-modal\").addClass(\"active\");\r\n $(\"body\").addClass(\"lock-scrolling\");\r\n });\r\n }, [IdeaDec]);\r\n\r\n console.log(\"PropertyNearByTabList render\", IdeaDec);\r\n\r\n return (\r\n <>\r\n
\r\n

ไอเดียสำหรับการตกแต่ง

\r\n \r\n
\r\n
\r\n
    {tab}
\r\n
\r\n \r\n
\r\n
\r\n
{tabDetail}
\r\n
\r\n
\r\n {/* Idea Modal */}\r\n
\r\n
\r\n
\r\n
\r\n

ไอเดียสำหรับการตกแต่ง

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    {tab}
\r\n
\r\n \r\n
\r\n
\r\n
{tabModal}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n );\r\n}, areNearbyPlacesEqual);\r\n\r\nfunction areNearbyPlacesEqual(prevProps, nextProps) {\r\n if (prevProps.propertyDetail?.AIImg?.length !== nextProps.propertyDetail?.AIImg?.length) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\n\r\nexport const paylaterSlice = createSlice({\r\n name: \"merchant\",\r\n initialState: {\r\n merchants: [],\r\n categories: [],\r\n subcategories: [],\r\n cate_relation: [],\r\n cate_logo: [],\r\n default_popular: null,\r\n search: \"\",\r\n selected_category: null,\r\n selected_subcategory: \"\",\r\n loading: null,\r\n filter_popular_merchants: null,\r\n filter_merchants: null,\r\n search_popular_merchants: null,\r\n search_all_merchants: null,\r\n },\r\n reducers: {\r\n setMerchants: (state, action) => {\r\n const data = action.payload.data.map((m) => {\r\n const keysArray = m.keys.split(\";\");\r\n return { ...m, keys: keysArray };\r\n });\r\n state.merchants = data;\r\n const temp = action.payload.data;\r\n\r\n // state.merchants?.sort((a, b) => a.seq - b.seq);\r\n // const sortedArray = [...state.merchants].sort((a, b) => a.seq - b.seq);\r\n const sortedArray = [...state.merchants].sort((a, b) => {\r\n if (a.seq !== \"\" && b.seq !== \"\") {\r\n return parseInt(a.seq) - parseInt(b.seq);\r\n } else if (a.seq !== \"\") {\r\n return -1; // a.seq is not empty, so it comes before b.seq\r\n } else if (b.seq !== \"\") {\r\n return 1; // b.seq is not empty, so it comes before a.seq\r\n } else {\r\n return 0; // both a.seq and b.seq are empty, no preference in order\r\n }\r\n });\r\n state.merchants = sortedArray;\r\n // let cat = state.merchants.map((m) => m.cate_th);\r\n let cate_logo = state.merchants.map(({ cate_th, cate_logo }) => ({\r\n cate_th,\r\n cate_logo,\r\n }));\r\n\r\n // let subcat = state.merchants.map((m) => m.subcate);\r\n let subcat = state.merchants.map((m) => m.subcate).filter((x) => x);\r\n let popular = state.merchants.filter((m) => m.fg == \"Y\");\r\n let all = { cate_th: \"ร้านค้ายอดนิยม\", cate_logo: \"popular\" };\r\n cate_logo.unshift(all);\r\n state.categories = [...new Set(cate_logo)];\r\n const uniqueData = Array.from(new Set(state.categories.map(JSON.stringify))).map(JSON.parse);\r\n\r\n const result = uniqueData.filter(\r\n (obj, index, self) =>\r\n index ===\r\n self.findIndex((o) => o.cate_th === obj.cate_th && o.cate_logo === obj.cate_logo)\r\n );\r\n state.categories = result;\r\n state.subcategories = [...new Set(subcat)];\r\n\r\n state.default_popular = [...new Set(popular)];\r\n // state.sort = [...new Set(cate_logo)];\r\n let relation = state.categories.map((c) => {\r\n let temp = state.merchants.filter((m) => m.cate_th == c);\r\n let temp2 = temp.map((t) => t.subcate);\r\n let arr = [];\r\n arr[c] = [...new Set(temp2)];\r\n return arr;\r\n });\r\n\r\n state.cate_relation = relation;\r\n },\r\n setSelectedCategory: (state, action) => {\r\n state.selected_category = action.payload;\r\n },\r\n setSelectedSubCategory: (state, action) => {\r\n if (action.payload == \"ทั้งหมด\") {\r\n state.selected_subcategory = null;\r\n } else {\r\n state.selected_subcategory = action.payload;\r\n }\r\n },\r\n unselectedCategory: (state, action) => {\r\n state.selected_category = null;\r\n state.selected_subcategory = null;\r\n state.filter_popular_merchants = null;\r\n state.filter_merchants = null;\r\n },\r\n filterCategory: (state, action) => {\r\n state.filter_merchants = state.merchants.filter((m) => m.cate_th == state.selected_category);\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n\r\n if (state.selected_category != \"ร้านค้ายอดนิยม\") {\r\n let temp = state.filter_merchants.map((m) => m.subcate).filter((x) => x);\r\n // let temp = state.filter_merchants.map((m) => m.subcate);\r\n\r\n if (temp != 0) {\r\n state.subcategories = [...new Set(temp)];\r\n } else {\r\n state.subcategories = null;\r\n }\r\n } else {\r\n let subcat = state.merchants.map((m) => m.subcate);\r\n state.subcategories = [...new Set(subcat)];\r\n }\r\n let s = state.subcategories?.length ? state.subcategories : [];\r\n state.subcategories = s;\r\n },\r\n setSearch: (state, action) => {\r\n state.search = action.payload;\r\n if (state.selected_category != null) {\r\n state.filter_merchants = state.filter_merchants.filter(\r\n (m) =>\r\n m.nm_en.toLowerCase().includes(action.payload.toLowerCase()) ||\r\n m.nm_th.includes(action.payload) ||\r\n m.keys.includes(action.payload)\r\n );\r\n } else {\r\n state.filter_merchants = state.merchants.filter(\r\n (m) =>\r\n m.nm_en.toLowerCase().includes(action.payload.toLowerCase()) ||\r\n m.nm_th.includes(action.payload) ||\r\n m.keys.includes(action.payload)\r\n );\r\n }\r\n state.filter_merchants = state.filter_merchants.filter(\r\n (m) =>\r\n m.nm_en.toLowerCase().includes(action.payload.toLowerCase()) ||\r\n m.nm_th.includes(action.payload) ||\r\n m.keys.includes(action.payload)\r\n );\r\n\r\n console.log(\"🚀 ------------------------------------------------------------------------------🚀\")\r\n console.log(\"🚀 ~ file: paylaterSlice.js:128 ~ tate.filter_merchants:\", state.filter_merchants)\r\n console.log(\"🚀 ------------------------------------------------------------------------------🚀\")\r\n\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n },\r\n clearSearch: (state, action) => {\r\n state.search = \"\";\r\n state.filter_merchants = null;\r\n state.filter_popular_merchants = null;\r\n state.selected_category = null;\r\n state.selected_subcategory = \"\";\r\n },\r\n filterSubCategory: (state, action) => {\r\n if (state.selected_subcategory != null) {\r\n state.filter_merchants = state.merchants.filter(\r\n (m) => m.subcate == state.selected_subcategory\r\n );\r\n\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n } else {\r\n state.filter_merchants = state.merchants.filter(\r\n (m) => m.cate_th == state.selected_category\r\n );\r\n state.filter_popular_merchants = state.filter_merchants.filter((m) => m.fg == \"Y\");\r\n }\r\n },\r\n },\r\n});\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const {\r\n setMerchants,\r\n setSelectedCategory,\r\n setSelectedSubCategory,\r\n updateMerchants,\r\n filterCategory,\r\n filterSubCategory,\r\n setSearch,\r\n clearSearch,\r\n unselectedCategory,\r\n} = paylaterSlice.actions;\r\n\r\nexport default paylaterSlice.reducer;\r\n","import classnames from \"classnames/bind\";\r\nimport Config from \"config\";\r\nimport React, { createRef, useEffect, useState } from \"react\";\r\n\r\nconst $ = window.$;\r\nexport class SelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n if (this.props.className) {\r\n this.className = this.props.className;\r\n } else {\r\n this.className = \"select-field mb-3\";\r\n }\r\n\r\n if (this.props.templateSelection) {\r\n this.templateSelection = this.props.templateSelection;\r\n } else {\r\n this.templateSelection = \"\";\r\n }\r\n\r\n this.minimumResultsForSearch = this.props.minimumResultsForSearch;\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleOpen = this.handleOpen.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n\r\n if (this.props.clearOption && e.params.args.data.id == \"clear\") {\r\n this.props.OnformsDataChange({\r\n field: this.props.fieldName,\r\n value: \"\",\r\n });\r\n } else {\r\n this.props.OnformsDataChange({\r\n field: this.props.fieldName,\r\n value: e.params.args.data.id,\r\n });\r\n }\r\n\r\n e.preventDefault();\r\n this.$el.select2(\"close\");\r\n }\r\n\r\n handleOpen() {\r\n console.log(\"this.props.placeholderSearch\", this.props.placeholderSearch);\r\n $(\"input.select2-search__field\").prop(\r\n \"placeholder\",\r\n this.props.placeholderSearch\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data(\"select2\")) {\r\n this.$el.select2(\"destroy\");\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n //onChange: this.handleChange\r\n };\r\n\r\n if (this.props.dropdownParent) {\r\n this.select2Setting.dropdownParent = $(this.props.dropdownParent);\r\n }\r\n\r\n if (this.props.fieldName === \"station\") {\r\n this.select2Setting.templateResult = function (idioma) {\r\n if (idioma.id === \"clear\") {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n }\r\n else if (idioma.title == \"bts\") {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n } else {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n }\r\n return $span;\r\n };\r\n\r\n this.select2Setting.templateSelection = function (idioma) {\r\n if (idioma.id) {\r\n if (idioma.title == \"bts\") {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n } else {\r\n var $span = $(\r\n \"\" +\r\n idioma.text +\r\n \"\"\r\n );\r\n }\r\n } else {\r\n var $span = $(\"\" + idioma.text + \"\");\r\n }\r\n return $span;\r\n };\r\n }\r\n\r\n if (this.props.templateSelection) {\r\n this.select2Setting.templateSelection = this.props.templateSelection;\r\n }\r\n\r\n if (this.props.minimumResultsForSearch) {\r\n this.select2Setting.minimumResultsForSearch =\r\n this.props.minimumResultsForSearch;\r\n }\r\n\r\n // console.log(this.select2Setting)\r\n this.$el\r\n .select2(this.select2Setting)\r\n .one(\"select2:open\", this.handleOpen)\r\n .on(\"select2:selecting\", this.handleChange);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2(\"destroy\");\r\n this.$el\r\n .select2(\r\n this.select2Setting\r\n // {\r\n // placeholder: this.props.placeholder,\r\n // allowClear: true,\r\n // //onChange: this.handleChange\r\n // }\r\n )\r\n .one(\"select2:open\", this.handleOpen)\r\n .on(\"select2:selecting\", this.handleChange);\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger(\"change.select2\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n (this.el = el)}\r\n readOnly\r\n >\r\n {!this.props.notShowEmptyOption && }\r\n {this.props.clearOption && }\r\n {Array.isArray(this.props.option) &&\r\n this.props.option.map((item, index) => renderChild(item, index))}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nfunction renderChild(item, index) {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport class IonRange extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n //this.formsDataChange = props.formsDataChange;\r\n //this = props;\r\n // Don't call this.setState() here!\r\n // this.state = { counter: 0 };\r\n // this.handleClick = this.handleClick.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange(data) {\r\n this.props.OnformsDataChange(\r\n this.props.fieldName,\r\n data.from_value,\r\n (new Set([data.from, data.to, data.max]).size === 1) ? \"\" : data.to_value\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n // console.log(this.props, \" <--slider value\");\r\n this.$el = $(this.el);\r\n this.$el.ionRangeSlider({\r\n skin: \"big\",\r\n type: \"double\",\r\n grid: false,\r\n min: this.props.min,\r\n max: this.props.max,\r\n from: this.props.from,\r\n to: this.props.to,\r\n step: this.props.step,\r\n values: this.props.values,\r\n hide_from_to: true,\r\n hide_min_max: true,\r\n // skin: \"round\",\r\n // prettify_separator: \",\",\r\n //onChange: this.handleChange\r\n onFinish: this.handleChange,\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n // Typical usage (don't forget to compare props):\r\n if (\r\n this.props.max !== prevProps.max ||\r\n this.props.min !== prevProps.min ||\r\n this.props.step !== prevProps.step ||\r\n this.props.count !== prevProps.count\r\n ) {\r\n this.$el.data(\"ionRangeSlider\").update({\r\n min: this.props.min,\r\n max: this.props.max,\r\n step: this.props.step,\r\n from: this.props.from,\r\n to: this.props.to,\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.$el.data(\"ionRangeSlider\").destroy();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n (this.el = el)} />\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport const RangeInput = (props) => {\r\n const [Start, setStartValue] = useState(\"\");\r\n const [End, setEndValue] = useState(\"\");\r\n const [StartList, setStartListValue] = useState(props.values);\r\n const [EndList, setEndListValue] = useState(props.values);\r\n const dropdown = createRef();\r\n\r\n function clickRangeInput() {\r\n if ($(\".range-dropdown.active\").length > 0) {\r\n $(\".range-dropdown.active\").removeClass(\"active\");\r\n }\r\n $(dropdown.current).addClass(\"active\");\r\n setStart();\r\n }\r\n\r\n function setStart() {\r\n $(dropdown.current).addClass(\"start\");\r\n $(dropdown.current).removeClass(\"end\");\r\n }\r\n\r\n function setEnd() {\r\n $(dropdown.current).addClass(\"end\");\r\n $(dropdown.current).removeClass(\"start\");\r\n }\r\n\r\n function startClick(item) {\r\n // console.log(\"start\",item)\r\n setStartValue(item);\r\n const index = StartList.indexOf(item);\r\n if (index > 0) {\r\n setEndListValue(\r\n StartList.slice(0, 1).concat(\r\n StartList.slice(StartList.indexOf(item) + 1)\r\n )\r\n );\r\n } else {\r\n setEndListValue(StartList);\r\n }\r\n props.OnformsDataChange(props.fieldName, item, \"\");\r\n setEnd();\r\n }\r\n\r\n function endClick(item) {\r\n // console.log(\"end\",item)\r\n setEndValue(item);\r\n props.OnformsDataChange(props.fieldName, Start, item);\r\n $(dropdown.current).removeClass(\"active\");\r\n }\r\n\r\n function renderStartChild(item, index) {\r\n return (\r\n
  • startClick(item)}>\r\n {item}\r\n
  • \r\n );\r\n }\r\n\r\n function renderEndChild(item, index) {\r\n return (\r\n
  • endClick(item)}>\r\n {item}\r\n
  • \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n เริ่มต้น\r\n
    \r\n
    -
    \r\n
    \r\n สิ้นสุด\r\n
    \r\n
    \r\n
    \r\n
      \r\n {StartList.map((item, index) => renderStartChild(item, index))}\r\n
    \r\n
      \r\n {EndList.map((item, index) => renderEndChild(item, index))}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const CounterInput = (props) => {\r\n function decrease() {\r\n if (props.value > props.min) {\r\n props.OnformsDataChange({\r\n field: props.fieldName,\r\n value: props.value - 1,\r\n });\r\n }\r\n }\r\n\r\n function increase() {\r\n if (props.value < props.max) {\r\n props.OnformsDataChange({\r\n field: props.fieldName,\r\n value: props.value + 1,\r\n });\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport const CheckBoxIonInput = (props) => {\r\n function check() {\r\n props.OnformsDataChange(props.fieldName, !props.value, props.group);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    {props.name}

    \r\n \r\n );\r\n};\r\n\r\nexport const CheckBoxCustomInput = (props) => {\r\n function check() {\r\n props.OnformsDataChange(props.fieldName, !props.value, props.group);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

    \r\n \r\n );\r\n};\r\n\r\nexport class CalcSelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.renderChild = this.renderChild.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n this.props.OnformsDataChange(this.props.fieldName, e.params.args.data.id);\r\n e.preventDefault();\r\n this.$el.select2(\"close\");\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data(\"select2\")) {\r\n this.$el.select2(\"destroy\");\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n minimumResultsForSearch: -1,\r\n dropdownCssClass: \"cs-dropdown\",\r\n };\r\n\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2(\"destroy\");\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger(\"change.select2\");\r\n }\r\n }\r\n\r\n renderChild(item) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n (this.el = el)}\r\n readOnly\r\n >\r\n \r\n {Array.isArray(this.props.option) &&\r\n this.props.option.map((item) => this.renderChild(item))}\r\n \r\n {this.props.errorMessage && (\r\n \r\n {this.props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const CalcInputField = (props) => {\r\n // console.log(\"InputField Render\",props.fieldName)\r\n\r\n function OnformsDataChange(e) {\r\n console.log(\"on change\", e.target.value);\r\n props.OnformsDataChange(props.fieldName, e.target.value);\r\n }\r\n\r\n function OnformsBlur(e) {\r\n if (props.formsBlur) {\r\n var value = e.target.value;\r\n // if (value === props.placeholder) {\r\n // value = '';\r\n // }\r\n console.log(\"on change\", value);\r\n props.formsBlur(props.fieldName, value);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {props.errorMessage && (\r\n \r\n {props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport class DropLeadSelectList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // console.log(\"select name\",this.className)\r\n this.handleChange = this.handleChange.bind(this);\r\n this.renderChild = this.renderChild.bind(this);\r\n }\r\n\r\n handleChange(e) {\r\n // console.log(e)\r\n this.props.OnformsDataChange(this.props.fieldName, e.params.args.data.id);\r\n e.preventDefault();\r\n this.$el.select2(\"close\");\r\n }\r\n\r\n componentDidMount() {\r\n //const props = this.props\r\n this.$el = $(this.el);\r\n\r\n if (this.$el.data(\"select2\")) {\r\n this.$el.select2(\"destroy\");\r\n }\r\n\r\n this.select2Setting = {\r\n placeholder: this.props.placeholder,\r\n allowClear: true,\r\n minimumResultsForSearch: -1,\r\n dropdownCssClass: \"border-dropdown\",\r\n };\r\n\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.option !== this.props.option) {\r\n this.$el.select2(\"destroy\");\r\n this.$el\r\n .select2(this.select2Setting)\r\n .on(\"select2:selecting\", this.handleChange);\r\n // console.log(`SelectList ${this.props.fieldName} Updated`)\r\n }\r\n if (prevProps.value !== this.props.value) {\r\n this.$el.trigger(\"change.select2\");\r\n }\r\n }\r\n\r\n renderChild(item) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n
    \r\n (this.el = el)}\r\n readOnly\r\n >\r\n \r\n {Array.isArray(this.props.option) &&\r\n this.props.option.map((item) => this.renderChild(item))}\r\n \r\n
    \r\n {this.props.errorMessage && (\r\n \r\n {this.props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport const DropLeadInputField = (props) => {\r\n // console.log(\"InputField Render\",props.fieldName)\r\n\r\n function OnformsDataChange(e) {\r\n props.OnformsDataChange(props.fieldName, e.target.value);\r\n }\r\n\r\n function OnformsBlur(e) {\r\n if (props.formsBlur) {\r\n var value = e.target.value;\r\n props.formsBlur(props.fieldName, value);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {props.errorMessage && (\r\n \r\n {props.errorMessage}\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./partnerCalc.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#calculators .container-calculate.view-mode[no-decoration=\\\"true\\\"] .col-body-box-1,\\r\\n#calculators .container-calculate.view-mode #for-stay[no-decoration=\\\"true\\\"] .col-body-box-1,\\r\\n#calculators .container-calculate.view-mode #for-business[no-decoration=\\\"true\\\"] .col-body-box-1 {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n#calculators .container-calculate.view-mode[no-decoration=\\\"true\\\"] .col-body-box-2,\\r\\n#calculators .container-calculate.view-mode #for-stay[no-decoration=\\\"true\\\"] .col-body-box-2,\\r\\n#calculators .container-calculate.view-mode #for-business[no-decoration=\\\"true\\\"] .col-body-box-2 {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n#calculators .container-calculate[no-decoration=\\\"true\\\"] .decoration-limit-field,\\r\\n#calculators .container-calculate[no-decoration=\\\"true\\\"] .decoration-installment-field,\\r\\n#calculators .container-calculate #for-stay[no-decoration=\\\"true\\\"] .decoration-limit-field,\\r\\n#calculators .container-calculate #for-stay[no-decoration=\\\"true\\\"] .decoration-installment-field,\\r\\n#calculators .container-calculate #for-business[no-decoration=\\\"true\\\"] .decoration-limit-field,\\r\\n#calculators .container-calculate #for-business[no-decoration=\\\"true\\\"] .decoration-installment-field {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n#calculators [no-decoration=\\\"true\\\"] .debt-burden-field {\\r\\n border-top: none !important;\\r\\n}\\r\\n\\r\\n#icw #calculators .input-error {\\r\\n border-bottom-color: var(--red-color-1);\\r\\n}\\r\\n\\r\\n#icw #calculators .head-table .input-error {\\r\\n border-bottom-color: #ff6060;\\r\\n}\\r\\n\\r\\n#calculators .head-table .error-message {\\r\\n color: #ff6060;\\r\\n}\\r\\n\\r\\n#calculators .view-mode .error-message {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.garage-container .btn {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n vertical-align: middle;\\r\\n font-size: 16px;\\r\\n font-weight: bold;\\r\\n text-align: center;\\r\\n text-decoration: none;\\r\\n padding: 0 50px;\\r\\n max-width: 100%;\\r\\n height: 50px;\\r\\n line-height: 50px;\\r\\n border-radius: 25px;\\r\\n border-top-left-radius: 25px;\\r\\n border-top-right-radius: 25px;\\r\\n border-bottom-right-radius: 25px;\\r\\n border-bottom-left-radius: 25px;\\r\\n border: 0;\\r\\n background: rgba(0, 168, 80, 1);\\r\\n background: -webkit-gradient(linear, left top, right top, from(rgba(0, 168, 80, 1)), to(rgba(97, 214, 153, 1)));\\r\\n background: -webkit-linear-gradient(left, rgba(0, 168, 80, 1) 0%, rgba(97, 214, 153, 1) 100%);\\r\\n background: -o-linear-gradient(left, rgba(0, 168, 80, 1) 0%, rgba(97, 214, 153, 1) 100%);\\r\\n background: linear-gradient(90deg, rgba(0, 168, 80, 1) 0%, rgba(97, 214, 153, 1) 100%);\\r\\n background-size: 100% auto;\\r\\n -webkit-box-shadow: 0 1px 10px 1px rgba(0, 0, 0, 0.2);\\r\\n -o-box-shadow: 0 1px 10px 1px rgba(0, 0, 0, 0.2);\\r\\n box-shadow: 0 1px 10px 1px rgba(0, 0, 0, 0.2);\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.icw .a-center {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.icw .a-right {\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.theme-h2c .h1,\\r\\n.theme-h2c .display-1.home-revise-title-line-height {\\r\\n line-height: 1.2 !important;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator select.select2,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator span.select2-selection__rendered,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .field input[type=text] {\\r\\n font-family: Kanit, notosansthai, Arial, sans-serif;\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #00A94F !important;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .field .input.border-bottom {\\r\\n border-bottom: solid 1px #E0E0E0 !important;\\r\\n padding-bottom: 1px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select2.disabled,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select2-selection__rendered.disabled,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select2-selection__placeholder {\\r\\n color: #8F8F8F !important;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select:after,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator span.select2-selection__arrow b:before {\\r\\n color: #333333;\\r\\n right: 0;\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .select2-container--default .select2-selection--single .select2-selection__arrow b {\\r\\n left: 0;\\r\\n top: 0;\\r\\n border: none;\\r\\n margin: 0 0 0 0;\\r\\n position: static;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container.select2-container--open .select2-selection--single .select2-selection__arrow,\\r\\n#jmt-calculator-container .mfp-content .select2-container.select2-container--open .select2-selection--single .select2-selection__arrow {\\r\\n transform: none;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container *:focus {\\r\\n box-shadow: none;\\r\\n -webkit-box-shadow: none;\\r\\n -moz-box-shadow: none;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container--open .select2-dropdown--below {\\r\\n margin: 0 0 0 0;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container--default .select2-selection--single .select2-selection__rendered {\\r\\n line-height: 50px !important;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select select,\\r\\n#jmt-calculator-container .select select:focus {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.mfp-hide {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .irs--flat .irs-min,\\r\\n.irs--flat .irs-max {\\r\\n font-size: 0px;\\r\\n line-height: 0px;\\r\\n padding: 0;\\r\\n /* visibility: hidden !important; */\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider .irs-handle {\\r\\n top: -0.1875rem;\\r\\n width: 30px;\\r\\n height: 30px;\\r\\n /* background-image: url(../img/garage/calculator-button-bar.png); */\\r\\n background-size: 30px;\\r\\n background-repeat: no-repeat;\\r\\n cursor: pointer;\\r\\n border-radius: 50%;\\r\\n -webkit-box-shadow: 0 0.1875rem 0.75rem rgb(140 152 164 / 31%);\\r\\n box-shadow: 0 0.1875rem 0.75rem rgb(140 152 164 / 31%);\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider .irs-handle i {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator-result .u-range-slider .irs-handle {\\r\\n top: 26px;\\r\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAgVBMVEUAAAAAqU4AqU4AqE8AqU4AqU8AokYAqU8AqE8AqU8Aq08AqU4AqE8AqU0AqU0AqE4AqU4Aq0wAqU4Aqk4Aqk4AqU4AqU4AqU4AqE4AqU4ApUsAqU4AqE4AqE0ApEkAsU4AqU4AqE0A/wAAqk0AqU////+b3bpjypMftGQTr1wMrVfojyF3AAAAJHRSTlMA8fuo9qsHh+K4F596TzDPmR1XSSbKwLSQWxHYpHAODek4AWMEOdV6AAABXklEQVRIx6WX2XKDMAxFrzcgEBIIWchGlirr/39gZwoT2gKJLZ8nv5wxaCzNFQZIw2S1iLSOFqskTGHPZm0E/UGY9QY2TEbUy2iCT8wNDWLmeEeeSXqDzGIMUgj6gBis3ZgsGKOPQJEVuwAd4ilZMo0799aunf3/bkMOKEatBqo2k26yLFr3cCRHjtVLDsmZEA25dpd1jJqEGGRNI0mOLOsO7e/f6+VWH26Xa39//5Ra8mRZAZgRT6YZAMWVEwCCK0fAibgynbDny3uUfDmE4ssJlnx5iYgvb6H5soDwkbcen+1XMMWXlc8jKTH2eZ4FXy4QCK4sAo9hoHzHUMUdgAff0YsJT25imeLICjV5318/7s/68Lw/qIvO0ZCRM2WbhLSrK2K8+HKVUwDcbBDiN2fj4pqzf4hrySNbN8rRIdgxgys/Mrekmh/WgZizJrTMFWNB4a5G/KXMah0s0M839smHd0RyVngAAAAASUVORK5CYII=');\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-indicator.u-range-slider-grid,\\r\\n.jmt-calculator-container .u-range-slider-indicator.u-range-slider-grid .irs {\\r\\n height: 80px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-grid .irs-grid {\\r\\n height: 25px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-grid .irs-grid-text {\\r\\n font-family: Helvetica, Arial, sans-serif;\\r\\n font-weight: 300;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-indicator .irs-bar,\\r\\n.jmt-calculator-container .u-range-slider-indicator .irs-line {\\r\\n top: 38.75px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .col-md-6 {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .col-sm-6 {\\r\\n width: 100%;\\r\\n padding-left: 10px;\\r\\n padding-right: 10px;\\r\\n}\\r\\n\\r\\n@media (min-width: 992px) {\\r\\n .jmt-calculator-container .col-md-6 {\\r\\n width: 50%;\\r\\n float: left;\\r\\n }\\r\\n .jmt-calculator-container .col-md-12 {\\r\\n float: left;\\r\\n }\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n .jmt-calculator-container .col-sm-6 {\\r\\n width: 50%;\\r\\n float: left;\\r\\n }\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .row {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .row:after {\\r\\n clear: both;\\r\\n content: \\\" \\\";\\r\\n display: table;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container select {\\r\\n appearance: none;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container ul {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container p {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .tab-condition li {\\r\\n font-family: Helvetica, Arial, sans-serif;\\r\\n font-weight: 300;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c h1,\\r\\n.jmt-calculator-container.theme-h2c h2,\\r\\n.jmt-calculator-container.theme-h2c h3,\\r\\n.jmt-calculator-container.theme-h2c h4,\\r\\n.jmt-calculator-container.theme-h2c h5,\\r\\n.jmt-calculator-container.theme-h2c h6,\\r\\n.jmt-calculator-container.theme-h2c .h1,\\r\\n.jmt-calculator-container.theme-h2c .h2,\\r\\n.jmt-calculator-container.theme-h2c .h3,\\r\\n.jmt-calculator-container.theme-h2c .h4,\\r\\n.jmt-calculator-container.theme-h2c .h5,\\r\\n.jmt-calculator-container.theme-h2c .h6,\\r\\n.jmt-calculator-container.theme-h2c strong,\\r\\n.jmt-calculator-container.theme-h2c a {\\r\\n font-family: Kanit, notosansthai, Arial, sans-serif;\\r\\n font-weight: 600;\\r\\n /*semi bold*/\\r\\n}\\r\\n\\r\\n#icw #calculators .c-red {\\r\\n color: var(--red-color-1) !important;\\r\\n}\\r\\n\\r\\n#icw #calculators .required-star {\\r\\n margin-left: 0px;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://src/Detail/partnerCalc.css\"],\"names\":[],\"mappings\":\"AAAA;;;IAGI,WAAW;AACf;;AAEA;;;IAGI,aAAa;AACjB;;AAEA;;;;;;IAMI,wBAAwB;AAC5B;;AAEA;IACI,2BAA2B;AAC/B;;AAEA;IACI,uCAAuC;AAC3C;;AAEA;IACI,4BAA4B;AAChC;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,wBAAwB;AAC5B;;AAEA;IACI,kBAAkB;IAClB,qBAAqB;IACrB,sBAAsB;IACtB,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,qBAAqB;IACrB,eAAe;IACf,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,mBAAmB;IACnB,4BAA4B;IAC5B,6BAA6B;IAC7B,gCAAgC;IAChC,+BAA+B;IAC/B,SAAS;IACT,+BAA+B;IAC/B,+GAA+G;IAC/G,6FAA6F;IAC7F,wFAAwF;IACxF,sFAAsF;IACtF,0BAA0B;IAC1B,qDAAqD;IACrD,gDAAgD;IAChD,6CAA6C;IAC7C,eAAe;AACnB;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,iBAAiB;AACrB;;AAEA;;IAEI,2BAA2B;AAC/B;;AAEA;;;IAGI,mDAAmD;IACnD,eAAe;IACf,gBAAgB;IAChB,yBAAyB;AAC7B;;AAEA;IACI,2CAA2C;IAC3C,mBAAmB;AACvB;;AAEA;;;IAGI,yBAAyB;AAC7B;;AAEA;;IAEI,cAAc;IACd,QAAQ;IACR,iBAAiB;AACrB;;AAEA;IACI,OAAO;IACP,MAAM;IACN,YAAY;IACZ,eAAe;IACf,gBAAgB;AACpB;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,gBAAgB;IAChB,wBAAwB;IACxB,qBAAqB;AACzB;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,4BAA4B;AAChC;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,wBAAwB;AAC5B;;AAEA;;IAEI,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,mCAAmC;AACvC;;AAEA;IACI,eAAe;IACf,WAAW;IACX,YAAY;IACZ,oEAAoE;IACpE,qBAAqB;IACrB,4BAA4B;IAC5B,eAAe;IACf,kBAAkB;IAClB,8DAA8D;IAC9D,sDAAsD;AAC1D;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,SAAS;IACT,20BAA20B;AAC/0B;;AAEA;;IAEI,YAAY;AAChB;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,yCAAyC;IACzC,gBAAgB;AACpB;;AAEA;;IAEI,YAAY;AAChB;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,WAAW;IACX,kBAAkB;IAClB,mBAAmB;AACvB;;AAEA;IACI;QACI,UAAU;QACV,WAAW;IACf;IACA;QACI,WAAW;IACf;AACJ;;AAEA;IACI;QACI,UAAU;QACV,WAAW;IACf;AACJ;;AAEA;IACI,cAAc;AAClB;;AAEA;IACI,WAAW;IACX,YAAY;IACZ,cAAc;AAClB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,UAAU;IACV,SAAS;AACb;;AAEA;IACI,SAAS;AACb;;AAEA;IACI,yCAAyC;IACzC,gBAAgB;AACpB;;AAEA;;;;;;;;;;;;;;IAcI,mDAAmD;IACnD,gBAAgB;IAChB,YAAY;AAChB;;AAEA;IACI,oCAAoC;AACxC;;AAEA;IACI,gBAAgB;AACpB\",\"sourcesContent\":[\"#calculators .container-calculate.view-mode[no-decoration=\\\"true\\\"] .col-body-box-1,\\r\\n#calculators .container-calculate.view-mode #for-stay[no-decoration=\\\"true\\\"] .col-body-box-1,\\r\\n#calculators .container-calculate.view-mode #for-business[no-decoration=\\\"true\\\"] .col-body-box-1 {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n#calculators .container-calculate.view-mode[no-decoration=\\\"true\\\"] .col-body-box-2,\\r\\n#calculators .container-calculate.view-mode #for-stay[no-decoration=\\\"true\\\"] .col-body-box-2,\\r\\n#calculators .container-calculate.view-mode #for-business[no-decoration=\\\"true\\\"] .col-body-box-2 {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n#calculators .container-calculate[no-decoration=\\\"true\\\"] .decoration-limit-field,\\r\\n#calculators .container-calculate[no-decoration=\\\"true\\\"] .decoration-installment-field,\\r\\n#calculators .container-calculate #for-stay[no-decoration=\\\"true\\\"] .decoration-limit-field,\\r\\n#calculators .container-calculate #for-stay[no-decoration=\\\"true\\\"] .decoration-installment-field,\\r\\n#calculators .container-calculate #for-business[no-decoration=\\\"true\\\"] .decoration-limit-field,\\r\\n#calculators .container-calculate #for-business[no-decoration=\\\"true\\\"] .decoration-installment-field {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n#calculators [no-decoration=\\\"true\\\"] .debt-burden-field {\\r\\n border-top: none !important;\\r\\n}\\r\\n\\r\\n#icw #calculators .input-error {\\r\\n border-bottom-color: var(--red-color-1);\\r\\n}\\r\\n\\r\\n#icw #calculators .head-table .input-error {\\r\\n border-bottom-color: #ff6060;\\r\\n}\\r\\n\\r\\n#calculators .head-table .error-message {\\r\\n color: #ff6060;\\r\\n}\\r\\n\\r\\n#calculators .view-mode .error-message {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.garage-container .btn {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n vertical-align: middle;\\r\\n font-size: 16px;\\r\\n font-weight: bold;\\r\\n text-align: center;\\r\\n text-decoration: none;\\r\\n padding: 0 50px;\\r\\n max-width: 100%;\\r\\n height: 50px;\\r\\n line-height: 50px;\\r\\n border-radius: 25px;\\r\\n border-top-left-radius: 25px;\\r\\n border-top-right-radius: 25px;\\r\\n border-bottom-right-radius: 25px;\\r\\n border-bottom-left-radius: 25px;\\r\\n border: 0;\\r\\n background: rgba(0, 168, 80, 1);\\r\\n background: -webkit-gradient(linear, left top, right top, from(rgba(0, 168, 80, 1)), to(rgba(97, 214, 153, 1)));\\r\\n background: -webkit-linear-gradient(left, rgba(0, 168, 80, 1) 0%, rgba(97, 214, 153, 1) 100%);\\r\\n background: -o-linear-gradient(left, rgba(0, 168, 80, 1) 0%, rgba(97, 214, 153, 1) 100%);\\r\\n background: linear-gradient(90deg, rgba(0, 168, 80, 1) 0%, rgba(97, 214, 153, 1) 100%);\\r\\n background-size: 100% auto;\\r\\n -webkit-box-shadow: 0 1px 10px 1px rgba(0, 0, 0, 0.2);\\r\\n -o-box-shadow: 0 1px 10px 1px rgba(0, 0, 0, 0.2);\\r\\n box-shadow: 0 1px 10px 1px rgba(0, 0, 0, 0.2);\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.icw .a-center {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.icw .a-right {\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.theme-h2c .h1,\\r\\n.theme-h2c .display-1.home-revise-title-line-height {\\r\\n line-height: 1.2 !important;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator select.select2,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator span.select2-selection__rendered,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .field input[type=text] {\\r\\n font-family: Kanit, notosansthai, Arial, sans-serif;\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n color: #00A94F !important;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .field .input.border-bottom {\\r\\n border-bottom: solid 1px #E0E0E0 !important;\\r\\n padding-bottom: 1px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select2.disabled,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select2-selection__rendered.disabled,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select2-selection__placeholder {\\r\\n color: #8F8F8F !important;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator .select:after,\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator span.select2-selection__arrow b:before {\\r\\n color: #333333;\\r\\n right: 0;\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .select2-container--default .select2-selection--single .select2-selection__arrow b {\\r\\n left: 0;\\r\\n top: 0;\\r\\n border: none;\\r\\n margin: 0 0 0 0;\\r\\n position: static;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container.select2-container--open .select2-selection--single .select2-selection__arrow,\\r\\n#jmt-calculator-container .mfp-content .select2-container.select2-container--open .select2-selection--single .select2-selection__arrow {\\r\\n transform: none;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container *:focus {\\r\\n box-shadow: none;\\r\\n -webkit-box-shadow: none;\\r\\n -moz-box-shadow: none;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container--open .select2-dropdown--below {\\r\\n margin: 0 0 0 0;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select2-container--default .select2-selection--single .select2-selection__rendered {\\r\\n line-height: 50px !important;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .select select,\\r\\n#jmt-calculator-container .select select:focus {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.mfp-hide {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n#jmt-calculator-container .irs--flat .irs-min,\\r\\n.irs--flat .irs-max {\\r\\n font-size: 0px;\\r\\n line-height: 0px;\\r\\n padding: 0;\\r\\n /* visibility: hidden !important; */\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider .irs-handle {\\r\\n top: -0.1875rem;\\r\\n width: 30px;\\r\\n height: 30px;\\r\\n /* background-image: url(../img/garage/calculator-button-bar.png); */\\r\\n background-size: 30px;\\r\\n background-repeat: no-repeat;\\r\\n cursor: pointer;\\r\\n border-radius: 50%;\\r\\n -webkit-box-shadow: 0 0.1875rem 0.75rem rgb(140 152 164 / 31%);\\r\\n box-shadow: 0 0.1875rem 0.75rem rgb(140 152 164 / 31%);\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider .irs-handle i {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c .sc-calculator-result .u-range-slider .irs-handle {\\r\\n top: 26px;\\r\\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAgVBMVEUAAAAAqU4AqU4AqE8AqU4AqU8AokYAqU8AqE8AqU8Aq08AqU4AqE8AqU0AqU0AqE4AqU4Aq0wAqU4Aqk4Aqk4AqU4AqU4AqU4AqE4AqU4ApUsAqU4AqE4AqE0ApEkAsU4AqU4AqE0A/wAAqk0AqU////+b3bpjypMftGQTr1wMrVfojyF3AAAAJHRSTlMA8fuo9qsHh+K4F596TzDPmR1XSSbKwLSQWxHYpHAODek4AWMEOdV6AAABXklEQVRIx6WX2XKDMAxFrzcgEBIIWchGlirr/39gZwoT2gKJLZ8nv5wxaCzNFQZIw2S1iLSOFqskTGHPZm0E/UGY9QY2TEbUy2iCT8wNDWLmeEeeSXqDzGIMUgj6gBis3ZgsGKOPQJEVuwAd4ilZMo0799aunf3/bkMOKEatBqo2k26yLFr3cCRHjtVLDsmZEA25dpd1jJqEGGRNI0mOLOsO7e/f6+VWH26Xa39//5Ra8mRZAZgRT6YZAMWVEwCCK0fAibgynbDny3uUfDmE4ssJlnx5iYgvb6H5soDwkbcen+1XMMWXlc8jKTH2eZ4FXy4QCK4sAo9hoHzHUMUdgAff0YsJT25imeLICjV5318/7s/68Lw/qIvO0ZCRM2WbhLSrK2K8+HKVUwDcbBDiN2fj4pqzf4hrySNbN8rRIdgxgys/Mrekmh/WgZizJrTMFWNB4a5G/KXMah0s0M839smHd0RyVngAAAAASUVORK5CYII=');\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-indicator.u-range-slider-grid,\\r\\n.jmt-calculator-container .u-range-slider-indicator.u-range-slider-grid .irs {\\r\\n height: 80px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-grid .irs-grid {\\r\\n height: 25px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-grid .irs-grid-text {\\r\\n font-family: Helvetica, Arial, sans-serif;\\r\\n font-weight: 300;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .u-range-slider-indicator .irs-bar,\\r\\n.jmt-calculator-container .u-range-slider-indicator .irs-line {\\r\\n top: 38.75px;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .col-md-6 {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .col-sm-6 {\\r\\n width: 100%;\\r\\n padding-left: 10px;\\r\\n padding-right: 10px;\\r\\n}\\r\\n\\r\\n@media (min-width: 992px) {\\r\\n .jmt-calculator-container .col-md-6 {\\r\\n width: 50%;\\r\\n float: left;\\r\\n }\\r\\n .jmt-calculator-container .col-md-12 {\\r\\n float: left;\\r\\n }\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n .jmt-calculator-container .col-sm-6 {\\r\\n width: 50%;\\r\\n float: left;\\r\\n }\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .row {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .row:after {\\r\\n clear: both;\\r\\n content: \\\" \\\";\\r\\n display: table;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container select {\\r\\n appearance: none;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container ul {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container p {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container .tab-condition li {\\r\\n font-family: Helvetica, Arial, sans-serif;\\r\\n font-weight: 300;\\r\\n}\\r\\n\\r\\n.jmt-calculator-container.theme-h2c h1,\\r\\n.jmt-calculator-container.theme-h2c h2,\\r\\n.jmt-calculator-container.theme-h2c h3,\\r\\n.jmt-calculator-container.theme-h2c h4,\\r\\n.jmt-calculator-container.theme-h2c h5,\\r\\n.jmt-calculator-container.theme-h2c h6,\\r\\n.jmt-calculator-container.theme-h2c .h1,\\r\\n.jmt-calculator-container.theme-h2c .h2,\\r\\n.jmt-calculator-container.theme-h2c .h3,\\r\\n.jmt-calculator-container.theme-h2c .h4,\\r\\n.jmt-calculator-container.theme-h2c .h5,\\r\\n.jmt-calculator-container.theme-h2c .h6,\\r\\n.jmt-calculator-container.theme-h2c strong,\\r\\n.jmt-calculator-container.theme-h2c a {\\r\\n font-family: Kanit, notosansthai, Arial, sans-serif;\\r\\n font-weight: 600;\\r\\n /*semi bold*/\\r\\n}\\r\\n\\r\\n#icw #calculators .c-red {\\r\\n color: var(--red-color-1) !important;\\r\\n}\\r\\n\\r\\n#icw #calculators .required-star {\\r\\n margin-left: 0px;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 102,\n\t\"./af.js\": 102,\n\t\"./ar\": 103,\n\t\"./ar-dz\": 104,\n\t\"./ar-dz.js\": 104,\n\t\"./ar-kw\": 105,\n\t\"./ar-kw.js\": 105,\n\t\"./ar-ly\": 106,\n\t\"./ar-ly.js\": 106,\n\t\"./ar-ma\": 107,\n\t\"./ar-ma.js\": 107,\n\t\"./ar-ps\": 108,\n\t\"./ar-ps.js\": 108,\n\t\"./ar-sa\": 109,\n\t\"./ar-sa.js\": 109,\n\t\"./ar-tn\": 110,\n\t\"./ar-tn.js\": 110,\n\t\"./ar.js\": 103,\n\t\"./az\": 111,\n\t\"./az.js\": 111,\n\t\"./be\": 112,\n\t\"./be.js\": 112,\n\t\"./bg\": 113,\n\t\"./bg.js\": 113,\n\t\"./bm\": 114,\n\t\"./bm.js\": 114,\n\t\"./bn\": 115,\n\t\"./bn-bd\": 116,\n\t\"./bn-bd.js\": 116,\n\t\"./bn.js\": 115,\n\t\"./bo\": 117,\n\t\"./bo.js\": 117,\n\t\"./br\": 118,\n\t\"./br.js\": 118,\n\t\"./bs\": 119,\n\t\"./bs.js\": 119,\n\t\"./ca\": 120,\n\t\"./ca.js\": 120,\n\t\"./cs\": 121,\n\t\"./cs.js\": 121,\n\t\"./cv\": 122,\n\t\"./cv.js\": 122,\n\t\"./cy\": 123,\n\t\"./cy.js\": 123,\n\t\"./da\": 124,\n\t\"./da.js\": 124,\n\t\"./de\": 125,\n\t\"./de-at\": 126,\n\t\"./de-at.js\": 126,\n\t\"./de-ch\": 127,\n\t\"./de-ch.js\": 127,\n\t\"./de.js\": 125,\n\t\"./dv\": 128,\n\t\"./dv.js\": 128,\n\t\"./el\": 129,\n\t\"./el.js\": 129,\n\t\"./en-au\": 130,\n\t\"./en-au.js\": 130,\n\t\"./en-ca\": 131,\n\t\"./en-ca.js\": 131,\n\t\"./en-gb\": 132,\n\t\"./en-gb.js\": 132,\n\t\"./en-ie\": 133,\n\t\"./en-ie.js\": 133,\n\t\"./en-il\": 134,\n\t\"./en-il.js\": 134,\n\t\"./en-in\": 135,\n\t\"./en-in.js\": 135,\n\t\"./en-nz\": 136,\n\t\"./en-nz.js\": 136,\n\t\"./en-sg\": 137,\n\t\"./en-sg.js\": 137,\n\t\"./eo\": 138,\n\t\"./eo.js\": 138,\n\t\"./es\": 139,\n\t\"./es-do\": 140,\n\t\"./es-do.js\": 140,\n\t\"./es-mx\": 141,\n\t\"./es-mx.js\": 141,\n\t\"./es-us\": 142,\n\t\"./es-us.js\": 142,\n\t\"./es.js\": 139,\n\t\"./et\": 143,\n\t\"./et.js\": 143,\n\t\"./eu\": 144,\n\t\"./eu.js\": 144,\n\t\"./fa\": 145,\n\t\"./fa.js\": 145,\n\t\"./fi\": 146,\n\t\"./fi.js\": 146,\n\t\"./fil\": 147,\n\t\"./fil.js\": 147,\n\t\"./fo\": 148,\n\t\"./fo.js\": 148,\n\t\"./fr\": 149,\n\t\"./fr-ca\": 150,\n\t\"./fr-ca.js\": 150,\n\t\"./fr-ch\": 151,\n\t\"./fr-ch.js\": 151,\n\t\"./fr.js\": 149,\n\t\"./fy\": 152,\n\t\"./fy.js\": 152,\n\t\"./ga\": 153,\n\t\"./ga.js\": 153,\n\t\"./gd\": 154,\n\t\"./gd.js\": 154,\n\t\"./gl\": 155,\n\t\"./gl.js\": 155,\n\t\"./gom-deva\": 156,\n\t\"./gom-deva.js\": 156,\n\t\"./gom-latn\": 157,\n\t\"./gom-latn.js\": 157,\n\t\"./gu\": 158,\n\t\"./gu.js\": 158,\n\t\"./he\": 159,\n\t\"./he.js\": 159,\n\t\"./hi\": 160,\n\t\"./hi.js\": 160,\n\t\"./hr\": 161,\n\t\"./hr.js\": 161,\n\t\"./hu\": 162,\n\t\"./hu.js\": 162,\n\t\"./hy-am\": 163,\n\t\"./hy-am.js\": 163,\n\t\"./id\": 164,\n\t\"./id.js\": 164,\n\t\"./is\": 165,\n\t\"./is.js\": 165,\n\t\"./it\": 166,\n\t\"./it-ch\": 167,\n\t\"./it-ch.js\": 167,\n\t\"./it.js\": 166,\n\t\"./ja\": 168,\n\t\"./ja.js\": 168,\n\t\"./jv\": 169,\n\t\"./jv.js\": 169,\n\t\"./ka\": 170,\n\t\"./ka.js\": 170,\n\t\"./kk\": 171,\n\t\"./kk.js\": 171,\n\t\"./km\": 172,\n\t\"./km.js\": 172,\n\t\"./kn\": 173,\n\t\"./kn.js\": 173,\n\t\"./ko\": 174,\n\t\"./ko.js\": 174,\n\t\"./ku\": 175,\n\t\"./ku-kmr\": 176,\n\t\"./ku-kmr.js\": 176,\n\t\"./ku.js\": 175,\n\t\"./ky\": 177,\n\t\"./ky.js\": 177,\n\t\"./lb\": 178,\n\t\"./lb.js\": 178,\n\t\"./lo\": 179,\n\t\"./lo.js\": 179,\n\t\"./lt\": 180,\n\t\"./lt.js\": 180,\n\t\"./lv\": 181,\n\t\"./lv.js\": 181,\n\t\"./me\": 182,\n\t\"./me.js\": 182,\n\t\"./mi\": 183,\n\t\"./mi.js\": 183,\n\t\"./mk\": 184,\n\t\"./mk.js\": 184,\n\t\"./ml\": 185,\n\t\"./ml.js\": 185,\n\t\"./mn\": 186,\n\t\"./mn.js\": 186,\n\t\"./mr\": 187,\n\t\"./mr.js\": 187,\n\t\"./ms\": 188,\n\t\"./ms-my\": 189,\n\t\"./ms-my.js\": 189,\n\t\"./ms.js\": 188,\n\t\"./mt\": 190,\n\t\"./mt.js\": 190,\n\t\"./my\": 191,\n\t\"./my.js\": 191,\n\t\"./nb\": 192,\n\t\"./nb.js\": 192,\n\t\"./ne\": 193,\n\t\"./ne.js\": 193,\n\t\"./nl\": 194,\n\t\"./nl-be\": 195,\n\t\"./nl-be.js\": 195,\n\t\"./nl.js\": 194,\n\t\"./nn\": 196,\n\t\"./nn.js\": 196,\n\t\"./oc-lnc\": 197,\n\t\"./oc-lnc.js\": 197,\n\t\"./pa-in\": 198,\n\t\"./pa-in.js\": 198,\n\t\"./pl\": 199,\n\t\"./pl.js\": 199,\n\t\"./pt\": 200,\n\t\"./pt-br\": 201,\n\t\"./pt-br.js\": 201,\n\t\"./pt.js\": 200,\n\t\"./ro\": 202,\n\t\"./ro.js\": 202,\n\t\"./ru\": 203,\n\t\"./ru.js\": 203,\n\t\"./sd\": 204,\n\t\"./sd.js\": 204,\n\t\"./se\": 205,\n\t\"./se.js\": 205,\n\t\"./si\": 206,\n\t\"./si.js\": 206,\n\t\"./sk\": 207,\n\t\"./sk.js\": 207,\n\t\"./sl\": 208,\n\t\"./sl.js\": 208,\n\t\"./sq\": 209,\n\t\"./sq.js\": 209,\n\t\"./sr\": 210,\n\t\"./sr-cyrl\": 211,\n\t\"./sr-cyrl.js\": 211,\n\t\"./sr.js\": 210,\n\t\"./ss\": 212,\n\t\"./ss.js\": 212,\n\t\"./sv\": 213,\n\t\"./sv.js\": 213,\n\t\"./sw\": 214,\n\t\"./sw.js\": 214,\n\t\"./ta\": 215,\n\t\"./ta.js\": 215,\n\t\"./te\": 216,\n\t\"./te.js\": 216,\n\t\"./tet\": 217,\n\t\"./tet.js\": 217,\n\t\"./tg\": 218,\n\t\"./tg.js\": 218,\n\t\"./th\": 219,\n\t\"./th.js\": 219,\n\t\"./tk\": 220,\n\t\"./tk.js\": 220,\n\t\"./tl-ph\": 221,\n\t\"./tl-ph.js\": 221,\n\t\"./tlh\": 222,\n\t\"./tlh.js\": 222,\n\t\"./tr\": 223,\n\t\"./tr.js\": 223,\n\t\"./tzl\": 224,\n\t\"./tzl.js\": 224,\n\t\"./tzm\": 225,\n\t\"./tzm-latn\": 226,\n\t\"./tzm-latn.js\": 226,\n\t\"./tzm.js\": 225,\n\t\"./ug-cn\": 227,\n\t\"./ug-cn.js\": 227,\n\t\"./uk\": 228,\n\t\"./uk.js\": 228,\n\t\"./ur\": 229,\n\t\"./ur.js\": 229,\n\t\"./uz\": 230,\n\t\"./uz-latn\": 231,\n\t\"./uz-latn.js\": 231,\n\t\"./uz.js\": 230,\n\t\"./vi\": 232,\n\t\"./vi.js\": 232,\n\t\"./x-pseudo\": 233,\n\t\"./x-pseudo.js\": 233,\n\t\"./yo\": 234,\n\t\"./yo.js\": 234,\n\t\"./zh-cn\": 235,\n\t\"./zh-cn.js\": 235,\n\t\"./zh-hk\": 236,\n\t\"./zh-hk.js\": 236,\n\t\"./zh-mo\": 237,\n\t\"./zh-mo.js\": 237,\n\t\"./zh-tw\": 238,\n\t\"./zh-tw.js\": 238\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 322;","import { configureStore } from \"@reduxjs/toolkit\";\r\nimport loginReducer from \"./stores/loginSlice\";\r\nimport { merchantAPI } from \"./stores/paylaterAPI\";\r\nimport paylaterReducer from \"./stores/paylaterSlice\";\r\nimport propertyReducer from \"./stores/propertySlice\";\r\nexport default () =>\r\n configureStore({\r\n reducer: {\r\n property: propertyReducer,\r\n login: loginReducer,\r\n paylater: paylaterReducer,\r\n [merchantAPI.reducerPath]: merchantAPI.reducer,\r\n },\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware().concat(merchantAPI.middleware),\r\n devTools: process.env.NODE_ENV !== \"production\",\r\n });\r\n","import Config from \"config\";\r\nimport parse from \"html-react-parser\";\r\nimport React from \"react\";\r\nimport {\r\n addCommas,\r\n dmyHmsToDateObj,\r\n getArea,\r\n getDateTimeFormat,\r\n getPropertyType,\r\n showAreaValue,\r\n showBedAndBath,\r\n showUseableAreaValue,\r\n timeInRangeList,\r\n} from \"../common/Common\";\r\nimport { prepareDataForProopertyBox } from \"../common/PropertyBox\";\r\nimport \"./index.css\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\n\r\nimport { auctionDetailLink } from \"./auctionConstants\";\r\n\r\nexport const TagBadgeWrapper = React.memo((propertyDetail) => {\r\n // console.log(\"TagBadgeWrapper Render\");\r\n\r\n return (\r\n
    \r\n {propertyDetail.IsPartner && (\r\n
    \r\n \r\n

    ทรัพย์ผู้ขาย

    \r\n
    \r\n )}\r\n {propertyDetail.PropertyID.slice(2, 4) === \"66\" && (\r\n
    \r\n \r\n

    ทรัพย์ฝากขาย

    \r\n
    \r\n )}\r\n {propertyDetail.IsNew && (\r\n
    \r\n \r\n

    NEW

    \r\n
    \r\n )}\r\n {propertyDetail.IsHot && (\r\n
    \r\n \r\n

    HOT

    \r\n
    \r\n )}\r\n {propertyDetail.PromotionName && (\r\n
    \r\n \r\n

    PROMOTION

    \r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\n\r\nexport const PartnerDetail = React.memo((propertyDetail) => {\r\n // console.log(\"TagBadgeWrapper Render\");\r\n if (!propertyDetail.IsPartner) return;\r\n return (\r\n
    \r\n ทรัพย์ผู้ขาย :\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport const PriceWrapper = React.memo((props) => {\r\n // Price\r\n let tag = \"\";\r\n let PromotionPrice = \"\";\r\n let Price = \"\";\r\n if (props.PromotionPrice) {\r\n if (props.isAuction) {\r\n tag =
    ราคาประมูลเริ่มต้นที่
    ;\r\n } else {\r\n tag =
    ราคาพิเศษ
    ;\r\n }\r\n\r\n PromotionPrice = (\r\n

    \r\n {addCommas(props.PromotionPrice)}\r\n บาท\r\n

    \r\n );\r\n Price =

    {addCommas(props.SellPrice)} บาท

    ;\r\n } else if (props.AdjustPrice) {\r\n tag =
    ราคาลดลงกว่าเดิม
    ;\r\n PromotionPrice = (\r\n

    \r\n {addCommas(props.AdjustPrice)}\r\n บาท\r\n

    \r\n );\r\n Price =

    {addCommas(props.SellPrice)} บาท

    ;\r\n } else {\r\n tag =
    ;\r\n PromotionPrice = (\r\n

    \r\n {addCommas(props.SellPrice)}\r\n บาท\r\n

    \r\n );\r\n }\r\n\r\n console.log(\"PriceWrapper Render\");\r\n\r\n return (\r\n
    \r\n {tag}\r\n
    \r\n {PromotionPrice}\r\n {Price}\r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport const PropertyDetailsTable = React.memo((propertyDetail) => {\r\n console.log(\"render PropertyDetailsTable\");\r\n\r\n var area = showAreaValue(propertyDetail) ? getArea(propertyDetail) : \"\";\r\n\r\n area = area ? area.value + \" \" + area.unit : \"\";\r\n\r\n return (\r\n
    \r\n {propertyDetail.PropertyTypeName && (\r\n
    \r\n
    ประเภททรัพย์
    \r\n
    {getPropertyType(propertyDetail)}
    \r\n
    \r\n )}\r\n {propertyDetail.AssetInfoTH && (\r\n
    \r\n
    \r\n รายละเอียดของทรัพย์\r\n
    \r\n
    {propertyDetail.AssetInfoTH}
    \r\n
    \r\n )}\r\n {area && (\r\n
    \r\n
    ขนาดพื้นที่
    \r\n
    {area}
    \r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\n\r\nexport const PropertyDetailsCondition = React.memo((propertyDetail) => {\r\n console.log(\"render PropertyDetailsCondition\");\r\n\r\n const PMMaintenanceStatus =\r\n propertyDetail.PMMaintenanceStatus === \"มีผู้บุกรุก\"\r\n ? \"มีผู้ใช้ประโยชน์\"\r\n : propertyDetail.PMMaintenanceStatus;\r\n var propertySourceName = \"\";\r\n if (propertyDetail.PropertySourceID) {\r\n switch (propertyDetail.PropertySourceID) {\r\n case \"13\":\r\n case \"03\":\r\n case \"04\":\r\n propertySourceName = \"โอนกรรมสิทธิ์เป็นของธนาคารแล้ว\";\r\n break;\r\n case \"12\":\r\n case \"02\":\r\n propertySourceName = \"อยู่ระหว่างโอนกรรมสิทธิ์เป็นของธนาคาร\";\r\n break;\r\n case \"66\":\r\n propertySourceName = \"ทรัพย์ฝากขาย ไม่ใช่ทรัพย์สินของธนาคาร\"; //\"ทรัพย์ฝากขาย ไม่ใช่ทรัพย์สินของธนาคาร\";\r\n break;\r\n // case \"10\":\r\n // propertySourceName = \"ทรัพย์พาร์ทเนอร์ ไม่ใช่ทรัพย์สินของธนาคาร\";\r\n // break;\r\n default:\r\n propertySourceName = propertyDetail.PropertySourceName;\r\n break;\r\n }\r\n }\r\n\r\n var InOutProblemTH = \"\";\r\n\r\n if (propertyDetail.InOutProblemTH) {\r\n InOutProblemTH = \"ทรัพย์มีข้อจำกัดทางเข้า-ออก\";\r\n }\r\n\r\n function genList(value) {\r\n return (\r\n
  • \r\n \r\n {value}\r\n
  • \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n {/*
    */}\r\n

    เงื่อนไข / โปรโมชัน

    \r\n {/*
    */}\r\n
      \r\n {PMMaintenanceStatus && genList(PMMaintenanceStatus)}\r\n {propertySourceName && genList(propertySourceName)}\r\n {InOutProblemTH && genList(InOutProblemTH)}\r\n {propertyDetail.PromotionRemark && genList(propertyDetail.PromotionRemark)}\r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport const PropertyInfoTable = React.memo((propertyDetail) => {\r\n console.log(\"render PropertyInfoTable\");\r\n\r\n var coordinateHtmls;\r\n\r\n if (\r\n propertyDetail.Latitude &&\r\n propertyDetail.Latitude !== \"-\" &&\r\n propertyDetail.Longtitude &&\r\n propertyDetail.Longtitude !== \"-\"\r\n ) {\r\n coordinateHtmls = (\r\n <>\r\n ละติจูด: {propertyDetail.Latitude}
    ลองติจูด: {propertyDetail.Longtitude}\r\n \r\n );\r\n } else if (propertyDetail.Latitude && propertyDetail.Latitude !== \"-\") {\r\n coordinateHtmls = <>ละติจูด: {propertyDetail.Latitude};\r\n } else if (propertyDetail.Longtitude && propertyDetail.Longtitude !== \"-\") {\r\n coordinateHtmls = <>ลองติจูด: {propertyDetail.Longtitude};\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n {propertyDetail.PropertyDocumentName && (\r\n
    \r\n
    \r\n ประเภทเอกสารสิทธิ์\r\n
    \r\n
    {propertyDetail.PropertyDocumentName}
    \r\n
    \r\n )}\r\n {propertyDetail.DocumentNo && (\r\n
    \r\n
    \r\n เลขที่เอกสารสิทธิ์\r\n
    \r\n
    {propertyDetail.DocumentNo}
    \r\n
    \r\n )}\r\n {coordinateHtmls && (\r\n
    \r\n
    พิกัดภูมิศาสตร์
    \r\n
    {coordinateHtmls}
    \r\n
    \r\n )}\r\n
    \r\n \r\n {/*
    \r\n

    QR Code ของทรัพย์สิน

    \r\n \r\n
    */}\r\n \r\n );\r\n});\r\n\r\nconst SpecialAnnouncement = React.memo((propertyDetail) => {\r\n // \"838800093\"\r\n if (propertyDetail.PropertyID == \"028811523\") {\r\n return (\r\n <>\r\n
    \r\n เงื่อนไขพิเศษ : \r\n \r\n ราคาประกาศขายขั้นต่ำ 58,000,000.-บาท โดยผู้สนใจซื้อ ต้องทำการเสนอราคา ภายใน วันที่ 27\r\n เมษายน 2566 ถึง วันที่ 8 พฤษภาคม 2566 เวลา 12.00 น. ผู้เสนอราคาสูงสุดจะเป็นผู้ที่ได้รับ\r\n การพิจารณาจากทางธนาคาร เงื่อนไขอื่นๆ เป็นไปตามที่ธนาคารกำหนด.\r\n \r\n
    \r\n \r\n );\r\n }\r\n return;\r\n});\r\n\r\nexport const AnnouncementText = React.memo((propertyDetail) => {\r\n try {\r\n var promoStart = dmyHmsToDateObj(propertyDetail.PromotionStartDate);\r\n var promoEnd = dmyHmsToDateObj(propertyDetail.PromotionEndDate);\r\n\r\n if (!timeInRangeList([[promoStart, promoEnd]], new Date().setHours(0, 0, 0, 0))) {\r\n return;\r\n }\r\n\r\n if (propertyDetail.isAuction) {\r\n console.log(\"acution true-->\");\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ทรัพย์ประมูล วันที่ {getDateTimeFormat(propertyDetail.isAuction[1], false)}\r\n
    \r\n
    \r\n ดูรายละเอียดเพิ่มเติม\r\n
    \r\n
    \r\n \r\n );\r\n }\r\n\r\n var text = \"ทรัพย์โปรโมชัน\";\r\n\r\n if(propertyDetail.PromotionName.includes(\"0_fee_3yrs\")){\r\n text += \" โปรน็อกแรง ดอกเบี้ย 0% นาน 3 ปี\";\r\n }else if(propertyDetail.PromotionName.includes(\"0_fee_10yrs\")){\r\n text += \" โปรน็อกแรง ดอกเบี้ย 0% นาน 10 ปี\";\r\n }else{\r\n text += \"ราคาพิเศษ\";\r\n }\r\n \r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {text}
    \r\n
    \r\n ตั้งแต่วันที่ {getDateTimeFormat(promoStart, false)} –{\" \"}\r\n {getDateTimeFormat(promoEnd, false)}\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n } catch {\r\n return;\r\n }\r\n});\r\n\r\nexport const PropertyRemark = React.memo((propertyDetail) => {\r\n console.log(\"render remark\");\r\n\r\n var remarkHtml;\r\n\r\n if (propertyDetail.RemarkDetail) {\r\n remarkHtml = <>{parse(propertyDetail.RemarkDetail)};\r\n } else if (propertyDetail.PropertyID) {\r\n var code = propertyDetail.PropertyID.substr(2, 2);\r\n\r\n if (propertyDetail.IsPartner) {\r\n remarkHtml = (\r\n <>\r\n
  • \r\n ข้อมูล ราคา และเงื่อนไขทรัพย์สินที่เสนอขาย\r\n อาจเปลี่ยนแปลงได้โดยผู้ขายไม่ต้องแจ้งให้ผู้ซื้อทราบล่วงหน้า\r\n
  • \r\n
  • \r\n ผู้ซื้อมีหน้าที่ต้องตรวจสอบข้อมูล สภาพทรัพย์สิน สถานที่ตั้งทรัพย์สิน\r\n และข้อมูลอื่นใดที่เกี่ยวข้องกับทรัพย์สินก่อนเสนอซื้อ\r\n
  • \r\n \r\n );\r\n } else if (code == \"66\") {\r\n remarkHtml = (\r\n <>\r\n
  • ทรัพย์ฝากขายเป็นทรัพย์สินของบุคคลภายนอก ธนาคารไม่ได้เป็นเจ้าของกรรมสิทธิ์
  • \r\n
  • ข้อมูลดังกล่าวเป็นข้อมูลของผู้ฝากขาย ธนาคารไม่รับรองความถูกต้องแต่อย่างใด
  • \r\n
  • ธนาคารไม่มีส่วนเกี่ยวข้องกับการตกลงซื้อขายและกำหนดเงื่อนไขใดๆ
  • \r\n
  • ข้อมูลทรัพย์สิน, ราคา, เงื่อนไข อาจมีการเปลี่ยนแปลงโดยไม่มีการแจ้งให้ทราบล่วงหน้า
  • \r\n
  • \r\n ค่าพิกัดภูมิศาสตร์และการตีเส้นสีแดงในภาพข้างต้น\r\n เป็นเพียงการระบุตำแหน่งที่ตั้งและประมาณการพื้นที่เบื้องต้นของทรัพย์สินรอการขายเบื้องต้นของธนาคารเท่านั้น\r\n ซึ่งอาจมีการคลาดเคลื่อนจากสภาพความเป็นจริงได้\r\n ผู้ซื้อต้องตรวจสอบสภาพสถานที่ตั้งทรัพย์สินด้วยตนเองก่อนซื้อ\r\n
  • \r\n
  • สำหรับทรัพย์ฝากขายทุกประเภท ไม่เข้าร่วมโปรโมชันฟรีค่าธรรมเนียมการโอนทุกกรณี
  • \r\n
  • \r\n ทรัพย์ฝากขายทุกประเภทที่ไม่ติดจำนองกับธนาคารกสิกรไทย\r\n ไม่สามารถเข้าร่วม แคมเปญสินเชื่อบ้าน โครงการ K-Smart Asset (Home Loan)\r\n และโครงการสินเชื่อเพื่อลงทุนในสินทรัพย์ถาวร (K-SME Smart Asset) ได้\r\n
  • \r\n \r\n );\r\n } else if (code == \"88\") {\r\n remarkHtml = (\r\n <>\r\n
  • ข้อมูลทรัพย์สิน, ราคา, เงื่อนไข อาจมีการเปลี่ยนแปลงโดยไม่ต้องแจ้งให้ทราบล่วงหน้า
  • \r\n
  • \r\n ค่าพิกัดภูมิศาสตร์เป็นเพียงการระบุตำแหน่งที่ตั้งทรัพย์สินรอการขายเบื้องต้นของธนาคารเท่านั้น\r\n อาจมีการคลาดเคลื่อนจากสภาพความเป็นจริงได้\r\n ผู้ซื้อต้องตรวจสอบสภาพสถานที่ตั้งทรัพย์สินด้วยตนเองก่อนซื้อ\r\n
  • \r\n
  • \r\n หากทรัพย์สินมีผู้บุกรุกและ/หรือผู้อยู่อาศัย และ/หรือการรอนสิทธิ์\r\n ผู้เสนอซื้อตกลงรับภาระในการดำเนินการเอง เว้นแต่จะตกลงไว้เป็นอย่างอื่น\r\n
  • \r\n
  • \r\n โปรโมชันฟรีค่าธรรมเนียมการโอนกรรมสิทธิ์\r\n สำหรับผู้ซื้อทรัพย์มือสองของธนาคารกสิกรไทยที่เป็นทรัพย์พร้อมโอน\r\n (โอนเป็นกรรมสิทธิ์ของธนาคารแล้ว) โดยธนาคารจ่ายค่าโอนกรรมสิทธิ์ให้ตามจริง ไม่เกิน 100,000\r\n บาท โดยมีเงื่อนไขดังนี้ สำหรับลูกค้าที่เสนอซื้อและได้รับการอนุมัติขาย ตั้งแต่วันที่ 1 มกราคม 2568\r\n - 31 มีนาคม 2568 ต้องดำเนินการโอนกรรมสิทธิ์ให้แล้วเสร็จภายใน 30 วัน\r\n นับจากวันที่ธนาคารแจ้งผลการอนุมัติขาย\r\n
  • \r\n
  • สำหรับทรัพย์ฝากขายทุกประเภท ไม่เข้าร่วมโปรโมชันฟรีค่าธรรมเนียมการโอนทุกกรณี
  • \r\n
  • \r\n สำหรับทรัพย์ที่มีราคาพิเศษที่ประกาศอยู่บนเว็บไซต์\r\n ธนาคารขอสงวนสิทธิ์อนุมัติขายให้กับลูกค้าที่ทำการเสนอซื้อไม่ต่ำกว่าราคาพิเศษ\r\n และวางเงินประกันการเสนอซื้อ 1% พร้อมส่งเอกสารหลักฐานการเสนอซื้อเป็นลำดับแรก\r\n
  • \r\n
  • เงื่อนไขการขอคืนเงินประกัน/เงินมัดจำ
  • \r\n
  • \r\n กรณียื่นสินเชื่อกับธนาคารกสิกรไทยเท่านั้น ถึงจะสามารถขอเงินคืนได้โดยมีเงื่อนไขดังนี้ :\r\n
      \r\n
    • ธนาคารไม่อนุมัติสินเชื่อ หรือ
    • \r\n
    • \r\n ธนาคารอนุมัติสินเชื่อ แต่ไม่เท่ากับจำนวนที่ท่านยื่นเรื่องขอสินเชื่อไว้ (ต่างเสนอ)\r\n
    • \r\n
    • \r\n ลูกค้าต้องยื่นขอสินเชื่อกับธนาคารกสิกรไทยเท่านั้น โดยระยะเวลาที่ยื่นไม่เกิน 15 วัน\r\n หลังวันที่ธนาคารแจ้งผลการอนุมัติขายทรัพย์\r\n
    • \r\n
    • \r\n ลูกค้าต้องเซ็นสัญญาซื้อขายและวางเงินมัดจำเพิ่ม 9% ไม่เกิน 15 วัน\r\n หลังวันที่ธนาคารแจ้งผลการอนุมัติขายทรัพย์\r\n
    • \r\n
    • \r\n โดยลูกค้าสามารถติดต่อทีมขายที่ดูแลสินเชื่อ เพื่อทำเรื่องเสนอขอคืนเงินประกัน (1%)\r\n เงินมัดจำ (9%) ทั้งนี้จะต้องเป็นไปตามเงื่อนไขที่ธนาคารกำหนด\r\n ธนาคารขอสงวนสิทธิ์ในการเปลี่ยนแปลงเงื่อนไข ข้อกำหนด\r\n รวมถึงการยกเลิกรายการส่งเสริมการขายนี้โดยไม่ต้องแจ้งให้ทราบล่วงหน้า หลักเกณฑ์\r\n และเงื่อนไขอื่นๆ เป็นไปตามที่ธนาคารกำหนด\r\n ในกรณีมีข้อพิพาทให้ถือคำตัดสินของธนาคารเป็นที่สุด สอบถามข้อมูลเพิ่มเติม K-Contact\r\n Center โทร{\" \"}\r\n \r\n 02-8888888\r\n {\" \"}\r\n กด 04\r\n
    • \r\n
    \r\n
  • \r\n \r\n );\r\n } else {\r\n remarkHtml = (\r\n <>\r\n
  • ข้อมูลทรัพย์สิน, ราคา, เงื่อนไข อาจมีการเปลี่ยนแปลงโดยไม่ต้องแจ้งให้ทราบล่วงหน้า
  • \r\n
  • \r\n ค่าพิกัดภูมิศาสตร์และการตีเส้นสีแดงในภาพข้างต้น\r\n เป็นเพียงการระบุตำแหน่งที่ตั้งและประมาณการพื้นที่เบื้องต้นของทรัพย์สินรอการขายเบื้องต้นของธนาคารเท่านั้น\r\n ซึ่งอาจมีการคลาดเคลื่อนจากสภาพความเป็นจริงได้\r\n ผู้ซื้อต้องตรวจสอบสภาพสถานที่ตั้งทรัพย์สินด้วยตนเองก่อนซื้อ\r\n
  • \r\n
  • \r\n หากทรัพย์สินมีผู้บุกรุกและ/หรือผู้อยู่อาศัย และ/หรือการรอนสิทธิ์\r\n ผู้เสนอซื้อตกลงรับภาระในการดำเนินการเอง เว้นแต่จะตกลงไว้เป็นอย่างอื่น\r\n
  • \r\n
  • \r\n สำหรับทรัพย์ที่มีราคาพิเศษประกาศอยู่บนเว็บไซต์ ธนาคารขอสงวนสิทธิ อนุมัติขายให้กับ\r\n ลูกค้าที่ทำการเสนอซื้อไม่ต่ำกว่าราคาพิเศษ และวางเงินประกันการเสนอซื้อ 1%\r\n พร้อมส่งเอกสารหลักฐานการเสนอซื้อ เป็นลำดับแรก\r\n
  • \r\n
  • \r\n ธนาคารขอสงวนสิทธิ์ในการเปลี่ยนแปลงเงื่อนไข ข้อกำหนด\r\n รวมถึงการยกเลิกรายการส่งเสริมการขายนี้โดยไม่ต้องแจ้งให้ทราบล่วงหน้า หลักเกณฑ์\r\n และเงื่อนไขอื่นๆ เป็นไปตามที่ธนาคารกำหนด\r\n ในกรณีมีข้อพิพาทให้ถือคำตัดสินของธนาคารเป็นที่สุด สอบถามข้อมูลเพิ่มเติม K-Contact Center\r\n โทร{\" \"}\r\n \r\n 02-8888888\r\n {\" \"}\r\n กด 04\r\n
  • \r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    หมายเหตุ :
    \r\n
      {remarkHtml}
    \r\n
    \r\n เพิ่มเติม\r\n \r\n
    \r\n
    \r\n \r\n );\r\n});\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n if (prevProps !== nextProps) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const PropertyNearByTabList = React.memo((propertyDetail) => {\r\n const NearbyPlaces = propertyDetail.NearbyPlaces;\r\n\r\n let tab = [];\r\n let tabDetail = [];\r\n let lg = propertyDetail.addtion;\r\n\r\n if (NearbyPlaces) {\r\n NearbyPlaces.map((item, index) => {\r\n let id = \"\";\r\n if (typeof item.TypeCode !== \"string\") {\r\n id = item.TypeCode[0];\r\n } else {\r\n id = item.TypeCode;\r\n }\r\n\r\n let icon = \"\";\r\n\r\n if (item.icon) {\r\n icon = item.icon;\r\n }\r\n\r\n tab.push(\r\n
  • \r\n \r\n \r\n \r\n
  • \r\n );\r\n\r\n tabDetail.push(\r\n \r\n

    {item.NameTH}

    \r\n
      \r\n {item.places.slice(0, 10).map((item, index) => {\r\n return (\r\n
    • \r\n {item.PlaceName} {(item.Distance / 1000).toFixed(1)} กม.\r\n
    • \r\n );\r\n })}\r\n
    \r\n
    \r\n );\r\n // console.log(item, index, id, tab, tabDetail)\r\n });\r\n }\r\n\r\n console.log(\"PropertyNearByTabList render\", NearbyPlaces);\r\n // locations = locations.map(({places}) => places).flat()\r\n // propertyDetail.addtion (-lg)\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {tabDetail}\r\n {/*
    \r\n

    รถไฟฟ้า

    \r\n
      \r\n
    • ศูนย์ราชการนนทบุรี 0.8 กม.
    • \r\n
    • กระทรวงสาธารณสุข 1.1 กม.
    • \r\n
    • บางกระสอ 1.7 กม.
    • \r\n
    \r\n
    \r\n
    \r\n

    Shopping

    \r\n
      \r\n
    • ศูนย์ราชการนนทบุรี 0.8 กม.
    • \r\n
    • กระทรวงสาธารณสุข 1.1 กม.
    • \r\n
    • บางกระสอ 1.7 กม.
    • \r\n
    \r\n
    \r\n
    \r\n

    Hospital

    \r\n
      \r\n
    • ศูนย์ราชการนนทบุรี 0.8 กม.
    • \r\n
    • กระทรวงสาธารณสุข 1.1 กม.
    • \r\n
    • บางกระสอ 1.7 กม.
    • \r\n
    \r\n
    \r\n
    \r\n

    Restaurant

    \r\n
      \r\n
    • ศูนย์ราชการนนทบุรี 0.8 กม.
    • \r\n
    • กระทรวงสาธารณสุข 1.1 กม.
    • \r\n
    • บางกระสอ 1.7 กม.
    • \r\n
    \r\n
    */}\r\n
    \r\n \r\n );\r\n}, areNearbyPlacesEqual);\r\n\r\nexport const PropertyNearByTabList2024 = React.memo((propertyDetail) => {\r\n const NearbyPlaces = propertyDetail.NearbyPlaces;\r\n\r\n let tab = [];\r\n let tabDetail = [];\r\n let lg = propertyDetail.addtion;\r\n\r\n const CategoryDetail = propertyDetail.CategoryDetail;\r\n\r\n var hasFirstTab = false;\r\n\r\n if (CategoryDetail) {\r\n const details = CategoryDetail.split(\"#\").filter((detail) => detail !== \"\");\r\n const data = [];\r\n\r\n details.forEach((detail) => {\r\n const [PlaceName, Distance] = detail.split(\"|\");\r\n data.push({ PlaceName, Distance });\r\n });\r\n tabDetail.push(\r\n
    \r\n \r\n \r\n {data.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n {item.PlaceName}\r\n {parseFloat(item.Distance).toFixed(1)} กม.
    \r\n
    \r\n );\r\n hasFirstTab = tabDetail.length > 0;\r\n\r\n if (hasFirstTab) {\r\n tab.push(\r\n
  • \r\n จุดน่าสนใจ\r\n
  • \r\n );\r\n }\r\n }\r\n\r\n if (NearbyPlaces) {\r\n NearbyPlaces.map((item, index) => {\r\n let id = \"\";\r\n if (typeof item.TypeCode !== \"string\") {\r\n id = item.TypeCode[0];\r\n } else {\r\n id = item.TypeCode;\r\n }\r\n\r\n let icon = \"\";\r\n\r\n if (item.icon) {\r\n icon = item.icon;\r\n }\r\n\r\n tab.push(\r\n \r\n {item.NameTH}\r\n \r\n );\r\n\r\n tabDetail.push(\r\n <>\r\n \r\n \r\n \r\n {item.places.slice(0, 10).map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n {item.PlaceName}\r\n {(parseFloat(item.Distance) / 1000).toFixed(1)} กม.
    \r\n
    \r\n \r\n );\r\n // console.log(item, index, id, tab, tabDetail)\r\n });\r\n }\r\n\r\n console.log(\"PropertyNearByTabList render\", NearbyPlaces);\r\n // locations = locations.map(({places}) => places).flat()\r\n // propertyDetail.addtion (-lg)\r\n return (\r\n <>\r\n
    \r\n

    สถานที่ใกล้เคียง

    \r\n
    \r\n
    \r\n
    \r\n
      {tab}
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {tabDetail}
    \r\n
    \r\n
    \r\n \r\n );\r\n}, areNearbyPlacesEqual);\r\n\r\nfunction areNearbyPlacesEqual(prevProps, nextProps) {\r\n if (prevProps.NearbyPlaces?.length !== nextProps.NearbyPlaces?.length) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const DetailContainer = React.memo((propertyDetail) => {\r\n var Bedroom =\r\n showBedAndBath(propertyDetail) && propertyDetail.Bedroom > 0 ? propertyDetail.Bedroom : \"\";\r\n var Bathroom =\r\n showBedAndBath(propertyDetail) && propertyDetail.Bathroom > 0 ? propertyDetail.Bathroom : \"\";\r\n\r\n var area = showAreaValue(propertyDetail) ? getArea(propertyDetail) : \"\";\r\n\r\n var ShowAreaValue = area ? area.value + \" \" + area.unit : \"\";\r\n var ShowUseableArea =\r\n showUseableAreaValue(propertyDetail) && propertyDetail.UseableArea\r\n ? propertyDetail.UseableArea.toFixed(2) + \" ตร.ม.\"\r\n : \"\";\r\n\r\n return (\r\n <>\r\n
    \r\n {ShowAreaValue && (\r\n
    \r\n

    เนื้อที่

    \r\n \r\n

    {ShowAreaValue}

    \r\n
    \r\n )}\r\n\r\n {ShowUseableArea && (\r\n
    \r\n

    พื้นที่ใช้สอย

    \r\n \r\n

    {ShowUseableArea}

    \r\n
    \r\n )}\r\n\r\n {Bedroom && (\r\n
    \r\n

    ห้องนอน

    \r\n \r\n

    {Bedroom} ห้อง

    \r\n
    \r\n )}\r\n\r\n {Bathroom && (\r\n
    \r\n

    ห้องน้ำ

    \r\n \r\n

    {Bathroom} ห้อง

    \r\n
    \r\n )}\r\n\r\n {propertyDetail.CarParking && (\r\n
    \r\n

    ที่จอดรถ

    \r\n \r\n

    {propertyDetail.CarParking} คัน

    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n});\r\n\r\nexport const PrivacyText = React.memo((propertyDetail) => {\r\n const kbankPrivacyLink = \"https://kbank.co/PDPA_TH_WEBSITE\";\r\n const JMTPrivacyLink = \"https://www.j-amc.co.th/index.php/policycustomer\";\r\n if (propertyDetail.IsPartner) {\r\n // var partnerName = \"บริษัท บริหารสินทรัพย์ เจ จำก้ด \";\r\n var privacyText =\r\n \"ข้าพเจ้ายินยอมให้ธนาคารเปิดเผยข้อมูลของข้าพเจ้าตามที่ระบุข้างต้นให้แก่ผู้ขายที่ข้าพเจ้าสนใจ (“ผู้ขาย”) และยินยอมให้ธนาคาร และ/หรือผู้ขายเก็บรวบรวม ใช้ และ/หรือเปิดเผยข้อมูลของข้าพเจ้าดังกล่าว เพื่อวัตถุประสงค์ในการติดต่อ นำเสนอ และประชาสัมพันธ์ผลิตภัณฑ์และบริการที่ข้าพเจ้าสนใจ ข้าพเจ้าได้อ่านและเข้าใจรายละเอียดและสิทธิใน \";\r\n\r\n return (\r\n <>\r\n

    \r\n {privacyText}\r\n \r\n นโยบายการคุ้มครองข้อมูลส่วนบุคคลของธนาคาร\r\n {\" \"}\r\n และ นโยบายการคุ้มครองข้อมูลส่วนบุคคลของผู้ขาย ตามช่องทางที่ผู้ขายกำหนดเรียบร้อยแล้ว\r\n

    \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n

    \r\n ธนาคารจะเก็บรวบรวม ใช้ เปิดเผยข้อมูลส่วนบุคคลของคุณเพื่อติดต่อ\r\n นำเสนอและประชาสัมพันธ์ผลิตภัณฑ์และบริการที่คุณสนใจ โปรดศึกษารายละเอียดและสิทธิใน{\" \"}\r\n \r\n นโยบายการคุ้มครองข้อมูลส่วนบุคคล\r\n \r\n

    \r\n \r\n );\r\n});\r\n\r\nexport function getLocation(data) {\r\n var location = \"\";\r\n\r\n if (data.AddressNoTH) {\r\n location += \"เลขที่ \" + data.AddressNoTH;\r\n }\r\n\r\n if (data.BuildingTH) {\r\n location += \" อาคาร \" + data.BuildingTH;\r\n }\r\n\r\n if (data.FloorTH) {\r\n location += \" ชั้น \" + data.FloorTH;\r\n }\r\n\r\n if (data.VillageTH) {\r\n location += \" หมู่บ้าน \" + data.VillageTH;\r\n }\r\n\r\n if (data.SoiTH) {\r\n location += \" ซอย \" + data.SoiTH;\r\n }\r\n\r\n if (data.RoadTH) {\r\n location += \" ถนน \" + data.RoadTH;\r\n }\r\n\r\n var isBangkok = data.ProvinceName && data.ProvinceName.indexOf(\"กรุงเทพ\") !== -1;\r\n\r\n if (data.TambonName) {\r\n location += (isBangkok ? \" แขวง \" : \" ตำบล \") + data.TambonName;\r\n }\r\n\r\n if (data.AmphurName) {\r\n //location += (isBangkok ? \" เขต \" : \" อำเภอ \") + data.AmphurName;\r\n if (isBangkok) {\r\n if (data.AmphurName.indexOf(\"เขต\") === 0) {\r\n location += \" \" + data.AmphurName;\r\n } else {\r\n location += \" เขต \" + data.AmphurName;\r\n }\r\n } else {\r\n location += \" อำเภอ \" + data.AmphurName;\r\n }\r\n }\r\n\r\n if (data.ProvinceName) {\r\n location += \" จังหวัด \" + data.ProvinceName;\r\n }\r\n\r\n return location.trim();\r\n}\r\n\r\nexport const TagPropertiesWrapper = React.memo((propertyDetail) => {\r\n const group = propertyDetail.CategoryGroup;\r\n\r\n const tags = group?.split(\"#\")?.filter((tag) => tag !== \"\") ?? [];\r\n\r\n const tagToLink = (tag) => {\r\n switch (tag) {\r\n case \"ทรัพย์อุ่นใจใกล้หมอ\":\r\n return pagesLink.search+\"?searchpurposes=Doctor\";\r\n case \"ทรัพย์เพื่อตากอากาศ\":\r\n return pagesLink.search+\"?searchpurposes=Bungalow\";\r\n case \"ทรัพย์ต่างจังหวัดใจกลางเมือง\":\r\n return pagesLink.search+\"?searchpurposes=CityCenter\";\r\n case \"ทรัพย์กรุงเทพฯ รอบนอก\":\r\n return pagesLink.search+\"?searchpurposes=OuterBangkok\";\r\n case \"ทรัพย์เด่นแนวรถไฟฟ้า\":\r\n return pagesLink.search+\"?searchpurposes=OutstandingAlongTheSkyTrain\";\r\n default:\r\n return pagesLink.search;\r\n }\r\n };\r\n\r\n // Doctor ทรัพย์อุ่นใจใกล้หมอ\r\n // Bungalow ทรัพย์เพื่อตากอากาศ\r\n // CityCenter ทรัพย์ต่างจังหวัดใจกลางเมือง\r\n // OuterBangkok ทรัพย์กรุงเทพฯ รอบนอก\r\n // OutstandingAlongTheSkyTrain ทรัพย์เด่นแนวรถไฟฟ้า\r\n\r\n return (\r\n <>\r\n
    \r\n {tags.map((tag) => (\r\n \r\n {tag}\r\n \r\n ))}\r\n
    \r\n {/*
    \r\n \r\n ทรัพย์ใกล้รถไฟฟ้า\r\n \r\n \r\n ทรัพย์ใกล้หมอ\r\n \r\n \r\n ทรัพย์พร้อมอยู่\r\n \r\n \r\n ทรัพย์ราคาพิเศษ\r\n \r\n
    */}\r\n \r\n );\r\n});\r\n\r\nexport const DetailWrapper = React.memo((propertyDetail) => {\r\n return (\r\n <>\r\n
    \r\n {propertyDetail.ShowAreaValue && (\r\n
    \r\n

    เนื้อที่

    \r\n \r\n
    \r\n

    เนื้อที่

    \r\n

    {propertyDetail.ShowAreaValue}

    \r\n
    \r\n
    \r\n )}\r\n {propertyDetail.ShowUseableArea && (\r\n
    \r\n

    พื้นที่ใช้สอย

    \r\n \r\n
    \r\n

    พื้นที่ใช้สอย

    \r\n

    {propertyDetail.ShowUseableArea}

    \r\n
    \r\n
    \r\n )}\r\n {propertyDetail.Bedroom && (\r\n
    \r\n

    ห้องนอน

    \r\n \r\n
    \r\n

    ห้องนอน

    \r\n

    {propertyDetail.Bedroom} ห้อง

    \r\n
    \r\n
    \r\n )}\r\n {propertyDetail.Bathroom && (\r\n
    \r\n

    ห้องน้ำ

    \r\n \r\n
    \r\n

    ห้องน้ำ

    \r\n

    {propertyDetail.Bathroom} ห้อง

    \r\n
    \r\n
    \r\n )}\r\n {propertyDetail.CarParking && (\r\n
    \r\n

    ที่จอดรถ

    \r\n \r\n
    \r\n

    ที่จอดรถ

    \r\n

    {propertyDetail.CarParking} คัน

    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n});\r\n\r\nexport const TableDetail = React.memo((propertyDetail) => {\r\n // console.log(\"render TableDetail\");\r\n\r\n var area = showAreaValue(propertyDetail) ? getArea(propertyDetail) : \"\";\r\n\r\n area = area ? area.value + \" \" + area.unit : \"\";\r\n\r\n return (\r\n <>\r\n
    \r\n

    รายละเอียดทรัพย์สิน

    \r\n \r\n \r\n {propertyDetail.PropertyTypeName && (\r\n \r\n \r\n \r\n \r\n )}\r\n {propertyDetail.AssetInfoTH && (\r\n \r\n \r\n \r\n \r\n )}\r\n {area && (\r\n \r\n \r\n \r\n \r\n )}\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n
    ประเภททรัพย์{getPropertyType(propertyDetail)}
    รายละเอียดทรัพย์{propertyDetail.AssetInfoTH}
    ขนาดพื้นที่{area}
    ทรัพย์ใกล้รถไฟฟ้าสายสีชมพู, ฟ้า
    พร้อมอยู่รีโนเวทวันที่ 19 กพ 64
    \r\n
    \r\n \r\n );\r\n});\r\n\r\nexport const ShareConent = () => {\r\n return (\r\n <>\r\n \r\n
    \r\n

    แชร์

    \r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n
    \r\n

    แชร์

    \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport const ModalDetail = (props) => {\r\n const propertyDetail = props.propertyDetail;\r\n const title = props.title ?? \"รายละเอียดทรัพย์\";\r\n const makeAnOfferClick = props.makeAnOfferClick;\r\n const isDecoration = props.isDecoration;\r\n\r\n var {\r\n propertyDetailURL,\r\n thumbnailURL,\r\n location,\r\n propertyName,\r\n tag,\r\n PromotionPrice,\r\n Price,\r\n areaHtml,\r\n bedRoomHtml,\r\n propertyTypeHtml,\r\n PropertyIDFormat,\r\n IsPartner,\r\n } = prepareDataForProopertyBox(propertyDetail);\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {title}

    \r\n \r\n
    \r\n
    \r\n
    \r\n {/* 1\r\n /\r\n {slideImages.length} */}\r\n
    \r\n
    \r\n \r\n แชร์\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n

    {location}

    \r\n
    \r\n
    \r\n

    {propertyTypeHtml}

    \r\n

    รหัส {propertyDetail.PropertyIDFormat}

    \r\n
    \r\n
    \r\n
    {bedRoomHtml}
    \r\n
    {areaHtml}
    \r\n
    \r\n
    \r\n {tag}\r\n
    \r\n {PromotionPrice}\r\n {Price}\r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n \r\n ติดต่อเจ้าหน้าที่/นัดหมายชมทรัพย์จริง\r\n \r\n \r\n ติดต่อเจ้าหน้าที่/นัดหมายเข้าชมทรัพย์\r\n \r\n \r\n เสนอราคาซื้อ\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n addCommas,\r\n getUTM,\r\n showBedAndBath,\r\n getArea,\r\n getPropertyType,\r\n getCookie,\r\n setCookie,\r\n setLikeProperty,\r\n} from \"../common/Common\";\r\nimport Config from \"config\";\r\nimport classnames from \"classnames/bind\";\r\nimport { CompareButton } from \"../Compare/Common\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst mediaURLPrefix = Config.mediaURLPrefix;\r\nconst defaultThumbnailURL = Config.defaultThumbnailURL;\r\n\r\nconst PropertyImgComp = ({ imgUrl, altName = \"pfs-image\" }) => {\r\n return (\r\n <>\r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n }}\r\n alt={altName}\r\n loading=\"lazy\"\r\n />\r\n \r\n );\r\n};\r\n\r\nconst ImgHoverComponent = () => {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n ดูเพิ่มเติม\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst PropertyBox = (property) => {\r\n const [isLike, setIslike] = useState(false);\r\n const [showLike, setShowLike] = useState(true);\r\n\r\n useEffect(() => {\r\n // if (getCookie(\"Allow_Cookies\") === \"N\") {\r\n // setShowLike(false);\r\n // return;\r\n // }\r\n var favProp = getCookie(\"favoriteProperty\");\r\n if (favProp && favProp.split(\",\").includes(property.PropertyID)) {\r\n setIslike(true);\r\n }\r\n }, []);\r\n\r\n function OnLikeCheck(e) {\r\n // e.stopPropagation();\r\n e.preventDefault();\r\n // if (getCookie(\"Allow_Cookies\") === \"N\") {\r\n // setShowLike(false);\r\n // return;\r\n // }\r\n setLikeProperty(property.PropertyID, !isLike);\r\n setIslike(!isLike);\r\n // var favProp = getCookie(\"favoriteProperty\");\r\n // if (isLike) {\r\n // if (favProp) {\r\n // setCookie(\r\n // \"favoriteProperty\",\r\n // favProp\r\n // .split(\",\")\r\n // .filter((e) => e != property.PropertyID)\r\n // .join(\",\"),\r\n // 30\r\n // );\r\n // }\r\n // setIslike(false);\r\n // } else if (!isLike) {\r\n // if (!favProp.split(\",\").includes(property.PropertyID)) {\r\n // setCookie(\r\n // \"favoriteProperty\",\r\n // favProp\r\n // .split(\",\")\r\n // .concat(property.PropertyID)\r\n // .filter((x) => x)\r\n // .join(\",\"),\r\n // 30\r\n // );\r\n // }\r\n // setIslike(true);\r\n // }\r\n }\r\n\r\n function goToUrl(url) {\r\n window.location = url;\r\n }\r\n\r\n var {\r\n propertyDetailURL,\r\n thumbnailURL,\r\n location,\r\n propertyName,\r\n tag,\r\n PromotionPrice,\r\n Price,\r\n areaHtml,\r\n bedRoomHtml,\r\n propertyTypeHtml,\r\n PropertyIDFormat,\r\n IsPartner,\r\n imgPCList,\r\n } = prepareDataForProopertyBox(property);\r\n\r\n // console.log(\"imgPCList\", imgPCList);\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n goToUrl(propertyDetailURL)}\r\n href={propertyDetailURL}\r\n >\r\n {IsPartner && (\r\n
    \r\n \"Logo\r\n
    \r\n )}\r\n {/*
    \r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n }}\r\n alt={propertyName}\r\n loading=\"lazy\"\r\n />\r\n
    \r\n \r\n
    \r\n
    */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {imgPCList.length == 0 && }\r\n {\r\n \r\n }\r\n
    \r\n
    \r\n {/* 2024 add multi img */}\r\n {imgPCList.length > 0 &&\r\n imgPCList.map((pcUrl, index) => {\r\n return (\r\n
    \r\n {index == imgPCList.length - 1 && }\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n })}\r\n
    \r\n {imgPCList.length > 0 && (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {IsPartner && (\r\n
    \r\n \r\n ทรัพย์ผู้ขาย\r\n
    \r\n )}\r\n {property.PropertyID?.slice(2, 4) === \"66\" && (\r\n
    \r\n \r\n  \r\n ทรัพย์ฝากขาย\r\n
    \r\n )}\r\n {property.IsNew && (\r\n
    \r\n  \r\n NEW\r\n
    \r\n )}\r\n {property.IsHot && (\r\n
    \r\n  \r\n HOT\r\n
    \r\n )}\r\n {property.PromotionName && (\r\n
    \r\n  \r\n Promotion\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n

    {propertyName}

    \r\n
    \r\n
    \r\n
    \r\n {showLike && (\r\n OnLikeCheck(e)}\r\n >\r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n

    {location}

    \r\n
    \r\n
    \r\n

    {propertyTypeHtml}

    \r\n

    รหัส {PropertyIDFormat}

    \r\n
    \r\n
    \r\n
    {bedRoomHtml}
    \r\n
    {areaHtml}
    \r\n
    \r\n
    \r\n {tag}\r\n
    \r\n {PromotionPrice}\r\n {Price}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport const PropertyList = (props) => {\r\n if (!props.list) {\r\n return <>;\r\n }\r\n return (\r\n <>\r\n
    \r\n {props.list.map((property, i) => (\r\n \r\n ))}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport function prepareDataForProopertyBox(\r\n property,\r\n { isBedPTag = false, atBath = true } = {}\r\n) {\r\n // Link & img\r\n var propertyDetailURL =\r\n pagesLink.detail.replace(\"{{PropID}}\", property.PropertyID) + // + '&source=' + encodeURIComponent(window.location.href)\r\n \"?\" +\r\n getUTM();\r\n\r\n var thumbnail = property.PropertyMediaes?.filter(function (media) {\r\n return media.MediaType === \"IMAGE-THUMBNAIL\";\r\n })[0];\r\n\r\n var thumbnailURL;\r\n\r\n if (thumbnail !== undefined) {\r\n thumbnailURL = mediaURLPrefix + thumbnail.MediaPath;\r\n } else {\r\n thumbnailURL = defaultThumbnailURL;\r\n }\r\n\r\n var imgPCList = property.PropertyMediaes?.filter(function (media) {\r\n return media.MediaType === \"IMAGE-PC\";\r\n }).map((item) => {\r\n return mediaURLPrefix + item.MediaPath;\r\n });\r\n\r\n // Location\r\n var isInBangkok =\r\n property.ProvinceName && property.ProvinceName.indexOf(\"กรุงเทพ\") !== -1;\r\n var location = \"\";\r\n\r\n if (property.AmphurName) {\r\n if (isInBangkok) {\r\n location +=\r\n property.AmphurName.indexOf(\"เขต\") !== -1\r\n ? property.AmphurName\r\n : \"เขต\" + property.AmphurName;\r\n } else {\r\n location += property.AmphurName;\r\n }\r\n location += \" \";\r\n }\r\n\r\n if (property.ProvinceName) {\r\n location += property.ProvinceName;\r\n }\r\n\r\n // Property Name\r\n var propertyName;\r\n var title;\r\n\r\n if (property.VillageTH && property.VillageTH !== \"-\") {\r\n propertyName = property.VillageTH;\r\n if (propertyName.length > 46) {\r\n propertyName = propertyName.slice(0, 50) + \"...\";\r\n }\r\n title = \"ดูเพิ่มเติม \" + propertyName;\r\n } else {\r\n propertyName = `${getPropertyType(property)} ${property.ProvinceName}`;\r\n title = \"ดูเพิ่มเติม\";\r\n }\r\n\r\n // Price\r\n let tag = \"\";\r\n let PromotionPrice = \"\";\r\n let Price = \"\";\r\n if (property.PromotionPrice) {\r\n tag = (\r\n
    \r\n

    ราคาพิเศษ

    \r\n
    \r\n );\r\n PromotionPrice = (\r\n

    \r\n {addSpan(property.PromotionPrice, atBath)}\r\n

    \r\n );\r\n Price =

    {addCommas(property.SellPrice, 0)} บาท

    ;\r\n } else if (property.AdjustPrice) {\r\n tag = (\r\n
    \r\n

    ราคาลดลงกว่าเดิม

    \r\n
    \r\n );\r\n PromotionPrice = (\r\n

    \r\n {addSpan(property.AdjustPrice, atBath)}\r\n

    \r\n );\r\n Price =

    {addCommas(property.SellPrice, 0)} บาท

    ;\r\n } else {\r\n PromotionPrice = (\r\n

    \r\n {addSpan(property.SellPrice, atBath)}\r\n

    \r\n );\r\n Price = (\r\n

    \r\n -\r\n

    \r\n );\r\n\r\n tag = (\r\n
    \r\n

    -

    \r\n
    \r\n );\r\n }\r\n\r\n //area\r\n var areaHtml;\r\n var area = getArea(property);\r\n\r\n if (area !== null) {\r\n areaHtml = (\r\n

    \r\n {area.value}{\" \"}\r\n {area.unit}\r\n

    \r\n );\r\n } else {\r\n areaHtml = (\r\n

    \r\n  \r\n

    \r\n );\r\n }\r\n\r\n //bed & bath\r\n var bedRoomHtml;\r\n if (showBedAndBath(property)) {\r\n var bed;\r\n var bath;\r\n if (property.Bedroom && property.Bedroom > 0) {\r\n if (isBedPTag) {\r\n bed = (\r\n

    \r\n \r\n {property.Bedroom}\r\n

    \r\n );\r\n } else {\r\n bed = (\r\n \r\n \r\n {property.Bedroom}\r\n \r\n );\r\n }\r\n }\r\n if (property.Bathroom && property.Bathroom > 0) {\r\n if (isBedPTag) {\r\n bath = (\r\n

    \r\n \r\n {property.Bathroom}\r\n

    \r\n );\r\n } else {\r\n bath = (\r\n \r\n \r\n {property.Bathroom}\r\n \r\n );\r\n }\r\n }\r\n if (bed && bath) {\r\n bedRoomHtml = [bed, , bath];\r\n } else if (bed || bath) {\r\n bedRoomHtml = [bed, bath];\r\n } else {\r\n bedRoomHtml =

     

    ;\r\n }\r\n }\r\n\r\n //assetType\r\n var propertyTypeHtml;\r\n if (property.PropertyTypeName) {\r\n propertyTypeHtml = getPropertyType(property);\r\n } else {\r\n propertyTypeHtml = \" \";\r\n }\r\n\r\n var PropertyIDFormat = property.PropertyID\r\n ? `${property.PropertyID?.slice(0, 2)}-${property.PropertyID?.slice(\r\n 2,\r\n 4\r\n )}-${property.PropertyID?.slice(4)}`\r\n : \"\";\r\n\r\n var Logo =\r\n \"/SiteCollectionDocuments/assets/PFS2022/theme/img/logo/\" +\r\n property.SourceImageLogo;\r\n var IsPartner = checkIsPartner(property) ? Logo : false;\r\n\r\n return {\r\n propertyDetailURL,\r\n thumbnailURL,\r\n location,\r\n propertyName,\r\n tag,\r\n PromotionPrice,\r\n Price,\r\n areaHtml,\r\n bedRoomHtml,\r\n propertyTypeHtml,\r\n PropertyIDFormat,\r\n IsPartner,\r\n imgPCList,\r\n };\r\n}\r\n\r\nfunction addSpan(value, atBath = true) {\r\n if (atBath) {\r\n return (\r\n <>\r\n {addCommas(value, 0)} บาท\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {\" \"}\r\n {addCommas(value, 0)} บาท\r\n \r\n );\r\n }\r\n}\r\n\r\nexport function checkIsPartner(data) {\r\n return data.SourceSaleType == \"Partner\";\r\n var propertyCode = data.PropertyID.slice(2, 4);\r\n switch (propertyCode) {\r\n case \"10\":\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n","const $ = window.$;\r\nconst numberOnlyRegEx = /^[0-9]*$/;\r\nfunction checkID(id) {\r\n if (id.length !== 13) return false;\r\n let sum = 0;\r\n for (let i = 0; i < 12; i++) {\r\n sum += parseFloat(id.charAt(i)) * (13 - i);\r\n }\r\n if ((11 - sum % 11) % 10 !== parseFloat(id.charAt(12)))\r\n return false;\r\n return true;\r\n}\r\n\r\nfunction IsValidMobilePhone(phonenumber) {\r\n return /0[13456789]{1}[0-9]{8}$/.test(phonenumber)// && /^0[869]/.test(phonenumber);\r\n}\r\n\r\nfunction IsNumberOnly(str) {\r\n return /[0123456789]$/.test(str)\r\n}\r\n\r\nfunction IsPostCode(str) {\r\n let valid = true\r\n valid = valid && !(/(\\d)\\1\\1\\1\\1/.test(str))\r\n valid = valid && IsNumberOnly(str)\r\n return valid\r\n}\r\n\r\nexport function validatePlaceName(str) {\r\n let valid = true\r\n valid = valid && (str.length !== 1 && str[0] !== ' ' && str.indexOf('|') === -1)\r\n valid = valid && !(/[^0-9A-Za-z\\~!@#$%&*()_+=\\u002D\\u0027\\\\\\][{}\\:;\\/?.><, \\u0E01-\\u0E3A\\u0E40-\\u0E4D\\^]/.test(str))\r\n return valid\r\n}\r\n\r\nexport function toThousandSeparated(num) {\r\n if (num === '') {\r\n return '';\r\n }\r\n\r\n num = '' + num;\r\n\r\n var isNegative = num.indexOf('-') === 0;\r\n var output = isNegative ? num.slice(1) : num;\r\n var count = 0;\r\n var i = output.length - 1;\r\n\r\n while (i > 0) {\r\n count++;\r\n\r\n if (count >= 3) {\r\n output = output.slice(0, i) + ',' + output.slice(i);\r\n count = 0;\r\n }\r\n\r\n i--;\r\n }\r\n\r\n return (isNegative ? '-' : '') + output;\r\n}\r\n\r\nexport function getAmount(value) {\r\n return value.trim().replace(RegExp(',', 'g'), '');\r\n}\r\n\r\nfunction isInteger(val) {\r\n return /^[0-9]*$/.test(val);\r\n}\r\n\r\nexport function VaridateCalcDataField(formData, field, value) {\r\n if (typeof (value) == 'boolean') {\r\n value = value.toString();\r\n }\r\n\r\n const formDataField = formData[field];\r\n\r\n switch (field) {\r\n case 'stayInstallmentYear':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกระยะเวลาผ่อนชำระ';\r\n }\r\n\r\n return '';\r\n case 'stayPropertyLimitAmount':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกวงเงินทรัพย์';\r\n }\r\n\r\n return '';\r\n case 'stayDecorationLimitAmount':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกวงเงินตกแต่ง';\r\n }\r\n\r\n return '';\r\n case 'stayIncomePerMonth':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกรายได้ต่อเดือน';\r\n } else if (+value < formDataField.minValue) {\r\n return 'ผู้กู้ต้องมีรายได้ขั้นต่ำ ' + toThousandSeparated('' + formDataField.minValue) + ' บาท';\r\n }\r\n\r\n return '';\r\n case 'stayDebtBurdenPerMonth':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกภาระหนี้';\r\n }\r\n\r\n return '';\r\n case 'businessInstallmentYear':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกระยะเวลาผ่อนชำระ';\r\n }\r\n\r\n return '';\r\n case 'businessPropertyLimitAmount':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกวงเงินทรัพย์';\r\n }\r\n\r\n return '';\r\n case 'businessDecorationLimitAmount':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกวงเงินตกแต่ง';\r\n }\r\n\r\n return '';\r\n case 'businessIncomePerMonth':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกกำไรสุทธิต่อเดือน';\r\n }\r\n\r\n return '';\r\n case 'businessDebtBurdenPerMonth':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกภาระหนี้';\r\n }\r\n\r\n return '';\r\n\r\n // case 'price':\r\n // value = getAmount(value);\r\n\r\n // if (value === '') {\r\n // return 'กรุณากรอกราคาทรัพย์/ราคาเสนอซื้อ';\r\n // } else if (!isInteger(value)) {\r\n // return 'กรุณาระบุเป็นจำนวนเต็ม';\r\n // } else if (definedPropertyPrice !== null && +value > definedPropertyPrice) {\r\n // return 'กรุณาระบุราคาไม่เกิน ' + toThousandSeparated('' + definedPropertyPrice) + ' บาท';\r\n // }\r\n // return '';\r\n \r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function VaridateDropleadDataField(formData, field, value) {\r\n if (typeof (value) == 'boolean') {\r\n value = value.toString()\r\n }\r\n\r\n const formDataField = formData[field];\r\n if (formDataField.required) {\r\n switch (field) {\r\n case 'juJuristicId':\r\n if (value === '') {\r\n return 'กรุณากรอกเลขนิติบุคคล';\r\n } else if (!/^[0-9]{13}$/g.test(value)) {\r\n return 'กรอกข้อมูลเลขนิติบุคคลให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'juFirstName':\r\n if (value === '') {\r\n return 'กรุณากรอกชื่อ';\r\n } else if (!isThaiEngNonNumber(value)) {\r\n return 'กรอกข้อมูลชื่อให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'juLastName':\r\n if (value === '') {\r\n return 'กรุณากรอกนามสกุล';\r\n } else if (!isThaiEngNonNumber(value)) {\r\n return 'กรอกข้อมูลนามสกุลให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'phone':\r\n if (value === '') {\r\n return 'กรุณากรอกเบอร์มือถือ';\r\n } else if (!IsValidMobilePhone(value) || !/^0[869]/.test(value)) {\r\n return 'กรอกข้อมูลเบอร์มือถือให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'confirmphone':\r\n var mobileNo = formData[\"phone\"].value.trim();\r\n\r\n if (value === '') {\r\n return 'กรุณาระบุเบอร์มือถือให้ตรงกัน';\r\n } else if (value !== mobileNo) {\r\n return 'กรุณาระบุเบอร์มือถือให้ตรงกัน';\r\n }\r\n\r\n return '';\r\n case 'email':\r\n if (value === '') {\r\n return 'กรุณากรอกอีเมล';\r\n } else if (!IsValidEmail(value)) {\r\n return 'กรอกข้อมูลอีเมลให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'naCitizenId':\r\n if (value === '') {\r\n return 'กรุณากรอกเลขบัตรประชาชน';\r\n } else if (!checkID(value)) {\r\n return 'กรอกข้อมูลเลขบัตรประชาชนให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'consentCheck':\r\n case 'juCompanyName':\r\n if (value === '') {\r\n return 'กรุณากรอกชื่อบริษัท';\r\n } else if (!isCompanyNameFormat(value)) {\r\n return 'กรอกข้อมูลชื่อบริษัทให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'naFirstName':\r\n if (value === '') {\r\n return 'กรุณากรอกชื่อ';\r\n } else if (!isThaiEngNonNumber(value)) {\r\n return 'กรอกข้อมูลชื่อให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'naLastName':\r\n if (value === '') {\r\n return 'กรุณากรอกนามสกุล';\r\n } else if (!isThaiEngNonNumber(value)) {\r\n return 'กรอกข้อมูลนามสกุลให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'naCareer':\r\n if (value === '') {\r\n return 'กรุณากรอกอาชีพ';\r\n }\r\n\r\n return '';\r\n case 'naSalary':\r\n value = getAmount(value);\r\n\r\n if (value === '') {\r\n return 'กรุณากรอกรายได้ต่อเดือน';\r\n } else if (!IsNumberOnly(value)\r\n || !/^[1-9]/.test(value)\r\n || getAmountDigit(value) > 7) {\r\n return 'กรอกข้อมูลรายได้ต่อเดือนให้ถูกต้อง';\r\n }\r\n\r\n return '';\r\n case 'availableTime':\r\n if (value === '') {\r\n return 'กรุณากรอกช่วงเวลาที่สะดวกให้ติดต่อกลับ';\r\n }\r\n\r\n return '';\r\n default:\r\n return '';\r\n }\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n\r\nfunction IsValidEmail(email) {\r\n // the regex works in IE but should be a string (see nnnnn's answer) \r\n // var em= new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/i);\r\n var em = /^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/i; // simpler\r\n return em.test(email);\r\n}\r\n\r\nvar thaiEngNonNumberRegEx = /^[A-Za-z\\u0E00-\\u0E5F_-]*$/;\r\n\r\nfunction isThaiEngNonNumber(str) {\r\n return thaiEngNonNumberRegEx.test(str);\r\n}\r\n\r\nvar companyNameRegEx = /^[A-Za-z0-9\\u0E00-\\u0E5F\\s.,()-]*$/;\r\nfunction isCompanyNameFormat(str) {\r\n return companyNameRegEx.test(str);\r\n}\r\n\r\nfunction getAmountDigit(num) {\r\n var count = 0;\r\n\r\n num.split(\"\").filter(function (ch) {\r\n if (numberOnlyRegEx.test(ch)) {\r\n count++;\r\n }\r\n });\r\n\r\n return count;\r\n}\r\n\r\nexport function GoToError() {\r\n if ($('.text-error:first').length !== 0) {\r\n // if(isElementOutViewport($('.text-error:first').parent()[0])){\r\n // $('html, body').animate({\r\n // scrollTop: $('.text-error:first').parent().offset().top\r\n // }, 500);\r\n // }\r\n // $('html, body').animate({\r\n // scrollTop: $('.text-error:first').parent().offset().top\r\n // }, 500);\r\n $('html, body').scrollTop($('.text-error:first').parent().offset().top - 20);\r\n $('.text-error:first').parent().find('input').shake()\r\n console.log(\"done goto error\")\r\n } else {\r\n console.log(\"not found goto error\")\r\n }\r\n}\r\n\r\n// function isElementOutViewport(el){\r\n// var rect = el.getBoundingClientRect();\r\n// return rect.bottom < 0 || rect.right < 0 || rect.left > window.innerWidth || rect.top > window.innerHeight;\r\n// }","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux'\r\nimport { formsCalcPropsChange, formsCalcDataChange, CalcValidateChange } from '../stores/propertySlice'\r\nimport { toThousandSeparated, VaridateCalcDataField, getAmount } from './ValidateHelper'\r\nimport * as formulajs from '@formulajs/formulajs'\r\n\r\nexport function CalculatorsV2(props) {\r\n const dispatch = useDispatch();\r\n\r\n const [isEditMode, setIsEditMode] = useState(false);\r\n \r\n useEffect(() => {\r\n console.log('#### useEffect CalculatorsV2');\r\n\r\n if(props.calculatorHomeLoanSetting.value === 0\r\n || props.calculatorLandSetting.value === 0\r\n || props.calculatorSMESetting.value === 0\r\n ){\r\n return;\r\n }\r\n\r\n var calHomeLoanSetting = props.calculatorHomeLoanSetting.value;\r\n var calLandSetting = props.calculatorLandSetting.value;\r\n var calSMESetting = props.calculatorSMESetting.value;\r\n\r\n var stayTotalInstallmentPerMonth;\r\n var stayTotalLimitAmount;\r\n var stayInstallmentYear;\r\n var stayPropertyLimitAmount;\r\n var stayPropertyInstallmentPerMonth;\r\n var stayDecorationLimitAmount;\r\n var stayDecorationInstallmentPerMonth;\r\n var stayIncomePerMonth;\r\n var stayDebtBurdenPerMonth;\r\n var stayCanTakeDecoration;\r\n\r\n if (props.appliedCalcTypes.value.forStay === props.calcTypes.Home) {\r\n var defaultLoanYear = +calHomeLoanSetting.DefaultLoanYear;\r\n\r\n var result = calHomeLoan({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calHomeLoanSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: props.definedPropertyPrice.value,\r\n B6_career: calHomeLoanSetting.B6Career,\r\n B7_age: +calHomeLoanSetting.B7Age,\r\n B9_propertyLoanYear: defaultLoanYear,\r\n B10_salary: '',\r\n B11_deptBurdenPerMonth: '',\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n B20_decorationLoanAmount: null,\r\n B21_decorationLoanYear: defaultLoanYear,\r\n calHomeLoanSetting: calHomeLoanSetting,\r\n });\r\n\r\n console.log('cal home loan result:', result);\r\n\r\n stayCanTakeDecoration = props.definedPropertyPrice.value <= 10000000; //true;\r\n\r\n stayTotalInstallmentPerMonth = forceNumber(result.B29_HLInstallmentPerMonth) + (stayCanTakeDecoration ? forceNumber(result.B34_HDInstallmentPerMonth) : 0);\r\n stayTotalLimitAmount = forceNumber(result.B28_HLLimit) + (stayCanTakeDecoration ? forceNumber(result.B33_HDLimit) : 0);\r\n stayPropertyLimitAmount = forceNumber(result.B28_HLLimit);\r\n stayDecorationLimitAmount = forceNumber(+result.B33_HDLimit);\r\n\r\n stayInstallmentYear = forceNumber(result.B8_maxLoanYear);\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B29_HLInstallmentPerMonth);\r\n stayDecorationInstallmentPerMonth = forceNumber(+result.B34_HDInstallmentPerMonth);\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\", \r\n value: toThousandSeparated('' + stayInstallmentYear.toFixed(0)), \r\n maxValue: result.B8_maxLoanYear,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n maxValue: +stayPropertyLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationLimitAmount\", \r\n value: toThousandSeparated('' + stayDecorationLimitAmount.toFixed(0)), \r\n maxValue: +stayDecorationLimitAmount.toFixed(0),\r\n //visible: stayCanTakeDecoration,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayIncomePerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDebtBurdenPerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayCanTakeDecoration\", \r\n value: stayCanTakeDecoration,\r\n }));\r\n } else if (props.appliedCalcTypes.value.forStay === props.calcTypes.Land) {\r\n var defaultLoanYear = +calLandSetting.DefaultLoanYear;\r\n\r\n var result = calLand({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calLandSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: props.definedPropertyPrice.value,\r\n B6_career: calLandSetting.B6Career,\r\n B7_age: +calLandSetting.B7Age,\r\n B9_propertyLoanYear: defaultLoanYear,\r\n B10_salary: '',\r\n B11_deptBurdenPerMonth: '',\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n calLandSetting: calLandSetting,\r\n });\r\n\r\n console.log('cal land result:', result);\r\n\r\n stayTotalInstallmentPerMonth = forceNumber(result.B19_HLInstallmentPerMonth);\r\n stayTotalLimitAmount = forceNumber(result.B18_HLLimit);\r\n stayPropertyLimitAmount = forceNumber(result.B18_HLLimit);\r\n\r\n stayInstallmentYear = forceNumber(result.B8_maxLoanYear);\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B19_HLInstallmentPerMonth);\r\n stayCanTakeDecoration = false;\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\", \r\n value: toThousandSeparated('' + stayInstallmentYear.toFixed(0)), \r\n maxValue: result.B8_maxLoanYear,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n maxValue: +stayPropertyLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayIncomePerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDebtBurdenPerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayCanTakeDecoration\", \r\n value: stayCanTakeDecoration,\r\n }));\r\n }\r\n\r\n var decoration = props.propertyTypeID.value !== '01';\r\n var smePropertyType = ([\"02\", \"03\", \"04\", \"05\"].indexOf(props.propertyTypeID.value) !== -1) ? props.propertyTypeID.value : 'other';\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"smePropertyType\", \r\n value: smePropertyType,\r\n }));\r\n\r\n var smeDefaultLoanYear = +((smePropertyType === \"other\") ? calSMESetting.DefaultOtherLoanYear : calSMESetting.DefaultBuildingLoanYear);\r\n\r\n var resultSME = calSME({\r\n D10_propertyPrice: props.definedPropertyPrice.value,\r\n D12_propertyLoanAmount: props.definedPropertyPrice.value,\r\n D18_propertyType: smePropertyType,\r\n D20_appraisalPrice: props.appraisalPrice.value,\r\n D28_propertyLoanYear: smeDefaultLoanYear,\r\n D30_profitPerMonth: '',\r\n D32_deptBurdenPerMonth: '',\r\n D37_decorationLoanAmount: decoration ? null : 0,\r\n calSMESetting: calSMESetting,\r\n });\r\n\r\n console.log('cal SME result:', resultSME);\r\n\r\n var businessTotalInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth) + forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n var businessTotalLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount) + forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n var businessInstallmentYear = forcePositiveNumber(resultSME.D56_loanableYear);\r\n var businessPropertyLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount);\r\n var businessPropertyInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth);\r\n var businessDecorationLimitAmount = forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n var businessDecorationInstallmentPerMonth = forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalLimitAmount\", \r\n value: toThousandSeparated('' + businessTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessInstallmentYear\", \r\n value: toThousandSeparated('' + businessInstallmentYear.toFixed(0)), \r\n maxValue: resultSME.I30_maxLoanYear, //+businessInstallmentYear.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyLimitAmount\", \r\n value: toThousandSeparated('' + businessPropertyLimitAmount.toFixed(0)),\r\n maxValue: +businessPropertyLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationLimitAmount\", \r\n value: toThousandSeparated('' + businessDecorationLimitAmount.toFixed(0)), \r\n maxValue: +businessDecorationLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessIncomePerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDebtBurdenPerMonth\", \r\n value: '0',\r\n }));\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"decoration\", \r\n value: decoration,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayValidateFields\", \r\n value: getValidateField('stay', decoration && stayCanTakeDecoration),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessValidateFields\", \r\n value: getValidateField('business', decoration),\r\n }));\r\n // dispatch(formsCalcDataChange({ \r\n // field: \"stayCanTakeDecoration\", \r\n // value: stayCanTakeDecoration,\r\n // }));\r\n }, [props.appliedCalcTypes.value]);\r\n\r\n function forcePositiveNumber(num, defaultValue) {\r\n var result = forceNumber(num, defaultValue);\r\n\r\n if(result < 0){\r\n return 0;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function forceNumber(num, defaultValue) {\r\n if (defaultValue === undefined) {\r\n defaultValue = 0;\r\n }\r\n\r\n if (typeof num !== 'number') {\r\n return defaultValue;\r\n }\r\n\r\n if (isNaN(num)) {\r\n return defaultValue;\r\n }\r\n\r\n return num;\r\n }\r\n\r\n function formsDataChange(tab, field, e) {\r\n console.log('change ' + field + ' = ' + e.target.value);\r\n\r\n let value = e.target.value;\r\n let numValue = parseFloat(value.replace(/,/g, ''));\r\n //const limit = 1000000000;\r\n //numValue = numValue > limit ? limit : numValue;\r\n\r\n // let maxValue = props[field].maxValue;\r\n\r\n // if (maxValue !== undefined) {\r\n // numValue = numValue > maxValue ? maxValue : numValue;\r\n // }\r\n\r\n if (numValue || numValue === 0) {\r\n //value = numValue.toLocaleString();\r\n\r\n let numStr = '' + numValue;\r\n\r\n if (props[field].maxDigit) {\r\n numStr = numStr.slice(0, props[field].maxDigit);\r\n }\r\n \r\n value = toThousandSeparated('' + numStr);\r\n } else {\r\n value = '';\r\n }\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: field, \r\n value: value,\r\n //errorMessage: VaridateCalcDataField(props, field, value),\r\n }));\r\n\r\n //recalculate(tab, field, value);\r\n }\r\n\r\n function formsBlur(tab, field, e) {\r\n console.log('blur ' + field);\r\n\r\n e.preventDefault();\r\n\r\n dispatch(CalcValidateChange({ \r\n field: field,\r\n errorMessage: VaridateCalcDataField(props, field, e.target.value),\r\n }));\r\n\r\n recalculate(tab, field, e.target.value);\r\n }\r\n\r\n function recalculate(tab, field, newValue) {\r\n var calFormData = {\r\n stayInstallmentYear: props.stayInstallmentYear.value,\r\n stayPropertyLimitAmount: props.stayPropertyLimitAmount.value,\r\n stayDecorationLimitAmount: props.stayDecorationLimitAmount.value,\r\n stayIncomePerMonth: props.stayIncomePerMonth.value,\r\n stayDebtBurdenPerMonth: props.stayDebtBurdenPerMonth.value,\r\n\r\n businessInstallmentYear: props.businessInstallmentYear.value,\r\n businessPropertyLimitAmount: props.businessPropertyLimitAmount.value,\r\n businessDecorationLimitAmount: props.businessDecorationLimitAmount.value,\r\n businessIncomePerMonth: props.businessIncomePerMonth.value,\r\n businessDebtBurdenPerMonth: props.businessDebtBurdenPerMonth.value,\r\n };\r\n\r\n calFormData[field] = newValue;\r\n\r\n var calHomeLoanSetting = props.calculatorHomeLoanSetting.value;\r\n var calLandSetting = props.calculatorLandSetting.value;\r\n var calSMESetting = props.calculatorSMESetting.value;\r\n \r\n if (tab === 'stay') {\r\n var stayInstallmentYear = Math.min(+getAmount(calFormData.stayInstallmentYear), props.stayInstallmentYear.maxValue);\r\n \r\n if (field === 'stayInstallmentYear') {\r\n if (calFormData.stayInstallmentYear !== '' && +getAmount(calFormData.stayInstallmentYear) > props.stayInstallmentYear.maxValue) {\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\", \r\n value: toThousandSeparated('' + stayInstallmentYear.toFixed(0)),\r\n note: 'ระยะเวลาผ่อนชำระสูงสุด ' + props.stayInstallmentYear.maxValue + ' ปี',\r\n }));\r\n } else {\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\",\r\n note: \"\",\r\n }));\r\n }\r\n }\r\n\r\n if(!validateCalcForm(tab, calFormData)){\r\n console.log('validate calc form failed!');\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n\r\n return;\r\n }\r\n\r\n var stayTotalInstallmentPerMonth;\r\n var stayTotalLimitAmount;\r\n var stayPropertyLimitAmount;\r\n var stayDecorationLimitAmount = 0;\r\n //var canTakeOnDecorationLoan;\r\n var stayCanTakeDecoration;\r\n var stayPropertyInstallmentPerMonth;\r\n var stayDecorationInstallmentPerMonth;\r\n\r\n if (props.appliedCalcTypes.value.forStay === props.calcTypes.Home) {\r\n //cal home loan\r\n var result = calHomeLoan({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calHomeLoanSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: +getAmount(calFormData.stayPropertyLimitAmount),\r\n B6_career: calHomeLoanSetting.B6Career,\r\n B7_age: +calHomeLoanSetting.B7Age,\r\n B9_propertyLoanYear: stayInstallmentYear,\r\n B10_salary: +getAmount(calFormData.stayIncomePerMonth),\r\n B11_deptBurdenPerMonth: +getAmount(calFormData.stayDebtBurdenPerMonth),\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n B20_decorationLoanAmount: +getAmount(calFormData.stayDecorationLimitAmount),\r\n B21_decorationLoanYear: stayInstallmentYear,\r\n calHomeLoanSetting: calHomeLoanSetting,\r\n });\r\n \r\n console.log('cal home loan result:', result);\r\n\r\n if(checkCalError(result, \"LackOfPayDeptAbility\")) {\r\n console.log('cal home loan: LackOfPayDeptAbility');\r\n\r\n stayTotalInstallmentPerMonth = 0;\r\n stayTotalLimitAmount = 0;\r\n stayPropertyLimitAmount = 0;\r\n stayDecorationLimitAmount = 0;\r\n stayPropertyInstallmentPerMonth = 0;\r\n stayDecorationInstallmentPerMonth = 0;\r\n\r\n showCalErrorPopup('ไม่ผ่านความสามารถการชำระหนี้');\r\n } else {\r\n stayTotalInstallmentPerMonth = forceNumber(result.B16_HLInstallmentPerMonth) + forceNumber(result.B26_HDInstallmentPerMonth);\r\n stayTotalLimitAmount = forceNumber(result.B14_HLPrimaryMaxLimit) + forceNumber(result.B24_HDPrimaryMaxLimit);\r\n stayPropertyLimitAmount = forceNumber(result.B14_HLPrimaryMaxLimit);\r\n stayDecorationLimitAmount = forceNumber(+result.B24_HDPrimaryMaxLimit);\r\n //canTakeOnDecorationLoan = result.B19_canTakeOnDecorationLoan;\r\n stayCanTakeDecoration = result.B19_canTakeOnDecorationLoan;\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B16_HLInstallmentPerMonth);\r\n stayDecorationInstallmentPerMonth = forceNumber(result.B26_HDInstallmentPerMonth);\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayCanTakeDecoration\", \r\n value: stayCanTakeDecoration,\r\n }));\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayValidateFields\", \r\n value: getValidateField('stay', props.decoration.value && stayCanTakeDecoration),\r\n }));\r\n }\r\n \r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationLimitAmount\", \r\n value: toThousandSeparated('' + stayDecorationLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n } else if (props.appliedCalcTypes.value.forStay === props.calcTypes.Land) {\r\n //cal land\r\n var result = calLand({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calLandSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: +getAmount(calFormData.stayPropertyLimitAmount),\r\n B6_career: calLandSetting.B6Career,\r\n B7_age: +calLandSetting.B7Age,\r\n B9_propertyLoanYear: stayInstallmentYear,\r\n B10_salary: +getAmount(calFormData.stayIncomePerMonth),\r\n B11_deptBurdenPerMonth: +getAmount(calFormData.stayDebtBurdenPerMonth),\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n calLandSetting: calLandSetting,\r\n });\r\n \r\n console.log('cal land result:', result);\r\n\r\n if(checkCalError(result, \"LackOfPayDeptAbility\")) {\r\n console.log('cal land: LackOfPayDeptAbility');\r\n\r\n stayTotalInstallmentPerMonth = 0;\r\n stayTotalLimitAmount = 0;\r\n stayPropertyLimitAmount = 0;\r\n stayPropertyInstallmentPerMonth = 0;\r\n\r\n showCalErrorPopup('ไม่ผ่านความสามารถการชำระหนี้');\r\n } else {\r\n stayTotalInstallmentPerMonth = forceNumber(result.B16_installmentPerMonth);\r\n stayTotalLimitAmount = forceNumber(result.B14_primaryMaxLimit);\r\n stayPropertyLimitAmount = forceNumber(result.B14_primaryMaxLimit);\r\n //canTakeOnDecorationLoan = false;\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B16_installmentPerMonth);\r\n }\r\n \r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n }\r\n\r\n //props.stayDecorationLimitAmount.visible = canTakeOnDecorationLoan;\r\n } else if (tab === 'business') {\r\n var businessInstallmentYear = Math.min(+getAmount(calFormData.businessInstallmentYear), props.businessInstallmentYear.maxValue);\r\n\r\n if (field === 'businessInstallmentYear') {\r\n if (calFormData.businessInstallmentYear !== '' && +getAmount(calFormData.businessInstallmentYear) > props.businessInstallmentYear.maxValue) {\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessInstallmentYear\", \r\n value: toThousandSeparated('' + businessInstallmentYear.toFixed(0)),\r\n note: 'ระยะเวลาผ่อนชำระสูงสุด ' + props.businessInstallmentYear.maxValue + ' ปี',\r\n }));\r\n } else {\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessInstallmentYear\",\r\n note: \"\",\r\n }));\r\n }\r\n }\r\n\r\n if(!validateCalcForm(tab, calFormData)){\r\n console.log('validate calc form failed!');\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalLimitAmount\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n\r\n return;\r\n }\r\n\r\n var resultSME = calSME({\r\n D10_propertyPrice: props.definedPropertyPrice.value,\r\n D12_propertyLoanAmount: Math.min(+getAmount(calFormData.businessPropertyLimitAmount), props.definedPropertyPrice.value),\r\n D18_propertyType: props.smePropertyType.value,\r\n D20_appraisalPrice: props.appraisalPrice.value,\r\n D28_propertyLoanYear: businessInstallmentYear,\r\n D30_profitPerMonth: +getAmount(calFormData.businessIncomePerMonth),\r\n D32_deptBurdenPerMonth: +getAmount(calFormData.businessDebtBurdenPerMonth),\r\n D37_decorationLoanAmount: +getAmount(calFormData.businessDecorationLimitAmount),\r\n calSMESetting: calSMESetting,\r\n });\r\n \r\n console.log('cal SME result:', resultSME);\r\n \r\n var businessTotalInstallmentPerMonth;\r\n var businessTotalLimitAmount;\r\n var businessPropertyLimitAmount;\r\n var businessDecorationLimitAmount;\r\n var businessPropertyInstallmentPerMonth;\r\n var businessDecorationInstallmentPerMonth;\r\n\r\n if (resultSME.D53_errorMessage !== \"\") {\r\n businessTotalInstallmentPerMonth = 0;\r\n businessTotalLimitAmount = 0;\r\n businessPropertyLimitAmount = 0;\r\n businessDecorationLimitAmount = 0;\r\n businessPropertyInstallmentPerMonth = 0;\r\n businessDecorationInstallmentPerMonth = 0;\r\n\r\n showCalErrorPopup('รายได้ที่แจ้งไม่เพียงพอต่อการชำระหนี้');\r\n } else {\r\n businessTotalInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth) + forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n businessTotalLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount) + forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n businessPropertyLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount);\r\n businessDecorationLimitAmount = forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n businessPropertyInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth);\r\n businessDecorationInstallmentPerMonth = forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n }\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalLimitAmount\", \r\n value: toThousandSeparated('' + businessTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyLimitAmount\", \r\n value: toThousandSeparated('' + businessPropertyLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationLimitAmount\", \r\n value: toThousandSeparated('' + businessDecorationLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n } else {\r\n throw new Error('Param \"tab\" has an invalid value.');\r\n }\r\n }\r\n\r\n function showCalErrorPopup(message) {\r\n props.openErrorPopup(message)\r\n }\r\n\r\n function checkCalError(calResult, errorCode) {\r\n return calResult.errors.filter(function(error){\r\n return error.errorCode === errorCode;\r\n }).length > 0;\r\n }\r\n\r\n function validateCalcForm(tab, formData) {\r\n var validateFields = [];\r\n\r\n if (tab === 'stay') {\r\n validateFields = props.stayValidateFields.value;\r\n\r\n // dispatch(formsCalcDataChange({ \r\n // field: \"stayInstallmentYear\",\r\n // note: \"\",\r\n // }));\r\n } else if (tab === 'business') {\r\n validateFields = props.businessValidateFields.value;\r\n\r\n // dispatch(formsCalcDataChange({ \r\n // field: \"businessInstallmentYear\",\r\n // note: \"\",\r\n // }));\r\n }\r\n\r\n const validateResults = validateFields.map(field => {\r\n var errorMessage = VaridateCalcDataField(props, field, formData[field]);\r\n\r\n dispatch(CalcValidateChange({ \r\n field: field,\r\n errorMessage: errorMessage,\r\n }));\r\n\r\n return errorMessage === '';\r\n });\r\n\r\n return validateResults.every(c => c);\r\n }\r\n\r\n function getValidateField(tab, decoration) {\r\n let validateField = [];\r\n\r\n if (tab === 'stay') {\r\n validateField = [\r\n 'stayInstallmentYear',\r\n 'stayPropertyLimitAmount',\r\n 'stayIncomePerMonth',\r\n 'stayDebtBurdenPerMonth',\r\n ];\r\n\r\n if (decoration) {\r\n validateField.push('stayDecorationLimitAmount');\r\n }\r\n } else if (tab === 'business') {\r\n validateField = [\r\n 'businessInstallmentYear',\r\n 'businessPropertyLimitAmount',\r\n 'businessIncomePerMonth',\r\n 'businessDebtBurdenPerMonth',\r\n ];\r\n\r\n if (decoration) {\r\n validateField.push('businessDecorationLimitAmount');\r\n }\r\n }\r\n\r\n return validateField;\r\n }\r\n\r\n function ErrorMessage(props) {\r\n return {props.message};\r\n }\r\n\r\n function Note(props) {\r\n return {props.message};\r\n }\r\n\r\n function handleChangeLimitButtonClick() {\r\n setIsEditMode(true);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n

    คำนวณวงเงินกู้สินเชื่อทรัพย์มือสองเบื้องต้น

    \r\n
    \r\n
    วัตถุประสงค์การกู้ :
    \r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ยอดผ่อนชำระต่อเดือน
    \r\n
    \r\n
    {props.stayTotalInstallmentPerMonth.value}
    \r\n
    บาท
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ยอดรวมวงเงินกู้
    \r\n
    {props.stayTotalLimitAmount.value} บาท
    \r\n
    \r\n
    \r\n
    ระยะเวลาผ่อนชำระ (สูงสุดไม่เกิน {props.stayInstallmentYear.maxValue} ปี)
    \r\n
    \r\n \r\n ปี\r\n
    \r\n \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    วงเงินทรัพย์
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินทรัพย์)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n\r\n
    \r\n
    รายได้ต่อเดือน
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    วงเงินตกแต่ง
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินตกแต่ง)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n \r\n
    \r\n
    ภาระหนี้
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    ยอดผ่อนชำระต่อเดือน
    \r\n
    \r\n
    {props.businessTotalInstallmentPerMonth.value}
    \r\n
    บาท
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ยอดรวมวงเงินกู้
    \r\n
    {props.businessTotalLimitAmount.value} บาท
    \r\n
    \r\n
    \r\n
    ระยะเวลาผ่อนชำระ (สูงสุดไม่เกิน {props.businessInstallmentYear.maxValue} ปี)
    \r\n
    \r\n \r\n ปี\r\n
    \r\n \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    วงเงินทรัพย์
    \r\n
    \r\n \r\n บาท{isEditMode && *}\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินทรัพย์)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n\r\n
    \r\n
    กำไรสุทธิต่อเดือน
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    วงเงินตกแต่ง
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินตกแต่ง)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n \r\n
    \r\n
    ภาระหนี้
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n isEditMode &&

    กรุณาระบุ “กำไรสุทธิต่อเดือน” และ “ภาระหนี้”
    (ถ้ามี) ให้เรียบร้อยก่อนระบุ “วงเงินทรัพย์”

    \r\n //
    *กรุณาระบุ \"กำไรสุทธิต่อเดือน\" และ \"ภาระหนี้\" (ถ้ามี) ให้เรียบร้อยก่อน ระบุ \"วงเงินทรัพย์\"
    \r\n }\r\n
    \r\n
    \r\n\r\n
    ผลการคำนวณดังกล่าวเป็นเพียงการประมาณการเบื้องต้นเท่านั้น การพิจารณาสินเชื่อเป็นไปตามข้อกำหนดและเงื่อนไขของธนาคาร
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    ผลการคำนวณวงเงินกู้เบื้องต้น

    \r\n
    \r\n
    \r\n

    วงเงินที่ต้องการ (บาท)

    \r\n \r\n \r\n
    \r\n
    \r\n

    ระยะเวลากู้ที่ต้องการ (ปี)

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    วงเงินกู้สูงสุด (บาท)

    \r\n
    2,268,000
    \r\n
    \r\n
    \r\n

    ยอดผ่อนต่อเดือน (บาท)

    \r\n
    12,000
    \r\n
    \r\n
    \r\n

    ผลการคำนวณดังกล่าวเป็นเพียงการประมาณการเบื้องต้นเท่านั้น การพิจารณาสินเชื่อเป็นไปตามข้อกำหนดและเงื่อนไขของธนาคาร

    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction calHomeLoan(options) {\r\n var careers = ['employee', 'business_owner'];\r\n var homeLoanTypes = [\r\n 'home1',\r\n 'home2_with_home1_lessthan_2years',\r\n 'home2_with_home1_2years_or_more',\r\n 'home3_or_else'\r\n ];\r\n\r\n if (careers.indexOf(options.B6_career) === -1) {\r\n throw new Error('Param B6_career is invalid');\r\n }\r\n\r\n if (homeLoanTypes.indexOf(options.B3_homeLoanType) === -1) {\r\n throw new Error('Param B3_homeLoanType is invalid');\r\n }\r\n\r\n try {\r\n var errors = [];\r\n\r\n var ROUNDUP = formulajs.ROUNDUP;\r\n var ROUNDDOWN = formulajs.ROUNDDOWN;\r\n var PV = formulajs.PV;\r\n var PMT = formulajs.PMT;\r\n\r\n var B2_propertyPrice = options.B2_propertyPrice;\r\n var B3_homeLoanType = options.B3_homeLoanType;\r\n var B5_propertyLoanAmount = options.B5_propertyLoanAmount;\r\n var B6_career = options.B6_career;\r\n var B7_age = options.B7_age;\r\n var B9_propertyLoanYear = options.B9_propertyLoanYear;\r\n var B10_salary = options.B10_salary;\r\n var B11_deptBurdenPerMonth = options.B11_deptBurdenPerMonth;\r\n var B12_appraisalPrice = options.B12_appraisalPrice;\r\n var B20_decorationLoanAmount = options.B20_decorationLoanAmount;\r\n var B21_decorationLoanYear = options.B21_decorationLoanYear;\r\n var calHomeLoanSetting = options.calHomeLoanSetting;\r\n var F5_limitKBank = calHomeLoanSetting.LimitKBank / 100;\r\n var F15_MRR = calHomeLoanSetting.KBankMRR / 100;\r\n var F18_HLBaseRate = +calHomeLoanSetting.HLBaseRate;\r\n var F24_HDBaseRate = +calHomeLoanSetting.HDBaseRate;\r\n\r\n var F4_limitBot;\r\n\r\n if (B3_homeLoanType === 'home1') {\r\n if (B2_propertyPrice < 10000000) {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse1LessThan10MB;\r\n } else {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse1GreaterThan10MB;\r\n }\r\n } else if (B3_homeLoanType === 'home2_with_home1_2years_or_more') {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse2InstallGreaterThan2Years;\r\n } else if (B3_homeLoanType === 'home2_with_home1_lessthan_2years') {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse2InstallLessThan2Years;\r\n } else if (B3_homeLoanType === 'home3_or_else') {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse3;\r\n } else {\r\n F4_limitBot = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF4LimitBotFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F4_limitBot = F4_limitBot / 100;\r\n\r\n var F6 = Math.min(F4_limitBot, F5_limitKBank);\r\n var B4_maxLimitFromPrice;\r\n\r\n if (ROUNDUP((B2_propertyPrice * F6), -3) > B2_propertyPrice) {\r\n B4_maxLimitFromPrice = B2_propertyPrice;\r\n } else {\r\n B4_maxLimitFromPrice = ROUNDUP((B2_propertyPrice * F6), -3);\r\n }\r\n\r\n var B8_maxLoanYear = Math.min((70 - B7_age), 30);\r\n var F8_salary;\r\n\r\n if (B10_salary < 30000) {\r\n F8_salary = calHomeLoanSetting.F8SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F8_salary = calHomeLoanSetting.F8Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F8_salary = calHomeLoanSetting.F8SalaryGreaterThan70000\r\n } else {\r\n F8_salary = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF8SalaryFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F8_salary = F8_salary / 100;\r\n\r\n var F9_entre;\r\n\r\n if (B10_salary < 30000) {\r\n F9_entre = calHomeLoanSetting.F9SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F9_entre = calHomeLoanSetting.F9Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F9_entre = calHomeLoanSetting.F9SalaryGreaterThan70000\r\n } else {\r\n F9_entre = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF9EntreFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F9_entre = F9_entre / 100;\r\n\r\n var F10;\r\n\r\n if (B6_career === 'employee') {\r\n F10 = F8_salary;\r\n } else if (B6_career === 'business_owner') {\r\n F10 = F9_entre;\r\n } else {\r\n F10 = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF10Failed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n var F11_Inst1 = ROUNDUP(B10_salary * F10, -2);\r\n var F12_Inst2 = F11_Inst1 - B11_deptBurdenPerMonth;\r\n var F19_HLRate = (F15_MRR - (F18_HLBaseRate / 100)) + 0.01;\r\n var B15_HLLoanableYear;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B15_HLLoanableYear = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B15_HLLoanableYear = Math.min(B8_maxLoanYear, B9_propertyLoanYear);\r\n }\r\n\r\n var F13_Limt = ROUNDDOWN(PV(F19_HLRate / 12, B15_HLLoanableYear * 12, -F12_Inst2), -3);\r\n var B14_HLPrimaryMaxLimit;\r\n var maxPropertyLimit;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B14_HLPrimaryMaxLimit = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n maxPropertyLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B14_HLPrimaryMaxLimit = Math.min(B4_maxLimitFromPrice, B5_propertyLoanAmount, F13_Limt, B12_appraisalPrice);\r\n maxPropertyLimit = Math.min(B4_maxLimitFromPrice, F13_Limt, B12_appraisalPrice);\r\n }\r\n\r\n var B16_HLInstallmentPerMonth;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B16_HLInstallmentPerMonth = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B16_HLInstallmentPerMonth = ROUNDUP(PMT(F19_HLRate / 12, B15_HLLoanableYear * 12, -B14_HLPrimaryMaxLimit), -2);\r\n }\r\n\r\n var F14_LTVMinusHL = Math.min(B12_appraisalPrice - B14_HLPrimaryMaxLimit, B4_maxLimitFromPrice * 0.1);\r\n var B19_HDMaxDecorationLimit = null;\r\n var B19_canTakeOnDecorationLoan = true;\r\n\r\n if (B2_propertyPrice >= 10000000) {\r\n B19_HDMaxDecorationLimit = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n B19_canTakeOnDecorationLoan = false;\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F14_LTVMinusHL >= 1000) {\r\n B19_HDMaxDecorationLimit = F14_LTVMinusHL;\r\n } else {\r\n B19_HDMaxDecorationLimit = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n B19_canTakeOnDecorationLoan = false;\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n }\r\n\r\n var F28_Inst2MinusB16 = F12_Inst2 - B16_HLInstallmentPerMonth;\r\n var F25_HDRate = (F15_MRR - (F24_HDBaseRate / 100)) + 0.01;\r\n var B25_HDLoanableYear;\r\n\r\n if (!B19_canTakeOnDecorationLoan) {\r\n B25_HDLoanableYear = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F28_Inst2MinusB16 < 1000) {\r\n B25_HDLoanableYear = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else if (B21_decorationLoanYear <= B15_HLLoanableYear) {\r\n B25_HDLoanableYear = B21_decorationLoanYear;\r\n } else {\r\n B25_HDLoanableYear = B15_HLLoanableYear;\r\n }\r\n\r\n var F29_Limit2 = ROUNDDOWN(PV(F25_HDRate / 12, B25_HDLoanableYear * 12, -F28_Inst2MinusB16), -3);\r\n var B24_HDPrimaryMaxLimit;\r\n var maxDecorationLimit;\r\n\r\n if (!B19_canTakeOnDecorationLoan) {\r\n B24_HDPrimaryMaxLimit = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n maxDecorationLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F28_Inst2MinusB16 < 1000) {\r\n B24_HDPrimaryMaxLimit = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n maxDecorationLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n if(B20_decorationLoanAmount !== null){\r\n B24_HDPrimaryMaxLimit = Math.min(B19_HDMaxDecorationLimit, B20_decorationLoanAmount, F29_Limit2);\r\n } else {\r\n B24_HDPrimaryMaxLimit = Math.min(B19_HDMaxDecorationLimit, F29_Limit2);\r\n }\r\n\r\n maxDecorationLimit = Math.min(B19_HDMaxDecorationLimit, F29_Limit2);\r\n }\r\n\r\n var B26_HDInstallmentPerMonth;\r\n\r\n if (!B19_canTakeOnDecorationLoan) {\r\n B26_HDInstallmentPerMonth = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F28_Inst2MinusB16 < 1000) {\r\n B26_HDInstallmentPerMonth = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B26_HDInstallmentPerMonth = ROUNDUP(PMT(F25_HDRate / 12, B25_HDLoanableYear * 12, -B24_HDPrimaryMaxLimit), -2);\r\n }\r\n\r\n var B28_HLLimit = Math.min(B4_maxLimitFromPrice, B12_appraisalPrice);\r\n var B29_HLInstallmentPerMonth = ROUNDUP(PMT(F19_HLRate / 12, B8_maxLoanYear * 12, -B28_HLLimit), -2);\r\n var B33_HDLimit = B2_propertyPrice * 0.1;\r\n var B34_HDInstallmentPerMonth = ROUNDUP(PMT(F25_HDRate / 12, B8_maxLoanYear * 12, -B33_HDLimit), -2);\r\n\r\n return {\r\n errors: errors,\r\n\r\n B4_maxLimitFromPrice: B4_maxLimitFromPrice,\r\n B8_maxLoanYear: B8_maxLoanYear,\r\n B14_HLPrimaryMaxLimit: B14_HLPrimaryMaxLimit,\r\n B15_HLLoanableYear: B15_HLLoanableYear,\r\n B16_HLInstallmentPerMonth: B16_HLInstallmentPerMonth,\r\n B19_HDMaxDecorationLimit: B19_HDMaxDecorationLimit,\r\n B19_canTakeOnDecorationLoan: B19_canTakeOnDecorationLoan,\r\n B24_HDPrimaryMaxLimit: B24_HDPrimaryMaxLimit,\r\n B25_HDLoanableYear: B25_HDLoanableYear,\r\n B26_HDInstallmentPerMonth: B26_HDInstallmentPerMonth,\r\n maxPropertyLimit: maxPropertyLimit,\r\n maxDecorationLimit: maxDecorationLimit,\r\n B28_HLLimit: B28_HLLimit,\r\n B29_HLInstallmentPerMonth: B29_HLInstallmentPerMonth,\r\n B33_HDLimit: B33_HDLimit,\r\n B34_HDInstallmentPerMonth: B34_HDInstallmentPerMonth,\r\n \r\n inputs: options,\r\n };\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return {\r\n errors: [\r\n {\r\n errorCode: null,\r\n errorMessage: '' + e,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nfunction calLand(options) {\r\n var careers = ['employee', 'business_owner'];\r\n var homeLoanTypes = [\r\n 'home1',\r\n 'home2_with_home1_lessthan_2years',\r\n 'home2_with_home1_2years_or_more',\r\n 'home3_or_else'\r\n ];\r\n\r\n if (careers.indexOf(options.B6_career) === -1) {\r\n throw new Error('Param B6_career is invalid');\r\n }\r\n\r\n if (homeLoanTypes.indexOf(options.B3_homeLoanType) === -1) {\r\n throw new Error('Param B3_homeLoanType is invalid');\r\n }\r\n\r\n try {\r\n var errors = [];\r\n\r\n var ROUNDUP = formulajs.ROUNDUP;\r\n var ROUNDDOWN = formulajs.ROUNDDOWN;\r\n var PV = formulajs.PV;\r\n var PMT = formulajs.PMT;\r\n\r\n var B2_propertyPrice = options.B2_propertyPrice;\r\n var B3_homeLoanType = options.B3_homeLoanType;\r\n var B5_propertyLoanAmount = options.B5_propertyLoanAmount;\r\n var B6_career = options.B6_career;\r\n var B7_age = options.B7_age;\r\n var B9_propertyLoanYear = options.B9_propertyLoanYear;\r\n var B10_salary = options.B10_salary;\r\n var B11_deptBurdenPerMonth = options.B11_deptBurdenPerMonth;\r\n var B12_appraisalPrice = options.B12_appraisalPrice;\r\n var calLandSetting = options.calLandSetting;\r\n var F5_limitKBank = calLandSetting.LimitKBank / 100;\r\n var F15_MRR = calLandSetting.KBankMRR / 100;\r\n var F18_baseRate = +calLandSetting.F18BaseRate;\r\n\r\n var F4_limitBot;\r\n\r\n if (B3_homeLoanType === 'home1') {\r\n if (B2_propertyPrice < 10000000) {\r\n F4_limitBot = calLandSetting.LimitBotHouse1LessThan10MB;\r\n } else {\r\n F4_limitBot = calLandSetting.LimitBotHouse1GreaterThan10MB;\r\n }\r\n } else if (B3_homeLoanType === 'home2_with_home1_2years_or_more') {\r\n F4_limitBot = calLandSetting.LimitBotHouse2InstallGreaterThan2Years;\r\n } else if (B3_homeLoanType === 'home2_with_home1_lessthan_2years') {\r\n F4_limitBot = calLandSetting.LimitBotHouse2InstallLessThan2Years;\r\n } else if (B3_homeLoanType === 'home3_or_else') {\r\n F4_limitBot = calLandSetting.LimitBotHouse3;\r\n } else {\r\n F4_limitBot = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF4LimitBotFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F4_limitBot = F4_limitBot / 100;\r\n\r\n var F6 = Math.min(F4_limitBot, F5_limitKBank);\r\n var B4_maxLimitFromPrice;\r\n\r\n if (ROUNDUP((B2_propertyPrice * F6), -3) > B2_propertyPrice) {\r\n B4_maxLimitFromPrice = B2_propertyPrice;\r\n } else {\r\n B4_maxLimitFromPrice = ROUNDUP((B2_propertyPrice * F6), -3);\r\n }\r\n\r\n var B8_maxLoanYear = Math.min((70 - B7_age), 10);\r\n var F8_salary;\r\n\r\n if (B10_salary < 30000) {\r\n F8_salary = calLandSetting.F8SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F8_salary = calLandSetting.F8Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F8_salary = calLandSetting.F8SalaryGreaterThan70000\r\n } else {\r\n F8_salary = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF8SalaryFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F8_salary = F8_salary / 100;\r\n\r\n var F9_entre;\r\n\r\n if (B10_salary < 30000) {\r\n F9_entre = calLandSetting.F9SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F9_entre = calLandSetting.F9Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F9_entre = calLandSetting.F9SalaryGreaterThan70000\r\n } else {\r\n F9_entre = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF9EntreFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F9_entre = F9_entre / 100;\r\n\r\n var F10;\r\n\r\n if (B6_career === 'employee') {\r\n F10 = F8_salary;\r\n } else if (B6_career === 'business_owner') {\r\n F10 = F9_entre;\r\n } else {\r\n F10 = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF10Failed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n var F11_Inst1 = ROUNDUP(B10_salary * F10, -2);\r\n var F12_Inst2 = F11_Inst1 - B11_deptBurdenPerMonth;\r\n var F19_rate = (F15_MRR + (F18_baseRate / 100)) + 0.01;\r\n var B15_loanableYear;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B15_loanableYear = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B15_loanableYear = Math.min(B8_maxLoanYear, B9_propertyLoanYear);\r\n }\r\n\r\n var F13_Limt = ROUNDDOWN(PV(F19_rate / 12, B15_loanableYear * 12, -F12_Inst2), -3);\r\n var B14_primaryMaxLimit;\r\n var maxPropertyLimit;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B14_primaryMaxLimit = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n maxPropertyLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B14_primaryMaxLimit = Math.min(B4_maxLimitFromPrice, B5_propertyLoanAmount, F13_Limt, B12_appraisalPrice);\r\n maxPropertyLimit = Math.min(B4_maxLimitFromPrice, F13_Limt, B12_appraisalPrice);\r\n }\r\n\r\n var B16_installmentPerMonth;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B16_installmentPerMonth = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B16_installmentPerMonth = ROUNDUP(PMT(F19_rate / 12, B15_loanableYear * 12, -B14_primaryMaxLimit), -2);\r\n }\r\n\r\n var B18_HLLimit = Math.min(B4_maxLimitFromPrice, B12_appraisalPrice);\r\n var B19_HLInstallmentPerMonth = ROUNDUP(PMT(F19_rate / 12, B8_maxLoanYear * 12, -B18_HLLimit), -2);\r\n\r\n return {\r\n errors: errors,\r\n\r\n B4_maxLimitFromPrice: B4_maxLimitFromPrice,\r\n B8_maxLoanYear: B8_maxLoanYear,\r\n B14_primaryMaxLimit: B14_primaryMaxLimit,\r\n B15_loanableYear: B15_loanableYear,\r\n B16_installmentPerMonth: B16_installmentPerMonth,\r\n maxPropertyLimit: maxPropertyLimit,\r\n B18_HLLimit: B18_HLLimit,\r\n B19_HLInstallmentPerMonth: B19_HLInstallmentPerMonth,\r\n \r\n inputs: options,\r\n };\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return {\r\n errors: [\r\n {\r\n errorCode: null,\r\n errorMessage: '' + e,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nfunction calSME(options) {\r\n try {\r\n var ROUND = formulajs.ROUND;\r\n var ROUNDUP = formulajs.ROUNDUP;\r\n\r\n var D10_propertyPrice = options.D10_propertyPrice;\r\n var D12_propertyLoanAmount = options.D12_propertyLoanAmount;\r\n var D18_propertyType = options.D18_propertyType;\r\n var D20_appraisalPrice = options.D20_appraisalPrice;\r\n var D28_propertyLoanYear = options.D28_propertyLoanYear;\r\n var D30_profitPerMonth = options.D30_profitPerMonth;\r\n var D32_deptBurdenPerMonth = options.D32_deptBurdenPerMonth;\r\n var D37_decorationLoanAmount = options.D37_decorationLoanAmount;\r\n var calSMESetting = options.calSMESetting;\r\n var I25_MRR = calSMESetting.C1_MRR / 100;\r\n var I26_LNRateForInstallmentSecured = calSMESetting.C2_LNRateForInstallmentSecured / 100;\r\n var I27_MinimumDSCR = +calSMESetting.C3_MinimumDSCR;\r\n var I28_NetProfitDeptRatioConfig = +calSMESetting.C4_NetProfitDeptRatioConfig;\r\n var I32_LTV = calSMESetting.C8_LTV / 100;\r\n var S15 = 0;\r\n\r\n var I30_maxLoanYear;\r\n\r\n if (D18_propertyType === \"other\") {\r\n I30_maxLoanYear = 20;\r\n } else {\r\n I30_maxLoanYear = 30;\r\n }\r\n\r\n var O14_finalTerm = Math.min(I30_maxLoanYear, D28_propertyLoanYear);\r\n var I17_profitPerMonth;\r\n\r\n if (D32_deptBurdenPerMonth === \"\" && D30_profitPerMonth === \"\") {\r\n I17_profitPerMonth = D12_propertyLoanAmount * ((I25_MRR + I26_LNRateForInstallmentSecured) / 12) / (1 - (Math.pow(1 + ((I25_MRR + I26_LNRateForInstallmentSecured) / 12), -(12 * O14_finalTerm)))) * I27_MinimumDSCR;\r\n } else {\r\n I17_profitPerMonth = D30_profitPerMonth;\r\n }\r\n\r\n var I18_deptBurdenPerMonth = +D32_deptBurdenPerMonth;\r\n var O17_debtRatio;\r\n\r\n try {\r\n if (I18_deptBurdenPerMonth === 0) {\r\n throw new Error('divide by zero');\r\n }\r\n\r\n if ((I17_profitPerMonth / I18_deptBurdenPerMonth - 1) <= I28_NetProfitDeptRatioConfig) {\r\n O17_debtRatio = \"No\";\r\n } else {\r\n O17_debtRatio = \"Yes\";\r\n }\r\n } catch (e) {\r\n O17_debtRatio = 0;\r\n }\r\n\r\n var I12_loanAmount = D12_propertyLoanAmount;\r\n var I11_finalPrice;\r\n\r\n if (D20_appraisalPrice < D10_propertyPrice) {\r\n I11_finalPrice = D20_appraisalPrice;\r\n } else {\r\n I11_finalPrice = D10_propertyPrice;\r\n }\r\n\r\n var O11_interestForIncomingDebt;\r\n\r\n if (I11_finalPrice > 0) {\r\n O11_interestForIncomingDebt = I25_MRR + I26_LNRateForInstallmentSecured;\r\n } else {\r\n O11_interestForIncomingDebt = \"\";\r\n }\r\n\r\n var S17_incomingDebt = (I12_loanAmount * (O11_interestForIncomingDebt / 12)) / (1 - (Math.pow(1 + (O11_interestForIncomingDebt / 12), -(O14_finalTerm * 12))));\r\n var V11_DSCR;\r\n\r\n try {\r\n if (O17_debtRatio === \"No\") {\r\n V11_DSCR = \"X\";\r\n } else {\r\n V11_DSCR = I17_profitPerMonth / (I18_deptBurdenPerMonth + S17_incomingDebt);\r\n }\r\n } catch(e) {\r\n V11_DSCR = 0;\r\n }\r\n\r\n var V13_maxRepayPerMonthCapability = I17_profitPerMonth / I27_MinimumDSCR;\r\n var V14_repayPerMonthCapability = V13_maxRepayPerMonthCapability - I18_deptBurdenPerMonth - S15;\r\n var V17_installmentLimit = V14_repayPerMonthCapability * ((1 / (O11_interestForIncomingDebt / 12)) - (1 / (O11_interestForIncomingDebt / 12 * Math.pow(1 + O11_interestForIncomingDebt / 12, O14_finalTerm * 12))));\r\n var Z13_limitOnPrice = I11_finalPrice * I32_LTV;\r\n var Z14_finalOffer;\r\n\r\n try {\r\n Z14_finalOffer = ROUND(Math.min(V17_installmentLimit, Z13_limitOnPrice, I12_loanAmount), -1);\r\n } catch (e) {\r\n Z14_finalOffer = \"\";\r\n }\r\n\r\n var AD11_limitDSCRNotPass;\r\n\r\n if (V11_DSCR < 1.2 && Z14_finalOffer > 0 && V11_DSCR !== \"X\") {\r\n AD11_limitDSCRNotPass = Z14_finalOffer;\r\n } else {\r\n AD11_limitDSCRNotPass = \"\";\r\n }\r\n\r\n var Z20_limitOnLorPorGor = I11_finalPrice * I32_LTV;\r\n var Z21_finalOfferLorPorGor;\r\n\r\n try {\r\n Z21_finalOfferLorPorGor = ROUND(Math.min(Z20_limitOnLorPorGor, I12_loanAmount, V17_installmentLimit), -1);\r\n } catch (e) {\r\n Z21_finalOfferLorPorGor = \"\";\r\n }\r\n\r\n var AD12_limitDSCRPass;\r\n\r\n if (V11_DSCR >= 1.2 && Z21_finalOfferLorPorGor > 0 && V11_DSCR !== \"X\") {\r\n AD12_limitDSCRPass = Z21_finalOfferLorPorGor;\r\n } else {\r\n AD12_limitDSCRPass = \"\";\r\n }\r\n\r\n var AE18_primaryMaxLoanAmount;\r\n\r\n if (Math.max(AD11_limitDSCRNotPass, AD12_limitDSCRPass) === 0) {\r\n AE18_primaryMaxLoanAmount = \"\";\r\n } else {\r\n AE18_primaryMaxLoanAmount = Math.max(AD11_limitDSCRNotPass, AD12_limitDSCRPass);\r\n }\r\n\r\n var D44_propertyPrimaryMaxLoanAmount = AE18_primaryMaxLoanAmount;\r\n var D35_maxDecorationLimit;\r\n\r\n if (Math.min(D20_appraisalPrice - D12_propertyLoanAmount, D44_propertyPrimaryMaxLoanAmount * 0.1) <= 0) {\r\n D35_maxDecorationLimit = 0;\r\n } else {\r\n D35_maxDecorationLimit = Math.min(D20_appraisalPrice - D12_propertyLoanAmount, D44_propertyPrimaryMaxLoanAmount * 0.1);\r\n }\r\n\r\n if (D37_decorationLoanAmount === null) {\r\n D37_decorationLoanAmount = D35_maxDecorationLimit;\r\n }\r\n\r\n var D48_decorationPrimaryMaxLoanAmount;\r\n\r\n if (D37_decorationLoanAmount === \"\") {\r\n D48_decorationPrimaryMaxLoanAmount = 0;\r\n } else {\r\n D48_decorationPrimaryMaxLoanAmount = Math.min(D35_maxDecorationLimit, D37_decorationLoanAmount);\r\n }\r\n\r\n var Z15_installmentPlusIntOffer = ( Z14_finalOffer * ((I25_MRR + I26_LNRateForInstallmentSecured) / 12)) / (1 - (Math.pow(1 + ((I25_MRR + I26_LNRateForInstallmentSecured) / 12), -(12 * O14_finalTerm))));\r\n var AE11_installmentDSCRNotPass;\r\n\r\n if (Z15_installmentPlusIntOffer <= 0 || AD11_limitDSCRNotPass === \"\") {\r\n AE11_installmentDSCRNotPass = \"\";\r\n } else {\r\n AE11_installmentDSCRNotPass = ROUND(Z15_installmentPlusIntOffer, -1);\r\n }\r\n\r\n var Z22_installmentPlusIntOffer = (Z21_finalOfferLorPorGor * ((I25_MRR + I26_LNRateForInstallmentSecured) / 12)) / (1 - (Math.pow(1 + ((I25_MRR + I26_LNRateForInstallmentSecured) / 12), -(12 * O14_finalTerm)))); \r\n var AE12_installmentDSCRPass;\r\n\r\n if (Z22_installmentPlusIntOffer <= 0 || AD12_limitDSCRPass === \"\") {\r\n AE12_installmentDSCRPass = \"\";\r\n } else {\r\n AE12_installmentDSCRPass = ROUNDUP(Z22_installmentPlusIntOffer, -2);\r\n }\r\n\r\n var AE22_installmentPerMonth;\r\n\r\n if (AE18_primaryMaxLoanAmount > 0) {\r\n //AE22_installmentPerMonth = VLOOKUP(AE18_primaryMaxLoanAmount, AD11_limitDSCRNotPass:AE12_installmentDSCRPass, 2, 0);\r\n if (AE18_primaryMaxLoanAmount === AD11_limitDSCRNotPass) {\r\n AE22_installmentPerMonth = AE11_installmentDSCRNotPass;\r\n } else if (AE18_primaryMaxLoanAmount === AD12_limitDSCRPass) {\r\n AE22_installmentPerMonth = AE12_installmentDSCRPass;\r\n } else {\r\n AE22_installmentPerMonth = \"\";\r\n }\r\n } else {\r\n AE22_installmentPerMonth = \"\";\r\n }\r\n\r\n var D46_propertyInstallmentPerMonth = AE22_installmentPerMonth;\r\n var D50_decorationInstallmentPerMonth = ROUNDUP((D48_decorationPrimaryMaxLoanAmount / D44_propertyPrimaryMaxLoanAmount) * AE22_installmentPerMonth, -2);\r\n var AE20_loanableYear;\r\n\r\n if (V11_DSCR === \"X\" || O14_finalTerm === 0 || O14_finalTerm <= 0) {\r\n AE20_loanableYear = \"\";\r\n } else {\r\n AE20_loanableYear = O14_finalTerm;\r\n }\r\n\r\n var D56_loanableYear = AE20_loanableYear;\r\n var AD47;\r\n\r\n if (V11_DSCR === \"X\") {\r\n AD47 = \"รายได้ไม่เพียงพอต่อการชำระหนี้\";\r\n } else {\r\n AD47 = \"\";\r\n }\r\n\r\n var D53_errorMessage = AD47;\r\n var AD48;\r\n\r\n if (V11_DSCR === \"X\") {\r\n AD48 = \"ท่านสามารถก่อหนี้ได้สูงสุด\";\r\n } else {\r\n AD48 = \"\";\r\n }\r\n\r\n var C54_debtRecommendMessage = AD48;\r\n var AD49;\r\n\r\n if (V11_DSCR === \"X\") {\r\n AD49 = I17_profitPerMonth * 0.8;\r\n } else {\r\n AD49 = \"\";\r\n }\r\n\r\n var D54_debtRecommendAmount = AD49;\r\n\r\n return {\r\n errors: [],\r\n\r\n D44_propertyPrimaryMaxLoanAmount: D44_propertyPrimaryMaxLoanAmount,\r\n D46_propertyInstallmentPerMonth: D46_propertyInstallmentPerMonth,\r\n D48_decorationPrimaryMaxLoanAmount: D48_decorationPrimaryMaxLoanAmount,\r\n D50_decorationInstallmentPerMonth: D50_decorationInstallmentPerMonth,\r\n D56_loanableYear: D56_loanableYear,\r\n D53_errorMessage: D53_errorMessage,\r\n C54_debtRecommendMessage: C54_debtRecommendMessage,\r\n D54_debtRecommendAmount: D54_debtRecommendAmount,\r\n I30_maxLoanYear: I30_maxLoanYear,\r\n\r\n inputs: options,\r\n };\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return {\r\n errors: [\r\n {\r\n errorCode: null,\r\n errorMessage: '' + e,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nconst $ = window.$;\r\n\r\nexport function PartnerHomeCalculatorTab(props) {\r\n useEffect(() => {\r\n console.log('#### useEffect PartnerHomeCalculatorTab');\r\n\r\n const price = new Intl.NumberFormat('en-US', {\r\n useGrouping: true,\r\n }).format(props.definedPropertyPrice.value);\r\n\r\n console.log('definedPropertyPrice: ' + props.definedPropertyPrice.value);\r\n document.getElementById('txtCalLoanAmount').value = price;\r\n }, []);\r\n\r\n function validateMaxMin(e) {\r\n window.validateMaxMin(e.target);\r\n }\r\n\r\n function tabClick(tab, e) {\r\n props.onTabClick(tab);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n

    คำนวณวงเงินกู้
    สินเชื่อบ้าน เบื้องต้น

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    วัตถุประสงค์การกู้ :
    \r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {/* */}\r\n \r\n\r\n

    กรุณาระบุอายุ 20 - 69 ปี

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {/* */}\r\n \r\n \r\n

    กรุณาระบุรายได้ขั้นต่ำ 15,000 บาท

    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n

    วงเงินกู้ขั้นต่ำต้องไม่น้อยกว่า 300,000 บาท

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {/* */}\r\n \r\n \r\n

    ภาระหนี้ที่ต้องระบุไม่เกิน xxxx บาท หรือเพิ่มรายได้ต่อเดือน

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n

    Error Msg.

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n

    รายได้ต่อเดือนสุทธิต้องไม่ต่ำกว่า 15,000 บาท

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n คำนวณ\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n

    ผลการคำนวณ
    วงเงินกู้เบื้องต้น

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    38,500

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    หมายเหตุ :

    \r\n
      \r\n
    • ผลการคำนวณเป็นการประเมินความสามารถในการกู้เบื้องต้นเท่านั้น ทั้งนี้ ผลการอนุมัติสินเชื่อเป็นไปตามหลักเกณฑ์และเงื่อนไขของธนาคาร
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux'\r\nimport { formsCalcPropsChange, formsCalcDataChange, CalcValidateChange } from '../stores/propertySlice'\r\nimport { toThousandSeparated, VaridateCalcDataField, getAmount } from './ValidateHelper'\r\nimport * as formulajs from '@formulajs/formulajs'\r\n\r\nexport function PartnerSMECalculatorTab(props) {\r\n const dispatch = useDispatch();\r\n\r\n const [isEditMode, setIsEditMode] = useState(false);\r\n \r\n useEffect(() => {\r\n console.log('#### useEffect PartnerSMECalculatorTab');\r\n\r\n if(props.calculatorHomeLoanSetting.value === 0\r\n || props.calculatorLandSetting.value === 0\r\n || props.calculatorSMESetting.value === 0\r\n ){\r\n return;\r\n }\r\n\r\n var calHomeLoanSetting = props.calculatorHomeLoanSetting.value;\r\n var calLandSetting = props.calculatorLandSetting.value;\r\n var calSMESetting = props.calculatorSMESetting.value;\r\n\r\n var stayTotalInstallmentPerMonth;\r\n var stayTotalLimitAmount;\r\n var stayInstallmentYear;\r\n var stayPropertyLimitAmount;\r\n var stayPropertyInstallmentPerMonth;\r\n var stayDecorationLimitAmount;\r\n var stayDecorationInstallmentPerMonth;\r\n var stayIncomePerMonth;\r\n var stayDebtBurdenPerMonth;\r\n var stayCanTakeDecoration;\r\n\r\n if (props.appliedCalcTypes.value.forStay === props.calcTypes.Home) {\r\n var defaultLoanYear = +calHomeLoanSetting.DefaultLoanYear;\r\n\r\n var result = calHomeLoan({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calHomeLoanSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: props.definedPropertyPrice.value,\r\n B6_career: calHomeLoanSetting.B6Career,\r\n B7_age: +calHomeLoanSetting.B7Age,\r\n B9_propertyLoanYear: defaultLoanYear,\r\n B10_salary: '',\r\n B11_deptBurdenPerMonth: '',\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n B20_decorationLoanAmount: null,\r\n B21_decorationLoanYear: defaultLoanYear,\r\n calHomeLoanSetting: calHomeLoanSetting,\r\n });\r\n\r\n console.log('cal home loan result:', result);\r\n\r\n stayCanTakeDecoration = props.definedPropertyPrice.value <= 10000000; //true;\r\n\r\n stayTotalInstallmentPerMonth = forceNumber(result.B29_HLInstallmentPerMonth) + (stayCanTakeDecoration ? forceNumber(result.B34_HDInstallmentPerMonth) : 0);\r\n stayTotalLimitAmount = forceNumber(result.B28_HLLimit) + (stayCanTakeDecoration ? forceNumber(result.B33_HDLimit) : 0);\r\n stayPropertyLimitAmount = forceNumber(result.B28_HLLimit);\r\n stayDecorationLimitAmount = forceNumber(+result.B33_HDLimit);\r\n\r\n stayInstallmentYear = forceNumber(result.B8_maxLoanYear);\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B29_HLInstallmentPerMonth);\r\n stayDecorationInstallmentPerMonth = forceNumber(+result.B34_HDInstallmentPerMonth);\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\", \r\n value: toThousandSeparated('' + stayInstallmentYear.toFixed(0)), \r\n maxValue: result.B8_maxLoanYear,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n maxValue: +stayPropertyLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationLimitAmount\", \r\n value: toThousandSeparated('' + stayDecorationLimitAmount.toFixed(0)), \r\n maxValue: +stayDecorationLimitAmount.toFixed(0),\r\n //visible: stayCanTakeDecoration,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayIncomePerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDebtBurdenPerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayCanTakeDecoration\", \r\n value: stayCanTakeDecoration,\r\n }));\r\n } else if (props.appliedCalcTypes.value.forStay === props.calcTypes.Land) {\r\n var defaultLoanYear = +calLandSetting.DefaultLoanYear;\r\n\r\n var result = calLand({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calLandSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: props.definedPropertyPrice.value,\r\n B6_career: calLandSetting.B6Career,\r\n B7_age: +calLandSetting.B7Age,\r\n B9_propertyLoanYear: defaultLoanYear,\r\n B10_salary: '',\r\n B11_deptBurdenPerMonth: '',\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n calLandSetting: calLandSetting,\r\n });\r\n\r\n console.log('cal land result:', result);\r\n\r\n stayTotalInstallmentPerMonth = forceNumber(result.B19_HLInstallmentPerMonth);\r\n stayTotalLimitAmount = forceNumber(result.B18_HLLimit);\r\n stayPropertyLimitAmount = forceNumber(result.B18_HLLimit);\r\n\r\n stayInstallmentYear = forceNumber(result.B8_maxLoanYear);\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B19_HLInstallmentPerMonth);\r\n stayCanTakeDecoration = false;\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\", \r\n value: toThousandSeparated('' + stayInstallmentYear.toFixed(0)), \r\n maxValue: result.B8_maxLoanYear,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n maxValue: +stayPropertyLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayIncomePerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDebtBurdenPerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayCanTakeDecoration\", \r\n value: stayCanTakeDecoration,\r\n }));\r\n }\r\n\r\n var decoration = props.propertyTypeID.value !== '01';\r\n var smePropertyType = ([\"02\", \"03\", \"04\", \"05\"].indexOf(props.propertyTypeID.value) !== -1) ? props.propertyTypeID.value : 'other';\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"smePropertyType\", \r\n value: smePropertyType,\r\n }));\r\n\r\n var smeDefaultLoanYear = +calSMESetting.Partner_DefaultLoanYear;\r\n\r\n var resultSME = calPartnerSME({\r\n D10_propertyPrice: props.definedPropertyPrice.value,\r\n D12_propertyLoanAmount: props.definedPropertyPrice.value,\r\n //D18_propertyType: smePropertyType,\r\n D20_appraisalPrice: props.appraisalPrice.value,\r\n D28_propertyLoanYear: smeDefaultLoanYear,\r\n D30_profitPerMonth: '',\r\n D32_deptBurdenPerMonth: '',\r\n //D37_decorationLoanAmount: decoration ? null : 0,\r\n calSMESetting: calSMESetting,\r\n });\r\n\r\n console.log('cal SME result:', resultSME);\r\n\r\n var businessTotalInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth) + forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n var businessTotalLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount) + forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n var businessInstallmentYear = forcePositiveNumber(resultSME.D56_loanableYear);\r\n var businessPropertyLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount);\r\n var businessPropertyInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth);\r\n var businessDecorationLimitAmount = forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n var businessDecorationInstallmentPerMonth = forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalLimitAmount\", \r\n value: toThousandSeparated('' + businessTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessInstallmentYear\", \r\n value: toThousandSeparated('' + businessInstallmentYear.toFixed(0)), \r\n maxValue: resultSME.I30_maxLoanYear, //+businessInstallmentYear.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyLimitAmount\", \r\n value: toThousandSeparated('' + businessPropertyLimitAmount.toFixed(0)),\r\n maxValue: +businessPropertyLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationLimitAmount\", \r\n value: toThousandSeparated('' + businessDecorationLimitAmount.toFixed(0)), \r\n maxValue: +businessDecorationLimitAmount.toFixed(0),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessIncomePerMonth\", \r\n value: '0',\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDebtBurdenPerMonth\", \r\n value: '0',\r\n }));\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"decoration\", \r\n value: decoration,\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayValidateFields\", \r\n value: getValidateField('stay', decoration && stayCanTakeDecoration),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessValidateFields\", \r\n value: getValidateField('business', decoration),\r\n }));\r\n // dispatch(formsCalcDataChange({ \r\n // field: \"stayCanTakeDecoration\", \r\n // value: stayCanTakeDecoration,\r\n // }));\r\n }, [props.appliedCalcTypes.value]);\r\n\r\n\r\n\r\n function forcePositiveNumber(num, defaultValue) {\r\n var result = forceNumber(num, defaultValue);\r\n\r\n if(result < 0){\r\n return 0;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function forceNumber(num, defaultValue) {\r\n if (defaultValue === undefined) {\r\n defaultValue = 0;\r\n }\r\n\r\n if (typeof num !== 'number') {\r\n return defaultValue;\r\n }\r\n\r\n if (isNaN(num)) {\r\n return defaultValue;\r\n }\r\n\r\n return num;\r\n }\r\n\r\n function formsDataChange(tab, field, e) {\r\n console.log('change ' + field + ' = ' + e.target.value);\r\n\r\n let value = e.target.value;\r\n let numValue = parseFloat(value.replace(/,/g, ''));\r\n //const limit = 1000000000;\r\n //numValue = numValue > limit ? limit : numValue;\r\n\r\n // let maxValue = props[field].maxValue;\r\n\r\n // if (maxValue !== undefined) {\r\n // numValue = numValue > maxValue ? maxValue : numValue;\r\n // }\r\n\r\n if (numValue || numValue === 0) {\r\n //value = numValue.toLocaleString();\r\n\r\n let numStr = '' + numValue;\r\n\r\n if (props[field].maxDigit) {\r\n numStr = numStr.slice(0, props[field].maxDigit);\r\n }\r\n \r\n value = toThousandSeparated('' + numStr);\r\n } else {\r\n value = '';\r\n }\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: field, \r\n value: value,\r\n //errorMessage: VaridateCalcDataField(props, field, value),\r\n }));\r\n\r\n //recalculate(tab, field, value);\r\n }\r\n\r\n function formsBlur(tab, field, e) {\r\n console.log('blur ' + field);\r\n\r\n dispatch(CalcValidateChange({ \r\n field: field,\r\n errorMessage: VaridateCalcDataField(props, field, e.target.value),\r\n }));\r\n\r\n recalculate(tab, field, e.target.value);\r\n }\r\n\r\n function recalculate(tab, field, newValue) {\r\n var calFormData = {\r\n stayInstallmentYear: props.stayInstallmentYear.value,\r\n stayPropertyLimitAmount: props.stayPropertyLimitAmount.value,\r\n stayDecorationLimitAmount: props.stayDecorationLimitAmount.value,\r\n stayIncomePerMonth: props.stayIncomePerMonth.value,\r\n stayDebtBurdenPerMonth: props.stayDebtBurdenPerMonth.value,\r\n\r\n businessInstallmentYear: props.businessInstallmentYear.value,\r\n businessPropertyLimitAmount: props.businessPropertyLimitAmount.value,\r\n businessDecorationLimitAmount: props.businessDecorationLimitAmount.value,\r\n businessIncomePerMonth: props.businessIncomePerMonth.value,\r\n businessDebtBurdenPerMonth: props.businessDebtBurdenPerMonth.value,\r\n };\r\n\r\n calFormData[field] = newValue;\r\n\r\n var calHomeLoanSetting = props.calculatorHomeLoanSetting.value;\r\n var calLandSetting = props.calculatorLandSetting.value;\r\n var calSMESetting = props.calculatorSMESetting.value;\r\n \r\n if (tab === 'stay') {\r\n var stayInstallmentYear = Math.min(+getAmount(calFormData.stayInstallmentYear), props.stayInstallmentYear.maxValue);\r\n \r\n if (field === 'stayInstallmentYear') {\r\n if (calFormData.stayInstallmentYear !== '' && +getAmount(calFormData.stayInstallmentYear) > props.stayInstallmentYear.maxValue) {\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\", \r\n value: toThousandSeparated('' + stayInstallmentYear.toFixed(0)),\r\n note: 'ระยะเวลาผ่อนชำระสูงสุด ' + props.stayInstallmentYear.maxValue + ' ปี',\r\n }));\r\n } else {\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayInstallmentYear\",\r\n note: \"\",\r\n }));\r\n }\r\n }\r\n\r\n if(!validateCalcForm(tab, calFormData)){\r\n console.log('validate calc form failed!');\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n\r\n return;\r\n }\r\n\r\n var stayTotalInstallmentPerMonth;\r\n var stayTotalLimitAmount;\r\n var stayPropertyLimitAmount;\r\n var stayDecorationLimitAmount = 0;\r\n //var canTakeOnDecorationLoan;\r\n var stayCanTakeDecoration;\r\n var stayPropertyInstallmentPerMonth;\r\n var stayDecorationInstallmentPerMonth;\r\n\r\n if (props.appliedCalcTypes.value.forStay === props.calcTypes.Home) {\r\n //cal home loan\r\n var result = calHomeLoan({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calHomeLoanSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: +getAmount(calFormData.stayPropertyLimitAmount),\r\n B6_career: calHomeLoanSetting.B6Career,\r\n B7_age: +calHomeLoanSetting.B7Age,\r\n B9_propertyLoanYear: stayInstallmentYear,\r\n B10_salary: +getAmount(calFormData.stayIncomePerMonth),\r\n B11_deptBurdenPerMonth: +getAmount(calFormData.stayDebtBurdenPerMonth),\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n B20_decorationLoanAmount: +getAmount(calFormData.stayDecorationLimitAmount),\r\n B21_decorationLoanYear: stayInstallmentYear,\r\n calHomeLoanSetting: calHomeLoanSetting,\r\n });\r\n \r\n console.log('cal home loan result:', result);\r\n\r\n if(checkCalError(result, \"LackOfPayDeptAbility\")) {\r\n console.log('cal home loan: LackOfPayDeptAbility');\r\n\r\n stayTotalInstallmentPerMonth = 0;\r\n stayTotalLimitAmount = 0;\r\n stayPropertyLimitAmount = 0;\r\n stayDecorationLimitAmount = 0;\r\n stayPropertyInstallmentPerMonth = 0;\r\n stayDecorationInstallmentPerMonth = 0;\r\n\r\n showCalErrorPopup('ไม่ผ่านความสามารถการชำระหนี้');\r\n } else {\r\n stayTotalInstallmentPerMonth = forceNumber(result.B16_HLInstallmentPerMonth) + forceNumber(result.B26_HDInstallmentPerMonth);\r\n stayTotalLimitAmount = forceNumber(result.B14_HLPrimaryMaxLimit) + forceNumber(result.B24_HDPrimaryMaxLimit);\r\n stayPropertyLimitAmount = forceNumber(result.B14_HLPrimaryMaxLimit);\r\n stayDecorationLimitAmount = forceNumber(+result.B24_HDPrimaryMaxLimit);\r\n //canTakeOnDecorationLoan = result.B19_canTakeOnDecorationLoan;\r\n stayCanTakeDecoration = result.B19_canTakeOnDecorationLoan;\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B16_HLInstallmentPerMonth);\r\n stayDecorationInstallmentPerMonth = forceNumber(result.B26_HDInstallmentPerMonth);\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayCanTakeDecoration\", \r\n value: stayCanTakeDecoration,\r\n }));\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayValidateFields\", \r\n value: getValidateField('stay', props.decoration.value && stayCanTakeDecoration),\r\n }));\r\n }\r\n \r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationLimitAmount\", \r\n value: toThousandSeparated('' + stayDecorationLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n } else if (props.appliedCalcTypes.value.forStay === props.calcTypes.Land) {\r\n //cal land\r\n var result = calLand({\r\n B2_propertyPrice: props.definedPropertyPrice.value,\r\n B3_homeLoanType: calLandSetting.B3HomeLoanType,\r\n B5_propertyLoanAmount: +getAmount(calFormData.stayPropertyLimitAmount),\r\n B6_career: calLandSetting.B6Career,\r\n B7_age: +calLandSetting.B7Age,\r\n B9_propertyLoanYear: stayInstallmentYear,\r\n B10_salary: +getAmount(calFormData.stayIncomePerMonth),\r\n B11_deptBurdenPerMonth: +getAmount(calFormData.stayDebtBurdenPerMonth),\r\n B12_appraisalPrice: props.appraisalPrice.value,\r\n calLandSetting: calLandSetting,\r\n });\r\n \r\n console.log('cal land result:', result);\r\n\r\n if(checkCalError(result, \"LackOfPayDeptAbility\")) {\r\n console.log('cal land: LackOfPayDeptAbility');\r\n\r\n stayTotalInstallmentPerMonth = 0;\r\n stayTotalLimitAmount = 0;\r\n stayPropertyLimitAmount = 0;\r\n stayPropertyInstallmentPerMonth = 0;\r\n\r\n showCalErrorPopup('ไม่ผ่านความสามารถการชำระหนี้');\r\n } else {\r\n stayTotalInstallmentPerMonth = forceNumber(result.B16_installmentPerMonth);\r\n stayTotalLimitAmount = forceNumber(result.B14_primaryMaxLimit);\r\n stayPropertyLimitAmount = forceNumber(result.B14_primaryMaxLimit);\r\n //canTakeOnDecorationLoan = false;\r\n stayPropertyInstallmentPerMonth = forceNumber(result.B16_installmentPerMonth);\r\n }\r\n \r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayTotalLimitAmount\", \r\n value: toThousandSeparated('' + stayTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyLimitAmount\", \r\n value: toThousandSeparated('' + stayPropertyLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"stayPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + stayPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n }\r\n\r\n //props.stayDecorationLimitAmount.visible = canTakeOnDecorationLoan;\r\n } else if (tab === 'business') {\r\n var businessInstallmentYear = Math.min(+getAmount(calFormData.businessInstallmentYear), props.businessInstallmentYear.maxValue);\r\n\r\n if (field === 'businessInstallmentYear') {\r\n if (calFormData.businessInstallmentYear !== '' && +getAmount(calFormData.businessInstallmentYear) > props.businessInstallmentYear.maxValue) {\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessInstallmentYear\", \r\n value: toThousandSeparated('' + businessInstallmentYear.toFixed(0)),\r\n note: 'ระยะเวลาผ่อนชำระสูงสุด ' + props.businessInstallmentYear.maxValue + ' ปี',\r\n }));\r\n } else {\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessInstallmentYear\",\r\n note: \"\",\r\n }));\r\n }\r\n }\r\n\r\n if(!validateCalcForm(tab, calFormData)){\r\n console.log('validate calc form failed!');\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalLimitAmount\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationInstallmentPerMonth\", \r\n value: \"0\",\r\n }));\r\n\r\n return;\r\n }\r\n\r\n var resultSME = calPartnerSME({\r\n D10_propertyPrice: props.definedPropertyPrice.value,\r\n D12_propertyLoanAmount: Math.min(+getAmount(calFormData.businessPropertyLimitAmount), props.definedPropertyPrice.value),\r\n //D18_propertyType: props.smePropertyType.value,\r\n D20_appraisalPrice: props.appraisalPrice.value,\r\n D28_propertyLoanYear: businessInstallmentYear,\r\n D30_profitPerMonth: +getAmount(calFormData.businessIncomePerMonth),\r\n D32_deptBurdenPerMonth: +getAmount(calFormData.businessDebtBurdenPerMonth),\r\n //D37_decorationLoanAmount: +getAmount(calFormData.businessDecorationLimitAmount),\r\n calSMESetting: calSMESetting,\r\n });\r\n \r\n console.log('cal SME result:', resultSME);\r\n \r\n var businessTotalInstallmentPerMonth;\r\n var businessTotalLimitAmount;\r\n var businessPropertyLimitAmount;\r\n var businessDecorationLimitAmount;\r\n var businessPropertyInstallmentPerMonth;\r\n var businessDecorationInstallmentPerMonth;\r\n\r\n if (resultSME.D53_errorMessage !== \"\") {\r\n businessTotalInstallmentPerMonth = 0;\r\n businessTotalLimitAmount = 0;\r\n businessPropertyLimitAmount = 0;\r\n businessDecorationLimitAmount = 0;\r\n businessPropertyInstallmentPerMonth = 0;\r\n businessDecorationInstallmentPerMonth = 0;\r\n\r\n showCalErrorPopup('รายได้ที่แจ้งไม่เพียงพอต่อการชำระหนี้');\r\n } else {\r\n businessTotalInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth) + forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n businessTotalLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount) + forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n businessPropertyLimitAmount = forcePositiveNumber(resultSME.D44_propertyPrimaryMaxLoanAmount);\r\n businessDecorationLimitAmount = forcePositiveNumber(resultSME.D48_decorationPrimaryMaxLoanAmount);\r\n businessPropertyInstallmentPerMonth = forcePositiveNumber(resultSME.D46_propertyInstallmentPerMonth);\r\n businessDecorationInstallmentPerMonth = forcePositiveNumber(resultSME.D50_decorationInstallmentPerMonth);\r\n }\r\n\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessTotalInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessTotalLimitAmount\", \r\n value: toThousandSeparated('' + businessTotalLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyLimitAmount\", \r\n value: toThousandSeparated('' + businessPropertyLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationLimitAmount\", \r\n value: toThousandSeparated('' + businessDecorationLimitAmount.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessPropertyInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessPropertyInstallmentPerMonth.toFixed(0)),\r\n }));\r\n dispatch(formsCalcDataChange({ \r\n field: \"businessDecorationInstallmentPerMonth\", \r\n value: toThousandSeparated('' + businessDecorationInstallmentPerMonth.toFixed(0)),\r\n }));\r\n } else {\r\n throw new Error('Param \"tab\" has an invalid value.');\r\n }\r\n }\r\n\r\n function showCalErrorPopup(message) {\r\n props.openErrorPopup(message)\r\n }\r\n\r\n function checkCalError(calResult, errorCode) {\r\n return calResult.errors.filter(function(error){\r\n return error.errorCode === errorCode;\r\n }).length > 0;\r\n }\r\n\r\n function validateCalcForm(tab, formData) {\r\n var validateFields = [];\r\n\r\n if (tab === 'stay') {\r\n validateFields = props.stayValidateFields.value;\r\n\r\n // dispatch(formsCalcDataChange({ \r\n // field: \"stayInstallmentYear\",\r\n // note: \"\",\r\n // }));\r\n } else if (tab === 'business') {\r\n validateFields = props.businessValidateFields.value;\r\n\r\n // dispatch(formsCalcDataChange({ \r\n // field: \"businessInstallmentYear\",\r\n // note: \"\",\r\n // }));\r\n }\r\n\r\n const validateResults = validateFields.map(field => {\r\n var errorMessage = VaridateCalcDataField(props, field, formData[field]);\r\n\r\n dispatch(CalcValidateChange({ \r\n field: field,\r\n errorMessage: errorMessage,\r\n }));\r\n\r\n return errorMessage === '';\r\n });\r\n\r\n return validateResults.every(c => c);\r\n }\r\n\r\n function getValidateField(tab, decoration) {\r\n let validateField = [];\r\n\r\n if (tab === 'stay') {\r\n validateField = [\r\n 'stayInstallmentYear',\r\n 'stayPropertyLimitAmount',\r\n 'stayIncomePerMonth',\r\n 'stayDebtBurdenPerMonth',\r\n ];\r\n\r\n if (decoration) {\r\n validateField.push('stayDecorationLimitAmount');\r\n }\r\n } else if (tab === 'business') {\r\n validateField = [\r\n 'businessInstallmentYear',\r\n 'businessPropertyLimitAmount',\r\n 'businessIncomePerMonth',\r\n 'businessDebtBurdenPerMonth',\r\n ];\r\n\r\n if (decoration) {\r\n validateField.push('businessDecorationLimitAmount');\r\n }\r\n }\r\n\r\n return validateField;\r\n }\r\n\r\n function ErrorMessage(props) {\r\n return {props.message};\r\n }\r\n\r\n function Note(props) {\r\n return {props.message};\r\n }\r\n\r\n function tabClick(tab, e) {\r\n props.onTabClick(tab);\r\n }\r\n\r\n function handleChangeLimitButtonClick() {\r\n setIsEditMode(true);\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n

    คำนวณวงเงินกู้สินเชื่อทรัพย์มือสองเบื้องต้น

    \r\n
    \r\n
    วัตถุประสงค์การกู้ :
    \r\n
      \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ยอดผ่อนชำระต่อเดือน
    \r\n
    \r\n
    {props.stayTotalInstallmentPerMonth.value}
    \r\n
    บาท
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ยอดรวมวงเงินกู้
    \r\n
    {props.stayTotalLimitAmount.value} บาท
    \r\n
    \r\n
    \r\n
    ระยะเวลาผ่อนชำระ (สูงสุดไม่เกิน {props.stayInstallmentYear.maxValue} ปี)
    \r\n
    \r\n \r\n ปี\r\n
    \r\n \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    วงเงินทรัพย์
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินทรัพย์)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n\r\n
    \r\n
    รายได้ต่อเดือน
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    วงเงินตกแต่ง
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินตกแต่ง)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n \r\n
    \r\n
    ภาระหนี้
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    ยอดผ่อนชำระต่อเดือน
    \r\n
    \r\n
    {props.businessTotalInstallmentPerMonth.value}
    \r\n
    บาท
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ยอดรวมวงเงินกู้
    \r\n
    {props.businessTotalLimitAmount.value} บาท
    \r\n
    \r\n
    \r\n
    ระยะเวลาผ่อนชำระ (สูงสุดไม่เกิน {props.businessInstallmentYear.maxValue} ปี)
    \r\n
    \r\n \r\n ปี\r\n
    \r\n \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    วงเงินทรัพย์
    \r\n
    \r\n \r\n บาท{isEditMode && *}\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินทรัพย์)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n\r\n
    \r\n
    กำไรสุทธิต่อเดือน
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    วงเงินตกแต่ง
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    ยอดผ่อนต่อเดือน (วงเงินตกแต่ง)
    \r\n
    \r\n \r\n บาท\r\n
    \r\n
    \r\n \r\n
    \r\n
    ภาระหนี้
    \r\n
    \r\n \r\n บาท\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {\r\n isEditMode &&

    กรุณาระบุ “กำไรสุทธิต่อเดือน” และ “ภาระหนี้”
    (ถ้ามี) ให้เรียบร้อยก่อนระบุ “วงเงินทรัพย์”

    \r\n //
    *กรุณาระบุ \"กำไรสุทธิต่อเดือน\" และ \"ภาระหนี้\" (ถ้ามี) ให้เรียบร้อยก่อน ระบุ \"วงเงินทรัพย์\"
    \r\n }\r\n \r\n
    ผลการคำนวณดังกล่าวเป็นเพียงการประมาณการเบื้องต้นเท่านั้น การพิจารณาสินเชื่อเป็นไปตามข้อกำหนดและเงื่อนไขของธนาคาร
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n

    ผลการคำนวณวงเงินกู้เบื้องต้น

    \r\n
    \r\n
    \r\n

    วงเงินที่ต้องการ (บาท)

    \r\n \r\n \r\n
    \r\n
    \r\n

    ระยะเวลากู้ที่ต้องการ (ปี)

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    วงเงินกู้สูงสุด (บาท)

    \r\n
    2,268,000
    \r\n
    \r\n
    \r\n

    ยอดผ่อนต่อเดือน (บาท)

    \r\n
    12,000
    \r\n
    \r\n
    \r\n

    ผลการคำนวณดังกล่าวเป็นเพียงการประมาณการเบื้องต้นเท่านั้น การพิจารณาสินเชื่อเป็นไปตามข้อกำหนดและเงื่อนไขของธนาคาร

    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nfunction calHomeLoan(options) {\r\n var careers = ['employee', 'business_owner'];\r\n var homeLoanTypes = [\r\n 'home1',\r\n 'home2_with_home1_lessthan_2years',\r\n 'home2_with_home1_2years_or_more',\r\n 'home3_or_else'\r\n ];\r\n\r\n if (careers.indexOf(options.B6_career) === -1) {\r\n throw new Error('Param B6_career is invalid');\r\n }\r\n\r\n if (homeLoanTypes.indexOf(options.B3_homeLoanType) === -1) {\r\n throw new Error('Param B3_homeLoanType is invalid');\r\n }\r\n\r\n try {\r\n var errors = [];\r\n\r\n var ROUNDUP = formulajs.ROUNDUP;\r\n var ROUNDDOWN = formulajs.ROUNDDOWN;\r\n var PV = formulajs.PV;\r\n var PMT = formulajs.PMT;\r\n\r\n var B2_propertyPrice = options.B2_propertyPrice;\r\n var B3_homeLoanType = options.B3_homeLoanType;\r\n var B5_propertyLoanAmount = options.B5_propertyLoanAmount;\r\n var B6_career = options.B6_career;\r\n var B7_age = options.B7_age;\r\n var B9_propertyLoanYear = options.B9_propertyLoanYear;\r\n var B10_salary = options.B10_salary;\r\n var B11_deptBurdenPerMonth = options.B11_deptBurdenPerMonth;\r\n var B12_appraisalPrice = options.B12_appraisalPrice;\r\n var B20_decorationLoanAmount = options.B20_decorationLoanAmount;\r\n var B21_decorationLoanYear = options.B21_decorationLoanYear;\r\n var calHomeLoanSetting = options.calHomeLoanSetting;\r\n var F5_limitKBank = calHomeLoanSetting.LimitKBank / 100;\r\n var F15_MRR = calHomeLoanSetting.KBankMRR / 100;\r\n var F18_HLBaseRate = +calHomeLoanSetting.HLBaseRate;\r\n var F24_HDBaseRate = +calHomeLoanSetting.HDBaseRate;\r\n\r\n var F4_limitBot;\r\n\r\n if (B3_homeLoanType === 'home1') {\r\n if (B2_propertyPrice < 10000000) {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse1LessThan10MB;\r\n } else {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse1GreaterThan10MB;\r\n }\r\n } else if (B3_homeLoanType === 'home2_with_home1_2years_or_more') {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse2InstallGreaterThan2Years;\r\n } else if (B3_homeLoanType === 'home2_with_home1_lessthan_2years') {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse2InstallLessThan2Years;\r\n } else if (B3_homeLoanType === 'home3_or_else') {\r\n F4_limitBot = calHomeLoanSetting.LimitBotHouse3;\r\n } else {\r\n F4_limitBot = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF4LimitBotFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F4_limitBot = F4_limitBot / 100;\r\n\r\n var F6 = Math.min(F4_limitBot, F5_limitKBank);\r\n var B4_maxLimitFromPrice;\r\n\r\n if (ROUNDUP((B2_propertyPrice * F6), -3) > B2_propertyPrice) {\r\n B4_maxLimitFromPrice = B2_propertyPrice;\r\n } else {\r\n B4_maxLimitFromPrice = ROUNDUP((B2_propertyPrice * F6), -3);\r\n }\r\n\r\n var B8_maxLoanYear = Math.min((70 - B7_age), 30);\r\n var F8_salary;\r\n\r\n if (B10_salary < 30000) {\r\n F8_salary = calHomeLoanSetting.F8SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F8_salary = calHomeLoanSetting.F8Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F8_salary = calHomeLoanSetting.F8SalaryGreaterThan70000\r\n } else {\r\n F8_salary = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF8SalaryFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F8_salary = F8_salary / 100;\r\n\r\n var F9_entre;\r\n\r\n if (B10_salary < 30000) {\r\n F9_entre = calHomeLoanSetting.F9SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F9_entre = calHomeLoanSetting.F9Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F9_entre = calHomeLoanSetting.F9SalaryGreaterThan70000\r\n } else {\r\n F9_entre = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF9EntreFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F9_entre = F9_entre / 100;\r\n\r\n var F10;\r\n\r\n if (B6_career === 'employee') {\r\n F10 = F8_salary;\r\n } else if (B6_career === 'business_owner') {\r\n F10 = F9_entre;\r\n } else {\r\n F10 = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF10Failed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n var F11_Inst1 = ROUNDUP(B10_salary * F10, -2);\r\n var F12_Inst2 = F11_Inst1 - B11_deptBurdenPerMonth;\r\n var F19_HLRate = (F15_MRR - (F18_HLBaseRate / 100)) + 0.01;\r\n var B15_HLLoanableYear;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B15_HLLoanableYear = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B15_HLLoanableYear = Math.min(B8_maxLoanYear, B9_propertyLoanYear);\r\n }\r\n\r\n var F13_Limt = ROUNDDOWN(PV(F19_HLRate / 12, B15_HLLoanableYear * 12, -F12_Inst2), -3);\r\n var B14_HLPrimaryMaxLimit;\r\n var maxPropertyLimit;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B14_HLPrimaryMaxLimit = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n maxPropertyLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B14_HLPrimaryMaxLimit = Math.min(B4_maxLimitFromPrice, B5_propertyLoanAmount, F13_Limt, B12_appraisalPrice);\r\n maxPropertyLimit = Math.min(B4_maxLimitFromPrice, F13_Limt, B12_appraisalPrice);\r\n }\r\n\r\n var B16_HLInstallmentPerMonth;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B16_HLInstallmentPerMonth = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B16_HLInstallmentPerMonth = ROUNDUP(PMT(F19_HLRate / 12, B15_HLLoanableYear * 12, -B14_HLPrimaryMaxLimit), -2);\r\n }\r\n\r\n var F14_LTVMinusHL = Math.min(B12_appraisalPrice - B14_HLPrimaryMaxLimit, B4_maxLimitFromPrice * 0.1);\r\n var B19_HDMaxDecorationLimit = null;\r\n var B19_canTakeOnDecorationLoan = true;\r\n\r\n if (B2_propertyPrice >= 10000000) {\r\n B19_HDMaxDecorationLimit = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n B19_canTakeOnDecorationLoan = false;\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F14_LTVMinusHL >= 1000) {\r\n B19_HDMaxDecorationLimit = F14_LTVMinusHL;\r\n } else {\r\n B19_HDMaxDecorationLimit = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n B19_canTakeOnDecorationLoan = false;\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n }\r\n\r\n var F28_Inst2MinusB16 = F12_Inst2 - B16_HLInstallmentPerMonth;\r\n var F25_HDRate = (F15_MRR - (F24_HDBaseRate / 100)) + 0.01;\r\n var B25_HDLoanableYear;\r\n\r\n if (!B19_canTakeOnDecorationLoan) {\r\n B25_HDLoanableYear = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F28_Inst2MinusB16 < 1000) {\r\n B25_HDLoanableYear = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else if (B21_decorationLoanYear <= B15_HLLoanableYear) {\r\n B25_HDLoanableYear = B21_decorationLoanYear;\r\n } else {\r\n B25_HDLoanableYear = B15_HLLoanableYear;\r\n }\r\n\r\n var F29_Limit2 = ROUNDDOWN(PV(F25_HDRate / 12, B25_HDLoanableYear * 12, -F28_Inst2MinusB16), -3);\r\n var B24_HDPrimaryMaxLimit;\r\n var maxDecorationLimit;\r\n\r\n if (!B19_canTakeOnDecorationLoan) {\r\n B24_HDPrimaryMaxLimit = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n maxDecorationLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F28_Inst2MinusB16 < 1000) {\r\n B24_HDPrimaryMaxLimit = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n maxDecorationLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n if(B20_decorationLoanAmount !== null){\r\n B24_HDPrimaryMaxLimit = Math.min(B19_HDMaxDecorationLimit, B20_decorationLoanAmount, F29_Limit2);\r\n } else {\r\n B24_HDPrimaryMaxLimit = Math.min(B19_HDMaxDecorationLimit, F29_Limit2);\r\n }\r\n\r\n maxDecorationLimit = Math.min(B19_HDMaxDecorationLimit, F29_Limit2);\r\n }\r\n\r\n var B26_HDInstallmentPerMonth;\r\n\r\n if (!B19_canTakeOnDecorationLoan) {\r\n B26_HDInstallmentPerMonth = \"ไม่สามารถกู้วงเงินตกแต่ง\";\r\n\r\n errors.push({\r\n errorCode: 'UnableToTakeOnDecorationLoan',\r\n errorMessage: 'ไม่สามารถกู้วงเงินตกแต่ง',\r\n });\r\n } else if (F28_Inst2MinusB16 < 1000) {\r\n B26_HDInstallmentPerMonth = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B26_HDInstallmentPerMonth = ROUNDUP(PMT(F25_HDRate / 12, B25_HDLoanableYear * 12, -B24_HDPrimaryMaxLimit), -2);\r\n }\r\n\r\n var B28_HLLimit = Math.min(B4_maxLimitFromPrice, B12_appraisalPrice);\r\n var B29_HLInstallmentPerMonth = ROUNDUP(PMT(F19_HLRate / 12, B8_maxLoanYear * 12, -B28_HLLimit), -2);\r\n var B33_HDLimit = B2_propertyPrice * 0.1;\r\n var B34_HDInstallmentPerMonth = ROUNDUP(PMT(F25_HDRate / 12, B8_maxLoanYear * 12, -B33_HDLimit), -2);\r\n\r\n return {\r\n errors: errors,\r\n\r\n B4_maxLimitFromPrice: B4_maxLimitFromPrice,\r\n B8_maxLoanYear: B8_maxLoanYear,\r\n B14_HLPrimaryMaxLimit: B14_HLPrimaryMaxLimit,\r\n B15_HLLoanableYear: B15_HLLoanableYear,\r\n B16_HLInstallmentPerMonth: B16_HLInstallmentPerMonth,\r\n B19_HDMaxDecorationLimit: B19_HDMaxDecorationLimit,\r\n B19_canTakeOnDecorationLoan: B19_canTakeOnDecorationLoan,\r\n B24_HDPrimaryMaxLimit: B24_HDPrimaryMaxLimit,\r\n B25_HDLoanableYear: B25_HDLoanableYear,\r\n B26_HDInstallmentPerMonth: B26_HDInstallmentPerMonth,\r\n maxPropertyLimit: maxPropertyLimit,\r\n maxDecorationLimit: maxDecorationLimit,\r\n B28_HLLimit: B28_HLLimit,\r\n B29_HLInstallmentPerMonth: B29_HLInstallmentPerMonth,\r\n B33_HDLimit: B33_HDLimit,\r\n B34_HDInstallmentPerMonth: B34_HDInstallmentPerMonth,\r\n \r\n inputs: options,\r\n };\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return {\r\n errors: [\r\n {\r\n errorCode: null,\r\n errorMessage: '' + e,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nfunction calLand(options) {\r\n var careers = ['employee', 'business_owner'];\r\n var homeLoanTypes = [\r\n 'home1',\r\n 'home2_with_home1_lessthan_2years',\r\n 'home2_with_home1_2years_or_more',\r\n 'home3_or_else'\r\n ];\r\n\r\n if (careers.indexOf(options.B6_career) === -1) {\r\n throw new Error('Param B6_career is invalid');\r\n }\r\n\r\n if (homeLoanTypes.indexOf(options.B3_homeLoanType) === -1) {\r\n throw new Error('Param B3_homeLoanType is invalid');\r\n }\r\n\r\n try {\r\n var errors = [];\r\n\r\n var ROUNDUP = formulajs.ROUNDUP;\r\n var ROUNDDOWN = formulajs.ROUNDDOWN;\r\n var PV = formulajs.PV;\r\n var PMT = formulajs.PMT;\r\n\r\n var B2_propertyPrice = options.B2_propertyPrice;\r\n var B3_homeLoanType = options.B3_homeLoanType;\r\n var B5_propertyLoanAmount = options.B5_propertyLoanAmount;\r\n var B6_career = options.B6_career;\r\n var B7_age = options.B7_age;\r\n var B9_propertyLoanYear = options.B9_propertyLoanYear;\r\n var B10_salary = options.B10_salary;\r\n var B11_deptBurdenPerMonth = options.B11_deptBurdenPerMonth;\r\n var B12_appraisalPrice = options.B12_appraisalPrice;\r\n var calLandSetting = options.calLandSetting;\r\n var F5_limitKBank = calLandSetting.LimitKBank / 100;\r\n var F15_MRR = calLandSetting.KBankMRR / 100;\r\n var F18_baseRate = +calLandSetting.F18BaseRate;\r\n\r\n var F4_limitBot;\r\n\r\n if (B3_homeLoanType === 'home1') {\r\n if (B2_propertyPrice < 10000000) {\r\n F4_limitBot = calLandSetting.LimitBotHouse1LessThan10MB;\r\n } else {\r\n F4_limitBot = calLandSetting.LimitBotHouse1GreaterThan10MB;\r\n }\r\n } else if (B3_homeLoanType === 'home2_with_home1_2years_or_more') {\r\n F4_limitBot = calLandSetting.LimitBotHouse2InstallGreaterThan2Years;\r\n } else if (B3_homeLoanType === 'home2_with_home1_lessthan_2years') {\r\n F4_limitBot = calLandSetting.LimitBotHouse2InstallLessThan2Years;\r\n } else if (B3_homeLoanType === 'home3_or_else') {\r\n F4_limitBot = calLandSetting.LimitBotHouse3;\r\n } else {\r\n F4_limitBot = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF4LimitBotFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F4_limitBot = F4_limitBot / 100;\r\n\r\n var F6 = Math.min(F4_limitBot, F5_limitKBank);\r\n var B4_maxLimitFromPrice;\r\n\r\n if (ROUNDUP((B2_propertyPrice * F6), -3) > B2_propertyPrice) {\r\n B4_maxLimitFromPrice = B2_propertyPrice;\r\n } else {\r\n B4_maxLimitFromPrice = ROUNDUP((B2_propertyPrice * F6), -3);\r\n }\r\n\r\n var B8_maxLoanYear = Math.min((70 - B7_age), 10);\r\n var F8_salary;\r\n\r\n if (B10_salary < 30000) {\r\n F8_salary = calLandSetting.F8SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F8_salary = calLandSetting.F8Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F8_salary = calLandSetting.F8SalaryGreaterThan70000\r\n } else {\r\n F8_salary = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF8SalaryFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F8_salary = F8_salary / 100;\r\n\r\n var F9_entre;\r\n\r\n if (B10_salary < 30000) {\r\n F9_entre = calLandSetting.F9SalaryLessThan30000;\r\n } else if (B10_salary < 70001) {\r\n F9_entre = calLandSetting.F9Salary30000To70000;\r\n } else if (B10_salary >= 70001) {\r\n F9_entre = calLandSetting.F9SalaryGreaterThan70000\r\n } else {\r\n F9_entre = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF9EntreFailed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n F9_entre = F9_entre / 100;\r\n\r\n var F10;\r\n\r\n if (B6_career === 'employee') {\r\n F10 = F8_salary;\r\n } else if (B6_career === 'business_owner') {\r\n F10 = F9_entre;\r\n } else {\r\n F10 = \"\";\r\n\r\n errors.push({\r\n errorCode: 'CalculateF10Failed',\r\n errorMessage: null,\r\n });\r\n }\r\n\r\n var F11_Inst1 = ROUNDUP(B10_salary * F10, -2);\r\n var F12_Inst2 = F11_Inst1 - B11_deptBurdenPerMonth;\r\n var F19_rate = (F15_MRR + (F18_baseRate / 100)) + 0.01;\r\n var B15_loanableYear;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B15_loanableYear = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B15_loanableYear = Math.min(B8_maxLoanYear, B9_propertyLoanYear);\r\n }\r\n\r\n var F13_Limt = ROUNDDOWN(PV(F19_rate / 12, B15_loanableYear * 12, -F12_Inst2), -3);\r\n var B14_primaryMaxLimit;\r\n var maxPropertyLimit;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B14_primaryMaxLimit = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n maxPropertyLimit = null;\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B14_primaryMaxLimit = Math.min(B4_maxLimitFromPrice, B5_propertyLoanAmount, F13_Limt, B12_appraisalPrice);\r\n maxPropertyLimit = Math.min(B4_maxLimitFromPrice, F13_Limt, B12_appraisalPrice);\r\n }\r\n\r\n var B16_installmentPerMonth;\r\n\r\n if (F12_Inst2 < 1000) {\r\n B16_installmentPerMonth = \"ไม่ผ่านความสามารถการชำระหนี้\";\r\n\r\n errors.push({\r\n errorCode: 'LackOfPayDeptAbility',\r\n errorMessage: 'ไม่ผ่านความสามารถการชำระหนี้',\r\n });\r\n } else {\r\n B16_installmentPerMonth = ROUNDUP(PMT(F19_rate / 12, B15_loanableYear * 12, -B14_primaryMaxLimit), -2);\r\n }\r\n\r\n var B18_HLLimit = Math.min(B4_maxLimitFromPrice, B12_appraisalPrice);\r\n var B19_HLInstallmentPerMonth = ROUNDUP(PMT(F19_rate / 12, B8_maxLoanYear * 12, -B18_HLLimit), -2);\r\n\r\n return {\r\n errors: errors,\r\n\r\n B4_maxLimitFromPrice: B4_maxLimitFromPrice,\r\n B8_maxLoanYear: B8_maxLoanYear,\r\n B14_primaryMaxLimit: B14_primaryMaxLimit,\r\n B15_loanableYear: B15_loanableYear,\r\n B16_installmentPerMonth: B16_installmentPerMonth,\r\n maxPropertyLimit: maxPropertyLimit,\r\n B18_HLLimit: B18_HLLimit,\r\n B19_HLInstallmentPerMonth: B19_HLInstallmentPerMonth,\r\n \r\n inputs: options,\r\n };\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return {\r\n errors: [\r\n {\r\n errorCode: null,\r\n errorMessage: '' + e,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n\r\nfunction calPartnerSME(options) {\r\n try {\r\n var ROUND = formulajs.ROUND;\r\n var ROUNDUP = formulajs.ROUNDUP;\r\n\r\n var D10_propertyPrice = options.D10_propertyPrice;\r\n var D12_propertyLoanAmount = options.D12_propertyLoanAmount;\r\n var D20_appraisalPrice = options.D20_appraisalPrice;\r\n var D28_propertyLoanYear = options.D28_propertyLoanYear;\r\n var D30_profitPerMonth = options.D30_profitPerMonth;\r\n var D32_deptBurdenPerMonth = options.D32_deptBurdenPerMonth;\r\n var calSMESetting = options.calSMESetting;\r\n var I25_MRR = calSMESetting.Partner_C1_MRR / 100;\r\n var I26_LNRateForInstallmentSecured = calSMESetting.Partner_C2_LNRateForInstallmentSecured / 100;\r\n var I27_MinimumDSCR = +calSMESetting.Partner_C3_MinimumDSCR;\r\n var I28_NetProfitDeptRatioConfig = +calSMESetting.Partner_C4_NetProfitDeptRatioConfig;\r\n var I30_maxLoanYear = +calSMESetting.Partner_C6_MaxLoanYear;\r\n var I32_LTV = calSMESetting.Partner_C8_LTV / 100;\r\n var S15 = 0;\r\n\r\n var O14_finalTerm = Math.min(I30_maxLoanYear, D28_propertyLoanYear);\r\n var I17_profitPerMonth;\r\n\r\n if (D32_deptBurdenPerMonth === \"\" && D30_profitPerMonth === \"\") {\r\n I17_profitPerMonth = D12_propertyLoanAmount * ((I25_MRR + I26_LNRateForInstallmentSecured) / 12) / (1 - (Math.pow(1 + ((I25_MRR + I26_LNRateForInstallmentSecured) / 12), -(12 * O14_finalTerm)))) * I27_MinimumDSCR;\r\n } else {\r\n I17_profitPerMonth = D30_profitPerMonth;\r\n }\r\n\r\n var I18_deptBurdenPerMonth = +D32_deptBurdenPerMonth;\r\n var O17_debtRatio;\r\n\r\n try {\r\n if (I18_deptBurdenPerMonth === 0) {\r\n throw new Error('divide by zero');\r\n }\r\n\r\n if ((I17_profitPerMonth / I18_deptBurdenPerMonth - 1) <= I28_NetProfitDeptRatioConfig) {\r\n O17_debtRatio = \"No\";\r\n } else {\r\n O17_debtRatio = \"Yes\";\r\n }\r\n } catch (e) {\r\n O17_debtRatio = 0;\r\n }\r\n\r\n var I12_loanAmount = D12_propertyLoanAmount;\r\n var I11_finalPrice;\r\n\r\n if (D20_appraisalPrice < D10_propertyPrice) {\r\n I11_finalPrice = D20_appraisalPrice;\r\n } else {\r\n I11_finalPrice = D10_propertyPrice;\r\n }\r\n\r\n var O11_interestForIncomingDebt;\r\n\r\n if (I11_finalPrice > 0) {\r\n O11_interestForIncomingDebt = I25_MRR + I26_LNRateForInstallmentSecured;\r\n } else {\r\n O11_interestForIncomingDebt = \"\";\r\n }\r\n\r\n var S17_incomingDebt = (I12_loanAmount * (O11_interestForIncomingDebt / 12)) / (1 - (Math.pow(1 + (O11_interestForIncomingDebt / 12), -(O14_finalTerm * 12))));\r\n var V11_DSCR;\r\n\r\n try {\r\n if (O17_debtRatio === \"No\") {\r\n V11_DSCR = \"X\";\r\n } else {\r\n V11_DSCR = I17_profitPerMonth / (I18_deptBurdenPerMonth + S17_incomingDebt);\r\n }\r\n } catch(e) {\r\n V11_DSCR = 0;\r\n }\r\n\r\n var V13_maxRepayPerMonthCapability = I17_profitPerMonth / I27_MinimumDSCR;\r\n var V14_repayPerMonthCapability = V13_maxRepayPerMonthCapability - I18_deptBurdenPerMonth - S15;\r\n var V17_installmentLimit = V14_repayPerMonthCapability * ((1 / (O11_interestForIncomingDebt / 12)) - (1 / (O11_interestForIncomingDebt / 12 * Math.pow(1 + O11_interestForIncomingDebt / 12, O14_finalTerm * 12))));\r\n var Z13_limitOnPrice = I11_finalPrice * I32_LTV;\r\n var Z14_finalOffer;\r\n\r\n try {\r\n Z14_finalOffer = ROUND(Math.min(V17_installmentLimit, Z13_limitOnPrice, I12_loanAmount), -1);\r\n } catch (e) {\r\n Z14_finalOffer = \"\";\r\n }\r\n\r\n var AD11_limitDSCRNotPass;\r\n\r\n if (V11_DSCR < 1.2 && Z14_finalOffer > 0 && V11_DSCR !== \"X\") {\r\n AD11_limitDSCRNotPass = Z14_finalOffer;\r\n } else {\r\n AD11_limitDSCRNotPass = \"\";\r\n }\r\n\r\n var Z20_limitOnLorPorGor = I11_finalPrice * I32_LTV;\r\n var Z21_finalOfferLorPorGor;\r\n\r\n try {\r\n Z21_finalOfferLorPorGor = ROUND(Math.min(Z20_limitOnLorPorGor, I12_loanAmount, V17_installmentLimit), -1);\r\n } catch (e) {\r\n Z21_finalOfferLorPorGor = \"\";\r\n }\r\n\r\n var AD12_limitDSCRPass;\r\n\r\n if (V11_DSCR >= 1.2 && Z21_finalOfferLorPorGor > 0 && V11_DSCR !== \"X\") {\r\n AD12_limitDSCRPass = Z21_finalOfferLorPorGor;\r\n } else {\r\n AD12_limitDSCRPass = \"\";\r\n }\r\n\r\n var AE18_primaryMaxLoanAmount;\r\n\r\n if (Math.max(AD11_limitDSCRNotPass, AD12_limitDSCRPass) === 0) {\r\n AE18_primaryMaxLoanAmount = \"\";\r\n } else {\r\n AE18_primaryMaxLoanAmount = Math.max(AD11_limitDSCRNotPass, AD12_limitDSCRPass);\r\n }\r\n\r\n var D44_propertyPrimaryMaxLoanAmount = AE18_primaryMaxLoanAmount;\r\n\r\n var Z15_installmentPlusIntOffer = ( Z14_finalOffer * ((I25_MRR + I26_LNRateForInstallmentSecured) / 12)) / (1 - (Math.pow(1 + ((I25_MRR + I26_LNRateForInstallmentSecured) / 12), -(12 * O14_finalTerm))));\r\n var AE11_installmentDSCRNotPass;\r\n\r\n if (Z15_installmentPlusIntOffer <= 0 || AD11_limitDSCRNotPass === \"\") {\r\n AE11_installmentDSCRNotPass = \"\";\r\n } else {\r\n AE11_installmentDSCRNotPass = ROUND(Z15_installmentPlusIntOffer, -1);\r\n }\r\n\r\n var Z22_installmentPlusIntOffer = (Z21_finalOfferLorPorGor * ((I25_MRR + I26_LNRateForInstallmentSecured) / 12)) / (1 - (Math.pow(1 + ((I25_MRR + I26_LNRateForInstallmentSecured) / 12), -(12 * O14_finalTerm)))); \r\n var AE12_installmentDSCRPass;\r\n\r\n if (Z22_installmentPlusIntOffer <= 0 || AD12_limitDSCRPass === \"\") {\r\n AE12_installmentDSCRPass = \"\";\r\n } else {\r\n AE12_installmentDSCRPass = ROUNDUP(Z22_installmentPlusIntOffer, -2);\r\n }\r\n\r\n var AE22_installmentPerMonth;\r\n\r\n if (AE18_primaryMaxLoanAmount > 0) {\r\n //AE22_installmentPerMonth = VLOOKUP(AE18_primaryMaxLoanAmount, AD11_limitDSCRNotPass:AE12_installmentDSCRPass, 2, 0);\r\n if (AE18_primaryMaxLoanAmount === AD11_limitDSCRNotPass) {\r\n AE22_installmentPerMonth = AE11_installmentDSCRNotPass;\r\n } else if (AE18_primaryMaxLoanAmount === AD12_limitDSCRPass) {\r\n AE22_installmentPerMonth = AE12_installmentDSCRPass;\r\n } else {\r\n AE22_installmentPerMonth = \"\";\r\n }\r\n } else {\r\n AE22_installmentPerMonth = \"\";\r\n }\r\n\r\n var D46_propertyInstallmentPerMonth = AE22_installmentPerMonth;\r\n var AE20_loanableYear;\r\n\r\n if (V11_DSCR === \"X\" || O14_finalTerm === 0 || O14_finalTerm <= 0) {\r\n AE20_loanableYear = \"\";\r\n } else {\r\n AE20_loanableYear = O14_finalTerm;\r\n }\r\n\r\n var D56_loanableYear = AE20_loanableYear;\r\n var AD47;\r\n\r\n if (V11_DSCR === \"X\") {\r\n AD47 = \"รายได้ไม่เพียงพอต่อการชำระหนี้\";\r\n } else {\r\n AD47 = \"\";\r\n }\r\n\r\n var D53_errorMessage = AD47;\r\n var AD48;\r\n\r\n if (V11_DSCR === \"X\") {\r\n AD48 = \"ท่านสามารถก่อหนี้ได้สูงสุด\";\r\n } else {\r\n AD48 = \"\";\r\n }\r\n\r\n var C54_debtRecommendMessage = AD48;\r\n var AD49;\r\n\r\n if (V11_DSCR === \"X\") {\r\n AD49 = I17_profitPerMonth * 0.8;\r\n } else {\r\n AD49 = \"\";\r\n }\r\n\r\n var D54_debtRecommendAmount = AD49;\r\n\r\n return {\r\n errors: [],\r\n\r\n D44_propertyPrimaryMaxLoanAmount: D44_propertyPrimaryMaxLoanAmount,\r\n D46_propertyInstallmentPerMonth: D46_propertyInstallmentPerMonth,\r\n D56_loanableYear: D56_loanableYear,\r\n D53_errorMessage: D53_errorMessage,\r\n C54_debtRecommendMessage: C54_debtRecommendMessage,\r\n D54_debtRecommendAmount: D54_debtRecommendAmount,\r\n I30_maxLoanYear: I30_maxLoanYear,\r\n\r\n inputs: options,\r\n };\r\n } catch (e) {\r\n console.error(e);\r\n\r\n return {\r\n errors: [\r\n {\r\n errorCode: null,\r\n errorMessage: '' + e,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { PartnerHomeCalculatorTab } from \"./PartnerHomeCalculatorTab\";\r\nimport { PartnerSMECalculatorTab } from \"./PartnerSMECalculatorTab\";\r\nimport './partnerCalc.css';\r\n\r\nexport function PartnerCalculator(props) {\r\n const [calTab, setCalTab] = useState('stay');\r\n\r\n function smeTabClick(tab){\r\n console.log(\"smeTabClick: \" + tab);\r\n\r\n if(tab === 'stay'){\r\n setCalTab('stay');\r\n }\r\n }\r\n\r\n function homeTabClick(tab){\r\n console.log(\"homeTabClick: \" + tab);\r\n\r\n if(tab === 'business'){\r\n setCalTab('business');\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n}","import React from \"react\";\r\nimport Config from \"config\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\n\r\nexport const Breadcrumbs = React.memo((props) => { // propertyDetail\r\n return (\r\n <>\r\n
    \r\n \r\n หน้าหลัก\r\n \r\n \r\n \r\n ค้นหาทรัพย์สิน\r\n \r\n \r\n

    {props.TitlePageName}

    \r\n
    \r\n \r\n );\r\n}, areEqual);\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return prevProps.TitlePageName === nextProps.TitlePageName;\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { after, isMobile } from \"../common/Common\";\r\nimport { ModalDetail } from \"./common\";\r\nimport { prepareDataForProopertyBox } from \"../common/PropertyBox\";\r\nimport Config from \"config\";\r\n\r\nconst mediaURLPrefix = Config.mediaURLPrefix;\r\nconst defaultThumbnailURL = Config.defaultThumbnailURL;\r\n\r\nexport const GallerySlide = React.memo((props) => {\r\n let propertyDetail = { ...props.propertyDetail };\r\n if (propertyDetail.PropertyMediaes == \"\") {\r\n propertyDetail.PropertyMediaes = null;\r\n }\r\n const [slideImages, setslideImages] = useState([]);\r\n\r\n const onLoad = after(slideImages.length * 3, () => {\r\n initPageJs();\r\n });\r\n\r\n const ReaderChild = (list, componentClassName) => {\r\n if (componentClassName) {\r\n list = list.map((property, index) => {\r\n return (\r\n \r\n
    \r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n currentTarget.setAttribute(\"test\", \"test\");\r\n onLoad();\r\n }}\r\n alt={`${props.propertyName} ${index + 1}`}\r\n loading=\"lazy\"\r\n data-kbct=\"open_popup\"\r\n data-kblb=\"gallery\"\r\n data-kbgp=\"gallery\"\r\n data-kbsc=\"photo\"\r\n data-kbid={propertyDetail.PropertyID}\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n });\r\n } else {\r\n list = list.map((property, index) => {\r\n return (\r\n \r\n {/*
    */}\r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n currentTarget.setAttribute(\"test\", \"test\");\r\n onLoad();\r\n }}\r\n alt={`${props.propertyName} ${index + 1}`}\r\n loading=\"lazy\"\r\n data-kbct=\"open_popup\"\r\n data-kblb=\"gallery\"\r\n data-kbgp=\"gallery\"\r\n data-kbsc=\"photo\"\r\n data-kbid={propertyDetail.PropertyID}\r\n />\r\n
    \r\n {/*
    */}\r\n
    \r\n );\r\n });\r\n }\r\n return list;\r\n };\r\n\r\n useEffect(() => {\r\n if (props.list && props.list.length > 0) {\r\n var imageTypes;\r\n\r\n if (isMobile()) {\r\n imageTypes = [\"IMAGE-MOBILE\", \"MAP-MOBILE\"];\r\n } else {\r\n imageTypes = [\"IMAGE-PC\", \"MAP-PC\"];\r\n }\r\n\r\n setslideImages(\r\n props.list\r\n .filter(function (media) {\r\n return imageTypes.indexOf(media.MediaType) !== -1;\r\n })\r\n .sort(function (a, b) {\r\n if (a.MediaType < b.MediaType || a.MediaPath < b.MediaPath) {\r\n return -1;\r\n } else if (a.MediaType > b.MediaType || a.MediaPath > b.MediaPath) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n })\r\n );\r\n }\r\n }, [props.list]);\r\n console.log(\"GallerySlide Render length:\", slideImages.length);\r\n\r\n var {\r\n propertyDetailURL,\r\n thumbnailURL,\r\n location,\r\n propertyName,\r\n tag,\r\n PromotionPrice,\r\n Price,\r\n areaHtml,\r\n bedRoomHtml,\r\n propertyTypeHtml,\r\n PropertyIDFormat,\r\n IsPartner,\r\n } = prepareDataForProopertyBox(propertyDetail);\r\n\r\n if (slideImages.length > 0) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    {ReaderChild(slideImages, \"\")}
    \r\n\r\n
    \r\n
    \r\n
    \r\n 1\r\n /\r\n {slideImages.length}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    รายละเอียดทรัพย์

    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {ReaderChild(slideImages, \"swiper-zoom-container\")}\r\n
    \r\n \r\n \r\n
    \r\n {propertyDetail.TitlePageName}\r\n
    \r\n {/* {1\r\n /\r\n {slideImages.length}} */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {/* {
    \r\n
    \r\n

    รายละเอียดทรัพย์

    \r\n \r\n
    \r\n
    \r\n
    \r\n 1\r\n /\r\n {slideImages.length}\r\n
    \r\n
    \r\n \r\n แชร์\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n

    {location}

    \r\n
    \r\n
    \r\n

    {propertyTypeHtml}

    \r\n

    รหัส {propertyDetail.PropertyIDFormat}

    \r\n
    \r\n
    \r\n
    {bedRoomHtml}
    \r\n
    {areaHtml}
    \r\n
    \r\n
    \r\n {tag}\r\n
    \r\n {PromotionPrice}\r\n {Price}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n ติดต่อเจ้าหน้าที่/นัดหมายชมทรัพย์จริง\r\n \r\n \r\n ติดต่อเจ้าหน้าที่/นัดหมายเข้าชมทรัพย์\r\n \r\n \r\n เสนอราคาซื้อ\r\n \r\n
    \r\n
    \r\n
    \r\n
    } */}\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n}, areSlideImagesEqual);\r\n\r\nfunction areSlideImagesEqual(prevProps, nextProps) {\r\n if (prevProps.list?.length !== nextProps.list?.length) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n","import React, { useState } from \"react\";\r\nimport classnames from \"classnames/bind\";\r\nimport {\r\n addCommas,\r\n // addToFavoriteProperty, // from global\r\n // removeFromFavoriteProperty, // from global\r\n getCookie,\r\n} from \"../common/Common\";\r\nimport { CompareButtonWithText, CompareButton } from \"../Compare/Common\";\r\nimport Config from \"config\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\n\r\nexport const HeadingWrapper = React.memo((propertyDetail) => {\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    {propertyDetail.TitlePageName}

    \r\n
    \r\n

    \r\n รหัส {propertyDetail.PropertyIDFormat}{\" \"}\r\n {propertyDetail.PropertyIDPN && (\r\n {` (ref: ${propertyDetail.PropertyIDPN})`}\r\n )}\r\n

    \r\n \r\n \r\n \r\n

    เข้าชม {addCommas(propertyDetail.GaCountView, 0)} ครั้ง

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}, areEqual);\r\n\r\nconst PrintBtn = (propertyDetail) => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n

    พิมพ์

    \r\n
    \r\n );\r\n};\r\n\r\nconst ShareBtn = (propertyDetail) => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n

    แชร์

    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst FavoriteToggleButton = ({ propId }) => {\r\n const propertyId = propId ? propId : \"\";\r\n const [isFavorite, setIsFavorite] = useState(false);\r\n\r\n const handleToggle = () => {\r\n if (isFavorite) {\r\n removeFromFavoriteProperty(propertyId);\r\n } else {\r\n addToFavoriteProperty(propertyId);\r\n }\r\n setIsFavorite(!isFavorite);\r\n };\r\n\r\n // Check if the property is already in the 'favoriteProperty' list\r\n const isPropertyInFavorites = () => {\r\n if (propertyId) {\r\n const favoriteProperty = getCookie(\"favoriteProperty\") || \"\";\r\n const favoriteList = favoriteProperty.split(\",\");\r\n return favoriteList.includes(propertyId.toString());\r\n }\r\n };\r\n\r\n // Set the initial state based on whether the property is in the 'favoriteProperty' list\r\n useState(() => {\r\n setIsFavorite(isPropertyInFavorites());\r\n }, [propertyId]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n

    ถูกใจ

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return prevProps.TitlePageName === nextProps.TitlePageName;\r\n}\r\n","import {\r\n GoogleMap,\r\n InfoWindow,\r\n Marker,\r\n useJsApiLoader,\r\n} from \"@react-google-maps/api\";\r\nimport Config from \"config\";\r\nimport React, { useState } from \"react\";\r\nimport { prepareDataForProopertyBox } from \"../common/PropertyBox\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst mediaURLPrefix = Config.mediaURLPrefix;\r\nconst defaultThumbnailURL = Config.defaultThumbnailURL;\r\nconst $ = window.$;\r\n\r\nconst containerStyle = {\r\n width: \"100%\",\r\n height: \"100%\",\r\n};\r\n\r\nconst GMap = (props) => {\r\n if (!props.PropertiesInfoRelated) {\r\n console.log(\"No PropertiesInfoRelated\");\r\n return <>;\r\n }\r\n // if (!props.Latitude || props.Longtitude) {\r\n // return <>;\r\n // }\r\n const { isLoaded } = useJsApiLoader({\r\n googleMapsApiKey: Config.googleMapsApiKey, //\"AIzaSyA0uJQ7h2b5odArgx9eK08v7pyx6gEqWsk\",//\"AIzaSyCuSBXCxCZDt6h33hXun8k5j9Dgadj47kE\",\r\n });\r\n\r\n const [center, setCenter] = useState({\r\n lat: parseFloat(props.Latitude),\r\n lng: parseFloat(props.Longtitude),\r\n });\r\n\r\n const [map, setMap] = React.useState(null);\r\n\r\n const [mainPin, setMainPin] = React.useState({\r\n url: \"/SiteCollectionDocuments/assets/PFS2022/pages/detail/img/marker.png\",\r\n size: { height: 34.15, width: 45.68 },\r\n scaledSize: { height: 34.15, width: 45.68 },\r\n anchor: { x: 0, y: 45.68 },\r\n });\r\n\r\n const [pin, setPin] = React.useState({\r\n url: \"/SiteCollectionDocuments/assets/PFS2022/pages/detail/img/marker-2.png\",\r\n size: { height: 17.45, width: 26 },\r\n scaledSize: { height: 17.45, width: 26 },\r\n anchor: { x: 0, y: 26 },\r\n });\r\n\r\n const [activeMarker, setActiveMarker] = useState(null);\r\n\r\n const handleActiveMarker = (marker) => {\r\n console.log(\"handleMarker\", marker);\r\n if (marker === activeMarker) {\r\n return;\r\n }\r\n setActiveMarker(marker);\r\n };\r\n\r\n // useEffect(()=>{\r\n // handleActiveMarker(props.PropertyID)\r\n // },[props.PropertyID])\r\n\r\n const renderMarker = (props) => {\r\n if (props.PropertiesInfoRelated) {\r\n return props.PropertiesInfoRelated.map((item, index) => {\r\n return (\r\n handleActiveMarker(item.PropertyID)}\r\n icon={pin}\r\n >\r\n {activeMarker === item.PropertyID ? (\r\n setActiveMarker(null)}>\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n });\r\n }\r\n return <>;\r\n };\r\n\r\n const onLoad = React.useCallback(\r\n function callback(map) {\r\n // const bounds = new google.maps.LatLngBounds();\r\n // if (props.PropertiesInfoRelated) {\r\n // props.PropertiesInfoRelated.forEach(({ Latitude, Longtitude }) => bounds.extend({ Latitude, Longtitude }));\r\n // }\r\n // map.fitBounds(bounds);\r\n const mainPin = {\r\n url: \"/SiteCollectionDocuments/assets/PFS2022/pages/detail/img/marker.png\",\r\n size: new google.maps.Size(34.15, 45.68),\r\n scaledSize: new google.maps.Size(34.15, 45.68),\r\n anchor: new google.maps.Point(0, 45.68),\r\n };\r\n const pin = {\r\n url: \"/SiteCollectionDocuments/assets/PFS2022/pages/detail/img/marker-2.png\",\r\n size: new google.maps.Size(17.45, 26),\r\n scaledSize: new google.maps.Size(17.45, 26),\r\n anchor: new google.maps.Point(0, 26),\r\n };\r\n\r\n setMainPin(mainPin);\r\n setPin(pin);\r\n\r\n var controlDiv = $(`
    \r\n
    \r\n \"ทรัพย์สินปัจจุบันที่เลือก\"\r\n : ทรัพย์สินปัจจุบันที่เลือก\r\n
    \r\n
    \r\n \"ทรัพย์สินปัจจุบันที่เลือก\"\r\n : ทรัพย์สินใกล้เคียง\r\n
    \r\n
    `);\r\n map.controls[google.maps.ControlPosition.LEFT_BOTTOM].push(controlDiv[0]);\r\n handleActiveMarker(props.PropertyID);\r\n setMap(map);\r\n },\r\n [props.PropertiesInfoRelated]\r\n );\r\n\r\n function makeid(length) {\r\n var result = \"\";\r\n\r\n var characters =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n\r\n var charactersLength = characters.length;\r\n\r\n for (var i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n console.log(\"Google map render\");\r\n if (!isLoaded) return <>;\r\n\r\n return (\r\n setActiveMarker(null)}\r\n >\r\n handleActiveMarker(props.PropertyID)}\r\n icon={mainPin}\r\n >\r\n {activeMarker === props.PropertyID ? (\r\n setActiveMarker(null)}>\r\n \r\n \r\n ) : null}\r\n \r\n {renderMarker(props)}\r\n \r\n );\r\n};\r\n//, arePropertiesInfoRelatedEqual)\r\n\r\nexport const MyGoogleMap = React.memo(GMap, arePropertiesInfoRelatedEqual);\r\n\r\nfunction arePropertiesInfoRelatedEqual(prevProps, nextProps) {\r\n if (\r\n prevProps.PropertiesInfoRelated?.length !==\r\n nextProps.PropertiesInfoRelated?.length\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nconst RenderInfoWindow = (property) => {\r\n var {\r\n propertyDetailURL,\r\n thumbnailURL,\r\n location,\r\n propertyName,\r\n tag,\r\n PromotionPrice,\r\n Price,\r\n areaHtml,\r\n bedRoomHtml,\r\n propertyTypeHtml,\r\n PropertyIDFormat,\r\n } = prepareDataForProopertyBox(property);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n }}\r\n alt=\"Asset\"\r\n loading=\"lazy\"\r\n />\r\n
    \r\n
    \r\n \r\n

    {propertyName}

    \r\n
    \r\n {location && (\r\n
    \r\n \r\n

    {location}

    \r\n
    \r\n )}\r\n
    \r\n {tag}\r\n
    \r\n {PromotionPrice}\r\n {Price}\r\n
    \r\n
    \r\n {/*

    รหัส {PropertyIDFormat}

    \r\n
    \r\n {tag}\r\n
    \r\n {PromotionPrice}\r\n {Price}\r\n
    \r\n\r\n
    */}\r\n
    \r\n
    \r\n
    \r\n \r\n mapNavButtonClicked(property.Latitude, property.Longtitude)\r\n }\r\n data-kbct=\"link_click\"\r\n data-kblb=\"see_route\"\r\n data-kbgp=\"detail\"\r\n data-kbsc=\"detail\"\r\n >\r\n กดดูเส้นทาง\r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nfunction mapNavButtonClicked(Latitude, Longtitude) {\r\n if (!navigator.geolocation) {\r\n window.openErrorPopup(\"เว็บเบราว์เซอร์ของท่านไม่สามารถใช้งานฟีเจอร์นี้ได้\");\r\n }\r\n\r\n navigator.geolocation.getCurrentPosition(\r\n function (position) {\r\n var latitude = position.coords.latitude;\r\n var longitude = position.coords.longitude;\r\n var url =\r\n \"https://www.google.com/maps/dir/?api=1&origin=\" +\r\n latitude +\r\n \",\" +\r\n longitude +\r\n \"&destination=\" +\r\n Latitude +\r\n \",\" +\r\n Longtitude +\r\n \"&travelmode=driving\";\r\n\r\n //var a = $('').attr('href', url).attr('target', '_blank').css('display', 'none');\r\n //$('body').append(a);\r\n //a[0].click();\r\n\r\n window.open(url, \"_blank\");\r\n\r\n // $('#mapLink').attr('href', url)[0].click();\r\n },\r\n function (err) {\r\n var alertMessage;\r\n\r\n if (err.code === 1) {\r\n alertMessage =\r\n \"โปรดตั้งค่าเพื่ออนุญาตให้หน้าเว็บดึงตำแหน่งของท่าน แล้วลองใหม่อีกครั้ง\";\r\n } else {\r\n alertMessage = \"ไม่สามารถดึงตำแหน่งปัจจุบันของท่านได้\";\r\n }\r\n\r\n window.openErrorPopup(alertMessage);\r\n }\r\n );\r\n}\r\n","import classnames from \"classnames/bind\";\r\nimport Config from \"config\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { CookiesProvider, useCookies } from \"react-cookie\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { Provider, useDispatch, useSelector } from \"react-redux\";\r\nimport {\r\n after,\r\n copyObject,\r\n getApiDataAsync,\r\n getArea,\r\n getPathFromUrl,\r\n getPropertyType,\r\n getPropertyTypeEn,\r\n isMobile,\r\n kloader,\r\n postApiDataAsync,\r\n scrollToValue,\r\n showAreaValue,\r\n showBedAndBath,\r\n showUseableAreaValue,\r\n addQueryString,\r\n getQueryStringParameter,\r\n} from \"../common/Common\";\r\nimport { DropLeadInputField, DropLeadSelectList } from \"../common/Component\";\r\nimport { HeaderWithSearch } from \"../common/Header\";\r\nimport { PropertyList, checkIsPartner } from \"../common/PropertyBox\";\r\nimport configureStore from \"../store\";\r\nimport {\r\n DropleadListChange,\r\n DropleadValidateChange,\r\n formsCalcDataChange,\r\n formsDropleadDataChange,\r\n searchResultDataChange,\r\n updatePropertyDetail,\r\n updateSearchResultList,\r\n} from \"../stores/propertySlice\";\r\nimport { CalculatorsV2 } from \"./calculatorsV2\";\r\nimport { PartnerCalculator } from \"./PartnerCalculator\";\r\nimport { VaridateDropleadDataField, getAmount } from \"./ValidateHelper\";\r\n\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\n\r\nimport moment from \"moment\";\r\nimport { LoginFooter } from \"../common/LoginFooter\";\r\nimport { auctionDetailLink } from \"./auctionConstants\";\r\nimport { Breadcrumbs } from \"./Breadcrumbs\";\r\nimport {\r\n AnnouncementText,\r\n DetailWrapper,\r\n PartnerDetail,\r\n PriceWrapper,\r\n PrivacyText,\r\n PropertyDetailsCondition,\r\n PropertyInfoTable,\r\n PropertyNearByTabList2024,\r\n PropertyRemark,\r\n ShareConent,\r\n TableDetail,\r\n TagBadgeWrapper,\r\n TagPropertiesWrapper,\r\n getLocation,\r\n} from \"./common\";\r\nimport { GallerySlide } from \"./GallerySlide\";\r\nimport { HeadingWrapper } from \"./HeadingWrapper\";\r\nimport { IdeaDecoration } from \"./IdeaDecoration\";\r\nimport \"./index.css\";\r\nimport { MyGoogleMap } from \"./NewGoogleMap\";\r\n\r\nconst store = configureStore();\r\n\r\nconst mediaURLPrefix = Config.mediaURLPrefix;\r\nconst defaultThumbnailURL = Config.defaultThumbnailURL;\r\nconst $ = window.$;\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst placeTypes = Config.placeTypes;\r\nconst backendNPAURL = Config.backendNPAURL;\r\nconst ReCAPTCHASiteKey = Config.ReCAPTCHASiteKey;\r\n\r\nconst regexForReplace = Object.freeze({\r\n thaiEngWithSpace: /[^A-Za-z\\u0E01-\\u0E3A\\u0E40-\\u0E4D\\s]/g,\r\n numberOnly: /[^0-9]/g,\r\n emojiRegEx:\r\n /([\\uE000-\\uF8FF]|\\uD83C[\\uDC00-\\uDFFF]|\\uD83D[\\uDC00-\\uDFFF]|[\\u2694-\\u2697]|\\uD83E[\\uDD10-\\uDD5D])/g,\r\n});\r\n\r\nfunction dmyHmsToDateObj(str) {\r\n var dateTimeParts = str.split(\"T\");\r\n var dateParts = dateTimeParts[0].split(\"-\");\r\n var timeParts = dateTimeParts[1].split(\":\");\r\n\r\n return new Date(\r\n +dateParts[0],\r\n +dateParts[1] - 1,\r\n +dateParts[2],\r\n +timeParts[0],\r\n +timeParts[1],\r\n +timeParts[2]\r\n );\r\n}\r\n\r\nconst propertyForAuction = [\r\n \"028807181\",\r\n \"028808438\",\r\n \"028811133\",\r\n \"028810424\",\r\n \"028811240\",\r\n \"038804499\",\r\n \"038805142\",\r\n \"038805197\",\r\n \"038804742\",\r\n \"038804259\",\r\n \"058801656\",\r\n \"058802203\",\r\n \"058802285\",\r\n \"058802295\",\r\n \"058802296\",\r\n \"038805536\",\r\n];\r\nconst auctionTime = [\r\n [\r\n dmyHmsToDateObj(\"2024-05-02T00:00:00\"),\r\n dmyHmsToDateObj(\"2024-05-18T16:00:00\"),\r\n ],\r\n [\r\n dmyHmsToDateObj(\"2024-04-28T00:00:00\"),\r\n dmyHmsToDateObj(\"2024-04-30T23:00:00\"),\r\n ], // for test\r\n];\r\n\r\nconst currentlyInAuction = (propertyId) => {\r\n if (propertyForAuction.indexOf(propertyId) != -1) {\r\n var time = new Date();\r\n var result = null;\r\n auctionTime.some((range) => {\r\n return time >= range[0] && time < range[1]\r\n ? ((result = range), true)\r\n : false;\r\n });\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\n// axios.defaults.headers.common['Authorization'] = store.getState().Token;\r\n//process.env.API_ROOT_URL\r\n\r\n// distance = 10000\r\n\r\nconst PropertyGallery = React.memo((props) => {\r\n const [slideImages, setslideImages] = useState([]);\r\n\r\n const onLoad = after(slideImages.length * 3, () => {\r\n initPageJs();\r\n });\r\n\r\n const ReaderChild = (list, componentClassName) => {\r\n list = list.map((property, index) => {\r\n return (\r\n \r\n
    \r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n currentTarget.setAttribute(\"test\", \"test\");\r\n onLoad();\r\n }}\r\n alt={`${props.propertyName} ${index + 1}`}\r\n loading=\"lazy\"\r\n />\r\n
    \r\n
    \r\n );\r\n });\r\n return list;\r\n };\r\n\r\n useEffect(() => {\r\n if (props.list && props.list.length > 0) {\r\n var imageTypes;\r\n\r\n if (isMobile()) {\r\n imageTypes = [\"IMAGE-MOBILE\", \"MAP-MOBILE\"];\r\n } else {\r\n imageTypes = [\"IMAGE-PC\", \"MAP-PC\"];\r\n }\r\n\r\n setslideImages(\r\n props.list\r\n .filter(function (media) {\r\n return imageTypes.indexOf(media.MediaType) !== -1;\r\n })\r\n .sort(function (a, b) {\r\n if (a.MediaType < b.MediaType || a.MediaPath < b.MediaPath) {\r\n return -1;\r\n } else if (a.MediaType > b.MediaType || a.MediaPath > b.MediaPath) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n })\r\n );\r\n }\r\n }, [props.list]);\r\n console.log(\"PropertyGallery Render len:\", slideImages.length);\r\n if (slideImages.length > 0) {\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n {ReaderChild(slideImages, \"gallery-img\")}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n ดูรูปทั้งหมด\r\n \r\n
    \r\n
    \r\n
    \r\n {ReaderChild(slideImages, \"gallery-sm-img\")}\r\n
    \r\n \r\n
    \r\n \r\n

    \r\n นัดหมาย\r\n
    \r\n เข้าชมทรัพย์\r\n

    \r\n
    \r\n
    \r\n\r\n scrollToValue($(\"#property-gallery\").height())}\r\n className=\"pxtm-click-navMenu gallery-sm-more show-lg mousePointer\"\r\n >\r\n \r\n

    \r\n นัดหมาย\r\n
    \r\n เข้าชมทรัพย์\r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {ReaderChild(slideImages, \"swiper-zoom-container\")}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n}, areSlideImagesEqual);\r\n\r\nfunction areSlideImagesEqual(prevProps, nextProps) {\r\n if (prevProps.list?.length !== nextProps.list?.length) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nconst DetailPage = () => {\r\n const [propertyDetail, isLike, calcDetail, dropleadDetail, searchFilter] =\r\n useSelector((state) => [\r\n state.property.propertyDetail,\r\n state.property.propertyDetail.Like,\r\n state.property.calcDetail,\r\n state.property.dropleadDetail,\r\n state.property.searchFilter,\r\n ]);\r\n\r\n const closePageStartTime = dmyHmsToDateObj(\"2023-12-14T17:00:00\");\r\n const closePageEndTime = dmyHmsToDateObj(\"2023-12-15T08:00:00\");\r\n\r\n const [enableOfferLink, setEnableOfferLink] = useState(true);\r\n const [enableDropleadLink, setEnableDropleadLink] = useState(true);\r\n\r\n const [isAuction, setIsAuction] = useState(false);\r\n\r\n useEffect(() => {\r\n var currentTime = new Date();\r\n\r\n if (currentTime >= closePageStartTime && currentTime < closePageEndTime) {\r\n setEnableOfferLink(false);\r\n //setEnableDropleadLink(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (propertyDetail.PropertyID) {\r\n setIsAuction(currentlyInAuction(propertyDetail.PropertyID));\r\n }\r\n }, [propertyDetail.PropertyID]);\r\n\r\n const [showNaCitizenId, setShowNaCitizenId] = useState(false);\r\n const [hasCustomerInfo, setHasCustomerInfo] = useState(false);\r\n const [fbNpaList, setFbNpaList] = useState({});\r\n\r\n const [showMobileMap, setShowMobileMap] = useState(false);\r\n\r\n const recaptchaRef = React.createRef();\r\n\r\n const dispatch = useDispatch();\r\n const [cookies, setCookie] = useCookies();\r\n\r\n let tempDataDetail = {\r\n AssetInfoTH: \"\",\r\n AddressNoTH: \"\",\r\n BuildingTH: \"\",\r\n FloorTH: \"\",\r\n VillageTH: \"\",\r\n SoiTH: \"\",\r\n RoadTH: \"\",\r\n TambonName: \"\",\r\n AmphurName: \"\",\r\n ProvinceName: \"\",\r\n location: \"\",\r\n PropertyTypeName: \"\",\r\n Bedroom: \"\",\r\n Bathroom: \"\",\r\n SellPrice: \"\",\r\n PromotionPrice: \"\",\r\n AdjustPrice: \"\",\r\n PromotionName: \"\",\r\n PromotionRemark: \"\",\r\n PropertyIDFormat: \"\",\r\n PropertyID: \"\",\r\n Area: \"\",\r\n AreaValue: \"\",\r\n UseableArea: \"\",\r\n PropertyMediaes: \"\",\r\n GAScore: \"\",\r\n GaCountView: \"\",\r\n Like: \"\",\r\n IsNew: \"\",\r\n CategoryGroup: \"\",\r\n };\r\n\r\n function getValue(value) {\r\n return value && value !== \"-\" ? value : \"\";\r\n }\r\n\r\n function makeAnOfferClick() {\r\n if (!enableOfferLink) {\r\n enablePageLink();\r\n return;\r\n }\r\n kloader();\r\n makeAnOffer();\r\n return;\r\n\r\n //open pop up\r\n $(\"#confirm-data-modal\").css({\r\n display: \"flex\",\r\n });\r\n }\r\n\r\n function enablePageLink() {\r\n var m = moment(closePageEndTime).locale(\"th\");\r\n const closePopUpText = `ขออภัย
    เนื่องจากธนาคารกสิกรไทยอยู่ในระหว่างปรับปรุงระบบ มีผลทำให้ไม่สามารถใช้งานได้ ท่านสามารถใช้งานได้อีกครั้งวันที่ ${m.format(\r\n \"LLL\"\r\n )}น. ขออภัยในความไม่สะดวก`;\r\n openErrorPopup(closePopUpText);\r\n }\r\n\r\n function makeAnOffer() {\r\n if (propertyDetail.PropertyID) {\r\n const leadby = getQueryStringParameter(\"leadby\");\r\n\r\n const queryParams = {\r\n propID: propertyDetail.PropertyID,\r\n PropertyIDFormat: propertyDetail.PropertyIDFormat,\r\n PropertyTypeName: propertyDetail.PropertyTypeName,\r\n ...(leadby && { leadby: leadby }),\r\n };\r\n\r\n const queryString = addQueryString(queryParams);\r\n\r\n const urlWithQuery = `${pagesLink.offer}${queryString}`;\r\n\r\n window.open(urlWithQuery, \"_self\");\r\n\r\n // window.open(\r\n // pagesLink.offer +\r\n // `?propID=${propertyDetail.PropertyID}&PropertyIDFormat=${propertyDetail.PropertyIDFormat}&PropertyTypeName=${propertyDetail.PropertyTypeName}`,\r\n // \"_self\"\r\n // );\r\n } else {\r\n console.log(\"Not found PropertyID (makeAnOffer)\");\r\n }\r\n }\r\n\r\n function cancelMakeAnOffer() {\r\n $(\"#confirm-data-modal\").css({\r\n display: \"\",\r\n });\r\n }\r\n\r\n function likeThisProperty() {\r\n var temp = JSON.parse(JSON.stringify(propertyDetail));\r\n temp.Like = !temp.Like;\r\n dispatch(updatePropertyDetail({ value: temp }));\r\n }\r\n\r\n function getNearByPlaceByGroupCode(TypeCode, placeList) {\r\n return placeList.filter((x) => x.PlaceType === TypeCode);\r\n }\r\n\r\n function genNearByPlaces(NearbyPlaces) {\r\n let placeTypesList = copyObject(placeTypes);\r\n\r\n placeTypesList.map((group) => {\r\n if (typeof group.TypeCode !== \"string\") {\r\n group.places = [];\r\n group.TypeCode.forEach((TypeCode) => {\r\n group.places = group.places.concat(\r\n getNearByPlaceByGroupCode(TypeCode, NearbyPlaces)\r\n );\r\n });\r\n } else {\r\n group.places = getNearByPlaceByGroupCode(group.TypeCode, NearbyPlaces);\r\n }\r\n });\r\n\r\n // get only 4\r\n placeTypesList = placeTypesList.filter((x) => x.places.length).slice(0, 4);\r\n\r\n // Sort Distance Asc\r\n placeTypesList.forEach((x) => {\r\n x.places = x.places.sort((a, b) => a.Distance - b.Distance);\r\n });\r\n return placeTypesList;\r\n }\r\n\r\n function dropleadDataChange(field, value) {\r\n let errorMessage = \"\";\r\n switch (field) {\r\n case \"naSalary\":\r\n const limit = 1000000000;\r\n let tempValue = parseFloat(value.replace(/,/g, \"\"));\r\n tempValue = tempValue > limit ? limit : tempValue;\r\n if (tempValue || tempValue === 0) {\r\n value = tempValue.toLocaleString();\r\n } else {\r\n value = \"\";\r\n }\r\n break;\r\n case \"juJuristicId\":\r\n value = value.replace(regexForReplace.numberOnly, \"\");\r\n value = value.slice(0, 13);\r\n break;\r\n case \"phone\":\r\n case \"confirmphone\":\r\n value = value.replace(regexForReplace.numberOnly, \"\");\r\n value = value.slice(0, 10);\r\n break;\r\n // case 'select':\r\n case \"availableTime\":\r\n case \"naCareer\":\r\n errorMessage = VaridateDropleadDataField(dropleadDetail, field, value);\r\n break;\r\n default:\r\n break;\r\n }\r\n console.log(\"on change\", field, value, errorMessage);\r\n dispatch(formsDropleadDataChange({ field, value, errorMessage }));\r\n }\r\n\r\n function dropleadBlur(field, value) {\r\n console.log(field, value);\r\n\r\n const errorMessage = VaridateDropleadDataField(\r\n dropleadDetail,\r\n field,\r\n value\r\n );\r\n\r\n dispatch(formsDropleadDataChange({ field, value, errorMessage }));\r\n if (!errorMessage && value && dropleadDetail.usertype.value !== \"ju\") {\r\n let validateField = [\"phone\", \"confirmphone\", \"email\"];\r\n validateField = validateField.filter((x) => x !== field);\r\n const validates = validateField.map((field) => {\r\n const result =\r\n dropleadDetail[field].value && !dropleadDetail[field].errorMessage;\r\n return result;\r\n });\r\n const valid = validates.every((c) => c);\r\n\r\n setShowNaCitizenId(valid);\r\n }\r\n }\r\n\r\n function dropLeadDraft() {\r\n if (!enableDropleadLink) {\r\n enablePageLink();\r\n return;\r\n }\r\n if (!validateDropleadPart1()) {\r\n return;\r\n }\r\n\r\n window.dataLayer.push({\r\n event: \"facebook_event\",\r\n trigger_type: \"page view\",\r\n position: \"click next droplead npa details\",\r\n fb_npa_list: fbNpaList,\r\n });\r\n \r\n kloader();\r\n sendDraft().then(() => {\r\n // recaptchaRef.current.reset();\r\n kloader();\r\n recaptchaRef.current?.reset();\r\n });\r\n }\r\n\r\n function goToFormPart2() {\r\n if (isMobile()) {\r\n $(\"#field-step-1\").removeClass(\"current\");\r\n $(\"#field-step-1\").removeClass(\"current-reverse\");\r\n $(\"#field-step-2\").addClass(\"current\");\r\n } else {\r\n $(\"#field-step-3\").removeClass(\"current\");\r\n $(\"#field-step-3\").removeClass(\"current-reverse\");\r\n $(\"#field-step-4\").addClass(\"current\");\r\n $([document.documentElement, document.body]).animate(\r\n {\r\n scrollTop: $(\"#contact-desktop\").offset().top - 65,\r\n },\r\n 0\r\n );\r\n }\r\n }\r\n\r\n async function sendDraft() {\r\n var objRequest = {};\r\n\r\n try {\r\n recaptchaRef.current?.reset();\r\n const token = await recaptchaRef.current.executeAsync();\r\n objRequest.recapchaResult = token;\r\n } catch (error) {}\r\n\r\n console.log(recaptchaRef.current);\r\n\r\n console.log(objRequest);\r\n\r\n var userType = dropleadDetail.usertype.value;\r\n var interest = dropleadDetail.consentCheck.value;\r\n var utm_campaign = $(\"#utm_campaign\").val() || \"Organic\";\r\n var utm_source = $(\"#utm_source\").val() || \"Organic\";\r\n var utm_medium = $(\"#utm_medium\").val() || \"Organic\";\r\n var utm_content = $(\"#utm_content\").val() || \"Organic\";\r\n var utm_term = $(\"#utm_term\").val() || \"Organic\";\r\n var e2e_bannerid = $(\"#e2e_bannerid\").val() || \"Organic\";\r\n var pfsURL =\r\n getPathFromUrl(window.location.href) +\r\n (propertyDetail.PropertyID ? \"?\" + propertyDetail.PropertyID : \"\");\r\n\r\n var postPromise;\r\n\r\n if (userType === \"normal\") {\r\n var naCitizenIdVal = dropleadDetail.naCitizenId.value;\r\n\r\n postPromise = postApiDataAsync({\r\n urlPath: \"/SubmitFormPart1_Personal\",\r\n apiUrl: backendNPAURL,\r\n objRequest: {\r\n token: objRequest.recapchaResult,\r\n jwtData: window[\"generateToken\"]({\r\n value01: dropleadDetail.phone.value,\r\n value02: dropleadDetail.email.value,\r\n value03: naCitizenIdVal,\r\n value04: dropleadDetail.consentCheck.value,\r\n value05: utm_campaign,\r\n value06: utm_source,\r\n value07: utm_medium,\r\n value08: utm_content,\r\n value09: utm_term,\r\n value10: e2e_bannerid,\r\n value11: propertyDetail.PropertyID,\r\n value12: pfsURL,\r\n value13: propertyDetail.SourceCode,\r\n value14: propertyDetail.PropertySourceName,\r\n }),\r\n },\r\n });\r\n } else {\r\n postPromise = postApiDataAsync({\r\n urlPath: \"/SubmitFormPart1_Juristic\",\r\n apiUrl: backendNPAURL,\r\n objRequest: {\r\n token: objRequest.recapchaResult,\r\n jwtData: window[\"generateToken\"]({\r\n value01: dropleadDetail.juJuristicId.value,\r\n value02: dropleadDetail.juFirstName.value,\r\n value03: dropleadDetail.juLastName.value,\r\n value04: dropleadDetail.phone.value,\r\n value05: dropleadDetail.email.value,\r\n value06: dropleadDetail.consentCheck.value,\r\n value07: utm_campaign,\r\n value08: utm_source,\r\n value09: utm_medium,\r\n value10: utm_content,\r\n value11: utm_term,\r\n value12: e2e_bannerid,\r\n value13: propertyDetail.PropertyID,\r\n value14: pfsURL,\r\n value15: propertyDetail.SourceCode,\r\n value16: propertyDetail.PropertySourceName,\r\n }),\r\n },\r\n });\r\n }\r\n\r\n return postPromise.then(\r\n function (data) {\r\n if (data.HasCustomerInfo) {\r\n setHasCustomerInfo(data.HasCustomerInfo);\r\n }\r\n\r\n // if (hasCustomerInfo) {\r\n // // $('.na-first-name-field, .na-last-name-field, .ju-company-name-field').hide();\r\n // } else {\r\n // // $('.na-first-name-field, .na-last-name-field, .ju-company-name-field').show();\r\n // }\r\n\r\n goToFormPart2();\r\n\r\n dataLayer.push({\r\n event: \"registrationComplete\",\r\n eventCategory: \"form_submit\",\r\n eventAction: \"success\",\r\n eventLabel: \"NPA2020_register_prefill\",\r\n dimension40: userType === \"ordinary\" ? \"บุคคลธรรมดา\" : \"นิติบุคคล\", //นิติบุคคล,บุคคลธรรมดา\r\n dimension41: interest ? \"Y\" : \"N\", //สนใจทรัพย์สินรอการขาย\r\n });\r\n },\r\n function (err) {\r\n console.error(err);\r\n console.log(err.code);\r\n console.log(err.message);\r\n\r\n if (err.code === \"DuplicateSubmitToday\") {\r\n // $.alert({\r\n // title: 'ขออภัย',\r\n // content: 'หมายเลขบัตรประชาชนหรือ หมายเลขโทรศัพท์มือถือนี้ได้มีการลงทะเบียนไว้แล้ว กรุณารอเจ้าหน้าที่ติดต่อกลับภายใน 3 วันทำการ',\r\n // });\r\n openErrorPopup(\r\n \"ขออภัย
    หมายเลขบัตรประชาชนหรือ หมายเลขโทรศัพท์มือถือนี้ได้มีการลงทะเบียนไว้แล้ว กรุณารอเจ้าหน้าที่ติดต่อกลับภายใน 3 วันทำการ\"\r\n );\r\n } else if (err.code === \"NetworkError\") {\r\n // $.alert({\r\n // title: 'ขออภัย',\r\n // content: 'ไม่สามารถส่งข้อมูลได้ โปรดลองใหม่ในภายหลัง',\r\n // });\r\n openErrorPopup(\r\n \"ขออภัย
    ไม่สามารถส่งข้อมูลได้ โปรดลองใหม่ในภายหลัง\"\r\n );\r\n } else if (err.code === \"InvalidCitizenID\") {\r\n dispatch(\r\n DropleadValidateChange({\r\n field: \"naCitizenId\",\r\n errorMessage: \"กรอกข้อมูลเลขบัตรประชาชนให้ถูกต้อง\",\r\n })\r\n );\r\n } else if (err.code === \"InvalidMobileNo\") {\r\n dispatch(\r\n DropleadValidateChange({\r\n field: \"phone\",\r\n errorMessage: \"กรอกข้อมูลเบอร์มือถือให้ถูกต้อง\",\r\n })\r\n );\r\n } else if (err.code === \"InvalidEmailAddress\") {\r\n dispatch(\r\n DropleadValidateChange({\r\n field: \"email\",\r\n errorMessage: \"กรอกข้อมูลอีเมลให้ถูกต้อง\",\r\n })\r\n );\r\n } else if (err.code === \"InvalidJuristicID\") {\r\n dispatch(\r\n DropleadValidateChange({\r\n field: \"juJuristicId\",\r\n errorMessage: \"กรอกข้อมูลเลขนิติบุคคลให้ถูกต้อง\",\r\n })\r\n );\r\n } else if (err.code === \"InvalidFirstName\") {\r\n dispatch(\r\n DropleadValidateChange({\r\n field: \"juFirstName\",\r\n errorMessage: \"กรอกข้อมูลชื่อให้ถูกต้อง\",\r\n })\r\n );\r\n } else if (err.code === \"InvalidLastName\") {\r\n dispatch(\r\n DropleadValidateChange({\r\n field: \"juLastName\",\r\n errorMessage: \"กรอกข้อมูลนามสกุลให้ถูกต้อง\",\r\n })\r\n );\r\n } else {\r\n openErrorPopup(\r\n \"ขออภัย
    ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\"\r\n );\r\n }\r\n }\r\n );\r\n }\r\n\r\n function dropLeadSubmit() {\r\n //applyFinishButtonHandler\r\n console.log(\"submit form part 2\");\r\n\r\n if (!validateDropleadPart2()) {\r\n return;\r\n }\r\n\r\n kloader();\r\n\r\n var userType = dropleadDetail.usertype.value;\r\n var interest = dropleadDetail.consentCheck.value;\r\n var utm_campaign = $(\"#utm_campaign\").val() || \"Organic\";\r\n var utm_source = $(\"#utm_source\").val() || \"Organic\";\r\n var utm_medium = $(\"#utm_medium\").val() || \"Organic\";\r\n var utm_content = $(\"#utm_content\").val() || \"Organic\";\r\n var utm_term = $(\"#utm_term\").val() || \"Organic\";\r\n var e2e_bannerid = $(\"#e2e_bannerid\").val() || \"Organic\";\r\n var postPromise;\r\n\r\n if (userType === \"normal\") {\r\n var firstName;\r\n var lastName;\r\n var naSalary = +getAmount(dropleadDetail.naSalary.value);\r\n\r\n if (!hasCustomerInfo) {\r\n firstName = dropleadDetail.naFirstName.value;\r\n lastName = dropleadDetail.naLastName.value;\r\n } else {\r\n firstName = null;\r\n lastName = null;\r\n }\r\n\r\n postPromise = postApiDataAsync({\r\n urlPath: \"/SubmitFormPart2_Personal\",\r\n apiUrl: backendNPAURL,\r\n objRequest: {\r\n jwtData: window[\"generateToken\"]({\r\n value01: dropleadDetail.phone.value,\r\n value02: dropleadDetail.email.value,\r\n value03: dropleadDetail.naCitizenId.value,\r\n value04: interest,\r\n value05: firstName,\r\n value06: lastName,\r\n value07: dropleadDetail.naCareer.value,\r\n value08: naSalary,\r\n value09: \"\", //form.find('#naProvince').val(),\r\n value10: \"\", //form.find('#naAmphoe').val(),\r\n value11: \"\", //form.find('#naBranch').val(),\r\n value12: dropleadDetail.availableTime.value,\r\n value13: utm_campaign,\r\n value14: utm_source,\r\n value15: utm_medium,\r\n value16: utm_content,\r\n value17: utm_term,\r\n value18: e2e_bannerid,\r\n }),\r\n },\r\n });\r\n } else {\r\n var companyName;\r\n\r\n if (!hasCustomerInfo) {\r\n companyName = dropleadDetail.juCompanyName.value;\r\n } else {\r\n companyName = null;\r\n }\r\n\r\n postPromise = postApiDataAsync({\r\n urlPath: \"/SubmitFormPart2_Juristic\",\r\n apiUrl: backendNPAURL,\r\n objRequest: {\r\n jwtData: window[\"generateToken\"]({\r\n value01: dropleadDetail.juJuristicId.value,\r\n value02: dropleadDetail.juFirstName.value,\r\n value03: dropleadDetail.juLastName.value,\r\n value04: dropleadDetail.phone.value,\r\n value05: dropleadDetail.email.value,\r\n value06: interest,\r\n value07: companyName,\r\n value08: \"\", //form.find('#juProvince').val(),\r\n value09: \"\", //form.find('#juAmphoe').val(),\r\n value10: \"\", //form.find('#juBranch').val(),\r\n value11: dropleadDetail.availableTime.value,\r\n value12: utm_campaign,\r\n value13: utm_source,\r\n value14: utm_medium,\r\n value15: utm_content,\r\n value16: utm_term,\r\n value17: e2e_bannerid,\r\n }),\r\n },\r\n });\r\n }\r\n\r\n postPromise\r\n .then(\r\n function (data) {\r\n //stopLoader();\r\n\r\n //gotoThankyou();\r\n\r\n window.dataLayer.push({\r\n event: \"facebook_event\",\r\n trigger_type: \"page view\",\r\n position: \"page load npa thank you\",\r\n fb_npa_list: fbNpaList,\r\n });\r\n\r\n if (userType === \"normal\") {\r\n var naSalary = +getAmount(dropleadDetail.naSalary.value);\r\n dataLayer.push({\r\n event: \"registrationComplete\",\r\n eventCategory: \"form_submit\",\r\n eventAction: \"success\",\r\n eventLabel: \"NPA2020_register_complete\",\r\n dimension15: dropleadDetail.naCareer.value, //อาชีพ\r\n dimension5: naSalary, //รายได้ต่อเดือน\r\n dimension18: \"\", //จังหวัด\r\n dimension19: \"\", //เขต\r\n dimension20: \"\", //สาขา\r\n dimension21: dropleadDetail.availableTime.value, //เวลาที่สะดวกให้ติดต่อ\r\n eventCallback: function () {\r\n window.location.href =\r\n \"/th/PropertyForSale/property/droplead/Pages/thankyou.aspx\";\r\n },\r\n eventTimeout: 1200,\r\n });\r\n } else {\r\n window.location.href =\r\n \"/th/PropertyForSale/property/droplead/Pages/thankyou.aspx\";\r\n }\r\n\r\n console.log(\"submit complete!\");\r\n },\r\n function (err) {\r\n console.error(err);\r\n console.log(err.code);\r\n console.log(err.message);\r\n\r\n if (err.code === \"DuplicateSubmitToday\") {\r\n openErrorPopup(\r\n \"หมายเลขบัตรประชาชนหรือ หมายเลขโทรศัพท์มือถือนี้ได้มีการลงทะเบียนไว้แล้ว กรุณารอเจ้าหน้าที่ติดต่อกลับภายใน 3 วันทำการ\"\r\n );\r\n } else if (err.code === \"NetworkError\") {\r\n openErrorPopup(\"ไม่สามารถส่งข้อมูลได้ โปรดลองใหม่ในภายหลัง\");\r\n } else if (err.code === \"RowNotFound\") {\r\n openErrorPopup(\r\n \"ไม่สามารถบันทึกข้อมูลได้ โปรดเข้าหน้านี้ใหม่หรือกดปุ่ม refresh\"\r\n );\r\n } else if (err.code === \"UpdateNotAllowed\") {\r\n openErrorPopup(\r\n \"ไม่สามารถบันทึกข้อมูลได้ โปรดเข้าหน้านี้ใหม่หรือกดปุ่ม refresh\"\r\n );\r\n } else {\r\n openErrorPopup(\r\n \"ไม่สามารถดำเนินการได้ในขณะนี้ โปรดลองใหม่ในภายหลัง\"\r\n );\r\n }\r\n }\r\n )\r\n .then(() => {\r\n kloader();\r\n });\r\n }\r\n\r\n function validateDropleadPart1() {\r\n let validateField = [\"phone\", \"confirmphone\", \"email\"];\r\n\r\n let juValidateField = [\"juJuristicId\", \"juFirstName\", \"juLastName\"];\r\n\r\n if (dropleadDetail.usertype.value === \"ju\") {\r\n validateField = validateField.concat(juValidateField);\r\n } else {\r\n validateField = validateField.concat([\"naCitizenId\"]);\r\n }\r\n\r\n const validates = validateField.map((field) => {\r\n const errorMessage = VaridateDropleadDataField(\r\n dropleadDetail,\r\n field,\r\n dropleadDetail[field].value\r\n );\r\n dispatch(DropleadValidateChange({ field, errorMessage })); //async (paraelle)\r\n const result = errorMessage === \"\";\r\n return result;\r\n });\r\n\r\n const valid = validates.every((c) => c);\r\n\r\n if (valid) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function validateDropleadPart2() {\r\n let validateField = [\"availableTime\"];\r\n\r\n let juValidateField = [\"juCompanyName\"];\r\n\r\n let normalValidateField = [\"naCareer\", \"naSalary\"];\r\n\r\n let normalValidateFieldNotHasCustomerInfo = [\"naFirstName\", \"naLastName\"];\r\n\r\n if (dropleadDetail.usertype.value === \"ju\" && !hasCustomerInfo) {\r\n validateField = validateField.concat(juValidateField);\r\n } else if (dropleadDetail.usertype.value === \"normal\") {\r\n validateField = validateField.concat(normalValidateField);\r\n if (!hasCustomerInfo) {\r\n validateField = validateField.concat(\r\n normalValidateFieldNotHasCustomerInfo\r\n );\r\n }\r\n }\r\n\r\n const validates = validateField.map((field) => {\r\n const errorMessage = VaridateDropleadDataField(\r\n dropleadDetail,\r\n field,\r\n dropleadDetail[field].value\r\n );\r\n dispatch(DropleadValidateChange({ field, errorMessage })); //async (paraelle)\r\n const result = errorMessage === \"\";\r\n return result;\r\n });\r\n\r\n const valid = validates.every((c) => c);\r\n\r\n if (valid) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n useEffect(() => {\r\n if (!$(\"#HiddenPreload\").val()) {\r\n return;\r\n }\r\n const params = new URLSearchParams(window.location.search);\r\n console.log(params);\r\n kloader(true);\r\n var data = JSON.parse($(\"#HiddenPreload\").val());\r\n // var data = Config.detailMockData;\r\n\r\n if (data) {\r\n initDetail(data);\r\n\r\n setFbNpaList([\r\n {\r\n content_id: data.PropertyID,\r\n content_type: \"home_listing\",\r\n property_type: getPropertyTypeEn(data),\r\n price: data.PromotionPrice || data.AdjustPrice || data.SellPrice,\r\n },\r\n ]);\r\n\r\n window.dataLayer.push({\r\n event: \"facebook_event\",\r\n trigger_type: \"page view\",\r\n position: \"page load npa details\",\r\n fb_npa_list: [\r\n {\r\n content_id: data.PropertyID,\r\n content_type: \"home_listing\",\r\n property_type: getPropertyTypeEn(data),\r\n price: data.PromotionPrice || data.AdjustPrice || data.SellPrice,\r\n },\r\n ],\r\n });\r\n\r\n $(\".ft-phone a\").on(\"click\", function () {\r\n window.dataLayer.push({\r\n event: \"facebook_event\",\r\n trigger_type: \"page view\",\r\n position: \"click call npa details\",\r\n fb_npa_list: [\r\n {\r\n content_id: data.PropertyID,\r\n content_type: \"home_listing\",\r\n property_type: getPropertyTypeEn(data),\r\n price: data.PromotionPrice || data.AdjustPrice || data.SellPrice,\r\n },\r\n ],\r\n });\r\n });\r\n\r\n getApiDataAsync({\r\n urlPath: \"/GetData\",\r\n apiUrl: backendNPAURL,\r\n })\r\n .then(\r\n function (data) {\r\n console.log(data);\r\n\r\n var careerList = data.OccupationList.map(function (row) {\r\n return { text: row.Description, value: row.Description };\r\n });\r\n\r\n dispatch(\r\n DropleadListChange({ field: \"naCareer\", value: careerList })\r\n );\r\n\r\n var callbackPeriodList = data.ConvenientTimeList.map(function (\r\n row\r\n ) {\r\n return { text: row.Description, value: row.Description };\r\n });\r\n\r\n dispatch(\r\n DropleadListChange({\r\n field: \"availableTime\",\r\n value: callbackPeriodList,\r\n })\r\n );\r\n },\r\n function (err) {\r\n console.error(err);\r\n openErrorPopup(\"ไม่สามารถดึงข้อมูลได้ โปรดเข้าหน้านี้ใหม่\");\r\n }\r\n )\r\n .then(() => {\r\n // setTimeout(function(){ initPageJs(); }, 1000);\r\n })\r\n .finally(() => {\r\n kloader(false);\r\n });\r\n } else {\r\n console.log(\"No Preload\");\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n $(document).ready(function () {\r\n // Disable CSS\r\n $(\r\n 'link[href*=\"/_catalogs/masterpage/KWeb2016/assets/css/style-en.css\"]'\r\n ).attr(\"disabled\", \"disabled\");\r\n $(\"#close-error-popup\").on(\"click\", function () {\r\n $(\"#error-popup\").css({\r\n display: \"\",\r\n });\r\n });\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n let likeProperty = cookies[\"favoriteProperty\"];\r\n\r\n if (!likeProperty || likeProperty == \"undefined\") {\r\n likeProperty = [];\r\n } else {\r\n likeProperty = likeProperty.split(\",\");\r\n }\r\n if (isLike && !likeProperty.includes(propertyDetail.PropertyID)) {\r\n whenSetCookie(\r\n \"favoriteProperty\",\r\n [...likeProperty, propertyDetail.PropertyID].filter((x) => x).join(\",\")\r\n );\r\n } else if (!isLike && likeProperty.includes(propertyDetail.PropertyID)) {\r\n whenSetCookie(\r\n \"favoriteProperty\",\r\n likeProperty.filter((x) => x !== propertyDetail.PropertyID).join(\",\")\r\n );\r\n }\r\n // console.log(\"favoriteProperty\", propertyDetail.PropertyID)\r\n // whenSetCookie(\"favoriteProperty\", propertyDetail.PropertyID)\r\n }, [isLike]);\r\n\r\n function initDetail(data) {\r\n console.log(\"data\", data);\r\n tempDataDetail.PropertyMediaes = data.PropertyMediaes;\r\n\r\n tempDataDetail.PromotionPrice = data.PromotionPrice;\r\n tempDataDetail.hasSellPrice = data.hasSellPrice;\r\n\r\n tempDataDetail.PropertyTypeName = data.PropertyTypeName;\r\n //getPropertyType(data.PropertyTypeName)\r\n tempDataDetail.VillageTH = getValue(data.VillageTH);\r\n\r\n tempDataDetail.AssetInfoTH = getValue(data.AssetInfoTH);\r\n tempDataDetail.AddressNoTH = getValue(data.AddressNoTH);\r\n tempDataDetail.BuildingTH = getValue(data.BuildingTH);\r\n tempDataDetail.FloorTH = getValue(data.FloorTH);\r\n tempDataDetail.SoiTH = getValue(data.SoiTH);\r\n tempDataDetail.RoadTH = getValue(data.RoadTH);\r\n\r\n tempDataDetail.TambonName = getValue(data.TambonName);\r\n tempDataDetail.AmphurName = getValue(data.AmphurName);\r\n tempDataDetail.ProvinceName = getValue(data.ProvinceName);\r\n tempDataDetail.BuildingAge = getValue(data.BuildingAge);\r\n\r\n tempDataDetail.location = getLocation(tempDataDetail);\r\n\r\n tempDataDetail.Bedroom =\r\n showBedAndBath(data) && data.Bedroom > 0 ? data.Bedroom : \"\";\r\n tempDataDetail.Bathroom =\r\n showBedAndBath(data) && data.Bathroom > 0 ? data.Bathroom : \"\";\r\n\r\n tempDataDetail.TitlePageName = tempDataDetail.VillageTH\r\n ? tempDataDetail.VillageTH\r\n : `${getPropertyType(tempDataDetail)} ${tempDataDetail.ProvinceName}`;\r\n\r\n tempDataDetail.SellPrice = data.SellPrice;\r\n tempDataDetail.PromotionPrice = data.PromotionPrice;\r\n tempDataDetail.AdjustPrice = data.AdjustPrice;\r\n\r\n tempDataDetail.PromotionName = data.PromotionName;\r\n tempDataDetail.PromotionRemark = data.PromotionRemark;\r\n tempDataDetail.PropertyIDFormat = data.PropertyIDFormat;\r\n tempDataDetail.PropertyID = data.PropertyID;\r\n\r\n tempDataDetail.Area = data.Area;\r\n tempDataDetail.AreaValue = data.AreaValue;\r\n tempDataDetail.UseableArea = data.UseableArea;\r\n\r\n tempDataDetail.LinkLineChat = data.DataLineChat;\r\n\r\n var area = showAreaValue(data) ? getArea(data) : \"\";\r\n\r\n tempDataDetail.ShowAreaValue = area ? area.value + \" \" + area.unit : \"\";\r\n tempDataDetail.ShowUseableArea =\r\n showUseableAreaValue(data) && data.UseableArea\r\n ? data.UseableArea.toFixed(2) + \" ตร.ม.\"\r\n : \"\";\r\n //showUseableAreaValue\r\n //showAreaValue\r\n\r\n tempDataDetail.PropertyMediaes = data.PropertyMediaes;\r\n tempDataDetail.GAScore = data.GAScore;\r\n tempDataDetail.IsHot = data.IsHot;\r\n tempDataDetail.GaCountView = data.GaCountView;\r\n tempDataDetail.IsNew = data.IsNew;\r\n tempDataDetail.SourceSaleType = data.SourceSaleType; // for check partner\r\n tempDataDetail.IsPartner = checkIsPartner(data);\r\n tempDataDetail.SourceImageLogo = data.SourceImageLogo;\r\n // tempDataDetail.Like = at cookie below\r\n\r\n tempDataDetail.PromotionRemark = data.PromotionRemark;\r\n tempDataDetail.PMMaintenanceStatus = data.PMMaintenanceStatus;\r\n tempDataDetail.PropertySourceID = data.PropertySourceID;\r\n tempDataDetail.InOutProblemTH = data.InOutProblemTH;\r\n tempDataDetail.PropertySourceName = data.PropertySourceName;\r\n tempDataDetail.SourceCode = data.SourceCode;\r\n tempDataDetail.PropertyDocumentName = data.PropertyDocumentName;\r\n tempDataDetail.DocumentNo = data.DocumentNo;\r\n tempDataDetail.Latitude = data.Latitude;\r\n tempDataDetail.Longtitude = data.Longtitude;\r\n tempDataDetail.RemarkDetail = data.RemarkDetail;\r\n // PropertyMediaes //video\r\n // NearbyPlaces\r\n // PropertiesInfoRelated\r\n\r\n tempDataDetail.NearbyPlaces = genNearByPlaces(data.NearbyPlaces);\r\n tempDataDetail.PropertiesInfoRelated = data.PropertiesInfoRelated;\r\n var tempDataDetailPropertiesInfoRelated =\r\n tempDataDetail.PropertiesInfoRelated?.sort((a, b) => {\r\n if (a.Distance < b.Distance) {\r\n return -1;\r\n }\r\n if (a.Distance > b.Distance) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n ?.filter((x) => x.PropertyID.slice(2, 4) === \"88\")\r\n .slice(0, 15); // limit 15\r\n\r\n tempDataDetail.PropertiesInfoRelated = tempDataDetailPropertiesInfoRelated;\r\n\r\n tempDataDetail.PromotionStartDate = data.PromotionStartDate;\r\n tempDataDetail.PromotionEndDate = data.PromotionEndDate;\r\n tempDataDetail.PropertyIDPN = data.PropertyIDPN;\r\n\r\n // for AI\r\n tempDataDetail.CategoryGroup = data.CategoryGroup;\r\n tempDataDetail.CategoryDetail = data.CategoryDetail;\r\n tempDataDetail.AIImg = data.AIImg;\r\n tempDataDetail.isAuction = currentlyInAuction(data.PropertyID);\r\n\r\n dispatch(\r\n updateSearchResultList({\r\n fieldName: \"suggestProperty\",\r\n list: tempDataDetailPropertiesInfoRelated,\r\n hasMore: false,\r\n })\r\n );\r\n\r\n const likeProperty = cookies[\"favoriteProperty\"];\r\n let recentlyviewedProperty = cookies[\"recentlyviewedProperty\"];\r\n const PropertyID = data.PropertyID;\r\n if (!recentlyviewedProperty || recentlyviewedProperty == \"undefined\") {\r\n recentlyviewedProperty = [];\r\n } else {\r\n recentlyviewedProperty = recentlyviewedProperty.split(\",\");\r\n }\r\n if (cookies.Allow_Cookies === \"N\" && false) {\r\n dispatch(\r\n searchResultDataChange({ field: \"Allow_Cookies\", value: false })\r\n );\r\n } else {\r\n if (\r\n likeProperty &&\r\n likeProperty !== \"undefined\" &&\r\n likeProperty.includes(PropertyID)\r\n ) {\r\n tempDataDetail.Like = true;\r\n }\r\n if (!recentlyviewedProperty.includes(PropertyID)) {\r\n whenSetCookie(\r\n \"recentlyviewedProperty\",\r\n [...recentlyviewedProperty, PropertyID].filter((x) => x).join(\",\")\r\n );\r\n }\r\n }\r\n\r\n //For Calc\r\n $(function () {\r\n $(\"#calculate-result\").hide();\r\n $(\"#calculate\").on(\"click\", function () {\r\n $(\".container-calculate\").removeClass(\"view-mode\");\r\n });\r\n });\r\n\r\n const definePrice = data.PromotionPrice\r\n ? data.PromotionPrice\r\n : data.AdjustPrice\r\n ? data.AdjustPrice\r\n : data.SellPrice;\r\n dispatch(\r\n formsCalcDataChange({ field: \"definedPropertyPrice\", value: definePrice })\r\n );\r\n\r\n let appraisalPrice = data.KKApprovePrice;\r\n\r\n if (tempDataDetail.IsPartner && appraisalPrice === null) {\r\n appraisalPrice = definePrice;\r\n console.log(\"set appraisalPrice = definePrice\");\r\n }\r\n\r\n console.log(\"appraisalPrice: \" + appraisalPrice);\r\n\r\n dispatch(\r\n formsCalcDataChange({ field: \"appraisalPrice\", value: appraisalPrice })\r\n );\r\n dispatch(\r\n formsCalcDataChange({\r\n field: \"calculatorHomeLoanSetting\",\r\n value: getCalculatorSetting(data.CalculatorHomeLoanSetting),\r\n })\r\n );\r\n dispatch(\r\n formsCalcDataChange({\r\n field: \"calculatorLandSetting\",\r\n value: getCalculatorSetting(data.CalculatorLandSetting),\r\n })\r\n );\r\n dispatch(\r\n formsCalcDataChange({\r\n field: \"calculatorSMESetting\",\r\n value: getCalculatorSetting(data.CalculatorSMESetting),\r\n })\r\n );\r\n if (data.PropertyTypeName) {\r\n var propertyTypeID = data.PropertyTypeName.trim().split(\" \")[0];\r\n\r\n dispatch(\r\n formsCalcDataChange({\r\n field: \"propertyTypeID\",\r\n value: propertyTypeID,\r\n })\r\n );\r\n\r\n // dispatch(\r\n // formsCalcDataChange({\r\n // field: \"noDecoration\",\r\n // value: propertyTypeID.value === '01',\r\n // })\r\n // );\r\n\r\n var appliedCalcTypes = getAppliedCalcTypes(\r\n propertyTypeID,\r\n data.AreaValue,\r\n calcDetail.calcTypes\r\n );\r\n\r\n console.log(\"appliedCalcTypes -->\", appliedCalcTypes);\r\n\r\n dispatch(\r\n formsCalcDataChange({\r\n field: \"appliedCalcTypes\",\r\n value: appliedCalcTypes,\r\n })\r\n );\r\n }\r\n\r\n console.log(\"tempDataDetail -->\", tempDataDetail);\r\n\r\n dispatch(updatePropertyDetail({ value: tempDataDetail }));\r\n }\r\n\r\n function getAppliedCalcTypes(propertyTypeID, areaValue, calcTypes) {\r\n var forStay = null;\r\n\r\n if ([\"02\", \"03\", \"04\", \"05\"].indexOf(propertyTypeID) !== -1) {\r\n forStay = calcTypes.Home;\r\n } else if (\r\n propertyTypeID === \"01\" &&\r\n areaValue &&\r\n areaValue > 0 &&\r\n areaValue <= 4000\r\n ) {\r\n //empty land with size of 10 Rai or less\r\n forStay = calcTypes.Land;\r\n }\r\n\r\n var forBusiness = calcTypes.SME;\r\n\r\n return {\r\n forStay,\r\n forBusiness,\r\n };\r\n }\r\n\r\n function getCalculatorSetting(data) {\r\n var setting = {};\r\n var settingRow;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n settingRow = data[i];\r\n\r\n setting[settingRow.Code] = settingRow.Value;\r\n }\r\n\r\n return setting;\r\n }\r\n\r\n function whenSetCookie(name, value) {\r\n // console.log(\"when set cookie\", cookies.Allow_Cookies)\r\n if (cookies.Allow_Cookies === \"N\" && false) {\r\n dispatch(\r\n searchResultDataChange({ field: \"Allow_Cookies\", value: false })\r\n );\r\n } else {\r\n setCookie(name, value, { path: \"/\" });\r\n }\r\n }\r\n\r\n window.openErrorPopup = openErrorPopup;\r\n\r\n function openErrorPopup(message) {\r\n $(\"#error-popup div div p\").html(message);\r\n $(\"#error-popup\").css({\r\n display: \"flex\",\r\n });\r\n }\r\n\r\n function closeErrorPopup() {\r\n $(\"#error-popup\").css({\r\n display: \"\",\r\n });\r\n }\r\n\r\n function liveChatClick() {\r\n window.dataLayer.push({\r\n event: \"facebook_event\",\r\n trigger_type: \"page view\",\r\n position: \"click live chat npa details\",\r\n fb_npa_list: fbNpaList,\r\n });\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {/*
    */}\r\n \r\n\r\n {/* Start New Packfile */}\r\n\r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n {/* */}\r\n
    \r\n \r\n

    {propertyDetail.location}

    \r\n
    \r\n\r\n \r\n \r\n\r\n {propertyDetail.AIImg?.length > 0 && (\r\n \r\n
    \r\n \r\n
    \r\n

    ไอเดียแต่งห้องด้วย AI

    \r\n {/*

    ด้วย AI room generator

    */}\r\n
    \r\n
    \r\n \r\n \r\n )}\r\n
    \r\n\r\n \r\n\r\n
    \r\n {/* //contact-mobile-wrapper */}\r\n {propertyDetail.isAuction ? (\r\n \r\n ลงทะเบียนเข้าร่วมประมูล\r\n \r\n ) : (\r\n \r\n เสนอราคาซื้อ\r\n \r\n )}\r\n \r\n ติดต่อเจ้าหน้าที่/นัดหมายเข้าชมทรัพย์\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n {/* */}\r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n {propertyDetail.IsPartner ? (\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n \r\n\r\n
    \r\n

    ข้อมูลทรัพย์สิน

    \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n liveChatClick()}\r\n className=\"btn-chat px-getUTMXParams\"\r\n >\r\n \r\n Live Chat\r\n \r\n
    \r\n
    \r\n
    \r\n

    ติดต่อเจ้าหน้าที่/นัดหมายเข้าชมทรัพย์

    \r\n

    \r\n กรุณากรอกข้อมูลเพื่อให้เจ้าหน้าที่ติดต่อกลับ\r\n

    \r\n
    \r\n dropleadDataChange(\"usertype\", \"normal\")}\r\n >\r\n \r\n \r\n \r\n
    \r\n dropleadDataChange(\"usertype\", \"ju\")}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n {/* */}\r\n
    \r\n
    \r\n {dropleadDetail.usertype.value === \"ju\" && (\r\n
    \r\n \r\n \r\n \r\n
    \r\n )}\r\n\r\n \r\n \r\n \r\n {showNaCitizenId && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n dropleadDataChange(\r\n \"consentCheck\",\r\n !dropleadDetail.consentCheck.value\r\n );\r\n }}\r\n >\r\n \r\n \r\n \r\n สนใจสินเชื่อทรัพย์มือสอง\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ถัดไป\r\n \r\n
    \r\n
    \r\n \r\n This site is protected by reCAPTCHA
    \r\n and the Google \r\n Privacy Policy\r\n and Terms of Service apply.\r\n

    \r\n
    \r\n
    \r\n\r\n {/* */}\r\n
    \r\n {dropleadDetail.usertype.value === \"ju\" &&\r\n !hasCustomerInfo && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {dropleadDetail.usertype.value === \"normal\" && (\r\n
    \r\n {!hasCustomerInfo && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n \r\n ส่งข้อมูล\r\n \r\n
    \r\n
    \r\n \r\n \r\n ย้อนกลับ\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {propertyDetail.isAuction ? (\r\n
    \r\n

    สนใจประมูลทรัพย์สิน

    \r\n \r\n ลงทะเบียนเข้าร่วมประมูล\r\n \r\n \r\n
    \r\n ) : (\r\n
    \r\n {enableOfferLink ? (\r\n <>\r\n

    เสนอราคาซื้อทรัพย์สิน

    \r\n \r\n เสนอราคาซื้อ\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n การเสนอซื้อราคาซื้อทรัพย์สิน\r\n
    \r\n อยู่ระหว่างการปรับปรุงระบบ\r\n
    \r\n \r\n \r\n ไม่สามารถใช้งานได้เป็นการชั่วคราว\r\n \r\n
    \r\n \r\n และจะเปิดให้ทำรายการอีกครั้ง\r\n
    \r\n วันที่{\" \"}\r\n {moment(closePageEndTime).locale(\"th\").format(\"LLL\")} น.\r\n
    \r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n\r\n {/* End New Packfile */}\r\n\r\n
    \r\n\r\n
    \r\n\r\n {/* */}\r\n {isMobile() && (\r\n
    \r\n {/* */}\r\n \r\n ติดต่อเจ้าหน้าที่/นัดหมายเข้าชมทรัพย์\r\n \r\n liveChatClick()}\r\n className=\"btn-main btn-other chat px-getUTMXParams\"\r\n data-kbct=\"chatbox\"\r\n data-kblb=\"line_chat\"\r\n data-kbgp=\"contact\"\r\n data-kbid={propertyDetail.PropertyID}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n\r\n {/* \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Gallery\"\r\n
    \r\n
    \r\n \"Gallery\"\r\n
    \r\n
    \r\n \"Gallery\"\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    */}\r\n\r\n {/* */}\r\n \r\n
    \r\n

    \r\n ติดต่อเจ้าหน้าที่ /
    นัดหมายเข้าชมทรัพย์\r\n

    \r\n \r\n
    \r\n
    \r\n

    กรุณากรอกข้อมูลเพื่อให้เจ้าหน้าที่ติดต่อกลับ

    \r\n
    \r\n
    \r\n dropleadDataChange(\"usertype\", \"normal\")}\r\n >\r\n \r\n \r\n \r\n
    \r\n dropleadDataChange(\"usertype\", \"ju\")}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n {dropleadDetail.usertype.value === \"ju\" && (\r\n
    \r\n \r\n \r\n \r\n
    \r\n )}\r\n\r\n \r\n \r\n \r\n {showNaCitizenId && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n {\r\n e.preventDefault();\r\n dropleadDataChange(\r\n \"consentCheck\",\r\n !dropleadDetail.consentCheck.value\r\n );\r\n }}\r\n >\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n ถัดไป\r\n \r\n
    \r\n
    \r\n \r\n This site is protected by reCAPTCHA
    \r\n and the Google Privacy Policy and{\" \"}\r\n Terms of Service apply.\r\n

    \r\n
    \r\n \r\n\r\n {/* */}\r\n
    \r\n {dropleadDetail.usertype.value === \"ju\" && !hasCustomerInfo && (\r\n
    \r\n \r\n
    \r\n )}\r\n\r\n {dropleadDetail.usertype.value === \"normal\" && (\r\n
    \r\n {!hasCustomerInfo && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
    \r\n )}\r\n \r\n
    \r\n \r\n ส่งข้อมูล\r\n \r\n
    \r\n
    \r\n \r\n \r\n ย้อนกลับ\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n\r\n {/* */}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    ต้องการยืนยันการเสนอซื้อ
    \r\n
    \r\n
    \r\n \r\n ยกเลิก\r\n \r\n \r\n ยืนยัน\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {/* */}\r\n \r\n\r\n {/* */}\r\n \r\n
    \r\n

    ตัวเลือกเพิ่มเติม

    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n คำนวณ\r\n
    \r\n สินเชื่อ\r\n \r\n \r\n
    \r\n \r\n
    \r\n ส่งต่อให้เพื่อน\r\n \r\n \r\n \r\n
    \r\n
    \r\n ทรัพย์ถูกใจ\r\n \r\n \r\n
    \r\n \r\n
    \r\n พิมพ์\r\n \r\n
    \r\n \r\n \r\n\r\n {/* */}\r\n
    \r\n
    \r\n closeErrorPopup()}\r\n className=\"more-filter-btn error\"\r\n >\r\n \r\n \r\n
    \r\n

    \r\n ภาระหนี้ที่ระบุต้องไม่เกิน 108,100 บาท หรือเพิ่มรายได้ต่อเดือน\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nconst SuggestPart = () => {\r\n const [suggestProperty] = useSelector((state) => [\r\n state.property.searchResult.suggestProperty,\r\n ]);\r\n\r\n function htmlEntities(s) {\r\n return s.replace(/[\\u00A0-\\u9999<>\\&]/gim, function (i) {\r\n return \"&#\" + i.charCodeAt(0) + \";\";\r\n });\r\n }\r\n\r\n if (!suggestProperty.list || suggestProperty.list.length === 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n

    ทรัพย์ใกล้เคียง

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nfunction initPageJs() {\r\n console.log(\"initPageJs run\");\r\n var gl1 = $(\".gallery-swiper\").data(\"swp\");\r\n if (gl1) gl1.destroy();\r\n\r\n var gallerySwiper = new Swiper(\".gallery-swiper\", {\r\n slidesPerView: \"auto\",\r\n initialSlide: 1,\r\n spaceBetween: 10,\r\n centeredSlides: true,\r\n autoHeight: true,\r\n loop: true,\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n });\r\n\r\n $(\".gallery-swiper\").data(\"swp\", gallerySwiper);\r\n\r\n var gl2 = $(\".gallery-sm-swiper\").data(\"swp\");\r\n if (gl2) gl2.destroy();\r\n\r\n var gallerySmSwiper = new Swiper(\".gallery-sm-swiper\", {\r\n slidesPerView: \"auto\",\r\n initialSlide: 1,\r\n spaceBetween: 10,\r\n loop: false,\r\n pagination: {\r\n el: \".gallery-sm-pagi\",\r\n clickable: true,\r\n },\r\n noSwipingClass: \"gallery-sm-more\",\r\n threshold: 20,\r\n });\r\n\r\n $(\".gallery-sm-swiper\").data(\"swp\", gallerySmSwiper);\r\n\r\n var galleryModalSwiper = new Swiper(\".gallery-modal-swiper\", {\r\n zoom: true,\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n pagination: {\r\n el: \".swiper-pagination\",\r\n clickable: false,\r\n type: \"custom\",\r\n renderCustom: function (swiper, current, total) {\r\n console.log(current + \"/\" + total);\r\n return current + \"/\" + total;\r\n },\r\n },\r\n });\r\n\r\n //suggest\r\n var assetSwiper1 = new Swiper(\".assets-swiper\", {\r\n slidesPerView: \"auto\",\r\n freeMode: true,\r\n spaceBetween: 20,\r\n breakpoints: {\r\n 1025: {\r\n slidesPerView: 4,\r\n spaceBetween: 20,\r\n },\r\n },\r\n pagination: {\r\n el: \".assets-pagi-1\",\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: \".asset-next\",\r\n prevEl: \".asset-prev\",\r\n },\r\n });\r\n\r\n gallerySwiper.on(\"slideChange\", function () {\r\n var currentIndex = gallerySwiper.realIndex;\r\n var galleryList = $(\".gallery-sm-swiper .swiper-slide\");\r\n $(galleryList).removeClass(\"active\");\r\n $(galleryList[currentIndex]).addClass(\"active\");\r\n gallerySmSwiper.slideTo(currentIndex);\r\n });\r\n\r\n var galleryList = $(\".gallery-sm-swiper .swiper-slide\");\r\n $(galleryList).each(function (idx, el) {\r\n $(el)\r\n .off(\"click\")\r\n .on(\"click\", function () {\r\n if (idx != galleryList.length - 1) {\r\n gallerySwiper.slideToLoop(idx);\r\n }\r\n });\r\n });\r\n\r\n $(\".more-gallery-btn\").on(\"click\", function () {\r\n $(\"#gallery-modal\").addClass(\"active\");\r\n $(\"body\").addClass(\"overflow-hidden\");\r\n });\r\n\r\n $(\".close-gallery-modal\").on(\"click\", function () {\r\n $(\"#gallery-modal\").removeClass(\"active\");\r\n $(\"body\").removeClass(\"overflow-hidden\");\r\n });\r\n\r\n $(\".gallery-swiper .swiper-slide\").on(\"click\", function () {\r\n const index = $(this).attr(\"data-swiper-slide-index\");\r\n\r\n var galleryModalSwiper = new Swiper(\".gallery-modal-swiper\", {\r\n zoom: true,\r\n navigation: {\r\n nextEl: \".swiper-button-next\",\r\n prevEl: \".swiper-button-prev\",\r\n },\r\n pagination: {\r\n el: \".swiper-pagination\",\r\n clickable: false,\r\n type: \"custom\",\r\n renderCustom: function (swiper, current, total) {\r\n console.log(current + \"/\" + total);\r\n return current + \"/\" + total;\r\n },\r\n },\r\n });\r\n\r\n galleryModalSwiper.slideTo(index, false, false);\r\n\r\n $(\"#gallery-modal\").addClass(\"active\");\r\n $(\"body\").addClass(\"overflow-hidden\");\r\n });\r\n\r\n window.dispatchEvent(new Event(\"resize\"));\r\n\r\n document.querySelectorAll(\".tab-facility a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"Tab Content\",\r\n event_action: \"click\",\r\n event_label:\r\n \"สถานที่ใกล้เคียง_\" +\r\n e.target.closest(\".nav-link\").getAttribute(\"data-bs-target\"),\r\n });\r\n });\r\n });\r\n\r\n //promotion detail\r\n document.querySelectorAll(\"#promotions a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"link_click\",\r\n event_action: \"click\",\r\n event_label: e.target.getAttribute(\"alt\"),\r\n });\r\n });\r\n });\r\n\r\n //[property nearby click]\r\n document.querySelectorAll(\"#property-nearby a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"link_click\",\r\n event_action: \"click\",\r\n event_label:\r\n \"ทรัพย์ใกล้เคียง_\" +\r\n e.target\r\n .closest(\"a\")\r\n .querySelector(\".md-thumbnail-detail .asset-code\").innerText,\r\n });\r\n });\r\n });\r\n\r\n //form abandonment droplead\r\n var historyFormNPA = [];\r\n window.addEventListener(\r\n \"beforeunload\",\r\n function () {\r\n if (\r\n historyFormNPA.length &&\r\n dataLayer.filter((x) => x.eventLabel === \"NPA2020_register_complete\")\r\n .length === 0\r\n ) {\r\n window.dataLayer.push({\r\n event: \"formAbandonment\",\r\n eventCategory: \"Form Abandonment\",\r\n eventAction: historyFormNPA.join(\" > \"),\r\n });\r\n }\r\n },\r\n { once: true }\r\n );\r\n\r\n //form abandonment calculator\r\n var historyFormAbandonment = [];\r\n window.addEventListener(\r\n \"beforeunload\",\r\n function () {\r\n if (\r\n historyFormAbandonment.length &&\r\n dataLayer.filter((x) => x.event === \"submitCalculator\").length === 0\r\n ) {\r\n window.dataLayer.push({\r\n event: \"formAbandonment\",\r\n eventCategory: \"Form Abandonment_Calculator\",\r\n eventAction: historyFormAbandonment.join(\" > \"),\r\n });\r\n }\r\n },\r\n { once: true }\r\n );\r\n\r\n document\r\n .querySelectorAll(\r\n \".calculate-group .select2-selection.select2-selection--single,.calculate-group input\"\r\n )\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n historyFormAbandonment.push(e.target.getAttribute(\"id\"));\r\n });\r\n });\r\n\r\n document\r\n .querySelectorAll(\".field-item .form-item input\")\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n historyFormNPA.push(\r\n e.target.closest(\".form-item\").querySelector(\"label\").innerText\r\n );\r\n });\r\n });\r\n\r\n //like btn\r\n document.querySelectorAll(\".social-btn.like-btn\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"NPA-DETAIL-2022\",\r\n event_action: \"click\",\r\n event_label: \"ถูกใจ\",\r\n });\r\n });\r\n });\r\n //popup picture\r\n document.querySelectorAll(\".more-gallery-btn\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"pop-up\",\r\n event_action: \"click\",\r\n event_label: \"ดูรูปทั้งหมด\",\r\n });\r\n });\r\n });\r\n //close popup picture\r\n document.querySelectorAll(\".close-gallery-modal\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"pop-up\",\r\n event_action: \"click\",\r\n event_label: \"Close\",\r\n });\r\n });\r\n });\r\n //share email\r\n document\r\n .querySelectorAll(\".d-flex.justify-content-center.align-items-center\")\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"social_share\",\r\n event_action: \"click\",\r\n event_label: \"Share Email\",\r\n });\r\n });\r\n });\r\n}\r\n\r\nfunction dropleadDesktopBack(e) {\r\n $(\"#field-step-3\").addClass(\"current-reverse\");\r\n $(\"#field-step-4\").removeClass(\"current\");\r\n $([document.documentElement, document.body]).animate(\r\n {\r\n scrollTop: $(\"#contact-desktop\").offset().top - 65,\r\n },\r\n 0\r\n );\r\n}\r\n\r\nfunction dropleadMobileBack() {\r\n $(\"#field-step-1\").addClass(\"current-reverse\");\r\n $(\"#field-step-2\").removeClass(\"current\");\r\n}\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"react-app-detail\")\r\n);\r\nReactDOM.render(\r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"react-app-detail-suggest\")\r\n);\r\n\r\nconsole.log(\"react app property detail start\");\r\n","import { createSlice } from '@reduxjs/toolkit'\r\n\r\nexport const propertySlice = createSlice({\r\n name: \"counter\",\r\n initialState: {\r\n searchFilter: {\r\n keyword: { value: \"\", fieldName: \"keyword\" },\r\n\r\n province: {\r\n value: \"\", fieldName: \"province\", placeholderSearch: \"ชื่อจังหวัด\", placeholder: \"จังหวัด\", clearOption: true,\r\n option: []\r\n },\r\n district: {\r\n value: \"\", fieldName: \"district\", placeholderSearch: \"ชื่อเขต/อำเภอ\", placeholder: \"เขต/อำเภอ\", clearOption: true,\r\n option: []\r\n },\r\n subDistrict: {\r\n value: \"\", fieldName: \"subDistrict\", placeholderSearch: \"ชื่อแขวง/ตำบล\", placeholder: \"แขวง/ตำบล\", clearOption: true,\r\n option: []\r\n },\r\n station: {\r\n value: \"\", fieldName: \"station\", placeholderSearch: \"ชื่อสถานี\", placeholder: \"เลือกสถานีใกล้เคียง\", clearOption: true,\r\n option: []\r\n },\r\n\r\n order: {\r\n value: \"hot\", fieldName: \"order\", minimumResultsForSearch: -1, notShowEmptyOption: true, option: [\r\n { text: \"ทรัพย์ยอดนิยม\", value: \"hot\" },\r\n { text: \"ทรัพย์มาใหม่\", value: \"new\" },\r\n { text: \"ราคา (น้อย-มาก)\", value: \"min-max\" },\r\n { text: \"ราคา (มาก-น้อย)\", value: \"max-min\" },\r\n { text: \"พื้นที่ (น้อย-มาก)\", value: \"min-max-area\" },\r\n { text: \"พื้นที่ (มาก-น้อย)\", value: \"max-min-area\" },\r\n ]\r\n },\r\n\r\n propertyType: {\r\n value: \"\", fieldName: \"propertyType\",\r\n housetype: { value: false, code: \"02\", name: \"บ้านเดี่ยว\", fieldName: \"housetype\", group: \"propertyType\" },\r\n land: { value: false, code: \"01\", name: \"ที่ดิน\", fieldName: \"land\", group: \"propertyType\" },\r\n townhouse: { value: false, code: \"03\", name: \"ทาวน์เฮ้าส์\", fieldName: \"townhouse\", group: \"propertyType\" },\r\n condo: { value: false, code: \"05\", name: \"คอนโดมิเนียม\", fieldName: \"condo\", group: \"propertyType\" },\r\n commercialbuilding: { value: false, code: \"04\", name: \"อาคารพาณิชย์\", fieldName: \"commercialbuilding\", group: \"propertyType\" },\r\n warehouse: { value: false, code: \"12\", name: \"โกดัง\", fieldName: \"warehouse\", group: \"propertyType\" },\r\n factory: { value: false, code: \"09\", name: \"โรงงาน\", fieldName: \"factory\", group: \"propertyType\" },\r\n apartment: { value: false, code: \"15\", name: \"อพาร์ทเม้นท์\", fieldName: \"apartment\", group: \"propertyType\" },\r\n office: { value: false, code: \"10\", name: \"อาคารสำนักงาน\", fieldName: \"office\", group: \"propertyType\" },\r\n resort: { value: false, code: \"20\", name: \"รีสอร์ท\", fieldName: \"resort\", group: \"propertyType\" },\r\n houseother: { value: false, code: \"19\", name: \"อื่น ๆ\", fieldName: \"houseother\", group: \"propertyType\" },\r\n },\r\n rangePrice: {\r\n value: \"\", fieldName: \"rangePrice\", min: 0, max: 11, from: 0, from_value: 0, to: 0, to_value: 0, step: 1, count: 0, placeholder: \"ราคาเริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"1 ล้านบาท\", \"3 ล้านบาท\", \"5 ล้านบาท\", \"10 ล้านบาท\", \"20 ล้านบาท\", \"50 ล้านบาท\"\r\n ]\r\n },\r\n areaRange: {\r\n value: \"\", fieldName: \"areaRange\", min: 0, max: 8, from: 0, to: 0, step: 50, count: 0, placeholder: \"เนื้อที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"50 ตร.ว.\", \"100 ตร.ว.\", \"200 ตร.ว.\", \"300 ตร.ว.\", \"1 ไร่\", \"5 ไร่\", \"10 ไร่\", \"50 ไร่\"\r\n ]\r\n },\r\n useableAreaRange: {\r\n value: \"\", fieldName: \"useableAreaRange\", min: 0, max: 150, from: 0, to: 0, step: 50, count: 0, placeholder: \"พื้นที่เริ่มต้น - สิ้นสุด\",\r\n values: [\r\n \"ไม่ระบุ\", \"30 ตร.ม.\", \"50 ตร.ม.\", \"100 ตร.ม.\", \"200 ตร.ม.\", \"500 ตร.ม.\",\r\n ]\r\n },\r\n rangeField: {value: \"\", fieldName: \"rangePrice\"},\r\n areaField: {value: \"\", fieldName: \"areaRange\"},\r\n useableAreaField: {value: \"\", fieldName: \"useableAreaRange\"},\r\n bedroom: { value: 0, min: 0, max: 99, fieldName: \"bedroom\" },\r\n bathroom: { value: 0, min: 0, max: 99, fieldName: \"bathroom\" },\r\n assetTypes: {\r\n value: \"\", fieldName: \"assetTypes\",\r\n // PromotionProperties: { value: false, code: \"PromotionProperties\", name: \"บ้านเดี่ยว\", fieldName: \"PromotionProperties\" }, // fieldName is icon classname\r\n propertybank: { value: false, code: \"kbank\", name: \"ทรัพย์
    ธนาคาร\", fieldName: \"propertybank\", group: \"assetTypes\" },\r\n propertywaitsale: { value: false, code: \"npl\", name: \"ทรัพย์
    ฝากขาย\", fieldName: \"propertywaitsale\", group: \"assetTypes\" },\r\n partnership: { value: false, code: \"partner\", name: \"ทรัพย์
    ผู้ขาย\", fieldName: \"partnership\", group: \"assetTypes\", spanText: \"(บุคคลภายนอก)\" },\r\n },\r\n expand: { value: \"\", fieldName: \"expand\" },\r\n },\r\n searchResult: {\r\n keyword: { value: \"\", fieldName: \"keyword\" },\r\n resultLength: { value: 0, fieldName: \"resultLength\" },\r\n Allow_Cookies: { value: true, fieldName: \"Allow_Cookies\" },\r\n showTab: { value: \"newProperty\", fieldName: \"showTab\" },\r\n newProperty: { value: \"\", fieldName: \"newProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n promoProperty: { value: \"\", fieldName: \"promoProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n popularProperty: { value: \"\", fieldName: \"popularProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n favoriteProperty: { value: \"\", fieldName: \"favoriteProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, favoritePropertyList: [], TotalRows: 0 },\r\n recentlyviewedProperty: { value: \"\", fieldName: \"recentlyviewedProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false, TotalRows: 0 },\r\n suggestProperty: { value: \"\", fieldName: \"suggestProperty\", list: [], pageIndex: 1, hasMore: true, isLoading: false },\r\n },\r\n propertyDetail: {\r\n AssetInfoTH: \"\",\r\n AddressNoTH: \"\",\r\n BuildingTH: \"\",\r\n FloorTH: \"\",\r\n VillageTH: \"\",\r\n SoiTH: \"\",\r\n RoadTH: \"\",\r\n TambonName: \"\",\r\n AmphurName: \"\",\r\n ProvinceName: \"\",\r\n location: \"\",\r\n PropertyTypeName: \"\",\r\n Bedroom: \"\",\r\n Bathroom: \"\",\r\n CarParking: \"\",\r\n SellPrice: \"\",\r\n PromotionPrice: \"\",\r\n AdjustPrice: \"\",\r\n PromotionName: \"\",\r\n PromotionRemark: \"\",\r\n PropertyIDFormat: \"\",\r\n PropertyID: \"\",\r\n Area: \"\",\r\n AreaValue: \"\",\r\n UseableArea: \"\",\r\n ShowAreaValue: \"\",\r\n ShowUseableArea: \"\",\r\n PropertyMediaes: [],\r\n GAScore: \"\",\r\n Like: \"\",\r\n IsNew: \"\",\r\n CategoryGroup:\"\",\r\n CategoryDetail: \"\",\r\n AIImg: [],\r\n \r\n // AssetInfoTH: { value: \"\", fieldName: \"AssetInfoTH\" },\r\n // AddressNoTH: { value: \"\", fieldName: \"AddressNoTH\" },\r\n // BuildingTH: { value: \"\", fieldName: \"BuildingTH\" },\r\n // FloorTH: { value: \"\", fieldName: \"FloorTH\" },\r\n // VillageTH: { value: \"\", fieldName: \"VillageTH\" },\r\n // SoiTH: { value: \"\", fieldName: \"SoiTH\" },\r\n // RoadTH: { value: \"\", fieldName: \"RoadTH\" },\r\n // TambonName: { value: \"\", fieldName: \"TambonName\" },\r\n // AmphurName: { value: \"\", fieldName: \"AmphurName\" },\r\n // ProvinceName: { value: \"\", fieldName: \"ProvinceName\" },\r\n // location: { value: \"\", fieldName: \"location\" },\r\n // PropertyTypeName: { value: \"\", fieldName: \"PropertyTypeName\" },\r\n // Bedroom: { value: \"\", fieldName: \"Bedroom\" },\r\n // Bathroom: { value: \"\", fieldName: \"Bathroom\" },\r\n // SellPrice: { value: \"\", fieldName: \"SellPrice\" },\r\n // PromotionPrice: { value: \"\", fieldName: \"PromotionPrice\" },\r\n // AdjustPrice: { value: \"\", fieldName: \"AdjustPrice\" },\r\n // PromotionName: { value: \"\", fieldName: \"PromotionName\" },\r\n // PromotionRemark: { value: \"\", fieldName: \"PromotionRemark\" },\r\n // PropertyIDFormat: { value: \"\", fieldName: \"PropertyIDFormat\" },\r\n // PropertyID: { value: \"\", fieldName: \"PropertyID\" },\r\n // Area: { value: \"\", fieldName: \"Area\" },\r\n // AreaValue: { value: \"\", fieldName: \"AreaValue\" },\r\n // UseableArea: { value: \"\", fieldName: \"UseableArea\" },\r\n // PropertyMediaes: { value: \"\", fieldName: \"PropertyMediaes\" },\r\n // GAScore: { value: \"\", fieldName: \"GAScore\" },\r\n // Like: { value: false, fieldName: \"Like\" },\r\n },\r\n dropleadDetail: {\r\n usertype: { value: 'normal' },\r\n juJuristicId: { value: '', required: true, errorMessage: '', fieldName: 'juJuristicId', label: 'เลขที่นิติบุคคล', placeholder: \"กรุณากรอกเลขที่นิติบุคคล*\", maxLength: 250, inputmode: \"numeric\" },\r\n juFirstName: { value: '', required: true, errorMessage: '', fieldName: 'juFirstName', label: 'ชื่อ', placeholder: \"กรุณากรอกชื่อ*\", maxLength: 250 },\r\n juLastName: { value: '', required: true, errorMessage: '', fieldName: 'juLastName', label: 'นามสกุล', placeholder: \"กรุณากรอกนามสกุล*\", maxLength: 250 },\r\n\r\n phone: { value: '', required: true, errorMessage: '', fieldName: 'phone', label: 'เบอร์มือถือ', placeholder: \"กรุณากรอกเบอร์มือถือ*\", maxLength: 10, inputmode: \"numeric\" },\r\n confirmphone: { value: '', required: true, errorMessage: '', fieldName: 'confirmphone', label: 'ยืนยันเบอร์มือถือ', placeholder: \"กรุณายืนยันเบอร์มือถือ*\", maxLength: 10, inputmode: \"numeric\" },\r\n\r\n naCitizenId: { value: '', required: true, errorMessage: '', fieldName: 'naCitizenId', label: 'เลขบัตรประชาชน', placeholder: \"กรุณากรอกเลขบัตรประชาชน*\", maxLength: 13, inputmode: \"numeric\" },\r\n\r\n email: { value: '', required: true, errorMessage: '', fieldName: 'email', label: 'อีเมล', placeholder: \"กรุณากรอกอีเมล*\", maxLength: 250 },\r\n consentCheck: { value: true, required: true, errorMessage: '', fieldName: 'consentCheck', label: 'สนใจสินเชื่อทรัพย์มือสอง', placeholder: \"0\" },\r\n\r\n juCompanyName: { value: '', required: true, errorMessage: '', fieldName: 'juCompanyName', label: 'ชื่อบริษัท', placeholder: \"ชื่อบริษัท*\", maxLength: 500 },\r\n naFirstName: { value: '', required: true, errorMessage: '', fieldName: 'naFirstName', label: 'ชื่อ', placeholder: \"ชื่อ*\", maxLength: 250 },\r\n naLastName: { value: '', required: true, errorMessage: '', fieldName: 'naLastName', label: 'นามสกุล', placeholder: \"นามสกุล*\", maxLength: 250 },\r\n naCareer: {\r\n value: '', required: true, errorMessage: '', fieldName: 'naCareer', label: 'อาชีพ', placeholder: \"อาชีพ*\",\r\n option: [\r\n ]\r\n },\r\n naSalary: { value: '', required: true, errorMessage: '', fieldName: 'naSalary', label: 'รายได้ต่อเดือน', placeholder: \"รายได้ต่อเดือน*\", maxLength: 250, inputmode: \"numeric\" },\r\n\r\n availableTime: {\r\n value: '', required: true, errorMessage: '', fieldName: 'availableTime', label: 'ช่วงเวลาที่สะดวกให้ติดต่อกลับ', placeholder: \"ช่วงเวลาที่สะดวกให้ติดต่อกลับ*\",\r\n option: [\r\n ]\r\n },\r\n },\r\n calcDetail: {\r\n propertyTypeID: { value: null },\r\n decoration: { value: null },\r\n definedPropertyPrice: { value: 0 },\r\n appraisalPrice: { value: 0 },\r\n calcTypes: {\r\n Home: 'Home Loan',\r\n Land: 'Land',\r\n SME: 'SME'\r\n },\r\n appliedCalcTypes: {\r\n value: {\r\n forStay: null,\r\n forBusiness: null,\r\n },\r\n },\r\n smePropertyType: { value: null },\r\n calculatorHomeLoanSetting: { value: 0, fieldName: \"calculatorHomeLoanSetting\" },\r\n calculatorLandSetting: { value: 0, fieldName: \"calculatorLandSetting\" },\r\n calculatorSMESetting: { value: 0, fieldName: \"calculatorSMESetting\" },\r\n\r\n stayTotalInstallmentPerMonth: { value: 0 },\r\n stayTotalLimitAmount: { value: 0 },\r\n stayInstallmentYear: { value: 0, maxLength: 2, maxDigit: 2, maxValue: 0, errorMessage: '', note: '' },\r\n stayPropertyLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n stayPropertyInstallmentPerMonth: { value: 0 },\r\n stayDecorationLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n stayDecorationInstallmentPerMonth: { value: 0 },\r\n stayIncomePerMonth: { value: 0, maxLength: 11, maxDigit: 9, minValue: 7500, errorMessage: '' },\r\n stayDebtBurdenPerMonth: { value: 0, maxLength: 11, maxDigit: 9, errorMessage: '' },\r\n stayCanTakeDecoration: { value: true },\r\n\r\n businessTotalInstallmentPerMonth: { value: 0 },\r\n businessTotalLimitAmount: { value: 0 },\r\n businessInstallmentYear: { value: 0, maxLength: 2, maxValue: 0, errorMessage: '', note: '' },\r\n businessPropertyLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n businessPropertyInstallmentPerMonth: { value: 0 },\r\n businessDecorationLimitAmount: { value: 0, maxLength: 11, maxDigit: 9, maxValue: 0, errorMessage: '' },\r\n businessDecorationInstallmentPerMonth: { value: 0 },\r\n businessIncomePerMonth: { value: 0, maxLength: 11, maxDigit: 9, errorMessage: '' },\r\n businessDebtBurdenPerMonth: { value: 0, maxLength: 11, maxDigit: 9, errorMessage: '' },\r\n\r\n stayValidateFields: { value: [] },\r\n businessValidateFields: { value: [] },\r\n\r\n // calcType: { value: '' },\r\n // price: { value: '', required: true, errorMessage: '', fieldName: 'price', label: 'ราคาทรัพย์/ราคาเสนอซื้อ (บาท)', placeholder: \"0\" },\r\n // income: { value: '', required: true, errorMessage: '', fieldName: 'income', label: 'รายได้ต่อเดือน (บาท) ตั้งแต่ 7,500 บาท ขึ้นไป', placeholder: \"0\" },\r\n // dept: { value: '', required: false, errorMessage: '', fieldName: 'dept', label: 'ภาระหนี้ต่อเดือน (บาท)', placeholder: \"0\" },\r\n // age: { value: '', required: true, errorMessage: '', fieldName: 'age', label: 'อายุผู้กู้ (ปี)', placeholder: \"0\", maxLength: 2 },\r\n // profit: { value: '', required: true, errorMessage: '', fieldName: 'profit', label: 'กำไรสุทธิต่อเดือน (บาท)', placeholder: \"0\" },\r\n // career: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'career', label: 'อาชีพ', placeholder: \"เลือกอาชีพ\",\r\n // option: [\r\n // { text: 'พนักงานประจำ', value: 'employee' },\r\n // { text: 'เจ้าของกิจการ', value: 'business_owner' }\r\n // ]\r\n\r\n // },\r\n // home: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'home', label: 'เลือกการกู้บ้านหลังที่', placeholder: \"เลือกการกู้บ้านหลังที่\",\r\n // option: [\r\n // { text: 'บ้านหลังที่ 1', value: 'home1' },\r\n // { text: 'บ้านหลังที่ 2 (ผ่อนหลังที่ 1 มาแล้วไม่ถึง 2 ปี)', value: 'home2_with_home1_lessthan_2years' },\r\n // { text: 'บ้านหลังที่ 2 (ผ่อนหลังที่ 1 มาแล้วตั้งแต่ 2 ปี ขึ้นไป)', value: 'home2_with_home1_2years_or_more' },\r\n // { text: 'บ้านหลังที่ 3 เป็นต้นไป', value: 'home3_or_else' },\r\n // ]\r\n\r\n // },\r\n // land: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'land', label: 'เป็นการกู้ซื้อทรัพย์ชิ้นที่', placeholder: \"เลือกการกู้ซื้อทรัพย์ชิ้นที่\",\r\n // option: [\r\n // { text: 'ทรัพย์ชิ้นที่ 1 (ไม่มีภาระสินเชื่อบ้านขณะนี้)', value: 'home1' },\r\n // { text: 'ทรัพย์ชิ้นที่ 2 (ผ่อนหลังที่ 1 มาแล้วไม่ถึง 2 ปี)', value: 'home2_with_home1_lessthan_2years' },\r\n // { text: 'ทรัพย์ชิ้นที่ 2 (ผ่อนหลังที่ 1 มาแล้วตั้งแต่ 2 ปีขึ้นไป)', value: 'home2_with_home1_2years_or_more' },\r\n // { text: 'ทรัพย์ชิ้นที่ 3 เป็นต้นไป', value: 'home3_or_else' },\r\n // ]\r\n\r\n // },\r\n // personType: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'personType', label: 'กู้ในนาม', placeholder: \"เลือกกู้ในนาม\",\r\n // option: [\r\n // { text: 'บุคคลธรรมดา', value: 'natural' },\r\n // { text: 'นิติบุคคล', value: 'juristic' },\r\n // ]\r\n\r\n // },\r\n // businessAge: {\r\n // value: '', required: true, errorMessage: '', fieldName: 'businessAge', label: 'ระยะเวลาดำเนินธุรกิจ(ปี)', placeholder: \"เลือกระยะเวลาดำเนินธุรกิจ\",\r\n // option: [\r\n // { text: 'น้อยกว่า 6 เดือน', value: 'less_than_6m' },\r\n // { text: '6 เดือน แต่ไม่ถึง 1 ปี', value: '6m_to_1y' },\r\n // { text: '1-3 ปี', value: '1y_to_3y' },\r\n // { text: 'มากกว่า 3 ปี', value: 'greater_than_3y' },\r\n // ]\r\n\r\n // },\r\n // loanAmount: { value: \"\", fieldName: \"loanAmount\", min: 0, max: 11, from: 0, step: 1, count: 0 },\r\n // loanPeriod: { value: \"\", fieldName: \"loanPeriod\", min: 0, max: 11, from: 0, step: 1, count: 0 },\r\n // maxLimitResult: { value: 0, fieldName: \"maxLimitResult\" },\r\n // installmentResult: { value: 0, fieldName: \"installmentResult\" },\r\n },\r\n loading: null,\r\n },\r\n reducers: {\r\n searchDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].value = value;\r\n },\r\n searchListChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].value = \"\";\r\n state.searchFilter[field].option = value;\r\n },\r\n searchIonRangeChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const from = action.payload.from;\r\n const to = action.payload.to;\r\n\r\n state.searchFilter[field].value = value;\r\n state.searchFilter[field].from = state.searchFilter[field].values.indexOf(from);\r\n if (to === \"MAX\") {\r\n state.searchFilter[field].to = state.searchFilter[field].max;\r\n }\r\n else {\r\n state.searchFilter[field].to = state.searchFilter[field].values.indexOf(to);\r\n }\r\n },\r\n searchIonRangeListChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].values = value;\r\n },\r\n updateIonRange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n\r\n state.searchFilter[field].count += 1;\r\n },\r\n CheckBoxChange: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const value = action.payload.value;\r\n const group = action.payload.group;\r\n\r\n const groupLength = Object.keys(state.searchFilter[group]).length - 2\r\n\r\n state.searchFilter[group][field].value = value;\r\n\r\n const temp = Object.entries(state.searchFilter[group]).map((item) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\" && item[1].value) {\r\n return item[1].code\r\n }\r\n }).filter(x => x);\r\n\r\n state.searchFilter[group].value = temp.length === groupLength ? \"\" : temp.join(',');\r\n\r\n },\r\n ClearSearch: (state, action) => {\r\n console.log(\"clear dis\")\r\n Object.keys(state.searchFilter).forEach(function (key) {\r\n if (key === \"bathroom\" || key === \"bedroom\") {\r\n state.searchFilter[key].value = 0\r\n } else if (key === \"order\") {\r\n // state.searchFilter[key].value = \"new\"\r\n } else {\r\n state.searchFilter[key].value = \"\"\r\n }\r\n });\r\n\r\n state.searchFilter.propertyType.housetype.value = false\r\n state.searchFilter.propertyType.land.value = false\r\n state.searchFilter.propertyType.townhouse.value = false\r\n state.searchFilter.propertyType.condo.value = false\r\n state.searchFilter.propertyType.commercialbuilding.value = false\r\n state.searchFilter.propertyType.warehouse.value = false\r\n state.searchFilter.propertyType.factory.value = false\r\n state.searchFilter.propertyType.apartment.value = false\r\n state.searchFilter.propertyType.office.value = false\r\n state.searchFilter.propertyType.resort.value = false\r\n state.searchFilter.propertyType.houseother.value = false\r\n\r\n state.searchFilter.assetTypes.propertybank.value = false\r\n state.searchFilter.assetTypes.propertywaitsale.value = false\r\n state.searchFilter.assetTypes.partnership.value = false\r\n\r\n state.searchFilter.rangePrice.from = 0\r\n state.searchFilter.rangePrice.to = 0\r\n state.searchFilter.rangePrice.count += 1\r\n state.searchFilter.areaRange.from = 0\r\n state.searchFilter.areaRange.to = 0\r\n state.searchFilter.areaRange.count += 1\r\n state.searchFilter.useableAreaRange.from = 0\r\n state.searchFilter.useableAreaRange.to = 0\r\n state.searchFilter.useableAreaRange.count += 1\r\n\r\n },\r\n updateSearchResultList: (state, action) => {\r\n const field = action.payload.fieldName;\r\n const list = action.payload.list;\r\n const hasMore = action.payload.hasMore;\r\n const TotalRows = action.payload.TotalRows;\r\n const suggest = action.payload.suggest;\r\n\r\n state.searchResult[field].list = list\r\n state.searchResult[field].hasMore = hasMore\r\n state.searchResult[field].TotalRows = TotalRows\r\n state.searchResult[field].suggest = suggest\r\n },\r\n likePropertyList: (state, action) => {\r\n let PropertyObjTemp = action.payload.PropertyObj;\r\n const PropertyID = PropertyObjTemp.PropertyID\r\n const listName = action.payload.listName;\r\n\r\n const like = PropertyObjTemp.like ? false : true\r\n\r\n let likeList = state.searchResult.favoriteProperty.value.split(',')\r\n\r\n if (like && !likeList.includes(PropertyID)) {\r\n state.searchResult.favoriteProperty.value = [...likeList, PropertyID].filter(x => x).join(',')\r\n\r\n } else if (!like && likeList.includes(PropertyID)) {\r\n state.searchResult.favoriteProperty.value = likeList.filter(x => x !== PropertyID).join(',')\r\n }\r\n\r\n var target = state.searchResult[listName].list.find(x => x.PropertyID === PropertyID)\r\n if (target) target.like = like\r\n\r\n\r\n // const PropertyObj = { ...PropertyObjTemp, like: like }\r\n\r\n // var target = state.searchResult.newProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n // target = state.searchResult.promoProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n // target = state.searchResult.popularProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n // target = state.searchResult.recentlyviewedProperty.list.find(x => x.PropertyID === PropertyID)\r\n // if (target) target.like = like\r\n\r\n // // var target = state.searchResult[listName].list.find(x => x.PropertyID === PropertyID)\r\n // // if(target)target.like = like\r\n\r\n\r\n // if (like && !state.searchResult.favoriteProperty.list.find(x => x.PropertyID === PropertyID)) {\r\n // state.searchResult.favoriteProperty.list.push(PropertyObj)\r\n // } else if (!like) {\r\n // state.searchResult.favoriteProperty.list = state.searchResult.favoriteProperty.list.filter(function (obj) {\r\n // return obj.PropertyID !== PropertyID;\r\n // });\r\n // }\r\n\r\n // state.searchResult.favoriteProperty.value = state.searchResult.favoriteProperty.list.map(x => x.PropertyID).join(',')\r\n },\r\n updateLikeInList: (state, action) => {\r\n const listName = action.payload.listName;\r\n const PropertyLikeList = action.payload.PropertyLikeList\r\n const targetList = state.searchResult[listName].list\r\n\r\n if (PropertyLikeList && targetList.length > 0) {\r\n const list = PropertyLikeList.split(',')\r\n Array.from(targetList, x => {\r\n if (list.includes(x.PropertyID)) {\r\n x.like = true\r\n } else {\r\n x.like = false\r\n }\r\n })\r\n }\r\n\r\n },\r\n updatesearchFilterCheckBox: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchFilter[field].value = value\r\n\r\n value.split(',').forEach((valueCode) => {\r\n let toUpdate = Object.keys(state.searchFilter[field]).find(x => state.searchFilter[field][x].code === valueCode)\r\n if (state.searchFilter[field][toUpdate]) {\r\n state.searchFilter[field][toUpdate].value = true\r\n }\r\n })\r\n\r\n Object.keys(state.searchFilter[field]).forEach((key) => {\r\n if (key !== \"fieldName\" && key !== \"value\" && state.searchFilter[field][key].code === value) {\r\n state.searchFilter[field][key].value = true\r\n }\r\n });\r\n },\r\n searchResultDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchResult[field].value = value;\r\n },\r\n OnPropertyListLoading: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchResult[field].isLoading = value;\r\n },\r\n searchResultPageIndexChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.searchResult[field].pageIndex = value;\r\n },\r\n updatePropertyDetail: (state, action) => {\r\n const value = action.payload.value;\r\n state.propertyDetail = value\r\n\r\n // Object.keys(value).forEach((key)=>{\r\n // if(state.propertyDetail[key]){\r\n // state.propertyDetail[key].value = value[key];\r\n // }\r\n // })\r\n },\r\n formsCalcDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const maxValue = action.payload.maxValue;\r\n const minValue = action.payload.minValue;\r\n const errorMessage = action.payload.errorMessage;\r\n const visible = action.payload.visible;\r\n const note = action.payload.note;\r\n\r\n // if (state.calcDetail[field].maxLength) {\r\n // state.calcDetail[field].value = value.slice(0, state.calcDetail[field].maxLength);\r\n // } else {\r\n // state.calcDetail[field].value = value;\r\n // }\r\n\r\n if (value !== undefined) {\r\n state.calcDetail[field].value = value;\r\n }\r\n\r\n if (maxValue !== undefined) {\r\n state.calcDetail[field].maxValue = maxValue;\r\n }\r\n\r\n if (minValue !== undefined) {\r\n state.calcDetail[field].minValue = minValue;\r\n }\r\n\r\n if (errorMessage !== undefined) {\r\n state.calcDetail[field].errorMessage = errorMessage;\r\n }\r\n\r\n if (visible !== undefined) {\r\n state.calcDetail[field].visible = visible;\r\n }\r\n\r\n if (note !== undefined) {\r\n state.calcDetail[field].note = note;\r\n }\r\n },\r\n CalcValidateChange: (state, action) => {\r\n const field = action.payload.field;\r\n const errorMessage = action.payload.errorMessage;\r\n state.calcDetail[field].errorMessage = errorMessage;\r\n },\r\n formsCalcRangeInputChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n if (state.calcDetail[field].maxLength) {\r\n state.calcDetail[field].value = value.slice(0, state.calcDetail[field].maxLength);\r\n } else {\r\n state.calcDetail[field].value = value;\r\n }\r\n state.calcDetail[field].count += 1;\r\n },\r\n formsCalcPropsChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.calcDetail[field] = value;\r\n console.log(field, value)\r\n },\r\n formsDropleadDataChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n const errorMessage = action.payload.errorMessage;\r\n if (state.dropleadDetail[field].maxLength) {\r\n state.dropleadDetail[field].value = value.slice(0, state.dropleadDetail[field].maxLength);\r\n } else {\r\n state.dropleadDetail[field].value = value;\r\n }\r\n\r\n state.dropleadDetail[field].errorMessage = errorMessage;\r\n },\r\n DropleadValidateChange: (state, action) => {\r\n const field = action.payload.field;\r\n const errorMessage = action.payload.errorMessage;\r\n state.dropleadDetail[field].errorMessage = errorMessage;\r\n },\r\n DropleadListChange: (state, action) => {\r\n const field = action.payload.field;\r\n const value = action.payload.value;\r\n\r\n state.dropleadDetail[field].option = value;\r\n },\r\n },\r\n})\r\n\r\n// Action creators are generated for each case reducer function\r\nexport const { searchDataChange, searchListChange, searchIonRangeChange, searchIonRangeListChange, updateIonRange, CheckBoxChange, ClearSearch,\r\n updateSearchResultList, likePropertyList, updatesearchFilterCheckBox, searchResultDataChange, OnPropertyListLoading,\r\n updateLikeInList, searchResultPageIndexChange, updatePropertyDetail,\r\n formsCalcDataChange, CalcValidateChange, formsCalcRangeInputChange, formsCalcPropsChange,\r\n formsDropleadDataChange, DropleadValidateChange, DropleadListChange } = propertySlice.actions\r\n\r\nexport default propertySlice.reducer","import React, { useEffect } from \"react\";\r\nimport { COMPARE_STORE_CONTEXT } from \"./CompareStore\";\r\nimport classnames from \"classnames/bind\";\r\nimport { useObservableState } from \"./UseObservableState\";\r\n\r\nexport const CompareButton = (prop) => {\r\n const compareStore = React.useContext(COMPARE_STORE_CONTEXT);\r\n const isCompare = useObservableState(\r\n compareStore.isExistCompareProperty(prop)\r\n );\r\n\r\n function onAddCompareProperty() {\r\n compareStore.addCompareProperty(prop);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport const CompareButtonWithText = (prop) => {\r\n const compareStore = React.useContext(COMPARE_STORE_CONTEXT);\r\n const isCompare = useObservableState(\r\n compareStore.isExistCompareProperty(prop)\r\n );\r\n\r\n function onAddCompareProperty() {\r\n compareStore.addCompareProperty(prop);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n เปรียบเทียบ{isCompare && \"อยู่\"}\r\n \r\n \r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { gotoSearchPage, areEqualObjValue } from \"./Common\";\r\nimport {\r\n SelectList,\r\n IonRange,\r\n RangeInput,\r\n CounterInput,\r\n CheckBoxIonInput,\r\n CheckBoxCustomInput,\r\n} from \"./Component\";\r\n\r\nimport Config from \"config\";\r\n\r\nconst priceFilter = Config.priceFilter;\r\nconst provinceFilter = Config.provinceFilter;\r\nconst propertyTypeFilter = Config.propertyTypeFilter;\r\n\r\n// axios.defaults.headers.common['Authorization'] = store.getState().Token;\r\n//process.env.API_ROOT_URL\r\n\r\nexport const DeskTopSearch = React.memo((props) => {\r\n const searchFilter = props;\r\n const searchDataChange = props.searchDataChange;\r\n const IonRangeDataChange = props.IonRangeDataChange;\r\n const RangeInputDataChange = props.RangeInputDataChange;\r\n const OnRadioCheck = props.OnRadioCheck;\r\n const GoToSearch = props.GoToSearch;\r\n const ClearSearch = props.ClearSearch;\r\n const OnInputChange = props.OnInputChange;\r\n const hideDesktop = props.hideDesktop;\r\n\r\n const renderAssetTypesCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"asset-type-m\" + index)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n // console.log(\"Desktop Search render\")\r\n\r\n return (\r\n
    \r\n
    \r\n

    ทรัพย์มือสองทำเลดี ทั่วไทย

    \r\n
    \r\n
    \r\n OnInputChange(\"keyword\", e.target.value)}\r\n onKeyPress={(e) => e.key === \"Enter\" && GoToSearch()}\r\n />\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    ค้นหาอย่างละเอียด

    \r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n
    \r\n
    \r\n \r\n
    */}\r\n {Object.entries(searchFilter.assetTypes).map((item, index) =>\r\n renderAssetTypesCheckBox(item, index)\r\n )}\r\n
    \r\n

    ประเภททรัพย์

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n

    ทำเลที่ตั้ง

    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    ช่วงราคา (บาท)

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    เนื้อที่ (ตร.ว.)

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    พื้นที่ใช้สอย (ตร.ม.)

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    ห้องนอน

    \r\n \r\n
    \r\n
    \r\n

    ห้องน้ำ

    \r\n \r\n
    \r\n
    \r\n
    \r\n

    สถานีใกล้เคียง BTS/MRT

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}, areEqual);\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return areEqualObjValue(prevProps, nextProps);\r\n}\r\n\r\nexport const MobileSearch = React.memo((props) => {\r\n const searchFilter = props;\r\n const searchDataChange = props.searchDataChange;\r\n const IonRangeDataChange = props.IonRangeDataChange;\r\n const RangeInputDataChange = props.RangeInputDataChange;\r\n const OnRadioCheck = props.OnRadioCheck;\r\n const GoToSearch = props.GoToSearch;\r\n const ClearSearch = props.ClearSearch;\r\n const OnInputChange = props.OnInputChange;\r\n\r\n const renderCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"property-type-m\" + index)\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const renderAssetTypesCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"asset-type-m\" + index)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n // console.log(\"mobileSearch render\")\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n ค้นหาอย่างละเอียด\r\n

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n OnInputChange(\"keyword\", e.target.value)}\r\n onKeyPress={(e) => e.key === \"Enter\" && GoToSearch()}\r\n />\r\n
    \r\n
    \r\n {Object.entries(searchFilter.assetTypes).map((item, index) =>\r\n renderAssetTypesCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n

    ทำเลที่ตั้ง

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n

    ประเภททรัพย์

    \r\n
    \r\n
    \r\n {Object.entries(searchFilter.propertyType).map((item, index) =>\r\n renderCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    ช่วงราคา (บาท)

    \r\n \r\n \r\n
    \r\n
    \r\n

    เนื้อที่ (ตร.ว.)

    \r\n \r\n \r\n
    \r\n
    \r\n

    พื้นที่ใช้สอย (ตร.ม.)

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    ห้องนอน

    \r\n \r\n
    \r\n
    \r\n

    ห้องน้ำ

    \r\n \r\n
    \r\n
    \r\n
    \r\n

    สถานีใกล้เคียง BTS/MRT

    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}, areEqual);\r\n\r\nexport const TabSearch = (props) => {\r\n const hideDesktop = props.hideDesktop;\r\n\r\n const priceTab = (priceFilter) => {\r\n priceFilter = priceFilter.map((x, index) => {\r\n const M = 1000000;\r\n const begin = x.start ? 0 : x.price * M;\r\n const end = x.start ? x.price * M : x.end ? 0 : x.price2 * M;\r\n const range = begin + (end === 0 ? \"\" : \",\" + end);\r\n\r\n return (\r\n \r\n );\r\n });\r\n\r\n return priceFilter;\r\n };\r\n\r\n const provinceTab = (provinceFilter) => {\r\n provinceFilter = provinceFilter.map((x, index) => {\r\n return (\r\n \r\n );\r\n });\r\n\r\n return provinceFilter;\r\n };\r\n\r\n const propertyTypeTab = (propertyTypeFilter) => {\r\n propertyTypeFilter = propertyTypeFilter.map((x, index) => {\r\n if (x.propertyTypeCode != \"19\") {\r\n return (\r\n \r\n );\r\n }\r\n });\r\n\r\n return propertyTypeFilter;\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n ประเภททรัพย์\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n พื้นที่ยอดนิยม\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n ช่วงราคา\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {propertyTypeTab(propertyTypeFilter)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {provinceTab(provinceFilter)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {priceTab(priceFilter)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport const PopUpSearch = React.memo((props) => {\r\n //Popup Addanve search\r\n const searchFilter = props;\r\n const OnInputChange = props.OnInputChange;\r\n const searchDataChange = props.searchDataChange;\r\n const IonRangeDataChange = props.IonRangeDataChange;\r\n const RangeInputDataChange = props.RangeInputDataChange;\r\n const OnRadioCheck = props.OnRadioCheck;\r\n const GoToSearch = props.GoToSearch;\r\n const ClearSearch = props.ClearSearch;\r\n\r\n const [rangeMin, setRangeMin] = useState(\"\");\r\n const [rangeMax, setRangeMax] = useState(\"\");\r\n const [areaMin, setAreaMin] = useState(\"\");\r\n const [areaMax, setAreaMax] = useState(\"\");\r\n const [useableAreaMin, setUseableAreaMin] = useState(\"\");\r\n const [useableAreaMax, setUseableAreaMax] = useState(\"\");\r\n\r\n// const [bedroom, setBedroom] = useState(\"\");\r\n// const [bathroom, setBathroom] = useState(\"\");\r\n\r\n const handleRadioChange = (type, value) => {\r\n if (type === \"bedroom\") {\r\n // setBedroom(value);\r\n OnInputChange(\"bedroom\", value)\r\n } else if (type === \"bathroom\") {\r\n // setBathroom(value);\r\n OnInputChange(\"bathroom\", value)\r\n }\r\n // Call any other function or logic you want here\r\n };\r\n\r\n const minMaxString = (min, max) => {\r\n console.log(min, max);\r\n if (!min && !max) {\r\n return \"\";\r\n } else if (!min) {\r\n return `0,${max}`;\r\n } else if (!max) {\r\n return min;\r\n } else {\r\n return `${min},${max}`;\r\n }\r\n };\r\n\r\n const onRangeChange = (field, value) => {\r\n if (field == \"min\") {\r\n setRangeMin(value);\r\n OnInputChange(\"rangeField\", minMaxString(value, rangeMax));\r\n } else {\r\n setRangeMax(value);\r\n OnInputChange(\"rangeField\", minMaxString(rangeMin, value));\r\n }\r\n };\r\n\r\n const onAreaChange = (field, value) => {\r\n if (field == \"min\") {\r\n setAreaMin(value);\r\n OnInputChange(\"areaField\", minMaxString(value, areaMax));\r\n } else {\r\n setAreaMax(value);\r\n OnInputChange(\"areaField\", minMaxString(areaMin, value));\r\n }\r\n };\r\n\r\n const onUseableAreaChange = (field, value) => {\r\n if (field == \"min\") {\r\n setUseableAreaMin(value);\r\n OnInputChange(\"useableAreaField\", minMaxString(value, useableAreaMax));\r\n } else {\r\n setUseableAreaMax(value);\r\n OnInputChange(\"useableAreaField\", minMaxString(useableAreaMin, value));\r\n }\r\n };\r\n\r\n const handleClearSearch = () => {\r\n setRangeMin(\"\");\r\n setRangeMax(\"\");\r\n setAreaMin(\"\");\r\n setAreaMax(\"\");\r\n setUseableAreaMin(\"\");\r\n setUseableAreaMax(\"\");\r\n ClearSearch();\r\n };\r\n\r\n const renderCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"property-type-m\" + index)\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n const renderAssetTypesCheckBox = (item, index) => {\r\n if (item[0] !== \"fieldName\" && item[0] !== \"value\") {\r\n const fieldName = item[0];\r\n const data = item[1];\r\n // console.log('item', fieldName, data,item[1]);\r\n // console.log(\"asset-type-m\" + index)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n

    ค้นหาอย่างละเอียด

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n OnInputChange(\"keyword\", e.target.value)}\r\n onKeyPress={(e) => e.key === \"Enter\" && GoToSearch()}\r\n />\r\n \r\n
    \r\n
    \r\n {Object.entries(searchFilter.assetTypes).map((item, index) =>\r\n renderAssetTypesCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n

    ทำเลที่ตั้ง

    \r\n \r\n \r\n \r\n
    \r\n
    \r\n

    ประเภททรัพย์

    \r\n
    \r\n
    \r\n {Object.entries(searchFilter.propertyType).map((item, index) =>\r\n renderCheckBox(item, index)\r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    ช่วงราคา

    \r\n
    \r\n onRangeChange(\"min\", e.target.value)}\r\n />\r\n -\r\n onRangeChange(\"max\", e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    เนื้อที่

    \r\n
    \r\n onAreaChange(\"min\", e.target.value)}\r\n />\r\n -\r\n onAreaChange(\"max\", e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    พื้นที่ใช้สอย

    \r\n
    \r\n onUseableAreaChange(\"min\", e.target.value)}\r\n />\r\n -\r\n onUseableAreaChange(\"max\", e.target.value)}\r\n />\r\n
    \r\n
    \r\n
    \r\n

    ห้องนอน

    \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"1\")}\r\n checked={searchFilter.bedroom.value === \"1\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"2\")}\r\n checked={searchFilter.bedroom.value === \"2\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"3\")}\r\n checked={searchFilter.bedroom.value === \"3\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"4\")}\r\n checked={searchFilter.bedroom.value === \"4\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"5\")}\r\n checked={searchFilter.bedroom.value === \"5\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bedroom\", \"\")}\r\n checked={searchFilter.bedroom.value === \"\"}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n

    ห้องน้ำ

    \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"1\")}\r\n checked={searchFilter.bathroom.value === \"1\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"2\")}\r\n checked={searchFilter.bathroom.value === \"2\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"3\")}\r\n checked={searchFilter.bathroom.value === \"3\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"4\")}\r\n checked={searchFilter.bathroom.value === \"4\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"5\")}\r\n checked={searchFilter.bathroom.value === \"5\"}\r\n />\r\n \r\n
    \r\n
    \r\n handleRadioChange(\"bathroom\", \"\")}\r\n checked={searchFilter.bathroom.value === \"\"}\r\n />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n}, areEqual);\r\n","import React, { useEffect } from \"react\";\r\nimport Config from \"config\";\r\n\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\n\r\nimport { DeskTopSearch, MobileSearch, TabSearch, PopUpSearch } from \"./SearchHeader\";\r\nimport {\r\n searchDataChange,\r\n searchIonRangeChange,\r\n searchListChange,\r\n updateIonRange,\r\n CheckBoxChange,\r\n ClearSearch,\r\n} from \"../stores/propertySlice\";\r\nimport {\r\n gotoSearchPage,\r\n getApiDataAsync,\r\n areEqualObjValue,\r\n valueRangeMaxMin,\r\n commonSearchDataChange,\r\n} from \"./Common\";\r\nimport province from \"province\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst $ = window.$;\r\n\r\nexport const HeaderNav = (props) => {\r\n const Body = (props) => {\r\n let searchBtn;\r\n if (false && props.searchBtn) {\r\n searchBtn = (\r\n
    \r\n {/* \r\n */}\r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n useEffect(() => {\r\n $(\".open-search\").on(\"click\", function () {\r\n $(\".close-search\").removeClass(\"d-none\");\r\n $(\".open-search\").addClass(\"d-none\");\r\n $(\"#search-wrapper\").removeClass(\"d-none\");\r\n $(\"#property-tab-search\").removeClass(\"d-none\");\r\n // var galleryContainerPos = document.querySelector(\".gallery-container\").getBoundingClientRect().bottom;\r\n // if (galleryContainerPos <= 0) {\r\n // $(\"#header-placeholder\").height($(\"#header\").height());\r\n // }\r\n $(\"#header\").addClass(\"fixed\");\r\n // $(\"#icw\").append(\r\n // '
    '\r\n // );\r\n $(\"body\").css({\r\n height: \"100%\",\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n touchAction: \"none\",\r\n \"-ms-touch-action\": \"none\",\r\n });\r\n });\r\n\r\n $(\".close-search\").on(\"click\", function () {\r\n var scrollPos = $(window).scrollTop();\r\n $(\".close-search\").addClass(\"d-none\");\r\n $(\".open-search\").removeClass(\"d-none\");\r\n $(\"#search-wrapper\").addClass(\"d-none\");\r\n $(\"#property-tab-search\").addClass(\"d-none\");\r\n\r\n if (scrollPos <= 0) {\r\n $(\"#header\").removeClass(\"fixed\");\r\n }\r\n $(\"#more-filter-desktop\").height(0);\r\n $(\"#header-placeholder\").height(0);\r\n $(\".more-filter-btn.close\").css({ display: \"\" });\r\n $(\".more-filter-btn.desktop\").css({ display: \"\" });\r\n $(\"#backdrop\").remove();\r\n $(\"body\").css({\r\n height: \"auto\",\r\n overflow: \"auto\",\r\n position: \"initial\",\r\n touchAction: \"auto\",\r\n \"-ms-touch-action\": \"auto\",\r\n });\r\n $(\"#icw #header\").css({\r\n height: \"\",\r\n overflow: \"\",\r\n });\r\n });\r\n }, []);\r\n } else {\r\n searchBtn = (\r\n
    \r\n \r\n \"Search\"/\r\n \r\n {/* \r\n */}\r\n \r\n
    \r\n );\r\n // useEffect(() => {\r\n // $(\".open-search\").on(\"click\", function () {\r\n // $(\".search-section\").removeClass(\"d-none\");\r\n\r\n // // $(\"#header-placeholder\").height($(\"#header\").height());\r\n // $(\"#inner-header-placeholder\").height(0);\r\n // $(\"#inner-header\").removeClass(\"fixed\");\r\n // $(\"#header\").addClass(\"fixed\");\r\n // $(\".open-search\").addClass(\"d-none\");\r\n // $(\".close-search\").removeClass(\"d-none\");\r\n\r\n // // $(\"#icw\").append(\r\n // // '
    '\r\n // // );\r\n // $(\"body\").css({\r\n // height: \"100%\",\r\n // overflow: \"hidden\",\r\n // position: \"relative\",\r\n // touchAction: \"none\",\r\n // \"-ms-touch-action\": \"none\",\r\n // });\r\n // });\r\n\r\n // $(\".close-search\").on(\"click\", function () {\r\n // $(\".search-section\").addClass(\"d-none\")\r\n\r\n // $(\"#inner-header-placeholder\").height($(\"#inner-header\").height());\r\n // // $(\"#header-placeholder\").height(0);\r\n // $(\"#inner-header\").addClass(\"fixed\");\r\n // $(\"#header\").removeClass(\"fixed\");\r\n // $(\".open-search\").removeClass(\"d-none\");\r\n // $(\".close-search\").addClass(\"d-none\");\r\n\r\n // $(\"#backdrop\").remove();\r\n // $(\"body\").css({\r\n // height: \"auto\",\r\n // overflow: \"auto\",\r\n // position: \"initial\",\r\n // touchAction: \"auto\",\r\n // \"-ms-touch-action\": \"auto\",\r\n // });\r\n\r\n // // Close more filter on desktop\r\n // if (window.innerWidth >= 1025) {\r\n // $(\"#icw #header\").css({\r\n // backgroundImage: \"\",\r\n // // padding: 0,\r\n // height: \"\",\r\n // overflow: \"hidden\",\r\n // });\r\n\r\n // $(\"#more-filter-desktop\").animate({ height: 0 });\r\n // $(\".more-filter-btn.close\").css({ display: \"\" });\r\n // $(\".more-filter-btn.desktop\").css({ display: \"\" });\r\n // }\r\n // });\r\n // }, []);\r\n }\r\n\r\n useEffect(() => {\r\n $('link[href*=\"/_catalogs/masterpage/KWeb2016/assets/css/style-en.css\"]').attr('disabled', 'disabled');\r\n }, []);\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n สินเชื่อเพื่อที่อยู่อาศัย\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n สินเชื่อเพื่อลงทุนในสินทรัพย์ถาวร\r\n \r\n \r\n
    • \r\n
    \r\n \r\n {/*
  • \r\n สินเชื่อบ้านมือสอง\r\n
  • */}\r\n
  • \r\n คำถามที่พบบ่อย\r\n
  • \r\n \r\n \r\n {searchBtn}\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n //hamburger menu\r\n document.querySelectorAll(\"#inner-header .logo-wrap a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"header\",\r\n event_action: \"click\",\r\n event_label: e.target.alt,\r\n });\r\n });\r\n });\r\n\r\n //header menu\r\n document.querySelectorAll(\"#inner-header .header-center a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"header\",\r\n event_action: \"click\",\r\n event_label: e.target.innerText,\r\n });\r\n });\r\n });\r\n });\r\n\r\n if (props.wrap) {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport const MobileNav = () => {\r\n useEffect(() => {\r\n //ทราบจำนวนคลิกในส่วน header\r\n document.querySelectorAll(\"#mobile-menu > div.offcanvas-body > ul\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"header\",\r\n event_action: \"click\",\r\n event_label: e.target.innerText,\r\n });\r\n });\r\n });\r\n }, []);\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n สินเชื่อเพื่อที่อยู่อาศัย\r\n \r\n
    • \r\n
    • \r\n \r\n สินเชื่อเพื่อลงทุนในสินทรัพย์ถาวร\r\n \r\n
    • \r\n
    \r\n \r\n {/*
  • \r\n สินเชื่อบ้านมือสอง\r\n
  • */}\r\n
  • \r\n คำถามที่พบบ่อย\r\n
  • \r\n
  • \r\n \r\n {\" \"}\r\n หน้าหลัก{\" \"}\r\n \r\n
  • \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport const HeaderWithSearch = (props) => {\r\n const [searchFilter] = useSelector((state) => [state.property.searchFilter]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n );\r\n};\r\n\r\nconst Header = React.memo((props) => {\r\n const searchFilter = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n getApiDataAsync({\r\n urlPath: \"/RequestStations\",\r\n })\r\n .then((data) => {\r\n var list = Array.from(data, (x) => {\r\n return {\r\n text: x.StationNameTH,\r\n value: x.StationID,\r\n title: x.PlaceType,\r\n location: { Latitude: x.Latitude, Longitude: x.Longitude },\r\n };\r\n });\r\n\r\n list = [...list].sort(function (a, b) {\r\n return a.text.localeCompare(b.text);\r\n });\r\n\r\n dispatch(searchListChange({ field: \"station\", value: list }));\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n // alertErrorAsync(error);\r\n })\r\n .then(() => {\r\n dispatch(searchListChange({ field: \"province\", value: province }));\r\n });\r\n\r\n //Tagging\r\n PDT_Header();\r\n }, []);\r\n\r\n function OnSearchDataChange(payload) {\r\n commonSearchDataChange(dispatch, payload, searchFilter, searchDataChange, OnsearchListChange);\r\n // const field = payload.field;\r\n // if (field === \"province\") {\r\n // const list = searchFilter[field].option.find(x => x.value == payload.value)\r\n\r\n // OnsearchListChange({ field: \"district\", value: list.child })\r\n // OnsearchListChange({ field: \"subDistrict\", value: [] })\r\n // } else if (field === \"district\") {\r\n // const list = searchFilter[field].option.find(x => x.value == payload.value)\r\n\r\n // OnsearchListChange({ field: \"subDistrict\", value: list.child })\r\n // }\r\n // dispatch(searchDataChange(payload))\r\n }\r\n\r\n function OnsearchListChange(payload) {\r\n dispatch(searchListChange(payload));\r\n }\r\n\r\n function OnInputChange(fieldName, value) {\r\n // const value = e.target.value\r\n dispatch(searchDataChange({ field: fieldName, value: value }));\r\n }\r\n\r\n function OnIonRangeDataChange(fieldName, from, to) {\r\n const payload = valueRangeMaxMin(fieldName, from, to);\r\n console.log(fieldName, payload.value);\r\n dispatch(searchIonRangeChange(payload));\r\n }\r\n\r\n function OnRangeInputDataChange(fieldName, from, to) {\r\n const payload = valueRangeMaxMin(fieldName, from, to);\r\n console.log(fieldName, payload.value);\r\n dispatch(searchIonRangeChange(payload));\r\n dispatch(updateIonRange({ fieldName }));\r\n }\r\n\r\n function OnRadioCheck(fieldName, value, group) {\r\n console.log(fieldName, value, group);\r\n dispatch(CheckBoxChange({ fieldName, value, group }));\r\n }\r\n\r\n function GoToSearch() {\r\n console.log(\"search\", isExpand());\r\n\r\n var url = \"\";\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n if (isExpand()) {\r\n url = gotoSearchPage(searchFilter);\r\n var search_text = searchFilter.keyword.value;\r\n\r\n var search_location = [\r\n searchFilter.province.value,\r\n searchFilter.district.value,\r\n searchFilter.subDistrict.value,\r\n ]\r\n .filter((x) => x)\r\n .join(\",\");\r\n\r\n var search_filter_1 = [\r\n searchFilter.propertyType.value,\r\n searchFilter.rangePrice.value,\r\n searchFilter.areaRange.value,\r\n searchFilter.useableAreaRange.value,\r\n searchFilter.bedroom.value,\r\n searchFilter.bathroom.value,\r\n searchFilter.station.value,\r\n ]\r\n .filter((x) => x)\r\n .join(\",\");\r\n\r\n var search_filter_2 = searchFilter.assetTypes.value;\r\n window.dataLayer.push({\r\n event: \"submitSearch\",\r\n eventCategory: \"search\",\r\n eventAction: \"submit_filters_NPA\",\r\n eventLabel: `ค้นหาทรัพย์มือสองทำเลดีทั่วไทย`, //`ค้นหาทรัพย์มือสองทำเลดีทั่วไทย_${url}`, //หน้าที่ค้นหา\r\n dimension49: `${search_text}`, //คำค้นหา\r\n dimension7: `${search_location}`, //จังหวัด,อำเภอ,ตำบล\r\n dimension50: `${search_filter_1}`, //ประเภททรัพย์,ช่วงราคา,เนื้อที่,พื้นที่ใช้สอย,ห้องนอน,ห้องน้ำ,สถานีใกล้เคียง\r\n dimension51: `${search_filter_2}`, //ทรัพย์โปรโมชั่น,ทรัพย์ฝากขาย\r\n });\r\n } else {\r\n url = gotoSearchPage({ keyword: searchFilter.keyword.value });\r\n window.dataLayer.push({\r\n event: \"submitSearch\",\r\n eventCategory: \"search\",\r\n eventAction: \"submit_filters_NPA\",\r\n eventLabel: `ค้นหาทรัพย์มือสองทำเลดีทั่วไทย`, //`ค้นหาทรัพย์มือสองทำเลดีทั่วไทย_${url}`, //หน้าที่ค้นหา\r\n dimension49: `${searchFilter.keyword.value}`, //คำค้นหา\r\n dimension7: \"\", //จังหวัด,อำเภอ,ตำบล\r\n dimension50: \"\", //ประเภททรัพย์,ช่วงราคา,เนื้อที่,พื้นที่ใช้สอย,ห้องนอน,ห้องน้ำ,สถานีใกล้เคียง\r\n dimension51: \"\", //ทรัพย์โปรโมชั่น,ทรัพย์ฝากขาย\r\n });\r\n }\r\n\r\n console.log(url);\r\n window.open(url, \"_self\");\r\n }\r\n\r\n function OnClearSearch() {\r\n console.log(\"Clear Filter\");\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"NPA-MAIN-2022\",\r\n event_action: \"event_click\",\r\n event_label: \"ล้างการค้นหา\",\r\n });\r\n dispatch(ClearSearch());\r\n }\r\n\r\n function isExpand() {\r\n return (\r\n $(\"#more-filter-desktop\").css(\"height\") != \"0px\" || $(\"#more-filter-mobile\").hasClass(\"show\")\r\n );\r\n }\r\n\r\n console.log(\"Header Render\");\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n {/* < DeskTopSearch hideDesktop={props.hideDesktop} {...searchFilter} searchDataChange={OnSearchDataChange} IonRangeDataChange={OnIonRangeDataChange} RangeInputDataChange={OnRangeInputDataChange} OnRadioCheck={OnRadioCheck} GoToSearch={GoToSearch} ClearSearch={OnClearSearch} OnInputChange={OnInputChange} /> */}\r\n
    \r\n {/* */}\r\n
    \r\n \r\n \r\n {/* */}\r\n \r\n );\r\n}, areEqualObjValue);\r\n\r\nfunction PDT_Header() {\r\n window.dataLayer = window.dataLayer || [];\r\n //advance search filter\r\n document\r\n .querySelectorAll(\".more-filter-btn.mobile,.more-filter-btn.desktop\")\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"search_filter\",\r\n event_action: \"event_click\",\r\n event_label: \"เลือกวิธีการค้นหาขั้นสูง\",\r\n });\r\n });\r\n });\r\n\r\n //clear advanced filter\r\n document\r\n .querySelectorAll(\"#more-filter-desktop > div > div.row.mt-3 > div > div > button.clear-data\")\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"NPAhome2022\",\r\n event_action: \"event_click\",\r\n event_label: \"ล้างการค้นหา\",\r\n });\r\n });\r\n });\r\n\r\n //correct filter tab content ถ้าไม่หน่วงเวลา ช่วงราคาจะไม่ขึ้น\r\n document.querySelectorAll(\"#property-tab-search .property-nav-wrap a\").forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n setTimeout(\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: \"Tab_content\",\r\n event_action: \"click\",\r\n event_label: e.target.innerText,\r\n }),\r\n 3000\r\n );\r\n });\r\n });\r\n\r\n //correct property filter selected\r\n document\r\n .querySelectorAll(\r\n \"#assets-type-tabs .swiper-slide a,#assets-type-tabs2 .swiper-slide a,#assets-type-tabs3 .swiper-slide a\"\r\n )\r\n .forEach(function (item) {\r\n item.addEventListener(\"click\", function (e) {\r\n window.dataLayer.push({\r\n event: \"track_event\",\r\n event_category: document.querySelector(\"#property-tab-search .nav-item .nav-link.active\")\r\n .innerText,\r\n event_action: \"click\",\r\n event_label: e.target.innerText.replace(/\\s/g, \"\"),\r\n });\r\n });\r\n });\r\n}\r\n","import Config from \"config\";\r\nimport React from \"react\";\r\nimport { addCommas, getPropertyType } from \"../common/Common\";\r\nimport { COMPARE_STORE_CONTEXT } from \"./CompareStore\";\r\nimport \"./Comparision.css\";\r\nimport { useObservableState } from \"./UseObservableState\";\r\nconst { map } = rxjs.operators;\r\n\r\nconst pagesLink = Config.pagesLink;\r\nconst mediaURLPrefix = Config.mediaURLPrefix;\r\nconst defaultThumbnailURL = Config.defaultThumbnailURL;\r\n\r\nfunction getPropertyName(property) {\r\n if (Object.keys(property).length === 0) return \"\";\r\n\r\n let propertyName = \"\";\r\n\r\n if (property.VillageTH && property.VillageTH !== \"-\") {\r\n propertyName = property.VillageTH;\r\n if (propertyName.length > 46) {\r\n propertyName = propertyName.slice(0, 50) + \"...\";\r\n }\r\n } else {\r\n propertyName = `${getPropertyType(property)} ${property.ProvinceName}`;\r\n }\r\n\r\n return propertyName;\r\n}\r\n\r\nfunction getPropertyImage(property) {\r\n const propertyMediaes = property?.PropertyMediaes?.[0];\r\n return `${mediaURLPrefix}${propertyMediaes?.MediaPath}`;\r\n}\r\n\r\nexport const Comparision = () => {\r\n const compareStore = React.useContext(COMPARE_STORE_CONTEXT);\r\n const comparePropertyLength = useObservableState(\r\n compareStore.comparePropertyLength$\r\n );\r\n\r\n function onRemoveAllCompareProperty() {\r\n compareStore.removeAllCompareProperty();\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n

    เปรียบเทียบทรัพย์

    \r\n \r\n ({comparePropertyLength}/5)\r\n \r\n
    \r\n \r\n กรุณาเลือกอย่างน้อย 2 รายการ เพื่อทำการเปรียบเทียบ\r\n \r\n
    \r\n
    \r\n \r\n \r\n เปรียบเทียบ\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n เปรียบเทียบ\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst AllCardCompare = () => {\r\n const compareStore = React.useContext(COMPARE_STORE_CONTEXT);\r\n const comparePropertyList = useObservableState(\r\n compareStore.getComparePropertyList\r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n {comparePropertyList?.map((item) => (\r\n \r\n ))}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst GenerateCard = (prop) => {\r\n const compareStore = React.useContext(COMPARE_STORE_CONTEXT);\r\n\r\n const propertyName = getPropertyName(prop);\r\n const propertyImage = getPropertyImage(prop);\r\n\r\n function onRemoveCompareProperty() {\r\n compareStore.removeCompareProperty(prop);\r\n }\r\n\r\n return Object.keys(prop).length === 0 ? (\r\n \r\n
    \r\n \r\n
    \r\n
    เพิ่มทรัพย์
    \r\n
    \r\n ) : (\r\n
    \r\n
    \r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n }}\r\n alt={propertyName}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n {\r\n currentTarget.onerror = null; // prevents looping\r\n currentTarget.src = defaultThumbnailURL;\r\n }}\r\n alt={propertyName}\r\n />\r\n
    \r\n
    \r\n
    {propertyName}
    \r\n
    \r\n \r\n

    {`${prop.AmphurName} ${prop.ProvinceName}`}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {addCommas(\r\n prop.PromotionPrice ? prop.PromotionPrice : prop.SellPrice\r\n )}\r\n \r\n บาท\r\n
    \r\n {prop.PromotionPrice && (\r\n
    {addCommas(prop.SellPrice)}
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import classNames from \"classnames/bind\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { COMPARE_STORE_CONTEXT } from \"./CompareStore\";\r\nimport { Comparision } from \"./Comparision\";\r\nimport { useObservableState } from \"./UseObservableState\";\r\nimport \"./FloatingCompareButton.css\";\r\n\r\nexport const FloatingCompareButton = () => {\r\n const compareStore = React.useContext(COMPARE_STORE_CONTEXT);\r\n const comparePropertyLength = useObservableState(\r\n compareStore.comparePropertyLength$\r\n );\r\n\r\n window.setCompareProperty = setCompareGlobal;\r\n\r\n function setCompareGlobal(prop) {\r\n compareStore.addCompareProperty(prop)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n

    {comparePropertyLength}

    \r\n \r\n
    \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n// ReactDOM.render(\r\n// ,\r\n// document.getElementById(\"react-app-floating-compare-button\")\r\n// );\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { getCookie } from \"../common/Common\";\r\nimport Config from \"config\";\r\nimport { FloatingCompareButton } from \"../Compare/FloatingCompareButton\";\r\nimport { setLikeProperty } from \"../common/Common\";\r\n\r\nconst pagesLink = Config.pagesLink;\r\n\r\nconst $ = window.$;\r\n\r\nexport const LoginFooter = (props) => {\r\n const [likeCount, setLikeCount] = useState(0);\r\n\r\n if (props.favoritePropertyValue === undefined) {\r\n useEffect(() => {\r\n setInterval(() => {\r\n var count = getCookie(\"favoriteProperty\")\r\n .split(\",\")\r\n .filter((x) => x).length;\r\n if (count != likeCount) {\r\n setLikeCount(count);\r\n }\r\n }, 1000);\r\n }, []);\r\n }\r\n\r\n function favClick() {\r\n if (props.favClick) {\r\n props.favClick();\r\n } else {\r\n goToUrl(\"/th/propertyforsale/pages/favorite.aspx\");\r\n // goToUrl(pagesLink.search + \"?Tab=favoriteProperty\");\r\n }\r\n }\r\n\r\n function loginClick() {\r\n goToUrl(pagesLink.login);\r\n }\r\n\r\n function recentlyClick() {\r\n if (props.recentlyClick) {\r\n props.recentlyClick();\r\n } else {\r\n goToUrl(pagesLink.search + \"?Tab=recentlyviewedProperty\");\r\n }\r\n }\r\n\r\n function goToUrl(url) {\r\n window.open(url, \"_self\");\r\n }\r\n\r\n window.setLikeProperty = tempFunction;\r\n\r\n function tempFunction(a, b) {\r\n setLikeProperty(a, b);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {props.favoritePropertyValue !== undefined ? (\r\n
    \r\n
    \r\n {/*
    \r\n \r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length !== 0 && (\r\n \r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length}\r\n \r\n )}\r\n ทรัพย์ถูกใจ\r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length !== 0 && (\r\n \r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length}\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n ตั้งค่าทรัพย์ตรงใจ\r\n
    \r\n
    \r\n \r\n ดูล่าสุด\r\n
    */}\r\n \r\n
    \r\n \r\n หน้าหลัก\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length !== 0 && (\r\n \r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length}\r\n \r\n )}\r\n ทรัพย์ถูกใจ\r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length !== 0 && (\r\n \r\n {props.favoritePropertyValue.split(\",\").filter((x) => x).length}\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n โปรโมชัน\r\n
    \r\n
    \r\n
    \r\n
    \r\n ) : (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n หน้าหลัก\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {likeCount !== 0 && {likeCount}}\r\n ทรัพย์ถูกใจ\r\n {likeCount !== 0 && {likeCount}}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n โปรโมชัน\r\n
    \r\n
    \r\n {/*
    \r\n \r\n ตั้งค่าทรัพย์ตรงใจ\r\n
    \r\n
    \r\n \r\n {likeCount !== 0 && {likeCount}}\r\n ทรัพย์ถูกใจ\r\n {likeCount !== 0 && {likeCount}}\r\n
    \r\n
    \r\n \r\n ดูล่าสุด\r\n
    */}\r\n
    \r\n
    \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst InfoFooter = () => {\r\n const PropertyforsaleLinkComponent = () => {\r\n return (\r\n \r\n บ้านมือสอง\r\n \r\n );\r\n };\r\n\r\n const HouseLinkComponent = () => {\r\n return (\r\n \r\n บ้านเดี่ยว\r\n \r\n );\r\n };\r\n const TownhouseLinkComponent = () => {\r\n return (\r\n \r\n ทาวน์เฮ้าส์\r\n \r\n );\r\n };\r\n const CondominiumLinkComponent = () => {\r\n return (\r\n \r\n คอนโดมิเนียม\r\n \r\n );\r\n };\r\n const CommercialBuildingLinkComponent = () => {\r\n return (\r\n \r\n อาคารพาณิชย์\r\n \r\n );\r\n };\r\n const LandLinkComponent = () => {\r\n return (\r\n \r\n ที่ดิน\r\n \r\n );\r\n };\r\n\r\n const AllLinkComponent = (props) => {\r\n return (\r\n <>\r\n {props.showHomePage && } {\" \"}\r\n {\" \"}\r\n และ {\" \"}\r\n \r\n );\r\n };\r\n if (window.location.pathname.indexOf(\"/th/propertyforsale/search\") != -1) {\r\n return (\r\n
    \r\n
    \r\n

    ค้นหาทรัพย์ขายทอดตลาด บ้านหลุดจำนองราคาพิเศษ

    \r\n

    \r\n ค้นหาทรัพย์ที่ถูกใจได้ง่ายๆ ทรัพย์รอการขายกสิกรไทยที่คัดสรรทรัพย์ขายทอดตลาดจากทั่วประเทศ\r\n คัด คุ้ม ครบ เช่น \r\n เพื่อตอบโจทย์ทุกความต้องการของคุณ\r\n

    \r\n
    \r\n
    \r\n );\r\n } else if (window.location.pathname.indexOf(\"/th/propertyforsale/promotion\") != -1) {\r\n return (\r\n
    \r\n
    \r\n

    โปรโมชันทรัพย์สินรอการขาย ธนาคารกสิกรไทย

    \r\n

    \r\n เลือกหาทรัพย์ที่ถูกใจ ในราคาพิเศษแบบ คัด คุ้ม ครบ กับโปรโมชันทรัพย์สินรอการขายจาก\r\n ธนาคารกสิกรไทย เช่น \r\n เพื่อตอบโจทย์ทุกความต้องการของคุณ\r\n

    \r\n
    \r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n {/*
    */}\r\n

    ทรัพย์สินรอการขาย ทรัพย์ธนาคารกสิกรไทย

    \r\n

    \r\n รวมทรัพย์รอการขายยอดนิยม ทรัพย์ธนาคารราคาพิเศษ เช่น \r\n จากทั่วประเทศ คัดสรรบ้านมือสองตอบโจทย์ทุกความต้องการ ไม่ว่าจะเพื่ออยู่อาศัยหรือการลงทุน\r\n

    \r\n {/*
    */}\r\n
    \r\n );\r\n};\r\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./Comparision.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".wrap-detail-card {\\r\\n overflow: hidden !important;\\r\\n}\\r\\n\\r\\n.wrap-title {\\r\\n white-space: nowrap !important;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/Compare/Comparision.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,2BAA2B;AAC7B;;AAEA;EACE,8BAA8B;AAChC\",\"sourcesContent\":[\".wrap-detail-card {\\r\\n overflow: hidden !important;\\r\\n}\\r\\n\\r\\n.wrap-title {\\r\\n white-space: nowrap !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./FloatingCompareButton.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#comparision .container .wrap-img img {\\r\\n height: 100%;\\r\\n width: 100%;\\r\\n\\r\\n object-fit: cover;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/Compare/FloatingCompareButton.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,YAAY;EACZ,WAAW;;EAEX,iBAAiB;AACnB\",\"sourcesContent\":[\"#comparision .container .wrap-img img {\\r\\n height: 100%;\\r\\n width: 100%;\\r\\n\\r\\n object-fit: cover;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","export const auctionDetailLink = \"https://www.kasikornbank.com/th/propertyforsale/promotion/pages/npa-auction-2024.aspx#howto\";","module.exports = configs;","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./index.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(true);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#icw .qrcode-container canvas {\\r\\n display: block;\\r\\n margin: 20px auto;\\r\\n width: 128px;\\r\\n}\\r\\n\\r\\n.AfterShowOpacity::after {\\r\\n opacity: 1 !important;\\r\\n}\\r\\n\\r\\n.c-black {\\r\\n color: #333 !important;\\r\\n}\\r\\n\\r\\n.mousePointer {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.grecaptcha-badge {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.myMap {\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\n#error-popup .popup-modal,\\r\\n#error-popup .popup-inner {\\r\\n height: auto;\\r\\n}\\r\\n\\r\\n#icw .special-price,\\r\\n#icw .lower-price {\\r\\n color: var(--red-color-1);\\r\\n}\\r\\n\\r\\n.c-red {\\r\\n color: var(--red-color-1) !important;\\r\\n}\\r\\n\\r\\n.remark-h2 {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\n.remark-h3 {\\r\\n font-size: 18px;\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\ndiv:has(> .remark-h2) {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n@media print {\\r\\n .no-print,\\r\\n .no-print *,\\r\\n #PolicyCookies,\\r\\n .webchatbox,\\r\\n header {\\r\\n display: none !important;\\r\\n }\\r\\n #icw .desktop-content {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n }\\r\\n #icw .mobile-content > .property-tab,\\r\\n #icw .mobile-content .heading-wrapper,\\r\\n #icw .desktop-content .right,\\r\\n #icw .desktop-content .left .breadcrumbs-container,\\r\\n #icw .desktop-content .left #property-summary,\\r\\n #icw .desktop-content .left .detail-container {\\r\\n display: none;\\r\\n }\\r\\n #icw .desktop-content .right,\\r\\n footer {\\r\\n display: none;\\r\\n }\\r\\n #icw .desktop-content .left {\\r\\n width: 100%;\\r\\n }\\r\\n #icw .map-wrapper {\\r\\n height: 500px;\\r\\n width: 500px;\\r\\n margin: auto;\\r\\n }\\r\\n .pagebreak {\\r\\n page-break-before: always;\\r\\n }\\r\\n #icw .calculate-desk {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n margin: 0 auto;\\r\\n }\\r\\n #icw .calculate-group {\\r\\n width: 47%;\\r\\n }\\r\\n #icw .calculate-inner {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n justify-content: space-between;\\r\\n margin: 0 auto;\\r\\n }\\r\\n #icw .gallery-sm-swiper {\\r\\n margin: 0;\\r\\n padding-bottom: 0;\\r\\n }\\r\\n #icw .qrcode-container canvas {\\r\\n margin: 0 auto;\\r\\n }\\r\\n #icw .desktop-content .left {\\r\\n padding: 0;\\r\\n }\\r\\n #icw .detail-swiper {\\r\\n padding: 0;\\r\\n }\\r\\n #icw .scroll-pagi {\\r\\n display: none;\\r\\n }\\r\\n}\\r\\n/* from icweb may 2024*/\\r\\n\\r\\n.tag-properties {\\r\\n line-height: 38px;\\r\\n color: #33ba72;\\r\\n padding: 0 16px;\\r\\n border-radius: 20px;\\r\\n display: inline-block;\\r\\n border: 1px solid #cceedc;\\r\\n margin-bottom: 8px;\\r\\n margin-right: 4px;\\r\\n}\\r\\n#icw .special-price span {\\r\\n margin-left: 4px;\\r\\n}\\r\\n\\r\\n/* google map 2024 */\\r\\n.map-get-direction {\\r\\n font-size: 13px;\\r\\n line-height: 20px;\\r\\n color: #00a94f;\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.map-get-direction a {\\r\\n text-decoration: underline;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://src/Detail/index.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,iBAAiB;EACjB,YAAY;AACd;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,YAAY;AACd;;AAEA;;EAEE,YAAY;AACd;;AAEA;;EAEE,yBAAyB;AAC3B;;AAEA;EACE,oCAAoC;AACtC;;AAEA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE;;;;;IAKE,wBAAwB;EAC1B;EACA;IACE,aAAa;IACb,8BAA8B;EAChC;EACA;;;;;;IAME,aAAa;EACf;EACA;;IAEE,aAAa;EACf;EACA;IACE,WAAW;EACb;EACA;IACE,aAAa;IACb,YAAY;IACZ,YAAY;EACd;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,aAAa;IACb,8BAA8B;IAC9B,cAAc;EAChB;EACA;IACE,UAAU;EACZ;EACA;IACE,aAAa;IACb,eAAe;IACf,8BAA8B;IAC9B,cAAc;EAChB;EACA;IACE,SAAS;IACT,iBAAiB;EACnB;EACA;IACE,cAAc;EAChB;EACA;IACE,UAAU;EACZ;EACA;IACE,UAAU;EACZ;EACA;IACE,aAAa;EACf;AACF;AACA,uBAAuB;;AAEvB;EACE,iBAAiB;EACjB,cAAc;EACd,eAAe;EACf,mBAAmB;EACnB,qBAAqB;EACrB,yBAAyB;EACzB,kBAAkB;EAClB,iBAAiB;AACnB;AACA;EACE,gBAAgB;AAClB;;AAEA,oBAAoB;AACpB;EACE,eAAe;EACf,iBAAiB;EACjB,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,0BAA0B;AAC5B\",\"sourcesContent\":[\"#icw .qrcode-container canvas {\\r\\n display: block;\\r\\n margin: 20px auto;\\r\\n width: 128px;\\r\\n}\\r\\n\\r\\n.AfterShowOpacity::after {\\r\\n opacity: 1 !important;\\r\\n}\\r\\n\\r\\n.c-black {\\r\\n color: #333 !important;\\r\\n}\\r\\n\\r\\n.mousePointer {\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.grecaptcha-badge {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.myMap {\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\n#error-popup .popup-modal,\\r\\n#error-popup .popup-inner {\\r\\n height: auto;\\r\\n}\\r\\n\\r\\n#icw .special-price,\\r\\n#icw .lower-price {\\r\\n color: var(--red-color-1);\\r\\n}\\r\\n\\r\\n.c-red {\\r\\n color: var(--red-color-1) !important;\\r\\n}\\r\\n\\r\\n.remark-h2 {\\r\\n font-size: 20px;\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\n.remark-h3 {\\r\\n font-size: 18px;\\r\\n font-weight: 600;\\r\\n}\\r\\n\\r\\ndiv:has(> .remark-h2) {\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n@media print {\\r\\n .no-print,\\r\\n .no-print *,\\r\\n #PolicyCookies,\\r\\n .webchatbox,\\r\\n header {\\r\\n display: none !important;\\r\\n }\\r\\n #icw .desktop-content {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n }\\r\\n #icw .mobile-content > .property-tab,\\r\\n #icw .mobile-content .heading-wrapper,\\r\\n #icw .desktop-content .right,\\r\\n #icw .desktop-content .left .breadcrumbs-container,\\r\\n #icw .desktop-content .left #property-summary,\\r\\n #icw .desktop-content .left .detail-container {\\r\\n display: none;\\r\\n }\\r\\n #icw .desktop-content .right,\\r\\n footer {\\r\\n display: none;\\r\\n }\\r\\n #icw .desktop-content .left {\\r\\n width: 100%;\\r\\n }\\r\\n #icw .map-wrapper {\\r\\n height: 500px;\\r\\n width: 500px;\\r\\n margin: auto;\\r\\n }\\r\\n .pagebreak {\\r\\n page-break-before: always;\\r\\n }\\r\\n #icw .calculate-desk {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n margin: 0 auto;\\r\\n }\\r\\n #icw .calculate-group {\\r\\n width: 47%;\\r\\n }\\r\\n #icw .calculate-inner {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n justify-content: space-between;\\r\\n margin: 0 auto;\\r\\n }\\r\\n #icw .gallery-sm-swiper {\\r\\n margin: 0;\\r\\n padding-bottom: 0;\\r\\n }\\r\\n #icw .qrcode-container canvas {\\r\\n margin: 0 auto;\\r\\n }\\r\\n #icw .desktop-content .left {\\r\\n padding: 0;\\r\\n }\\r\\n #icw .detail-swiper {\\r\\n padding: 0;\\r\\n }\\r\\n #icw .scroll-pagi {\\r\\n display: none;\\r\\n }\\r\\n}\\r\\n/* from icweb may 2024*/\\r\\n\\r\\n.tag-properties {\\r\\n line-height: 38px;\\r\\n color: #33ba72;\\r\\n padding: 0 16px;\\r\\n border-radius: 20px;\\r\\n display: inline-block;\\r\\n border: 1px solid #cceedc;\\r\\n margin-bottom: 8px;\\r\\n margin-right: 4px;\\r\\n}\\r\\n#icw .special-price span {\\r\\n margin-left: 4px;\\r\\n}\\r\\n\\r\\n/* google map 2024 */\\r\\n.map-get-direction {\\r\\n font-size: 13px;\\r\\n line-height: 20px;\\r\\n color: #00a94f;\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n.map-get-direction a {\\r\\n text-decoration: underline;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""}