{"version":3,"sources":["core/images/rosendahl-design-group-logo.png","core/images/mini-abe.png","assets/images/hubpic1.jpg","assets/images/hubpic2.jpg","assets/images/hubpic7.jpg","assets/images/hubpic9.jpg","assets/images/hubpic12.jpg","assets/images/missingProduct.svg","assets/images/RDGLogo.jpg","serviceWorker.js","core/settings/history.js","core/data/ApiUrls.js","core/data/httpClientHandler.js","core/data/DataStoreHandler.js","core/data/BaseStore.js","core/data/HubStore.js","core/data/DataStore.js","core/data/StatisticStore.js","core/data/MasterItemDataStore.js","core/theme/rdg-theme.js","core/theme/dark-theme.js","shared/Enums/CustomersEnum.js","core/settings/Core.js","core/languages/Dictionary.js","core/context/CoreContext.js","core/components/ui/LoadingBarBox.js","apps/sales-web-app/components/ui/OutlinedInputField.js","apps/sales-web-app/components/ui/SignIn.js","core/components/ProtectedRoutes.js","core/admin/components/FloatingActionButton.js","core/components/forms/FormSection.js","core/components/TranslationLabel.js","core/admin/components/UserManager/UserSearchView.js","core/components/forms/FormHeader.js","core/admin/components/AutoSuggest.js","core/admin/components/SearchForm.js","core/components/forms/FormDivider.js","core/admin/components/UserManager/MasterDataTab.js","shared/EmailValidation.js","core/admin/components/UserManager/DefaultUserConfigurations.js","core/admin/components/UserManager/UserFormView.js","core/admin/components/UserManager/UsersManager.js","core/components/selections/LanguageSelection.js","core/components/selections/PrimaryAppSelection.js","core/pages/UserSettingsPage.js","shared/DatePicker.js","core/admin/components/SettingsManagement/SalesAppSettings.js","core/admin/components/SettingsManagement/MasterDataDates.js","core/admin/components/SettingsManagement/MasterDataAvailableDateSettings.js","core/admin/components/SettingsManagement/MasterDataSettings.js","core/admin/components/SettingsManagement/HubSettings.js","core/admin/components/SettingsManagement/SettingsManagement.js","core/admin/components/LanguageManager/LanguageManager.js","core/admin/components/AdminView.js","core/pages/AdminPage.js","core/pages/Feedback.js","apps/hub-portal/HubPortal.js","core/components/HelpPage.js","core/admin/adminNav.js","apps/hub-portal/components/AppListItem.js","core/components/GlobalAppNavigationButton.js","apps/sales-web-app/components/DashboardWidgetContainer.js","apps/sales-web-app/pages/Products/ProductsModel.js","apps/sales-web-app/context/ProductsContext.js","apps/sales-web-app/components/ContentScroller.js","core/components/CustomerSelection.js","core/components/UserBadge.js","core/components/navigation/Topbar.js","apps/sales-web-app/libraries/IconFinder.js","core/components/navigation/NavItem.js","core/components/navigation/HubDrawer.js","core/components/navigation/NavigationDrawer.js","core/pages/HubDashboard.js","core/settings/BasketModel.js","core/context/BasketContext.js","apps/sales-web-app/libraries/FindNextShippingDate.js","apps/sales-web-app/context/CheckoutContext.js","apps/sales-web-app/pages/Basket/CheckoutModel.js","apps/sales-web-app/pages/ReturnService/ReturnServiceModel.js","apps/sales-web-app/context/ReturnServiceContext.js","apps/sales-web-app/pages/Products/CategoryModel.js","apps/sales-web-app/context/CategoryContext.js","apps/sales-web-app/model/OrdersModel.js","apps/sales-web-app/context/OrderContext.js","core/components/InriverImage.js","apps/sales-web-app/pages/Products/StockItem.js","apps/sales-web-app/pages/Basket/components/BasketListViewItem.js","apps/sales-web-app/components/EmptyState.js","apps/sales-web-app/pages/Basket/components/BasketListView.js","apps/sales-web-app/libraries/CurrencyTransformer.js","apps/sales-web-app/pages/Basket/components/BasketSummary.js","apps/sales-web-app/pages/Basket/components/shared/miniBasketStyles.js","apps/sales-web-app/pages/Basket/components/MiniBasketButtons.js","apps/sales-web-app/pages/Basket/components/MiniBasket.js","apps/sales-web-app/pages/Basket/components/BasketReturnServiceListViewItem.js","apps/sales-web-app/pages/Basket/components/BasketReturnServiceListView.js","apps/sales-web-app/pages/Basket/components/MiniBasketReturnService.js","apps/sales-web-app/pages/Basket/components/OrderDetails.js","apps/sales-web-app/pages/Products/FieldItemHeader.js","shared/PriceDtoHelper.js","apps/sales-web-app/components/StockItem.js","apps/sales-web-app/components/TableView.js","apps/sales-web-app/pages/Products/DetailedItemTemplate.js","apps/sales-web-app/pages/Basket/components/Confirmation.js","shared/SaveAsCsv.js","apps/sales-web-app/components/BackButton.js","apps/sales-web-app/components/PrintButton.js","apps/sales-web-app/pages/Orders/DetailedOrderView.js","apps/sales-web-app/pages/Basket/BasketPage.js","apps/sales-web-app/pages/Products/ProductSearchBarFacets.js","apps/sales-web-app/components/GridViewItem.js","apps/sales-web-app/pages/Products/OpenOrdersModal.js","apps/sales-web-app/pages/Products/ProductsPageV2.js","apps/sales-web-app/pages/Products/DetailedProductView.js","apps/sales-web-app/pages/Invoices/DetailedInvoiceView.js","apps/sales-web-app/components/ResponsiveTable.js","apps/sales-web-app/components/PageTitle.js","apps/sales-web-app/model/InvoicesModel.js","apps/sales-web-app/context/InvoiceContext.js","apps/sales-web-app/libraries/DateTransformer.js","apps/sales-web-app/pages/Invoices/InvoiceTracker.js","apps/sales-web-app/pages/Invoices/InvoicesPage.js","apps/sales-web-app/components/SimpleSearchField.js","apps/sales-web-app/pages/Orders/OrderStatusLabel.js","apps/sales-web-app/pages/Orders/OrdersPage.js","apps/sales-web-app/pages/Orders/RestOrdersView.js","apps/sales-web-app/pages/Orders/DetailedRMAOrderView.js","core/pages/BasketOverview/BasketOverview.js","apps/sales-web-app/libraries/FindNextAllowedQuantity.js","apps/sales-web-app/pages/QuickEntry/QuickEntryPage.js","apps/sales-web-app/components/appointmentList/enums.js","apps/sales-web-app/components/appointmentList/styles.js","apps/sales-web-app/components/appointmentList/ModalWithAppointment.js","apps/sales-web-app/components/appointmentList/AppointmentList.js","apps/sales-web-app/pages/Dashboard/DashboardMessage.js","apps/sales-web-app/pages/Dashboard/NumberOfAppointments.js","apps/sales-web-app/pages/Dashboard/CustomerNote.js","apps/sales-web-app/pages/Dashboard/BlockedCustomers.js","apps/sales-web-app/pages/Dashboard/DashboardPage.js","apps/sales-web-app/pages/Home/HomePage.js","apps/sales-web-app/pages/Statistics/SimpleTable.js","apps/sales-web-app/pages/Statistics/Enums.js","apps/sales-web-app/pages/Statistics/StatisticsPage.js","apps/sales-web-app/pages/ReturnService/ReturnServicePageForm.js","apps/sales-web-app/pages/ReturnServiceCheckout/components/ReturnServiceOrderDetails.js","apps/sales-web-app/pages/ReturnServiceCheckout/components/ReturnServiceConfirmation.js","apps/sales-web-app/pages/ReturnServiceCheckout/ReturnServiceCheckoutPage.js","apps/sales-web-app/pages/SearchPage/SearchPage.js","apps/sales-web-app/config/routes.js","apps/sales-web-app/config/navigation.js","apps/sales-web-app/components/Navigation.js","core/pages/NotFound.js","apps/sales-web-app/components/Content.js","apps/master-item-data-app/global/store.js","apps/master-item-data-app/components/Dialogs/TemplateDialog.js","apps/master-item-data-app/global/currencies.js","apps/master-item-data-app/components/Dialogs/TemplateColumnDialog.js","apps/master-item-data-app/components/Dialogs/CurrencyDialog.js","apps/master-item-data-app/components/Dialogs/DialogWrapper.js","apps/master-item-data-app/pages/TemplatePage.js","apps/master-item-data-app/components/ProductNumberInput.js","apps/master-item-data-app/components/SelectedChips.js","apps/master-item-data-app/components/Message.js","apps/master-item-data-app/pages/SearchPage.js","apps/master-item-data-app/pages/DataFields.js","apps/master-item-data-app/config/routes.js","apps/master-item-data-app/components/ui/Content.js","apps/master-item-data-app/config/navigation.js","apps/master-item-data-app/components/Navigation.js","apps/fair-app/pages/SearchPage/itemStyles.js","apps/sales-web-app/pages/Products/ViewModes/itemStyles.js","apps/sales-web-app/pages/Products/ViewModes/ListViewItem.js","apps/fair-app/pages/SearchPage/ListViewItem.js","apps/sales-web-app/pages/Products/ProductSearchBar.js","apps/fair-app/pages/SearchPage/SearchPage.js","apps/fair-app/pages/SortingPage/ListViewItem.js","apps/fair-app/pages/SortingPage/index.js","apps/fair-app/config/routes.js","apps/fair-app/components/Content.js","apps/fair-app/config/navigation.js","apps/fair-app/components/Navigation.js","apps/video-app/pages/VideoPage.js","apps/video-app/config/routes.js","apps/video-app/components/Content.js","apps/video-app/config/navigation.js","apps/video-app/components/Navigation.js","apps/imagebank-app/config/routes.js","apps/imagebank-app/pages/ImageBankLink.js","apps/imagebank-app/components/Content.js","apps/imagebank-app/config/navigation.js","apps/imagebank-app/components/Navigation.js","core/settings/hubRoutes.js","apps/sales-web-app/SalesAppRoot.js","apps/master-item-data-app/MasterItemDataAppRoot.js","apps/fair-app/FairAppRoot.js","apps/video-app/VideoAppRoot.js","apps/imagebank-app/ImageBankAppRoot.js","core/pages/Login.js","core/pages/Signup.js","core/pages/UserRegistrationPage.js","core/pages/UserPasswordResetPage.js","core/pages/UserPasswordResetCompletionPage.js","core/components/HubRouter.js","core/components/FullScreenLoader.js","core/pages/Hub.js","core/modals/Modals.js","Root.js","index.js"],"names":["module","exports","Boolean","window","location","hostname","match","createBrowserHistory","dataUrl","hubUrl","hubImageUrl","isExpiredAccesTokenError","error","_error$response","_error$response$data","response","status","data","tokenExpired","HttpClientHandler","base","masterData","httpClient","axios","create","baseURL","headers","axiosInstance","interceptors","request","use","config","accessToken","localStorage","getItem","concat","console","log","Promise","reject","originalRequest","refreshToken","_retry","post","ApiUrls","then","setItem","token","info","catch","removeItem","DataStoreHandler","getBaseStore","baseUrl","cancelToken","React","useRef","current","setHttpClient","hc","url","obj","postSingleton","cancel","CancelToken","source","getSingleton","requestIdentifier","get","put","del","delete","stall","async","stallTime","arguments","length","undefined","resolve","setTimeout","BaseStore","hubStore","baseStore","oldAccessToken","oldRefreshToken","login","username","password","logout","authenticated","getLanguagePack","id","createUser","signupUser","updateUser","userDto","removeUser","getAllUsers","getLoggedInUser","getUser","searchUsers","submitPassword","userId","pw","dto","JSON","stringify","requestResetPassword","userName","requestNewRegistrationMail","updateSelectedCustomerAccount","updateUserLanguage","createNewsletterUser","user","changeNewsLetter","newsLetter","HubStore","dataStore","API","GetHelpLinks","appId","DelHelpLinks","NewHelpLinks","link","UpdateHelpLinks","GetMasterDataItemAvailableDate","UpdateMasterDataItemAvailableDate","DeleteMasterDataItemAvailableDate","CreateMasterDataItemAvailableDate","GetUserTypesGroup","getMasterDataDates","getMasterDataDatesByUserType","userTypeId","CreateMasterDataDate","UpdateMasterDataDate","DeleteMasterDataDate","getIntroDates","createIntroDates","datesObj","editIntroDates","deleteIntroDates","getUserCustomers","salesInitials","employeeAccountNo","samplesPurchaseAccount","pageNumber","resultsPerPage","getUserCustomersBySearch","employeePurchaseAccountNo","searchText","limit","getCustomerCount","getBlockedCustomers","getCustomerNotes","accountNo","postCustomerNote","note","getCampaigns","customerNo","createSortOrderForCampaign","campaignId","setSortingOnCampaignProduct","campaignProductSearch","getApps","updateAppImage","formData","getApp","getUserTypes","createLabel","label","updateLabel","getLabelGroups","getLabels","searchLabels","term","getLabelByKey","key","getDetailedLabelById","getLabelIdByKey","removeLabel","getDictionary","languageId","getSalesByMetricAndBrand","metric","brand","getSalesByMetric","getUserAppointments","getCustomerAppointments","getCustomerAppointmentsInDateRange","from","to","getAppointmentById","language","changeAppointment","appointmentObject","createAppointment","getAppointmentTypes","getCustomerByAccountNo","getCustomersBySearch","getCustomerAddressesByAccountNo","getCustomerDeliveryCountries","getSellersBySearch","getEmployeesBySearch","searchProducts","searchExcel","responseType","getProductById","customerId","productId","languageCode","getProductByExcel","e","preventDefault","FormData","append","target","files","getReturnProductById","getCustomerList","sellerId","getInvoices","customer","page","offset","getInvoicesCount","searchInvoices","txt","getInvoiceDetailed","invoice","getInvoiceHtml","invoiceId","getTrackingBySalesId","salesId","getOrders","getOrder","searchOrders","getDetailedOrderHtml","onlyBackOrders","getDetailedRMAOrderHtml","emailOrderConfirmation","email","emailRMAOrderConfirmation","emailRestOrders","emailInvoice","emailBasketOverview","selectedCustomer","getRMAOrderDetailed","getRMAOrders","getBackOrdersHtml","getBackOrders","searchRMAOrders","createOrder","validateOrder","createRMA","validateRMA","getBasket","basketType","includeMarkup","getBasketOverviewHtml","addBasketEntry","itemId","quantity","tradeFairCampaignId","requestedShippingDate","calculateMarkup","addMultipleEntries","entries","updateBasketEntry","entryChanges","removeBasketEntry","basketEntryId","deleteBasket","basketId","archiveBasket","getArchivedBasketById","archiveId","getRMABasket","addRMABasketEntry","addMultipleRMAEntries","updateRMABasketEntry","removeRMABasketEntry","archiveRMABasket","getArchivedRMABasketById","deleteRMABasket","getReturnReasons","getBrands","getLanguages","getFunctionGroups","getDesignCollections","getAllFacetValues","getYoutubeVideos","addYoutubeVideo","video","editYoutubeVideo","deleteYoutubeVideo","videoId","getMasterDataFacets","addFacetToUser","facetId","removeFacetFromUser","addMasterDataFacet","facetName","removeMasterDataFacet","getMasterDataStandardTemplates","getReturnProductByExcel","DataStore","statisticStore","getStatistics","accountName","currency","StatisticStore","statisticsUrl","masterItemDataStore","getCustomerTemplates","productSearch","searchObj","productSearchExport","Authorization","getFilterFromExcelFile","addCustomer","name","updateCustomer","addCustomerDetail","detail","updateCustomerDetail","deleteCustomerDetail","addTemplate","copyTemplate","editTemplate","defaultLanguageCode","standard","deleteTemplate","addTemplateField","updateTemplateField","deleteTemplateField","updateDataField","readTemplateFieldData","MasterItemDataStore","createMuiTheme","palette","typography","fontFamily","primary","light","main","dark","contrastText","secondary","edit","appBar","background","color","default","button","add","remove","update","paper","CustomerQuantityEnum","MANY","TWO","ONEORNONE","useCoreModel","snackbar","isInitialized","setIsInitialized","useState","isLoading","setIsLoading","theme","setTheme","Theme","width","setWidth","isAuthenticated","setisAuthenticated","title","setTitle","modal","setModal","headline","message","showLabelNames","setShowLabelNames","isExpanded","setIsExpanded","dataStoreHandler","userModel","setUserId","setUserName","displayName","setDisplayName","setSelectedCustomer","accountType","Phone","Email","basketUserId","setBasketUserId","setLanguage","setLanguageCode","userSetting","setUserSetting","apps","primaryAppId","selectedCustomerAccount","salesPersonAgentInitials","employeePurchaseAccount","languageManagement","HelpLinkManagement","customerUserManagement","allUserManagement","hasMultipleAccounts","setHasMultipleAccounts","load","callback","x","rs","noCustomer","res","toString","loadSelectedCustomer","ReactGA","set","finally","account","resetCustomer","setPrimaryApp","s","setCustomer","acc","reload","selectedCustomerToString","useUserModel","dictionaryModel","dictionary","setDictionary","isEditMode","setIsEditMode","useEffect","getLabel","useSetIsEditMode","value","useDictionaryModel","history","History","getDrawerStatus","o","parse","success","_error$response2","mm","matchMedia","addEventListener","matches","warn","push","authenticateLogin","loginForm","setLoad","DarkTheme","getUserApps","arr","setTitles","document","expandDrawer","CoreContext","createContext","CoreProvider","_ref","children","core","enqueueSnackbar","closeSnackbar","useSnackbar","action","createElement","IconButton","onClick","aria-label","ClearIcon","variant","SnackbarHandler","Provider","useStyles","makeStyles","root","display","justifyContent","flexDirection","bar","top","borderTopLeftRadius","borderTopRightRadius","LoadingBarBox","props","classes","className","content","LinearProgress","withStyles","flexWrap","margin","spacing","outlinedInputFieldWithIcon","padding","loader","borderRadius","showPassword","setShowPassword","autocomplete","onEnter","icon","type","fullWidth","required","htmlFor","disabled","maxLength","rest","togglePassword","TextField","Object","assign","classNames","textField","InputProps","endAdornment","InputAdornment","position","href","VisibilityOff","Visibility","PasswordIcon","CircularProgress","size","thickness","Fragment","LoadingIcon","inputProps","onKeyPress","autoComplete","onChange","alignItems","avatar","backgroundColor","form","marginTop","submit","transform","logo","height","filter","newUserInfoWrapper","leftSide","marginRight","textDecoration","setUser","setPassword","Paper","alt","src","Logo","Typography","component","OutlinedInputField","evt","AccountCircle","Button","Link","style","ProtectedRoute","Component","isAuth","Route","render","Redirect","ComponentRoute","_ref2","componentId","FloatingActionButton","Fab","right","bottom","zIndex","v","AddIcon","CheckIcon","CancelIcon","formPaper","marginBottom","outlined","boxShadow","topBorder","borderTop","isOutlined","ico","icoSuccess","input","end","TranslationLabel","useContext","variables","onClose","modalOpen","setModalOpen","groups","setGroups","handleSetModalOpen","closeModal","createOutputString","variablesOrEmptyArray","output","replace","shift","EditLabel","stopPropagation","open","selected","dangerouslySetInnerHTML","__html","DOMPurify","sanitize","translations","setTranslations","setId","selectedGroup","setSelectedGroup","defaultValue","setDefaultValue","languages","setLanguages","handleOnClose","_label$label","_label$label2","find","el","labelGroup","Tooltip","LinkIcon","fontSize","Dialog","aria-labelledby","DialogContent","FormControl","InputLabel","Select","labelId","MenuItem","map","group","maxWidth","lang","_translations$find","translationValueChange","index","findIndex","newTranslations","multiline","LabelGroup","Translations","float","translationLink","administration","dataKeys","editable","OverviewTab","loading","setLoading","rows","setRows","setPage","rowsPerPage","setRowsPerPage","showActivated","setShowActivated","userType","setUserType","setInput","totalUsers","setTotalUsers","userTypes","setUserTypes","debouncedInput","useDebounce","firstRender","setFirstRender","select","useLocation","searchParams","URLSearchParams","search","has","parseInt","toggleCheckBox","setting","updatedUserObject","newApps","firstPage","scrollTo","text","pageSize","users","urlParams","searchQuery","pathname","state","isActive","MakeRow","i","active","setActive","TableCell","cursor","EditIcon","scrollY","Checkbox","checked","Grid","item","xs","sm","FormSection","Table","table","TableHead","TableRow","header","TableBody","row","hover","TablePagination","rowsPerPageOptions","count","onChangePage","handleChangePage","event","newPage","onChangeRowsPerPage","FormHeader","displayWarning","gutterBottom","WarningIcon","Divider","AutoSuggest","constructor","handleSelect","r","this","onSelect","anchorEl","Popper","transition","TransitionProps","Fade","timeout","List","clientWidth","items","ListItem","divider","ListItemText","flexGrow","container","suggestionsContainerOpen","left","suggestion","suggestionsList","listStyleType","timeOut","SearchForm","super","handleResult","val","displayResults","setState","results","handle","clearTimeout","currentTarget","onEmptyTerm","onSearch","returnResult","searchInput","delay","handleClear","initialValue","currentResults","anchorParentEl","Clear","styles","MasterDataTab","setUserForm","userForm","facets","setFacets","selectAllFacets","masterDataFacets","includes","forEach","deselectAllFacets","facet","FormControlLabel","control","Switch","handleToggleFacet","templateManagement","handleToggleTemplateManagement","ValidateEmail","elm","checkValidity","admin","helpLinkManagement","settingsAdministration","canCreateNewsLetterUser","showBackordersOnProduct","isEnabled","showInventory","showArchiveCheckbox","downloadExcelOfItems","videoManagement","internal","salesAgent","salesPerson","distributor","merchandiser","marketing","getDefaultUserSettings","chipBox","selectedTab","userTypeSelect","mode","setError","samplesPurchase","setSamplesPurchase","employeePurchase","setEmployeePurchase","agentInitials","setAgentInitials","allApps","setAllApps","setSelectedTab","userLoaded","setUserLoaded","showEmployeePurchaseAccount","setShowEmployeePurchaseAccount","showSalesPersonAgentInitials","setShowSalesPersonAgentInitials","showSamplesPurchaseAccount","setShowSamplesPurchaseAccount","isCreateMode","GENERAL","SALES","VIDEO","MASTERDATA","TRADEFAIR","getCustomerLabel","setStateFunction","submitEdits","validate","relevantUserType","alert","statusMessage","needsCustomerSet","needsEmployeeAccountSet","handleChangeShowBackordersOnProduct","selectSelectedCustomerAccount","selectedCustomerName","selectEmployee","Tabs","indicatorColor","app","Tab","direction","FormDivider","userFormTemp","marginLeft","UserRegistrationStatus","canChangeSortOrder","FormGroup","k","pointerEvents","newSelected","c","handleAppSelection","handleChange","OutlinedInput","displayEmpty","PrimaryAppSelection","LanguageSelection","initials","UsersManager","setSelected","exact","path","UserSearchView","UserFormView","_languages$find","code","setApp","userApps","description","buildMenuItem","mixins","gutters","setNewsLetter","locales","enLocale","daLocale","svLocale","noLocale","deLocale","DatePicker","locale","options","weekStartsOn","MuiPickersUtilsProvider","utils","DateFnsUtils","KeyboardDatePicker","format","minDateMessage","maxDateMessage","invalidDateMessage","SalesAppSettings","dates","setDates","today","getTimeMinusOffset","Date","newDate","setNewDate","introductionDate","itemAvailableB2BShop","pictureAvailableB2BShop","newsEndDateB2BShop","reloadIntroDates","reverse","date","getTime","getTimezoneOffset","toJSON","split","DateCell","dateLine","isNewDate","onNewDateChange","dateType","dateString","dateObj","onDateChange","TableContainer","align","DeleteForeverIcon","deleteDates","AddCircleOutlineIcon","customTooltip","MasterDataDates","userGroups","setUserGroup","init","setInit","convertToPostModel","postModel","dataAvailableDate","priceDate","userTypeGroupId","availableDate","userGroup","placement","tooltip","readOnly","u","editDate","MasterDataAvailableDateSettings","MasterDataSettings","standardTemplates","setStandardTemplates","template","Box","borderBottom","minWidth","images","2","hubpic1","6","hubpic2","7","hubpic7","9","hubpic9","12","hubpic12","actionLinks","resetMargin","formControl","HubSettings","prop","setApps","imageToPreview","previewImage","URL","createObjectURL","removePreview","backgroundImage","removeImage","textAlign","uploadImage","accept","showPreview","SettingsManagement","TabHeadline","selectedApp","paddingBottom","nested","th","paddingTop","textTransform","expandable","cell","tcell","p","h1","collapseAllWrapper","LanguageManager","setData","setOpen","setLang","openLabelValues","setOpenLabelValues","openDefaultValues","setOpenDefaultValues","isAdmin","toggleActivateField","idx","indexOf","splice","toggleOpenDefaultValue","saveLabelDefaultValue","saveLabelValue","getTranslatedLabel","postBody","tl","reduce","a","openAll","keys","closeAll","entry","toggleOpen","ExpandLess","ExpandMore","Collapse","in","unmountOnExit","disablePadding","_getTranslatedLabel2","_getTranslatedLabel3","onKeyUp","handleKeyUpDefaultValue","autoFocus","tabIndex","getElementById","handleSaveDefaultValueClick","CheckCircleRoundedIcon","CancelRoundedIcon","onFocus","handleKeyUpValue","onBlur","handleBlur","_getTranslatedLabel","handleSaveValueClick","paddingLeft","paddingRight","UserSettingsPage","gridFullHeight","tabRoot","flex","cornerButton","AdminView","Feedback","border","cardRoot","media","fontWeight","HubPortal","findApp","md","Card","CardActionArea","CardMedia","image","pageHeader","breakpoints","down","defaultNewLink","translationKey","isBreakerHeadline","sortOrder","HelpPage","helpLinks","setHelpLinks","editLinks","setEditLinks","newLink","SetNewLink","dragLink","dragOverLink","handleSort","draggedItem","remainingItems","_","newOrder","slice","EditLinkComponent","innerHtml","linkObj","draggable","onDragStart","onDragEnter","onDragOver","onDragEnd","HeightIcon","onKeyDown","keyCode","deleteLink","confirm","buttons","Trash","fill","inputField","createNewLink","newLinkClone","helpLink","rel","GetAdminNav","userManagementItem","labelKey","route","languageItem","settingsAdministationItem","upperNavigation","adminNav","weight","indent","AppListItem","loadApp","GlobalAppNavigationButton","PopupState","popupId","popupState","bindTrigger","AppsIcon","Popover","bindPopover","anchorOrigin","vertical","horizontal","transformOrigin","article","wrapper","overflow","boxSizing","dialog","DashboardWidgetContainer","expanded","hideTitle","expandContent","expand","DashboardDialogView","handleClose","DialogTitle","dividers","DialogActions","useProductsModel","useHistory","urlParamsAccept","isLargeScreen","values","lastChosenViewMode","hasMore","setHasMore","listViewMode","_setListViewMode","allFacets","setAllFacets","onlyCampaign","_setOnlyCampaign","onlyArchive","_setOnlyArchive","searchCollection","setSearchCollection","selectedFacetValues","setSelectedFacetValues","mainColor","subCategory","category","news","query","setQuery","sortByField","setSortByField","campaign","_setCampaign","campaigns","setCampaigns","isFairApp","setCampaign","sortCampaigns","sort","b","getSearchOptions","endpoint","isLastPage","products","colli","updateUrl","querySelector","parentNode","statusText","descendingSortOrder","initColi","sfv","initalParamsFromQueryString","params","decodeURI","getSelectedFacetValuesFromURL","hasOwnProperty","_res$data","toggleFacetValue","facetValue","_selectedFacetValues","array","addIfNotExistsRemoveIfItDoes","handleSearchQueryChange","getSelecteFacetValuesCount","handleSortByChange","increment","reset","getProductsByIds","ids","SearchOnlyInTheseProducts","setListViewMode","viewMode","clearProducts","gotoProduct","scrollerPosition","scrollTop","setCampaignOrArchive","ProductsContext","ProductsProvider","ContentScroller","onLoad","pageStart","InfiniteScroll","loadMore","threshold","initialLoad","list","overflowY","listItem","customer0","customer1","customer2","mobileInput","CustomerSelection","productsModel","setSrc","customers","setCustomers","setPageNumber","contentScroll","setContentScroll","isModal","showAllCustomers","appendResults","_res$data3","_res$data4","_res$data2","handleClick","String","focus","useWindow","popperBg","rowPadded","largeAvatar","containerRoot","labelOpenerWrapper","UserBadge","setAnchorEl","labelOpenerOpen","setLabelOpenerOpen","labelEditorOpen","setLabelEditorOpen","labelValue","setLabelValue","newsletterUserMenuOpen","setNewsletterUserMenuOpen","avatarInitials","substring","openSwitchCustomer","setOpenSwitchCustomer","handleCloseSwitchCustomer","aria-describedby","Settings","justify","Avatar","startIcon","SwitchIcon","handleClickOpenSwitchCustomer","useConfirmationDialogue","NewsLetterUserMenu","Modal","onSubmit","ExitIcon","highlight","setHighlight","setEmail","setName","created","setCreated","emailValidated","sendEmail","toolbar","grow","drawer","transitions","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","sectionDesktop","menuButton","up","verticalAlign","blocked","env","Topbar","useMediaQuery","customerInfo","customerHeadline","AppBar","Toolbar","MenuIcon","noWrap","HomeIcon","toLowerCase","AnnouncementIcon","Exit","Dashboard","Admin","Basket","Home","Product","Invoice","Graph","Gallery","Search","User","QuickEntry","Orders","Invoices","Statistics","Help","Customers","Translate","Hub","RemoveShoppingCart","Highlight","PlayCircleOutlineIcon","ShoppingBasketIcon","Default","NavItem","ListItemIcon","IconFinder","HubDrawer","drawerWidth","closedWidth","dWidth","drawerMargin","drawerWidthClosed","flexShrink","whiteSpace","drawerPaper","drawerOpen","drawerClose","overflowX","Drawer","flip","MuiToolbar","hide","shape","fade","common","white","searchIcon","inputRoot","inputInput","closeIcon","NavigationDrawer","upperItems","handleAction","navigate","ChevronLeftIcon","contentShift","easeOut","contentStatic","emptyBasketState","amount","totalAmount","vatAmount","useBasketModel","basket","setBasket","isConfirmationPage","differentCampaignsErrorModal","attemptedCampaign","basketCampaign","updateEntry","changesObj","submitOrderToAxapta","orderDetails","salesDto","orderLines","product","productNo","orderHeaderDto","salesTaker","itemAlreadyExists","qty","multiAdd","basketEntries","_entries$","BasketContext","BasketProvider","FindNextShippingDate","daysToAdd","getDay","setDate","getDate","CheckoutContext","CheckoutProvider","checkout","defaultOrderDetails","hasNewAddress","deliveryAddressId","deliveryName","deliveryStreetName1","deliveryStreetName2","deliveryZipCode","deliveryCity","deliveryCountry","shippingDate","customerRef","requisitionNo","attention","emailForTracking","mobilePhoneNo","comment","orderDetailsValidated","setOrderDetailsValidated","setOrderDetails","addressFormLocked","setAddressFormLocked","validateOrderDetails","resetOrderDetails","useCheckoutModel","useReturnServiceModel","pickupPallets","pickupPackages","pickupAddressId","pickupName","pickupStreet1","pickupStreet2","pickupZipCode","pickupCity","pickupCountry","pickupContactPerson","useAnotherAddress","setUseAnotherAddress","updateThis","returnReasonId","some","rmaOrderNo","rmaId","RmaOrderLines","recid","clearBasket","err","ReturnServiceContext","ReturnServiceProvider","returnService","useCategoryModel","brands","setBrands","CategoryContext","CategoryProvider","useOrderModel","orders","setOrders","setSearchInput","ordersCount","setOrdersCount","lookingInRMA","setLookingInRMA","loadRMA","searchRMA","OrderContext","OrderProvider","model","InriverImage","showImage","displayConfig","SalesSite_SmallThumbnail","SalesSite_Large","missingProduct","onError","stockItem","stockItemLink","dot","warning","danger","StockItem","dotClasses","1","3","listItemRoot","addedBy","price","old","grey","new","buttonItemWrapper","imgWrapper","img","maxHeight","datePicker","shipping","BasketListViewItem","onDelete","validDateTo","validDateFrom","updateShippingDate","isCampaignItem","itemName","autoOk","KeyboardButtonProps","maxDate","minDate","keyboardIcon","DateRangeIcon","disableUnderline","createdByUser","priceBeforeDiscount","toLocaleString","minimumFractionDigits","maximumFractionDigits","BasketQuantitySelection","minimumQuantity","multiplesQuantity","quantityWrapper","entryId","isReadOnly","inventoryText","inventoryStatus","edge","DeleteIcon","basketModel","handleManualSelectQuantity","qtyBtn","RemoveCircle","AddCircle","centerGrid","textCenter","EmptyState","sub","Monkey","basketListViewRoot","progressContainer","sortEnum","BasketListView","isMiniBasket","sortBy","setValidDateFrom","setValidDateTo","basketCampaignId","formattedDate","duplicate","_productsModel$campai","_productsModel$campai2","deliveryValidFrom","deliveryValidTo","formatCurrency","Number","Intl","NumberFormat","field","total","deleteButton","BasketSummary","confirmationModalOpen","setConfirmationModalOpen","hideEmptyBasketButton","close","showMarkup","showEmptyBasketButton","markupAmount","btns","btn","btnNext","summary","MiniBasketButtons","submitLabel","disableElevation","ArrowBackIcon","ArrowForwardIcon","TemporaryDrawer","setSortBy","closeDrawer","anchor","campaignName","labelPlacement","opacity","BasketReturnServiceListViewItem","returnServiceModel","returnReasons","reason","BasketReturnServiceListView","onUpdate","handleDelete","hr","padd","firstCountriesInSelect","OrderDetails","advanceStep","deliveryAddresses","setDeliveryAddresses","countries","setCountries","_res$data$result","result","firstCountries","country","handleSubmit","errors","fieldsErrors","setValue","clearErrors","useForm","defaultValues","checkObject","canChangeDeliveryAddress","onInvoiceAddressSelectChange","setAdresse","address","street","street2","zip","city","entriesByDate","earliestDate","addr","addressType","lg","Autocomplete","newval","disableClearable","getOptionLabel","renderInput","Controller","ref","inputRef","isChecked","resetDeliveryAdress","helperText","rules","_ref3","_ref4","_ref5","_ref6","_ref7","_ref8","inputVariant","disablePast","_ref9","_ref10","_ref11","_ref12","pattern","_ref13","rowsMax","goBack","useStyles2","fieldItem","fieldItemName","fieldItemValue","FieldItemHeader","priceEnum","Standard","Campaign","Archive","hasDiscount","currentPrice","priceType","discountPercentage","RenderPriceTag","TagIcon","findPrice","_currentPrice","priceDtos","minQuantity","hasNoPrice","findNextAllowedNumber","number","Math","ceil","nextPriceTag","nextPrice","renderPrice","priceNormal","grossPrice","renderYourPrice","priceYours","netPrice","priceText","tableRoot","gridAutoRows","gridTemplateColumns","gridTemplateRows","gap","tableHeaderCell","lineHeight","letterSpacing","tableCell","tableCellQuntity","borderLeft","tableCellLast","small","listStock","listOpenOrders","quantityOptionsHeader","quantityOptionsCell","quantityOptions","TableView","settings","emptyQuantity","hideHeader","hideDetailed","Cell","setCurrentPrice","priceDtoHelper","setQuantity","handleChangeQuantity","onQuantityChange","gridColumn","imgWrapperInner","brandNo","openOrders","setOpenOrdersModal","renderColiName","renderColiQuntity","brownBox","numberOfItemsInBox","showRetailPrice","recommendedRetailPrice","onBlurHandler","allowedQuantity","step","addColiToBasket","fillHeight","detailedItemRoot","detailedImageItem","flexBasis","detailedImage","detailedImageSize","imageContainer","body","detailedTitle","floatingBackButton","barcodeWrapper","rightColumn","cta","DetailedItemTemplate","BackIcon","btnIcon","listKey","designerName","FieldItemRow","ean","dimension","depthCm","widthCm","heightCm","volumeL","diameterCm","grossWeightKg","giftBox","noOfGiftBoxesPerPallet","boxEanCode","exp","Confirmation","handleBasketPreviewClick","orderId","saveAsCsv","filename","encodedUri","encodeURI","replaceAll","setAttribute","appendChild","click","BackButton","PrintButton","Icon","emailSendingStatusEnum","SENDING","SENT","ERROR","INITIAL","DetailedOrderView","computedMatch","onlyRestOrders","isReceipt","showEmailField","setShowEmailField","emailSentStatus","setEmailSentStatus","order","setOrder","componentRef","innerHTML","formatNumber","EmailField","ReactToPrint","trigger","saveCsv","orderDate","productLine","eanNumber","itemTitle","expectedStockDate","join","TableChartIcon","renderEmailStatus","CheckCircleOutlineOutlinedIcon","ErrorOutlineIcon","MailOutlineIcon","BasketPage","activeStep","getOrderId","Stepper","alternativeLabel","Step","StepLabel","getCurrentStep","facetsStyles","Facets","change","hideChosenFacetCategoryCounts","categorys","Facet","facetStyles","btnCount","lists","cbList","listItems","listItemsExtra","cbListExtra","angle","ctaBtn","cb","titleExtra","hasChildren","handleOpen","handleOutsideClick","removeEventListener","closest","ExpandMoreIcon","facetValues","fv","CheckBoxOutlineBlankIcon","checkedIcon","CheckBoxIcon","labelDiscount","double","borderBottomColor","box","borderWidth","borderColor","borderStyle","head","categories","xl","brandItem","getBrandLabel","xxl","alignSelf","modalWrapper","outline","openOrderModalLine","OpenOrdersModal","openOrdersProduct","quantityOrdered","confirmedDeliveryDate","productsPageRoot","flexFlow","ProductsPageHeader","ProductsPageSearch","ProductsPageFacets","stickyloader","visibility","loaderVisible","resetButton","resetButtonText","greyedOutResetButtonText","resetButtonIcon","ProductsPageSubHeader","ProductsPageHeaderResults","ProductsPageSettings","ProductsPageSettingsLast","ProductsPageHeaderResultsLast","moreOptionsRow","scrollableProducts","flexContainer","tableRow","tableRowHover","noClick","lighten","spacer","actions","stickyHeader","h","isString","PageTitle","hidden","useInvoiceModel","invoices","setInvoices","eofCount","setEofCount","Infinity","invoicesCount","setInvoicesCount","loadInvoicesCount","Array","isArray","hasPrev","hasNext","incrementPage","decrementPage","InvoiceContext","InvoiceProvider","formatDate","day","month","getMonth","getFullYear","blue","packingSlipSection","InvoiceTracker","packingSlips","setPackingSlips","loadText","setLoadText","packingSlipNo","trackingNumber","TrackingNumbers","t","ListItemAvatar","ShippingIcon","RenderPackingSlips","slips","packingSlip","paginationBox","rightAligned","red","green","InvoicesPage","invoiceContext","selectedSalesId","setSelectedSalesId","startAdornment","SearchIcon","ResponsiveTable","invoiceDate","DateTransformer","dueDate","invoiceAmount","outstandingAmount","trackAndTrace","handleDisplayTracking","invoiceNumber","getRows","Skeleton","NavigateBeforeIcon","endIcon","NavigateNextIcon","SimpleSearchField","debouncedValue","OrderStatusLabel","ReceivedIcon","handleStatus","OrdersPage","orderModel","ordersUrlPrefix","getValueFromKey","isRMA","Chip","getOrderNumber","orderStatus","returnItemNum","updatedAt","RestOrdersView","restOrders","setRestOrders","itemDescription","quantityOutstanding","DetailedRMAOrderView","rmaOrder","setRmaOrder","custAccount","lines","returnReasonName","BasketOverview","basketCore","round","getStockStatus","submitButton","statusEnum","ALL","OPEN","FINISHED","FUTURE","viewModeEnum","CUSTOMERVIEW","SALESVIEW","EDIT","CREATE","days","months","backgroundToday","backgroundOther","leftContainer","rightContainer","appointmentInfoLine","phoneNumberContainer","subjectContainer","modalInfoLine","appointmentInfoKey","appointmentInfoValue","modalInfoBody","modalHeadline","timePicker","filtersContainer","scrollable","bold","status1","status2","status3","leftButton","rightButton","cancelButton","finishButton","validationLine","ModalWithAppointment","getFormattedDate","isoString","getFormattedDatePlusTwoHours","isValidDate","prototype","call","isNaN","CANCELLED","appointment","setAppointment","start","toISOString","customerContact","rdgContactUserId","rdgContactDisplayName","setViewMode","appointmentTypes","customerName","onStartChange","isEndBeforeStart","onSubmitEdit","onCreateAppointment","Buttons","IconComponent","typeText","customerPhone","KeyboardTimePicker","ampm","cancelAppointment","finishAppointment","AppointmentList","statusOptions","setStatus","appointments","setAppointments","openAppointment","setOpenAppointment","setShowAllCustomers","showCreateAppointment","setShowCreateAppointment","setAppointmentTypes","modalAppointment","isHomePage","getAppointments","changeCustomer","closeCreateAppointment","openCreateAppointment","AppointmentLine","appointmentDate","startDate","startHour","getHours","startMin","getMinutes","startWeekDay","startMonth","isToday","AppointmentTitle","CustomerIcon","SubjectIcon","DashboardMessage","messageLabelName","setHoursToZero","setFrom","now","setTo","CustomerNote","setNote","BlockedCustomers","titleScreen","dashTabs","switchContainer","userContainer","userLeftContainer","userRightContainer","userIcon","progress","editProfileButton","SimpleTable","footer","fields","random","valueTypes","CURRENCY","QUANTITY","leftAligned","imageWrapper","StatisticsPage","headerRow","setHeaderRow","setFooter","valueType","setValueType","showStats","Row","NoStatistics","RosendahlLogo","toggleValueType","insideTableData","setInsideTableData","KeyboardArrowUpIcon","KeyboardArrowDownIcon","colSpan","listImageContainer","selectItemText","ReturnServiceOrderDetails","returnLine","returnLineContainer","imgWidth","RmaConfirmationProductRow","_returnReasons$find","returnReason","ReturnServiceConfirmation","_checkout$basket","ReturnServiceCheckoutPage","stickyScrollButton","seeProductsButton","routes","accessLevel","_productsModel$search3","_productsModel$search4","_productsModel$search5","openOrdersModal","setShowRetailPrice","uploadLoading","setUploadLoading","drawerState","setDrawerState","moreOptions","filters","ProductSearchBarFacets","placeholder","CloseIcon","totalNumberOfResults","getArrayOfFacets","getFacetLabelByCategoryAndId","_productsModel$search","_productsModel$search2","facetLabel","_productsModel$allFac","_productsModel$allFac2","MoreIcon","getSeconds","removeChild","revokeObjectURL","sortField","selectEmpty","ListIcon","GridOnIcon","GridViewItem","setProducts","selectedProducts","setSelectedProducts","showSelected","setShowSelected","hasMoreResults","setHasMoreResults","alreadySelectedProduct","showSelectedHandler","addToBasket","changingProduct","changingSelectedProduct","newSelectedProducts","setEntries","srcTxt","setSrcTxt","uploadErrors","setUploadErrors","temp","multiple","withErrors","entriesWithAllowedQuantities","findNextAllowedQuantity","Alert","severity","AlertTitle","line","itemDetails","setItemDetails","designCollectionNo","functionGroupNo","inventoryQuantity","orderMultiple","depth","inriverId","defaultPriceDto","setInvoice","invoiceName","invoiceLines","salesPrice","lineAmount","orderBalance","totalInvoiceAmount","showCustomerNote","setShowCustomerNote","showBlockedCustomers","setShowBlockedCustomers","NumberOfAppointments","phone","UserIcon","suggetions","setSuggetions","handleSearchInput","returnReasonIdError","quantityError","Item","itemData","filterOptions","option","renderOption","_item$returnReasons","FormHelperText","InputLabelProps","shrink","getRoute","GetNavItems","showDashboard","navItem","routeSettings","facebook2","animationDuration","Navigation","openReturnService","setOpenReturnService","showReturnBasketHideBasket","handleClickMiniBasket","handleClickMiniBasketReturnService","disableShrink","Badge","badgeContent","ShoppingBasket","getNavigationSettings","MiniBasketReturnService","MiniBasket","NotFound","Router","drawerExpanded","StoreContext","initialState","texts","labels","templates","selectedTemplate","templateFieldData","reducer","payload","StoreProvider","dispatch","useReducer","useStore","fieldHalf","TemplateDialog","templateOptions","templateFields","_props$data","_props$data$fromTempl","fromTemplate","reloadTemplatesAndSelectById","noValidate","reportValidity","defaultLanguageCodeToCurrency","getNextColumnNo","max","columnNo","TemplateColumnDialog","outputFieldFound","setOutputFieldFound","blankIfZero","currencyCode","dataFrom","headerText","maxFieldLength","noDecimalSeperator","noThousandSeperator","templateId","templateField","currencyCodeRequired","handleTextFieldChange","outputFieldExists","labelIsTaken","min","fieldData","toggleCheckedDecimalSeperator","newValue","toggleCheckedThousandSeperator","toggleBlankIfZero","currencies","CurrencyDialog","axCustomerNo","segmentationCustomer","onBeforeClose","any","customerDetails","DialogWrapper","args","disableBackdropClick","closeDialogWithoutReloading","pageRoot","addButton","tableHeader","smallGrid","actionCell","tableButton","tableButtonWrapper","arrow","dragging","dragOver","h3","ProductNumberInput","onProductNumberChange","rowsmin","chip","SelectedChips","selectedChipsCount","setSelectedChipsCount","handleChipRemove","facetKey","_selectedFacets","selectedFacets","_list","onChipRemove","Message","onCloseMessage","DialogContentText","tabbar","downloadLink","allOrNoneWrapper","inlineLabel","MenuProps","PaperProps","ITEM_HEIGHT","getContentAnchorEl","dataField","getField","sx","showMessage","setShowMessage","setTemplates","selctedTemplate","setSelectedTemplage","lastPriceDate","setLastPriceDate","pricesFrom","setPricesFrom","productNumbers","setProductNumbers","excelLoading","setExcelLoading","setTotalNumberOfResults","scroller","setTable","usersAllowedFacets","searchoptions","str","searchOnlyInTheseProducts","pagesInAll","resultTemplate","res1","scrollToTop","initialvalue","renderValue","numberOfSelected","facts","checkAll","checkNone","getSortedFacetValues","handleFacetChange","allSelctedFacets","arrayOfSelectedFacets","handleSearchClick","clearSearch","CardHeader","fetch","urls","method","blob","download","CardContent","onLoadMore","index1","rowNo","rowFields","_state$selectedTempla","_state$selectedTempla2","setDialog","draggables","querySelectorAll","addDragClass","classList","dragEnd","_document$querySelect","_document$querySelect2","startRow","endRow","updateTemplateFieldAndReload","isStandardTemplate","canEdit","moveTemplateField","directionIsUp","closeDialog","mb","onCreateTemplateColumn","onCopyTemplate","ArrowUp","ArrowDown","onEditTemplateColumn","onDeleteTemplateColumn","dataFields","setDataFields","onFieldChange","newDataFields","listBox","minHeight","quantityAndPriceWrapper","listHead","listInfo","listTitle","listLabel","quantityInfos","quantityInfo","incrementButton","sortingButton","listPrices","borderRight","borderRightColor","productsDescription","hideOnMobile","prices","quantitiyInfo","listTag","ProductDescription","showOpenOrder","ListViewItem","memo","addSingleProductToBasket","findNextAllowedAmount","searchBar","ProductSearchBar","changeQuery","productsWrapper","topContainer","flew","leftSideOfBar","rightButtons","shippingDateInfo","fromDate","toDate","fixedTop","latestDate","date1","date2","refreshProducts","sorting","setSorting","onArrowUp","ArrowDropUpIcon","onArrowDown","ArrowDropDownIcon","showScrollToTop","setShowScrollToTop","_setSelectedProducts","deliveryFrom","shippingStartOrToday","localStorageDate","_setShippingDate","shippingDateError","setShippingDateError","campaignDrowdownOpen","setCampaignDrowdownOpen","setShippingDate","closeCampaignDropdown","selectedProductInSeachCollection","scrollHandler","ev","indexOfProduct","_products$find","newQty","time","handleToggleFacetvalue","onOpen","openCampaignDropdown","clear","jsonDate","middleSection","facetsWithCounts","cat","catWithCounts","countLabel","ExpandLessIcon","headerSection","inputfield","searchField","headerButton","modalVideoPreview","paginationButton","VideoCard","youtubeId","editVideo","isVideoAdmin","showEditIcon","vidRef","resizeVideo","floor","offsetWidth","postion","allowFullScreen","allow","frameBorder","allVideos","setAllVideos","searchBrand","setSearchBrand","searchTerm","setSearchTerm","editMode","setEditMode","videoUploadOpen","setVideoUploadOpen","setVideoId","setBrand","keywords","setKeywords","setHidden","showHidden","setShowHidden","relatedProducts","setRelatedProducts","videosPerPage","innerWidth","setShowEditIcon","videosFilter","clearInputFields","submitVideo","newVideo","submitEdit","handlePageChange","newId","deleteVideo","sqrt","columnGap","rowGap","navigationSettings","hubRoutes","useSetIsExpanded","HubHelpPage","AdminPage2","SalesAppRoutes","Content","MasterItemDataAppRoutes","FairAppRoutes","VideoAppRoutes","ImageBankAppRoutes","backgroundRepeat","backgroundPosition","setLoginForm","canSubscribe","setCanSubscribe","SignIn","SuccessfulSignup","CheckCircleOutlineIcon","emailError","setEmailError","displayNameError","setDisplayNameError","successfullySignedUp","setSuccessfullySignedUp","atob","UserRegistrationPage","password2","setPassword2","UserPasswordResetPage","setStep","UserPasswordResetCompletionPage","HubRouter","getRoutes","LoginPage","SignupPage","FullScreenLoader","setTime","handleStart","SadSmiley","backdrop","useTheme","handleResize","MuiThemeProvider","Backdrop","modalBackground","modalBodyWrapper","ReactDOM","createPortal","Root","CssBaseline","RootNotistackIntegration","SnackbarProvider","preventDuplicate","maxSnack","autoHideDuration","initialize","pageview","navigator","serviceWorker","ready","registration","unregister"],"mappings":"iGAAAA,EAAOC,QAAU,0pO,oBCAjBD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B,qC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,qC,wlDCYvBC,QACW,cAA7BC,OAAOC,SAASC,UAEe,UAA7BF,OAAOC,SAASC,UAEhBF,OAAOC,SAASC,SAASC,MACvB,2D,qBChBSC,gB,iBCyBA,OACbC,QArBM,8BAsBNC,OAdM,uCAeNC,YAPM,0BC8CR,SAASC,EAAyBC,GAAQ,IAADC,EAAAC,EACvC,OAAkC,OAAb,QAAdD,EAAAD,EAAMG,gBAAQ,IAAAF,OAAA,EAAdA,EAAgBG,UAAqC,QAAvBF,EAAIF,EAAMG,SAASE,YAAI,IAAAH,OAAA,EAAnBA,EAAqBI,cAGjD,SAASC,EAAkBC,EAAMC,GAC9C,IAAIC,EAAaC,IAAMC,OAAO,CAC5BC,QAASL,EACTM,QAASL,EACL,CACE,eAAgB,mBAChB,YAAa,wCAEf,CACE,eAAgB,sBA9EIM,MAqF5B,OAJKN,KAjFuBM,EAkFLL,GAhFTM,aAAaC,QAAQC,IAChCC,IACC,MAAMC,EAAcC,aAAaC,QAAQ,eAIzC,OAHIF,IACFD,EAAOL,QAAuB,cAAC,UAAAS,OAAaH,IAEvCD,GAERnB,IACCwB,QAAQC,IAAI,uBACZC,QAAQC,OAAO3B,KAKnBe,EAAcC,aAAab,SAASe,IACjCf,GACQA,EAERH,IAGC,GAFgBD,EAAyBC,GAE1B,CACb,MAAM4B,EAAkB5B,EAAMmB,OAC9B,IAAIU,EAAeR,aAAaC,QAAQ,gBACpCF,EAAcC,aAAaC,QAAQ,eAEvC,GAAIO,GAAgBT,IAAgBQ,EAAgBE,OAElD,OADAF,EAAgBE,QAAS,EAClBnB,IACJoB,KAAK,GAADR,OAAIS,EAAQnC,OAAM,sBAAsB,CAC3CuB,YAAaA,EACbS,aAAcA,IAEfI,KAAM9B,IACL,GAAwB,MAApBA,EAASC,OAOX,OANAiB,aAAaa,QACX,cACA/B,EAASE,KAAKe,YAAYe,OAE5Bd,aAAaa,QAAQ,eAAgB/B,EAASE,KAAKwB,cACnDL,QAAQY,KAAK,2BACNzB,IAAMiB,KAGhBS,MAAOrC,IAEeD,EAAyBC,KAE5CqB,aAAaiB,WAAW,eACxBjB,aAAaiB,WAAW,gBACxBjB,aAAaiB,WAAW,UACxB/C,OAAOC,SAAW,UAEbQ,IAIf,OAAO0B,QAAQC,OAAO3B,MAyBnB,CACLU,cClFW,SAAS6B,IACtB,MAAMC,EAAgBC,GCNT,SAAmB/B,GAChC,MAAMgC,EAAcC,IAAMC,OAAO,MA+CjC,OA9CAF,EAAYG,QAAU,GA8Cf,CACLC,cA7CF,SAAuBC,GACrBrC,EAAaqC,GA6CbhB,KA1CF,SAAciB,EAAKC,GACjB,OAAOvC,EAAWqB,KAAKiB,EAAKC,IA0C5BC,cAvBF,SAAuBF,EAAKC,GAEtBP,EAAYG,QAAQG,IACtBN,EAAYG,QAAQG,GAAKG,OAAO,IAElC,MAAMhB,EAAQxB,IAAMyC,YAAYC,SAEhC,OADAX,EAAYG,QAAQG,GAAOb,EACpBzB,EAAWqB,KAAKiB,EAAKC,EAAK,CAAEP,YAAaP,EAAMA,SAiBtDmB,aAdF,SAAsBN,EAAKO,GAErBb,EAAYG,QAAQU,IACtBb,EAAYG,QAAQU,GAAmBJ,OAAO,IAEhD,MAAMhB,EAAQxB,IAAMyC,YAAYC,SAEhC,OADAX,EAAYG,QAAQU,GAAqBpB,EAClCzB,EAAW8C,IAAIR,EAAK,CAAEN,YAAaP,EAAMA,SAQhDsB,IAzCF,SAAaT,EAAKC,GAChB,OAAOvC,EAAW+C,IAAIT,EAAKC,IAyC3BO,IAtCF,SAAaR,EAAKC,GAChB,OAAOvC,EAAW8C,IAAIR,EAAKC,IAsC3BS,IAnCF,SAAaV,GACX,OAAOtC,EAAWiD,OAAOX,IAmCzBY,MAhCFC,iBAAwC,IAAnBC,EAASC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,UACzB,IAAIrC,QAASwC,GAAYC,WAAWD,EAASJ,KAgCnDpD,cDjDO0D,CADa7D,EAAkBkC,GACP/B,YAQjC,MAAO,CACL2D,SEpBW,SAAkB7D,GAC/B,IAAI8D,EAAY9D,EA4GhB,MAAO,CACLqB,aA9FF,SAAsB0C,EAAgBC,GACpC,OAAOF,EAAUvC,KAAK,qBAAsB,CAC1CX,YAAamD,EACb1C,aAAc2C,KA4FhBC,MA3GF,SAAeC,EAAUC,GACvB,OAAOL,EAAUvC,KAAK,cAAe,CAAE2C,WAAUC,cA2GjDC,OApGF,WACE,OAAON,EAAUvC,KAAK,gBAoGtB8C,cAzGF,WACE,OAAOP,EAAUd,IAAI,wBAyGrBsB,gBA1FFjB,eAA+BkB,GAC7B,MAAO,IA0FPC,WAnFF,SAAoB/B,GAElB,OADAzB,QAAQC,IAAIwB,GACLqB,EAAUvC,KAAK,QAASkB,IAkF/BgC,WAxFF,SAAoBhC,GAClB,OAAOqB,EAAUvC,KAAK,eAAgBkB,IAwFtCiC,WAhFF,SAAoBC,GAClB,OAAOb,EAAUb,IAAI,QAAS0B,IAgF9BC,WA7EF,SAAoBL,GAClB,OAAOT,EAAUZ,IAAI,SAADnC,OAAUwD,KA6E9BM,YA1EF,WAEE,OADSf,EAAUd,IAAI,cA0EvB8B,gBAtEF,WAEE,OADShB,EAAUd,IAAI,UAsEvB+B,QAlEF,SAAiBR,GAEf,OADST,EAAUd,IAAI,SAADjC,OAAUwD,KAkEhCS,YA9DF,SAAqBvC,GACnB,OAAOqB,EAAUpB,cAAc,eAAgBD,IA8D/CwC,eAnDF,SAAwBC,EAAQC,EAAIxD,GAClC,IAAIyD,EAAM,CACRF,OAAQA,EACRf,SAAUgB,EACVxD,MAAOA,GAET,OAAOmC,EAAUvC,KAAK,uBAAwB8D,KAAKC,UAAUF,KA8C7DG,qBA3CF,SAA8BC,GAC5B,IAAIJ,EAAM,CACRI,YAEF,OAAO1B,EAAUvC,KAAK,sBAAuB8D,KAAKC,UAAUF,KAwC5DK,2BArCF,SAAoCD,GAClC,IAAIJ,EAAM,CACRI,YAEF,OAAO1B,EAAUvC,KAAK,sCAEpB8D,KAAKC,UAAUF,KAgCjBM,8BA9DF,SAAuCjD,GACrC,OAAOqB,EAAUb,IAAI,gCAAiCR,IA8DtDkD,mBA3DF,SAA4BlD,GAC1B,OAAOqB,EAAUb,IAAI,oBAAqBR,IA2D1CmD,qBA9BF,SAA8BC,GAC5B,OAAO/B,EAAUvC,KAAK,yBAA0BsE,IA8BhDC,iBA3BF,SAA0BZ,EAAQa,GAChC,OAAOjC,EAAUb,IACf,sBACAoC,KAAKC,UAAU,CAAEJ,SAAQa,kBF3FZC,CAAShE,EAAaR,EAAQnC,SAO7C4G,UGjBW,SAAmBnC,GAuGhC,MAAMoC,EAAM/F,IAAMC,OAAO,CACvBC,QAASmB,EAAQpC,UAoiBnB,MAAO,CACL+G,aANmBC,GAAStC,EAAUd,IAAI,sBAADjC,OAAuBqF,IAOhEC,aANmBA,CAACD,EAAO7B,IAAOT,EAAUZ,IAAI,sBAADnC,OAAuBqF,EAAK,aAAArF,OAAYwD,IAOvF+B,aANmBA,CAACF,EAAOG,IAASzC,EAAUvC,KAAK,sBAADR,OAAuBqF,GAASG,GAOlFC,gBANsBA,CAACJ,EAAOG,IAASzC,EAAUb,IAAI,sBAADlC,OAAuBqF,GAASG,GAOpFE,+BA1BF,WACE,OAAO3C,EAAUd,IAAI,gCA0BrB0D,kCAnBF,SAA2CjE,GACzC,OAAOqB,EAAUb,IAAI,8BAA+BR,IAmBpDkE,kCAhBF,SAA2ClE,GACzC,OAAOqB,EAAUZ,IAAI,gDAAkDT,IAgBvEmE,kCAzBF,SAA2CnE,GACzC,OAAOqB,EAAUvC,KAAK,8BAA+BkB,IAyBrDoE,kBAlCF,WACE,OAAO/C,EAAUd,IAAI,wBAkCrB8D,mBArDF,WACE,OAAOhD,EAAUd,IAAI,mCAqDrB+D,6BAzDF,SAAsCC,GACpC,OAAOlD,EAAUd,IAAI,8BAADjC,OAA+BiG,KAyDnDC,qBApDF,SAA8BxE,GAC5B,OAAOqB,EAAUvC,KAAK,iCAAkCkB,IAoDxDyE,qBAlDF,SAA8BzE,GAC5B,OAAOqB,EAAUb,IAAI,iCAAkCR,IAkDvD0E,qBAhDF,SAA8B1E,GAC5B,OAAOqB,EAAUZ,IACf,mDAAqDT,IA+CvD2E,cAhGF,WACE,OAAOtD,EAAUd,IAAI,qBAgGrBqE,iBA7FF,SAA0BC,GACxB,OAAOxD,EAAUvC,KAAK,kBAAmB+F,IA6FzCC,eA1FF,SAAwBD,GACtB,OAAOxD,EAAUb,IAAI,kBAAmBqE,IA0FxCE,iBAvFF,SAA0BjD,GACxB,OAAOT,EAAUZ,IAAI,mBAADnC,OAAoBwD,KAuFxCkD,iBA9pBF,SACEC,EACAC,EACAC,EACAC,EACAC,GAEA,OAAOhE,EAAUd,IAAI,sBAADjC,OACI2G,EAAa,KAAA3G,OAAI4G,EAAiB,KAAA5G,OAAI6G,EAAsB,KAAA7G,OAAI8G,EAAU,KAAA9G,OAAI+G,KAupBtGC,yBAnpBF,SACEL,EACAM,EACAJ,EACAK,EACAC,GAEA,OAAOpE,EAAUhB,aAAa,6BAAD/B,OACE2G,EAAa,KAAA3G,OAAIiH,EAAyB,KAAAjH,OAAI6G,EAAsB,KAAA7G,OAC/FkH,GAAc,KAAI,KAAAlH,OAChBmH,GACJ,iBAyoBFC,iBAroBF,SACET,EACAC,EACAC,GAEA,OAAO9D,EAAUd,IAAI,0BAADjC,OACQ2G,EAAa,KAAA3G,OAAI4G,EAAiB,KAAA5G,OAAI6G,KAgoBlEQ,oBA5nBF,SAA6BV,GAC3B,OAAO5D,EAAUd,IAAI,8BAADjC,OAA+B2G,KA4nBnDW,iBArmBF,SAA0BC,GACxB,OAAOxE,EAAUd,IAAI,mBAADjC,OAAoBuH,KAqmBxCC,iBA1mBF,SAA0BD,EAAWE,GACnC,OAAO1E,EAAUvC,KAAK,kBAAmB,CAAE+G,YAAWE,UA0mBtDC,aA5IF,SAAsBC,GACpB,OAAO5E,EAAUd,IAAI,gCAADjC,OAAiC2H,KA4IrDC,2BArIF,SAAoCC,GAClC,OAAO9E,EAAUvC,KAAK,iDAADR,OAC8B6H,KAoInDC,4BA1IF,SAAqCpG,GACnC,OAAOqB,EAAUvC,KAAK,kCAAmCkB,IA0IzDqG,sBAjIF,SAA+BrG,GAC7B,OAAOqB,EAAUpB,cAAc,6BAA8BD,IAiI7DsG,QA5JF,WACE,OAAOjF,EAAUd,IAAI,UA4JrBgG,eArKF,SAAwBzE,EAAI0E,GAC1B,OAAOnF,EAAU5D,WAAW+C,IAAI,SAADlC,OAAUwD,GAAM0E,EAAU,CACvD3I,QAAS,CACP,eAAgB,0BAmKpB4I,OA1JF,SAAgB3E,GACd,OAAOT,EAAUd,IAAI,SAADjC,OAAUwD,KA0J9B4E,aAvJF,WACE,OAAOrF,EAAUd,IAAI,oBAuJrBoG,YA/MF,SAAqBC,GACnB,OAAOvF,EAAUvC,KAAK,UAAW8H,IA+MjCC,YA5MF,SAAqBD,GACnB,OAAOvF,EAAUb,IAAI,UAAWoG,IA4MhCE,eAzMF,WACE,OAAOzF,EAAUd,IAAI,uBAyMrBwG,UAvMF,WACE,OAAO1F,EAAUd,IAAI,YAuMrByG,aApMF,SAAsBC,GACpB,OAAO5F,EAAUd,IAAI,kBAADjC,OAAmB2I,KAoMvCC,cAjMF,SAAuBC,GACrB,OAAO9F,EAAUd,IAAI,eAADjC,OAAgB6I,KAiMpCC,qBA9LF,SAA8BtF,GAC5B,OAAOT,EAAUd,IAAI,WAADjC,OAAYwD,KA8LhCuF,gBA3LF,SAAyBF,GACvB,OAAO9F,EAAUd,IAAI,eAADjC,OAAgB6I,KA2LpCG,YAxLF,SAAqBxF,GACnB,OAAOT,EAAUZ,IAAI,WAADnC,OAAYwD,KAwLhCyF,cArLF,SAAuBC,GACrB,OAAOnG,EAAUd,IAAI,oBAADjC,OAAqBkJ,KAqLzCpF,YAjOF,WACE,OAAOf,EAAUd,IAAI,cAiOrB8B,gBA9NF,WACE,OAAOhB,EAAUd,IAAI,UA8NrBkH,yBA3OF,SAAkChF,EAAQiF,EAAQC,GAChD,OAAOtG,EAAUd,IAAI,cAADjC,OAAemE,EAAM,KAAAnE,OAAIoJ,EAAM,KAAApJ,OAAIqJ,KA2OvDC,iBAhPF,SAA0BnF,EAAQiF,GAChC,OAAOrG,EAAUd,IAAI,cAADjC,OAAemE,EAAM,KAAAnE,OAAIoJ,KAgP7CG,oBAvSF,SAA6BL,EAAY/E,EAAQtF,GAC/C,OAAe,IAAXA,EAEKkE,EAAUd,IAAI,8BAADjC,OACYkJ,EAAU,YAAAlJ,OAAWmE,EAAM,WAAW,EAAC,gBAAe,IAG/EpB,EAAUd,IAAI,8BAADjC,OACYkJ,EAAU,YAAAlJ,OAAWmE,EAAM,YAAAnE,OAAWnB,EAAM,gBAAe,KAgS7F2K,wBA3RF,SAAiCN,EAAYvB,EAAY9I,GACvD,OAAe,IAAXA,EACKkE,EAAUd,IAAI,kCAADjC,OACgBkJ,EAAU,gBAAAlJ,OAAe2H,EAAU,WAAW,EAAC,gBAAe,IAG3F5E,EAAUd,IAAI,kCAADjC,OACgBkJ,EAAU,gBAAAlJ,OAAe2H,EAAU,YAAA3H,OAAWnB,EAAM,gBAAe,KAqRzG4K,mCAhRF,SACEP,EACAvB,EACA+B,EACAC,GAEA,OAAO5G,EAAUd,IAAI,4CAADjC,OAC0BkJ,EAAU,gBAAAlJ,OAAe2H,EAAU,UAAA3H,OAAS0J,EAAI,QAAA1J,OAAO2J,KA0QrGC,mBAtQF,SAA4BC,EAAUrG,GACpC,OAAOT,EAAUd,IAAI,cAADjC,OAAewD,EAAE,gBAAAxD,OAAe6J,KAsQpDC,kBAnQF,SAA2BC,GACzB,OAAOhH,EAAUb,IAAI,aAAc6H,IAmQnCC,kBAhQF,SAA2BD,GACzB,OAAOhH,EAAUvC,KAAK,YAAauJ,IAgQnCE,oBA7PF,SAA6BJ,EAAU1F,GACrC,OAAOpB,EAAUd,IAAI,8BAADjC,OACY6J,EAAQ,YAAA7J,OAAWmE,KA4PnD+F,uBAxpBF,SAAgC3C,GAC9B,OAAOxE,EAAUd,IAAI,cAADjC,OAAeuH,KAwpBnC4C,qBArpBF,SAA8BxB,GAC5B,OAAO5F,EAAUd,IAAI,qBAADjC,OAAsB2I,EAAI,QAqpB9CyB,gCAlpBF,SAAyC7C,GACvC,OAAOxE,EAAUd,IAAI,wBAADjC,OAAyBuH,KAkpB7C8C,6BA/oBF,SAAsCnB,GACpC,OAAOnG,EAAUd,IAAI,gCAADjC,OAAiCkJ,KA+oBrDoB,mBApoBF,SAA4B3B,GAC1B,OAAO5F,EAAUd,IAAI,mBAADjC,OAAoB2I,EAAI,QAooB5C4B,qBAjoBF,SAA8B5B,GAC5B,OAAO5F,EAAUd,IAAI,qBAADjC,OAAsB2I,EAAI,QAioB9C6B,eA1nBF,SAAwB9I,GACtB,OAAOqB,EAAUpB,cAAc,kBAAmBD,IA0nBlD+I,YAvnBF,SAAqB/I,GACnB,OAAOyD,EAAI3E,KAAK,wBAAyBkB,EAAK,CAC5CnC,QAAS,CACP,cAAiB,UAAYO,aAAaC,QAAQ,gBAEpD2K,aAAc,UAmnBhBC,eA/mBF,SAAwBC,EAAYC,EAAWC,EAAc3G,GAC3D,OAAOpB,EAAUd,IAAI,YAADjC,OACN4K,EAAU,KAAA5K,OAAI6K,EAAS,KAAA7K,OAAI8K,EAAY,KAAA9K,OAAImE,KA8mBzD4G,kBAnlBF,SAA2BH,EAAYE,EAAc3G,EAAQ6G,GAC3DA,EAAEC,iBACF,MAAM/C,EAAW,IAAIgD,SAGrB,OAFAhD,EAASiD,OAAO,YAAaH,EAAEI,OAAOC,MAAM,IAErClG,EAAI3E,KAAK,YAADR,OAAa4K,EAAU,KAAA5K,OAAI8K,EAAY,KAAA9K,OAAImE,EAAM,WAAW+D,EAAU,CACnF3I,QAAS,CACP,eAAgB,sBAChB,cAAiB,UAAYO,aAAaC,QAAQ,mBA4kBtDuL,qBA3mBF,SAA8BV,EAAYC,EAAWC,GACnD,OAAO/H,EAAUd,IAAI,YAADjC,OACN4K,EAAU,KAAA5K,OAAI6K,EAAS,KAAA7K,OAAI8K,EAAY,UA0mBrDS,gBAxkBF,SAAyBC,GACvB,OAAOzI,EAAUd,IAAI,YAADjC,OAAawL,EAAQ,gBAwkBzCC,YArkBF,SAAqBC,EAAUC,EAAMC,GACnC,OAAO7I,EAAUd,IAAI,iBAADjC,OAAkB0L,EAAQ,KAAA1L,OAAI2L,EAAI,KAAA3L,OAAI4L,KAqkB1DC,iBAlkBF,SAA0BH,GACxB,OAAO3I,EAAUd,IAAI,iBAADjC,OAAkB0L,EAAQ,YAkkB9CI,eA/jBF,SAAwBJ,EAAUK,GAChC,OAAOhJ,EAAUd,IAAI,aAADjC,OAAc0L,EAAQ,YAAA1L,OAAW+L,KA+jBrDC,mBA5jBF,SAA4BN,EAAUO,GACpC,OAAOlJ,EAAUd,IAAI,aAADjC,OAAc0L,EAAQ,KAAA1L,OAAIiM,EAAO,eA4jBrDC,eAzjBF,SAAwBR,EAAUS,EAAWjD,GAC3C,OAAOnG,EAAUd,IAAI,aAADjC,OACL0L,EAAQ,KAAA1L,OAAImM,EAAS,KAAAnM,OAAIkJ,EAAU,mBAwjBlDkD,qBApjBF,SAA8BC,GAC5B,OAAOtJ,EAAUd,IAAI,uBAADjC,OAAwBqM,KAojB5CC,UAjjBF,SAAmBZ,GACjB,OAAO3I,EAAUd,IAAI,WAADjC,OAAY0L,KAijBhCa,SA9iBF,SAAkBb,EAAUW,EAASnD,GACnC,OAAOnG,EAAUd,IAAI,6BAADjC,OACW0L,EAAQ,KAAA1L,OAAIqM,EAAO,KAAArM,OAAIkJ,KA6iBtDsD,aAziBF,SAAsBd,EAAUK,GAC9B,OAAOhJ,EAAUd,IAAI,WAADjC,OAAY0L,EAAQ,YAAA1L,OAAW+L,KAyiBnDU,qBAtiBF,SAA8Bf,EAAUW,EAASK,EAAgBxD,GAC/D,OAAOnG,EAAUd,IAAI,6BAADjC,OACW0L,EAAQ,KAAA1L,OAAIqM,EAAO,KAAArM,OAAI0M,EAAc,KAAA1M,OAAIkJ,KAqiBxEyD,wBAjiBF,SAAiCjB,EAAUW,EAASnD,GAClD,OAAOnG,EAAUd,IAAI,gCAADjC,OACc0L,EAAQ,KAAA1L,OAAIqM,EAAO,KAAArM,OAAIkJ,KAgiBzD0D,uBAxgBF,SACEC,EACA3D,EACAmD,EACAX,EACAgB,GAEA,OAAO3J,EAAUvC,KAAK,yBAA0B,CAC9CqM,QACA3D,aACAmD,UACAX,WACAgB,oBA6fFI,0BAzfF,SAAmCD,EAAO3D,EAAYmD,EAASX,GAC7D,OAAO3I,EAAUvC,KAAK,4BAA6B,CACjDqM,QACA3D,aACAmD,UACAX,cAqfFqB,gBAjfF,SAAyBF,EAAO3D,EAAYwC,GAC1C,OAAO3I,EAAUvC,KAAK,kBAAmB,CAAEqM,QAAO3D,aAAYwC,cAif9DsB,aA9eF,SAAsBH,EAAO3D,EAAYwC,EAAUS,GACjD,OAAOpJ,EAAUvC,KAAK,eAAgB,CACpCqM,QACA3D,aACAwC,WACAS,eA0eFc,oBAteF,SAA6BJ,EAAO1I,EAAQ+I,EAAkBhE,GAC5D,OAAOnG,EAAUvC,KAAK,sBAAuB,CAC3CqM,QACA1I,SACA+I,mBACAhE,gBAkeFiE,oBAjhBF,SAA6BzB,EAAUW,GACrC,OAAOtJ,EAAUd,IAAI,cAADjC,OAAe0L,EAAQ,KAAA1L,OAAIqM,KAihB/Ce,aAliBF,SAAsB1B,GACpB,OAAO3I,EAAUd,IAAI,cAADjC,OAAe0L,KAkiBnC2B,kBA/hBF,SAA2B3B,EAAUxC,GACnC,OAAOnG,EAAUd,IAAI,0BAADjC,OAA2B0L,EAAQ,KAAA1L,OAAIkJ,KA+hB3DoE,cA5hBF,SAAuB5B,GACrB,OAAO3I,EAAUd,IAAI,qBAADjC,OAAsB0L,KA4hB1C6B,gBAzhBF,SAAyB7B,EAAUK,GACjC,OAAOhJ,EAAUd,IAAI,cAADjC,OAAe0L,EAAQ,YAAA1L,OAAW+L,KAyhBtDyB,YAldF,SAAqBnJ,GACnB,OAAOtB,EAAUvC,KAAK,sBAAuB6D,IAkd7CoJ,cA/cF,SAAuBpJ,GACrB,OAAOtB,EAAUvC,KAAK,wBAAyB6D,IA+c/CqJ,UA5cF,SAAmBrJ,GACjB,OAAOtB,EAAUvC,KAAK,4BAA6B6D,IA4cnDsJ,YAzcF,SAAqBtJ,GACnB,OAAOtB,EAAUvC,KAAK,8BAA+B6D,IAycrDuJ,UArcF,SAAmBjG,EAAYxD,EAAQ0J,GAAoC,IAAxBC,EAAatL,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC9D,OAAOO,EAAUd,IAAI,gBAADjC,OAAiB2H,EAAU,KAAA3H,OAAImE,EAAM,KAAAnE,OAAI8N,EAAa,KAAA9N,OAAI6N,KAqc9EE,sBAlcF,SAA+B5J,EAAQwD,EAAYkG,GACjD,OAAO9K,EAAUd,IAAI,8BAADjC,OAA+BmE,EAAM,KAAAnE,OAAI2H,EAAU,KAAA3H,OAAI6N,KAkc3EG,eA/bF,SACEC,EACAC,EACA/J,EACAwD,EACAwG,EACAN,GAGC,IAFDO,EAAqB5L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACxB6L,EAAe7L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAEf,OAAOO,EAAUvC,KAAK,UAAW,CAC/ByN,SACAC,WACA/J,SACAwD,aACAwG,sBACAC,wBACAC,kBACAR,gBA8aFS,mBA1aF,SAA4BC,GAC1B,OAAOxL,EAAUvC,KAAK,gBAAiB+N,IA0avCC,kBAvaF,SACEC,EACAtK,EACAwD,GAGC,IAFD0G,EAAe7L,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACfqL,EAAUrL,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAEV,OAAOK,EAAUb,IAAI,UAAW,IAC3BuM,EACHtK,SACAwD,aACA0G,kBACAR,gBA4ZFa,kBAxZF,SAA2BC,GACzB,OAAO5L,EAAUZ,IAAI,iBAADnC,OAAkB2O,KAwZtCC,aArZF,SAAsBC,GACpB,OAAO9L,EAAUZ,IAAI,WAADnC,OAAY6O,KAqZhCC,cAlZF,SAAuBzK,GACrB,OAAOtB,EAAUvC,KAAK,kBAAmB6D,IAkZzC0K,sBA/YF,SAA+BC,GAC7B,OAAOjM,EAAUd,IAAI,mBAADjC,OAAoBgP,KAgZxCC,aA5YF,SAAsBtH,EAAYxD,GAChC,OAAOpB,EAAUd,IAAI,mBAADjC,OAAoB2H,EAAU,KAAA3H,OAAImE,KA4YtD+K,kBAzYF,SAA2BjB,EAAQC,EAAU/J,EAAQwD,GACnD,OAAO5E,EAAUvC,KAAK,aAAc,CAClCyN,SACAC,WACA/J,SACAwD,gBAqYFwH,sBAjYF,SAA+BZ,GAC7B,OAAOxL,EAAUvC,KAAK,mBAAoB+N,IAiY1Ca,qBA9XF,SACET,EACAF,EACAtK,EACAwD,GAEA,OAAO5E,EAAUb,IAAI,aAAc,CACjCyM,mBACGF,EACHtK,SACAwD,gBAqXF0H,qBAjXF,SAA8BV,EAAepH,EAAWpD,GACtD,OAAOpB,EAAUZ,IAAI,cAADnC,OAAe2O,EAAa,KAAA3O,OAAIuH,EAAS,KAAAvH,OAAImE,KAiXjEmL,iBA1WF,SAA0BjL,GACxB,OAAOtB,EAAUvC,KAAK,qBAAsB6D,IA0W5CkL,yBAvWF,SAAkCP,GAChC,OAAOjM,EAAUd,IAAI,mBAADjC,OAAoBgP,KAuWxCQ,gBAhXF,SAAyBX,GACvB,OAAO9L,EAAUZ,IAAI,cAADnC,OAAe6O,KAiXnCY,iBA1fF,WACE,OAAO1M,EAAUd,IAAI,0BA0frByN,UAvfF,WACE,OAAO3M,EAAUd,IAAI,mBAufrB0N,aA1SF,WACE,OAAO5M,EAAUd,IAAI,sBA0SrB2N,kBArfF,SAA2B/F,GACzB,OAAO9G,EAAUd,IAAI,0BAADjC,OAA2B6J,KAqf/CgG,qBAlfF,WACE,OAAO9M,EAAUd,IAAI,8BAmfrB6N,kBAtrBF,SAA2BpO,GACzB,OAAOqB,EAAUvC,KAAK,uBAAwBkB,IAurB9CqO,iBAvNF,WACE,OAAOhN,EAAUd,IAAI,uBAuNrB+N,gBApNF,SAAyBC,GACvB,OAAOlN,EAAUvC,KAAK,qBAAsByP,IAoN5CC,iBAjNF,SAA0BD,GACxB,OAAOlN,EAAUb,IAAI,sBAAuB+N,IAiN5CE,mBA9MF,SAA4BC,GAC1B,OAAOrN,EAAUZ,IAAI,yBAADnC,OAA0BoQ,KA8M9CC,oBA3LF,WACE,OAAOtN,EAAUd,IAAI,0BA2LrBqO,eAxLF,SAAwBnM,EAAQoM,GAC9B,OAAOxN,EAAUvC,KAAK,iCAADR,OAAkCmE,EAAM,KAAAnE,OAAIuQ,KAwLjEC,oBArLF,SAA6BrM,EAAQoM,GACnC,OAAOxN,EAAUZ,IAAI,gCAADnC,OAAiCmE,EAAM,KAAAnE,OAAIuQ,KAqL/DE,mBAlLF,SAA4BC,GAC1B,OAAO3N,EAAUvC,KAAK,4BAA6B,CAAEkQ,eAkLrDC,sBA/KF,SAA+BJ,GAC7B,OAAOxN,EAAUZ,IAAI,gCAADnC,OAAiCuQ,KA+KrDK,+BA5JF,WACE,OAAO7N,EAAUd,IAAI,gCA6JrB4O,wBAlqBF,SAAiCjG,EAAYE,EAAcE,GACzDA,EAAEC,iBACF,MAAM/C,EAAW,IAAIgD,SAGrB,OAFAhD,EAASiD,OAAO,YAAaH,EAAEI,OAAOC,MAAM,IAErClG,EAAI3E,KAAK,YAADR,OAAa4K,EAAU,KAAA5K,OAAI8K,EAAY,eAAe5C,EAAU,CAC7E3I,QAAS,CACP,eAAgB,sBAChB,cAAiB,UAAYO,aAAaC,QAAQ,oBHxGtC+Q,CAAU7P,EAAaR,EAAQpC,UAO/C0S,eItBW,SAAwB9R,GACrC,IAAI8D,EAAY9D,EAOhB,MAAO,CACL+R,cANF,SAAuBC,EAAaC,GAElC,OADSnO,EAAUd,IAAI,UAADjC,OAAWiR,EAAW,KAAAjR,OAAIkR,MJY3BC,CAAelQ,EAAaR,EAAQ2Q,gBAOzDC,oBKpBW,SAA6BtO,GAC1C,MA2FMoC,EAAM/F,IAAMC,OAAO,CACvBC,QAASmB,EAAQpC,UAwBnB,MAAO,CACLsR,aAhCmB,WACnB,OAAO5M,EAAUd,IAAI,aAgCrBqP,qBAtH2B,SAAU1G,GACrC,OAAO7H,EAAUd,IAAI,+BAAiC2I,IAsHtD2G,cAnHoB,SAAUC,GAC9B,OAAOzO,EAAUvC,KAAK,2BAA4BgR,IAmHlDC,oBAzB0B,SAAUD,GACpC,OAAOrM,EAAI3E,KAAK,iCAAkCgR,EAAW,CAC3DjS,QAAS,CACPmL,aAAc,cACdgH,cAAe,UAAY5R,aAAaC,QAAQ,mBAsBpD4R,uBAjB8B3G,IAC9BA,EAAEC,iBACF,MAAM/C,EAAW,IAAIgD,SAErB,OADAhD,EAASiD,OAAO,YAAaH,EAAEI,OAAOC,MAAM,IACrClG,EAAI3E,KAAK,wCAAyC0H,EAAU,CACjE3I,QAAS,CACP,eAAgB,sBAChB,cAAiB,UAAYO,aAAaC,QAAQ,mBAatD6R,YAnHkB,SAAUlG,GAC5B,OAAO3I,EAAUvC,KAAK,sBAAuB,CAAEqR,KAAMnG,EAASmG,QAmH9DC,eA/GqB,SAAUpG,GAC/B,OAAO3I,EAAUb,IAAI,uBAAyBwJ,EAASlI,GAAI,CACzDqO,KAAMnG,EAASmG,QAgHjBE,kBA3GwB,SAAUC,GAClC,OAAOjP,EAAUvC,KAAK,8BAA+BwR,IA2GrDC,qBAvG2B,SAAUD,GACrC,OAAOjP,EAAUb,IAAI,8BAAgC8P,EAAOxO,GAAIwO,IAuGhEE,qBAnG2B,SAAUF,GACrC,OAAOjP,EAAUZ,IAAI,8BAAgC6P,EAAOxO,KAqG5D2O,YAjGkB,SAAUrT,GAC5B,OAAOiE,EAAUvC,KAAK,sBAAuB1B,IAiG7CsT,aA7FmB,SAAUtT,GAC7B,OAAOiE,EAAUvC,KAAK,uCAAwC1B,IA6F9DuT,aAzFmB,SAAUvT,GAC7B,OAAOiE,EAAUb,IAAI,uBAADlC,OAAwBlB,EAAK0E,IAAM,CACrDqO,KAAM/S,EAAK+S,KACXS,oBAAqBxT,EAAKwT,oBAC1BC,SAAUzT,EAAKyT,YAsFjBC,eAjFqB,SAAU1T,GAC/B,OAAOiE,EAAUZ,IAAI,uBAADnC,OAAwBlB,EAAK0E,MAmFjDiP,iBA/EuB,SAAU3T,GACjC,OAAOiE,EAAUvC,KAAK,4BAA6B1B,IA+EnD4T,oBA3E0B,SAAU5T,GACpC,OAAOiE,EAAUb,IAAI,6BAADlC,OAA8BlB,EAAK0E,IAAM1E,IA2E7D6T,oBAvE0B,SAAU7T,GACpC,OAAOiE,EAAUZ,IAAI,6BAADnC,OAA8BlB,EAAK0E,MAyEvDoP,gBAhEsB,SAAUpP,EAAI1E,GACpC,OAAOiE,EAAUb,IAAI,iCAADlC,OAAkCwD,GAAM1E,IAgE5D+T,sBAtE4B,WAC5B,OAAO9P,EAAUd,IAAI,mCL/DK6Q,CAAoB7R,EAAaR,EAAQpC,W,aMfxD0U,cAAe,CAC5BC,QAAS,CACPC,WAAY,CACVC,WAAY,8CAEdC,QAAS,CACPC,MAAO,UACPC,KAAM,UACNC,KAAM,UACNC,aAAc,QAEhBC,UAAW,CACTJ,MAAO,UACPC,KAAM,UACNC,KAAM,UACNC,aAAc,WAEhBE,KAAM,CACJJ,KAAM,WAERK,OAAQ,CACNC,WAAY,UACZC,MAAO,WAETD,WAAY,CACVE,QAAS,SAEXC,OAAQ,CACNX,QAAS,UACTK,UAAW,UACXO,IAAK,UACLC,OAAQ,MACRC,OAAQ,aChCClB,cAAe,CAC5BC,QAAS,CACPG,QAAS,CACPE,KAAM,WAERG,UAAW,CACTH,KAAM,WAERI,KAAM,CACJJ,KAAM,WAERM,WAAY,CACVE,QAAS,UACTL,UAAW,WAEbU,MAAO,CACLL,QAAS,cClBf,MAAMM,EAAuB,CAC3BC,KAAM,EACNC,IAAK,EACLC,UAAW,GCYN,SAASC,EAAaC,GAC3B,MAAOC,EAAeC,GAAoBC,oBAAS,IAC5CC,EAAWC,GAAgBF,oBAAS,IACpCG,EAAOC,GAAYJ,mBAASK,IAC5BC,EAAOC,GAAYP,sBACnBQ,EAAiBC,GAAsBT,oBAAS,IAChDU,EAAOC,GAAYX,sBACnBY,EAAOC,GAAYb,mBAAS,CAAEc,SAAU,GAAIC,QAAS,MACrDC,EAAgBC,GAAqBjB,oBAAS,IAC9CkB,EAAYC,GAAiBnB,oBAAS,GAGvCoB,EAAmB/U,IAGnBgV,EAiMD,SAAsBxB,EAAUuB,GACrC,MAAOtB,EAAeC,GAAoBC,oBAAS,IAC5CxQ,EAAQ8R,GAAatB,mBAAS,IAC9BlQ,EAAUyR,GAAevB,mBAAS,KAClCwB,EAAaC,GAAkBzB,mBAAS,sBACxCzH,EAAkBmJ,GAAuB1B,mBAAS,CACvDpN,UAAW,GACX0J,YAAa,GACbqF,YAAa,GACbpF,SAAU,GACVqF,MAAO,GACPC,MAAO,MAEFC,EAAcC,GAAmB/B,mBAAS,IAC1C9K,EAAU8M,GAAehC,mBAAS,IAClC7J,EAAc8L,GAAmBjC,sBACjCkC,EAAaC,GAAkBnC,mBAAS,CAC7CoC,KAAM,GACNC,aAAc,EACdC,wBAAyB,KACzBC,yBAA0B,KAC1BC,wBAAyB,KACzBtQ,uBAAwB,KACxBuQ,oBAAoB,EACpBC,oBAAoB,EACpBC,wBAAwB,EACxBC,mBAAmB,EACnBtR,WAAY,KAGP2O,EAAWC,GAAgBF,oBAAS,IAErC,UAAEL,EAAS,IAAED,EAAG,KAAED,GAASD,GAE1BqD,EAAqBC,GAA0B9C,mBAASL,GA0F/D,SAASoD,EAAKvT,EAAQwT,GACpB,IAAKxT,EAAQ,OAAO,KACpB0Q,GAAa,GAEbkB,EAAiBjT,SACdiB,kBACArD,KAAMkX,IACL,IAAIC,EAAKD,EACT,GAAiB,MAAbA,EAAE/Y,OAAgB,CACpB,IAAIgZ,EAAG/Y,KAsCL,OADI6Y,GAAUA,GAAS,IAChB,EAtCI,CACX,MAAM,OACJxT,EAAM,SACNM,EAAQ,WACRyE,EAAU,aACV4B,EAAY,YACZqL,EAAW,wBACXc,EAAuB,yBACvBC,EAAwB,wBACxBC,EAAuB,uBACvBtQ,GACEgR,EAAG/Y,KAEPmX,EAAU9R,GACV+R,EAAYzR,GACZiS,EAAgBvS,GAChBiS,EAAeD,GACfW,EAAee,EAAG/Y,MAClB6X,EAAYzN,GACZ0N,EAAgB9L,GA7F1B,SAA8BvD,GAC5B,IAAKA,EAGH,OAFAsN,GAAa,QACbwB,EAAoB,CAAEyB,YAAY,IAGpC/B,EAAiB7Q,UACdgF,uBAAuB3C,GACvB7G,KAAMqX,IACc,MAAfA,EAAIlZ,SACNwX,EAAoB0B,EAAIjZ,MACxB+V,GAAa,MAGhB/T,MAAOkK,IACN/K,QAAQC,IAAI8K,EAAEgN,cA+EVC,CAAqBhB,GACrBvC,GAAiB,GAGf+C,EADEP,EACqB9C,EAGnB+C,GAA2BtQ,EACNwN,EAEAC,GAI3B4D,IAAQC,IAAI,CAAEhU,OAAQA,IAClBwT,GAAUA,GAAS,OAO5B7W,OAAM,SAAUrC,GACf,MAAMA,KAEP2Z,QAAQ,IAAMvD,GAAa,IAEhC,MAAO,CACLJ,gBACAG,YACAzQ,SACAsS,eACA4B,QAAS5T,EACT0R,cACAjJ,mBACArD,WACAiB,eACA0M,sBACAc,cA3JF,WACEZ,EAAKvT,IA2JLwS,YAlHF,SAA8BzN,EAAY4B,GACnC3G,GAEL4R,EAAiBjT,SACd8B,mBAAmB,CAAET,SAAQ+E,eAC7BxI,KAAMkX,IACY,MAAbA,EAAE/Y,SACJ8X,EAAYzN,GACZ0N,EAAgB9L,MAGnBhK,MAAOrC,IACNwB,QAAQC,IAAIzB,GACZ+V,EAAS,UAAW,gCAErB4D,QAAQ,SAoGXG,cAjGF,SAAgC/U,EAAImU,GAClC,GAAe,IAAXxT,EAAc,OAElB,IAAIqU,EAAI3B,EACR2B,EAAExB,aAAexT,EAEjBuS,EAAiBjT,SACda,WAAW6U,GACX9X,KAAMkX,IACY,MAAbA,EAAE/Y,SACJiY,EAAe0B,GACXb,GAAUA,EAASnU,MAG1B1C,MAAOrC,IACFkZ,GAAUA,EAASnU,GACvBvD,QAAQC,IAAIzB,GACZ+V,EAAS,UAAW,iCAErB4D,QAAQ,SA+EXvB,cACAa,KAAMA,EACNe,YA5JF,SAA8BC,EAAKjC,GACjCiC,EAAIlV,GAAK,KACJkV,GAKL7D,GAAa,GAEbkB,EAAiBjT,SACd6B,8BAA8B,CAC7BR,OAAQA,EACRoD,UAAWmR,EAAInR,UACf0J,YAAayH,EAAIzH,cAElBvQ,KAAK,IAAM1C,OAAOC,SAAS0a,UAC3B7X,MAAM,IAAM0T,EAAS,UAAW,4DAbjCA,EAAS,UAAW,qBA0JtBoE,yBA/EF,WACE,OACE1L,EAAiB3F,UAAY,KAAO2F,EAAiB+D,YAAc,MAzTrD4H,CAAarE,EAAUuB,GACnC+C,EC7BD,SAA4BhU,EAAMI,GACvC,MAAO6T,EAAYC,GAAiBrE,mBAAS,KACtCsE,EAAYC,GAAiBvE,oBAAS,GAO7C,SAAS+C,IACa,IAAhB5S,EAAKX,QAAkC,IAAlBW,EAAK+E,UAC9B3E,EACG+D,cAAcnE,EAAK+E,UACnBnJ,KAAMkX,IACY,MAAbA,EAAE/Y,QACJma,EAAcpB,EAAE9Y,KAAKia,cAGxBjY,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,QAYb,OAJAe,oBAAU,KACRzB,KACC,CAAC5S,EAAK+E,WAEF,CACLuP,SA9BF,SAAkBvQ,GAChB,IAAIgP,EAAKkB,EAAWlQ,GACpB,OAAOgP,GAAUhP,GA6BjBoQ,aACAI,iBAZF,SAA0BC,GACxBJ,EAAcI,GACdrZ,QAAQC,IAAIoZ,IAWZ5B,QDRsB6B,CACtBvD,EACAD,EAAiB7Q,WAEbsU,EAAUC,EAqJhB,SAASC,IACP,IAAIC,EAAI7Z,aAAaC,QAAQ,cAC7B,OAAyB,IAAlBuE,KAAKsV,MAAMD,GAQpB,OAhFAR,oBAAU,KACR,GAAI1E,EAEF,OAGFC,GAAiB,GAGjB,IAAIpU,EAAeR,aAAaC,QAAQ,gBACpCF,EAAcC,aAAaC,QAAQ,eACnCoE,EAASrE,aAAaC,QAAQ,UAE9BO,GAAgBT,GAAesE,EACjC4R,EAAiBjT,SACdQ,gBACA5C,KAAM9B,IAWLoX,EAAU0B,KAAKvT,EAVE0V,IACXA,GACFzE,GAAmB,GACnBP,GAAa,KAEbL,EAAS,UAAW,sCACpBY,GAAmB,GACnBP,GAAa,QAKlB/T,MAAOrC,IAAW,IAADqb,EAAAnb,EAEa,OAAb,QAAdmb,EAAArb,EAAMG,gBAAQ,IAAAkb,OAAA,EAAdA,EAAgBjb,UAAqC,QAAvBF,EAAIF,EAAMG,SAASE,YAAI,IAAAH,OAAA,EAAnBA,EAAqBI,cAEvD2V,GAAiB,IAGnBF,EAAS,UAAW/V,EAAMuZ,YAC1BnD,GAAa,MAEduD,QAAQ,QAGXvD,GAAa,IAEd,CACDL,EACAE,EACAD,EACAuB,EACAD,EACAyD,IAGFL,oBAAU,KACRrD,EAAc4D,KAEd,MAAMK,EAAK/b,OAAOgc,WAAW,uBAC7BD,EAAGE,iBAAiB,SAAU,KACxBF,EAAGG,QACLpE,GAAc,GAEdA,EAAc4D,OAIdK,EAAGG,SACLpE,GAAc,IAEf,IAYI,CACLrB,gBACAG,YACA9P,KAAMkR,EACN3S,OAnHF,WACE+R,GAAmB,GACnBtV,aAAaiB,WAAW,eACxBjB,aAAaiB,WAAW,gBACxBjB,aAAaiB,WAAW,UACxBgV,EAAiBjT,SACdO,SACAvC,MAAOrC,IACNwB,QAAQka,KAAK1b,KAEd2Z,QAAQ,KACPqB,EAAQW,KAAK,aAyGjBZ,UACA1E,QACAG,QACAC,WACAV,WACAuE,WAAYD,EACZhW,SAAUiT,EAAiBjT,SAC3BoC,UAAW6Q,EAAiB7Q,UAC5B6L,eAAgBgF,EAAiBhF,eACjCM,oBAAqB0E,EAAiB1E,oBACtCgJ,kBA5KF,SAA2BC,GACzB,OAAO,IAAIna,QAAQ,CAACwC,EAASvC,KAC3B,IAAIvB,EAAS,KACbkX,EAAiBjT,SACdI,MAAMoX,EAAU7V,SAAU6V,EAAUlX,UACpC1C,KAAM9B,IAEL,GADAC,EAASD,EACe,MAApBA,EAASC,OAAgB,CAC3B,IAAIsF,EAASvF,EAASE,KAAKqF,OAC3BrE,aAAaa,QAAQ,cAAe/B,EAASE,KAAKe,YAAYe,OAC9Dd,aAAaa,QAAQ,eAAgB/B,EAASE,KAAKwB,cACnDR,aAAaa,QAAQ,SAAUwD,GAC/BiR,GAAmB,GACnB,MAAMmF,EAAUA,IAAM1F,GAAa,GACnCmB,EAAU0B,KAAKvT,EAAQoW,GACvB5X,GAAQ,MAKX7B,MAAOrC,IAAW,IAADC,EAChBuB,QAAQC,IAAIzB,GACZI,EAAuB,QAAjBH,EAAGD,EAAMG,gBAAQ,IAAAF,OAAA,EAAdA,EAAgBG,OACzBuW,GAAmB,GACnBhV,GAAO,KAERgY,QAAQ,KACQ,OAAXvZ,EACF2V,EACE,QACA,qDAEgB,MAAX3V,EACP2V,EACE,QACA,8DAEgB,MAAX3V,GACP2V,EACE,QACA,+EAqIVO,SAhHF,WACEA,EAASD,IAAUE,EAAQwF,EAAYxF,GACvCR,EAAS,OAAQ,sBA+GjBiG,YA5GF,WACE,IAAIC,EAAM,GAEV,OADI1E,EAAUa,YAAYE,OAAM2D,EAAM1E,EAAUa,YAAYE,MACrD2D,GA0GPvF,gBAAiBA,EACjBwF,UAxGF,SAAmBtF,GACjBuF,SAASvF,MAAK,gBAAArV,OAAmBqV,GACjCC,EAASD,IAuGTA,QACAE,QACAC,WACAG,iBACAC,oBACAC,aACAgF,aA/BF,SAAsBvB,GACpBxD,EAAcwD,GACdxZ,aAAaa,QAAQ,aAAc2D,KAAKC,UAAU+U,M,wCE3K/C,MAAMwB,EAAcC,wBAAc,MAE1B,SAASC,EAAYC,GAAgB,IAAf,SAAEC,GAAUD,EAC/C,MAAME,EAAO5G,EAjBf,WAEE,MAAM,gBAAE6G,EAAe,cAAEC,GAAkBC,wBACrCC,EAAU1S,GACdzH,IAAAoa,cAACC,IAAU,CACTC,QAASA,IAAML,EAAcxS,GAC7B8S,aAAW,QACX/H,MAAM,aACNxS,IAAAoa,cAACI,IAAS,OAGd,MAAO,CAACC,EAASnG,IAAY0F,EAAgB1F,EAAS,CAAE6F,SAAQM,YAMtCC,IAE1B,OAAO1a,IAAAoa,cAACV,EAAYiB,SAAQ,CAACzC,MAAO6B,GAAOD,G,+CCrB7C,MAAMc,EAAYC,YAAW,MAC3BC,KAAM,CACJC,QAAS,OACTC,eAAgB,SAChBC,cAAe,UAEjBC,IAAK,CACHC,IAAK,MACLC,oBAAqB,OACrBC,qBAAsB,WAIX,SAASC,EAAcC,GACpC,MAAMC,EAAUZ,KACV,SAAEd,EAAQ,UAAE2B,EAAS,UAAEjI,GAAc+H,EAE3C,OACEvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,KAAO,IAAMW,GACnCzb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQE,SACrBlI,EAAYxT,IAAAoa,cAACuB,IAAc,CAACF,UAAWD,EAAQN,MAAU,KACzDpB,I,2GCwGM8B,kBApHClI,IAAK,CACnBoH,KAAM,CACJC,QAAS,OACTc,SAAU,QAEZC,OAAQ,CACNA,OAAQpI,EAAMqI,QAAQ,IAExBC,2BAA4B,CAC1BC,QAAS,OACTzJ,MAAO,uBAET0J,OAAQ,CACNC,aAAc,mBAuGHP,EAjEf,SAA4BL,GAC1B,MAAOa,EAAcC,GAAmB9I,oBAAS,IAC3C,SAAEvR,GAAauZ,GACf,MAAEle,GAAUke,GACZ,aACJe,EAAY,UACZ9I,EAAS,QACT+I,EAAO,KACPC,EAAI,GACJpa,EAAE,KACFqa,EAAI,UACJC,EAAS,SACTC,EAAQ,MACRzV,EAAK,MACLgR,EAAK,QACL0E,EAAO,SACPC,EAAQ,QACRrB,EAAO,UACPsB,KACGC,GACDxB,EAOJ,SAASyB,IACPX,GAAiBD,GAWnB,OACEpc,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAC6C,IAASC,OAAAC,OAAA,CACR1V,IAAKrF,EACLA,GAAE,6BAAAxD,OAA+BwD,GACjCqY,QAAQ,WACRgB,UAAW2B,IAAW5B,EAAQM,OAAQN,EAAQ6B,WAC9CC,WAxBctb,IAClBA,EAzDJ,SAAsBoa,EAAc9B,GAClC,MAAO,CACLiD,aACEvd,IAAAoa,cAACoD,IAAc,CAACC,SAAS,OACvBzd,IAAAoa,cAACC,IAAU,CACTE,aAAW,6BACXD,QAASA,IAAMA,IACfoD,UAAM,GACLtB,EAAepc,IAAAoa,cAACuD,IAAa,MAAM3d,IAAAoa,cAACwD,IAAU,SAkDjDC,CAAazB,EAAcY,GA3CnC,SAAqBxJ,EAAWgJ,GAC9B,MAAO,CACLe,aACEvd,IAAAoa,cAACoD,IAAc,CACbC,SAAS,MACThC,UAAU,8BACTjI,EACCxT,IAAAoa,cAAC0D,IAAgB,CACfC,KAAM,GACNC,UAAW,IAGbhe,IAAAoa,cAAApa,IAAAie,SAAA,KAAGzB,KAgCL0B,CAAY1K,EAAWgJ,GAqBX2B,CAAWnc,GACvBmc,WAAY,CAAErB,aACdsB,WAbN,SAAoBxU,QACFtI,IAAZib,GAAmC,UAAV3S,EAAEnC,KAAiB8U,KAa5CE,MAAOza,GAAYoa,EAAgBK,GAAc,OAAU,WAC3D4B,aAAc/B,EAAe,KAAO,MACpCjf,MAAOA,EACPqf,UAAWA,EACXC,SAAUA,EACVzV,MAAOA,EACPgR,MAAOA,EACPoG,SAzBN,SAAsB1U,GACpB2R,EAAM+C,SAAS1U,IAyBXgT,QAASA,EACTC,SAAUA,GACNE,Q,0FC8DGnB,WA3KClI,IAAK,CACnBZ,MAAO,CACLiI,QAAS,OACTE,cAAe,SACfsD,WAAY,SACZtC,QAAQ,GAADrd,OAAK8U,EAAMqI,QAAQ,GAAE,OAAAnd,OAAM8U,EAAMqI,QAAQ,GAAE,OAAAnd,OAAM8U,EAAMqI,QAC5D,GACD,OAEHyC,OAAQ,CACN1C,OAAQpI,EAAMqI,QAAQ,GACtB0C,gBAAiB/K,EAAM9B,QAAQQ,UAAUH,MAE3CyM,KAAM,CACJ7K,MAAO,OACP8K,UAAWjL,EAAMqI,QAAQ,IAE3B6C,OAAQ,CACND,UAAWjL,EAAMqI,QAAQ,IAE3B4C,UAAW,CACTA,UAAW,OACXE,UAAW,oBAEbC,KAAM,CACJjL,MAAO,OACPkL,OAAQ,QACRC,OAAQ,kBACR/C,QAASvI,EAAMqI,QAAQ,IAEzBkD,mBAAoB,CAClB,QAAS,CACPlE,QAAS,gBAEX,UAAa,IAEfmE,SAAU,CACRC,YAAa,GAEf/a,KAAM,CACJgb,eAAgB,YAChB5M,MAAO,UAkIIoJ,EA9Hf,SAAgBL,GACd,MAAM,QAAEC,EAAO,UAAEhI,EAAS,UAAE0F,EAAS,QAAEmG,EAAO,YAAEC,EAAW,OAAEV,GAAWrD,EAYxE,OACEvb,IAAAoa,cAACkB,EAAa,CACZG,UAAWD,EAAQmD,UACnBnL,UAAWA,GACXxT,IAAAoa,cAACmF,IAAK,CAAC9D,UAAWD,EAAQ1I,OACxB9S,IAAAoa,cAAA,OACEoF,IAAI,UACJC,IAAKC,KACLjE,UAAWD,EAAQsD,OAGrB9e,IAAAoa,cAACuF,IAAU,CACTC,UAAU,KACVnF,QAAQ,aAAY,WAKtBza,IAAAoa,cAACyF,EAAkB,CACjBzd,GAAG,6BACHwa,QAAQ,WACR1V,MAAM,oBACNgR,MAAOgB,EAAU7V,SACjBib,SAjCR,SAA8BwB,GAC5BA,EAAIjW,iBACJwV,EAAQS,EAAI9V,OAAOkO,QAgCbqE,QAASqC,EACTpC,KAAMxc,IAAAoa,cAAC2F,IAAa,MACpBpD,UAAQ,EACRD,WAAS,IAGX1c,IAAAoa,cAACyF,EAAkB,CACjBzd,GAAG,6BACHwa,QAAQ,WACR1V,MAAM,WACNgR,MAAOgB,EAAUlX,SACjBsc,SAxCR,SAA8BwB,GAC5BA,EAAIjW,iBACJyV,EAAYQ,EAAI9V,OAAOkO,QAuCjBqE,QAASqC,EACT5c,SAAS,OACT2a,UAAQ,EACRD,WAAS,IAGX1c,IAAAoa,cAAC4F,IAAM,CACLvY,IAAI,cACJgV,KAAK,SACLhC,QAAQ,YACRjI,MAAM,UACNiJ,UAAWD,EAAQoD,OACnBtE,QAASsE,EACTlB,UAAM,EACNhB,WAAS,GAAC,WAIZ1c,IAAAoa,cAAC6F,IAAI,CACH1X,GAAG,QACH2X,MAAO,CAAEvB,UAAW,SAAU,oBAGhC3e,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQyD,oBACtBjf,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAAY,qDAGhCza,IAAAoa,cAAA,WAEApa,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ0D,SACnBzE,QAAQ,aAAY,OAGtBza,IAAAoa,cAAA,KACEqB,UAAWD,EAAQpX,KACnB4F,OAAO,SACP0T,KAAK,+BAA8B,uBAGrC1d,IAAAoa,cAAA,WAEApa,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ0D,SACnBzE,QAAQ,aAAY,OAGtBza,IAAAoa,cAAA,KACEqB,UAAWD,EAAQpX,KACnB4F,OAAO,SACP0T,KAAK,yBAAwB,iBAG/B1d,IAAAoa,cAAA,WAEApa,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ0D,SACnBzE,QAAQ,aAAY,oBAGtBza,IAAAoa,cAAA,KACEqB,UAAWD,EAAQpX,KACnB4F,OAAO,SACP0T,KAAK,kCAAiC,0BAGxC1d,IAAAoa,cAAA,WAEApa,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAAY,qE,UC7KnC,MAAM0F,GAAiBtG,IAAgD,IAA7C+F,UAAWQ,EAAS,OAAEC,KAAWtD,GAAMlD,EACtE,OACE7Z,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GACAJ,EAAI,CACRwD,OAAShF,GACP8E,EAASrgB,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GAAK5B,EAAWwB,IAAW/c,IAAAoa,cAACoG,IAAQ,CAACjY,GAAG,eAMtDkY,GAAiBC,IAAA,IAC5Bd,UAAWQ,EAAS,YACpBO,KACG5D,GACJ2D,EAAA,OACC1gB,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GAAKJ,EAAI,CAAEwD,OAAShF,GAAUvb,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GAAK5B,EAAWwB,Q,yNCbhE,MAOa6D,GAAwBrF,IACnC,MAAM,QAAEd,GAAYc,EACpB,OACEvb,IAAAoa,cAACyG,KAAG,CACFrO,MAAM,UACN+H,aAAYE,EACZgB,UAAU,MACVnB,QAAU1Q,GAAM2R,EAAMjB,QAAQ1Q,GAC9BsW,MAAO,CACLzC,SAAU,QACVqD,MAAO,OACPC,OAAQ,OACRC,OAAQ,SAlBJ,SADEC,EAqBFxG,GApBcza,IAAAoa,cAAC8G,KAAO,MACjB,WAAND,EAAuBjhB,IAAAoa,cAAC+G,KAAS,MAC3B,WAANF,EAAuBjhB,IAAAoa,cAACgH,KAAU,MAC/B,MAJAH,OC2BCrF,WA5BClI,IAAK,CACnB2N,UAAW,CACTpF,QAASvI,EAAMqI,QAAQ,GACvBuF,aAAc5N,EAAMqI,QAAQ,GAC5BI,aAAc,GAEhBoF,SAAU,CACRC,UAAW,OACXvF,QAASvI,EAAMqI,QAAQ,IAEzB0F,UAAW,CACTC,UAAW,uBAiBA9F,EAbf,SAAqBL,GACnB,MAAM,QAAEC,EAAO,SAAE1B,EAAQ,WAAE6H,EAAU,UAAEF,KAAc1E,GAASxB,EAC9D,OACEvb,IAAAoa,cAACmF,IAAKrC,OAAAC,OAAA,CACJ1B,UAAS,GAAA7c,OAAK4c,EAAQ6F,UAAS,KAAAziB,OAAI+iB,EAAanG,EAAQ+F,SAAW,GAAE,KAAA3iB,OACnE6iB,EAAYjG,EAAQiG,UAAY,KAE9B1E,GACHjD,M,wECPP,MAAMc,GAAYC,YAAYnH,IAAK,CACjCkO,IAAK,CACH,MAAS,QACT,WAAclO,EAAM9B,QAAQG,QAAQE,KACpC,WAAc,GACd,UAAa,mBAEb,UAAW,CACTM,WAAYmB,EAAM9B,QAAQG,QAAQG,OAGtC2P,WAAY,CACV,MAAS,QACT,WAAcnO,EAAM9B,QAAQ6G,QAAQxG,KACpC,WAAc,GACd,UAAa,mBAEb,UAAW,CACTM,WAAYmB,EAAM9B,QAAQ6G,QAAQxG,OAGtC6P,MAAO,CACLjO,MAAO,IACPyN,aAAc,IAEhBS,IAAK,CACHjG,OAAQ,aAIG,SAASkG,GAAiBzG,GACvC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,IAClB,KAAEjJ,EAAI,SAAEqJ,EAAQ,UAAEoI,EAAS,QAAEC,EAAO,KAAE1F,GAASlB,GAC9C6G,EAAWC,GAAgB9O,oBAAS,IACpC+O,EAAQC,GAAahP,mBAAS,IAC/B2E,EAAQ6B,EAAKpC,WAAWK,SAASvH,GAEvC,SAAS+R,EAAmB/F,GAC1B1C,EAAKjW,UAAUsD,iBAAiB9H,KAAM9B,IACpC+kB,EAAU/kB,EAASE,MACnB2kB,EAAa5F,KAIjB,SAASgG,IACPJ,GAAa,GACbF,GAAWA,IAGb,SAASO,EAAmBxK,EAAOgK,GACjC,MAAMS,EAAwBT,GAAa,GAC3C,IAAIU,EAAS1K,EACb,KAAO0K,EAAO7lB,MAAM,OAClB6lB,EAASA,EAAOC,QAAQ,KAAMF,EAAsBG,SAEtD,OAAOF,EAGT,OACE5iB,IAAAoa,cAAApa,IAAAie,SAAA,KACGlE,EAAKpC,WAAWE,WACf7X,IAAAoa,cAAApa,IAAAie,SAAA,KACGyE,EAAmBxK,EAAOgK,GAC1BpI,EACD9Z,IAAAoa,cAAC2I,GAAS,CACRV,aAAezY,IACbA,EAAEC,iBACFD,EAAEoZ,kBACFR,EAAmB,UAErBS,KAAoB,UAAdb,EACNc,SAAUzS,EACVsJ,KAAMA,EACNyB,QAASA,EACT2G,QAASM,EACTH,OAAQA,EACR7R,KAAMA,EACN8D,eAAgBwF,EAAKxF,eACrBkI,KAAK,UAEG,SAATA,GACCzc,IAAAoa,cAAC2I,GAAS,CACRV,aAAezY,IACbA,EAAEC,iBACFD,EAAEoZ,kBACFR,EAAmB,SAErBS,KAAoB,SAAdb,EACNc,SAAUzS,EAAO,QACjBsJ,KAAMA,EACNyB,QAASA,EACT2G,QAASM,EACTH,OAAQA,EACR7R,KAAMA,EAAO,QACb8D,eAAgBwF,EAAKxF,eACrBkI,KAAK,UAKXzc,IAAAoa,cAAA,QACE+I,wBAAyB,CACvBC,OAAQC,KAAUC,SAASZ,EAAmBxK,EAAOgK,MAEtDpI,IAOX,SAASiJ,GAAUxH,GACjB,MAAM,SACJ2H,EAAQ,KACRD,EAAI,aACJZ,EAAY,QACZF,EAAO,KACPpI,EAAI,QACJyB,EAAO,OACP8G,EAAM,KACN7R,EAAI,eACJ8D,EAAc,KACdkI,GACElB,GACGgI,EAAcC,GAAmBjQ,mBAAS,KAC1CnR,EAAIqhB,GAASlQ,wBAASjS,IACtBoiB,EAAeC,GAAoBpQ,mBAAS,KAC5CqQ,EAAcC,GAAmBtQ,mBAAS,KAC1CuQ,EAAWC,GAAgBxQ,mBAAS,IAE3C,SAASyQ,IACP7B,IACApI,EAAKpC,WAAWrB,OA4ElB,OAnCAyB,oBAAU,KArCRgC,EAAKjW,UACF0D,cAAc0b,GACd5jB,KAAMkX,IACY,MAAbA,EAAE/Y,SACJgmB,EAAMjN,EAAE9Y,MACJulB,GACFlJ,EAAKjW,UAAUuD,YAAY/H,KAAMqX,IAAS,IAADsN,EAAAC,EACvC,MAAMhd,EAAQyP,EAAIjZ,KAAKymB,KAAMC,GAAOA,EAAGld,MAAM9E,KAAOoU,EAAE9Y,MACtD8lB,EAAgBtc,EAAMqc,cACtBM,EAAqB,OAAL3c,QAAK,IAALA,GAAY,QAAP+c,EAAL/c,EAAOA,aAAK,IAAA+c,OAAP,EAALA,EAAcL,cAC9BD,EAAsB,OAALzc,QAAK,IAALA,GAAY,QAAPgd,EAALhd,EAAOA,aAAK,IAAAgd,OAAP,EAALA,EAAcG,iBAKtC3kB,MAAOkK,OACVmQ,EAAKjW,UACFyK,eACAjP,KAAMqX,IACc,MAAfA,EAAIlZ,QACNsmB,EAAapN,EAAIjZ,QAGpBgC,MAAM,SAiBR,CAACujB,SAgCU3hB,IAAPc,EACLpC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkK,KAAO,CACNrB,KAAM1O,QAAkBjT,EACxB2S,MAAOxD,GACPzQ,IAAAoa,cAACC,IAAU,CACT7H,MAAM,UACNiI,QAAQ,YACRsD,KAAK,QACLxD,aAAW,YACXD,QAAS+H,EACT5G,UAAWD,EAAQoG,KACT,SAATnF,EACCzc,IAAAoa,cAACmK,KAAQ,CAACC,SAAS,UAEnBxkB,IAAAoa,cAAC8G,KAAO,CAACsD,SAAS,YAIxBxkB,IAAAoa,cAACqK,KAAM,CACLxB,KAAMA,EACNd,QAAS6B,EACTU,kBAAgB,0BAChB1kB,IAAAoa,cAACuK,KAAa,KACZ3kB,IAAAoa,cAAA,gCAAAxb,OAA2BskB,EAAQ,MACnCljB,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6C,IAAS,CACRxB,UAAWD,EAAQsG,MACnB1f,GAAG,OACH8E,MAAM,gBACNuT,QAAQ,WACRvC,MAAO0L,EACPtF,SAAW1U,GAAMia,EAAgBja,EAAEI,OAAOkO,UAG9ClY,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQsG,OACnB9hB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,YAAW,SAC1BpC,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,WACR3iB,GAAG,SACH8V,MAAOwL,EACPpF,SAAW1U,IACT+Z,EAAiB/Z,EAAEI,OAAOkO,QAE5BhR,MAAM,SACNlH,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,IACdlY,IAAAoa,cAAA,UAAI,SAELkI,EAAOjhB,OAAS,GACfihB,EAAO2C,IAAKC,GACVllB,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOgN,GAAQA,MAIjCllB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQuG,KACtB/hB,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNqK,SAA4B,KAAlB6G,GAAyC,KAAjBE,EAClCtJ,QA3FZ,WACEP,EAAKjW,UACFmD,YAAY,CACXQ,IAAKyb,EACLmB,WAAYX,EACZE,aAAcA,IAEftkB,KAAM9B,IACLuc,EAAK3G,SAAS,SAAU,qBACxB4Q,MAEDtkB,MAAOkK,IACNmQ,EAAK3G,SAAS,QAAS,6BA+EE,iBAQ7BpT,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkK,KAAO,CACNrB,KAAM1O,QAAkBjT,EACxBgZ,QAAS+H,EACTpO,MAAOiP,GACPljB,IAAAoa,cAACC,IAAU,CACT7H,MAAM,YACNiI,QAAQ,YACRsD,KAAK,QACLxD,aAAW,YACXkB,UAAWD,EAAQqG,YACT,SAATpF,EACCzc,IAAAoa,cAACmK,KAAQ,CAACC,SAAS,UAEnBxkB,IAAAoa,cAAC8G,KAAO,CAACsD,SAAS,YAIxBxkB,IAAAoa,cAACqK,KAAM,CACL1G,KAAM,KACNkF,KAAMA,EACNd,QAAS6B,EACTU,kBAAgB,0BAChB1kB,IAAAoa,cAACuK,KAAa,CAACzE,MAAO,CAAEiF,SAAU,OAAQtR,MAAO,MAC/C7T,IAAAoa,cAAA,oCAAAxb,OAA+BskB,EAAQ,MACvCljB,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6C,IAAS,CACRxB,UAAWD,EAAQsG,MACnB1f,GAAG,OACH8E,MAAM,gBACNuT,QAAQ,WACRvC,MAAO0L,EACPtF,SAAW1U,GAAMia,EAAgBja,EAAEI,OAAOkO,UAG9ClY,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQsG,OACnB9hB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,YAAW,SAC1BpC,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,WACR3iB,GAAG,SACH8V,MAAOwL,EACPpF,SAAW1U,IACT+Z,EAAiB/Z,EAAEI,OAAOkO,QAE5BhR,MAAM,SACNlH,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,IACdlY,IAAAoa,cAAA,UAAI,SAELkI,EAAOjhB,OAAS,GACfihB,EAAO2C,IAAKC,GACVllB,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOgN,GAAQA,MAIhCpB,EAAUziB,QACTyiB,EAAUmB,IAAKG,IAAU,IAADC,EACtB,OACErlB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6C,IAAS,CACR/V,MAAK,GAAAtI,OAAKwmB,EAAKnR,MAAK,gBACpBqK,SAAW1U,GAjLE0b,EAACpN,EAAOpQ,KACrC,MAAMyd,EAAQhC,EAAaiC,UAAWpB,GAAOA,EAAGtc,YAAcA,GACxD2d,EAAkB,IAAIlC,GACxBgC,GAAS,EACXE,EAAgBF,GAAOrN,MAAQA,EAE/BuN,EAAgBzM,KAAK,CAAElR,aAAYoQ,UAErCsL,EAAgBiC,IA0KEH,CAAuB1b,EAAEI,OAAOkO,MAAOkN,EAAKhjB,IAE9C8V,OACc,OAAZqL,QAAY,IAAZA,GAAoD,QAAxC8B,EAAZ9B,EAAcY,KAAMC,GAAOA,EAAGtc,YAAcsd,EAAKhjB,WAAG,IAAAijB,OAAxC,EAAZA,EACInN,QAAS,GAEfuC,QAAQ,WACRiC,WAAS,EACTwD,MAAO,CAAEvB,UAAW,IACpB+G,WAAS,OAKnB1lB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQuG,KACtB/hB,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN8H,QApKZ,WACEP,EAAKjW,UACFqD,YAAY,CACX/E,KACAwhB,eACAnc,IAAKyb,EACLyC,WAAYjC,EACZkC,aAAcrC,IAEfjkB,KAAMqX,IACLqN,QA0J4B,gBAGxBhkB,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAE2F,MAAO,SAChBpL,QAAQ,YACRjI,MAAM,UACN8H,QAAS0J,GAAe,aAU/B,SAAS8B,GAAgBnO,EAAYlH,GAE1C,OADckH,EAAWK,SAASvH,EAAO,S,iCCrX3C,MAAMmK,GAAYC,YAAYnH,OAIxBqS,GAAiB,CACrB,oBACA,qBACA,0BAKI5nB,GAAU,CACd,KACA,YACA,oBACA,yBAdY,OAAQ,OAAQ,OAAQ,OAAQ,WAgBzC4nB,GARiC,0BAUpC,UACA,YACA,cAEIC,GAAW,CACf,CAAE9N,MAAO,SAAUuE,KAAM,UACzB,CAAEvE,MAAO,WAAYuE,KAAM,UAC3B,CAAEvE,MAAO,0BAA2BuE,KAAM,UAC1C,CAAEvE,MAAO,uBAAwBuE,KAAM,aAzBtB,CAAC,EAAG,EAAG,EAAG,EAAG,IA2BhBwI,IAAKb,IAAE,CACnBlM,MAAOkM,EACP3H,KAAM,cACNwJ,UAAU,QAETF,GAAed,IAAKb,IAAE,CACvBlM,MAAOkM,EACP3H,KAAM,WACNwJ,UAAU,QA7BiB,CAAC,2BA+BJhB,IAAKb,IAAE,CAC/BlM,MAAOkM,EACP3H,KAAM,WACNwJ,UAAU,KAEZ,CAAE/N,MAAO,sBAAuBuE,KAAM,WAAYwJ,UAAU,GAC5D,CAAE/N,MAAO,YAAauE,KAAM,WAAYwJ,UAAU,GAClD,CAAE/N,MAAO,aAAcuE,KAAM,WAAYwJ,UAAU,IAGtC,SAASC,GAAY3K,GAClC,MAAO4K,EAASC,GAAc7S,oBAAS,IAChC8S,EAAMC,GAAW/S,mBAAS,IAC3BiI,EAAUZ,MACTrQ,EAAMgc,GAAWhT,mBAAS,IAC1BiT,EAAaC,GAAkBlT,mBAAS,KACxCmT,EAAeC,GAAoBpT,mBAAS,IAC5CqT,EAAUC,GAAetT,mBAAS,IAClCuO,EAAOgF,GAAYvT,mBAAS,KAC5BwT,EAAYC,GAAiBzT,mBAAS,MACtC0T,EAAWC,GAAgB3T,mBAAS,IAMrC4T,EAAiBC,aAAYtF,EAAO,MACnCuF,EAAaC,GAAkB/T,oBAAS,IAEzC,KAAEwG,EAAI,OAAEwN,GAAWhM,EAGnB1e,EAAW2qB,cAsBjBzP,oBAAU,KACRgC,EAAKjW,UAAUkD,eAAe1H,KAAMqX,IAClCuQ,EAAa,CAAC,CAAEriB,WAAY,EAAG4X,KAAM,UAAY9F,EAAIjZ,UAEtD,IAEHqa,oBAAU,KACR,IAAI0P,EAAe,IAAIC,gBAAgB9qB,OAAOC,SAAS8qB,QACnDN,IACFC,GAAe,GACXG,EAAaG,IAAI,UACnBd,EAASW,EAAa5mB,IAAI,UAGxB4mB,EAAaG,IAAI,aACnBf,EAAYgB,SAASJ,EAAa5mB,IAAI,cAGpC4mB,EAAaG,IAAI,kBACnBjB,EAAiBkB,SAASJ,EAAa5mB,IAAI,mBAGzC4mB,EAAaG,IAAI,gBACnBnB,EAAeoB,SAASJ,EAAa5mB,IAAI,iBAGvC4mB,EAAaG,IAAI,eACnBrB,EAAQsB,SAASJ,EAAa5mB,IAAI,eAAiB,IAIvD8mB,GAAO,EAAOF,EAAaG,IAAI,YAAcC,SAASJ,EAAa5mB,IAAI,aAAe,IACrF,CAACsmB,EAAgBP,EAAUF,EAAeF,EAAajc,IAE1D,MAAMud,EAAiBA,CAACpkB,EAAMqkB,KAE5B,GADA3B,GAAW,GACW,iBAAX2B,EAAqB,CAC9B,MAAMC,EAAoB,IAAKtkB,EAAM,CAACqkB,IAAWrkB,EAAKqkB,IACtDhO,EAAKrY,SAASa,WAAWylB,GAAmB1oB,KAAMqX,IAChD2P,EACED,EAAKpB,IAAKb,GACRA,EAAGrhB,SAAWW,EAAKX,OAASilB,EAAoB5D,IAGpDgC,GAAW,SAER,CAGL,MAAM6B,EAAUvkB,EAAKiS,KAAKwO,KAAMC,GAAOA,GAAM2D,GACzCrkB,EAAKiS,KAAKqJ,OAAQoF,GAAOA,GAAM2D,GAC/BrkB,EAAKiS,KAAK/W,OAAOmpB,GACrBhO,EAAKrY,SAASa,WAAW,IAAKmB,EAAMiS,KAAMsS,IAAW3oB,KAAMqX,IACzD2P,EACED,EAAKpB,IAAKb,GACRA,EAAGrhB,SAAWW,EAAKX,OAAS,IAAKW,EAAMiS,KAAMsS,GAAY7D,IAG7DgC,GAAW,OAKXuB,EAAS,WAAsC,IAArCO,EAAS9mB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAAU+mB,EAAQ/mB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAC5CglB,GAAW,GACXrM,EAAKrY,SACFmB,YAAY,CACXulB,KAAMtG,EACN8E,WACAF,gBACA2B,SAAU7B,EACV9gB,WAAYwiB,EAAY,EAAI3d,EAAO,IAEpCjL,KAAMqX,IACL,GAAIA,EAAIjZ,KAAM,CACZ0oB,GAAW,GACXE,EAAQ3P,EAAIjZ,KAAK4qB,OACjBtB,EAAcrQ,EAAIjZ,KAAKqpB,YACvB,IAAIwB,EAAY,IAAIb,gBAEN,KAAV5F,GACFyG,EAAUxe,OAAO,QAAS+X,GAGX,IAAb8E,GACF2B,EAAUxe,OAAO,WAAY6c,GAGT,IAAlBF,GACF6B,EAAUxe,OAAO,gBAAiB2c,GAGhB,KAAhBF,GACF+B,EAAUxe,OAAO,cAAeyc,GAGrB,IAATjc,GACFge,EAAUxe,OAAO,aAAcQ,EAAO,GAGxC,IAAIie,EAAc,IAAMD,EAAU3R,WACd,MAAhB4R,EACFzO,EAAK3B,QAAQyK,QAAQ,CACnB4F,SAAU5rB,EAAS4rB,SACnBd,OAAQa,EACRE,MAAO,CAAEC,UAAU,KAGrB5O,EAAK3B,QAAQyK,QAAQ,CACnB4F,SAAU5rB,EAAS4rB,SACnBd,OAAQ,GACRe,MAAO,CAAEC,UAAU,KAIN,IAAbR,GACFvrB,OAAOurB,SAAS,EAAGA,MAIxBzoB,MAAM,SAYLkpB,EAAU/O,IAAgB,IAAf,KAACnW,EAAI,EAAEmlB,GAAEhP,EACxB,MAAOiP,EAAQC,GAAaxV,oBAAS,GAErC,OACEvT,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4O,KAAS,CACR9I,MAAO,CAAE+I,OAAQ,UAAWzW,MAAOsW,EAAS,OAAS,UACrD9oB,IAAAoa,cAAC8O,KAAQ,CAAC5O,QAASA,IAAMyO,GAAWD,MAErC9C,GAASf,IAAKxd,GACbzH,IAAAoa,cAAApa,IAAAie,SAAA,KACgB,WAAbxW,EAAIgV,MACDzc,IAAAoa,cAAC4O,KAAS,CACR9I,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,IAlKzB,SAAclY,GACZmlB,EAAOnlB,GAEP,IAAImmB,EAAY,IAAIb,gBAAgB7qB,EAAS8qB,QAC7CY,EAAUxe,OAAO,aAAcQ,EAAO,GACtCge,EAAUxe,OAAO,WAAY8d,SAASjrB,OAAOusB,UAE7CpP,EAAK3B,QAAQyK,QAAQ,CACnB4F,SAAU5rB,EAAS4rB,SACnBd,OAAQ,IAAMY,EAAU3R,WACxB8R,MAAO,CAAEC,UAAU,KAGrB5O,EAAK3B,QAAQY,KApBE,yBAyKc3G,CAAK3O,EAAKX,QACzB0E,IAAKA,EAAIyQ,MAAQ2Q,GAChBnlB,EAAK+D,EAAIyQ,QAGF,aAAbzQ,EAAIgV,MACDzc,IAAAoa,cAAC4O,KAAS,CAACvhB,IAAKA,EAAIyQ,MAAQ2Q,GAC1B7oB,IAAAoa,cAACgP,KAAQ,CACPvM,UAAWpV,EAAIwe,WAAa6C,EAC5BtW,MAAM,UACN6W,QAAS3lB,EAAK+D,EAAIyQ,OAClBoC,QAASA,IAAMwN,EAAepkB,EAAM+D,EAAIyQ,UAIlC,gBAAbzQ,EAAIgV,MACDzc,IAAAoa,cAAC4O,KAAS,CAACvhB,IAAKA,EAAIyQ,MAAQ2Q,GAC1B7oB,IAAAoa,cAACgP,KAAQ,CACPvM,UAAWpV,EAAIwe,WAAa6C,EAC5BtW,MAAM,UACN8H,QAASA,IAAMwN,EAAepkB,EAAM+D,EAAIyQ,OACxCmR,UAAW3lB,EAAKiS,KAAKwO,KAAMC,GAAOA,GAAM3c,EAAIyQ,cAU9D,OACElY,IAAAoa,cAACpa,IAAMie,SAAQ,KACbje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAAC6C,IAAS,CACRqB,SAAW1U,IACTkd,EAASld,EAAEI,OAAOkO,QAEpBA,MAAO4J,EACPpF,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAC9BgK,QAAQ,WACR4D,aAAc,MACd6B,MAAO,CAAEpE,OAAQ,uBAEnB9b,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,IAAKsL,YAAa,IAClCpB,KAAK,SACL/d,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,eACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACL1iB,GAAG,cACHyiB,WACE7kB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEzByH,MAAOwO,EACPpI,SAAW1U,GAAM+c,EAAiB/c,EAAEI,OAAOkO,OAC3CuC,QAAQ,YAlPE,CACpB,CAAEvC,MAAO,EAAGhR,MAAO,OACnB,CAAEgR,MAAO,EAAGhR,MAAO,aACnB,CAAEgR,MAAO,EAAGhR,MAAO,aAgPM+d,IAAKsE,GAClBvpB,IAAAoa,cAAC4K,KAAQ,CAACvd,IAAK8hB,EAAMrR,MAAOqR,EAAKrR,OAAQqR,EAAKriB,UAIpDlH,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,IAAKsL,YAAa,IAClCpB,KAAK,SACL/d,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,iBACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAC0K,KAAM,CACL1iB,GAAG,gBACHyiB,WAAY7kB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aACnCyH,MAAO0O,EACPtI,SAAW1U,GAAMid,EAAYjd,EAAEI,OAAOkO,OACtCuC,QAAQ,YACPwM,EAAUhC,IAAKsE,GACdvpB,IAAAoa,cAAC4K,KAAQ,CAACvd,IAAK8hB,EAAMrR,MAAOqR,EAAK1kB,YAAa0kB,EAAK9M,WAO5D0J,EAAUnmB,IAAAoa,cAACuB,IAAc,MAAM3b,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,KAEtD/e,IAAAoa,cAACmF,IAAK,KACJvf,IAAAoa,cAACuP,KAAK,CAAClO,UAAWD,EAAQoO,OACxB5pB,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,MACT7qB,GAAQ8mB,IAAI,CAAC8E,EAAQlB,IACpB7oB,IAAAoa,cAAC4O,KAAS,CAACvhB,IAAKsiB,EAASlB,GACvB7oB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMsZ,QAM9B/pB,IAAAoa,cAAC4P,KAAS,KACP3D,EAAKpB,IAAI,CAACgF,EAAKpB,IAEZ7oB,IAAAoa,cAAC0P,KAAQ,CACPI,OAAK,EACLziB,IAAKohB,GACL7oB,IAAAoa,cAACwO,EAAO,CAACllB,KAAMumB,EAAKpB,EAAGA,QAOnC7oB,IAAAoa,cAAC+P,KAAe,CACdC,mBAAoB,CAAC,GAAI,GAAI,GAAI,KACjCxK,UAAU,MACVyK,MAAOtD,EACPP,YAAaA,EACbjc,KAAMA,EACN+f,aAnJiBC,CAACC,EAAOC,KAC/BlE,EAAQkE,IAmJFC,oBAhJyBF,IAC/B/D,EAAeoB,SAAS2C,EAAMxgB,OAAOkO,MAAO,KAC5CqO,EAAQ,OAiJNvmB,IAAAoa,cAACwG,GAAoB,CACnBtG,QAvSN,WACEP,EAAK3B,QAAQY,KALI,4BA4SbyB,QAAQ,S,mCCpXDkQ,OAjBf,SAAoBpP,GAElB,MAAM,MAAEtH,EAAK,eAAE2W,GAAiB,GAAUrP,EAC1C,OACEvb,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,YACRyF,MAAO0K,EAAiB,CAAEpY,MAAO,OAAU,KAC3CqY,cAAY,GACX5W,EAAM,IAAE2W,EAAiB5qB,IAAAoa,cAAC0Q,KAAW,MAAM,MAG9C9qB,IAAAoa,cAAC2Q,KAAO,CAAC7K,MAAO,CAAEoB,aAAc,Y,mJCoBtC,MAAM0J,WAAoB5K,YAAU6K,cAAA,SAAA7pB,WAAA,KAClC8pB,aAAe,CAACthB,EAAGuhB,KACjBvhB,EAAEC,iBACFuhB,KAAK7P,MAAM8P,SAASF,IAGtB5K,SACE,MAAM,SAAE+K,EAAQ,KAAErI,GAASmI,KAAK7P,MAC1BnZ,EAAK6gB,EAAO,gBAAkB,KAEpC,OACEjjB,IAAAoa,cAACmR,KAAM,CACLnpB,GAAIA,EACJ6gB,KAAMA,EACNqI,SAAUA,EACVE,YAAU,EACV9O,WAAS,EACTwD,MAAO,CAAEc,OAAQ,MAChBnH,IAAA,IAAC,gBAAE4R,GAAiB5R,EAAA,OACnB7Z,IAAAoa,cAACsR,KAAIxO,OAAAC,OAAA,GACCsO,EAAe,CACnBE,QAAS,MACT3rB,IAAAoa,cAACmF,KAAK,KACJvf,IAAAoa,cAACwR,KAAI,CACHhM,UAAU,MACVM,MAAO,CAAErM,MAAOyX,EAASO,cACxBT,KAAK7P,MAAMuQ,MAAM7G,IAAKkG,GACrBnrB,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACNsZ,SAAS,EACT1R,QAAU1Q,GAAMwhB,KAAKF,aAAathB,EAAGuhB,GACrC1jB,IAAK0jB,EAAE/oB,IACPpC,IAAAoa,cAAC6R,KAAY,CAACla,QAASqZ,KAAK7P,MAAMxJ,QAAQoZ,aAY/CvP,mBAxEClI,IAAK,CACnBoH,KAAM,CACJiE,OAAQ,IACRmN,SAAU,GAEZC,UAAW,CACT1O,SAAU,YAEZ2O,yBAA0B,CACxB3O,SAAU,WACVuD,OAAQ,EACRrC,UAAWjL,EAAMqI,QAAQ,GACzBsQ,KAAM,EACNvL,MAAO,GAETwL,WAAY,CACVvR,QAAS,SAEXwR,gBAAiB,CACfzQ,OAAQ,EACRG,QAAS,EACTuQ,cAAe,QAEjBR,QAAS,CACPjN,OAAQrL,EAAMqI,QAAQ,MAgDXH,CAAmBoP,ICrElC,IAAIyB,GAEJ,MAAMC,WAAmBtM,YACvB6K,YAAY1P,GACVoR,MAAMpR,GAAM,KAcdqR,aAAe,CAACnW,EAAIoW,KAClB,MAAM,aAAED,EAAY,eAAEE,GAAmB1B,KAAK7P,MACzCuR,GAAgBF,EAAanW,EAAIoW,GACtCzB,KAAK2B,SAAS,CACZvZ,WAAW,EACXsZ,eAAgBA,GAAkBrW,EAAGpV,OAAS,EAC9C2rB,QAASvW,KAEZ,KAEDwW,OAAUrjB,IACRhN,OAAOswB,aAAaT,IACpB,MAAM,cAAEU,GAAkBvjB,GACpB,YAAEwjB,EAAW,MAAEtB,EAAK,SAAEuB,EAAQ,MAAEnsB,GAAUkqB,KAAK7P,MAC/CsR,EAAMjjB,EAAEI,OAAOkO,MACfoV,EAAgB7W,GAAO2U,KAAKwB,aAAanW,EAAIoW,GAEnDzB,KAAK2B,SACH,CACEvZ,UAAWqZ,EAAIxrB,OAAS,GAAoB,IAAfwrB,EAAIxrB,OACjCksB,YAAaV,EACbC,gBAAgB,EAChBU,OAAO,EACPlC,SAAU6B,GAEZ,KACMrB,EACEe,EAAIxrB,OAAS,EACforB,GAAU7vB,OAAO4E,WAAW,KAC1B6rB,EAASR,GAAKvtB,KAAMmX,GAAO6W,EAAa7W,EAAG/Y,QAC1C,KACqB,IAAfmvB,EAAIxrB,SACT+rB,EACFX,GAAU7vB,OAAO4E,WAAW,KAC1B4rB,IAAc9tB,KAAMmX,GAAO6W,EAAa7W,EAAG/Y,QAC1C,KACE4vB,EAAa,KAGlBT,EAAIxrB,OAAS,EACforB,GAAU7vB,OAAO4E,WAAW,KACtBN,EACFmsB,EAASR,GAAKvtB,KAAMmX,GAAO6W,EAAa7W,EAAG/Y,OAE3C4vB,EAAaD,EAASR,IAExBzB,KAAK2B,SAAS,CACZvZ,WAAW,KAEZ,KACE8Z,EAAa,OAI3B,KAEDpC,aAAgB5qB,IACd8qB,KAAK7P,MAAM8P,SAAS/qB,GACpB8qB,KAAK2B,SAAS,CACZD,gBAAgB,EAChBS,YAAanC,KAAK7P,MAAMxJ,QAAQzR,MAEnC,KACDmtB,YAAc,KACZrC,KAAK7P,MAAM8P,SAAS,IACpBD,KAAK2B,SAAS,CAAED,gBAAgB,EAAOS,YAAa,MA9EpDnC,KAAK1C,MAAQ,CACX6E,YAAahS,EAAMmS,cAAgB,GACnCV,QAAS,GACTW,eAAgB,EAChBb,gBAAgB,EAChBc,eAAgB,KAChBtC,SAAU,KACVrI,MAAM,EACNzP,WAAW,EACXga,OAAO,GAwEXjN,SACE,MAAM,eAAEuM,GAAmB1B,KAAK7P,OAC1B,UAAE/H,GAAc4X,KAAK1C,MAE3B,OACE1oB,IAAAoa,cAAA,WACEpa,IAAAoa,cAACyF,EAAkB,CACjB3H,MAAOkT,KAAK1C,MAAM6E,YAClBjP,SAAU8M,KAAK6B,OACfzQ,KACExc,IAAAoa,cAACyT,KAAK,CACJ3N,MAAO,CAAE+I,OAAQ,WACjB3O,QAAS8Q,KAAKqC,cAGlBja,UAAWA,EACXoJ,QAASwO,KAAK7P,MAAMqB,QACpB1V,MAAOkkB,KAAK7P,MAAMrU,MAClBwV,UAAW0O,KAAK7P,MAAMmB,UACtBC,SAAUyO,KAAK7P,MAAMoB,SACrBtf,MAAO+tB,KAAK7P,MAAMle,QAGnByvB,EACC9sB,IAAAoa,cAAC4Q,GAAW,CACV/H,KAAMmI,KAAK1C,MAAMoE,eACjBxB,SAAUF,KAAK1C,MAAM4C,SACrBQ,MAAOV,KAAK1C,MAAMsE,QAClBjb,QAASqZ,KAAK7P,MAAMxJ,QACpBsZ,SAAUD,KAAKF,eAEf,OAMGtP,mBAjIAkS,KAAA,CACb5R,OAAQ,CACNC,aAAc,mBA+HHP,CAAmB8Q,I,uGCtInB,cACb,OAAO1sB,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,W,oBCGnB,SAASoP,GAAcxS,GACpC,MAAM,WAAE1D,EAAU,YAAEmW,EAAW,KAAEjU,EAAI,SAAEkU,EAAQ,WAAE1rB,GAAegZ,GACzD2S,EAAQC,GAAa5a,mBAAS,IAErCwE,oBAAU,KACRgC,EAAKjW,UAAUmL,sBAAsB3P,KAAMqX,IACzCwX,EAAUxX,EAAIjZ,SAEf,IAiFH,OACEsC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAC1CzQ,IAAAoa,cAAC4F,IAAM,CAAC1F,QAzCU8T,KACtB,GAAIvW,EAAY,CAESqW,EACpBjJ,IAAKb,GAAOA,EAAGhiB,IACf4c,OAAQoF,IAAQ6J,EAASI,iBAAiBC,SAASlK,IACvCmK,QAASnK,IACtBrK,EAAKjW,UAAUoL,eAAe+e,EAASlrB,OAAQqhB,GAAI1kB,MAAM,KACvDqa,EAAK3F,SAAS,CACZC,SAAU,uBACVC,QAAQ,8BAAD1V,OAAgCwlB,SAK/C4J,EAAY,IAAKC,EAAUI,iBAAkBH,EAAOjJ,IAAKb,GAAOA,EAAGhiB,QA2B7DpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAEzBzQ,IAAAoa,cAAC4F,IAAM,CAAC1F,QA1BYkU,KACxB,GAAI3W,EAAY,CAEQoW,EAASI,iBACjBE,QAASnK,IACrBrK,EAAKjW,UAAUsL,oBAAoB6e,EAASlrB,OAAQqhB,GAAI1kB,MAAM,KAC5Dqa,EAAK3F,SAAS,CACZC,SAAU,uBACVC,QAAQ,iCAAD1V,OAAmCwlB,SAKlD4J,EAAY,IAAKC,EAAUI,iBAAkB,OAcvCruB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAEzBzQ,IAAAoa,cAAA,WACC8T,EAAOjJ,IAAKwJ,GACXzuB,IAAAoa,cAACsU,KAAgB,CACfjnB,IAAKgnB,EAAMrsB,GACXusB,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASI,iBAAiBC,SAASG,EAAMrsB,IAClDkc,SAAUA,KAAMuQ,OApGH1f,EAoGqBsf,EAAMrsB,QAnGhDyV,EACEoW,EAASI,iBAAiBC,SAASnf,GACrC4K,EAAKjW,UACFsL,oBAAoB6e,EAASlrB,OAAQoM,GACrC7P,KAAMqX,IACLqX,EAAY,IACPC,EACHI,iBAAkBJ,EAASI,iBAAiBrP,OACzCoF,GAAOA,IAAOjV,OAKvB4K,EAAKjW,UAAUoL,eAAe+e,EAASlrB,OAAQoM,GAAS7P,KAAMqX,IAC5DqX,EAAY,IACPC,EACHI,iBAAkB,IAAIJ,EAASI,iBAAkBlf,OAKnD8e,EAASI,iBAAiBC,SAASnf,GACrC6e,EAAY,IACPC,EACHI,iBAAkBJ,EAASI,iBAAiBrP,OACzCoF,GAAOA,IAAOjV,KAInB6e,EAAY,IACPC,EACHI,iBAAkB,IAAIJ,EAASI,iBAAkBlf,MAhC9BA,OAqGbgP,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMge,EAAMnf,gBAI3CtP,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BAEhCzQ,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASa,mBAClBxQ,SAjF2ByQ,KACrCxsB,EAAW,IACN0rB,EACHa,oBAAqBb,EAASa,sBA+EtB3Q,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qC,yBC7IzB,SAASue,GAAcvjB,GACpC,MAAMwjB,EAAMzV,SAASY,cAAc,SAKnC,OAJA6U,EAAI/W,MAAQzM,EACZwjB,EAAItS,UAAW,EACfsS,EAAIxS,KAAO,QAEJwS,EAAIC,gB,wBCNb,MAAMC,GAAQ,CACZhZ,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,EAAG,IACnBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBC,sBAAsB,EACtBtB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAC5DS,oBAAoB,EACpBc,iBAAiB,GAGbC,GAAW,CACf1Z,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,IAChBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBC,sBAAsB,EACtBtB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAC5DS,oBAAoB,EACpBc,iBAAiB,GAGbtlB,GAAW,CACf6L,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,IAChBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBrB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IACnDS,oBAAoB,EACpBc,iBAAiB,GAGbE,GAAa,CACjB3Z,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,IAChBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBrB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IACnDS,oBAAoB,EACpBc,iBAAiB,GAGbG,GAAc,CAClB5Z,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,EAAG,IACnBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBrB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAC5DS,oBAAoB,EACpBc,iBAAiB,GAGbI,GAAc,CAClB7Z,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,IAChBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBrB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IACnDS,oBAAoB,EACpBc,iBAAiB,GAGbK,GAAe,CACnB9Z,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,EAAG,EAAG,EAAG,IACnBC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBrB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAC5DS,oBAAoB,EACpBc,iBAAiB,GAGbM,GAAY,CAChB/Z,mBAAmB,EACnBH,oBAAoB,EACpBoZ,oBAAoB,EACpBC,wBAAwB,EACxBC,yBAAyB,EACzBC,yBAAyB,EACzB5Z,KAAM,CAAC,EAAG,IACVC,aAAc,EACd4Z,WAAW,EACX5rB,YAAY,EACZ6rB,eAAe,EACfC,qBAAqB,EACrBrB,iBAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IACnDS,oBAAoB,EACpBc,iBAAiB,GAIJ,SAASO,KACtB,MAAO,CACLhB,GACAU,GACAvlB,GACAwlB,GACAC,GACAC,GACAC,GACAC,ICi8BWtU,mBAxjCClI,IAAK,CACnBoH,KAAM,CACJ2D,gBAAiB,OAEnB4C,UAAW,CACTpF,QAASvI,EAAMqI,QAAQ,GACvB4C,UAAWjL,EAAMqI,QAAQ,GACzBI,aAAc,GAEhBiU,QAAS,CACPzR,UAAWjL,EAAMqI,QAAQ,IAE3BsU,YAAa,CACX7d,MAAO,QAET8d,eAAgB,CACd3R,UAAW,MAwiCA/C,EApiCf,SAAsBL,GACpB,MAAM,KAAExB,EAAI,KAAEwW,EAAI,SAAErN,GAAa3H,GAC1B0S,EAAUD,GAAeza,mBAAS,CACvClQ,SAAU,GACV0R,YAAa,GACbjN,WAAY,EACZ6N,KAAM,CAAC,EAAG,EAAG,EAAG,IAChB0Y,iBAAkB,GAClB5iB,MAAO,GACP+jB,WAAW,EACX5Z,aAAc,EACdC,wBAAyB,GACzBC,yBAA0B,GAC1BC,wBAAyB,GACzBtQ,uBAAwB,GACxBuQ,oBAAoB,EACpBoZ,oBAAoB,EACpBlZ,wBAAwB,EACxBmZ,wBAAwB,EACxBI,eAAe,EACfC,qBAAqB,EACrBvZ,mBAAmB,EACnBtR,WAAY,EACZ0qB,yBAAyB,EACzBD,yBAAyB,EACzB1rB,YAAY,EACZgsB,iBAAiB,KAGZvyB,EAAOmzB,GAAYjd,sBACnBzH,EAAkBmJ,GAAuB1B,wBAASjS,IAClDmvB,EAAiBC,GAAsBnd,wBAASjS,IAChDqvB,EAAkBC,GAAuBrd,wBAASjS,IAClDuvB,EAAeC,GAAoBvd,wBAASjS,IAC5CyvB,EAASC,GAAczd,mBAAS,KAChC8c,EAAaY,GAAkB1d,mBAAS,IACxC4S,EAASC,GAAc7S,oBAAS,IAChC2d,EAAYC,GAAiB5d,oBAAS,IACtC0T,EAAWC,GAAgB3T,mBAAS,KACpC6d,EAA6BC,GAAkC9d,oBAAS,IACxE+d,EAA8BC,GAAmChe,oBAAS,IAC1Eie,EAA4BC,GAAiCle,oBAAS,GACvEsE,EAAsB,SAAT0Y,EACbmB,EAAwB,WAATnB,GAQf,QAAEoB,EAAO,MAAEC,EAAK,MAAEC,EAAK,WAAEC,GAPd,CACfH,QAAS,EACTC,MAAO,EACPE,WAAY,EACZC,UAAW,EACXF,MAAO,GAuCT,SAASG,EAAiB7rB,EAAW8rB,GACnC,IAAK9rB,EACH,OAAO8rB,EAAiB,IAG1BlY,EAAKjW,UACFgF,uBAAuB3C,GACvB7G,KAAMqX,IACLsb,EAAiB,GAADrzB,OAAI+X,EAAIjZ,KAAKyI,UAAS,OAAAvH,OAAM+X,EAAIjZ,KAAKmS,gBAEtDnQ,MAAM,KACLuyB,EAAiB,MAgDvB,SAASC,EAAYjE,GAEdpW,IAGLuO,GAAW,GAEP+L,EAASlE,GACXlU,EAAKrY,SACFa,WAAW,IACP0rB,EACHpY,wBAAyBoY,EAASpY,yBAA2B,KAC7DC,yBAA0BmY,EAASnY,0BAA4B,KAC/DC,wBAAyBkY,EAASlY,yBAA2B,KAC7DtQ,uBAAwBwoB,EAASxoB,wBAA0B,OAE5D/F,MAAM,IAAMqa,EAAK3G,SAAS,UAAW,gFACrC4D,QAAQ,IAAMoP,GAAW,IAE5BA,GAAW,IAjHfrO,oBAAU,KAQR,GAPKF,GACHmW,EAAY,IACPC,KACAkC,KAAyBlC,EAASppB,WAAa,KAIlDoiB,EAAW,CACb,MAAMmL,EAAmBnL,EAAU9C,KAAMC,GAAOA,EAAGvf,aAAeopB,EAASppB,YAEvEutB,IACFf,QACwB/vB,IAArBqvB,IAAmC9Y,IAClCua,EAAiBhB,6BAErBG,QACqBjwB,IAAlBuvB,IAAgChZ,IAC/Bua,EAAiBd,8BAErBG,QACuBnwB,IAApBmvB,IAAkC5Y,IACjCua,EAAiBZ,+BAIxB,CACDvK,EACAgH,EAASppB,WACTgsB,EACAJ,EACAE,EACA9Y,IAkBFE,oBAAU,KACHkW,EAAS5qB,WAId2uB,EAAiB/D,EAASpY,wBAAyBZ,GACnD+c,EAAiB/D,EAASxoB,uBAAwBirB,GAClDsB,EAAiB/D,EAASlY,wBAAyB6a,GACnDE,EAAiB7C,EAASnY,4BACzB,CAACmY,IAEJlW,oBAAU,KACRgC,EAAKjW,UACF8C,UACAtH,KAAMmX,GAAOua,EAAWva,EAAG/Y,OAC3BgC,MAAMb,QAAQC,MAChB,CAACkyB,IAEJjZ,oBAAU,KACRgC,EAAKjW,UACFkD,eACA1H,KAAMqX,GAAQuQ,EAAavQ,EAAIjZ,OAC/BgC,MAAMb,QAAQC,MAChB,CAACooB,IAEJnP,oBAAU,KAGJF,GAAcqL,IAA0B,IAAdA,EAC5BnJ,EAAKrY,SACFkB,QAAQsgB,GACR5jB,KAAMkX,IACL,GAAiB,MAAbA,EAAE/Y,OAAgB,CACpB,IAAIgZ,EAAKD,EAAE9Y,KACP+Y,IACFuX,EAAYvX,GACZ0a,GAAc,SAEXkB,MAAM7b,EAAE8b,iBAEhB5yB,MAAMb,QAAQC,MACM,IAAdokB,GAAiBnJ,EAAK3B,QAAQY,KAAK,qBAhBxB,CAACe,EAAKjW,YAkE9B,IAAIyuB,EAAmBb,GAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGpD,SAASL,EAASppB,YAC9E2tB,EAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,GAAGlE,SAASL,EAASppB,YAChE,SAASstB,EAASlE,GAEhB,GAAKA,EAAS5qB,SAGP,GAAK4qB,EAASlZ,YAGd,GAAKia,GAAcf,EAASxiB,OAG5B,GAAI8mB,IAAqBtE,EAASpY,wBACvC2a,EAAS,2BACTzW,EAAK3G,SAAS,UAAW,6CACpB,KAAIof,GAA4BvE,EAASlY,wBAI9C,OAAO,EAHPya,EAAS,2BACTzW,EAAK3G,SAAS,UAAW,+CAPzBod,EAAS,SACTzW,EAAK3G,SAAS,UAAW,yCAJzBod,EAAS,eACTzW,EAAK3G,SAAS,UAAW,mCAJzBod,EAAS,YACTzW,EAAK3G,SAAS,UAAW,0BAkB7B,SAAS7Q,EAAW0rB,GAClBD,EAAYC,GACZiE,EAAYjE,GAmFd,SAASwE,EAAoC7oB,GAC3CrH,EAAW,IAAK0rB,EAAUsB,wBAAyB3lB,EAAEI,OAAOqf,UAmB9D,SAASqJ,EAA8Btb,GACvB,4BAAV/Z,GACFmzB,OAASlvB,GAEXiB,EAAW,IACN0rB,EACHpY,wBAAyBuB,EAAEjR,UAC3BwsB,qBAAsBvb,EAAEvH,cAY5B,SAAS+iB,EAAexb,GACR,4BAAV/Z,GACFmzB,OAASlvB,GAEXiB,EAAW,IACN0rB,EACHlY,wBAAyBqB,EAAEjR,YA2B/B,OACEnG,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACyY,KAAI,CACHC,eAAe,UACf5a,MAAOmY,GACNpC,EAAStY,KAAKsP,IAAK8N,GAClB/yB,IAAAoa,cAAC4Y,KAAG,CACF9a,MAAO6a,EACPtX,UAAW4U,IAAgB0C,EAAM1C,EAAc,GAC/C/V,QAASA,IAAM2W,EAAe8B,GAC9B7rB,MACU,IAAR6rB,EACE/yB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,MAAQsiB,QAO1C/yB,IAAAoa,cAAC2Q,KAAO,CAAC7K,MAAO,CAAEoB,aAAc,UAE/B6E,EACCnmB,IAAAoa,cAACuB,IAAc,MAEf3b,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACV1U,WAAW,UACXxC,QAAS,GACRsU,IAAgBsB,IAAYT,IAAerZ,IAC1C7X,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAE1CzQ,IAAAoa,cAACyF,EAAkB,CACjBjD,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAChCvJ,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9BgM,KAAK,OACLvE,MAAO+V,EAAS5qB,SAChBib,SArMlB,SAA8B1U,GAC5BA,EAAEC,iBACY,aAAVxM,GACFmzB,OAASlvB,GAEXiB,EAAW,IAAK0rB,EAAU5qB,SAAUuG,EAAEI,OAAOkO,SAiM7B7a,MAAiB,aAAVA,EACPwf,SAAUhF,EACV6E,WAAS,EACTC,UAAQ,EACR0B,aAAa,UAEfre,IAAAoa,cAAC8Y,GAAW,MAEZlzB,IAAAoa,cAACyF,EAAkB,CACjBjD,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAChCvJ,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAC9BgM,KAAK,OACLvE,MAAO+V,EAASxiB,MAChB6S,SA3MlB,SAA2B1U,GACzBA,EAAEC,iBACY,UAAVxM,GACFmzB,OAASlvB,GAEXiB,EAAW,IAAK0rB,EAAUxiB,MAAO7B,EAAEI,OAAOkO,SAuM1B7a,MAAiB,UAAVA,EACPqf,WAAS,EACT2B,aAAa,QACb1B,UAAQ,IAEV3c,IAAAoa,cAAC8Y,GAAW,MAEZlzB,IAAAoa,cAACyF,EAAkB,CACjBjD,QAAQ,eACR1V,MAAM,eACNuV,KAAK,OACLvE,MAAO+V,EAASlZ,YAChBuJ,SAzLlB,SAAiC1U,GAC/BA,EAAEC,iBACY,gBAAVxM,GACFmzB,OAASlvB,GAEXiB,EAAW,IAAK0rB,EAAUlZ,YAAanL,EAAEI,OAAOkO,SAqLhC7a,MAAiB,gBAAVA,EACPqf,WAAS,EACTC,UAAQ,EACR0B,aAAa,UAGfre,IAAAoa,cAAC8Y,GAAW,OAEdlzB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,UAChB7T,IAAAoa,cAACyK,KAAU,KACT7kB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLrK,QAAQ,WACR6D,SAlOpB,SAA8B1U,GAC5B,MAAM/E,EAAa+E,EAAEI,OAAOkO,MAEtBib,EAAe,IAChBlF,KACAkC,KAAyBtrB,EAAY,GACxCA,cAGF0tB,EAAmBb,GAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGpD,SAAS6E,EAAatuB,YAClF2tB,EAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,GAAGlE,SAAS6E,EAAatuB,YAEhEmpB,EAAYmF,GACRhB,EAASgB,IAEXjB,EAAY,IACPjE,KACAkC,KAAyBtrB,EAAa,GACzCA,gBAiNcqT,MAAO+V,EAASppB,YACfoiB,GACCA,EAAUhC,IAAKxI,GACbzc,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOuE,EAAK5X,YACnB4X,EAAKA,SAMhBzc,IAAAoa,cAAC8Y,GAAW,QAGZxB,GAA0B,4BAAVr0B,GAAiD,4BAAVA,IACvD2C,IAAAoa,cAAApa,IAAAie,SAAA,KACGsU,GACCvyB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MACEjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAG3BzQ,IAAAoa,cAAA,OACE8F,MAAO,CACLrM,MAAO,qBACPkH,QAAS,iBAEX/a,IAAAoa,cAACsS,GAAU,CACTxlB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAC9BmM,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAChCkM,UAAU,EACVmQ,gBAAgB,EAChBzB,SAAUqH,EACVrF,SAAUtT,EAAKjW,UAAUiF,qBACzBgJ,QAAUyE,GAAMA,EAAErQ,UAAY,MAAQqQ,EAAE3G,YACxC6M,WAAS,EACTgR,aACEO,EAASpY,yBACToY,EAASpY,wBACP,MACAoY,EAAS0E,qBAEbt1B,MAAiB,4BAAVA,EACP6D,OAAK,KAGTlB,IAAAoa,cAAA,OACE8F,MAAO,CAAEnF,QAAS,eAAgBqY,WAAY,KAC9CpzB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASsB,wBAClBjR,SAAUmU,EACVtU,WAAY,CACV,aAAc,wBAIpBjX,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gCAMhC+hB,GACCxyB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAEhCzQ,IAAAoa,cAACsS,GAAU,CACTxlB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAC9BmM,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAChCkM,UAAU,EACVmQ,gBAAgB,EAChBzB,SAAUuH,EACVvF,SAAUtT,EAAKjW,UAAUqF,qBACzB4I,QAAUyE,GAAMA,EAAErQ,UAAY,MAAQqQ,EAAE3G,YACxC6M,WAAS,EACTxb,OAAK,EACL7D,MAAiB,4BAAVA,EACPqwB,aAAciD,MAMvB9Y,EACC7X,IAAAoa,cAACiZ,GAAsB,CACrB5nB,MAAOwiB,EAASxiB,MAChBpI,SAAU4qB,EAAS5qB,WAEnB,KACJrD,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEhCzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,OACVjzB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAAS9X,kBAClBmI,SAjT5B,SAAuC1U,GACrCrH,EAAW,IAAK0rB,EAAU9X,kBAAmBvM,EAAEI,OAAOqf,WAiT5BlL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAGlCzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASjY,mBAClBsI,SA/T5B,SAAwC1U,GACtCrH,EAAW,IAAK0rB,EAAUjY,mBAAoBpM,EAAEI,OAAOqf,WA+T7BlL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAGlCzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASoB,uBAClB/Q,SA7T5B,SAA4C1U,GAC1CrH,EAAW,IAAK0rB,EAAUoB,uBAAwBzlB,EAAEI,OAAOqf,WA6TjClL,WAAY,CACV,aAAc,wBAIpBjX,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAI7BzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASqB,wBAClBhR,SAjU5B,SAA8C1U,GAC5CrH,EAAW,IAAK0rB,EAAUqB,wBAAyB1lB,EAAEI,OAAOqf,WAiUlClL,WAAY,CACV,aAAc,wBAIpBjX,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gCAI7BzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASqF,mBAClBhV,SAzV5B,SAAwC1U,GACtCrH,EAAW,IAAK0rB,EAAUqF,mBAAoB1pB,EAAEI,OAAOqf,WAyV7BlL,WAAY,CACV,aAAc,wBAIpBjX,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAILzQ,IAAAoa,cAACkP,KAAI,CACDC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACbC,QACI3uB,IAAAoa,cAACwU,KAAM,CACHpc,MAAM,UACN6W,QAAS4E,EAASmB,mBAClB9Q,SAzY5D,SAAwC1U,GACtCrH,EAAW,IAAK0rB,EAAUmB,mBAAoBxlB,EAAEI,OAAOqf,WAyYGlL,WAAY,CACR,aAAc,wBAI1BjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BAOpEzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAK,SACjBjU,IAAAoa,cAACwK,KAAW,CACVhF,UAAU,WACVviB,MAAOA,GACP2C,IAAAoa,cAACmZ,KAAS,KACPxC,EACE/R,OAAQoF,GAAiB,IAAVA,EAAGhiB,IAClB6iB,IAAI,CAACkG,EAAGqI,IACPxzB,IAAAoa,cAACsU,KAAgB,CACfjnB,IAAK+rB,EACLtT,MAAO,CAAEuT,cAAe,QACxB9E,QACE3uB,IAAAoa,cAACgP,KAAQ,CACPlJ,MAAO,CAAEuT,cAAe,QACxBjhB,MAAM,UACN6W,QAAS4E,EAAStY,KAAK2Y,SAASnD,EAAE/oB,IAClCkc,SAAUA,IA/V1C,SAA4B6M,GAC1B,IAAIuI,EAAczF,EAAStY,KAAK2Y,SAASnD,GACrC8C,EAAStY,KAAKqJ,OAAQ2U,GAAMA,IAAMxI,GAClC,IAAI8C,EAAStY,KAAMwV,GAEvB5oB,EAAW,IAAK0rB,EAAUtY,KAAM+d,IA0VcE,CAAmBzI,EAAE/oB,IACrC8V,MAAOiT,EAAE/oB,KAGb8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,MAAQ0a,EAAE/oB,YAQvDpC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,IACJxpB,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACV1U,WAAW,UACXxC,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAybxD,SAA6ByS,EAAU2Q,EAAcle,GACnD,OACE3V,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,SAChB7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAOgL,GAAsB,EAC7BpB,MACE9hB,IAAAoa,cAAC0Z,KAAa,CACZrjB,KAAK,aACLrO,GAAG,wBAGPkc,SAAUuV,EACVE,cAAY,GACZ/zB,IAAAoa,cAAC4K,KAAQ,CACP9M,MAAM,GACN2E,UAAQ,GACR7c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAExBkF,EAAKsP,IAAKhE,GACTjhB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKwZ,EACL/I,MAAO+I,GACPjhB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,MAAQwQ,QA9cnB+S,CACC/F,EAASrY,cArXjC,SAAgChM,GAC9BrH,EAAW,IAAK0rB,EAAUrY,aAAchM,EAAEI,OAAOkO,UAsX3B+V,EAAStY,QAIf3V,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsP,GAAW,CAACxJ,MAAO,CAAEnB,OAAQ,UAC5B/e,IAAAoa,cAACuQ,GAAU,CACT1W,MACEjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAI3BzQ,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASuB,UAClBlR,SA1exB,SAA+B1U,GAC7BA,EAAEC,iBACFtH,EAAW,IAAK0rB,EAAUuB,UAAW5lB,EAAEI,OAAOqf,WAyexBlL,WAAY,CAAE,aAAc,0BAIlCne,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsP,GAAW,CAACxJ,MAAO,CAAEnB,OAAQ,UAC5B/e,IAAAoa,cAACuQ,GAAU,CACT1W,MACEjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAG3BzQ,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASrqB,WAClB0a,SA3cxB,SAAgC1U,GAC9BrH,EAAW,IAAK0rB,EAAUrqB,WAAYgG,EAAEI,OAAOqf,WA2czBlL,WAAY,CAAE,aAAc,0BAIlCne,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MACEjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAIzBzQ,IAAAoa,cAAC6Z,GAAiB,CAChB/Q,SAAU+K,EAASnmB,WACnB+rB,aAza1B,SAA8BjqB,GAC5BrH,EAAW,IAAK0rB,EAAUnmB,WAAY8B,EAAEI,OAAOkO,iBAkbxCmY,IAAgBuB,GACf5xB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAEhCzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,OACVjzB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASsB,wBAClBjR,SAAUmU,EACVtU,WAAY,CACV,aAAc,wBAIpBjX,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,+BAI7BzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASwB,cAClBnR,SAjjB1B,SAAmC1U,GACjCrH,EAAW,IAAK0rB,EAAUwB,cAAe7lB,EAAEI,OAAOqf,WAijB1BlL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAGlCzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAASyB,oBAClBpR,SA/jB1B,SAAyC1U,GACvCrH,EAAW,IAAK0rB,EAAUyB,oBAAqB9lB,EAAEI,OAAOqf,WA+jBhClL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAGlCzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAAS0B,qBAClBrR,SA7kB1B,SAA0C1U,GACxCrH,EAAW,IAAK0rB,EAAU0B,qBAAsB/lB,EAAEI,OAAOqf,WA6kBjClL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAKtCzQ,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCAETnP,IAArBwK,IAAmC+L,IACnC7X,IAAAoa,cAACsS,GAAU,CACTxlB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAC9BmM,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAChCkM,UAAU,EACVmQ,gBAAgB,EAChBzB,SAAUqH,EACVrF,SAAUtT,EAAKjW,UAAUiF,qBACzBgJ,QAAUyE,GAAMA,EAAErQ,UAAY,MAAQqQ,EAAE3G,YACxC6M,WAAS,EACTrf,MAAiB,4BAAVA,EACPqwB,aACEO,EAASpY,yBACToY,EAASpY,wBACP,MACAoY,EAAS0E,qBAEbzxB,OAAK,MAMZowB,GACCtxB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MACEjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,+BAG5BzQ,IAAAoa,cAACsS,GAAU,CACTxlB,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,6BAE1BmM,QACE5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,6BAE1BkM,UAAU,EACVmQ,gBAAgB,EAChBO,SAAUtT,EAAKjW,UAAUoF,mBACzBmiB,SAjmBpB,SAAkC6I,GAE5BhxB,KAAKC,UAAU,MAAQD,KAAKC,UAAU+wB,KACxCA,EAAW,MAEb3xB,EAAW,IAAK0rB,EAAUnY,yBAA0Boe,KA6lBlCniB,QAAUmiB,GAAaA,EACvBxX,WAAS,EACTgR,aAAcmD,EACd3vB,OAAK,MAMZswB,GACCxxB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MACEjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,4BAI5BzQ,IAAAoa,cAACsS,GAAU,CACTxlB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAC9BmM,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAChCkM,UAAU,EACVmQ,gBAAgB,EAChBzB,SA1mBpB,SAA8BjU,GAC5B7U,EAAW,IACN0rB,EACHxoB,uBAAwB2R,EAAEjR,aAwmBVknB,SAAUtT,EAAKjW,UAAUqF,qBACzB4I,QAAUyE,GAAMA,EAAErQ,UAAY,MAAQqQ,EAAE3G,YACxC6M,WAAS,EACTgR,aAAc+C,EACdvvB,OAAK,MAMZkwB,GACCpxB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAEhCzQ,IAAAoa,cAACsS,GAAU,CACTxlB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAC9BmM,QAAS5c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAChCkM,UAAU,EACVmQ,gBAAgB,EAChBzB,SAAUuH,EACVvF,SAAUtT,EAAKjW,UAAUqF,qBACzB4I,QAAUyE,GAAMA,EAAErQ,UAAY,MAAQqQ,EAAE3G,YACxC6M,WAAS,EACTxb,OAAK,EACLwsB,aAAciD,EACdtzB,MAAiB,4BAAVA,OAOlBgzB,IAAgBwB,GACf7xB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,IACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC1CzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,OACVjzB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJzpB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS4E,EAAS2B,gBAClBtR,SAhtBxB,SAAqC1U,GACnCrH,EAAW,IAAK0rB,EAAU2B,gBAAiBhmB,EAAEI,OAAOqf,WAgtB9BlL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAOzC4f,IAAgByB,GACf9xB,IAAAoa,cAAC2T,GAAa,CACZlW,WAAYA,EACZoW,SAAUA,EACVD,YAAaA,EACbzrB,WAAYA,EACZwX,KAAMA,KAMd/Z,IAAAoa,cAACwG,GAAoB,CACnBtG,QAASzC,EA/1Bf,WACEkC,EAAK3B,QAAQY,KAAK,qBArBpB,WAEEoN,GAAW,GACP+L,EAASlE,IACXlU,EAAKrY,SACFW,WAAW,IACP4rB,EACHpY,wBAAyBoY,EAASpY,yBAA2B,KAC7DC,yBAA0BmY,EAASnY,0BAA4B,KAC/DC,wBAAyBkY,EAASlY,yBAA2B,KAC7DtQ,uBAAwBwoB,EAASxoB,wBAA0B,OAE5DnG,KAAK,IAAMya,EAAK3B,QAAQY,KAAK,qBAC7BtZ,MAAM,IAAMqa,EAAK3G,SAAS,UAAW,gFACrC4D,QAAQ,IAAMoP,GAAW,IAG9BA,GAAW,IAm2BP3L,QAAkB,IAAT8V,EAAa,KAAO,eAQrC,SAAS8C,GAAuB9X,GAC9B,MAAMxB,EAAOkI,qBAAWvI,GAoCxB,OACE1Z,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,EACJC,GAAI,GACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAC1CzQ,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRjI,MAAM,UACN8H,QA9BV,WACEP,EAAKrY,SACF4B,2BAA2BiY,EAAM9P,OACjCnM,KAAK,IACJya,EAAK3G,SACH,UACA2G,EAAKpC,WAAWK,SAAS,gCAG5BtY,MAAM,IACLqa,EAAK3G,SACH,UACA2G,EAAKpC,WAAWK,SAAS,kCAmBvBhY,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mCAI7BzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,EACJC,GAAI,GACJzpB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAC1CzQ,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRjI,MAAM,UACN8H,QA7DV,WACEP,EAAKrY,SACF0B,qBAAqBmY,EAAM9P,OAC3BnM,KAAK,IACJya,EAAK3G,SACH,UACA2G,EAAKpC,WAAWK,SAAS,iCAG5BtY,MAAM,IACLqa,EAAK3G,SACH,UACA2G,EAAKpC,WAAWK,SAAS,mCAkDvBhY,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAQnC,SAASwjB,GAAiBpa,GAA8B,IAA7B,SAAEqJ,EAAQ,aAAE2Q,GAAcha,EACnD,MAAME,EAAOkI,qBAAWvI,IACjBoK,EAAWC,GAAgBxQ,mBAAS,IAe3C,OAbAwE,oBAAU,KACRgC,EAAKjW,UACFyK,eACAjP,KAAMkX,IACY,MAAbA,EAAE/Y,QACJsmB,EAAavN,EAAE9Y,QAGlBgC,MAAOrC,IACNwB,QAAQC,IAAIzB,MAEf,CAAC0c,EAAKrY,WAGP1B,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,SAChB7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAOgL,GAAsB,EAC7B5E,SAAUuV,EACV/R,MACE9hB,IAAAoa,cAAC0Z,KAAa,CACZrjB,KAAK,WACLrO,GAAG,yBAGN0hB,EAAUmB,IAAKhE,GACdjhB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKwZ,EAAE7e,GACP8V,MAAO+I,EAAE7e,IACR6e,EAAEhN,UCpsCA,SAASkgB,KACtB,MAAMpa,EAAOkI,qBAAWvI,IACjBwJ,EAAUkR,GAAe7gB,oBAAU,GAE1C,SAAS2X,EAAaC,GACpBiJ,EAAYjJ,GAEd,OACEnrB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAI,mBACJ/T,OAAQA,IACNvgB,IAAAoa,cAACma,GAAc,CACbxa,KAAMA,EACNwN,OAAQ2D,MAKdlrB,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAI,0BACJ/T,OAAQA,IACNvgB,IAAAoa,cAACoa,GAAY,CACXza,KAAMA,EACNwW,KAAK,aAKXvwB,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAI,wBACJ/T,OAAQA,IACNvgB,IAAAoa,cAACoa,GAAY,CACXza,KAAMA,EACNwW,KAAK,OACLrN,SAAUA,OCuBP+Q,OAxDf,WAA8B,IAADQ,EAC3B,MAAM1a,EAAOkI,qBAAWvI,IACjBoK,EAAWC,GAAgBxQ,mBAAS,IA6B3C,OAbAwE,oBAAU,KAbRgC,EAAKjW,UACFyK,eACAjP,KAAMkX,IACY,MAAbA,EAAE/Y,QACJsmB,EAAavN,EAAE9Y,QAGlBgC,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,SAKV,KASF,QAFqByd,EAAG3Q,EAAUK,KAChCC,GAAOA,EAAGhiB,KAAO2X,EAAKrW,KAAK+E,iBAC7B,IAAAgsB,OAAA,EAFwBA,EAEtBxgB,OAGDjU,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,SAChB7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAO4L,EAAU0B,UAAWpB,GAAOA,EAAGhiB,KAAO2X,EAAKrW,KAAK+E,UACvD6V,SAfkB1U,IACtB,MAAM2b,EAAQ3b,EAAEI,OAAOkO,MACvB6B,EAAKrW,KAAK6R,YAAYuO,EAAUyB,GAAOnjB,GAAI0hB,EAAUyB,GAAOmP,OAcxD5S,MACE9hB,IAAAoa,cAAC0Z,KAAa,CACZrjB,KAAK,WACLrO,GAAG,yBAGN0hB,EAAUmB,IAAI,CAAChE,EAAG4H,IACjB7oB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKwZ,EAAE7e,GACP8V,MAAO2Q,GACN5H,EAAEhN,UAKT,MCaS+f,OAjEf,WACE,MAAMja,EAAOkI,qBAAWvI,IACjBqZ,EAAK4B,GAAUphB,mBAASwG,EAAKrW,KAAK+R,YAAYG,eAC9Cmb,EAASC,GAAczd,mBAAS,IACvC,IAAIqhB,EAAW7a,EAAKV,cAkCpB,OAZAtB,oBAAU,KACRgC,EAAKjW,UACF8C,UACAtH,KAAMmX,IACLua,EAAWva,EAAG/Y,QAEfgC,MAAOkK,IAEN,MADA/K,QAAQC,IAAI8K,GACNA,KAET,IAGD5J,IAAAoa,cAAA,QAAMiE,aAAa,OACjBre,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,SAChB7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAO6a,EACPjR,MACE9hB,IAAAoa,cAAC0Z,KAAa,CACZrjB,KAAK,aACLrO,GAAG,wBAGPkc,SA7CR,SAAsB1U,GACpB+qB,EAAO/qB,EAAEI,OAAOkO,OAChB6B,EAAKrW,KAAKyT,cAAcvN,EAAEI,OAAOkO,QA4C3B6b,cAAY,GACZ/zB,IAAAoa,cAAC4K,KAAQ,CACP9M,MAAM,GACN2E,UAAQ,GACP7c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAEzBmkB,EAAS3P,IAAKhE,GA/CvB,SAAuBsI,GACrB,IAAI9S,EAAKsa,EAAQ5M,KAAM3N,GAAMA,EAAEpU,KAAOmnB,GAClCsL,EAAc,GAIlB,OAHIpe,IACFoe,EAAcpe,EAAGxC,OAGjBjU,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAK8hB,EACLrR,MAAOqR,GACNsL,GAqCsBC,CAAc7T,QCM9BrF,mBA9DClI,IAAK,CACnBoH,KAAM,IACDpH,EAAMqhB,OAAOC,UAChB/Y,QAASvI,EAAMqI,QAAQ,GACvBmQ,SAAU,KA0DCtQ,EAtDf,WACE,MAAM7B,EAAOkI,qBAAWvI,IACjB9V,EAAYqxB,GAAiB1hB,mBAASwG,EAAKrW,KAAK+R,YAAY7R,YAEnE,OACE5D,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAC1CzQ,IAAAoa,cAAC6Z,GAAiB,MACjBla,EAAKrW,KAAK+R,YAAYO,mBACrBhW,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLvF,QAAStP,EAAKpC,WAAWE,WACzBrF,MAAM,UACN8L,SAAUA,KACRvE,EAAKpC,WAAWM,kBAAkB8B,EAAKpC,WAAWE,eAIxD3Q,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAE9B,MAENzQ,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC1CzQ,IAAAoa,cAACwU,KAAM,CACLvF,QAASzlB,EACT4O,MAAM,UACN8L,SAAUA,KACRvE,EAAKrY,SACFiC,iBACCoW,EAAKrW,KAAKX,QACTgX,EAAKrW,KAAK+R,YAAY7R,YAExBtE,KAAK,KACJ21B,GAAelb,EAAKrW,KAAK+R,YAAY7R,kBAM/C5D,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC1CzQ,IAAAoa,cAAC4Z,GAAmB,OAGtBh0B,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBACzCsJ,EAAKrW,KAAKoI,iBAAiB3F,e,8ECzDpC,MAAM+uB,GAAU,CACd,QAASC,KACT,QAASC,KACT,QAASC,KACT,QAASC,KACT,QAASC,MAuBIC,OApBKja,IAClB,MAAMxB,EAAOkI,qBAAWvI,GAClB+b,EAASP,GAAQnb,EAAKrW,KAAKgG,cAGjC,OAFA+rB,EAAOC,QAAQC,aAAe,EAG5B31B,IAAAoa,cAACwb,KAAuB,CACtBC,MAAOC,KACPL,OAAQA,GACRz1B,IAAAoa,cAAC2b,KAAkB7Y,OAAAC,OAAA,CACjB6Y,OAAO,aACPC,eAAgBj2B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvCylB,eAAgBl2B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvC0lB,mBAAoBn2B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBACvC8K,M,oDCfG,SAAS6a,GAAiB7a,GACvC,MAAMxB,EAAOkI,qBAAWvI,IACjB2c,EAAOC,GAAY/iB,mBAAS,KAC5B4S,EAASC,GAAc7S,oBAAS,GACjCgjB,EAAQC,EAAmB,IAAIC,OAC9BC,EAASC,GAAcpjB,mBAAS,CACrCnR,GAAI,UACJw0B,iBAAkBL,EAClBM,qBAAsBN,EACtBO,wBAAyBP,EACzBQ,mBAAoBR,IAGhBS,EAAmBA,KACvB5Q,GAAW,GACXrM,EAAKjW,UAAUmB,gBAAgB3F,KAAMqX,IACnC2f,EAAS3f,EAAIjZ,KAAKu5B,aAEpB7Q,GAAW,IAOb,SAASoQ,EAAmBU,GAC1B,OACE,IAAIT,KAAKS,EAAKC,UAAuC,IAA3BD,EAAKE,qBAC5BC,SACAC,MAAM,KAAK,GAAK,YARvBvf,oBAAU,KACRif,KACC,IAUH,MA8CMO,EAAYhc,IAChB,MAAM,SAAEic,EAAQ,KAAE/mB,EAAI,UAAEgnB,GAAclc,EACtC,OACEvb,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlX,SAAW4Y,IACTO,EArCcC,EAACR,EAAMS,KAC7B,MAAMC,EAAapB,EAAmBU,GAChCW,EAAU,IAAKnB,GACrBmB,EAAQF,GAAYC,EACpBjB,EAAWkB,IAkCCH,CAAgBR,EAAMzmB,GArDfqnB,EAACZ,EAAM90B,EAAIu1B,KAC9BvR,GAAW,GACX,MAAMwR,EAAapB,EAAmBU,GAChCW,EAAU,IAAKxB,EAAMlS,KAAMC,GAAOA,EAAGhiB,KAAOA,IAClDy1B,EAAQF,GAAYC,EACpB7d,EAAKjW,UACFsB,eAAeyyB,GACfv4B,KAAK,KACJ03B,MAEDt3B,MAAM,KACL0mB,GAAW,MA2CH0R,CAAaZ,EAAMM,EAASp1B,GAAIqO,IAEtCyH,MAAOsf,EAAS/mB,OAMxB,OACEzQ,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAC1CzQ,IAAAoa,cAACwb,KAAuB,CAACC,MAAOC,MAC9B91B,IAAAoa,cAAC2d,KAAc,CACb7X,MAAO,CAAEiF,SAAU,KACnBvF,UAAWL,KACV4G,EAAUnmB,IAAAoa,cAACuB,IAAc,MAAM3b,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,KACtD/e,IAAAoa,cAACuP,KAAK,CAACpP,aAAW,gBAChBva,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAI7BzQ,IAAAoa,cAAC4P,KAAS,KACPqM,EAAMpR,IAAKuS,GACVx3B,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAK+vB,EAASp1B,IACtBpC,IAAAoa,cAACmd,EAAQ,CACPC,SAAUA,EACV/mB,KAAK,qBAEPzQ,IAAAoa,cAACmd,EAAQ,CACPC,SAAUA,EACV/mB,KAAK,yBAEPzQ,IAAAoa,cAACmd,EAAQ,CACPC,SAAUA,EACV/mB,KAAK,4BAEPzQ,IAAAoa,cAACmd,EAAQ,CACPC,SAAUA,EACV/mB,KAAK,uBAGPzQ,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC6d,KAAiB,CAChBzlB,MAAM,YACN0N,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,KAAM4d,OA1FhB91B,EA0F4Bo1B,EAASp1B,GAzFxDgkB,GAAW,QACXrM,EAAKjW,UAAUuB,iBAAiBjD,GAAI9C,KAAK,KACvC03B,MAHiB50B,YAgGPpC,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAKivB,EAAQt0B,IACrBpC,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAAC4H,GAAgB,CACf9B,MAAO,CAAEsE,SAAU,IACnB/T,KAAK,cAIXzQ,IAAAoa,cAAC0P,KAAQ,CAAC5J,MAAO,CAAEwB,UAAW,mBAC5B1hB,IAAAoa,cAACmd,EAAQ,CACPE,WAAS,EACTD,SAAUd,EACVjmB,KAAK,qBAEPzQ,IAAAoa,cAACmd,EAAQ,CACPE,WAAS,EACTD,SAAUd,EACVjmB,KAAK,yBAEPzQ,IAAAoa,cAACmd,EAAQ,CACPE,WAAS,EACTD,SAAUd,EACVjmB,KAAK,4BAEPzQ,IAAAoa,cAACmd,EAAQ,CACPE,WAAS,EACTD,SAAUd,EACVjmB,KAAK,uBAGPzQ,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC+d,KAAoB,CACnB3lB,MAAM,UACN0N,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,KA1H3B8L,GAAW,QACXrM,EAAKjW,UACFoB,iBAAiB,IAAKwxB,EAASt0B,QAAId,IACnChC,KAAK,KACJ03B,IACA5Q,GAAW,KAEZ1mB,MAAM,KACL0mB,GAAW,GACXrM,EAAK3F,SAAS,CACZC,SAAUrU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBACjC6D,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oC,cCzE1C,MAAMmK,GAAYC,YAAW,MAC3Bud,cAAe,CACb5T,SAAU,OAIC,SAAS6T,KACtB,MAAMte,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,MACT0d,EAAYC,GAAgBhlB,mBAAS,KACrC8iB,EAAOC,GAAY/iB,mBAAS,KAC5B4S,EAASC,GAAc7S,oBAAS,IAChCilB,EAAMC,GAAWllB,oBAAS,GAE3BgjB,EAAQC,EAAmB,IAAIC,OAC9BC,EAASC,GAAcpjB,mBAAS,IAEvC,SAASijB,EAAmBU,GAC1B,OACE,IAAIT,KAAKS,EAAKC,UAAuC,IAA3BD,EAAKE,qBAC5BC,SACAC,MAAM,KAAK,GAAK,YAIvB,MAAMN,EAAmBA,KACvB5Q,GAAW,GAEXrM,EAAKjW,UAAUa,qBAAqBrF,KAAMqX,IACxC2f,EAAS3f,EAAIjZ,KAAKu5B,aAGpB7Q,GAAW,IAGPsS,EAAsBrC,IAC1B,MAAMsC,EAAY,GAUlB,OARAtC,EAAMuC,kBAAkBrK,QAAShF,IAC/BoP,EAAU3f,KAAK,CACb6f,UAAWxC,EAAMO,iBACjBkC,gBAAiBvP,EAAKuP,gBACtBC,cAAexP,EAAKwP,kBAIjBJ,GAwET,OA5BA5gB,oBAAU,KACRgC,EAAKjW,UACFY,oBACApF,KAAMqX,IACL4hB,EAAa5hB,EAAIjZ,MAEjB,IAAIg5B,EAAU,CACZE,iBAAkBL,EAClBqC,kBAAmB,IAErBjiB,EAAIjZ,KAAK6wB,QAAShF,IAChBmN,EAAQkC,kBAAkB5f,KAAK,CAC7B8f,gBAAiBvP,EAAKuP,gBACtBC,cAAexC,MAInBI,EAAWD,GACX+B,GAAQ,KAET/4B,MAAM,KACL0mB,GAAW,GACXqS,GAAQ,KAGZzB,KACC,IAGDh3B,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACwb,KAAuB,CAACC,MAAOC,MAC9B91B,IAAAoa,cAAC2d,KAAc,CAACnY,UAAWL,KACxB4G,EAAUnmB,IAAAoa,cAACuB,IAAc,MAAM3b,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,KACtD/e,IAAAoa,cAACuP,KAAK,CAACpP,aAAW,gBAChBva,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sCAExB6nB,EAAWrT,IAAK+T,GACfh5B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACkK,KAAO,CACNrQ,MACE8F,EAAKpC,WAAWE,WAAU,qBAAAjZ,OACDo6B,EAAUvc,MAC/B1C,EAAKpC,WAAWK,SAAS,qBAADpZ,OACDo6B,EAAUvc,OAGvCwc,UAAU,eACVzd,QAAS,CAAE0d,QAAS1d,EAAQ4c,gBAC5Bp4B,IAAAoa,cAACuF,IAAU,KAAEqZ,EAAUvc,WAMjCzc,IAAAoa,cAAC4P,KAAS,KACPqM,EAAMpR,IAAKuS,GACVx3B,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAK+vB,EAASZ,kBACtB52B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxBtc,UAAU,EACV3E,MAAOsf,EAASZ,oBAInBY,EAASoB,kBAAkB3T,IAAKsE,GAC/BvpB,IAAAoa,cAAApa,IAAAie,SAAA,KACGqa,EAAWrT,IAAKmU,GACfp5B,IAAAoa,cAAApa,IAAAie,SAAA,KACGmb,EAAEN,iBAAmBvP,EAAKuP,gBACzB94B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxB7a,SAAW4Y,IACT,MAAMmC,EAAW,IAAK7B,GAEtB,IACE,IAAI3O,EAAI,EACRA,EAAIwQ,EAAST,kBAAkBv3B,OAC/BwnB,IAGEwQ,EAAST,kBAAkB/P,GACxBiQ,iBAAmBvP,EAAKuP,kBAE3BO,EAAST,kBACP/P,GACAkQ,cAAgBvC,EAAmBU,IAnInDA,KACpB9Q,GAAW,GAEXvnB,QAAQC,IAAIo4B,GAEZnd,EAAKjW,UACFiB,qBAAqB2zB,EAAmBxB,IACxC53B,KAAK,KACJ03B,MAEDt3B,MAAM,KACL0mB,GAAW,MA4He0R,CAAauB,IAEfnhB,MAAOqR,EAAKwP,iBAIhB/4B,IAAAoa,cAAApa,IAAAie,SAAA,UAOVje,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC6d,KAAiB,CAChBzlB,MAAM,YACN0N,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,KAAM4d,OAvHdtB,EAuH0BY,EAASZ,iBAtHtDxQ,GAAW,QAEXrM,EAAKjW,UAAUkB,qBAAqB4xB,GAAkBt3B,KAAK,KACzD03B,MAJiBJ,YA6HT52B,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAKivB,EAAQt0B,IACrBpC,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAAC4H,GAAgB,CACf9B,MAAO,CAAEsE,SAAU,IACnB/T,KAAK,cAKT+nB,EA6DAx4B,IAAAoa,cAACuB,IAAc,MA5Df3b,IAAAoa,cAAC0P,KAAQ,CAAC5J,MAAO,CAAEwB,UAAW,mBAC5B1hB,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxB7a,SAAW4Y,IACT,MAAMmC,EAAW,IAAK3C,GACtB2C,EAASzC,iBAAmBJ,EAAmBU,GAE/C,IACE,IAAIrO,EAAI,EACRA,EAAIwQ,EAAST,kBAAkBv3B,OAC/BwnB,IAEAwQ,EAAST,kBAAkB/P,GAAGkQ,cAC5BvC,EAAmBU,GAGvBP,EAAW0C,IAEbnhB,MAAOwe,EAAQE,oBAIlBF,EAAQkC,kBAAkB3T,IAAK2T,GAC9B54B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxB7a,SAAW4Y,IACT,MAAMmC,EAAW,IAAK3C,GAEtB,IACE,IAAI7N,EAAI,EACRA,EAAIwQ,EAAST,kBAAkBv3B,OAC/BwnB,IAGEwQ,EAAST,kBAAkB/P,GAAGiQ,iBAC9BF,EAAkBE,kBAElBO,EAAST,kBAAkB/P,GAAGkQ,cAC5BvC,EAAmBU,IAIzBP,EAAW0C,IAEbnhB,MAAO0gB,EAAkBG,kBAK/B/4B,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC+d,KAAoB,CACnB3lB,MAAM,UACN0N,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,KA/M3B8L,GAAW,QAEXrM,EAAKjW,UACFgB,qBAAqB4zB,EAAmBhC,IACxCp3B,KAAK,KACJ03B,IACA5Q,GAAW,KAEZ1mB,MAAM,KACL0mB,GAAW,GACXrM,EAAK3F,SAAS,CACZC,SAAUrU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBACjC6D,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mCC7E1C,MAAMmK,GAAYC,YAAW,MAC3Bud,cAAe,CACb5T,SAAU,OAIC,SAAS8U,GAAgC/d,GACtD,MAAMxB,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,MACT0d,EAAYC,GAAgBhlB,mBAAS,KACrC8iB,EAAOC,GAAY/iB,mBAAS,KAC5B4S,EAASC,GAAc7S,oBAAS,IAChCilB,EAAMC,GAAWllB,oBAAS,GAE3BgjB,EAAQC,EAAmB,IAAIC,OAC9BC,EAASC,GAAcpjB,mBAAS,IAEvC,SAASijB,EAAmBU,GAC1B,OACE,IAAIT,KAAKS,EAAKC,UAAuC,IAA3BD,EAAKE,qBAC5BC,SACAC,MAAM,KAAK,GAAK,YAIvB,MAAMN,EAAmBA,KACvB5Q,GAAW,GAEXrM,EAAKjW,UAAUQ,iCAAiChF,KAAMqX,IACpD2f,EAAS3f,EAAIjZ,KAAKu5B,aAGpB7Q,GAAW,IAGPsS,EAAsBrC,IAC1B,MAAMsC,EAAY,GAUlB,OARAtC,EAAMuC,kBAAkBrK,QAAShF,IAC/BoP,EAAU3f,KAAK,CACb4d,iBAAkBP,EAAMO,iBACxBkC,gBAAiBvP,EAAKuP,gBACtBC,cAAexP,EAAKwP,kBAIjBJ,GA0ET,OA5BA5gB,oBAAU,KACRgC,EAAKjW,UACFY,oBACApF,KAAMqX,IACL4hB,EAAa5hB,EAAIjZ,MAEjB,IAAIg5B,EAAU,CACZE,iBAAkBL,EAClBqC,kBAAmB,IAErBjiB,EAAIjZ,KAAK6wB,QAAShF,IAChBmN,EAAQkC,kBAAkB5f,KAAK,CAC7B8f,gBAAiBvP,EAAKuP,gBACtBC,cAAexC,MAInBI,EAAWD,GACX+B,GAAQ,KAET/4B,MAAM,KACL0mB,GAAW,GACXqS,GAAQ,KAGZzB,KACC,IAGDh3B,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACwb,KAAuB,CAACC,MAAOC,MAC9B91B,IAAAoa,cAAC2d,KAAc,CAACnY,UAAWL,KACxB4G,EAAUnmB,IAAAoa,cAACuB,IAAc,MAAM3b,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,KACtD/e,IAAAoa,cAACuP,KAAK,CAACpP,aAAW,gBAChBva,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCAExB6nB,EAAWrT,IAAK+T,GACfh5B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACkK,KAAO,CACNrQ,MACE8F,EAAKpC,WAAWE,WAAU,qBAAAjZ,OACDo6B,EAAUvc,MAC/B1C,EAAKpC,WAAWK,SAAS,qBAADpZ,OACDo6B,EAAUvc,OAGvCwc,UAAU,eACVzd,QAAS,CAAE0d,QAAS1d,EAAQ4c,gBAC5Bp4B,IAAAoa,cAACuF,IAAU,KAAEqZ,EAAUvc,WAMjCzc,IAAAoa,cAAC4P,KAAS,KACPqM,EAAMpR,IAAKuS,GACVx3B,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAK+vB,EAASZ,kBACtB52B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxBtc,UAAU,EACV3E,MAAOsf,EAASZ,oBAInBY,EAASoB,kBAAkB3T,IAAKsE,GAC/BvpB,IAAAoa,cAAApa,IAAAie,SAAA,KACGqa,EAAWrT,IAAKmU,GACfp5B,IAAAoa,cAAApa,IAAAie,SAAA,KACGmb,EAAEN,iBAAmBvP,EAAKuP,gBACzB94B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxB7a,SAAW4Y,IACT,MAAMmC,EAAW,IAAK7B,GAEtB,IACE,IAAI3O,EAAI,EACRA,EAAIwQ,EAAST,kBAAkBv3B,OAC/BwnB,IAGEwQ,EAAST,kBAAkB/P,GACxBiQ,iBAAmBvP,EAAKuP,kBAE3BO,EAAST,kBACP/P,GACAkQ,cAAgBvC,EAAmBU,IArInDA,KACpB9Q,GAAW,GAEXvnB,QAAQC,IAAIo4B,GAEZnd,EAAKjW,UACFS,kCAAkCm0B,EAAmBxB,IACrD53B,KAAK,KACJ03B,MAEDt3B,MAAM,KACL0mB,GAAW,MA8He0R,CAAauB,IAEfnhB,MAAOqR,EAAKwP,iBAIhB/4B,IAAAoa,cAAApa,IAAAie,SAAA,UAOVje,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC6d,KAAiB,CAChBzlB,MAAM,YACN0N,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,KAAM4d,OAzHdtB,EAyH0BY,EAASZ,iBAxHtDxQ,GAAW,QAEXrM,EAAKjW,UACFU,kCAAkCoyB,GAClCt3B,KAAK,KACJ03B,MANeJ,YA+HT52B,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAKivB,EAAQt0B,IACrBpC,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAAC4H,GAAgB,CACf9B,MAAO,CAAEsE,SAAU,IACnB/T,KAAK,cAKT+nB,EA6DAx4B,IAAAoa,cAACuB,IAAc,MA5Df3b,IAAAoa,cAAC0P,KAAQ,CAAC5J,MAAO,CAAEwB,UAAW,mBAC5B1hB,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxB7a,SAAW4Y,IACT,MAAMmC,EAAW,IAAK3C,GACtB2C,EAASzC,iBAAmBJ,EAAmBU,GAE/C,IACE,IAAIrO,EAAI,EACRA,EAAIwQ,EAAST,kBAAkBv3B,OAC/BwnB,IAEAwQ,EAAST,kBAAkB/P,GAAGkQ,cAC5BvC,EAAmBU,GAGvBP,EAAW0C,IAEbnhB,MAAOwe,EAAQE,oBAIlBF,EAAQkC,kBAAkB3T,IAAK2T,GAC9B54B,IAAAoa,cAAC4O,KAAS,KACRhpB,IAAAoa,cAACob,GAAU,CACTlY,WAAY,CAAE6b,UAAU,GACxB7a,SAAW4Y,IACT,MAAMmC,EAAW,IAAK3C,GAEtB,IACE,IAAI7N,EAAI,EACRA,EAAIwQ,EAAST,kBAAkBv3B,OAC/BwnB,IAGEwQ,EAAST,kBAAkB/P,GAAGiQ,iBAC9BF,EAAkBE,kBAElBO,EAAST,kBAAkB/P,GAAGkQ,cAC5BvC,EAAmBU,IAIzBP,EAAW0C,IAEbnhB,MAAO0gB,EAAkBG,kBAK/B/4B,IAAAoa,cAAC4O,KAAS,CAACgP,MAAM,SACfh4B,IAAAoa,cAAC+d,KAAoB,CACnB3lB,MAAM,UACN0N,MAAO,CAAE+I,OAAQ,WACjB3O,QAASA,KAjN3B8L,GAAW,QAEXrM,EAAKjW,UACFW,kCAAkCi0B,EAAmBhC,IACrDp3B,KAAK,KACJ03B,IACA5Q,GAAW,KAEZ1mB,MAAM,KACL0mB,GAAW,GACXrM,EAAK3F,SAAS,CACZC,SAAUrU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBACjC6D,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mCC1F3B,SAAS8oB,GAAmBhe,GACzC,MAAMxB,EAAOkI,qBAAWvI,IACjB8f,EAAmBC,GAAwBlmB,mBAAS,IAQ3D,OANAwE,oBAAU,KACRgC,EAAKjW,UAAU0L,iCAAiClQ,KAAMqX,IACpD8iB,EAAqB9iB,EAAIjZ,SAE1B,IAGDsC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sCAC1CzQ,IAAAoa,cAACkf,GAA+B,OAElCt5B,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAC1CzQ,IAAAoa,cAACie,GAAe,MAChBr4B,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CACT1W,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gCAE/B+oB,EAAkBvU,IAAKyU,GACtB15B,IAAAoa,cAACuf,KAAG,CAACzZ,MAAO,CAAEjE,QAAS,MAAO2d,aAAc,mBAC1C55B,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAEnF,QAAS,eAAgB8e,SAAU,UAC3CH,EAASjpB,MAEZzQ,IAAAoa,cAACuF,IAAU,CAACO,MAAO,CAAEnF,QAAS,iBAC3B2e,EAASxoB,0B,6GCzB1B,MAAM4oB,GAAS,CACbC,EAAGC,KACHC,EAAGC,KACHC,EAAGC,KACHC,EAAGC,KACHC,GAAIC,MAGA5f,GAAYC,YAAYnH,IAAK,CACjC+mB,YAAa,CACXrb,eAAgB,YAChB6J,OAAQ,WAEVyR,YAAa,CACX5e,OAAQ,KAEV6e,YAAa,CACX9mB,MAAO,OACPkH,QAAS,OACTE,cAAe,MACfD,eAAgB,gBAChBuD,WAAY,aAID,SAASqc,GAAYC,GAClC,MAAM9gB,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,MACTjF,EAAMmlB,GAAWvnB,mBAAS,KAC1B+C,EAAM6C,GAAW5F,oBAAS,GAkDjC,SAASwnB,EAAehI,GACtB,OAAIA,EAAIiI,aAEJh7B,IAAAoa,cAACuf,KAAG,KACF35B,IAAAoa,cAAA,OACE2E,OAAQ,IACRU,IAAKwb,IAAIC,gBAAgBnI,EAAIiI,gBAE/Bh7B,IAAAoa,cAAA,SACEpa,IAAAoa,cAAA,aACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iCACvBzQ,IAAAoa,cAAA,QACEqB,UAAWD,EAAQif,YACnBngB,QAAU1Q,GAvDxB,SAAuBmpB,GACrB+H,EACEnlB,EAAKsP,IAAKsE,IACJA,EAAKnnB,IAAM2wB,EAAI3wB,KACjBmnB,EAAKyR,kBAAe15B,GAGfioB,KAgDiB4R,CAAcpI,IAAM,KAClC/yB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2CAQT,KAAxBsiB,EAAIqI,iBAAiD,MAAvBrI,EAAIqI,gBAElCp7B,IAAAoa,cAACuf,KAAG,KACF35B,IAAAoa,cAAA,OACE2E,OAAQ,IACRU,IAAKpgB,EAAQlC,YAAc41B,EAAIqI,kBAEjCp7B,IAAAoa,cAAA,SACEpa,IAAAoa,cAAA,aACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iCAAiC,KACxDzQ,IAAAoa,cAAA,QACEqB,UAAWD,EAAQif,YACnBngB,QAAU1Q,GAhExB,SAAqBmpB,GACnB,IAAIjsB,EAAW,IAAIgD,SACnBhD,EAASiD,OAAO,OAAQ,IAExBgQ,EAAKjW,UAAU+C,eAAeksB,EAAI3wB,GAAI0E,GAAUxH,KAAK,KACnD6Z,GAAS7C,KA2DiB+kB,CAAYtI,IAC5B/yB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2CASjCzQ,IAAAoa,cAACuf,KAAG,KACF35B,IAAAoa,cAAA,OACE2E,OAAQ,IACRU,IAAKqa,GAAO/G,EAAI3wB,MAElBpC,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQkf,aACpB16B,IAAAoa,cAAA,aACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qCAMjC,OAzGAsH,oBAAU,KACRgC,EAAKjW,UAAU8C,UAAUtH,KAAMqX,IAC7BmkB,EAAQnkB,EAAIjZ,KAAKshB,OAAQ+T,GAAmB,IAAXA,EAAI3wB,QAEtC,CAACkU,IAsGFtW,IAAAoa,cAAApa,IAAAie,SAAA,KACGtI,EAAKsP,IAAK8N,GAEP/yB,IAAAoa,cAACsP,GAAW,KACV1pB,IAAAoa,cAACuQ,GAAU,CAAC1W,MAAO8F,EAAKpC,WAAWK,SAAS,MAAQ+a,EAAI3wB,MAExDpC,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQmf,aAClBI,EAAehI,GAEdA,EAAIiI,aA6BJh7B,IAAAoa,cAACuf,KAAG,KACF35B,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,UACvBt7B,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNoN,UAAU,OACVtF,QAAU1Q,GA7H9B,SAAqBmpB,GACnB,IAAIjsB,EAAW,IAAIgD,SACnBhD,EAASiD,OAAO,OAAQgpB,EAAIiI,cAE5BjhB,EAAKjW,UAAU+C,eAAeksB,EAAI3wB,GAAI0E,GAAUxH,KAAK,KACnD6Z,GAAS7C,KAwHuBilB,CAAYxI,GAC5B7S,MAAO,CACLoB,aAAc,QAEhBthB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAEzBzQ,IAAAoa,cAAA,WACApa,IAAAoa,cAAA,aACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCA1C7BzQ,IAAAoa,cAACuf,KAAG,KACF35B,IAAAoa,cAAA,SACEqC,KAAK,OACL+e,OAAO,aACPp5B,GAAI,WAAa2wB,EAAI3wB,GACrB8d,MAAO,CAAEnF,QAAS,QAClBuD,SAAW1U,GAxF7B,SAAqBmpB,EAAKnpB,GACxBkxB,EACEnlB,EAAKsP,IAAKsE,IACJA,EAAKnnB,IAAM2wB,EAAI3wB,KACjBmnB,EAAKyR,aAAepxB,EAAEI,OAAOC,MAAM,IAG9Bsf,KAiFsBkS,CAAY1I,EAAKnpB,KAGpC5J,IAAAoa,cAAA,SACEwC,QAAS,WAAamW,EAAI3wB,GAC1B8d,MAAO,CAAEnF,QAAS,QAASugB,UAAW,UACtCt7B,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNoN,UAAU,OACVM,MAAO,CACLoB,aAAc,QAEhBthB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAEzBzQ,IAAAoa,cAAA,WACApa,IAAAoa,cAAA,aACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qCChL7C,MAAMmK,GAAYC,YAAW,MAC3BwV,YAAa,CACX7d,MAAO,WAII,SAASkpB,KACtB,MAAM3hB,EAAOkI,qBAAWvI,IACjB2W,EAAaY,GAAkB1d,mBAAS,IACxCwd,EAASC,GAAczd,mBAAS,IACjCiI,EAAUZ,KAEhB7C,oBAAU,KACRgC,EAAKjW,UACF8C,UACAtH,KAAMmX,IACLua,EAAWva,EAAG/Y,QAEfgC,MAAM,SACR,CAAC2wB,IAEJ,MAaMsL,EAAepgB,GAEjBvb,IAAAoa,cAAC4Y,KAAG,CACFvX,UAAW4U,IAAgB9U,EAAMnZ,GAAKoZ,EAAQ6U,YAAc,GAC5D/V,QAASA,IAAM2W,EAAe1V,EAAMnZ,IACpC8E,MAAOqU,EAAMtH,QAKnB,OACEjU,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACyY,KAAI,KACF9B,EAAQ9L,IAAK8N,GACZ/yB,IAAAoa,cAACuhB,EAAWze,OAAAC,OAAA,CACV1V,IAAQ,OAAHsrB,QAAG,IAAHA,OAAG,EAAHA,EAAK3wB,IACN2wB,MA7BM6I,MAClB,OAAQvL,GACN,KAAK,EACH,OAAOrwB,IAAAoa,cAACwgB,GAAW,MACrB,KAAK,EACH,OAAO56B,IAAAoa,cAACgc,GAAgB,MAC1B,KAAK,EACH,OAAOp2B,IAAAoa,cAACmf,GAAkB,MAC5B,QACE,OAAOv5B,IAAAoa,cAAApa,IAAAie,SAAA,QAwBR2d,I,gICrCP,MAAMhhB,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJjH,MAAO,OACPgmB,SAAU,IACVpb,gBAAiB/K,EAAM9B,QAAQW,WAAWO,MAC1C8mB,aAAc,iBACdiC,cAAe,GAEjBtU,OAAQ,CACN1T,MAAO,IACPyN,aAAc,IAEhBwa,OAAQ,CACNxa,aAAc,IAEhBya,GAAI,CACFC,WAAY,EACZH,cAAe,EACfrX,SAAU,OACVyX,cAAe,YACfzpB,MAAO,QAET0pB,WAAY,CACVzd,gBAAiB,UACjBiD,UAAW,kBAEbtd,KAAM,CACJoO,MAAOkB,EAAM9B,QAAQG,QAAQE,KAC7BmN,eAAgB,YAChB6J,OAAQ,WAEVzM,KAAM,CACJV,OAAQ,eAEVgG,MAAO,CACLjO,MAAO,KAETsoB,KAAM,CACJH,WAAY,GACZH,cAAe,GAEjBO,MAAO,CACLrd,OAAQ,GACRlL,MAAO,IACPmoB,WAAY,GACZH,cAAe,GAEjBQ,EAAG,CACDthB,QAAS,QACTe,OAAQ,eAEVwgB,GAAI,CACF9X,SAAU,GACV7F,UAAW,IAEb4d,mBAAoB,CAClB1W,MAAO,YA4WI2W,OAxWf,SAAyBjhB,GACvB,MAAM,KAAExB,GAASwB,GACV7d,EAAM++B,GAAWlpB,mBAAS,MAC3BiI,EAAUZ,MACTqI,EAAMyZ,GAAWnpB,mBAAS,KAC1B6R,EAAMuX,GAAWppB,mBAAS,IAC1BuQ,EAAWC,GAAgBxQ,mBAAS,KACpCqpB,EAAiBC,GAAsBtpB,mBAAS,KAChDupB,EAAmBC,GAAwBxpB,mBAAS,KACpD4S,EAASC,GAAc7S,oBAAS,GAEjCypB,EAA+C,IAArCjjB,EAAKrW,KAAK+R,YAAY5Q,WAuBhCo4B,EAAuB76B,IAC3B,IAAI86B,EAAMN,EAAgBO,QAAQ/6B,GAC9BkX,EAAM,IAAIsjB,IACD,IAATM,EACF5jB,EAAI8jB,OAAOF,EAAK,GAEhB5jB,EAAIN,KAAK5W,GAEXy6B,EAAmBvjB,IAGf+jB,EAA0Bj7B,IACzB46B,IAIDF,EAAkBxO,SAASlsB,GAC7B26B,EAAqBD,EAAkB9d,OAAQoF,GAAOA,IAAOhiB,IAE7D26B,EAAqB,IAAID,EAAmB16B,MA0C1Ck7B,EAAwBA,CAAC/T,EAAMrR,MACnB,IAAKqR,IACbriB,MAAM0c,aAAe1L,EAC7B/Q,EAAYoiB,EAAKriB,OACjBm2B,EAAuB9T,EAAKriB,MAAM9E,KAG9Bm7B,EAAiBA,CAAChU,EAAMrR,KAC5B,IAAIhR,EAAQs2B,EAAmBjU,GAC3BriB,GAASA,EAAMgR,MACjBhR,EAAMgR,MAAQA,EAEdqR,EAAKhG,aAAavK,KAAK,CACrBlR,WAAYsd,EACZlN,MAAOA,IAIX,IAAIulB,EAAW,IAAKlU,EAAKriB,OACzBu2B,EAASla,aAAegG,EAAKhG,aAC7Bpc,EAAYs2B,GACZR,EAAoB1T,EAAKriB,MAAM9E,KAG3B+E,EAAeoiB,IACnB1qB,QAAQC,IAAI,gBAAiByqB,GAC7BxP,EAAKjW,UACFqD,YAAYoiB,GACZjqB,KAAK,KACJya,EAAK3G,SAAS,UAAW,uBAE1B1T,MAAM,SAGL89B,EAAsBjU,GACnBA,EAAKhG,aAAaY,KAAMuZ,GAAOA,EAAG51B,aAAesd,GAuB1D,OApBArN,oBAAU,KACJoO,IAGJC,GAAW,GAEXrM,EAAKjW,UAAUuD,YAAY/H,KAAM9B,IAG/B,IAAI8kB,EAAS9kB,EAASE,KAAKigC,OAAO,CAACxS,EAAGyS,KACpCzS,EAAEyS,EAAE12B,MAAMmd,YAAc,IAAK8G,EAAEyS,EAAE12B,MAAMmd,aAAe,GAAKuZ,GACpDzS,GACN,IACHsR,EAAQna,KAEVvI,EAAKjW,UAAUyK,eAAejP,KAAM9B,IAClCumB,EAAavmB,EAASE,UAEvB,CAACqc,EAAKjW,UAAW24B,EAAS1Y,EAAcqC,EAAYD,IAGrDnmB,IAAAoa,cAAA,WACEpa,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,KACVnE,UAAWD,EAAQ8gB,IACnBt8B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAEzBzQ,IAAAoa,cAACuF,IAAU,CAAClE,UAAWD,EAAQ6gB,GAC7Br8B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BAEzBzQ,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ+L,QACnBvnB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,qBACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,oBACR3iB,GAAG,eACH8V,MAAOkN,EACP9G,SArHsB1U,IAC5B+yB,EAAQ/yB,EAAEI,OAAOkO,OACjB2kB,EAAmB,IACnBE,EAAqB,MAmHdjZ,EAAUmB,IAAKxc,GAEZzI,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKgB,EAASisB,KACdxc,MAAOzP,EAASrG,IACfqG,EAASwL,UAMpBjU,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+gB,oBACtBv8B,IAAAoa,cAAC4F,IAAM,CAAC1F,QAlKEujB,KACdnB,EAAQxf,OAAO4gB,KAAKpgC,MAiKU,YAC1BsC,IAAAoa,cAAC4F,IAAM,CAAC1F,QA/JGyjB,KACfrB,EAAQ,MA8JuB,iBAE7B18B,IAAAoa,cAACwR,KAAI,CACHhM,UAAU,MACV8E,kBAAgB,wBAChBjJ,UAAWD,EAAQV,MACT,OAATpd,GACCwf,OAAO/P,QAAQzP,GAAMunB,IAAK+Y,GAEtBh+B,IAAAoa,cAAA,OAAK3S,IAAG,KAAA7I,OAAOo/B,EAAM,KACnBh+B,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACN+I,UAAWD,EAAQ0gB,WACnB5hB,QAASA,IA3LLlY,KAClB,IAAI86B,EAAMja,EAAKka,QAAQ/6B,GACnBkX,EAAM,IAAI2J,IACD,IAATia,EACF5jB,EAAI8jB,OAAOF,EAAK,GAEhB5jB,EAAIN,KAAK5W,GAEXs6B,EAAQpjB,IAmLqB2kB,CAAWD,EAAM,KAChCh+B,IAAAoa,cAAC6R,KAAY,CAACla,QAASisB,EAAM,MACA,IAA5B/a,EAAKka,QAAQa,EAAM,IAClBh+B,IAAAoa,cAAC8jB,KAAU,MAEXl+B,IAAAoa,cAAC+jB,KAAU,OAIfn+B,IAAAoa,cAACgkB,KAAQ,CACPC,IAAgC,IAA5Bpb,EAAKka,QAAQa,EAAM,IACvBrS,QAAQ,OACR2S,eAAa,GACbt+B,IAAAoa,cAACwR,KAAI,CACHhM,UAAU,MACV2e,gBAAc,GACdv+B,IAAAoa,cAAC2R,KAAQ,CAACtQ,UAAWD,EAAQsgB,QAC3B97B,IAAAoa,cAACuP,KAAK,CAAClO,UAAWD,EAAQoO,OACxB5pB,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQugB,IAAI,OAClC/7B,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQugB,IAAI,WAGlC/7B,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQugB,IAAI,iBAKtC/7B,IAAAoa,cAAC4P,KAAS,KACPgU,EAAM,IACLA,EAAM,GAAG/Y,IAAKsE,IAAI,IAAAiV,EAAAC,EAAA,OAChBz+B,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAK8hB,EAAKriB,MAAM9E,IACxBpC,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ2gB,MAC3B5S,EAAKriB,MAAMO,KAGdzH,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ4gB,QAE3B,IADAU,EAAkBK,QAAQ5T,EAAKriB,MAAM9E,IAEpCpC,IAAAoa,cAAA,QACEqB,UAAWuhB,GAAWxhB,EAAQpX,KAC9BkW,QAASA,IACP+iB,EAAuB9T,EAAKriB,MAAM9E,KAEnCmnB,EAAKriB,MAAM0c,cAAgB,eAG9B5jB,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6C,IAAS,CACRxB,UAAWD,EAAQsG,MACnB1f,GAAE,oBAAAxD,OAAsB2qB,EAAKriB,MAAM9E,IACnC8E,MAAM,kBACNuT,QAAQ,WACRsD,KAAK,QACL6F,aACE2F,EAAKriB,MAAM0c,cAAgB,GAE7B8a,QAAU90B,GAtLhB+0B,EAAC/0B,EAAG2f,KACpB,UAAV3f,EAAEnC,IACJ61B,EAAsB/T,EAAM3f,EAAEI,OAAOkO,OAClB,WAAVtO,EAAEnC,KACX41B,EAAuB9T,EAAKriB,MAAM9E,KAmLEu8B,CAAwB/0B,EAAG2f,GAE7BqV,WAAS,IAEX5+B,IAAAoa,cAACC,IAAU,CACTwkB,SAAS,KACTtkB,aAAW,MACXwD,KAAK,QACLvL,MAAM,UACNiJ,UAAWD,EAAQgB,KACnBlC,QAAU1Q,GApLX2f,KACnC,IAAIsD,EAAMrT,SAASslB,eAAe,oBAADlgC,OAAqB2qB,EAAKriB,MAAM9E,KAAM8V,MACvEolB,EAAsB/T,EAAMsD,IAmLUkS,CAA4BxV,IAE9BvpB,IAAAoa,cAAC4kB,KAAsB,OAEzBh/B,IAAAoa,cAACC,IAAU,CACTwkB,SAAS,KACTtkB,aAAW,SACXwD,KAAK,QACLvL,MAAM,YACNiJ,UAAWD,EAAQgB,KACnBlC,QAASA,IACP+iB,EAAuB9T,EAAKriB,MAAM9E,KAEpCpC,IAAAoa,cAAC6kB,KAAiB,SAK1Bj/B,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ4gB,QAE3B,IADAQ,EAAgBO,QAAQ5T,EAAKriB,MAAM9E,IAElCpC,IAAAoa,cAAA,QACEqB,UAAWD,EAAQpX,KACnBkW,QAASA,IACP2iB,EAAoB1T,EAAKriB,MAAM9E,IAEjC88B,QAASA,IACPjC,EAAoB1T,EAAKriB,MAAM9E,MAER,QAAxBo8B,EAAAhB,EAAmBjU,UAAK,IAAAiV,OAAA,EAAxBA,EAA0BtmB,QACzB,eAGJlY,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6C,IAAS,CACRxB,UAAWD,EAAQsG,MACnB1f,GAAE,aAAAxD,OAAe2qB,EAAKriB,MAAM9E,IAC5B8E,MAAM,kBACNuT,QAAQ,WACRsD,KAAK,QACL6F,cAC0B,QAAxB6a,EAAAjB,EAAmBjU,UAAK,IAAAkV,OAAA,EAAxBA,EAA0BvmB,QAAS,GAErCwmB,QAAU90B,GArPvBu1B,EAACv1B,EAAG2f,KACb,UAAV3f,EAAEnC,IACJ81B,EAAehU,EAAM3f,EAAEI,OAAOkO,OACX,WAAVtO,EAAEnC,KACXw1B,EAAoB1T,EAAKriB,MAAM9E,KAkPK+8B,CAAiBv1B,EAAG2f,GAEtBqV,WAAS,EACTQ,OAASx1B,GA/P5By1B,EAACz1B,EAAG2f,KAAU,IAAD+V,EAC1B11B,EAAEI,OAAOkO,SAAkC,QAA7BonB,EAAK9B,EAAmBjU,UAAK,IAAA+V,OAAA,EAAxBA,EAA0BpnB,QAC/C+kB,EAAoB1T,EAAKriB,MAAM9E,KA6PkBi9B,CAAWz1B,EAAG2f,KAE/BvpB,IAAAoa,cAACC,IAAU,CACTwkB,SAAS,KACTtkB,aAAW,MACXwD,KAAK,QACLvL,MAAM,UACNiJ,UAAWD,EAAQgB,KACnBlC,QAAU1Q,GAjPlB2f,KAC5B,IAAIsD,EAAMrT,SAASslB,eAAe,aAADlgC,OAAc2qB,EAAKriB,MAAM9E,KAAM8V,MAChEqlB,EAAehU,EAAMsD,IAgPiB0S,CAAqBhW,IAEvBvpB,IAAAoa,cAAC4kB,KAAsB,OAEzBh/B,IAAAoa,cAACC,IAAU,CACTwkB,SAAS,KACTtkB,aAAW,SACXwD,KAAK,QACLvL,MAAM,YACNiJ,UAAWD,EAAQgB,KACnBlC,QAASA,IACP2iB,EAAoB1T,EAAKriB,MAAM9E,KAEjCpC,IAAAoa,cAAC6kB,KAAiB,sBCtX3CrjB,mBA1CClI,IAAK,CACnBoH,KAAM,IACDpH,EAAMqhB,OAAOC,UAChBgH,WAAY,EACZH,cAAenoB,EAAMqI,QAAQ,GAC7ByjB,YAAa,cACbC,aAAc,cACdvT,SAAU,EACVzN,gBAAiB,iBAkCN7C,EA9Bf,SAAmBL,GACjB,MAAMxB,EAAOkI,qBAAWvI,GAExB,OACE1Z,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAI,sBACJ/T,OAAQA,IAAMvgB,IAAAoa,cAACslB,GAAgB,QAEjC1/B,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAI,gCACJ/T,OAAQA,IAAMvgB,IAAAoa,cAACshB,GAAkB,QAGnC17B,IAAAoa,cAACkG,IAAK,CACJgU,KAAI,mBACJ/T,OAAQA,IAAMvgB,IAAAoa,cAAC+Z,GAAY,QAG7Bn0B,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAI,sBACJ/T,OAAQA,IAAMvgB,IAAAoa,cAACoiB,GAAe,CAACziB,KAAMA,UCN9B6B,mBAjCClI,IAAK,CACnBisB,eAAgB,CACd5gB,OAAQ,QAEV6gB,QAAS,CACP1T,SAAU,GAEZ2T,KAAM,CACJ9kB,QAAS,OACT8kB,KAAM,GAER/sB,MAAO,CACLe,MAAO,UACJH,EAAMqhB,OAAOC,UAChBgH,WAAYtoB,EAAMqI,QAAQ,GAC1B8f,cAAenoB,EAAMqI,QAAQ,GAC7ByjB,YAAa,IACbC,aAAc,IACdtjB,aAAc,GAEhB2jB,aAAc,CACZhf,MAAO,OACPC,OAAQ,QAEV9M,MAAO,CACLurB,YAAa,UAQF5jB,EAJR,WACL,OAAO5b,IAAAoa,cAAC2lB,GAAS,SCpCJ,SAASC,KACtB,OACEhgC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,UACEnG,MAAM,WACNwL,IAAI,+EACJ5L,MAAM,OACNkL,OAAO,MACPmB,MAAO,CACL+f,OAAQ,EACRze,UAAW,wC,kCCOrB,MAAM5G,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJoR,SAAU,GAEZpZ,MAAO,CACLmJ,QAASvI,EAAMqI,QAAQ,GACvBuf,UAAW,SACX9oB,MAAOkB,EAAM9B,QAAQwW,KAAKhW,WAE5B8tB,SAAU,CACRrsB,MAAO,QAETssB,MAAO,CACLphB,OAAQ,KAEV9K,MAAO,CACLgI,QAAS,MACTuI,SAAU,SACV1I,OAAQ,IACRskB,WAAY,MACZ9E,UAAW,aAITxB,GAAS,CACbC,EAAGC,KACHC,EAAGC,KACHC,EAAGC,KACHC,EAAGC,KACHC,GAAIC,MAGS,SAAS6F,KACtB,MAAMtmB,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,MACTjF,EAAMmlB,GAAWvnB,mBAAS,IAejC,OAbAwE,oBAAU,KACRgC,EAAKR,UAAU,QACd,CAACQ,EAAKR,YAETxB,oBAAU,KACR,MAAM6c,EAAW7a,EAAKV,cACtBU,EAAKjW,UAAU8C,UAAUtH,KAAMqX,IAC7BmkB,EACEnkB,EAAIjZ,KAAKshB,OAAQ+T,GAAmB,IAAXA,EAAI3wB,IAAYwyB,EAAStG,SAASyE,EAAI3wB,SAGlE,IAGDpC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACQ,IAAhBpG,EAAKtU,OACJrB,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAGzBkF,EAAKsP,IAAKhE,IACR,IAAI8R,EAAMuN,GAAQrf,EAAE7e,IAEpB,OACEpC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9hB,IAAKwZ,EAAE7e,GACPonB,GAAI,GACJC,GAAI,EACJ8W,GAAI,GACQ,KAAXxN,EAAI3wB,GACHpC,IAAAoa,cAAComB,KAAI,CACHtgB,MAAO,CAAEzC,SAAU,YACnBhC,UAAWD,EAAQ0kB,UACnBlgC,IAAAoa,cAAC6F,IAAI,CAAC1X,GAAIwqB,EAAIuB,MACZt0B,IAAAoa,cAACqmB,KAAc,KACbzgC,IAAAoa,cAACsmB,KAAS,CACR9gB,UAAU,MACVb,OAAO,MACP4hB,MACwB,KAAtB1f,EAAEma,iBACmB,MAArBna,EAAEma,gBACE/7B,EAAQlC,YAAc8jB,EAAEma,gBACxBtB,GAAO7Y,EAAE7e,MAGjBpC,IAAAoa,cAAA,MAAIqB,UAAWD,EAAQvH,OACpBjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,MAAQwQ,EAAE7e,SAM3CpC,IAAAoa,cAAApa,IAAAie,SAAA,W,6CCvGlB,MAAMrD,GAAYC,YAAYnH,IAAK,CACjCktB,WAAY,CACV7lB,QAAS,OACTwD,WAAY,SACZ,CAAC7K,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B7lB,cAAe,SACfsD,WAAY,kBAMZwiB,GAAiB,CACrBC,eAAgB,GAChBC,mBAAmB,EACnBC,UAAW,GAEE,SAASC,GAAS5lB,GAC/B,MAAO6lB,EAAWC,GAAgB9tB,mBAAS,KACpC+tB,EAAWC,GAAgBhuB,oBAAS,IACpCiuB,EAASC,GAAcluB,mBAASwtB,IAEjCvlB,EAAUZ,KACVb,EAAOkI,qBAAWvI,IAClB,MAAEzV,GAAUsX,EAGlBxD,oBAAU,KACRgC,EAAKjW,UAAUE,aAAaC,GACzB3E,KAAKqX,GAAO0qB,EAAa1qB,EAAIjZ,OAE9BmB,QAAQC,IAAIsiC,IACb,CAACn9B,IAEJ,MAyCMy9B,EAAWzhC,iBAAO,MAClB0hC,EAAe1hC,iBAAO,MAEtB2hC,EAAaA,KACjB,MAAM9V,EAAQ,IAAKsV,GACbS,EAAc/V,EAAM4V,EAASxhC,SAC7B4hC,EAAiBhW,EAAM9M,OAAO,CAAC+iB,EAAG7E,IAAQA,IAAQwE,EAASxhC,SAK3D8hC,EAAW,IAHGF,EAAeG,MAAM,EAAGN,EAAazhC,SAGvB2hC,KAFfC,EAAeG,MAAMN,EAAazhC,UAGrD8hC,EAASzT,QAAQ,CAAChF,EAAM2T,KACtB3T,EAAK2X,UAAYhE,EAAM,IAGzBmE,EAAaW,GAEbA,EAASzT,QAAShF,IAChBxP,EAAKjW,UAAUO,gBAAgBJ,EAAOslB,KAGxCmY,EAASxhC,QAAU,KACnByhC,EAAazhC,QAAU,MAGnBgiC,EAAoBroB,IAAkC,IAAjC,UAACsoB,EAAS,QAAEC,EAAO,MAAE7c,GAAM1L,EACpD,OACE7Z,IAAAoa,cAAA,OAAKioB,WAAS,EAACniB,MAAO,CACpBwB,UAAW,iBACXkY,aAAc,iBACd7e,QAAS,OACTwD,WAAY,SACZtC,QAAS,QACT0C,UAAYyjB,EAAQnB,kBAAoB,OAAS,MACjDhY,OAAQ,QACRqZ,YAAaA,IAAOZ,EAASxhC,QAAUqlB,EACvCgd,YAAaA,IAAOZ,EAAazhC,QAAUqlB,EAC3Cid,WAAa54B,GAAMA,EAAEC,iBACrB44B,UAAWb,GACX5hC,IAAAoa,cAACsoB,KAAU,MACVP,EAEDniC,IAAAoa,cAAC6C,IAAS,CACR0lB,UAAW/4B,IApDDxF,MAqDU,KAAdwF,EAAEg5B,UArDEx+B,EAuDGg+B,EAtDnBroB,EAAKjW,UAAUO,gBAAgBJ,EAAO,IAAKG,IACxC9E,KAAK,KACJya,EAAKjW,UAAUE,aAAaC,GACzB3E,KAAKqX,GAAO0qB,EAAa1qB,EAAIjZ,WAsD9BwiB,MAAO,CAACkT,WAAY,OAAQvf,MAAO,QACnC4G,QAAQ,WACRsD,KAAK,QACL6F,aAAcwe,EAAQlB,UACtB5iB,SAAU1U,GAAKw4B,EAAQlB,UAAYt3B,EAAEI,OAAOkO,QAG9ClY,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,KAAMuoB,OA5EJz+B,EA4Eeg+B,OA3E7BxlC,OAAOkmC,QAAQ,SAAW1+B,EAAK48B,iBAChCjnB,EAAKjW,UAAUI,aAAaD,EAAOG,EAAKhC,IACrC9C,KAAK,KACJya,EAAKjW,UAAUE,aAAaC,GACzB3E,KAAKqX,GAAO0qB,EAAa1qB,EAAIjZ,UALrB0G,OA6EXqX,UAAWD,EAAQunB,QACnBvwB,MAAM,WACNxS,IAAAoa,cAAC4oB,KAAK,CAAC9iB,MAAO,CAAC+iB,KAAM,YAM7B,OACEjjC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQolB,YACtB5gC,IAAAoa,cAAA,OAAK8F,MAAO,CAACf,YAAa,SAC1Bnf,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,KAAKmF,UAAU,MACjC5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM,oBAAsBxM,MAGhDjE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQolB,YACrB7mB,EAAKrW,KAAK+R,YAAY2Z,oBAAuBpvB,IAAAoa,cAAC4F,IAAM,CACnD1F,QAASA,IAAMinB,GAAcD,GAC7B7lB,UAAWD,EAAQunB,QACnBtoB,QAAQ,YACRjI,MAAM,WACL8uB,GAAc,OAAQ,IAACthC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAOpD6wB,GACCthC,IAAAoa,cAAA,OAAK8F,MAAO,CACVvB,UAAW,OACXpM,WAAY,OACZ0J,QAAS,SAETjc,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6C,IAAS,CACRP,WAAS,EACTta,GAAG,sBACH8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAC9BgK,QAAQ,WACR6D,SA1HwB1U,IAClC63B,EAAW,IAAKD,EAASR,eAAgBp3B,EAAEI,OAAOkO,SA0HxCA,MAAOspB,EAAQR,eACfvlB,UAAWD,EAAQ0nB,cAGrBljC,IAAAoa,cAAA,OAAK8F,MAAO,CAACnF,QAAS,OAAQC,eAAgB,gBAAiB2D,UAAW,SACxE3e,IAAAoa,cAAA,WACApa,IAAAoa,cAACsU,KAAgB,CACbC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAASmY,EAAQP,kBACjB3iB,SA1Ie1U,IACjC63B,EAAW,IAAKD,EAASP,kBAAmBr3B,EAAEI,OAAOqf,WA0InClL,WAAY,CACV,aAAc,wBAIpBjX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAGlCzQ,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC4F,IAAM,CACL1F,QApKM6oB,KACpB,IAAIC,EAAe,IAAK5B,GAGxB4B,EAAalC,UAAiC,IAArBE,EAAU//B,OAAe,EAAI+/B,EAAUA,EAAU//B,OAAS,GAAG6/B,UAAY,EAElGnnB,EAAKjW,UAAUK,aAAaF,EAAOm/B,GAChC9jC,KAAK,KACJmiC,EAAWV,IAEXhnB,EAAKjW,UAAUE,aAAaC,GACzB3E,KAAKqX,GAAO0qB,EAAa1qB,EAAIjZ,UA0JtB+d,UAAWD,EAAQunB,QACnBtoB,QAAQ,YACRjI,MAAM,WACLxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAQnC6wB,GACCthC,IAAAoa,cAAApa,IAAAie,SAAA,KACGmjB,EAAUnc,IAAI,CAACoe,EAAU9d,IAEtBvlB,IAAAoa,cAAApa,IAAAie,SAAA,KACGolB,EAASpC,mBACRjhC,IAAAoa,cAAC8nB,EAAiB,CAChBz6B,IAAK47B,EAASjhC,GACdggC,QAASiB,EACT9d,MAAOA,EACP4c,UACEniC,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,MAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM4yB,EAASrC,qBAKvCqC,EAASpC,mBACTjhC,IAAAoa,cAAC8nB,EAAiB,CAChBz6B,IAAK47B,EAASjhC,GACdggC,QAASiB,EACT9d,MAAOA,EACP4c,UACEniC,IAAAoa,cAAA,KAAGpQ,OAAO,SAASs5B,IAAI,sBAAsB5lB,KAAMoI,GAAgB/L,EAAKpC,WAAY0rB,EAASrC,iBAC3FhhC,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAE1N,MAAO,OAAQ4M,eAAgB,aACxC3E,QAAQ,YACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CACfvF,KAAK,OACLhM,KAAM4yB,EAASrC,yBAanCM,GACAthC,IAAAoa,cAAApa,IAAAie,SAAA,KACGmjB,EAAUnc,IAAIoe,GAEXrjC,IAAAoa,cAAApa,IAAAie,SAAA,KACGolB,EAASpC,mBACRjhC,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,KAAKyF,MAAO,CAACvB,UAAW,SAC1C3e,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM4yB,EAASrC,mBAInCqC,EAASpC,mBACTjhC,IAAAoa,cAAA,KACApQ,OAAO,SACPs5B,IAAI,sBACJ5lB,KAAMoI,GAAgB/L,EAAKpC,WAAY0rB,EAASrC,iBAChDhhC,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAE1N,MAAO,OAAQ4M,eAAgB,aACxC3E,QAAQ,YACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CACfvF,KAAK,OACLhM,KAAM4yB,EAASrC,uBCxRtB,SAASuC,KACtB,MAAMxpB,EAAOkI,qBAAWvI,IAClB,mBAAE1D,EAAkB,kBAAEG,EAAiB,uBAAEkZ,GAC7CtV,EAAKrW,KAAK+R,YAEN+tB,EAAqB,CACzBphC,GAAI,YACJmjB,MAAO,EACPke,SAAU,YACVC,MAAO,CACLthC,GAAI,YACJkyB,KAAM,mBACN1U,UAAW4U,KAITmP,EAAe,CACnBvhC,GAAI,YACJmjB,MAAO,EACPke,SAAU,WACVC,MAAO,CACLthC,GAAI,YACJkyB,KAAM,wBAIJsP,EAA4B,CAChCxhC,GAAI,WACJmjB,MAAO,EACPke,SAAU,qBACVC,MAAO,CACLthC,GAAI,qBACJkyB,KAAM,kCAuBJuP,EAAkB,CACtB,CACEzhC,GAAI,MACJmjB,MAAO,EACPke,SAAU,MACVC,MAAO,CACLthC,GAAI,MACJkyB,KAAM,WAKRne,GACF0tB,EAAgB7qB,KAAKwqB,GAEnBxtB,GACF6tB,EAAgB7qB,KAAK2qB,GAEnBtU,GACFwU,EAAgB7qB,KAAK4qB,GAEvBC,EAAgB7qB,KAxCK,CACnB5W,GAAI,WACJmjB,MAAO,EACPke,SAAU,WACVC,MAAO,CACLthC,GAAI,WACJkyB,KAAM,mBAmCVuP,EAAgB7qB,KAhCC,CACf5W,GAAI,OACJmjB,MAAO,EACPke,SAAU,OACVC,MAAO,CACLthC,GAAI,OACJkyB,KAAM,eA+CV,MAAO,CACLwP,SApBe,CACf,CACE1hC,GAAI,EACJwd,UAAW,EACX1Y,MAAO,sBACPotB,KAAM,mBACNyP,OAAQ,EACRC,QAAQ,GAEV,CACE5hC,GAAI,EACJwd,UAAW,GACX1Y,MAAO,WACPotB,KAAM,sBACNyP,OAAQ,EACRC,QAAQ,IAMVH,mB,0ICnGW,SAASI,GAAY1oB,GAClC,MAAOwX,EAAK4B,GAAUphB,mBAAS,CAC7BnR,GAAI,GACJ6R,MAAO,GACP4gB,YAAa,GACbP,KAAM,MAEF,MAAErwB,GAAUsX,EAalB,OANAxD,oBAAU,KACJ9T,GANN,WACE,IAAIwS,EAAK6pB,GAAQr8B,GACbwS,GAAIke,EAAOle,GAKbytB,IAED,CAACjgC,IAGF8uB,EAAI3wB,IACFpC,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACNkN,UAAU,IACVlC,KAAMqV,EAAIuB,MACVt0B,IAAAoa,cAAC6R,KAAY,CAACla,QAAS/R,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMsiB,EAAI3wB,QCtB5C,SAAS+hC,GAA0B5oB,GAChD,MAAMxB,EAAOkI,qBAAWvI,GACxB,OACE1Z,IAAAoa,cAACgqB,KAAU,CACT3pB,QAAQ,UACR4pB,QAAQ,sBACNC,GACAtkC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACC,IAAU6C,OAAAC,OAAA,CACT3K,MAAM,WACF+xB,uBAAYD,IAChBtkC,IAAAoa,cAACoqB,KAAQ,OAEXxkC,IAAAoa,cAACqqB,KAAOvnB,OAAAC,OAAA,GACFunB,uBAAYJ,GAAW,CAC3BK,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,YAEd7kC,IAAAoa,cAACwR,KAAI,CAAChM,UAAU,OACb7F,EAAKV,cAAc4L,IAAKhE,GACvBjhB,IAAAoa,cAAC6pB,GAAW,CACVx8B,IAAKwZ,EACLhd,MAAOgd,S,2GC3BzB,MAAMrG,GAAYC,YAAYnH,IAAK,CACjCqxB,QAAS,CACPjpB,OAAQ,mBACRiD,OAAQ,KAEVimB,QAAS,CACPzyB,WAAY,QACZ0tB,OAAQ,oBACR9jB,aAAc,EACd8oB,SAAU,SACVlmB,OAAQ,OACRhE,QAAS,OACTE,cAAe,SACfpH,MAAO,QAETiH,KAAM,CACJjH,MAAO,OACPoxB,SAAU,SACVC,UAAW,aACXnmB,OAAQ,QAEV9K,MAAO,CACL2lB,aAAc,oBACd3d,QAAS,OACT8C,OAAQ,IAEVrD,QAAS,CACPqD,OAAQ,QAEVrM,OAAQ,CACNoJ,OAAQ,EACRG,QAAS,OACTzJ,MAAOkB,EAAM9B,QAAQG,QAAQE,MAE/BkzB,OAAQ,MAGK,SAASC,GAAyB7pB,GAC/C,MAAM,QAAEG,EAAO,MAAEzH,EAAK,SAAEoxB,EAAQ,OAAEtmB,EAAM,KAAEvC,EAAI,UAAE8oB,EAAS,cAAEC,GACzDhqB,GACK0H,EAAMyZ,GAAWnpB,oBAAS,GAC3BiI,EAAUZ,KAShB,OACE5a,IAAAoa,cAAA,WACEqB,UAAWD,EAAQupB,QACnB7kB,MAAO,CAAEnB,OAAQA,GAAkB,MACnC/e,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQwpB,SACtBhlC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACpBwqB,EAIE,KAHFtlC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQvH,OACtBjU,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,MAAMxG,IAI9BjU,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQE,SAAUA,IAGpC1b,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQgqB,QACtBxlC,IAAAoa,cAACqrB,GAAmB,CAClBxiB,KAAMA,EACNyiB,YAtBUA,KAClBhJ,GAAQ,IAsBAzoB,MAAOA,EACPyH,QAASA,EACT4pB,UAAWA,EACXC,cAAeA,OAQpB,SAASE,GAAoBlqB,GAClC,MAAM,KAAE0H,EAAI,YAAEyiB,EAAW,MAAEzxB,EAAK,QAAEyH,EAAO,UAAE4pB,EAAS,cAAEC,GAAkBhqB,EAClEC,EAAUZ,KAChB,OACE5a,IAAAoa,cAAA,WACEpa,IAAAoa,cAACqK,KAAM,CACLtC,QAASujB,EACTjqB,UAAWD,EAAQ2pB,OACnBzgB,kBAAgB,mBAChBzB,KAAMA,GACJqiB,EAME,KALFtlC,IAAAoa,cAACurB,KAAW,CACVvjC,GAAG,mBACH+f,QAASujB,GACRzxB,GAGLjU,IAAAoa,cAACuK,KAAa,CAACihB,UAAQ,GAAElqB,GACxB6pB,EACCvlC,IAAAoa,cAACuK,KAAa,CAACihB,UAAQ,GAAEL,GACvB,KACJvlC,IAAAoa,cAACyrB,KAAa,KACZ7lC,IAAAoa,cAAC4F,IAAM,CACL4e,WAAS,EACTtkB,QAASorB,EACTlzB,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cC/G5B,SAASq1B,KACd,MAAM/rB,EAAOkI,qBAAWvI,GACxB,IAAI7c,EAAW2qB,cACXpP,EAAU2tB,cAEd,MACMC,EAAkB,CACtB,QACA,YACA,WACA,cACA,OACA,QACA,WACA,QAEIC,EAAgBrpC,OAAOgc,WAAW,eAADha,OACtBmb,EAAKrG,MAAMmtB,YAAYqF,OAAOzc,GAAE,QAC/C3Q,QACIqtB,EACJvpC,OAAO8B,aAAaC,QAAQ,yBAA2B,OAGnDwH,EAAY4T,EAAKrW,KAAKoI,iBAAiB3F,UACvCsC,EAAWsR,EAAKrW,KAAKgG,cAEpB2J,EAAeC,GAAoBC,oBAAS,IAC5CC,EAAWC,GAAgBF,oBAAS,IACpC6yB,EAASC,GAAc9yB,oBAAS,IAChC+yB,EAAcC,GAAoBhzB,mBACvC0yB,EAAgBE,EAAqB,SAEhCK,EAAWC,GAAgBlzB,wBAASjS,IACpColC,EAAcC,GAAoBpzB,oBAAS,IAC3CqzB,EAAaC,GAAmBtzB,oBAAS,IAQzCuzB,EAAkBC,GAAuBxzB,mBAAS,KASlDyzB,EAAqBC,GAA0B1zB,mBAPxB,CAC5BtL,MAAO,GACPi/B,UAAW,GACXC,YAAa,GACbC,SAAU,GACVC,KAAM,MAKDC,EAAOC,GAAYh0B,mBAAS,KAC5Bi0B,EAAaC,GAAkBl0B,mBAAS,YACxCm0B,EAAUC,GAAgBp0B,mBAC/BrQ,KAAKsV,MAAM9Z,aAAaC,QAAQ,cAAgB,OAE3CipC,EAAWC,GAAgBt0B,mBAAS,IAErCu0B,EAAuD,aAA3ClrC,OAAOC,SAAS4rB,SAAS6O,MAAM,KAAK,GAMhDyQ,EAAeL,IACdA,IAGLhpC,aAAaa,QAAQ,WAAY2D,KAAKC,UAAUukC,IAChDC,EAAaD,KAwFf,MAAMM,EAAiB1uB,GACdA,EAAI2uB,KAAK,CAACrK,EAAGsK,IACdtK,EAAEntB,KAAOy3B,EAAEz3B,KAAa,EACxBmtB,EAAEntB,KAAOy3B,EAAEz3B,MAAc,EACtB,GAkGX,SAASkX,IAAoE,IAA7D+N,EAAOt0B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG+mC,IAAoBziC,EAAUtE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAG+mB,EAAQ/mB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACvEqS,GAAa,GAEb,MAAM20B,EAAWN,EACb/tB,EAAKjW,UAAU6C,sBACfoT,EAAKjW,UAAUsF,eAEnBg/B,EAAS1S,GACNp2B,KAAM9B,IACL,GAAwB,MAApBA,EAASC,OAAgB,CAC3B4oC,GAAY7oC,EAASE,KAAK2qC,YAE1B,MAAMC,EAAW9qC,EAASE,KAAK4qC,SAASrjB,IAAKsE,IACpC,IACFA,EACHzc,SAAUyc,EAAKgf,SAIf/qC,EAASE,KAAKgI,WAAa,EAC7BqhC,EAAoB,IACfvpC,EAASE,KACZ4qC,SAAU,IACLxB,EAAiBwB,YACjBA,KAIPvB,EAAoB,IACfvpC,EAASE,KACZ4qC,SAAU,IACLA,GAEL5iC,WAAYA,IAIhBuhC,EAAuBzpC,EAASE,KAAKspC,qBAErC1zB,GAAiB,GACjBk1B,EAAUhrC,EAASE,MAEF,IAAbyqB,GACF3O,SACGivB,cAAc,qBACdC,WAAWvgB,SAAS,EAAGA,QAG5BtpB,QAAQC,IAAI,UAAWtB,EAASmrC,cAGnCjpC,MAAOkK,IACN/K,QAAQC,IAAI,UAAW8K,EAAEgN,cAE1BI,QAAQ,KACPvD,GAAa,KA+DnB,SAAS00B,IACP,MAAO,CACLplC,OAAQgX,EAAKrW,KAAKX,OAClByG,WAAYrD,EACZ6gC,oBAAqB,CACnB/+B,MAAO,GACPi/B,UAAW,GACXC,YAAa,GACbC,SAAU,GACVC,KAAM,IAER39B,aAAcjB,EACd4f,SAnYa,GAoYb3iB,WAAY,EACZ4hC,QACAE,cACAoB,qBAAqB,EACrBniC,WAAYqhC,EAAYJ,EAASjhC,gBAAanF,EAC9ColC,eACAE,cACAiC,UAAU,GAcd,SAASL,EAAUM,GACjB,IAAIvgB,EAAY,IAAIb,gBAEpBxK,OAAO/P,QAAQ27B,EAAI9B,qBAAqBzY,QAASyP,IAC/C,IAAIv2B,EAAMu2B,EAAM,GACZ1kB,EAAM0kB,EAAM,GACZ1kB,EAAIjY,OAAS,GACfknB,EAAUxe,OAAOtC,EAAK6R,KAIR,KAAdwvB,EAAIxB,OACN/e,EAAUxe,OAAO,QAAS++B,EAAIxB,OAGhC/e,EAAU0f,OAEV,IAAIzf,EAAc,IAAMD,EAAU3R,WACd,MAAhB4R,EACFpQ,EAAQyK,QAAQ,CACd4F,SAAU5rB,EAAS4rB,SACnBd,OAAQa,EACRE,MAAO,CAAEC,UAAU,KAGrBvQ,EAAQyK,QAAQ,CACd4F,SAAU5rB,EAAS4rB,SACnBd,OAAQ,GACRe,MAAO,CAAEC,UAAU,KAuDzB,MAAO,CACL4e,WACA/O,KAvaF,WACE,IAAKryB,EACH,OAGGqgC,GA+WLzsB,EAAKjW,UACF4K,kBAAkB,CACjBlF,WAAYrD,EACZuD,aAAcjB,IAEfnJ,KAAMqX,IACc,MAAfA,EAAIlZ,QACNgpC,EAAa9vB,EAAIjZ,QAGpBgC,MAAMb,QAAQC,KApXjB,IAAIiqC,EAuXN,WACE,IAAIC,EAAS,GASb,OARmB,IAAIthB,gBAAgB9qB,OAAOC,SAAS8qB,QAC1C4G,QAAQ,CAACrW,EAAOzQ,KAC3BA,EAAMwhC,UAAUxhC,IACsB,IAAlCu+B,EAAgB7I,QAAQ11B,KAC1ByQ,EAAQ+wB,UAAU/wB,GAClB8wB,EAAOvhC,GAAOyQ,EAAMof,MAAM,QAGvB0R,EAjY2BE,GAClC,GAAIhsB,OAAO4gB,KAAKiL,GAA6B1nC,OAAS,EAAG,CACvD,IAAIq0B,EAAU,IACTyS,IACHb,MAAOyB,EAA4BI,eAAe,SAC9CJ,EAA4BzB,MAAM,GAClC,GACJN,oBAAqB,CACnB/+B,MAAO8gC,EAA4BI,eAAe,SAC9CJ,EAA4B9gC,MAC5B,GACJi/B,UAAW6B,EAA4BI,eAAe,aAClDJ,EAA4B7B,UAC5B,GACFC,YAAa4B,EAA4BI,eACzC,eAEEJ,EAA4B5B,YAC5B,GACFC,SAAU2B,EAA4BI,eACtC,YAEEJ,EAA4B3B,SAC5B,GACJC,KAAM0B,EAA4BI,eAAe,QAC7CJ,EAA4B1B,KAC5B,IAENhf,SAAU0gB,EAA4BI,eAAe,QA7G1C,GA8GPJ,EAA4Bx+B,KAAK,GA9G1B,IAkHbg9B,EACEwB,EAA4BI,eAAe,SACvCJ,EAA4BzB,MAAM,GAClC,IAGN3f,EACE+N,EACAqT,EAA4BI,eAAe,QACD,EAAtCJ,EAA4Bx+B,KAAK,GACjC,EACJw+B,EAA4BI,eAAe,YACG,EAA1CJ,EAA4B5gB,SAAS,GACrC,QAGNR,KA6WFrhB,aAzWF,WAEOshC,EAAUvmC,QACb0Y,EAAKjW,UACFwC,aAAayT,EAAKrW,KAAKoI,iBAAiB3F,WACxC7G,KAAMqX,IACU,IAADyyB,EAAVzyB,EAAIjZ,OACNmqC,EAAaG,EAAcrxB,EAAIjZ,OAC/BqqC,GACU,QAARqB,EAAAzyB,EAAIjZ,YAAI,IAAA0rC,OAAA,EAARA,EAAUjlB,KACPC,GACCA,EAAG3d,aACHvD,KAAKsV,MAAM9Z,aAAaC,QAAQ,aAAe,MAC5C8H,cACF,QA4Vf+M,YACAH,gBACAyzB,mBACAE,sBACAM,QACAE,cACA6B,iBA3TF,SAA0B5a,EAAO6a,GAE/B,IAAIC,EAAuB,IAAKvC,GAChCuC,EAAqB9a,GAiNvB,SAAsC+a,EAAOtxB,GAC3C,IAAKA,EAAM7W,OACT,MAAO,GAGT,OAAiC,IAA1BmoC,EAAMrM,QAAQjlB,GACjB,IAAIsxB,EAAOtxB,GACXsxB,EAAMxqB,OAAQ6J,GAAMA,IAAM3Q,GAxNAuxB,CAC5BF,EAAqB9a,IAAU,GAC/B6a,GAEFrC,EAAuBsC,GAQvB5hB,EALc,IACTwgB,IACHnB,oBAAqBuC,EACrBjC,WA+SFoC,wBA1SF,SAAiCpC,GAC/BC,EAASD,GAGT3f,EADc,IAAKwgB,IAAoBnB,sBAAqBM,MAAOA,KAwSnEqC,2BA1LF,WACE,IAAItf,EAAQ,EASZ,OARAnN,OAAOgpB,OAAOc,GAAqBzY,QAChCE,GAAWpE,GAASoE,EAAMptB,QAGhB,IAATimC,GACFjd,IAGKA,GAiLPuf,mBArSF,SAA4B1xB,GAC1BuvB,EAAevvB,GAMfyP,EALc,IACTwgB,IACHnB,oBAAqBA,EACrBQ,YAAatvB,KAiSf2xB,UAvRF,WACE,GAAIr2B,IAAc4yB,EAChB,OAUFze,EANc,IACTwgB,IACHnB,sBACAM,QACA5hC,WAAYohC,EAAiBphC,WAAa,KA8Q5C2D,YAzQF,SAAqBkN,GACnBwD,EAAKjW,UAAUuF,YAAY,IAAI8+B,IAAoBnB,sBAAqBM,UACrEhoC,KAAK9B,IACoB,MAApBA,EAASC,OACX8Y,EAAS/Y,IAETqB,QAAQC,IAAI,UAAWtB,EAASmrC,YAChCpyB,OAASjV,MAGZ5B,MAAOkK,IACN/K,QAAQC,IAAI,UAAW8K,EAAEgN,eA+P7BwvB,UACA0D,MA/RF,WACEvC,EAAS,IACT5f,EAAO,IAAKwgB,IAAoBb,MAAO,MA8RvC/9B,eAnLF,SAAwBsD,GAEtB,OADA4G,GAAa,GACNsG,EAAKjW,UACTyF,eAAepD,EAAW0G,EAAQpE,EAAUsR,EAAKrW,KAAKX,QACtDzD,KAAMqX,GACc,MAAfA,EAAIlZ,OACCkZ,EAAIjZ,KAEJ,MAGVgC,MAAOkK,OACPoN,QAAQ,KACPvD,GAAa,MAuKjBs2B,iBAlJF,SAA0BC,GACxB,OAAOjwB,EAAKjW,UACTsF,eAAe,IAAK++B,IAAoB8B,0BAA2BD,IACnE1qC,KAAMqX,GACEA,IA+IXzM,qBApKF,SAA8B2C,GAE5B,OADA4G,GAAa,GACNsG,EAAKjW,UACToG,qBAAqB/D,EAAW0G,EAAQpE,GACxCnJ,KAAMqX,GACc,MAAfA,EAAIlZ,OACCkZ,EAAIjZ,KAEJ,MAGVgC,MAAOkK,OACPoN,QAAQ,KACPvD,GAAa,MAwJjB6yB,eACA4D,gBAneuBC,IACvB5D,EAAiB4D,GACjBvtC,OAAO8B,aAAaa,QAAQ,uBAAwB4qC,IAkepD3D,YACAkB,WACAK,cACAH,YACAC,eACAuC,cA9coBA,KACpBrD,EAAoB,IAAKD,EAAkBwB,SAAU,MA8crD5B,eACAE,cACAyD,YAtDkBA,KAClB,GAAyB,mBAArBxtC,EAAS4rB,SAA+B,CAC1C,IAAIle,EAAOu8B,EAAiBphC,WACxB6iB,EAAY,IAAIb,gBAAgB7qB,EAAS8qB,QACzC2iB,EACF9wB,SAASivB,cAAc,qBAAqBC,WAAW6B,UACzD1rC,QAAQC,IAAIwrC,GAEZ/hB,EAAUxe,OAAO,OAAQQ,GACzBge,EAAUxe,OAAO,WAAYugC,GAE7B/hB,EAAU0f,OAEV,IAAIzf,EAAc,IAAMD,EAAU3R,WAGpCwB,EAAQyK,QAAQ,CACd4F,SAAU5rB,EAAS4rB,SACnBd,OAAQa,EACRE,MAAO,CAAEC,UAAU,MAoCrB6hB,qBAzW2BA,CAAC/b,EAAO6a,KACnC,IAAI5T,EAAU,IACTyS,IACHnB,oBAAqB,IAAKA,GAC1BM,SAGY,aAAV7Y,GACFoY,GAAgB,GAChBF,EAAiB2C,GAEjB5T,EAAQgR,aAAe4C,EACvB5T,EAAQkR,aAAc,GACH,YAAVnY,IACTkY,GAAiB,GACjBE,EAAgByC,GAEhB5T,EAAQkR,YAAc0C,EACtB5T,EAAQgR,cAAe,GAGzB/e,EAAO+N,KC9LJ,MAAM+U,GAAkB9wB,wBAAc,MAE9B,SAAS+wB,GAAgB7wB,GAAgB,IAAf,SAAEC,GAAUD,EACnD,MAAMyuB,EAAWxC,KAEjB,OACE9lC,IAAAoa,cAACqwB,GAAgB9vB,SAAQ,CAACzC,MAAOowB,GAC9BxuB,G,yBCPQ,SAAS6wB,GAAgBpvB,GACtC,MAAM,QAAEG,EAAO,OAAEkvB,EAAM,QAAExE,EAAO,UAAEyE,EAAY,KAAM9tB,GAASxB,EAE7D,OACEvb,IAAAoa,cAAC0wB,KAAc5tB,OAAAC,OAAA,CACb0tB,UAAWA,EACXE,SAAUH,EACVxE,QAASA,EACT4E,UAAW,IACXC,aAAa,GACTluB,GACHrB,GCAP,MAAMd,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJiE,OAAQ,QAEVoN,UAAW,GAGX+e,KAAM,CACJnsB,OAAQ,IACRosB,UAAW,UAEbz4B,OAAQ,CACNqI,QAAS,eACT8K,MAAO,QACP1G,YAAa,OACbR,UAAW,OACX,CAACjL,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9BjtB,MAAO,QAGXu3B,SAAU,CACRpP,WAAY,MACZH,cAAe,OAEjBwP,UAAW,CACT,UAAW,CACTpiB,OAAQ,UACRxK,gBAAiB,WAEnB,gBAAmB,WAErB6sB,UAAW,CACT,UAAW,CACTriB,OAAQ,UACRxK,gBAAiB,WAEnB,gBAAmB,WAErB8sB,UAAW,CACT,UAAW,CACTtiB,OAAQ,UACRxK,gBAAiB,WAEnB,gBAAmB,WAErB+sB,YAAa,CACX,CAAC93B,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9BjtB,MAAO,WAKE,SAAS43B,GAAkBlwB,GACxC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBgyB,EAAgBzpB,qBAAWwoB,KAC1BhrB,EAAKksB,GAAUp4B,mBAAS,KACxBq4B,EAAWC,GAAgBt4B,mBAAS,KACpC4S,EAASC,GAAc7S,oBAAS,IAChC7N,EAAYomC,GAAiBv4B,mBAAS,IACtC6yB,EAASC,GAAc9yB,oBAAS,IAChCw4B,EAAeC,GAAoBz4B,oBAAS,IAG7C,IAAEN,GAAQF,GAGV,YAAE2yB,EAAW,QAAEuG,GAAY1wB,EA4BjC,SAAS2wB,IAGP,MAAMC,EAAgBJ,EACtB,GAAI5lB,EACF,OAEFC,GAAW,GACXulB,EAAO,IACPK,GAAiB,GACjB,MAAM,yBACJl2B,EAAwB,wBACxBC,EAAuB,uBACvBtQ,GACEsU,EAAKrW,KAAK+R,YACdsE,EAAKjW,UACFwB,iBACCwQ,EACAC,EACAtQ,EACAC,EAAa,EArDI,IAwDlBpG,KAAMqX,IAAS,IAADy1B,EAAAC,EACMjD,EAEZkD,EAFHH,EACFN,EAAa,IAAID,KAAsB,QAAXxC,EAAGzyB,EAAIjZ,YAAI,IAAA0rC,OAAA,EAARA,EAAUwC,YAEzCC,EAAqB,QAATS,EAAC31B,EAAIjZ,YAAI,IAAA4uC,OAAA,EAARA,EAAUV,WAEzBE,EAAsB,QAATM,EAACz1B,EAAIjZ,YAAI,IAAA0uC,OAAA,EAARA,EAAU1mC,YACxB2gC,IAAoB,QAATgG,EAAC11B,EAAIjZ,YAAI,IAAA2uC,OAAA,EAARA,EAAUhE,aACtBjiB,GAAW,KAEZ1mB,MAAOrC,IACNwB,QAAQC,IAAIzB,KAIlB,SAASkvC,EAAYr0B,GACfwzB,GACFA,EAActB,gBAEhBrwB,EAAKrW,KAAK2T,YAAYa,GACtBwtB,GAAeA,IAqBjB,OAlBA3tB,oBAAU,KACR,MAAM,oBAAE3B,GAAwB2D,EAAKrW,KACjC0S,GAAuBnD,GACzBi5B,KAED,CAACzsB,EAAK1F,EAAKrW,KAAK0S,sBAEnB2B,oBAAU,KAER,GAAIk0B,EAAS,CAEX,MAAMnqB,EAAQtI,SAASslB,eAAe0N,OAAOP,IACzCnqB,GACFA,EAAM2qB,UAGT,IAGDzsC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MAEpB9a,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,SACVxX,UAAWD,EAAQ2Q,WACnBnsB,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,GAAIlL,MAAO,SAC/B7T,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTjM,MAAO,CAAEjE,QAAS,sBAClBjc,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,IAAE,GACFxpB,IAAAoa,cAAC6C,IAAS,CACR7a,GAAG,sBACH8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAC9BgK,QAAQ,WACR6D,SA7GlB,SAAsB1U,GACpBoiC,GAAiB,GACjB,MAAMvsB,EAAM7V,EAAEI,OAAOkO,MACrByzB,EAAOlsB,GACP2G,GAAW,GAEX,MAAM,yBACJtQ,EAAwB,wBACxBC,EAAuB,uBACvBtQ,GACEsU,EAAKrW,KAAK+R,YACdsE,EAAKjW,UACF8B,yBACCkQ,EACAC,EACAtQ,EACAga,EAvBiB,IA0BlBngB,KAAMqX,IACLk1B,EAAgB,OAAHl1B,QAAG,IAAHA,OAAG,EAAHA,EAAKjZ,MAClB0oB,GAAW,KAEZ1mB,MAAM,SAuFO+b,UAAWD,EAAQgwB,YACnBtzB,MAAOuH,EACPnC,WAAY,CACVlb,GAAIoqC,OAAOP,MAGdlyB,EAAKrW,KAAK0S,qBAAuBnD,GAChCjT,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnBF,MAAM,UACNiI,QAAQ,YACRH,QAAS4xB,GACTlsC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAMjCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAA,OACE8F,MAAO,CACLrM,MAAOo4B,EAAU,SAAM3qC,EACvByd,OAAQktB,EAAU,SAAM3qC,GAE1Bma,UAAWD,EAAQ0vB,MAClB/kB,EACCnmB,IAAAoa,cAACuB,IAAc,CACbuE,MAAO,CACLnB,OAAQ,EACRlL,MAAO,MACPiI,OAAQ,OACR6C,UAAW,MAIf3e,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,GAAIjD,OAAQ,KAEnCiwB,EACC/rC,IAAAoa,cAACuwB,GAAe,CACdE,UAAWnlC,EACXqlC,SAAUmB,EACV9F,QAASA,EACT4E,UAAW,GACX0B,WAAW,EACXzB,aAAa,EACbvvB,QACE1b,IAAAoa,cAACwR,KAAI,KACFggB,EAAU3mB,IAAI,CAACsE,EAAMhE,IACpBvlB,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACNjL,IAAK8d,EACLjL,QAASA,IAAMiyB,EAAYhjB,GAC3B9N,UACED,EAAQ,WAAD5c,OAAY2qB,EAAKrU,cACxB,IACAsG,EAAQ4vB,UAEVprC,IAAAoa,cAAC6R,KAAY,CACXla,QAAO,GAAAnT,OAAK2qB,EAAK1Z,YAAW,OAAAjR,OAAM2qB,EAAKpjB,kBAOnDnG,IAAAoa,cAACwR,KAAI,KACFggB,EAAU3mB,IAAI,CAACsE,EAAMhE,IACpBvlB,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACNjL,IAAK8d,EACLjL,QAASA,IAAMiyB,EAAYhjB,GAC3B9N,UACED,EAAQ,WAAD5c,OAAY2qB,EAAKrU,cACxB,IACAsG,EAAQ4vB,UAEVprC,IAAAoa,cAAC6R,KAAY,CACXla,QAAO,GAAAnT,OAAK2qB,EAAK1Z,YAAW,OAAAjR,OAAM2qB,EAAKpjB,qBC/OjE,MAAMyU,GAAYC,YAAYnH,IAAK,CACjCi5B,SAAU,CACRxwB,aAAc,MACd8jB,OAAQ,iBACRze,UAAW,6BAEborB,UAAW,CACT3wB,QAAS,IAEXgO,IAAK,CACHpW,MAAO,OACPynB,UAAW,SACX/c,WAAY,SACZxD,QAAS,OACTC,eAAgB,UAElB6xB,YAAa,CACXh5B,MAAOH,EAAMqI,QAAQ,GACrBgD,OAAQrL,EAAMqI,QAAQ,IAExB+wB,cAAe,CACbjT,SAAU,SAEZnY,UAAW,CACTA,UAAW,qBAEbhP,OAAQ,CACNoJ,OAAQ,EACRG,QAAS,QAEX8wB,mBAAoB,CAClBl5B,MAAO,IACPkL,OAAQ,IACRuc,UAAW,SACXta,OAAQ,GACRvC,gBAAiB,QACjBhB,SAAU,WACV4O,KAAM,OACNlR,IAAK,OACL0D,UAAW,mBACX5C,QAAS,OAIE,SAAS+wB,KACtB,MAAMxxB,EAAUZ,KACVb,EAAOkI,qBAAWvI,IACjB4R,EAAU2hB,GAAejtC,IAAMuT,SAAS,OACxC25B,EAAiBC,GAAsB55B,oBAAS,IAChD65B,EAAiBC,GAAsB95B,oBAAS,IAChD+5B,EAAYC,GAAiBh6B,mBAAS,KACtCi6B,EAAwBC,GAA6Bl6B,oBAAS,GACrE,IAAIm6B,EAAiB3zB,EAAKrW,KAAKqR,YAAY44B,UAAU,EAAG,GAExD,MAIMjI,EAAcA,KAClBuH,EAAY,QAGPW,EAAoBC,GAAyBt6B,oBAAS,GAIvDu6B,EAA4BA,KAChCD,GAAsB,IAUlB5qB,EAAOtmB,QAAQ2uB,GACflpB,EAAK6gB,EAAO,sBAAmB3hB,EAErC,OACEtB,IAAAoa,cAAA,WACEpa,IAAAoa,cAACC,IAAU,CACT0zB,mBAAkB3rC,EAClBkY,QA9BekQ,IACnByiB,EAAYziB,EAAM2C,iBA8BdntB,IAAAoa,cAAC4zB,KAAQ,OAEXhuC,IAAAoa,cAACqqB,KAAO,CACNriC,GAAIA,EACJ6gB,KAAMA,EACNqI,SAAUA,EACVnJ,QAASujB,EACTf,aAAc,CACZC,SAAU,SACVC,WAAY,UAEdC,gBAAiB,CACfF,SAAU,MACVC,WAAY,UAEdppB,UAAWD,EAAQmxB,UACnB3sC,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,SACVgb,QAAQ,SACR1vB,WAAW,SACX9C,UAAWD,EAAQsxB,eACnB9sC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQoxB,WACvC5sC,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,UACVjzB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQoxB,WACvC5sC,IAAAoa,cAAC8zB,KAAM,CAACzyB,UAAWD,EAAQqxB,aACxBa,IAGL1tC,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,YACRyF,MAAO,CAAE1N,MAAO,YACfuH,EAAKrW,KAAKqR,cAGf/U,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,YACRyF,MAAO,CAAE1N,MAAO,YACfuH,EAAKrW,KAAKuT,YAKnBjX,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UACED,EAAQyO,IAAM,IAAMzO,EAAQkG,UAAY,IAAMlG,EAAQoxB,WAEvD7yB,EAAKrW,KAAKoI,iBAAiB3F,UAC3B,MACA4T,EAAKrW,KAAKoI,iBAAiB+D,aAE7BkK,EAAKrW,KAAK0S,oBACTpW,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQkG,WACvC1hB,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnBy7B,UAAWnuC,IAAAoa,cAACg0B,KAAU,MACtB9zB,QAzFwB+zB,KACpCR,GAAsB,IAyFVnxB,WAAS,GACT1c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAGzBzQ,IAAAoa,cAACqrB,GAAmB,CAClBxiB,KAAM2qB,EACNlI,YAAaA,KACXoI,KAEFpyB,QACE1b,IAAAoa,cAACqxB,GAAiB,CAChBQ,SAAO,EACPvG,YAAaA,KACXA,IACAoI,KAEFQ,yBAAyB,IAG7BhJ,WAAS,KAGX,KACJtlC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQkG,WACvC1hB,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnBy7B,UAAWnuC,IAAAoa,cAAC8O,KAAQ,MACpB5O,QAASA,IAAMP,EAAK3B,QAAQY,KAAK,iBACjC0D,WAAS,GACT1c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAG1BsJ,EAAKrW,KAAK+R,YAAY6Z,yBACrBtvB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQkG,WACvC1hB,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnBy7B,UAAWnuC,IAAAoa,cAAC+d,KAAoB,MAChC7d,QAASA,IACPmzB,GAA2BD,GAE7B9wB,WAAS,GACT1c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAI7BzQ,IAAAoa,cAACqK,KAAM,CACLxB,KAAMuqB,EACNrrB,QAASA,IAAMsrB,GAA0B,IACzCztC,IAAAoa,cAACm0B,GAAkB,CACjBpsB,QAASA,IAAMsrB,GAA0B,MAG5C1zB,EAAKrW,KAAK+R,YAAYO,oBACrBhW,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQkG,WACvC1hB,IAAAoa,cAAA,OAAK8F,MAAO,CAAE8b,WAAY,GAAIH,cAAe,KAC1C9hB,EAAKpC,WAAWE,YACf7X,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEpE,OAAQ,IACjBxB,QAASA,IAAM6yB,GAAmB,GAClC1yB,QAAQ,YAAW,gBAGrBza,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEpE,OAAQ,IACjBxB,QAASA,IACPP,EAAKvF,mBAAmBuF,EAAKxF,gBAE/BkG,QAAQ,YAAW,qBAKzBza,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAStP,EAAKpC,WAAWE,WACzByG,SAAUA,KACRvE,EAAKpC,WAAWM,kBACb8B,EAAKpC,WAAWE,eAKzB3Q,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAKtCzQ,IAAAoa,cAACo0B,KAAK,CACJvrB,KAAMiqB,EACN/qB,QAASA,IAAMgrB,GAAmB,IAClCntC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQuxB,oBACtB/sC,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,MAAK,cACzBza,IAAAoa,cAAA,QAAMq0B,SAxLC7kC,IACjB/K,QAAQC,IAAI,cACZ8K,EAAEC,iBACFsjC,GAAmB,GACnBE,GAAmB,KAqLPrtC,IAAAoa,cAAC6C,IAAS,CACR2hB,WAAS,EACT1mB,MAAOo1B,EACPhvB,SAAW1U,GAAM2jC,EAAc3jC,EAAEI,OAAOkO,OACxCuC,QAAQ,aAEVza,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEvB,UAAW,IACpBlE,QAAQ,WACRjI,MAAM,UACNiK,KAAK,UAAS,iBAMrB2wB,GACCptC,IAAAoa,cAAC4H,GAAgB,CACfvR,KAAM68B,EACNnrB,QAASA,KACPkrB,GAAmB,IAErBpqB,MAAM,IAGVjjB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQyO,IAAM,IAAMzO,EAAQkG,WACvC1hB,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnBy7B,UAAWnuC,IAAAoa,cAACs0B,KAAQ,MACpBp0B,QAASA,IAAMP,EAAK9X,SACpBya,WAAS,GACT1c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBASrC,MAAM89B,GAAqB10B,IAAkB,IAAjB,QAAEsI,GAAStI,EACrC,MAAME,EAAOkI,qBAAWvI,IAEjBi1B,EAAWC,GAAgBr7B,oBAAS,IACpC9H,EAAOojC,GAAYt7B,mBAAS,KAC5B9C,EAAMq+B,GAAWv7B,mBAAS,KAC1B9K,EAAU8M,GAAehC,mBAASwG,EAAKrW,KAAK+R,YAAY3N,aACxDinC,EAASC,GAAcz7B,oBAAS,IAChC4S,EAASC,GAAc7S,oBAAS,GACjCqX,EAAkBpU,YAAalV,IAANkV,GAAmBA,EAAEnV,OAAS,IAAM4tC,IAAmBN,GACtF,IAAIM,GAAiB,EAErB,OACEjvC,IAAAoa,cAAA,OAAK8F,MAAO,CAAEjE,QAAS,OAAQpI,MAAO,UACpC7T,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAEoB,aAAc,QACvB7G,QAAQ,MACRza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kCAEzBzQ,IAAAoa,cAACyF,EAAkB,CACjB3H,MAAOzM,EACP6S,SAAW1U,GAAMilC,EAASjlC,EAAEI,OAAOkO,OACnCwE,WAAS,EACTrf,MAAOutB,EAAenf,GACtByU,MAAO,CAAErM,MAAO,OAAQkH,QAAS,QAASuG,aAAc,QACxD7G,QAAQ,WACRvT,MAAM,UAERlH,IAAAoa,cAACyF,EAAkB,CACjB3H,MAAOzH,EACP6N,SAAW1U,GAAMklC,EAAQllC,EAAEI,OAAOkO,OAClCwE,WAAS,EACTrf,MAAOutB,EAAena,GACtByP,MAAO,CAAErM,MAAO,OAAQkH,QAAS,QAASuG,aAAc,QACxD7G,QAAQ,WACRvT,MAAM,SAERlH,IAAAoa,cAAC6Z,GAAiB,CAChBxrB,SAAUA,EACV8M,YAAaA,IAEbw5B,EAiCA/uC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,WACvBt7B,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAEpE,OAAQ,OAAQtJ,MAAO,QAASgS,SAAU,SACnDxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mCAG3BzQ,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEvB,UAAW,OAAQkH,MAAO,SACnCrT,MAAM,UACNiI,QAAQ,YACRH,QAASA,KACP6H,MACC,OA7CPniB,IAAAoa,cAAC4F,IAAM,CACLnD,SAAUsJ,EACVjG,MAAO,CAAEvB,UAAW,OAAQkH,MAAO,SACnCrT,MAAM,UACNiI,QAAQ,YACRH,QAASA,KACH0U,GAAcvjB,IAChB2a,GAAW,GACX6oB,GAAiB,EACjBL,GAAa,GAEb70B,EAAKrY,SACF+B,qBAAqB,CACpBsR,YAAatE,EACbhF,QACAhD,WACAoN,wBAAyBkE,EAAKrW,KAAKoI,iBAAiB3F,UACpDwsB,qBAAsB5Y,EAAKrW,KAAKoI,iBAAiB+D,YACjDq/B,WAAW,EACXnf,YAAahW,EAAKrW,KAAKqR,cAExBzV,KAAMqX,IACLq4B,GAAW,OAGfC,GAAiB,EACjBL,GAAa,MAEd,WA0Bb,SAAS3a,GAAiBvT,GAA6B,IAAD+T,EAAA,IAA3B,SAAEhsB,EAAQ,YAAE8M,GAAamL,EAClD,MAAM3G,EAAOkI,qBAAWvI,IACjBoK,EAAWC,GAAgBxQ,mBAAS,IAgB3CwE,oBAAU,KAbRgC,EAAKjW,UACFyK,eACAjP,KAAMkX,IACY,MAAbA,EAAE/Y,QACJsmB,EAAavN,EAAE9Y,QAGlBgC,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,SAKV,IASH,OAFmE,QAA7Cyd,EAAG3Q,EAAUK,KAAMC,GAAOA,EAAGhiB,KAAOqG,UAAS,IAAAgsB,OAAA,EAA1CA,EAA4CxgB,OAGnEjU,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CAAErM,MAAO,SAChB7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAO4L,EAAU0B,UAAWpB,GAAOA,EAAGhiB,KAAOqG,GAC7C6V,SAbkB1U,IACtB,MAAM2b,EAAQ3b,EAAEI,OAAOkO,MACvB3C,EAAYuO,EAAUyB,GAAOnjB,KAYzB0f,MACE9hB,IAAAoa,cAAC0Z,KAAa,CACZrjB,KAAK,WACLrO,GAAG,yBAGN0hB,EAAUmB,IAAI,CAAChE,EAAG4H,IACjB7oB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKwZ,EAAE7e,GACP8V,MAAO2Q,GACN5H,EAAEhN,UAKT,KC1cN,MAEM2G,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJC,QAAS,OACTyG,UAAW,QAEb2tB,QAAS,CACP3P,YAAa,GACbC,aAAc,IAEhB2P,KAAM,CACJljB,SAAU,GAEZ5Z,OAAQ,CACN0O,OAAQtN,EAAMsN,OAAOquB,OAAS,EAC9B7jB,WAAY9X,EAAM47B,YAAYrxC,OAAO,CAAC,QAAS,UAAW,CACxDsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvCjxB,gBAAiB/K,EAAM9B,QAAQU,OAAOC,WACtCC,MAAOkB,EAAM9B,QAAQU,OAAOE,MAC5BgP,UAAW,QAEbmuB,YAAa,CACXvc,WAzBgB,IA0BhBvf,MAAM,eAADjV,OA1BW,IA0BiB,OACjC4sB,WAAY9X,EAAM47B,YAAYrxC,OAAO,CAAC,QAAS,UAAW,CACxDsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASG,kBAGzCC,eAAgB,CACd90B,QAAS,QAEX+0B,WAAY,CACV1c,WAAY,EACZjU,YAAa,GAEb,CAACzL,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5B5wB,YAAa,KAGjBlL,MAAO,CACL8G,QAAS,OACTi1B,cAAe,SACf,CAACt8B,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bh1B,QAAS,iBAGbk1B,QAAS,CACPD,cAAe,SACfx9B,MAAO,MACPuI,QAAS,eACTqY,WAAY,GAEd8c,IAAK,CACH1Q,YAAa,EACbhb,SAAU,GACV4b,WAAY,IACZ5tB,MAAO,MACPqB,MAAO,kBAsFIs8B,OAlFf,SAAgB50B,GACd,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBZ,EAAUs3B,KAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAClD33B,EAAU2tB,cAEVsK,EAAY,GAAAzxC,OAAMmb,EAAKrW,KAAKoI,iBAAiB3F,UAAS,OAAAvH,OAAMmb,EAAKrW,KAAKoI,iBAAiB+D,YAAW,MAAAjR,OAAKmb,EAAKrW,KAAKoI,iBAAiBgE,SAAQ,KAC1IwgC,EAAmBv2B,EAAKrW,KAAKoI,iBAAiB3F,UAClDkqC,EAEArwC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAUzB,OACEzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACm2B,KAAM,CACL9yB,SAAS,QACThC,UAAW2B,IAAW5B,EAAQlJ,OAAQ,CACpC,CAACkJ,EAAQm0B,aAAc51B,EAAKtF,YAAcqE,KAE5C9Y,IAAAoa,cAACo2B,KAAO,CAAC/0B,UAAWD,EAAQ2zB,UACxBp1B,EAAKtF,YACLzU,IAAAoa,cAACC,IAAU,CACToB,UAAWD,EAAQs0B,WACnBt9B,MAAM,UACN+H,aAAW,cACXD,QAASA,IAAMP,EAAKN,cAAcM,EAAKtF,aACvCzU,IAAAoa,cAACq2B,KAAQ,OAGbzwC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ00B,KArBxB,IAwBAlwC,IAAAoa,cAAA,OAAK8F,MAAO,CAAErM,MAAO,OAAQynB,UAAW,WACtCt7B,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQvH,MACnBwG,QAAQ,KACRjI,MAAM,UACNk+B,QAAM,GACLJ,GAEFv2B,EAAKrW,KAAKoI,iBAAiBmkC,SAC1BjwC,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQy0B,QACnBx1B,QAAQ,KACRi2B,QAAM,GACN1wC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAK7BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4zB,OACxBpvC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQq0B,gBAErBt0B,EAAMzB,SAGNC,EAAKV,cAAchY,OAAS,GAAKrB,IAAAoa,cAAC+pB,GAAyB,OAI9DnkC,IAAAoa,cAACC,IAAU,KACTra,IAAAoa,cAACu2B,KAAQ,CACPr2B,QAASA,IACPlC,EAAQY,KAAK,IAAMpc,OAAOC,SAAS4rB,SAAS6O,MAAM,KAAK,OAI7Dt3B,IAAAoa,cAAC4yB,GAAS,U,ggBCjEL,OA9DEv8B,IACf,GAAIA,EAAM,CAER,OADaA,EAAKmgC,eAEhB,IAAK,WACH,OAAO5wC,IAAAoa,cAACy2B,KAAgB,MAC1B,IAAK,OACH,OAAO7wC,IAAAoa,cAAC02B,KAAI,MACd,IAAK,gBACH,OAAO9wC,IAAAoa,cAAC22B,KAAS,MACnB,IAAK,QACH,OAAO/wC,IAAAoa,cAAC42B,KAAK,MACf,IAAK,SACH,OAAOhxC,IAAAoa,cAAC62B,KAAM,MAChB,IAAK,WACH,OAAOjxC,IAAAoa,cAAC82B,KAAI,MACd,IAAK,WACH,OAAOlxC,IAAAoa,cAAC+2B,KAAO,MACjB,IAAK,UACH,OAAOnxC,IAAAoa,cAACg3B,KAAO,MACjB,IAAK,QACH,OAAOpxC,IAAAoa,cAACi3B,KAAK,MACf,IAAK,UACH,OAAOrxC,IAAAoa,cAACk3B,KAAO,MACjB,IAAK,SACH,OAAOtxC,IAAAoa,cAACwU,KAAM,MAChB,IAAK,SACH,OAAO5uB,IAAAoa,cAACm3B,KAAM,MAChB,IAAK,OACH,OAAOvxC,IAAAoa,cAACo3B,IAAI,MACd,IAAK,WACH,OAAOxxC,IAAAoa,cAAC4zB,KAAQ,MAClB,IAAK,aACH,OAAOhuC,IAAAoa,cAACq3B,KAAU,MACpB,IAAK,SACH,OAAOzxC,IAAAoa,cAACs3B,KAAM,MAChB,IAAK,WACH,OAAO1xC,IAAAoa,cAACu3B,KAAQ,MAClB,IAAK,aACH,OAAO3xC,IAAAoa,cAACw3B,KAAU,MACpB,IAAK,OACH,OAAO5xC,IAAAoa,cAACy3B,KAAI,MACd,IAAK,YACH,OAAO7xC,IAAAoa,cAAC03B,KAAS,MACnB,IAAK,YACH,OAAO9xC,IAAAoa,cAAC23B,KAAS,MACnB,IAAK,MACH,OAAO/xC,IAAAoa,cAAC43B,KAAG,MACb,IAAK,gBACH,OAAOhyC,IAAAoa,cAAC63B,KAAkB,MAC5B,IAAK,gBACH,OAAOjyC,IAAAoa,cAAC83B,KAAS,MACnB,IAAK,YACH,OAAOlyC,IAAAoa,cAAC+3B,KAAqB,MAC/B,IAAK,iBACH,OAAOnyC,IAAAoa,cAACg4B,KAAkB,MAC5B,QACE,OAAOpyC,IAAAoa,cAACi4B,KAAO,SChFvB,MAAMz3B,GAAYC,YAAYnH,IAAK,CACjC8I,KAAM,CACJqd,SAAU,GACVzG,WAAY,MAID,SAASkf,GAAQ/2B,GAC9B,MAAMC,EAAUZ,KAEhB,OACE5a,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACNjL,IAAK8T,EAAMgK,MACXjL,QAASiB,EAAMpB,OACf+I,SAAU3H,EAAM2H,UAChBljB,IAAAoa,cAACm4B,KAAY,CAAC92B,UAAWD,EAAQgB,MAC9Bg2B,GAAmBj3B,EAAMnZ,KAE5BpC,IAAAoa,cAAC6R,KAAY,CAACla,QAASwJ,EAAM6M,Q,cClBpB,SAASqqB,GAAUl3B,GAChC,MAAM,YAAEm3B,EAAc,IAAG,UAAE/zB,EAAY,GAAE,YAAEg0B,EAAc,IAAOp3B,EAChE,IAAIq3B,EAASF,EACTG,EAAel0B,EACfm0B,EAAoBH,EACxB,MA4BMn3B,EA5BYX,YAAYnH,IAAK,CACjC27B,OAAQ,CACNx7B,MAAOi/B,EACPC,WAAY,EACZC,WAAY,UAEdC,YAAa,CACXp/B,MAAOi/B,GAETI,WAAY,CACVr/B,MAAO++B,EACPj0B,UAAWk0B,EACXrnB,WAAY9X,EAAM47B,YAAYrxC,OAAO,QAAS,CAC5CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASG,kBAGzCuD,YAAa,CACX3nB,WAAY9X,EAAM47B,YAAYrxC,OAAO,QAAS,CAC5CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvC0D,UAAW,SACXv/B,MAAOi/B,EACPn0B,UAAWk0B,KAICj4B,GACVb,EAAOkI,qBAAWvI,GAGxB,OAFgB02B,aAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAwBtD/vC,IAAAoa,cAACi5B,KAAM,CACL54B,QAAQ,YACRgB,UAAW2B,IAAW5B,EAAQ6zB,OAAQ,CACpC,CAAC7zB,EAAQ03B,YAAa33B,EAAM0H,KAC5B,CAACzH,EAAQ23B,cAAe53B,EAAM0H,OAEhCzH,QAAS,CACP1I,MAAOsK,IAAW,CAChB,CAAC5B,EAAQ03B,YAAa33B,EAAM0H,KAC5B,CAACzH,EAAQ23B,cAAe53B,EAAM0H,QAGlCA,KAAM1H,EAAM0H,MACX1H,EAAMzB,UAjCP9Z,IAAAoa,cAACi5B,KAAM,CACL54B,QAAQ,YACRgB,UAAW2B,IAAW5B,EAAQ6zB,OAAQ,CACpC,CAAC7zB,EAAQ03B,YAAa33B,EAAM0H,KAC5B,CAACzH,EAAQ23B,cAAe53B,EAAM0H,OAEhCzH,QAAS,CACP1I,MAAOsK,IAAW,CAChB,CAAC5B,EAAQ03B,YAAa33B,EAAM0H,KAC5B,CAACzH,EAAQ23B,cAAe53B,EAAM0H,QAGlCA,KAAM1H,EAAM0H,KACZd,QAAS5G,EAAM+3B,MACd/3B,EAAMzB,UC/Cf,MAEMc,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJC,QAAS,OACTyG,UAAW,QAEb4tB,KAAM,CACJljB,SAAU,GAEZqnB,WAAY,CACVt3B,QAAS,GAEX6zB,WAAY,CACV1c,WAAY,EACZjU,YAAa,IAEfq0B,KAAM,CACJz4B,QAAS,QAEXs0B,OAAQ,CACNx7B,MArBgB,IAsBhBk/B,WAAY,EACZC,WAAY,UAEdC,YAAa,CACXp/B,MA1BgB,KA4BlBq/B,WAAY,CACVr/B,MA7BgB,IA8BhB2X,WAAY9X,EAAM47B,YAAYrxC,OAAO,QAAS,CAC5CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASG,kBAGzCuD,YAAa,CACX3nB,WAAY9X,EAAM47B,YAAYrxC,OAAO,QAAS,CAC5CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvC0D,UAAW,SACXv/B,MAAOH,EAAMqI,QAAQ,GAAK,EAC1B,CAACrI,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bl8B,MAAOH,EAAMqI,QAAQ,GAAK,IAG9BozB,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZtC,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBxnB,OAAQ,CACN,SAAY,WACZ,aAAgBjU,EAAM+/B,MAAMt3B,aAC5B,gBAAmBu3B,gBAAKhgC,EAAM9B,QAAQ+hC,OAAOC,MAAO,KACpD,UAAW,CACTn1B,gBAAiBi1B,gBAAKhgC,EAAM9B,QAAQ+hC,OAAOC,MAAO,MAEpD,YAAelgC,EAAMqI,QAAQ,GAC7B,WAAc,EACd,MAAS,OACT,CAACrI,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5B3c,WAAY1f,EAAMqI,QAAQ,GAC1BlI,MAAO,SAGXggC,WAAY,CACVhgC,MAAOH,EAAMqI,QAAQ,GACrBgD,OAAQ,OACRtB,SAAU,WACVgW,cAAe,OACf1Y,QAAS,OACTwD,WAAY,SACZvD,eAAgB,UAElB84B,UAAW,CACTthC,MAAO,UACPqB,MAAO,QAETkgC,WAAY,CACV/X,WAAYtoB,EAAMqI,QAAQ,GAC1B0jB,aAAc/rB,EAAMqI,QAAQ,GAC5B8f,cAAenoB,EAAMqI,QAAQ,GAC7ByjB,YAAa9rB,EAAMqI,QAAQ,IAC3ByP,WAAY9X,EAAM47B,YAAYrxC,OAAO,SACrC4V,MAAO,OACP,CAACH,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bl8B,MAAO,MAGX6H,QAAS,CACPwQ,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,IAEzBi4B,UAAW,CACT5gB,WAAY,KAEdtU,KAAM,CACJ/D,QAAS,eACTlH,MAAO,GACPkL,OAAQ,GACR8G,MAAO,OACPuN,WAAY,GACZnK,OAAQ,UAER,CAACvV,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bl8B,MAAO,GACPkL,OAAQ,GACRqU,WAAY,QAKH,SAAS6gB,GAAiB14B,GACvC,MAAMC,EAAUZ,MACV,WAAEs5B,GAAe34B,EACjBxB,EAAOkI,qBAAWvI,GAClBy6B,EAAgB7f,GAASva,EAAK3B,QAAQvb,SAAS4rB,WAAa6L,EAAO,KAEzE,SAAkBA,GAChBva,EAAK3B,QAAQY,KAAKsb,GAH4D8f,CAAS9f,GAMzF,OACEt0B,IAAAoa,cAACq4B,GAAS,CACRj3B,QAASA,EACTyH,KAAMlJ,EAAKtF,WACXkK,UAAW,EACXg0B,YAAa,GACbD,YAAa,KACb1yC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2zB,SACtBnvC,IAAAoa,cAAA,OACEE,QAASA,IAAMP,EAAK3B,QAAQY,KAAK,QACjCyG,IAAKX,KACLrD,UAAWD,EAAQsD,KACnBU,IAAI,2BAENxf,IAAAoa,cAACC,IAAU,CACToB,UAAWD,EAAQw4B,UACnB15B,QAASA,IAAMP,EAAKN,cAAcM,EAAKtF,aACvCzU,IAAAoa,cAACi6B,KAAe,QAIpBr0C,IAAAoa,cAAC2Q,KAAO,MAER/qB,IAAAoa,cAACwR,KAAI,KACFsoB,EAAWjvB,IAAK4D,GACf7oB,IAAAoa,cAACk4B,GAAO,CACNlqB,KAAMpoB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMoY,EAAE4a,WAChCh8B,IAAKohB,EAAEtD,MACP+O,KAAMzL,EAAE6a,MAAMpP,KACdlyB,GAAIymB,EAAEzmB,GACN+X,OAAQA,IAAMg6B,EAAatrB,EAAE6a,MAAMpP,MACnCpR,SAAUnJ,EAAK3B,QAAQvb,SAAS4rB,WAAaI,EAAEyL,UCvJ3D,MAAM1Z,GAAYC,YAAYnH,IAAK,CACjCy7B,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZvD,eAAgB,WAChBiB,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBzzB,QAAS,CACPwQ,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,GACvBgD,OAAQ,OACRN,gBAAiB,QACjB+M,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,iBAGzC4E,aAAc,CACZ9oB,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOgF,QACjC9E,SAAU/7B,EAAM47B,YAAYG,SAASG,iBAEvCxc,WAAY,KAEdohB,cAAe,CACbphB,WAAY,OCxChB,MAAMqhB,GAAmB,CACvBtnC,QAAS,GACTunC,OAAQ,EACRtyC,GAAI,EACJuyC,YAAa,EACbC,UAAW,GAGN,SAASC,GAAepnC,GAC7B,MAAO+F,EAAWC,GAAgBF,oBAAS,IACpCuhC,EAAQC,GAAaxhC,mBAASkhC,IAE/B16B,EAAOkI,qBAAWvI,GAClBs7B,EAAqG,iBAAhFp4C,OAAOC,SAAS6gB,KAAK4Z,MAAM,KAAK16B,OAAOC,SAAS6gB,KAAK4Z,MAAM,KAAKj2B,OAAS,GAC9FoL,EAAagB,EAEbwnC,EAA+BA,CAACC,EAAmBC,KAChD,CACL9gC,SAAUrU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBACjC6D,QACEtU,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mDACvBzQ,IAAAoa,cAAA,WACApa,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAA+B,IACrDykC,GAEHl1C,IAAAoa,cAAA,WACApa,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAAyC,IAC/D0kC,MAyFLC,EAAcA,CAACC,EAAY9+B,IAAa8+B,EAAWvoC,SAAW,EAC9D8F,EAAOyiC,EAAW9nC,cAAegJ,GApBxB1D,EAACwiC,EAAY9+B,KAC1B9C,GAAa,GAEbsG,EAAKjW,UACFsJ,kBACCioC,EACAt7B,EAAKrW,KAAKX,OACVgX,EAAKrW,KAAKoI,iBAAiB3F,UAC3B6uC,EACAvnC,GAEDnO,KAAMqX,IACDJ,GAAUA,EAASI,EAAIjZ,MAC3B4Y,MAED5W,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,IAAMvD,GAAa,KAK1BZ,CAAOwiC,EAAY9+B,GAEnB3D,EAASA,CAACrF,EAAegJ,KAC7B9C,GAAa,GAEbsG,EAAKjW,UACFwJ,kBAAkBC,GAClBjO,KAAMqX,IACCJ,GAAUA,EAASI,EAAIjZ,MAC3B4Y,MAEH5W,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,IAAMvD,GAAa,KAahC,SAAS6C,EAAK5J,GACPqN,EAAKrW,KAAKoI,iBAAiB3F,YAIhCsN,GAAa,GAEbsG,EAAKjW,UACF0I,UACCuN,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4T,EAAKrW,KAAKX,OACV0K,IACEf,GAEHpN,KAAMqX,GAAQo+B,EAAUp+B,EAAIjZ,OAC5BgC,MAAOiX,GAAQoD,EAAK3G,SAAS,UAAWuD,EAAIgyB,aAC5C3xB,QAAQ,IAAMvD,GAAa,KAGhC,MAqBM6hC,EAAsBA,CAACC,EAAcC,EAAUj/B,KACnD9C,GAAa,GAEb,MAAMgiC,EAAaX,EAAO3nC,QAAQ8X,IAAKywB,IAAO,CAC5CC,UAAWD,EAAQ7oC,OACnBC,SAAU4oC,EAAQ5oC,SAClBE,sBAAuB0oC,EAAQ1oC,yBAG3B4oC,EAAiB,IAClBL,EAEDtqC,QAASuqC,EAASvqC,QAClB4qC,WAAY97B,EAAKrW,KAAKX,OACtBwD,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,UACvCsvC,WAAYA,GAIhB17B,EAAKjW,UACFsI,YAAYwpC,GACZt2C,KAAMkX,IACDA,EAAE9Y,KAAKD,QACTs3C,EAAU,CAAE5nC,QAAS,KACjBoJ,GAAUA,IACdD,KAEAyD,EAAK3G,SAAS,QAAS,oDAG1B1T,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,IAAMvD,GAAa,KAOhC,OAFAsE,oBAAU,IAAMzB,IAAQ,CAACyD,EAAKrW,KAAKoI,iBAAiB3F,YAE7C,CACLqN,YACA6W,MANqByqB,EAAO3nC,QAAQ9L,OAOpCyzC,SACAniC,IA/JUA,CAAC4W,EAAMhT,KACjB,MAAMu/B,EAAoBhB,EAAO3nC,QAAQgX,KAAM3N,GAAMA,EAAEm/B,YAAcpsB,EAAK1c,QAErEipC,EAwBHV,EAAYU,EAAkBvoC,cAAeuoC,EAAkBhpC,SAAWyc,EAAKwsB,IAAKx/B,IAvBpF9C,GAAa,GAEbsG,EAAKjW,UACF8I,eACC2c,EAAK1c,OACLgb,SAAS0B,EAAKwsB,KACdh8B,EAAKrW,KAAKX,OACVgX,EAAKrW,KAAKoI,iBAAiB3F,UAC3BojB,EAAK9iB,WACLgH,EACA8b,EAAKvc,uBAEN1N,KAAMqX,IACDJ,GAAUA,EAASI,EAAIjZ,MAC3B4Y,MAED5W,MAAOiX,IACNoD,EAAK3F,SACH6gC,EAA6B1rB,EAAK9iB,WAAYquC,EAAO/nC,wBAGxDiK,QAAQ,IAAMvD,GAAa,MAuIhCuiC,SAhMeA,CAAC7oC,EAASoJ,KACzB9C,GAAa,GAEb,MAAMwiC,EAAgB9oC,EAAQ8X,IAAIsE,IACzB,CACL1c,OAAQ0c,EAAKosB,UACb7oC,SAAU+a,SAAS0B,EAAKwsB,KACxBhzC,OAAQgX,EAAKrW,KAAKX,OAClBwD,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,UACvC6G,sBAAuBuc,EAAKvc,uBAAyB,KACrDD,oBAAqBwc,EAAK9iB,WAC1BgG,WAAYgB,KAIhBsM,EAAKjW,UACFoJ,mBAAmB+oC,GACnB32C,KAAMqX,IACDJ,GAAUA,EAASI,EAAIjZ,MAC3B4Y,MAED5W,MAAOiX,IAAS,IAADu/B,EACdn8B,EAAK3F,SACH6gC,EACY,QADgBiB,EAC1B/oC,EAAQ,UAAE,IAAA+oC,OAAA,EAAVA,EAAYzvC,WACZquC,EAAO/nC,wBAIZiK,QAAQ,IAAMvD,GAAa,KAoK9B2hC,cACAxiC,SACAgM,OAnEaA,CAAC22B,EAAch/B,KAC5Bg/B,EAAaxoC,oBAAsB+nC,EAAO/nC,oBAC1ClO,QAAQC,IAAIy2C,GACZx7B,EAAKjW,UACF4J,cAAc,CACb3K,OAAQgX,EAAKrW,KAAKX,OAClBwD,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,UACvCsH,SAAUqnC,EAAO1yC,KAElB9C,KAAMkX,IACL9X,aAAaa,QAAQ,cAAeiX,EAAE9Y,KAAKuN,SAC3CqqC,EAAoB,IACfC,EACH9uC,WACA+P,EAAE9Y,KAAK+I,YACN+P,EAAE9Y,KAAM6Y,KAEZ7W,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,IAAMvD,GAAa,KAkD9BjG,aAjGoBC,IACpBgG,GAAa,GAEbsG,EAAKjW,UACF0J,aAAaC,GACbnO,KAAK,IAAMgX,KACX5W,MAAOiX,GAAQoD,EAAK3G,SAAS,UAAWuD,GAAOA,EAAIgyB,aACnD3xB,QAAQvD,GAAa,KA2FxB6C,OACA7J,cC5OG,MAAM0pC,GAAgBx8B,wBAAc,MAE5B,SAASy8B,GAAe76B,GACrC,MAAMu5B,EAASD,GAAet5B,EAAM9N,UAGpC,OAFA5O,QAAQC,IAAIyc,EAAM9N,UAGhBzN,IAAAoa,cAAC+7B,GAAcx7B,SAAQ,CAACzC,MAAO48B,GAASv5B,EAAMzB,UCVnC,SAASu8B,GAAqBnf,GAC3C,IAAIof,EAAY,EAShB,OARsB,IAAlBpf,EAAKqf,SAEPD,GAAa,EACc,IAAlBpf,EAAKqf,UAEdD,IAEFpf,EAAKsf,QAAQtf,EAAKuf,UAAYH,GACvBpf,ECPF,MAAMwf,GAAkB/8B,wBAAc,MAE9B,SAASg9B,GAAgB98B,GAAgB,IAAf,SAAEC,GAAUD,EACnD,MAAM+8B,ECFD,WACL,MAAMC,EAAsB,CAC1BC,eAAe,EAEfC,kBAAmB,GACnBC,aAAc,GACdC,oBAAqB,GACrBC,oBAAqB,GACrBC,gBAAiB,GACjBC,aAAc,GACdC,gBAAiB,GAEjBC,aAAcjB,GAAqB,IAAI5f,MAAQY,SAC/CkgB,YAAa,GACbC,cAAe,GACfC,UAAW,GACXC,iBAAkB,GAClBC,cAAe,GACfC,QAAS,KAGJpkC,EAAWC,GAAgBF,oBAAS,IACpCskC,EAAuBC,GAA4BvkC,oBAAS,IAC5DgiC,EAAcwC,GAAmBxkC,mBAASsjC,IAC1CmB,EAAmBC,GAAwB1kC,oBAAS,GAErDwG,EAAOkI,qBAAWvI,GAyBxB,MAAO,CACLlG,YACAC,eACAukC,oBACAC,uBACA1C,eACAwC,kBACAG,qBA9BF,SAA8BpxC,EAAUyP,GACtC,OAAOwD,EAAKjW,UACTuI,cAAcvF,GACdxH,KAAMkX,IACY,MAAbA,EAAE/Y,QAAkB+Y,EAAE9Y,OACxBq6C,EAAgBvhC,EAAE9Y,MAClBo6C,GAAyB,GACD,oBAAbvhC,GACTA,OAIL7W,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,KACPvD,GAAa,MAiBjBokC,wBACAC,2BACAK,kBAfF,SAA2BnP,GACzB+O,EAAgBlB,GAChBiB,GAAyB,KD9CVM,GAEjB,OACEp4C,IAAAoa,cAACs8B,GAAgB/7B,SAAQ,CAACzC,MAAO0+B,GAC9B98B,GEPA,SAASu+B,KACd,MAAMxB,EAAsB,CAC1BC,eAAe,EAEfwB,cAAe,GACfC,eAAgB,GAEhBC,gBAAiB,GACjBC,WAAY,GACZC,cAAe,GACfC,cAAe,GACfC,cAAe,GACfC,WAAY,GACZC,cAAe,GAEfC,oBAAqB,GACrBnB,QAAS,KAGJpkC,EAAWC,GAAgBF,oBAAS,IACpCuhC,EAAQC,GAAaxhC,mBAAS,CAAEpG,QAAS,MACzC0qC,EAAuBC,GAA4BvkC,oBAAS,IAC5DgiC,EAAcwC,GAAmBxkC,mBAASsjC,IAC1CmB,EAAmBC,GAAwB1kC,oBAAS,IACpDF,EAAeC,GAAoBC,oBAAS,IAC5CylC,EAAmBC,GAAwB1lC,oBAAS,GAErDwG,EAAOkI,qBAAWvI,GAuExB,SAASw/B,EAAW3rC,EAAeF,EAAckJ,GAC/C9C,GAAa,GACbsG,EAAKjW,UACFkK,qBACCT,EACAF,EACA0M,EAAKrW,KAAKX,OACVgX,EAAKrW,KAAKoI,iBAAiB3F,WAE5B7G,KAAMqX,IACc,MAAfA,EAAIlZ,QACNs3C,EAAUp+B,EAAIjZ,MACV6Y,GAAUA,KAEdwD,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAGhCjpC,MAAOrC,IACN0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,cAEhCI,QAAQ,KACPvD,GAAa,KAInB,SAAS2hC,EACP7nC,EACAT,GAGC,IAFDqsC,EAAc/3C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,KACjBmV,EAAQnV,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAEJwL,EAAW,EACb8F,EAAOrF,EAAegJ,GAEtB2iC,EAAW3rC,EAAe,CAAET,WAAUqsC,kBAAkB5iC,GAe5D,SAAS3D,EAAOrF,EAAegJ,GAC7B9C,GAAa,GACbsG,EAAKjW,UACFmK,qBACCV,EACAwM,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4T,EAAKrW,KAAKX,QAEXzD,KAAMqX,IACc,MAAfA,EAAIlZ,QACNs3C,EAAUp+B,EAAIjZ,MAEV6Y,GACFA,KAGFwD,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAGhCjpC,MAAOrC,IACN0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,cAEhCI,QAAQ,KACPvD,GAAa,KAInB,SAAS6C,IACP7C,GAAa,GAC+B,IAAxCsG,EAAKrW,KAAKoI,iBAAiB3F,WAG/B4T,EAAKjW,UACF+J,aAAakM,EAAKrW,KAAKoI,iBAAiB3F,UAAW4T,EAAKrW,KAAKX,QAC7DzD,KAAMqX,IACc,MAAfA,EAAIlZ,OACNs3C,EAAUp+B,EAAIjZ,MAEdqc,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAGhCjpC,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,KACPvD,GAAa,KAqGnB,SAAS0kC,EAAkBnP,GACzB+O,EAAgBlB,GAChBiB,GAAyB,GAO3B,OAJA//B,oBAAU,KACRzB,KACC,CAACyD,EAAKrW,KAAKoI,iBAAiB3F,YAExB,CACLqN,YACAC,eACA4W,MAlCOyqB,EAAO3nC,QAAQ9L,OAmCtByzC,SACAniC,IArPF,SAAa9F,EAAQkpC,EAAKx/B,GAKxB,GAJ0Bu+B,EAAO3nC,QAAQisC,KACtC7vB,GAASA,EAAKosB,YAAc9oC,GA4BxB,CACL,MAAM0c,EAAOurB,EAAO3nC,QAAQgX,KAAMoF,GAASA,EAAKosB,YAAc9oC,GAC9DuoC,EAAY7rB,EAAKhc,cAAegc,EAAKzc,SAAWipC,EAAKx/B,QA1BrD9C,GAAa,GACbsG,EAAKjW,UACFgK,kBACCjB,EACAkpC,EACAh8B,EAAKrW,KAAKX,OACVgX,EAAKrW,KAAKoI,iBAAiB3F,WAE5B7G,KAAMqX,IACc,MAAfA,EAAIlZ,QACNs3C,EAAUp+B,EAAIjZ,MACV6Y,GACFA,KAGFwD,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAGhCjpC,MAAOrC,IACN0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,cAEhCI,QAAQ,KACPvD,GAAa,MA0NnBuiC,SAvRF,SAAkB7oC,EAASoJ,GACzB9C,GAAa,GAEb,IAAIwiC,EAAgB,GACpB,IAAK,IAAIptB,EAAI,EAAGA,EAAI1b,EAAQ9L,OAAQwnB,IAAK,CACvC,IAAIvoB,EAAM,CACRq1C,UAAWxoC,EAAQ0b,GAAG8sB,UACtB7oC,SAAUK,EAAQ0b,GAAG/b,SACrBqsC,eAAgBhsC,EAAQ0b,GAAGswB,eAC3Bp2C,OAAQgX,EAAKrW,KAAKX,OAClBwD,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,WAEzC8vC,EAAcj9B,KAAK1Y,GAGrByZ,EAAKjW,UACFiK,sBAAsBkoC,GACtB32C,KAAMqX,IACc,MAAfA,EAAIlZ,OACN8Y,EAASI,EAAIjZ,MAEbqc,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAGhCrpC,KAAK,IAAMgX,KACX5W,MAAOrC,IACN0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,cAEhCI,QAAQ,KACPvD,GAAa,MA2PjB2hC,cACAxiC,SACAgM,OAnHF,SAAgB22B,EAAch/B,GAC5BwD,EAAKjW,UACFoK,iBAAiB,CAChBnL,OAAQgX,EAAKrW,KAAKX,OAClBwD,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,UACvCmyC,cAAe/C,EAAa+C,cAC5BC,eAAgBhD,EAAagD,iBAE9Bj5C,KAAMkX,IACY,MAAbA,EAAE/Y,SACJiB,aAAaa,QAAQ,mBAAoBiX,EAAE9Y,KAAK27C,YAcxD,SAA6B9D,EAAc+D,EAAO/iC,GAChD9C,GAAa,GAEb,MAAMgiC,EAAaX,EAAO3nC,QAAQ8X,IAAKsE,IACrC,MAAM,OAAE1c,EAAM,SAAEC,EAAQ,eAAEqsC,GAAmB5vB,EAC7C,MAAO,CACLosB,UAAW9oC,EACXC,WACAqsC,oBAIJt6C,QAAQC,IAAI,aAAc22C,GAE1B,MAAMG,EAAiB,IAClBL,EACH+D,QACAzD,WAAY97B,EAAKrW,KAAKX,OACtBwD,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,UACvCsyC,WAAY1+B,EAAKrW,KAAKoI,iBAAiB+D,YACvC0pC,cAAe9D,GAGjB17B,EAAKjW,UACFwI,UAAUspC,GACVt2C,KAAMkX,IACY,MAAbA,EAAE/Y,SACJoB,QAAQC,IAAI0X,GACRA,EAAE9Y,KAAKD,QAETs3C,EAAU,CAAE5nC,QAAS,KAErBmJ,IACIC,GACFA,EAASC,EAAE9Y,KAAK87C,QAGlBz/B,EAAK3G,SACH,QACA,qDAKP1T,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,KACPvD,GAAa,KA3DX6hC,CAAoBC,EAAc/+B,EAAE9Y,KAAK27C,WAAY9iC,GACrD4hC,OAGHz4C,MAAOrC,IACNwB,QAAQC,IAAIzB,GACZ0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,cAEhCI,QAAQ,KACPvD,GAAa,MAgGjB8hC,eACAwC,kBACAG,qBAxCF,SAA8BpxC,EAAUyP,GAEtC,OADA9C,GAAa,GACNsG,EAAKjW,UACTyI,YAAYzF,GACZxH,KAAMkX,IACY,MAAbA,EAAE/Y,QAAkB+Y,EAAE9Y,OACxBq6C,EAAgBvhC,EAAE9Y,MAClBo6C,GAAyB,GACD,oBAAbvhC,GACTA,OAIL7W,MAAOrC,GAAU0c,EAAK3G,SAAS,UAAW/V,EAAMuZ,aAChDI,QAAQ,KACPvD,GAAa,MA0BjBokC,wBACAC,2BACAK,oBACAH,oBACAC,uBACAwB,YAxLF,WACEhmC,GAAa,GACbsG,EAAKjW,UACFsK,gBAAgB0mC,EAAO1yC,IACvB9C,KAAMqX,IACLo+B,EAAU,CAAE5nC,QAAS,OAEtBzN,MAAOg6C,GAAQ76C,QAAQC,IAAI46C,IAC3B1iC,QAAQ,IAAMvD,GAAa,KAiL9BJ,gBACAC,mBACA0lC,oBACAC,wBCpUG,MAAMU,GAAuBhgC,wBAAc,MAEnC,SAASigC,GAAqB//B,GAAgB,IAAf,SAAEC,GAAUD,EACxD,MAAMggC,EAAgBxB,KAEtB,OACEr4C,IAAAoa,cAACu/B,GAAqBh/B,SAAQ,CAACzC,MAAO2hC,GACnC//B,GCPA,SAASggC,KACd,MAAM//B,EAAOkI,qBAAWvI,IACjBlG,EAAWC,GAAgBF,oBAAS,IACpCwmC,EAAQC,GAAazmC,mBAAS,IAwBrC,OAJAwE,oBAAU,KAjBRtE,GAAa,GAEbsG,EAAKjW,UACFwK,YACAhP,KAAMkX,IACY,MAAbA,EAAE/Y,QACJu8C,EAAUxjC,EAAE9Y,KAAO8Y,EAAE9Y,KAAO,MAG/BgC,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,KACPvD,GAAa,MAMhB,IAEI,CACLD,YACAumC,UC7BG,MAAME,GAAkBtgC,wBAAc,MAE9B,SAASugC,GAAgBrgC,GAAgB,IAAf,SAAEC,GAAUD,EACnD,MAAMutB,EAAW0S,KAEjB,OACE95C,IAAAoa,cAAC6/B,GAAgBt/B,SAAQ,CAACzC,MAAOkvB,GAC9BttB,GCPA,SAASqgC,KACd,MAAMpgC,EAAOkI,qBAAWvI,GAClBvT,EAAY4T,EAAKrW,KAAKoI,iBAAiB3F,WAEtCkN,EAAeC,GAAoBC,oBAAS,IAC5CC,EAAWC,GAAgBF,oBAAS,IACpC6mC,EAAQC,GAAa9mC,mBAAS,KAC9Bga,EAAa+sB,GAAkB/mC,mBAAS,KACxCgnC,EAAaC,GAAkBjnC,mBAAS,IACxCknC,EAAcC,GAAmBnnC,oBAAS,GAEjD,SAASoU,IACP,GAAI8yB,EACF,OAgDJ,WACE,GAAoB,KAAhBltB,GAsBN,WACE,GAAI/Z,IAAcrN,EAChB,OAEFsN,GAAa,GACbsG,EAAKjW,UACFkI,aAAa7F,GACb7G,KAAMqX,IACoB,IAAD01B,EAAL,MAAf11B,EAAIlZ,SACN48C,EAAU1jC,EAAIjZ,MACd88C,EAAuB,QAATnO,EAAC11B,EAAIjZ,YAAI,IAAA2uC,OAAA,EAARA,EAAUhrC,QACzBiS,GAAiB,MAGpB5T,MAAOg6C,GAAQ76C,QAAQC,IAAI46C,EAAI9iC,aAC/BI,QAAQ,IAAMvD,GAAa,IApC5BknC,OACK,CACL,GAAInnC,EAAW,OACfC,GAAa,GACbsG,EAAKjW,UACFqI,gBAAgBhG,EAAWonB,GAC3BjuB,KAAMqX,IACoB,IAADy1B,EAAL,MAAfz1B,EAAIlZ,QACN48C,EAAU1jC,EAAIjZ,MACd88C,EAAuB,QAATpO,EAACz1B,EAAIjZ,YAAI,IAAA0uC,OAAA,EAARA,EAAU/qC,SACpB0Y,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAErCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,cAE5BI,QAAQ,KACPvD,GAAa,MAlEVmnC,GAET,GAAoB,KAAhBrtB,GAuBN,WACE,GAAI/Z,IAAcrN,EAChB,OAGFsN,GAAa,GACbsG,EAAKjW,UACFoH,UAAU/E,GACV7G,KAAMqX,IACoB,IAAD21B,EAAL,MAAf31B,EAAIlZ,QACN48C,EAAU1jC,EAAIjZ,MACd88C,EAAuB,QAATlO,EAAC31B,EAAIjZ,YAAI,IAAA4uC,OAAA,EAARA,EAAUjrC,QACzBiS,GAAiB,IACZyG,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAErCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,cAE5BI,QAAQ,KACPvD,GAAa,KAzCf6C,OACK,CACL,GAAI9C,EAAW,OACfC,GAAa,GAEbsG,EAAKjW,UACFsH,aAAajF,EAAWonB,GACxBjuB,KAAMqX,IACoB,IAADyyB,EAAL,MAAfzyB,EAAIlZ,QACN48C,EAAU1jC,EAAIjZ,MACd88C,EAAuB,QAATpR,EAACzyB,EAAIjZ,YAAI,IAAA0rC,OAAA,EAARA,EAAU/nC,SACpB0Y,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAErCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,cAE5BI,QAAQ,KACPvD,GAAa,MA0ErB,OALAsE,oBAAU,KACR4P,KAEC,CAAC4F,EAAaxT,EAAKrW,KAAKoI,iBAAiB3F,UAAWs0C,IAEhD,CACLF,cACAjwC,SAAUnE,EACVqN,YACAH,gBACA+mC,SACAE,iBACAG,eACAC,mBCnHG,MAAMG,GAAelhC,wBAAc,MAE3B,SAASmhC,GAAajhC,GAAgB,IAAf,SAAEC,GAAUD,EAChD,MAAMkhC,EAAQZ,KAEd,OAAOn6C,IAAAoa,cAACygC,GAAalgC,SAAQ,CAACzC,MAAO6iC,GAAQjhC,G,kGCLhC,SAASkhC,GAAaz/B,GACnC,MAAM,UAAEo6B,EAAS,UAAEsF,GAAY,EAAK,cAAEC,EAAgB,qBAAsBn+B,GAASxB,EAO/EkE,EAAG,yDAAA7gB,OAA4D+2C,EAAS,OAAA/2C,OAL5D,CAChBu8C,yBAA0B,KAC1BC,gBAAiB,MAG2EF,IAE9F,OACEl7C,IAAAoa,cAAA,MAAA8C,OAAAC,OAAA,CACEsC,IAAKw7B,EAAYx7B,EAAM47B,KACvB77B,IAAI,gBACAzC,EAAI,CACRu+B,QAAU1xC,IACRA,EAAEI,OAAOyV,IAAM47B,KACfzxC,EAAEI,OAAOkW,MAAQ,oBCjBzB,MAAMtF,GAAYC,YAAYnH,IAAK,CACjC6nC,UAAW,CACT/2B,SAAU,GACVyX,cAAe,YACfzpB,MAAO,OACPmM,UAAW,EAEX,CAACjL,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5B3c,WAAY,SAGhBooB,cAAe,CACb,eAAkB,YAElB,UAAW,CACTvyB,OAAQ,YAGZwyB,IAAK,CACH5nC,MAAO,EACPkL,OAAQ,EACRN,gBAAiB,QACjB1D,QAAS,eACToB,aAAc,EACdL,OAAQ,QACR+C,UAAW,oBAEb68B,QAAS,CACPj9B,gBAAiB,UAEnBk9B,OAAQ,CACNl9B,gBAAiB,UAIN,SAASm9B,GAAUrgC,GAChC,MAAMC,EAAUZ,MACV,KAAEwN,EAAI,OAAE3qB,EAAS,GAAM8d,EAEvBsgC,EAAa,CACjBC,EAAGtgC,EAAQigC,IACX1hB,EAAE,GAADn7B,OAAK4c,EAAQigC,IAAG,KAAA78C,OAAI4c,EAAQkgC,SAC7BK,EAAE,GAADn9C,OAAK4c,EAAQigC,IAAG,KAAA78C,OAAI4c,EAAQmgC,SAG/B,OACE37C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+/B,WACtBv7C,IAAAoa,cAAA,QAAMqB,UAAWogC,EAAWp+C,KAC5BuC,IAAAoa,cAAA,YAAOgO,ICjCb,MAAMxN,GAAYC,YAAYnH,IAAK,CACjCsoC,aAAc,CACZ//B,QAAS,YAEXtR,IAAK,CACHyoB,WAAY,GACZjU,YAAa,IAEflL,MAAO,CACLmsB,WAAY,KAEduV,UAAW,CACTnxB,SAAU,IAEZy3B,QAAS,CACPz3B,SAAU,IAEZ03B,MAAO,CACLriB,SAAU,GACVzG,WAAY,OACZkI,UAAW,SAEb6gB,IAAK,CACH3pC,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1B53B,SAAU,IAEZ63B,IAAK,CACH73B,SAAU,GACV4b,WAAY,KAEdnW,IAAK,CACHlP,QAAS,OACTc,SAAU,UAEZ/O,SAAU,CACRszB,WAAY,IACZ5b,SAAU,GACV8W,UAAW,SACXzB,SAAU,IAEZyiB,kBAAmB,CACjBvhC,QAAS,OACTwD,WAAY,SACZQ,OAAQ,GACR6a,aAAc,oBACd5e,eAAgB,aAChBnH,MAAO,OACP2rB,YAAa,IAEfx+B,OAAQ,CACNoyB,WAAY,QAEdmpB,WAAY,CACVxhC,QAAS,QACToE,YAAa,EACbR,UAAW,GACX9K,MAAO,GACPkL,OAAQ,IAEVy9B,IAAK,CACHC,UAAW,GACXt3B,SAAU,QAEZu3B,WAAY,CACV7oC,MAAO,KAET8oC,SAAU,CACRn4B,SAAU,GACVwrB,cAAe,8BAIJ,SAAS4M,GAAmBrhC,GACzC,MAAM,KACJ7d,EAAI,SACJm/C,EAAQ,SACRhgC,EAAQ,YACRigC,EAAW,cACXC,EAAa,mBACbC,EAAkB,eAClBC,GACE1hC,EACEC,EAAUZ,KAEhB,OACE5a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQwgC,cACtBh8C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQyO,KACtBjqB,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0BlB,EAAKmP,QACjC2F,MAAM,OACNiJ,UAAWD,EAAQ+gC,YACnBv8C,IAAAoa,cAAC4gC,GAAY,CACXC,UAAWv9C,EAAKu9C,UAChBx/B,UAAWD,EAAQghC,IACnB7G,UAAWj4C,EAAKmP,OAChB2S,IAAK9hB,EAAKm3B,gBAIhB70B,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0BlB,EAAKmP,QACjC2F,MAAM,OACNiJ,UAAWD,EAAQm6B,WAAU,GAAA/2C,OACzBlB,EAAKmP,OAAM,OAAAjO,OAAMlB,EAAKw/C,WAE5Bl9C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQm6B,WACrBsH,EACCj9C,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhC,UACvB38C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAACob,GAAU,CACT2nB,QAAM,EACNhkB,SAAUtc,EACVugC,oBACEvgC,GAAY,CAAEA,UAAU,EAAMqD,MAAO,CAAEnF,QAAS,SAElDN,QAAQ,SACR4iC,QAASP,EACTQ,QAASP,EACTthC,UAAWD,EAAQkhC,WACnBxkC,MAAOxa,EAAKsP,sBACZsR,SAAW4Y,GAAS8lB,EAAmB9lB,EAAMx5B,GAC7C6/C,aACEv9C,IAAAoa,cAACojC,KAAa,CACZt9B,MAAO,CAAErM,MAAO,GAAIkL,OAAQ,GAAI9C,QAAS,KAG7CqB,WAAY,CACVmgC,kBAAkB,EAClBv9B,MAAO,CAAEsE,SAAU,QACnB2U,UAAU,MAKhBn5B,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQygC,SACpBj8C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAAmB,IAAE/S,EAAKggD,iBAKzD19C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ0gC,OACrBx+C,EAAKigD,sBAAwBjgD,EAAKw+C,OACjCl8C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2gC,KACrBz+C,EAAKigD,oBAAoBC,eAAe,QAAS,CAChDC,sBAAuB,EACvBC,sBAAuB,KAI7B99C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6gC,KACrB3+C,EAAKw+C,MAAM0B,eAAe,QAAS,CAClCC,sBAAuB,EACvBC,sBAAuB,KAG3B99C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6gC,KACrB3+C,EAAKg3C,OAAOkJ,eAAe,QAAS,CACnCC,sBAAuB,EACvBC,sBAAuB,OAK/B99C,IAAAoa,cAACkP,KAAI,CAAC6C,WAAS,GACbnsB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQ8gC,mBACnBt8C,IAAAoa,cAAC2jC,GAAuB,CACtBC,gBAAiBtgD,EAAKsgD,gBACtBC,kBAAmBvgD,EAAKugD,kBACxB1V,MAAO7qC,EAAK6qC,MACZ9sB,UAAWD,EAAQ0iC,gBACnBC,QAASzgD,EAAK6P,cACdwoC,IAAKr4C,EAAKoP,SACVsxC,WAAYvhC,IAEbA,GACC7c,IAAAoa,cAAA,OAAK8F,MAAO,CAAEkT,WAAY,GAAIzU,WAAY,IACxC3e,IAAAoa,cAACwhC,GAAS,CACRxzB,KAAM1qB,EAAK2gD,cACX5gD,OAAQC,EAAK4gD,oBAIjBzhC,GACA7c,IAAAoa,cAACC,IAAU,CACT0D,KAAK,QACLtC,UAAWD,EAAQxa,OACnBu9C,KAAK,MACLhkC,aAAW,SACXD,QAASA,IAAMuiC,EAASn/C,EAAK6P,gBAC7BvN,IAAAoa,cAACokC,KAAU,CAACh6B,SAAS,cASnC,SAASu5B,GAAwBxiC,GAC/B,MAAM,QAAE4iC,EAAO,IAAEpI,EAAG,WAAEqI,EAAU,gBAAEJ,EAAe,kBAAEC,GAAsB1iC,EACnEC,EAAUZ,KACV6jC,EAAcx8B,qBAAWk0B,IACzBtM,EAAYoU,GAAqB,EAqBvC,SAASS,IACHN,GACJ/rB,MAAM,kDAGR,OAAQ+rB,EAsBNp+C,IAAAoa,cAAA,OACE8F,MAAO,CAAEkT,WAAY,QACrB9Y,QAASokC,GACT1+C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAAa,KAAGslC,GAxBzC/1C,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACC,IAAU,CACT0D,KAAK,QACLxD,aAAW,SACXD,QArBN,WACM8jC,GACArI,EAAMlM,EAAYmU,GAGtBS,EAAYrJ,YAAY,CACtB7nC,cAAe4wC,EACfrxC,SAAUipC,EAAMlM,KAedpuB,UAAWD,EAAQmjC,QACnB3+C,IAAAoa,cAACwkC,KAAY,CAACp6B,SAAS,WAEzBxkB,IAAAoa,cAAA,OACEqB,UAAWD,EAAQ1O,SACnBwN,QAASokC,GACR3I,GAEH/1C,IAAAoa,cAACC,IAAU,CACT0D,KAAK,QACLxD,aAAW,SACXD,QAzCN,WACM8jC,GACJK,EAAYrJ,YAAY,CACtB7nC,cAAe4wC,EACfrxC,SAAUipC,EAAMlM,MAsCd7pC,IAAAoa,cAACykC,KAAS,CAACr6B,SAAS,Y,8CCvQ5B,MAAM5J,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJjH,MAAO,QAET8sB,MAAO,CACL8b,UAAW,QACXt3B,SAAU,QACVnG,OAAQ,kBACRnL,MAAO,OACPkL,OAAQ,QAEV+/B,WAAY,CACVvgC,WAAY,UAEdwgC,WAAY,CACVzjB,UAAW,aAIA,SAAS0jB,GAAWzjC,GACjC,MAAMC,EAAUZ,MACV,KAAE3I,EAAO,iBAAgB,IAAEgtC,EAAM,iBAAoB1jC,EAC3D,OACEvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,SACVxX,UAAWD,EAAQsjC,YACnB9+C,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJxpB,IAAAoa,cAAA,OACEqB,UAAWD,EAAQmlB,MACnBlhB,IAAKy/B,KACL1/B,IAAI,iBAGRxf,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJxpB,IAAAoa,cAACuF,KAAU,CACTlF,QAAQ,KACRmF,UAAU,KACVnE,UAAWD,EAAQujC,YACnB/+C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMwB,KAG1BjS,IAAAoa,cAACuF,KAAU,CACTlF,QAAQ,YACRgB,UAAWD,EAAQujC,YACnB/+C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMwuC,QChDpC,MAAMrkC,GAAYC,YAAYnH,IAAK,CACjCyrC,mBAAoB,GACpBC,kBAAmB,CACjBrgC,OAAQ,UAICsgC,GACA,YADAA,GAED,WAGG,SAASC,GAAe/jC,GACrC,MAAM,aAAEgkC,GAAe,EAAK,SAAE1iC,EAAQ,OAAE2iC,GAAWjkC,EAC7CC,EAAUZ,KACV6jC,EAAcx8B,qBAAWk0B,IACzBzK,EAAgBzpB,qBAAWwoB,KAC1BsS,EAAe0C,GAAoBlsC,mBAAS,KAC5CupC,EAAa4C,GAAkBnsC,mBAAS,IAEzCosC,EAAmBlB,EAAY3J,OAAO/nC,oBA+C5C,SAASpN,EAAWyC,GAClBq8C,EAAY7rC,OAAOxQ,GAGrB,SAAS46C,EAAmB9lB,EAAMx5B,GAChC,MAAMkiD,EAlDR,SAA4B1oB,GAC1B,OACE,IAAIT,KAAKS,EAAKC,UAAuC,IAA3BD,EAAKE,qBAC5BC,SACAC,MAAM,KAAK,GAAK,YA8CCd,CAAmBU,GAGnC2oB,EAAYpB,EAAY3J,OAAO3nC,QAAQgX,KAC1CoF,GACCA,EAAK1c,SAAWnP,EAAKmP,QACrB0c,EAAKvc,wBAA0B4yC,GAC/Br2B,EAAKhc,gBAAkB7P,EAAK6P,eAG5BsyC,IACFniD,EAAKoP,UAAY+yC,EAAU/yC,SAC3B2xC,EAAY7rC,OAAOitC,EAAUtyC,gBAE/BkxC,EAAYrJ,YAAY,IAAK13C,EAAMsP,sBAAuB4yC,IAG5D,OAtCA7nC,oBAAU,KACR2zB,EAAcplC,gBACb,IAEHyR,oBAAU,KAAO,IAAD+nC,EAAAC,EACVJ,GAAoBjU,EAAc9D,UAAUvmC,QAC9Co+C,EAC0E,QAD1DK,EACdpU,EAAc9D,UAAUzjB,KAAMC,GAAOA,EAAG3d,aAAek5C,UAAiB,IAAAG,OAAA,EAAxEA,EACIE,mBAERN,EAC0E,QAD5DK,EACZrU,EAAc9D,UAAUzjB,KAAMC,GAAOA,EAAG3d,aAAek5C,UAAiB,IAAAI,OAAA,EAAxEA,EACIE,kBAEL,CAACN,EAAkBjU,EAAc9D,YAyBlC5nC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2jC,oBACtBn/C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4jC,mBACrBX,EAAYjrC,UAAYxT,IAAAoa,cAACuB,IAAc,MAAM,MAE/C8iC,EAAY3J,OAAO3nC,QAAQ9L,OAAS,EACnCrB,IAAAoa,cAAApa,IAAAie,SAAA,MAjEe9Q,EAkEAsxC,EAAY3J,OAAO3nC,QAjElCqyC,IAAWH,GACNlyC,EACJ6R,OAAQoF,GAAOA,GACf6jB,KAAK,CAACrK,EAAGsK,IACJtK,EAAE/wB,OAASq7B,EAAEr7B,QAAgB,EAC7B+wB,EAAE/wB,OAASq7B,EAAEr7B,OAAe,EACzB,GAEF2yC,IAAWH,GACblyC,EACJ6R,OAAQoF,GAAOA,GACf6jB,KAAK,CAACrK,EAAGsK,IACJtK,EAAE5wB,sBAAwBk7B,EAAEl7B,uBAA+B,EAC3D4wB,EAAE5wB,sBAAwBk7B,EAAEl7B,sBAA8B,EACvD,GAGNG,GAgDwC8X,IAAI,CAACvnB,EAAMmrB,IAClD7oB,IAAAoa,cAACwiC,GAAkB,CACjBK,iBAAkB0C,EAClB5C,cAAeA,EACfD,YAAaA,EACbr1C,IAAG,GAAA7I,OAAKlB,EAAKmP,OAAM,KAAAjO,OAAIiqB,GACvBnrB,KAAMA,EACNm/C,SAAUl9C,EACVq9C,mBAAoBA,EACpBuC,aAAcA,EACd1iC,SAAUA,MAKhB7c,IAAAoa,cAAC4kC,GAAU,OAjFI7xC,MCtChB,SAAS+yC,GAAehoC,GAA6C,IAAtCpI,EAAQ1O,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,MAAO8zB,EAAO9zB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,QAC5DqV,EAAKyB,EAAQ,IAAMpI,EAEF,kBAAVoI,IACTA,EAAQioC,OAAOjoC,EAAM2K,QAAQ,IAAK,OAEpC,IAKEpM,EAJgB,IAAI2pC,KAAKC,aAAanrB,EAAS,CAC7ChV,MAAO,WACPpQ,SAAUA,IAEGkmB,OAAO9d,GACtB,MAAOtO,GACP/K,QAAQC,IAAI8K,GAEd,OAAO6M,ECRT,MAAMmE,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ6D,UAAWjL,EAAMqI,QAAQ,IAE3BukC,MAAO,CACLnhC,YAAa,QAEfohC,MAAO,CACLvlC,eAAgB,gBAChBolB,WAAY,IACZnkB,QAAS,QACTyF,UAAW,oBACX/C,UAAW,IAEb6hC,aAAc,CACZ3sC,MAAO,cACPyN,aAAc,OAGH,SAASm/B,GAAcllC,GACpC,MAAOmlC,EAAuBC,GAA4BptC,oBAAS,GAC7DkrC,EAAcx8B,qBAAWk0B,IACzBp8B,EAAOkI,qBAAWvI,GAClB5J,EAAWiK,EAAKrW,KAAKoI,iBAAiBgE,SACtC0L,EAAUZ,MAEV,sBAAEgmC,EAAqB,MAAEC,EAAK,WAAEC,GAAevlC,EAE/CwlC,EACJtC,EAAY3J,OAAO3nC,QAAQ9L,SAAWu/C,EA0BxC,OATA7oC,oBAAU,KAER,MAAMi9B,EAGE,iBAFNp4C,OAAOC,SAAS6gB,KAAK4Z,MAAM,KACzB16B,OAAOC,SAAS6gB,KAAK4Z,MAAM,KAAKj2B,OAAS,GAE7Co9C,EAAYnoC,KAAK0+B,IAChB,IAGDh1C,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,SACVxX,UAAWD,EAAQV,MACnB9a,IAAAoa,cAACqK,KAAM,CACLxB,KAAMy9B,EACNv+B,QAASA,IAAMw+B,GAAyB,IACxC3gD,IAAAoa,cAACurB,KAAW,KACV3lC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCACvBzQ,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,GAAI2c,UAAW,WACtCt7B,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAE2F,MAAO,QAChBvL,QAASA,IAAMqmC,GAAyB,GACxClmC,QAAQ,YACRjI,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAE2F,MAAO,SAChBvL,QA5CS1Q,IACnB60C,EAAYjxC,aAAaixC,EAAY3J,OAAO1yC,IAC5Cu+C,GAAyB,GACzBE,EAAMj3C,IA0CI6Q,QAAQ,YACRjI,MAAM,aACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BAK5BswC,GACD/gD,IAAAoa,cAAA,OAAK8F,MAAO,CAAEjF,cAAe,QAC3Bjb,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,IAAMqmC,GAAyB,GACxClmC,QAAQ,YACRjI,MAAM,YACNiJ,UAAWD,EAAQglC,cACnBxgD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEzBzQ,IAAAoa,cAAC4F,IAAM,CACL1F,QAxDwB1Q,IACF,GAA1B60C,EAAYhyC,WACdsN,EAAK3B,QAAQY,KAAK,yBACiB,GAA1BylC,EAAYhyC,YACrBsN,EAAK3B,QAAQY,KAAK,4BAEpB6nC,EAAMj3C,IAmDE6R,UAAWD,EAAQglC,aACnBhuC,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAI7BzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ4C,WAAS,EACT8hB,QAAQ,iBACRjuC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ8kC,OACtBtgD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAA,WAAM8lC,GAAezB,EAAY3J,OAAOJ,OAAQ5kC,KAEjDgxC,KAAgBrC,EAAY3J,OAAOkM,cAClChhD,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ4C,WAAS,EACT8hB,QAAQ,iBACRjuC,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAEzBzQ,IAAAoa,cAAA,WAAM8lC,GAAezB,EAAY3J,OAAOkM,aAAclxC,OAGvD2uC,EAAY3J,OAAOF,WACpB50C,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ4C,WAAS,EACT8hB,QAAQ,iBACRjuC,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAEzBzQ,IAAAoa,cAAA,WAAM8lC,GAAezB,EAAY3J,OAAOF,UAAW9kC,KAGvD9P,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ4C,WAAS,EACT1Q,UAAWD,EAAQ+kC,OACnBvgD,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEzBzQ,IAAAoa,cAAA,WAAM8lC,GAAezB,EAAY3J,OAAOH,YAAa7kC,M,6CChJ9C+K,eAAYnH,IAAK,CAC9Bw3B,KAAM,CACJr3B,MAAO,IACPsR,SAAU,QACVpG,OAAQ,OACR9C,QAASvI,EAAMqI,QAAQ,GACvBovB,UAAW,SAEX,CAACz3B,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5B5E,UAAW,SAGfrwB,KAAM,CACJmB,QAAS,QAEXgjC,IAAK,CACHzsC,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BxiB,aAAc,iBACdjb,UAAW,EACXkd,cAAe,IAEjBolB,KAAM,CACJlmC,QAAS,OACTkB,QAASvI,EAAMqI,QAAQ,IAEzBmlC,IAAK,CACHrtC,MAAO,OACPkL,OAAQ,GACRjD,OAAQ,EACR+d,SAAU,KAEZsnB,QAAS,CACP,MAAS,QACT,gBAAmB,QACnB,MAAS,OAET,UAAW,CACT1iC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxCgF,QAAS,CACPnlC,QAASvI,EAAMqI,QAAQ,OCjCZ,SAASslC,GAAkB9lC,GACxC,MAAMC,EAAUZ,MACV,SAAE6zB,EAAQ,MAAEoS,EAAK,YAAES,GAAgB/lC,EAEzC,OACEvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQylC,MACtBjhD,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAWD,EAAQ0lC,IACnB5mC,QAASumC,GACT7gD,IAAAoa,cAAConC,KAAa,CACZh9B,SAAS,QACTtE,MAAO,CAAEf,YAAa,KAExBnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAS,GAAA7c,OAAK4c,EAAQ0lC,IAAG,KAAAtiD,OAAI4c,EAAQ2lC,SACrC7mC,QAASm0B,GACTzuC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM6wC,IACxBthD,IAAAoa,cAACqnC,KAAgB,CACfvhC,MAAO,CAAEkT,WAAY,GACrB5O,SAAS,YClBJ,SAASk9B,GAAgBnmC,GACtC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClB+kC,EAAcx8B,qBAAWk0B,IACzBrB,EAAS2J,EAAY3J,QACpB0K,EAAQmC,GAAapuC,mBAAS8rC,KAE/B,KAAEp8B,EAAI,QAAE3I,GAAYiB,EAE1B,SAASqmC,EAAYp3B,IAEF,YAAfA,EAAM/N,MACS,QAAd+N,EAAM/iB,KAA+B,UAAd+iB,EAAM/iB,MAIhC6S,GAAQ,GAkCV,OACEta,IAAAoa,cAACi5B,KAAM,CACLwO,OAAO,QACP5+B,KAAMA,EACNd,QAASy/B,EACTnmC,UAAWD,EAAQV,MACnB9a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ0vB,MACtBlrC,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAExBqkC,EAAOgN,cACN9hD,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAAW,IAAA7b,OACxBk2C,EAAOgN,aAAY,MAG5B9hD,IAAAoa,cAAA,SA9CFpa,IAAAoa,cAAA,YACG06B,EAAO3nC,QAAQ9L,OAAS,IACE,IAA1ByzC,EAAO3nC,QAAQ9L,OACdrB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eA0CxBqkC,EAAOruC,YACNzG,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,QAAS3c,UAAW,UAC3C3e,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACL1W,MAAOsnC,IAAWH,GAClB/gC,SAAUA,IACRqjC,EACEnC,IAAWH,GACPA,GACAA,IAGR7sC,MAAM,YAGVtL,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAC9BsxC,eAAe,WAIrB/hD,IAAAoa,cAAA,MAAI8F,MAAO,CAAE8hC,QAAS,SACtBhiD,IAAAoa,cAACklC,GAAc,CACbE,OAAQA,EACRD,cAAc,KAGlBv/C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4lC,SACtBphD,IAAAoa,cAACqmC,GAAa,CAACI,MAAOe,KAExB5hD,IAAAoa,cAACinC,GAAiB,CAChB5S,SAnEN,WACM10B,EAAKrW,KAAKoI,iBAAiBmkC,QAC7Bl2B,EAAK3F,SAAS,CACZC,SAAUrU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,4BACjC6D,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAKpC6J,GAAQ,GAEsB,GAA1BmkC,EAAYhyC,WACdsN,EAAK3B,QAAQY,KAAK,iBACiB,GAA1BylC,EAAYhyC,YACrBsN,EAAK3B,QAAQY,KAAK,sBAsDhB6nC,MAAOe,EACPN,YAAa,gBCrGrB,MAAM1mC,GAAYC,YAAYnH,IAAK,CACjCsoC,aAAc,CACZ//B,QAAS,WACT2d,aAAc,qBAEhBjvB,IAAK,CACHyoB,WAAY,GACZjU,YAAa,IAEflL,MAAO,CACLmsB,WAAY,KAEduV,UAAW,CACTnxB,SAAU,IAEZ03B,MAAO,CACLriB,SAAU,IACVzG,WAAY,OACZkI,UAAW,SAEb6gB,IAAK,CACH3pC,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1B53B,SAAU,IAEZ63B,IAAK,CACH73B,SAAU,GACV4b,WAAY,KAEdnW,IAAK,CACHlP,QAAS,OACTc,SAAU,UAEZ/O,SAAU,CACRszB,WAAY,IACZ5b,SAAU,GACV8W,UAAW,SACXzB,SAAU,IAEZyiB,kBAAmB,CACjBvhC,QAAS,OACTwD,WAAY,SACZQ,OAAQ,GACR/D,eAAgB,aAChBnH,MAAO,OACP2rB,YAAa,IAEfx+B,OAAQ,CACNoyB,WAAY,QAEdmpB,WAAY,CACVxhC,QAAS,QACToE,YAAa,EACbR,UAAW,GACXI,OAAQ,GACRlL,MAAO,IAET2oC,IAAK,CACHC,UAAW,GACXt3B,SAAU,WAIC,SAAS88B,GAAgC1mC,GACtD,MAAM,KAAE7d,EAAI,SAAEm/C,EAAQ,SAAEhgC,GAAatB,EAC/BC,EAAUZ,KACVsnC,EAAqBjgC,qBAAW03B,IAWtC,OACE35C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQwgC,cACtBh8C,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT1Q,UAAWD,EAAQyO,KACnBjqB,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0BlB,EAAKmP,QACjC2F,MAAM,OACNiJ,UAAWD,EAAQ+gC,YACnBv8C,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQghC,IACnB7G,UAAWj4C,EAAKmP,OAChBouC,UAAWv9C,EAAKu9C,UAChBz7B,IAAK9hB,EAAKw/C,aAIhBl9C,IAAAoa,cAACkP,KAAI,CACHpJ,MAAO,CAAErM,MAAO,QAChB0V,MAAI,GACJvpB,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0BlB,EAAKmP,QACjC2F,MAAM,OACNiJ,UAAWD,EAAQvH,OAClBvW,EAAKw/C,UAERl9C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQm6B,WACtB31C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBACvBzQ,IAAAoa,cAAA,YAAM,IAAE1c,EAAKmP,SAEf7M,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC0K,KAAM,CACL24B,kBAAgB,EAChBvlC,MAAOxa,EAAKy7C,eACZ76B,SA5CsB1U,IAChC,MAAMuvC,EAAiBvvC,EAAEI,OAAOkO,MAChCgqC,EAAmB9M,YACjB13C,EAAK6P,cACL7P,EAAKoP,SACLqsC,KAwCSz7C,EAAKykD,cAAcl9B,IAAKm9B,GACvBpiD,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOkqC,EAAOhgD,IAAKggD,EAAOl7C,UAI1ClH,IAAAoa,cAACkP,KAAI,CAAC6C,WAAS,GACbnsB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQ8gC,mBACnBt8C,IAAAoa,cAAC2jC,GAAuB,CACtBtiC,UAAWD,EAAQ0iC,gBACnBC,QAASzgD,EAAK6P,cACdwoC,IAAKr4C,EAAKoP,SACVqsC,eAAgBz7C,EAAKy7C,eACrBiF,WAAYvhC,KAEZA,GACA7c,IAAAoa,cAACC,IAAU,CACT0D,KAAK,QACLtC,UAAWD,EAAQxa,OACnBu9C,KAAK,MACLhkC,aAAW,SACXD,QAASA,IAAMuiC,EAASn/C,EAAK6P,gBAC7BvN,IAAAoa,cAACokC,KAAU,CAACh6B,SAAS,gBAWvC,SAASu5B,GAAwBxiC,GAC/B,MAAM,QAAE4iC,EAAO,IAAEpI,EAAG,WAAEqI,EAAU,eAAEjF,GAAmB59B,EAC/CC,EAAUZ,KACVsnC,EAAqBjgC,qBAAW03B,IAYtC,SAAS+E,IACHN,GACJ/rB,MAAM,kDAGR,OAAQ+rB,EAsBNp+C,IAAAoa,cAAA,OACE8F,MAAO,CAAEkT,WAAY,QACrB9Y,QAASokC,GACT1+C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAAa,KAAGslC,GAxBzC/1C,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACC,IAAU,CACT0D,KAAK,QACLxD,aAAW,SACXD,QAfN,WACM8jC,GACJ8D,EAAmB9M,YAAY+I,EAASpI,GAAO,EAAGoD,IAc9C19B,UAAWD,EAAQmjC,QACnB3+C,IAAAoa,cAACwkC,KAAY,CAACp6B,SAAS,WAEzBxkB,IAAAoa,cAAA,OACEqB,UAAWD,EAAQ1O,SACnBwN,QAASokC,GACR3I,GAEH/1C,IAAAoa,cAACC,IAAU,CACT0D,KAAK,QACLxD,aAAW,SACXD,QAhCN,WACM8jC,GACJ8D,EAAmB9M,YAAY+I,EAASpI,EAAM,EAAGoD,KA+B7Cn5C,IAAAoa,cAACykC,KAAS,CAACr6B,SAAS,YC9L5B,MAAM5J,GAAYC,YAAYnH,IAAK,CACjCyrC,mBAAoB,GACpBC,kBAAmB,CACjBrgC,OAAQ,UAIG,SAASsjC,GAA4B9mC,GAClD,MAAM,SAAE+mC,EAAQ,aAAE/C,GAAe,EAAK,SAAE1iC,GAAatB,EAC/CC,EAAUZ,KACVsnC,EAAqBjgC,qBAAW03B,IAEtC,SAAS4I,EAAah1C,GACpB20C,EAAmBtvC,OAAOrF,GAG5B,OACEvN,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2jC,oBACtBn/C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4jC,mBACrB8C,EAAmB1uC,UAAYxT,IAAAoa,cAACuB,IAAc,MAAM,MAEtDumC,EAAmBpN,OAAO3nC,QAAQ9L,OAAS,EAC1CrB,IAAAoa,cAAApa,IAAAie,SAAA,KACGikC,EAAmBpN,OAAO3nC,QAAQ8X,IAAKvnB,GACtCsC,IAAAoa,cAAC6nC,GAA+B,CAC9Bx6C,IAAG,QAAA7I,OAAUlB,EAAKmP,QAClBnP,KAAMA,EACNm/C,SAAU0F,EACVD,SAAUA,EACV/C,aAAcA,EACd1iC,SAAUA,MAKhB7c,IAAAoa,cAAC4kC,GAAU,OChCJ,SAAS0C,GAAgBnmC,GACtC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBwoC,EAAqBjgC,qBAAW03B,IAChC7E,EAASoN,EAAmBpN,QAC5B,KAAE7xB,EAAI,QAAE3I,GAAYiB,EAE1B,SAASqmC,EAAYp3B,IAEF,YAAfA,EAAM/N,MACS,QAAd+N,EAAM/iB,KAA+B,UAAd+iB,EAAM/iB,MAIhC6S,GAAQ,GAyBV,OACEta,IAAAoa,cAACi5B,KAAM,CACLwO,OAAO,QACP5+B,KAAMA,EACNd,QAASy/B,EACTnmC,UAAWD,EAAQV,MACnB9a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ0vB,MACtBlrC,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAEzBzQ,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQyjC,KAhCxBj/C,IAAAoa,cAAA,YACG06B,EAAO3nC,QAAQ9L,OAAS,IACE,IAA1ByzC,EAAO3nC,QAAQ9L,OACdrB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eA4BzBzQ,IAAAoa,cAACioC,GAA2B,CAAC9C,cAAc,KAG7Cv/C,IAAAoa,cAAC4F,IAAM,CACL1F,QArBN,WACE4nC,EAAmBzI,eAqBfh/B,QAAQ,YACRjI,MAAM,YACN0N,MAAO,CAAErM,MAAO,cAAeuf,WAAY,GAAI9R,aAAc,KAC7DthB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEzBzQ,IAAAoa,cAACinC,GAAiB,CAChB5S,SAjCN,WACEn0B,GAAQ,GACRP,EAAK3B,QAAQY,KAAK,kCAgCd6nC,MAAOe,EACPN,YAAa,sB,qDCnDrB,MAAM1mC,GAAYC,YAAYnH,IAAK,CACjCinB,YAAa,CACX9mB,MAAO,IACPyN,aAAc,IAEhBxF,OAAQ,CACNA,OAAQpI,EAAMqI,QAAQ,IAExBymC,GAAI,CACF7jC,UAAWjL,EAAMqI,QAAQ,GACzBuF,aAAc5N,EAAMqI,QAAQ,GAC5BqX,WAAY1f,EAAMqI,QAAQ,GAC1BoD,YAAazL,EAAMqI,QAAQ,IAE7B0mC,KAAM,CACJzmB,WAAY,GAEdilB,KAAM,CACJlmC,QAAS,OACTkB,QAASvI,EAAMqI,QAAQ,IAEzBmlC,IAAK,CACHrtC,MAAO,OACPkL,OAAQ,GACRJ,UAAW,GACXQ,YAAa,GACb0a,SAAU,KAEZsnB,QAAS,CACP,MAAS,QACT,gBAAmB,QACnB,MAAS,OACT,SAAY,IACZ,YAAe,EACf,WAAc,OAEd,UAAW,CACT1iC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,UAKpCsG,GAAyB,CAAC,MAAO,MAAO,MAAO,OAowBtCC,OAlwBf,SAAsBpnC,GACpB,MAAMnD,EAAU2tB,cACVhsB,EAAOkI,qBAAWvI,GAClBk9B,EAAW30B,qBAAWy0B,IACtB+H,EAAcx8B,qBAAWk0B,IACzB36B,EAAUZ,MACV,YAAEgoC,GAAgBrnC,GAClB,kBAAEy8B,EAAiB,qBAAEC,GAAyBrB,GAC7CiM,EAAmBC,GAAwBvvC,mBAAS,KAEpDwvC,EAAWC,GAAgBzvC,mBAAS,IAE3CwE,oBAAU,KACJgC,EAAKrW,KAAK+E,UACZsR,EAAKjW,UACFmF,6BAA6B8Q,EAAKrW,KAAK+E,UACvCnJ,KAAMqX,IAAS,IAADyyB,EAAA6Z,EACb,MAAMF,EAAe,OAAHpsC,QAAG,IAAHA,GAAS,QAANyyB,EAAHzyB,EAAKjZ,YAAI,IAAA0rC,GAAQ,QAAR6Z,EAAT7Z,EAAW8Z,cAAM,IAAAD,OAAd,EAAHA,EAAmBhb,KAAK,CAACrK,EAAGsK,IACxCtK,EAAEntB,KAAOy3B,EAAEz3B,KAAa,EACxBmtB,EAAEntB,KAAOy3B,EAAEz3B,MAAc,EACtB,GAEH0yC,EAAiBT,GAAuBz9B,IAAKb,GACjD2+B,EAAU5+B,KAAMi/B,GAAYA,EAAQ1uB,OAAStQ,IAG/C4+B,EAAa,IAAIG,KAAmBJ,MAErCrjD,MAAM,SAEV,CAACqa,EAAKrW,KAAK+E,WAEd,MAAM,aACJ46C,EAAY,QACZ10B,EACA20B,OAAQC,EAAY,SACpBC,EAAQ,YACRC,GACEC,aAAQ,CAAEC,cAAe/M,EAASrB,eAEtC,IAAIqO,EAAetjD,KAASA,EAG5B,MAAMujD,EACJ9pC,EAAKrW,KAAKoI,iBAAiB+3C,yBA+C7B,SAASC,EAA6B1hD,GACpC61C,GAAqB,GAErB8L,EADclB,EAAkB1+B,KAAM3N,GAAMA,EAAEpU,KAAOA,IAErD61C,GAAqB,GAGvB,SAAS8L,EAAWC,GAClBR,EAAS,eAAgBQ,EAAQvzC,MACjC+yC,EAAS,sBAAuBQ,EAAQC,QACxCT,EAAS,sBAAuBQ,EAAQE,SACxCV,EAAS,kBAAmBQ,EAAQG,KACpCX,EAAS,eAAgBQ,EAAQI,MACjCZ,EAAS,kBAAmBQ,EAAQZ,SA2DtC,OAxDArrC,oBAAU,KACR,GAAI0mC,EAAY3J,OAAO3nC,SAAWsxC,EAAY3J,OAAO/nC,oBAAqB,CAExE,IAAIs3C,EAAgB5F,EAAY3J,OAAO3nC,QAAQ8X,IAC5Cb,GAAOA,EAAGpX,uBAEb,MAAMs3C,EAAgBD,EAAgBA,EAAcpc,OAAO,GAC3Dub,EAAS,eAAgBc,GACzBzlD,QAAQC,IAAI,gCAEb,CAAC2/C,EAAY3J,OAAO3nC,QAASsxC,EAAY3J,OAAO/nC,sBAEnDgL,oBAAU,KAiCJgC,EAAK1G,gBAGF0G,EAAKrW,KAAKoI,iBAAiB3F,UAlChC4T,EAAKjW,UACFkF,gCAAgC+Q,EAAKrW,KAAKoI,iBAAiB3F,WAC3D7G,KAAMkX,IACL,GAAiB,MAAbA,EAAE/Y,OAAgB,CAMpB,IAAIumD,EALJlB,EACEtsC,EAAE9Y,KAAKuqC,KAAK,CAACrK,EAAGsK,IACdtK,EAAEntB,KAAOy3B,EAAEz3B,MAAQ,EAAI0vC,OAAOviB,EAAEntB,KAAOy3B,EAAEz3B,QAM7CuzC,EACExtC,EAAE9Y,KAAKymB,KAAMogC,GAA8B,IAArBA,EAAKC,cAC3BhuC,EAAE9Y,KAAKymB,KAAMogC,GAA8B,IAArBA,EAAKC,cAC3BhuC,EAAE9Y,KAAK,GACLs6C,GACF+L,EAAWC,GAEbR,EAAS,oBAAqBQ,EAAQ5hD,IACtCw0C,EAAStjC,kBAAiB,MAG7B5T,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,KACP4/B,EAASnjC,cAAa,KAQxB2E,EAAQY,KAAK,YAKhB,IAGDhZ,IAAAoa,cAAA,QAAMq0B,SAAU4U,GAtHlB,SAAkBv8C,GAChB8vC,EAASnjC,cAAa,GACtBmjC,EAASsB,qBAAqBpxC,EAAU87C,OAqHtC5iD,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACVgb,QAAQ,UACRjuC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,EACJkkB,GAAI,GACJzkD,IAAAoa,cAAA,UAAI,MACCpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAG1BzQ,IAAAoa,cAAA,OACE8F,MAAO,CACLnF,QAAS8oC,EAA2B,QAAU,SAEhD7jD,IAAAoa,cAAA,WAEEpa,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAS,GAAA7c,OAAK4c,EAAQmf,YAAW,KAAA/7B,OAAI4c,EAAQM,SAC7C9b,IAAAoa,cAACsqC,KAAY,CACXpmC,SAAUA,CAACkM,EAAOm6B,KAChBb,EAA6Ba,EAAOviD,KAEtCszB,QAASmtB,EACT+B,kBAAgB,EAChBC,eAAiBb,GAAO,GAAAplD,OACnBolD,EAAQvzC,KAAI,MAAA7R,OAAKolD,EAAQC,OAAM,MAAArlD,OAAKolD,EAAQE,SAEjDY,YAAc9b,GACZhpC,IAAAoa,cAAC6C,IAASC,OAAAC,OAAA,GACJ6rB,EAAM,CACV9hC,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,4BAEzBgK,QAAQ,WACRiC,WAAS,QAOjB1c,IAAAoa,cAAC2qC,KAAU,CACTp2B,QAASA,EACTle,KAAK,gBACL8P,OAAQ1G,IAAA,IAAC,SAAEyE,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKnrC,EAAA,OAC7C7Z,IAAAoa,cAACsU,KAAgB,CACfjT,UAAS,GAAA7c,OAAK4c,EAAQM,OAAM,KAAAld,OAAI4c,EAAQinC,MACxC9zB,QACE3uB,IAAAoa,cAACgP,KAAQ,CACP3Y,KAAMA,EACN+B,MAAM,UACN4sB,OAAQA,EACR/V,QAASnR,EACT+sC,SAAUD,EACV1mC,SAAW1U,GArKnC,SAA6Bs7C,GAC3B,GAAIA,EACF1B,EAAS,eAAgB,IACzBA,EAAS,sBAAuB,IAChCA,EAAS,sBAAuB,IAChCA,EAAS,kBAAmB,IAC5BA,EAAS,eAAgB,IACzBA,EAAS,kBAAmB,IAG5BA,EAAS,oBAAqB,IAC9BvL,GAAqB,OAChB,CACL,IAAI+L,EACFnB,EAAkB1+B,KAAMogC,GAA8B,IAArBA,EAAKC,cACtC3B,EAAkB1+B,KAAMogC,GAA8B,IAArBA,EAAKC,cACtC3B,EAAkB,GACpBW,EAAS,oBAAqBQ,EAAQ5hD,IACtC0hD,EAA6BE,EAAQ5hD,IAGvCohD,EAAS,gBAAiB0B,GAE1BzB,EAAY,CACV,eACA,sBACA,sBACA,kBACA,eACA,oBAyIsB0B,CAAoBv7C,EAAEI,OAAOqf,WAInCniB,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCAOjCzQ,IAAAoa,cAAC2Q,KAAO,CACN/Y,OAAK,EACLyJ,UAAWD,EAAQgnC,KAGrBxiD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,eACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQG,IAAA,IAAC,SAAEpC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKtkC,EAAA,OAC7C1gB,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnBspC,WACE7B,EAAavM,aACTuM,EAAavM,aAAa1iC,QAC1B,KAENpN,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BpT,MAAOumD,EAAYL,EAAavM,cAChCv8B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG3BqM,UAAW,CACT5E,MAAO,IACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAOnCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,sBACLke,QAASA,EACT/K,aAAa,GAEbrD,OAAQ+kC,IAAA,IAAC,SAAEhnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKM,EAAA,OAC7CtlD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnBspC,WACE7B,EAAatM,oBACTsM,EAAatM,oBAAoB3iC,QACjC,KAENpN,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAEzBpT,MAAOumD,EAAYL,EAAatM,qBAChCx8B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG3BqM,UAAW,CACT5E,MAAO,GACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAOnCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,sBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQglC,IAAA,IAAC,SAAEjnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKO,EAAA,OAC7CvlD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,sBACHgjD,WACE7B,EAAarM,oBACTqM,EAAarM,oBAAoB5iC,QACjC,KAENpN,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAEzBpT,MAAOumD,EAAYL,EAAarM,qBAChCz8B,QAAQ,cAGZ4qC,MAAO,CACLvoC,UAAW,CACT5E,MAAO,GACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAOnCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ4C,WAAS,EACT8G,UAAU,OACVjzB,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,kBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQilC,IAAA,IAAC,SAAElnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKQ,EAAA,OAC7CxlD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,kBACHgjD,WACE7B,EAAapM,gBACToM,EAAapM,gBAAgB7iC,QAC7B,KAENpN,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAC9BpT,MAAOumD,EAAYL,EAAapM,iBAChC18B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,OAAQ8/B,EACR1jC,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,4BAK/BzQ,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,eACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQklC,IAAA,IAAC,SAAEnnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKS,EAAA,OAC7CzlD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,eACHgjD,WACE7B,EAAanM,aACTmM,EAAanM,aAAa9iC,QAC1B,KAENpN,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BpT,MAAOumD,EAAYL,EAAanM,cAChC38B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,OAAQ8/B,EACR1jC,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,+BAQrCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,kBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQmlC,IAAA,IAAC,SAAEpnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKU,EAAA,OAC7C1lD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACyK,KAAU,CACT3E,MAAO,CACLkT,WAAY,OACZ3U,gBAAiB,SAEnBrc,GAAG,wBACFpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAE1BzQ,IAAAoa,cAAC0K,KAAM,CACLmgC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,IACT0U,EAAS1U,EAAEI,OAAOkO,QAEpBzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,kBACH2iB,QAAQ,uBACR7d,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAC9B20C,WACE7B,EAAalM,gBACTkM,EAAalM,gBAAgB/iC,QAC7B,KAENjX,MAAOumD,EAAYL,EAAalM,iBAChC58B,QAAQ,YACPsoC,EAAU99B,IAAKb,GACdpkB,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOkM,EAAGsQ,MAAOtQ,EAAG3T,UAKtC40C,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG3BqM,UAAW,CACT5E,MAAO,GACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAQnCzQ,IAAAoa,cAAC2Q,KAAO,CACN/Y,OAAK,EACLyJ,UAAWD,EAAQgnC,OAM3BxiD,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTp2B,QAASA,EACTle,KAAK,eACL6N,SAAW4Y,IACTssB,EAAS,eAAgBtsB,EAAKG,UACvB,CAAEnf,MAAOgf,IAElB3W,OAAQolC,IAAA,IAAC,SAAErnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKW,EAAA,OAC7C3lD,IAAAoa,cAACob,GAAU,CACT2nB,QAAM,EACN9/C,MAAOumD,EAAYL,EAAajM,cAChC2N,SAAUD,EACVY,aAAa,WACb1+C,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAC9BA,KAAMA,EACN2uB,OAAQA,EACR9gB,SAAUA,EACVpG,MAAOA,EACP2tC,aAAa,EACbpqC,UAAWD,EAAQM,OAEnBqd,SAAUslB,EAAY3J,OAAO/nC,oBAC7BuQ,WAAY,CACVa,WAAY,CACVgb,UAAU,OAKlBksB,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAM1CzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,cACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQulC,IAAA,IAAC,SAAExnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKc,EAAA,OAC7C9lD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnBqC,WAAY,CACVrB,UAAW,IAEb1a,GAAG,cACHgjD,WACE7B,EAAahM,YACTgM,EAAahM,YAAYjjC,QACzB,KAENmG,QAAQ,WACRvT,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAC9BpT,MAAOumD,EAAYL,EAAahM,oBAsC1Cv3C,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,YACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQwlC,IAAA,IAAC,SAAEznC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKe,EAAA,OAC7C/lD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnB1Z,GAAG,YACHgjD,WACE7B,EAAa9L,UACT8L,EAAa9L,UAAUnjC,QACvB,KAENpN,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAC9BpT,MAAOumD,EAAYL,EAAa9L,WAChCh9B,QAAQ,kBAOlBza,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQylC,IAAA,IAAC,SAAE1nC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKgB,EAAA,OAC7ChmD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnB1Z,GAAG,gBACHgjD,WACE7B,EAAa5L,cACT4L,EAAa5L,cAAcrjC,QAC3B,KAENmG,QAAQ,WACRvT,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9BpT,MAAOumD,EAAYL,EAAa5L,eAChCx5B,WAAY,CAAErB,UAAW,WAOnC9c,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,mBACL8P,OAAQ0lC,IAAA,IAAC,SAAE3nC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKiB,EAAA,OAC7CjmD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnB1Z,GAAG,mBACH+b,WAAY,CACVrB,UAAW,IAEbsoC,WACE7B,EAAa7L,iBACT6L,EAAa7L,iBAAiBpjC,QAC9B,KAENmG,QAAQ,WACRvT,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAC9BpT,MAAOumD,EAAYL,EAAa7L,qBAGpC/oB,QAASA,EACT/K,aAAa,GACbyhC,MAAO,CACLa,QAAS,CACPhuC,MAAO,4CACP5D,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAM1CzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,UACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQ4lC,IAAA,IAAC,SAAE7nC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKmB,EAAA,OAC7CnmD,IAAAoa,cAACyF,EAAkB,CACjB6F,WAAS,EACT0gC,QAAS,EACT//B,KAAM,EACNnO,MAAOA,EACPzH,KAAMA,EACN2uB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnChR,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAC9Bw0C,SAAUD,EACVtoC,WAAS,EACTI,UAAW,OAGfuoC,MAAO,CACLvoC,UAAW,CACT5E,MAAO,IACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uCAMjCzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,UACVjzB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQylC,MACtBjhD,IAAAoa,cAAC4F,IAAM,CACL1F,QAtrBC+rC,KACbxnD,QAAQC,IAAI2/C,GACZrmC,EAAQY,KACNylC,EAAY3J,OAAO/nC,oBAAsB,YAAc,oBAorB7C0N,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAS,GAAA7c,OAAK4c,EAAQ0lC,MACtBlhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvD,KAAK,SACLhC,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAS,GAAA7c,OAAK4c,EAAQ0lC,IAAG,KAAAtiD,OAAI4c,EAAQ2lC,UACrCnhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBACvBzQ,IAAAoa,cAACqnC,KAAgB,CACfvhC,MAAO,CAAEkT,WAAY,GACrB5O,SAAS,iBC3zB3B,MAAM8hC,GAAazrC,YAAW,MAC5B0rC,UAAW,CACT/zC,MAAO,UACPuI,QAAS,OACT6e,aAAc,qBACdpV,SAAU,OACVlD,aAAc,OAEhBklC,cAAe,CACbpmB,WAAY,SACZjhB,YAAa,OAEfsnC,eAAgB,MAEH,SAASC,GAAgBnrC,GACtC,MAAMC,EAAU8qC,MACV,MAAEp/C,EAAK,KAAEuJ,EAAI,MAAEyH,GAAUqD,EAE/B,OACEvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+qC,WACtBvmD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQgrC,eACrBt/C,EAAQlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMvJ,IAAY,CAAEuJ,SAEjDzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQirC,gBAAiBvuC,I,yBCvB/C,MAAMyuC,GAAY,CAChBC,SAAU,EACVC,SAAU,EACVC,QAAS,GAgCX,SAASC,GAAYC,GACnB,OAAQA,EAAaC,WAAaN,GAAUC,UAAYI,EAAaE,mBAAqB,GACpFF,EAAaC,YAAcN,GAAUC,SAG7C,SAASO,GAAeH,GACtB,QAA8B1lD,GAA1B0lD,EAAaC,WACZD,EAAaC,WAAaN,GAAUC,SAIzC,OACE5mD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACgtC,KAAO,CACNlnC,MAAO,CACL1N,MAAOw0C,EAAaC,WAAaN,GAAUE,SAAW,QAAU,MAChE7W,cAAe,SACfn8B,MAAO,GACPkL,OAAQ,GACRqU,WAAY,KAGhBpzB,IAAAoa,cAAA,QACE8F,MAAO,CACL1N,MAAOw0C,EAAaC,WAAaN,GAAUE,SAAW,QAAU,MAChEriC,SAAU,KAEXwiC,EAAaC,WAAaN,GAAUE,SACjC7mD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBACvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBA4EpB,QACb42C,UAvIF,SAAmB9e,EAAOmN,GACxB,IAAI4R,EAAgB,GAQpB,OANA5R,EAAQ6R,UAAUh5B,QAAQ2tB,IACpBA,EAAMsL,aAAejf,GAAS2T,EAAMsL,YAAc,IACpDF,EAAgBpL,KAIboL,GA+HPG,WA5HF,SAAoB/R,GAClB,OAAQA,EAAQ6R,UAAUlmD,QA4H1BqmD,sBAzHF,SAA+BhS,EAASiS,GACtC,GAAIA,EAAS,EACX,OAAO,EAET,MAAM,gBAAE3J,EAAe,kBAAEC,GAAsBvI,EAEzC7L,EAAYoU,GAAqB,EACvC,OAAI0J,GAAU3J,EACLA,EAEF4J,KAAKC,KAAKF,EAAS9d,GAAaA,GAgHvCkd,YAAW,GACXI,kBACAW,aA3EF,SAAsBh7C,EAAU4oC,GAC9B,MAAMqS,EAAYrS,EACf6R,UACApjC,KAAKC,GAAMA,EAAGojC,YAAc16C,IACvBsX,EAAG6iC,WAAaN,GAAUG,SAAW1iC,EAAG6iC,WAAaN,GAAUE,WAErE,GAAKkB,EAIH,OACE/nD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACgtC,KAAO,CACNlnC,MAAO,CACL1N,MAAOu1C,EAAUd,WAAaN,GAAUE,SAAW,QAAU,MAC7D7W,cAAe,SACfn8B,MAAO,GACPkL,OAAQ,GACRqU,WAAY,KAGhBpzB,IAAAoa,cAAA,QACE8F,MAAO,CACL1N,MAAOu1C,EAAUd,WAAaN,GAAUE,SAAW,QAAU,QAE9DkB,EAAUP,YAAYxnD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAAiB,OAmDzEu3C,YA7CF,SAAqBhB,EAAcxrC,GACjC,OACExb,IAAAoa,cAAApa,IAAAie,SAAA,KACG8oC,GAAYC,GACXhnD,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQysC,aAAcjB,EAAakB,YACjDf,GAAeH,IAGnBhnD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQysC,aACvBjoD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UACrB02C,GAAeH,MAmCzBmB,gBA5BF,SAAyBnB,EAAcl6C,EAAU0O,GAC/C,OACExb,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YAAapB,EAAaqB,UACnDroD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8sC,WACtBvB,GAAYC,GACXhnD,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAGzB,GACC,IACHzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAA4B,IAClD3D,GAAY,EACb9M,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAe7Bk2C,cCtJF,MAAM/rC,GAAYC,YAAYnH,IAAK,CACjC6nC,UAAW,CACT/2B,SAAU,GACVyX,cAAe,YACfzpB,MAAO,OACPmM,UAAW,EAEX,CAACjL,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5B3c,WAAY,SAGhBooB,cAAe,CACb,eAAkB,YAElB,UAAW,CACTvyB,OAAQ,YAGZwyB,IAAK,CACH5nC,MAAO,EACPkL,OAAQ,EACRN,gBAAiB,QACjB1D,QAAS,eACToB,aAAc,EACdL,OAAQ,QACR+C,UAAW,oBAEb68B,QAAS,CACPj9B,gBAAiB,UAEnBk9B,OAAQ,CACNl9B,gBAAiB,UAIN,SAASm9B,GAAUrgC,GAChC,MAAMC,EAAUZ,MACV,KAAEwN,EAAI,OAAE3qB,EAAS,GAAM8d,EAEvBsgC,EAAa,CACjBC,EAAGtgC,EAAQigC,IACX1hB,EAAE,GAADn7B,OAAK4c,EAAQigC,IAAG,KAAA78C,OAAI4c,EAAQkgC,SAC7BK,EAAE,GAADn9C,OAAK4c,EAAQigC,IAAG,KAAA78C,OAAI4c,EAAQmgC,SAG/B,OACE37C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+/B,WACtBv7C,IAAAoa,cAAA,QAAMqB,UAAWogC,EAAWp+C,KAC5BuC,IAAAoa,cAAA,YAAOgO,ICpCb,MAAMxN,GAAYC,YAAYnH,IAAK,CACjC60C,UAAW,CACTxtC,QAAS,OACTytC,aAAc,OACdC,oBAAqB,mEACrBC,iBAAkB,cAClBC,IAAK,UACLpqC,WAAY,UAEdqqC,gBAAiB,CACfpkC,SAAU,OACV1S,WAAY,6CACZsuB,WAAY,IACZyoB,WAAY,IACZC,cAAe,YACfxtB,UAAW,OACXrf,QAAS,YAEX8sC,UAAW,CACTtrC,SAAU,WACVxB,QAAS,WACT+2B,WAAY,UAEdgW,iBAAkB,CAChBC,WAAY,iBACZhtC,QAAS,cAEXitC,cAAe,CACbjtC,QAAS,aACTmX,WAAY,GAEdnf,MAAO,CACLuQ,SAAU,GACV4b,WAAY,OACZrlB,QAAS,QAET,CAACrH,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5BvrB,SAAU,KAGdtd,MAAO,CACL+0B,cAAe,YACfzX,SAAU,GACV/F,gBAAiB,0BACjBjM,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1B3+B,SAAU,SACV0B,YAAa,GACblD,QAAS,GAEXktC,MAAO,CACL3kC,SAAU,IAEZ4kC,UAAW,CACTruC,QAAS,eACTqY,WAAY,GACZvU,UAAW,oBAEbwqC,eAAgB,CACdjqC,eAAgB,YAChB6J,OAAQ,WAEVnc,SAAU,CACR+G,MAAO,OAEP,UAAW,CACT4rB,aAAc,IAGlByhB,IAAK,CACH1uC,MAAO,QACPiM,gBAAiB,QACjByN,SAAU,EACVnN,OAAQ,GAER,UAAW,CACTN,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxC6L,YAAa,CACXzjC,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BrhC,QAAS,SAEXutC,UAAW,CACT9jC,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BrhC,QAAS,eACTqY,WAAY,IAEdtjB,SAAU,CACR2N,SAAU,WACVtC,IAAK,QACLkR,KAAM,OACN7Z,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1B53B,SAAU,IAEZ4jC,WAAY,CACV5jC,SAAU,GACV4b,WAAY,OACZrlB,QAAS,gBAEXyhC,IAAK,CACHr3B,SAAU,OACVs3B,UAAW,QAEb6M,sBAAuB,CACrBvuC,QAAS,QACToE,YAAa,QAEfoqC,oBAAqB,CACnBxuC,QAAQ,QACRi4B,WAAW,UAEbwW,gBAAiB,CAAEzuC,QAAQ,OAAOqlB,WAAW,MAAMyoB,WAAW,MAAMC,cAAc,YAAY7sC,QAAQ,QAAQuI,SAAS,WAG1G,SAASilC,GAAUluC,GAChC,MAAMC,EAAUZ,KACV8wB,EAAgBzpB,qBAAWwoB,IAC3BqK,EAAS7yB,qBAAWk0B,IACpBuT,EAAW,CAACC,eAAe,EAAOC,YAAY,EAAOC,cAAc,EAAOj3C,YAAQtR,KAAcia,GAEtG,IAAKA,EAAM+sB,SACT,OAAQtoC,IAAAoa,cAAApa,IAAAie,SAAA,MAGV,MAAM6rC,EAAQvuC,IACZ,MAAOyrC,EAAc+C,GAAmBx2C,mBAASy2C,GAAe3C,UAAU9rC,EAAMm6B,QAAQ5oC,UAAYyO,EAAMm6B,QAAQnN,MAAOhtB,EAAMm6B,WACxH5oC,EAAUm9C,GAAe12C,mBAASgI,EAAMm6B,QAAQ5oC,UACjDm4C,EAAWhlD,iBAAO,MAExB8X,oBAAU,KACHwD,EAAMm6B,QAAQ5oC,UAIfyO,EAAMm6B,QAAQ5oC,UAAY,GAC5Bo9C,EAAqB,CACnBlgD,OAAQ,CACNkO,MAAQqD,EAAMm6B,QAAQ6R,UAAU,IAAMhsC,EAAMm6B,QAAQ6R,UAAU,GAAGC,aAAgB,MAItF,CAACjsC,EAAMm6B,UAEV,MAAMwU,EAAwBtgD,IAC5B,IAAIijB,EAAMjjB,EAAEI,OAAOkO,MACfgkC,EAAQ8N,GAAe3C,UAAUx6B,EAAKtR,EAAMm6B,SAEhDn6B,EAAMm6B,QAAQ5oC,SAAW+f,EACzBo9B,EAAYp9B,GACZk9B,EAAgB7N,GAEZwN,EAASS,kBACXT,EAASS,iBAAiB5uC,EAAMm6B,QAAQC,UAAW9oB,IA6DvD,OACE7sB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAK8F,MAAQ3E,EAAMsuC,aAAwE,GAAzD,CAACjwB,aAAc,iBAAkBwwB,WAAY,aAC7E7uC,EAAMsuC,cACN7pD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQutC,UAAW7oC,MAAO,CAACuf,aAAc,IACvDz/B,IAAAoa,cAAA,OAAK8F,MAAO,CAACrM,MAAO,OAAQkL,OAAQ,OAAQtB,SAAU,aACpDzd,IAAAoa,cAAA,OAAK8F,MAAO,CAAC/E,IAAK,EAAGkR,KAAM,EAAGxY,MAAO,OAAOkL,OAAQ,OAAOtB,SAAU,aACnEzd,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0B2c,EAAMm6B,QAAQC,WAC1Cr7B,QAASoxB,EAAcrB,YACvB5uB,UAAWD,EAAQ6uC,gBACnBnqC,MAAO,CAACnF,QAAS,OAAQgE,OAAQ,OAAQR,WAAY,SAAUvD,eAAgB,WAE/Ehb,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQghC,IACnB7G,UAAWp6B,EAAMm6B,QAAQC,UACzBn2B,IAAKjE,EAAMm6B,QAAQ7gB,YACnBqmB,cAAc,2BACdD,UAAW1/B,EAAMm6B,QAAQuF,gBAMnCj7C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQutC,WACtB/oD,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0B2c,EAAMm6B,QAAQC,WAC1Cl6B,UAAS,GAAA7c,OAAK4c,EAAQvH,OACtBqG,QAASoxB,EAAcrB,aAAc9uB,EAAMm6B,QAAQ7gB,aAErD70B,IAAAoa,cAAA,QAAMqB,UAAS,GAAA7c,OAAK4c,EAAQtU,QAAUqU,EAAMm6B,QAAQ4U,SAEpDtqD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ2tC,OAAOnpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAAkBzQ,IAAAoa,cAAA,YAAM,IAAEmB,EAAMm6B,QAAQC,YAE/F31C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4tC,WACtBppD,IAAAoa,cAACwhC,GAAS,CACRxzB,KAAM7M,EAAMm6B,QAAQ2I,cACpB5gD,OAAQ8d,EAAMm6B,QAAQ4I,mBAIzB/iC,EAAMm6B,QAAQ6U,WAAWlpD,OAAS,GACjCrB,IAAAoa,cAAA,OACEE,QAASA,IAAMiB,EAAMivC,mBAAmBjvC,EAAMm6B,QAAQC,YACtD31C,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ6tC,gBACvBrpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAOnCzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQutC,UAAW7oC,MAAO3E,EAAMsuC,aAAe,CAACrqB,YAAa,GAAI,IAC/Ex/B,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQguC,iBACtBxpD,IAAAoa,cAAA,WAC2B,IAAxBmB,EAAMm6B,QAAQnN,OAAgBvoC,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,uBAAuBtpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAnFzFg6C,MACrB,IAAIvO,EAAQ3gC,EAAMm6B,QAAQ6R,UAAUpjC,KAAKva,GAAKA,EAAEq9C,WAAa+C,GAAerD,UAAUG,SAAWl9C,EAAEq9C,WAAa+C,GAAerD,UAAUE,UAEzI,OAAK3K,EAQDA,EAAM+K,WAAa+C,GAAerD,UAAUE,SAE5C7mD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,sBAAuBppC,MAAO,CAAC1N,MAAO,UAC7DxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAMzBzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,sBAAuBppC,MAAO,CAAC1N,MAAO,QAC7DxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAhBzBzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,uBACvBtpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBA8EpBg6C,GACDzqD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,uBAAuB,aAElDtpD,IAAAoa,cAAA,OAAK8F,MAAO,CAACob,UAAW,QACG,IAAxB/f,EAAMm6B,QAAQnN,OAAgBvoC,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ+tC,qBAAqB,KAAGhuC,EAAMm6B,QAAQnN,MAAM,EAAE,IAACvoC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9HzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ+tC,qBAnGTmB,MACxB,IAAIxO,EAAQ3gC,EAAMm6B,QAAQ6R,UAAUpjC,KAAKva,GAAKA,EAAEq9C,WAAa+C,GAAerD,UAAUG,SAAWl9C,EAAEq9C,WAAa+C,GAAerD,UAAUE,UAEzI,OAAK3K,EAIEA,EAAMsL,YAHJjsC,EAAMm6B,QAAQnN,OA+FgCmiB,GAAoB,IAAC1qD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC3FzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ+tC,qBAAsBhuC,EAAMm6B,QAAQiV,SAASC,mBAAmB,IAAC5qD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAIvHzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQutC,UAAW7oC,MAAO,CAACob,UAAW,WAClD/f,EAAMsvC,iBACN7qD,IAAAoa,cAAApa,IAAAie,SAAA,KACG+rC,GAAejD,YAAYC,IAC1BhnD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQysC,aAAcjB,EAAakB,YAErDloD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YAAapB,EAAaqB,WAItD9sC,EAAMsvC,iBACL7qD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YACtB7sC,EAAMm6B,QAAQoV,yBAIrB9qD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQwtC,kBACtBhpD,IAAAoa,cAAC6C,IAAS,CACRmiB,OAhIc2rB,KACpB,MAAMC,EAAkBhB,GAAetC,sBAAsBnsC,EAAMm6B,QAAS5oC,GAC5Em9C,EAAYe,GACZjB,EAAgBC,GAAe3C,UAAU2D,EAAiBzvC,EAAMm6B,WA8H1D33B,KAAK,QACLtB,KAAK,SACLvE,MAAOqD,EAAMm6B,QAAQ5oC,SACrBwR,SAAU4rC,EACVzuC,UAAWD,EAAQ1O,SACnBwQ,WAAY,CACVa,WAAY,CACV8sC,KAAM1vC,EAAMm6B,QAAQnN,OAAS,IAGjC0c,SAAUA,EACV3qC,QAASA,KAAO2qC,EAAS/kD,QAAQqnB,OAAO,GAAI,IAC5CrgB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9BgK,QAAQ,cAGZza,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ0tC,cAAehpC,MAAO3E,EAAMsuC,aAAe,CAACpqB,aAAc,GAAI,KAClFiqB,EAAS92C,QACT5S,IAAAoa,cAAC4F,IAAM,CACLnD,SAAUmtC,GAAevC,WAAWlsC,EAAMm6B,SAC1Cj7B,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAWD,EAAQ0lC,IACnB5mC,QArKW1Q,IACnBkrC,EAAOniC,IAAI,CACT9F,OAAQ0O,EAAMm6B,QAAQC,UACtBI,IAAKiU,GAAetC,sBAAsBnsC,EAAMm6B,QAAS5oC,GACzDrG,WAAY,KACZuG,sBAAuB,OAGrB08C,EAASwB,iBACXxB,EAASwB,gBAAgB3vC,EAAMm6B,WA6JzB11C,IAAAoa,cAAC8G,KAAO,OAIXwoC,EAAS92C,QACR5S,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRgB,UAAWD,EAAQ0lC,IACnB5mC,QAASA,IAAMovC,EAAS92C,OAAO2I,EAAMm6B,QAAQC,YAC7C31C,IAAAoa,cAACokC,KAAU,UAQvB,OACEx+C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+sC,YACpBmB,EAASE,YACT5pD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAK8F,MAAO,CAAC0Z,aAAc,OAAQwwB,WAAY,YAC/CpqD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQotC,gBAAiB1oC,MAAO,CAACuf,aAAc,KAC/Dz/B,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQotC,iBAAiB5oD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAChEzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQotC,iBAAiB5oD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAChEzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQotC,gBAAiB1oC,MAAO,CAACob,UAAW,UAAUt7B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAC7FzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQotC,iBAAiB5oD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAChEzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQotC,mBAI3BrtC,EAAM+sB,SAASrjB,IAAKywB,GACnB11C,IAAAoa,cAAC0vC,EAAI,CAACpU,QAASA,EAAS8U,mBAAoBjvC,EAAMivC,mBAAoBK,gBAAiBtvC,EAAMsvC,gBAAiBhB,aAActuC,EAAMsuC,iBCxW1I,MAAMjvC,GAAYC,YAAYnH,IAAK,CACjCy3C,WAAY,CACVpsC,OAAQ,OACR,CAACrL,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B/hB,OAAQ,SAGZqsC,iBAAkB,CAChBl/B,SAAU,EACVnN,OAAQ,oBACRjD,OAAQ,SAEVuvC,kBAAmB,CACjBtsC,OAAQ,OACRxM,WAAY,UACZ0I,cAAe,SACf4kB,KAAM,EACN9kB,QAAS,OACTC,eAAgB,SAChB,CAACtH,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B2b,UAAW,QACXvwB,SAAU,EACVo/B,UAAW,SAGfC,cAAe,CACbpmC,SAAU,OACVs3B,UAAW,MACX1hC,QAAS,OACTE,cAAe,MACfD,eAAgB,UAElBwwC,kBAAmB,CACjB33C,MAAO,OACPkL,OAAQ,QAEV0sC,eAAgB,CACd1wC,QAAS,OACTC,eAAgB,SAChB,CAACtH,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B2b,UAAW,QACXt3B,SAAU,UAGdumC,KAAM,CACJzvC,QAASvI,EAAMqI,QAAQ,GACvB0C,gBAAiB,QACjBM,OAAQ,OACR,CAACrL,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B7kB,QAASvI,EAAMqI,QAAQ,GACvBuF,aAAc,QAEhB,CAAC5N,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B7kB,QAASvI,EAAMqI,QAAQ,KAG3B4vC,cAAe,CACbrwB,UAAW,OACX9oB,MAAOkB,EAAM9B,QAAQwW,KAAKrW,QAC1BquB,WAAY,OACZ9e,aAAc,IAEhBsqC,mBAAoB,CAClBnuC,SAAU,WACVxB,QAASvI,EAAMqI,QAAQ,IAEzB8vC,eAAgB,GAChBC,YAAa,CACX/sC,OAAQ,OACRosB,UAAW,UAEb4gB,IAAK,CACH34B,YAAa,GACbjU,aAAc,OAIH,SAAS6sC,GAAqBzwC,GAC3C,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,IAEhB6P,KAAMmsB,GAAYn6B,EAM1B,OACEvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4vC,kBACtBprD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQowC,oBACtB5rD,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnB4H,QATR,WACEP,EAAK3B,QAAQiuC,WASPrmD,IAAAoa,cAAC6xC,KAAQ,CAACxwC,UAAWD,EAAQ0wC,UAC7BlsD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAI3BzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,EACTN,UAAWD,EAAQ2vC,WACnBl4B,UAAU,OACVjzB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQ6vC,kBACnB7hC,GAAI,GACJ+W,GAAI,EACJkkB,GAAI,GACJzkD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+vC,eACtBvrD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQiwC,gBACtBzrD,IAAAoa,cAAC4gC,GAAY,CACXx7B,IAAKk2B,EAAQ7gB,YACbpZ,UAAWD,EAAQgwC,kBACnB7V,UAAWD,EAAQC,UACnBsF,UAAWvF,EAAQuF,UACnBC,cAAc,uBAMtBl7C,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,EACJkkB,GAAI,EACJhpC,UAAWD,EAAQswC,aACnB9rD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQkwC,MACtB1rD,IAAAoa,cAACqvC,GAAS,CACRG,YAAY,EACZC,cAAc,EACdvhB,SAAU,CAAC,IACNoN,EACH5oC,SAAU4oC,EAAQ5oC,UAAY4oC,EAAQnN,QAExCsiB,iBAAiB,EACjBsB,QAAS,cAGXnsD,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,UAEzB3e,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,KACVnE,UAAWD,EAAQmwC,eAClBjW,EAAQ7gB,aAGX70B,IAAAoa,cAACssC,GAAe,CAACx/C,MAAM,yBACpBwuC,EAAQ0W,cACTpsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,aACNgR,MAAOw9B,EAAQ0W,eAGnBpsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,yBACNgR,MAAOw9B,EAAQoV,yBAEjB9qD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,aACNgR,MAAOw9B,EAAQC,YAEjB31C,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,MACNgR,MAAOw9B,EAAQ4W,MAEhBvyC,EAAKrW,KAAK+R,YAAYga,eACrBzvB,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQ2I,gBAGnBr+C,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,UAEzB3e,IAAAoa,cAACssC,GAAe,CAACx/C,MAAM,oBACtBwuC,EAAQ6R,UAAUtiC,IAAI,CAACi3B,EAAO32B,IAC7BvlB,IAAAoa,cAAA,OAAK3S,IAAG,KAAA7I,OAAO2mB,IACbvlB,IAAAoa,cAACiyC,GAAY,CACXnlD,MACEg1C,EAAMsL,cAAgB9R,EAAQnN,MAC1B,qBACA,WAENrwB,MAAOgkC,EAAMsL,cAEfxnD,IAAAoa,cAACiyC,GAAY,CACXnlD,MACEg1C,EAAMsL,cAAgB9R,EAAQnN,MAC1B,eACA,kBAENrwB,MAAOgkC,EAAMmM,WAEe,IAA7BnM,EAAMgL,oBACLlnD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,qBACNgR,MAAOgkC,EAAMgL,mBAAqB,MAGtClnD,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,YAI7B3e,IAAAoa,cAACssC,GAAe,CAACx/C,MAAM,eACvBlH,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQ6W,UAAUC,QAAU,QAErCxsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQ6W,UAAUE,QAAU,QAErCzsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,SACNgR,MAAOw9B,EAAQ6W,UAAUG,SAAW,QAEtC1sD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,UACNgR,MAAOw9B,EAAQ6W,UAAUI,QAAU,OAErC3sD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,WACNgR,MAAOw9B,EAAQ6W,UAAUK,WAAa,QAExC5sD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,cACNgR,MAAOw9B,EAAQ6W,UAAUM,cAAgB,QAE3C7sD,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,UAEzB3e,IAAAoa,cAACssC,GAAe,CAACx/C,MAAM,YACvBlH,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,qBACNgR,MAAOw9B,EAAQoX,QAAQC,yBAGzB/sD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQoX,QAAQN,QAAU,QAEnCxsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQoX,QAAQL,QAAU,QAEnCzsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,SACNgR,MAAOw9B,EAAQoX,QAAQJ,SAAW,QAEpC1sD,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,UAEzB3e,IAAAoa,cAACssC,GAAe,CAACx/C,MAAM,aACvBlH,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,mBACNgR,MAAOw9B,EAAQiV,SAASC,qBAG1B5qD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,MACNgR,MAAOw9B,EAAQiV,SAASqC,aAE1BhtD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQiV,SAAS6B,QAAU,QAEpCxsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAOw9B,EAAQiV,SAAS8B,QAAU,QAEpCzsD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,SACNgR,MAAOw9B,EAAQiV,SAAS+B,SAAW,QAErC1sD,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,cASrC,MAAM2nC,GAAazrC,YAAYnH,IAAK,CAClC8yC,cAAe,CACbzrC,QAAS,OACTlH,MAAO,MACPrB,MAAOkB,EAAM9B,QAAQwW,KAAKrW,QAC1BquB,WAAY,QAEdqmB,eAAgB,CACd1rC,QAAS,OACT8kB,KAAM,GAERotB,IAAK,CACHlyC,QAAS,OACTuG,aAAc,OAGX,SAAS+qC,GAAa9wC,GAC3B,MAAMC,EAAU8qC,MACV,MAAEp/C,EAAK,KAAEuJ,EAAI,MAAEyH,GAAUqD,EAE/B,OACEvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQyxC,KACpBjtD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQgrC,eACrBt/C,EAAQlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMvJ,IAAY,CAAEuJ,SAEjDzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQirC,gBAAiBvuC,I,cChTjD,MAAM0C,GAAYC,YAAYnH,IAAK,CACjCutC,KAAM,CACJlmC,QAAS,OACT4D,UAAW,GACX1C,QAAS,SAEXilC,IAAK,CACHrtC,MAAO,OACPgmB,SAAU,IACV9a,OAAQ,GACRI,YAAa,IAEfgiC,QAAS,CACP,MAAS,QACT,gBAAmB,QACnB,MAAS,OACT,YAAe,EACf,WAAc,OACd,SAAY,IAEZ,UAAW,CACT1iC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,UA4K3B8Q,OAvKf,SAAsB3xC,GACJwqB,cAAhB,MACMhsB,EAAOkI,qBAAWvI,GAClBk9B,EAAW30B,qBAAWy0B,IACtB5B,EAAS7yB,qBAAWk0B,IACpB36B,EAAUZ,MAEV,OAAEyrC,EAAM,YAAEzD,GAAgBrnC,EA+BhC,OAdAxD,oBAAU,KACJgC,EAAK1G,gBAGF0G,EAAKrW,KAAKoI,iBAAiB3F,YACL,GAArB2uC,EAAOroC,WACTsN,EAAK3B,QAAQY,KAAK,UACY,GAArB87B,EAAOroC,YAChBsN,EAAK3B,QAAQY,KAAK,gBAIvB,IAGDhZ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACVgb,QAAQ,UACRjuC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,EACJkkB,GAAI,GACJzkD,IAAAoa,cAAA,UAAI,MACCpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAE5BzQ,IAAAoa,cAAA,UACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAEzBzQ,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,eACNgR,MAAO0+B,EAASrB,aAAayB,eAE/Bh3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,sBACNgR,MAAO0+B,EAASrB,aAAa0B,sBAE/Bj3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,sBACNgR,MAAO0+B,EAASrB,aAAa2B,sBAE/Bl3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,kBACNgR,MAAO0+B,EAASrB,aAAa4B,kBAE/Bn3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,eACNgR,MAAO0+B,EAASrB,aAAa6B,eAE/Bp3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,kBACNgR,MAAO0+B,EAASrB,aAAa8B,kBAG/Br3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,cACNgR,MAAO0+B,EAASrB,aAAagC,cAO/Bv3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,YACNgR,MAAO0+B,EAASrB,aAAakC,YAE/Bz3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,gBACNgR,MAAO0+B,EAASrB,aAAaoC,gBAE/B33C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,mBACNgR,MAAO0+B,EAASrB,aAAamC,mBAE/B13C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,UACNgR,MAAO0+B,EAASrB,aAAaqC,UAE/B53C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,sBACNgR,MAAO8d,aACL,IAAIS,KAAKmgB,EAASrB,aAAa+B,cAC/B,gBAIJt3C,IAAAoa,cAAA,MAAI8F,MAAO,CAAEvB,UAAW,KACtB3e,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAACklC,GAAc,CACbC,cAAc,EACd1iC,UAAU,IAEZ7c,IAAAoa,cAACqmC,GAAa,CACZK,YAAU,EACVF,uBAAqB,IAGvB5gD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQylC,MACtBjhD,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAWD,EAAQ0lC,IACnB5mC,QAAS+rC,GACTrmD,IAAAoa,cAAConC,KAAa,CACZh9B,SAAS,QACTtE,MAAO,CAAEf,YAAa,KAExBnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAEzBzQ,IAAAoa,cAAC4F,IAAM,CACL1F,QArIuB6yC,KACN,GAArBrY,EAAOroC,WACTsN,EAAK3B,QAAQY,KAAK,yBACY,GAArB87B,EAAOroC,YAChBsN,EAAK3B,QAAQY,KAAK,6BAkIZyC,UAAWD,EAAQglC,aACnBhuC,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAS,GAAA7c,OAAK4c,EAAQ0lC,IAAG,KAAAtiD,OAAI4c,EAAQ2lC,SACrC7mC,QArJV,WACEw6B,EAAOl2B,OAAOg4B,EAASrB,cAAc,SAAU6X,GAC7CxW,EAASuB,oBACTyK,SAmJM5iD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uB,0FCzM5B,MAAM48C,GAAYA,CAAC3vD,EAAM4vD,KAC9B,IAAIC,EAAaC,UACf,qCAA4C9vD,EAAK+vD,WAAW,IAAK,KAGnE5uD,QAAQC,IAAIyuD,GACZ,IAAInpD,EAAOoV,SAASY,cAAc,KAClChW,EAAKspD,aAAa,OAAQH,GAC1BnpD,EAAKspD,aAAa,WAAYJ,EAAW,QACzC9zC,SAASkyC,KAAKiC,YAAYvpD,GAE1BA,EAAKwpD,SCJDhzC,GAAYC,YAAYnH,IAAK,CACjCw4C,QAAS,CACP/sC,YAAazL,EAAMqI,QAAQ,OAIhB,SAAS8xC,GAAWtyC,GACjC,MAAMC,EAAUZ,MACV,KAAE0Z,GAAS/Y,EACjB,OACEvb,IAAAoa,cAAC6F,IAAI,CAAC1X,GAAI+rB,GACRt0B,IAAAoa,cAAC4F,IAAM,CAACvE,UAAWD,EAAQ9I,QACzB1S,IAAAoa,cAAC6xC,KAAQ,CAACxwC,UAAWD,EAAQ0wC,UAC7BlsD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mB,yBCd/B,MAAMmK,GAAYC,YAAYnH,IAAK,CACjCw4C,QAAS,CACP/sC,YAAazL,EAAMqI,QAAQ,OAIhB,SAAS+xC,GAAYvyC,GAClC,MAAMC,EAAUZ,KAChB,OACE5a,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ9I,OACnB4H,QAASiB,EAAMjB,SACfta,IAAAoa,cAAC2zC,KAAI,CAACtyC,UAAWD,EAAQ0wC,UACzBlsD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qB,wBCF7B,MAAMmK,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJmlB,OAAQ,oBACRxhB,gBAAiB,UACjB20B,UAAW,OACXn3B,QAAS,GACT+f,WAAY,GACZ7W,SAAU,SACVrJ,OAAQ,WAINkyC,GAAyB,CAC7BC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,QAAS,MA8QIC,OA3Qf,SAA2B9yC,GACzB,MAAM,QAAE0yC,EAAO,KAAEC,EAAI,MAAEC,EAAK,QAAEC,GAAYJ,GACpCxyC,EAAUZ,KAEV3P,EAAUsQ,EAAMtQ,SAAWsQ,EAAM+yC,cAActlB,OAAO5mC,GACtDmsD,GAAiBhzC,EAAMizC,WAEzBjzC,EAAM+yC,cAActlB,OAAOulB,eACzBx0C,EAAOkI,qBAAWvI,IACjBlG,EAAWC,GAAgBF,oBAAS,IACpCk7C,EAAgBC,GAAqBn7C,oBAAS,IAC9C9H,EAAOojC,GAAYt7B,mBAASwG,EAAKrW,KAAKoI,iBAAiBL,QACvDkjD,EAAiBC,GAAsBr7C,mBAAS66C,IAChDS,EAAOC,GAAYv7C,sBACnBo7B,EAAWC,GAAgBr7B,oBAAS,GACrCw7C,EAAe9uD,iBAAO,MAE5B8X,oBAAU,KACR82B,EAAS90B,EAAKrW,KAAKoI,iBAAiBL,QACnC,CAACsO,EAAKrW,KAAKoI,iBAAiBL,QAE/BsM,oBAAU,KACRlZ,QAAQC,IAAIyc,EAAM+yC,cAAerjD,EAASsjD,GACtCx0C,EAAKrW,KAAKoI,iBAAiB3F,YAC7B4T,EAAKjW,UACFuH,qBACC0O,EAAKrW,KAAKoI,iBAAiB3F,UAC3B8E,EACAsjD,EACAx0C,EAAKrW,KAAK+E,UAEXnJ,KAAMqX,IACL6C,SAASslB,eAAe,SAASkwB,UAAYr4C,EAAIjZ,OAElDgC,MAAOg6C,GAAQjmC,GAAa,IAC5BuD,QAAQ,KACPvD,GAAa,KAGjBsG,EAAKjW,UACFqH,SACC4O,EAAKrW,KAAKoI,iBAAiB3F,UAC3B8E,EACA8O,EAAKrW,KAAK+E,UAEXnJ,KAAMqX,IACLm4C,EAASn4C,EAAIjZ,QAEdgC,MAAM,IAAMb,QAAQC,IAAI,sBAE5B,CAACib,EAAKrW,KAAKoI,iBAAiB3F,YAI/B,IAAI8oC,GAAiB,EACrB,MAuBMggB,EAAgBtH,GACbA,EAAO/J,eAAe,SA0EzBsR,EACJlvD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6C,IAAS,CACRiD,MAAO,CAAE8b,WAAY,EAAG5I,WAAY,GAAIjU,YAAa,EAAGtL,MAAO,KAC/DkK,KAAK,QACL6gB,WAAS,EACT1mB,MAAOzM,EACPpO,OA5GkBmZ,EA4GI/K,WA5GSnK,IAANkV,GAAmBA,EAAEnV,OAAS,IAAM4tC,IAAmBN,IA6GhFrwB,SAAW1U,GAAMilC,EAASjlC,EAAEI,OAAOkO,SAErClY,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAASA,KA7GT0U,GAAcvjB,IAChBwjC,GAAiB,EACjBL,GAAa,GAEbggB,EAAmBX,GACnBl0C,EAAKjW,UACF0H,uBACCC,EACAsO,EAAKrW,KAAK+E,SACVwC,EACA8O,EAAKrW,KAAKoI,iBAAiB3F,UAC3BooD,GAEDjvD,KAAK,IAAMsvD,EAAmBV,IAC9BxuD,MAAOg6C,GAAQkV,EAAmBT,MAErCp0C,EAAK3G,SAAS,UAAW,uBACzB67B,GAAiB,EACjBL,GAAa,MA4FX5uC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAlHL+F,MAsKxB,OACExW,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OACE8F,MAAO,CACLpE,OAAQ,OACRwF,aAAc,OACdvG,QAAS,OACTC,eAAgB,kBAElBhb,IAAAoa,cAACyzC,GAAU,CACTv5B,KACE/Y,EAAMusB,UACF,mBACmB,SAAnBymB,EACA,oBACA,kBAGRvuD,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC+0C,KAAY,CACXC,QAASA,IAAMpvD,IAAAoa,cAAC0zC,GAAW,MAC3BpyC,QAASA,IAAMqzC,EAAa7uD,UAE9BF,IAAAoa,cAAC4F,IAAM,CAAC1F,QA/JA+0C,KACd,IAAKR,EAAO,OACZ,MAAMxoC,EAAO,GAEbA,EAAK,GAAK,CAAC,GAADznB,OACLmb,EAAKpC,WAAWK,SAAS,eAAc,KAAApZ,OAAIiwD,EAAM5jD,SAAO,GAAArM,OACxDmb,EAAKpC,WAAWK,SAAS,aAAY,KAAApZ,OACtCiwD,EAAMS,UAAUh4B,MAAM,KAAK,KAG/BjR,EAAK,GAAK,CACR,MACA,SACA,kBACA,uBACA,oBACA,WACA,cACApB,IAAKb,GAAOrK,EAAKpC,WAAWK,SAASoM,IACvCyqC,EAAMpZ,WAAWlnB,QAAQ,CAACghC,EAAa1mC,KACrC,MAAM,UACJ2mC,EAAS,OACT3iD,EAAM,UACN4iD,EAAS,sBACTziD,EAAqB,kBACrB0iD,EAAiB,SACjB5iD,EAAQ,OACR4nC,GACE6a,EACJlpC,EAAKwC,EAAI,GAAK,CACZ2mC,EACA3iD,EACA4iD,EACAziD,EACA0iD,EACA5iD,EACAmiD,EAAava,MAGjBruB,EAAKA,EAAKhlB,QAAU,CAAC,IACrBglB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,UACzB,GACA,GACA,GACA,GACAi3C,EAAaJ,EAAMna,SAErBruB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,aACzB,GACA,GACA,GACA,GACAi3C,EAAaJ,EAAMja,YAErBvuB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,eACzB,GACA,GACA,GACA,GACAi3C,EAAaJ,EAAMla,cAGrB0Y,GACEhnC,EAAKpB,IAAKb,GAAOA,EAAGurC,KAAK,MAAMA,KAAK,MAAM,GAAD/wD,OACtCmb,EAAKpC,WAAWK,SAAS,UAAQpZ,OAAGiwD,EAAM5jD,YA6FvCjL,IAAAoa,cAACw1C,KAAc,CAAC1vC,MAAO,CAAEf,YAAa,UACtCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAExBg+C,EACCzuD,IAAAoa,cAAApa,IAAAie,SAAA,KACGixC,EAAW,IA5EEW,MACxB,OAAQlB,GACN,KAAKT,EACH,OACEluD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC01C,KAA8B,CAC7B5vC,MAAO,CAAE1N,MAAO,QAASw9B,cAAe,SAAUl0B,OAAQ,KAE5D9b,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAI/B,KAAKw9C,EACH,OACEjuD,IAAAoa,cAAC0D,KAAgB,CACfoC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,YAIvB,KAAKme,EACH,OACEnuD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC21C,KAAgB,CACf7vC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,SACfx9B,MAAO,SAGXxS,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAI/B,KAAK29C,EACL,QACE,OAAO,OAiCayB,IAGhB7vD,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IAAMo0C,GAAkB,IACvC1uD,IAAAoa,cAAC41C,KAAe,CAAC9vC,MAAO,CAAEf,YAAa,UACvCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAK9B+C,EAAYxT,IAAAoa,cAACuB,IAAc,MAAM,KAClC3b,IAAAoa,cAAA,OACE8F,MAAO,CAAEzB,gBAAiB,SAC1BumC,IAAK+J,EACL3sD,GAAG,YCzJI6tD,OAhIf,SAAoB10C,GAClB,MAAM,MAAExe,GAAUwe,EACZxB,EAAOkI,qBAAWvI,GAClB+kC,EAAcx8B,qBAAWk0B,IACzBS,EAAW30B,qBAAWy0B,KACrBwZ,GAAc38C,oBAarB,WACE,OAAQxW,EAAMu3B,MACZ,IAAK,gBACL,IAAK,mBACH,OAAO,EACT,IAAK,6BACL,IAAK,gCACH,OAAO,EACT,IAAK,wBACL,IAAK,2BACH,OAAO,EACT,QACE,MAAO,mBAIb,SAASsuB,IACP,OAAQsN,EAAa,GACnB,KAAK,EAC2B,GAA1BzR,EAAYhyC,WACdsN,EAAK3B,QAAQY,KAAK,8BACiB,GAA1BylC,EAAYhyC,YACrBsN,EAAK3B,QAAQY,KAAK,iCAEpB,MACF,KAAK,EAC2B,GAA1BylC,EAAYhyC,WACdsN,EAAK3B,QAAQY,KAAK,yBACiB,GAA1BylC,EAAYhyC,YACrBsN,EAAK3B,QAAQY,KAAK,4BAEpB,MACF,QACgC,GAA1BylC,EAAYhyC,WACdsN,EAAK3B,QAAQY,KAAK,iBACiB,GAA1BylC,EAAYhyC,YACrBsN,EAAK3B,QAAQY,KAAK,qBAK1B,SAASqtC,IACPzP,EAASkB,0BAAyB,GACJ,GAA1B2G,EAAYhyC,WACdsN,EAAK3B,QAAQY,KAAK,iBACiB,GAA1BylC,EAAYhyC,YACrBsN,EAAK3B,QAAQY,KAAK,oBA2BtB,SAASm3C,IACP,IAAI15C,EAAK/X,aAAaC,QAAQ,eAC9B,OAAK8X,QAAI,EAIX,OA3FAsB,oBAAU,KACRgC,EAAKR,UAAUQ,EAAKpC,WAAWK,SAAS,cACvC,IA2FDhY,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACV1U,WAAW,UACX0vB,QAAQ,SACRlyB,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJkkB,GAAI,GACJzkD,IAAAoa,cAACg2C,KAAO,CACNF,WAAYA,EACZG,kBAAgB,GAtGjB,CACLrwD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAoGLwU,IAAK/d,GACflH,IAAAoa,cAACk2C,KAAI,CAAC7oD,IAAKP,GACTlH,IAAAoa,cAACm2C,KAAS,KAAErpD,QAhD1B,WACE,OAAQgpD,GACN,KAAK,EACH,OAAOlwD,IAAAoa,cAACuoC,GAAY,CAACC,YAAaA,IACpC,KAAK,EACH,OACE5iD,IAAAoa,cAAC8yC,GAAY,CACXtK,YAAaA,EACbyD,OAAQA,IAGd,KAAK,EACH,OACErmD,IAAAoa,cAACi0C,GAAiB,CAChBG,WAAS,EACTvjD,QAASklD,MAGf,QACE,MAAO,gBAmCRK,K,0CC9HP,MAAMC,GAAe51C,YAAW,MAC9BqT,OAAQ,CACNnT,QAAS,OACTwD,WAAY,SACZ1C,SAAU,WAIC,SAAS60C,GAAOn1C,GAC7B,MAAMC,EAAUi1C,MACV,OAAEviC,EAAM,SAAEhL,EAAQ,OAAEytC,EAAM,8BAAEC,GAAkCr1C,EAC9DtT,EAAQimB,GAAUA,EAAO/J,KAAM3N,GAAiB,UAAXA,EAAE/F,MACvC02B,EAAcjZ,GAAUA,EAAO/J,KAAM3N,GAAiB,gBAAXA,EAAE/F,MAC7Cy2B,EAAYhZ,GAAUA,EAAO/J,KAAM3N,GAAiB,cAAXA,EAAE/F,MAC3CogD,EAAY3iC,GAAUA,EAAO/J,KAAM3N,GAAiB,aAAXA,EAAE/F,MAKjD,OACEzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ0S,QACtBluB,IAAAoa,cAAC02C,GAAK,CACJF,8BAA+BA,EAC/BniC,MAAOxmB,EACPohB,QAASnG,EAAgB,OAAK,GAC9BytC,OAAQA,IAEV3wD,IAAAoa,cAAC02C,GAAK,CACJF,8BAA+BA,EAC/BniC,MAAOyY,EACP7d,QAASnG,EAAoB,WAAK,GAClCytC,OAAQA,IAEV3wD,IAAAoa,cAAC02C,GAAK,CACJF,8BAA+BA,EAC/BniC,MAAOoiC,EACPxnC,QAASnG,EAAmB,UAAK,GACjCytC,OAAQA,IAEV3wD,IAAAoa,cAAC02C,GAAK,CACJF,8BAA+BA,EAC/BniC,MAAO0Y,EACP9d,QAASnG,EAAsB,aAAK,GACpCytC,OAAQA,KAMhB,MAAMI,GAAcl2C,YAAYnH,IAAK,CACnC+a,MAAO,CACLhR,SAAU,YAEZyjC,IAAK,CACH,aAAgB,EAChB,WAAc,SACd,cAAiB,YACjB,QAAW,cACX,QAAW,mBACX,WAAc,EACd,SAAY,GACZ,OAAU,UAEV,UAAW,CACTziC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxC4U,SAAU,CACRxsC,SAAU,GACVzJ,QAAS,eACT0D,gBAAiB,QACjBxC,QAAS,cACTE,aAAc,EACd0sC,WAAY,EACZ9pC,OAAQ,GACRvM,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BtgC,OAAQ,iBAEVm1C,MAAO,CACLxzC,SAAU,WACVtC,IAAK,GACLkR,KAAM,EACNrL,OAAQ,IAEVkwC,OAAQ,CACNzzC,SAAU,WACV5J,MAAO,IACP4K,gBAAiB,QACjBxC,QAAS,oBACTd,IAAK,EACLkR,KAAM,EACN4T,OAAQ,oBACRlhB,OAAQ,KAEVoyC,UAAW,CACT,UAAa,IACb,UAAa,OACb,uBAAwB,CACtBt9C,MAAO,EACPkL,OAAQ,GAEV,6BAA8B,CAC5BxM,WAAYmB,EAAM9B,QAAQwqC,KAAK,MAEjC,6BAA8B,CAC5B7pC,WAAYmB,EAAM9B,QAAQwqC,KAAK,MAGjC,mBAAsB1oC,EAAM9B,QAAQwqC,KAAK,KACzC,oBAAuB1oC,EAAM9B,QAAQwqC,KAAK,KAC1C,qBAAwB1oC,EAAM9B,QAAQwqC,KAAK,KAC3C,yBAA4B1oC,EAAM9B,QAAQwqC,KAAK,MAEjDgV,eAAgB,CACd3U,UAAW,IACXtR,UAAW,QAEbkmB,YAAa,CACX5yC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,KACpC/vB,KAAM,IACN48B,WAAY,QAEdqI,MAAO,CACL3yC,WAAY,GAEdzX,MAAO,CACL,QAAW,QAEX,+BAAgC,CAC9Bsd,SAAU,IAGZ,QAAS,CACPhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BpM,cAAe,WACfxrB,SAAU,QAGd+sC,OAAQ,CACN9zC,SAAU,WACVtC,IAAK,IACLkR,KAAM,GACNrL,OAAQ,IAEVwwC,GAAI,CACFv1C,QAAS,YAEXw1C,WAAY,CACVx1B,cAAe,YACfzX,SAAU,GACV1I,OAAQ,gBAIZ,SAASg1C,GAAMv1C,GACb,MAAMC,EAAUu1C,MACT9tC,EAAMyZ,GAAWnpB,oBAAS,IAC3B,OACJo9C,EAAM,MACNliC,EAAK,QACLpF,EAAO,SACPvP,EAAW,KAAI,8BACf82C,GACEr1C,EACEm2C,EAA0B,MAAZ53C,EAUpB,MAAM63C,EAAaA,KACjBj1B,GAAQ,GACRljB,SACGslB,eAAe,QACfjmB,iBAAiB,QAAS+4C,IAGzBlsB,EAAcA,KAClBhJ,GAAQ,GACRljB,SACGslB,eAAe,QACf+yB,oBAAoB,QAASD,IAG5BA,EAAsBhoD,IAEiC,OAD5CA,EAAEI,OACY8nD,QAAQ,IAADlzD,OAAK6vB,EAAMhe,QAE7Ci1B,KAIJ,OAAKjX,EAKHzuB,IAAAoa,cAAA,OACEhY,GAAIqsB,EAAMhe,KACVgL,UAAWD,EAAQiT,OACnBzuB,IAAAoa,cAAA,KACEqB,UAAWD,EAAQ0lC,IACnB5mC,QAxCN,WACM2I,EACFyiB,IAEAisB,MAqCE3xD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMge,EAAMhe,OAC7B4Y,EAAQhoB,OAAS,GAChBrB,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQw1C,UAAW3nC,EAAQhoB,QAE9CrB,IAAAoa,cAAC23C,KAAc,CAACt2C,UAAWD,EAAQ81C,SAEpCruC,GACCjjB,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,OAAKqB,UAAS,GAAA7c,OAAK4c,EAAQy1C,QACzBjxD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ01C,QACtBlxD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ21C,WAErB1iC,EAAMujC,YACJ/pB,KAAK,CAACrK,EAAGsK,IACRtK,EAAEntB,KAAOy3B,EAAEz3B,MAAQ,EAAI0vC,OAAOviB,EAAEntB,KAAOy3B,EAAEz3B,OAE1CwU,IAAKgtC,GACJjyD,IAAAoa,cAACsU,KAAgB,CACfjnB,IAAKwqD,EAAG7vD,GACRqZ,UAAWD,EAAQtU,MACnBA,MACElH,IAAAoa,cAAApa,IAAAie,SAAA,KACGg0C,EAAGxhD,KAAM,MAERmgD,GAAiCvnC,EAAQhoB,SACtCrB,IAAAoa,cAAA,WAAK,IAAE63C,EAAG5nC,MAAM,MAGzBsE,QACE3uB,IAAAoa,cAACgP,KAAQ,CACP5W,MAAM,UACN6W,SAAqC,IAA5BA,EAAQ8T,QAAQ80B,EAAG7vD,IAC5Boa,KAAMxc,IAAAoa,cAAC83C,KAAwB,CAAC1tC,SAAS,UACzC2tC,YAAanyD,IAAAoa,cAACg4C,KAAY,CAAC5tC,SAAS,UACpC/I,UAAWD,EAAQg2C,GACnBlzC,SAAW1U,GAAM+mD,EAAOliC,EAAMhe,KAAMwhD,EAAG7vD,WAOpDinB,EAAQhoB,OAAS,GAAKqwD,GAAe53C,GAExC9Z,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+1C,QACtBvxD,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAASorB,GACT1lC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BA1D1B,KClMX,MAAMmK,GAAYC,YAAYnH,IAAK,CACjC6oC,WAAY,CACV9+B,SAAU,WACVtC,IAAK,EACLkR,KAAM,EACNxY,MAAO,OACPkL,OAAQ,QAEVsrC,gBAAiB,CACftrC,OAAQ,OACRhE,QAAS,OACTC,eAAgB,SAChBuD,WAAY,UAEdi+B,IAAK,CACHr3B,SAAU,OACVs3B,UAAW,QAEbv1C,MAAO,CACL+0B,cAAe,YACfzX,SAAU,GACV/G,SAAU,WACVtC,IAAK,EACLkR,KAAM,EACN5N,gBAAiB,0BACjBxC,QAAS,UACTzJ,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BiW,cAAe,CACbhmC,KAAM,OACNvL,MAAO,EACPsf,WAAY,OACZ5b,SAAU,IAEZvQ,MAAO,CACLuQ,SAAU,GACV4b,WAAY,OACZtkB,OAAQ,SACRf,QAAS,QAET,CAACrH,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5BvrB,SAAU,KAGd2kC,MAAO,CACL3kC,SAAU,IAEZ8tC,OAAQ,CACNv3C,QAAS,OACT6e,aAAc,YACd24B,kBAAmB7+C,EAAM9B,QAAQwqC,KAAK,KACtCvgB,cAAe,EACfld,UAAW,EACX1C,QAAS,SACTJ,SAAU,QAEZ22C,IAAK,CACHzzC,OAAQ,OACR0zC,YAAa,EACbC,YAAah/C,EAAM9B,QAAQwqC,KAAK,KAChCuW,YAAa,SAEfC,KAAM,CACJn1C,SAAU,WACVsB,OAAQ,EACRkmB,SAAU,SACVjJ,WAAY,SAEdv8B,KAAM,CACJkf,UAAW,QAEb2qC,sBAAuB,CACrBvuC,QAAS,QACToE,YAAa,QAEfoqC,oBAAqB,CACnBxuC,QAAQ,QACRi4B,WAAW,UAEbwW,gBAAiB,CAAEzuC,QAAQ,OAAOqlB,WAAW,MAAMyoB,WAAW,MAAMC,cAAc,YAAY7sC,QAAQ,WAAWuI,SAAS,OAAO1I,OAAQ,UACzImsC,YAAa,CACXzjC,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BrhC,QAAS,SAEXutC,UAAW,CACT9jC,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BrhC,QAAS,eACTqY,WAAY,IAEdtjB,SAAU,CACR2N,SAAU,WACVtC,IAAK,QACLkR,KAAM,OACN7Z,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1B53B,SAAU,IAEZ4jC,WAAY,CACV5jC,SAAU,GACV4b,WAAY,OACZrlB,QAAS,gBAEXmmC,IAAK,CACH1uC,MAAO,QACPiM,gBAAiB,QACjByN,SAAU,EACVnN,OAAQ,GACRqU,WAAY,MAEZ,UAAW,CACT3U,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,UAK3B,gBAAS7gC,GACtB,MAAM,QAAEm6B,EAAU,GAAE,gBAAEmV,GAAoBtvC,EACpCC,EAAUZ,KACVi4C,EAAa5wC,qBAAWg4B,IACxBvO,EAAgBzpB,qBAAWwoB,IAC3BqK,EAAS7yB,qBAAWk0B,KACnB6Q,EAAc+C,GAAmBx2C,mBAASy2C,GAAe3C,UAAU9rC,EAAMm6B,QAAQnN,MAAOhtB,EAAMm6B,WAC9F5oC,EAAUm9C,GAAe12C,mBAASgI,EAAMm6B,QAAQnN,OACjD0c,EAAWhlD,iBAAO,MAExB8X,oBAAU,KACS,KAAbjL,GAIAA,GAAY,GACdo9C,EAAqB,CACnBlgD,OAAQ,CACNkO,MACGqD,EAAMm6B,QAAQ6R,UAAU,IAAMhsC,EAAMm6B,QAAQ6R,UAAU,GAAGC,aAAgB,MAIjF,CAAC16C,IAEJ,MAAMo9C,EAAwBtgD,IAC5B,IAAIijB,EAAMjjB,EAAEI,OAAOkO,MACfgkC,EAAQ8N,GAAe3C,UAAUx6B,EAAKtR,EAAMm6B,SAEhDuU,EAAYp9B,GACZk9B,EAAgB7N,IAgElB,OACEl8C,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,EACJ8W,GAAI,EACJkkB,GAAI,EACJqO,GAAI,GACJ9yD,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,SACVxX,UAAWD,EAAQg3C,KACnBxyD,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQo3C,MACnB5yD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+gC,YACtBv8C,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0B82C,EAAQC,WACpCr7B,QAASoxB,EAAcrB,YACvB5uB,UAAWD,EAAQ6uC,iBACnBrqD,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQghC,IACnB7G,UAAWD,EAAQC,UACnBuF,cAAc,kBACd17B,IAAKk2B,EAAQ7gB,YACbomB,UAAWvF,EAAQuF,cAKzBj7C,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQtU,OA5EV9E,KACrB,IAAKywD,EACH,OAAO,KAET,MAAME,EACJF,EAAW9Y,QAAU8Y,EAAW9Y,OAAO51B,KAAMC,GAAOA,EAAGhiB,KAAOA,GAChE,OAAO2wD,GAAaA,EAAU7rD,OAuErB8rD,CAActd,EAAQ4U,UAGxBN,GAAejD,YAAYC,IACxBhnD,IAAAoa,cAAA,QAAMqB,UAAS,GAAA7c,OAAK4c,EAAQtU,MAAK,KAAAtI,OAAI4c,EAAQ62C,gBAAiB,IAC1DrL,EAAaE,mBAAmB,MAI1ClnD,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0B82C,EAAQC,WACpCr7B,QAASoxB,EAAcrB,YACvB5uB,UAAWD,EAAQvH,OAClByhC,EAAQ7gB,cAIb70B,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ9N,UAAWD,EAAQ/b,MACnBO,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ82C,QACtBtyD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ2tC,OACvBnpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBACvBzQ,IAAAoa,cAAA,YAAM,IAAEs7B,EAAQC,YAGlB31C,IAAAoa,cAACwhC,GAAS,CACRxzB,KAAMstB,EAAQ2I,cACd5gD,OAAQi4C,EAAQ4I,oBAKtBt+C,IAAAoa,cAACkP,KAAI,CAAC6C,WAAS,EAAC8mC,IAAK,GACnBjzD,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQguC,iBACtBxpD,IAAAoa,cAAA,WAC2B,IAAxBmB,EAAMm6B,QAAQnN,OAAgBvoC,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,uBAAuBtpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAhG7Fg6C,MACrB,IAAIvO,EAAQ3gC,EAAMm6B,QAAQ6R,UAAUpjC,KAAKva,GAAKA,EAAEq9C,WAAa+C,GAAerD,UAAUG,SAAWl9C,EAAEq9C,WAAa+C,GAAerD,UAAUE,UAEzI,OAAK3K,EAQDA,EAAM+K,WAAa+C,GAAerD,UAAUE,SAE5C7mD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,sBAAuBppC,MAAO,CAAC1N,MAAO,UAC7DxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAMzBzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,sBAAuBppC,MAAO,CAAC1N,MAAO,QAC7DxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAhBzBzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,uBACvBtpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBA2FhBg6C,GACDzqD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8tC,uBAAuB,aAElDtpD,IAAAoa,cAAA,OAAK8F,MAAO,CAACob,UAAW,QACG,IAAxB/f,EAAMm6B,QAAQnN,OAAgBvoC,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ+tC,qBAAqB,KAAGhuC,EAAMm6B,QAAQnN,MAAM,EAAE,IAACvoC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9HzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ+tC,qBAhHbmB,MACxB,IAAIxO,EAAQ3gC,EAAMm6B,QAAQ6R,UAAUpjC,KAAKva,GAAKA,EAAEq9C,WAAa+C,GAAerD,UAAUG,SAAWl9C,EAAEq9C,WAAa+C,GAAerD,UAAUE,UAEzI,OAAK3K,EAIEA,EAAMsL,YAHJjsC,EAAMm6B,QAAQnN,OA4GoCmiB,GAAoB,IAAC1qD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC3FzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ+tC,qBAAsBhuC,EAAMm6B,QAAQiV,SAASC,mBAAmB,IAAC5qD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAIvHzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,EAACrJ,MAAO,CAACob,UAAW,QAASrf,QAAS,WAAYiQ,SAAU,EAAGgnC,UAAW,YAC9E33C,EAAMsvC,iBACN7qD,IAAAoa,cAAApa,IAAAie,SAAA,KACG+rC,GAAejD,YAAYC,IAC1BhnD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQysC,aAAcjB,EAAakB,YAErDloD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YAAapB,EAAaqB,WAItD9sC,EAAMsvC,iBACL7qD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YACtB7sC,EAAMm6B,QAAQoV,0BAMzB9qD,IAAAoa,cAACkP,KAAI,CAACC,MAAI,EAACrJ,MAAO,CAACjE,QAAS,WAAYlB,QAAS,SAC/C/a,IAAAoa,cAAC6C,IAAS,CACRmiB,OAxJY2rB,KACpB,MAAMC,EAAkBhB,GAAetC,sBAAsBnsC,EAAMm6B,QAAS5oC,GAC5Em9C,EAAYe,GACZjB,EAAgBC,GAAe3C,UAAU2D,EAAiBzvC,EAAMm6B,WAsJxD33B,KAAK,QACLtB,KAAK,SACLvE,MAAOpL,EACPwR,SAAU4rC,EACVzuC,UAAWD,EAAQ1O,SACnBoT,MAAO,CAACrM,MAAO,QACfyJ,WAAY,CACVa,WAAY,CACV8sC,KAAM1vC,EAAMm6B,QAAQnN,OAAS,IAGjC0c,SAAUA,EACV3qC,QAASA,KAAO2qC,EAAS/kD,QAAQqnB,OAAO,GAAI,IAC5CrgB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9BgK,QAAQ,aAGVza,IAAAoa,cAAC4F,IAAM,CACLnD,SAAUmtC,GAAevC,WAAWlsC,EAAMm6B,SAC1Cj7B,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAWD,EAAQ0lC,IACnB5mC,QAxLW1Q,IACnBkrC,EAAOniC,IAAI,CACT9F,OAAQ0O,EAAMm6B,QAAQC,UACtBI,IAAKiU,GAAetC,sBAAsBnsC,EAAMm6B,QAAS5oC,GACzDrG,WAAY,KACZuG,sBAAuB,SAoLjBhN,IAAAoa,cAAC8G,KAAO,WCxVpB,MAAMtG,GAAYC,YAAYnH,IAAK,CACjCy/C,aAAc,CACZ10C,gBAAiB,QACjB5K,MAAO,QACPsR,SAAU,OACVrJ,OAAQ,OACR2B,SAAU,WACVtC,IAAK,MACL0D,UAAW,mBACX5C,QAAS,OACT+f,WAAY,GACZV,UAAW,SACX83B,QAAS,QAEXC,mBAAoB,CAClBpqC,OAAQ,UACRnN,OAAQ,MAmDGw3C,OA/CU/3C,IACvB,MAAM,kBAAEg4C,EAAiB,mBAAE/I,GAAuBjvC,EAC5CC,EAAUZ,KAEhB,OACE5a,IAAAoa,cAACo0B,KAAK,CACJvrB,OAAQswC,EACRpxC,QAASA,IAAMqoC,OAAmBlpD,IAClCtB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ23C,cACtBnzD,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAEoB,aAAc,GAAI3C,UAAW,IACtClE,QAAQ,MACRza,IAAAoa,cAAC4H,GAAgB,CACfvR,KAAK,qBACLyR,UAAW,CAAkB,OAAjBqxC,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmBhJ,WAAWlpD,WAG7CkyD,GACCA,EAAkBhJ,WAAWtlC,IAAK4pC,GAChC7uD,IAAAoa,cAAC6F,IAAI,CAAC1X,GAAE,iBAAA3J,OAAmBiwD,EAAM5jD,QAAO,WACtCjL,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ63C,oBACtBrzD,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CACfvR,KAAK,gBACLyR,UAAW,CACT2sC,EAAM5jD,QACN4jD,EAAM2E,gBACN3E,EAAM4E,sBAAsBn8B,MAAM,KAAK,UAQrDt3B,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEvB,UAAW,IACpBlE,QAAQ,WACRjI,MAAM,UACN8H,QAASA,IAAMkwC,OAAmBlpD,IAClCtB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,W,mFC9BjC,MAAMmK,GAAYC,YAAYnH,IAAK,CACjCggD,iBAAkB,CAChB7/C,MAAO,oBACPiI,OAAQ,oBACRoQ,SAAU,EACV3Z,WAAY,QACZwI,QAAS,OACT44C,SAAU,SACV50C,OAAQ,oBACRtB,SAAU,WAEV,CAAC/J,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bj0B,OAAQ,uBAGZ83C,mBAAoB,CAClB74C,QAAS,OACTwD,WAAY,SACZvD,eAAgB,gBAChBnH,MAAO,OACP4K,gBAAiB,UACjBxC,QAAS,YAET,CAACvI,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9BviB,WAAY,aACZtD,cAAe,mBAGnB44C,mBAAoB,CAClBthD,WAAY,OACZ4J,aAAc,EAEd,CAACzI,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9BjtB,MAAO,OACPyN,aAAc,KAGlBjE,UAAW,CACT,CAAC3J,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9BjtB,MAAO,QAET,kIAAmI,CACjIkH,QAAS,SAGb+4C,mBAAoB,CAClB1gC,YAAa,IAEf2gC,aAAc,CACZlgD,MAAO,OACPmgD,WAAY,SACZv2C,SAAU,YAEZw2C,cAAe,CACbD,WAAY,WAEdE,YAAa,CACXn5C,QAAS,eACTklB,OAAQ,sBACR9gB,YAAa,EACbmC,aAAc,EACdnF,aAAc,EACdF,QAAS,GAEXk4C,gBAAiB,CACfnkB,cAAe,UAEjBokB,yBAA0B,CACxB5hD,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BiY,gBAAiB,CACfrkB,cAAe,SACf5c,WAAY,EACZvf,MAAO,GACPkL,OAAQ,IAEVu1C,sBAAuB,CACrBv5C,QAAS,OACTwD,WAAY,SACZvD,eAAgB,gBAChBiB,QAAS,YACT2d,aAAc,+BAEd,CAAClmB,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B7lB,cAAe,iBACfsD,WAAY,eAGhBg2C,0BAA2B,CACzBx5C,QAAS,OACTwD,WAAY,UAEdi2C,qBAAsB,CACpBz5C,QAAS,OACTwD,WAAY,SACZ1C,SAAU,OAEV,CAACnI,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9Bxf,aAAc,GACdzN,MAAO,SAGX4gD,yBAA0B,CACxB,CAAC/gD,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B1N,WAAY,SAGhBshC,8BAA+B,CAC7BthC,WAAY,GACZoM,YAAa,GACbypB,WAAY,gCAEdhgC,OAAQ,CACNA,OAAQ,UACR7J,eAAgB,aAElBiwB,OAAQ,CACNpzB,QAAS,YACTpI,MAAO,KAET8gD,eAAgB,CACd9gD,MAAO,OACPyN,aAAc,OACdua,cAAe,OACfjC,aAAc,gCAEhBg7B,mBAAoB,CAClBj2C,UAAW,GACXwsB,UAAW,SACXtL,KAAM,eC/JV,MAAMjlB,GAAYC,YAAW,MAC3BqB,OAAQ,CACNyC,UAAW,IACX2c,UAAW,aCSf,MAAM1gB,GAAYC,YAAW,MAC3BC,KAAM,CACJmlB,OAAQ,oBACRxhB,gBAAiB,UACjB20B,UAAW,OACXn3B,QAAS,GACT+f,WAAY,GACZ7W,SAAU,SACVrJ,OAAQ,WAINkyC,GAAyB,CAC7BC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,QAAS,M,6GCyGIxyC,WA/HClI,IAAK,CACnBoH,KAAM,CACJjH,MAAO,OACPu/B,UAAW,OACX5xB,UAAW,QAEboI,MAAO,CACL9X,WAAY4B,EAAM7B,WAAWC,WAC7B+nB,SAAU,KAEZg7B,cAAe,CACb95C,QAAS,OACTwD,WAAY,SACZ2mB,UAAW,cAEb4vB,SAAU,CACR7rC,OAAQ,WAEV8rC,cAAe,CACb,UAAW,CACTt2C,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxC2M,UAAW,CACTlpB,KAAM,GAERm1B,QAAS,CACP/rC,OAAQ,WAEV0lB,UACyB,UAAvBj7B,EAAM9B,QAAQ6K,KACV,CACEjK,MAAOkB,EAAM9B,QAAQG,QAAQE,KAC7BwM,gBAAiBw2C,mBAAQvhD,EAAM9B,QAAQG,QAAQC,MAAO,MAExD,CACEQ,MAAOkB,EAAM9B,QAAQwW,KAAKrW,QAC1B0M,gBAAiB/K,EAAM9B,QAAQG,QAAQG,MAE/CgjD,OAAQ,CACNr1B,KAAM,YAERs1B,QAAS,CACP3iD,MAAOkB,EAAM9B,QAAQwW,KAAKhW,WAE5B6B,MAAO,CACL4rB,KAAM,YAERte,SAAU,CACRC,UAAW,OACXvF,QAASvI,EAAMqI,QAAQ,IAEzB0F,UAAW,CACTC,UAAW,iBACXvF,aAAc,KAyEHP,EArEf,SAAyBL,GACvB,MAAM,QACJC,EAAO,QACPrd,EAAO,KACPkoB,EAAI,SACJnD,EAAQ,WACRvB,EAAU,UACVF,EAAS,OACT8F,EAAM,aACN6tC,GACE75C,EAcJ,OACEvb,IAAAoa,cAACmF,IAAK,CACJ9D,UAAS,GAAA7c,OAAK4c,EAAQV,KAAI,KAAAlc,OAAI+iB,EAAanG,EAAQ+F,SAAW,GAAE,KAAA3iB,OAC9D6iB,EAAYjG,EAAQiG,UAAY,KAElCzhB,IAAAoa,cAACuP,KAAK,CACJyrC,aAAcA,EACd35C,UAAWD,EAAQoO,OACnB5pB,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACN3rB,EAAQ8mB,IAAI,CAACowC,EAAG7hC,IACfxzB,IAAAoa,cAAC4O,KAAS,CACRvhB,IAAK+rB,EACLwE,MAAM,QACNh4B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM4kD,QAM9Br1D,IAAAoa,cAAC4P,KAAS,KACP3D,EAAKpB,IAAI,CAACkG,EAAGqI,IAEVxzB,IAAAoa,cAAC0P,KAAQ,CACPI,OAAK,EACLziB,IAAK+rB,EACLlZ,QAAUkQ,GAtCN+hB,EAACxK,EAAG3/B,KACtB,IAAKmlB,EAAQ,OAEb,IAAImM,EAActxB,EACdsxB,IAAgBxQ,IAAUwQ,GAAe,GAC7CnM,EAAOmM,IAiC2B6Y,CAAY/hB,EAAOW,EAAE,IACzCjI,SAAUA,IAAaiI,EAAE,IACxBA,EAAElG,IAAI,CAAC0O,EAAGH,KACTxzB,WAAAoa,cAAC4O,KAAS,CACRvhB,IAAK+rB,EACLwE,MAAM,SAnCLmE,EAoCYxI,GAnChBwI,EAAKm5B,SAAWn5B,EAAKvlB,WAAaulB,EAAQ,MAD3D,IAAqBA,YCrFR,SAASo5B,GAAUh6C,GAChC,MAAM,MAAErU,EAAK,KAAE6S,EAAI,OAAEy7C,GAAWj6C,EAMhC,OAJAxD,oBAAU,KACRgC,EAAKR,UAAUQ,EAAKpC,WAAWK,SAAS9Q,KACvC,IAGS,GAAVsuD,GACEx1D,IAAAoa,cAAA,WACEpa,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMvJ,MCd3B,SAASuuD,KACd,MAAM17C,EAAOkI,qBAAWvI,GAClBvT,EAAY4T,EAAKrW,KAAKoI,iBAAiB3F,WAEtCqN,EAAWC,GAAgBF,oBAAS,IACpCmiD,EAAUC,GAAepiD,mBAAS,KAClChJ,EAAMgc,GAAWhT,mBAAS,IAC1B/I,GAAU+I,mBAAS,KACnBqiD,EAAUC,GAAetiD,mBAASuiD,MAClCC,EAAeC,GAAoBziD,mBAAS,GAsCnD,SAAS0iD,IACF9vD,GAGL4T,EAAKjW,UACF2G,iBAAiBtE,GACjB7G,KAAMqX,IAEL,GADA9X,QAAQC,IAAI,eAAgB6X,EAAIlZ,OAAQkZ,EAAIjZ,MACzB,MAAfiZ,EAAIlZ,OAAgB,CACtB,MAAM4sB,EAAQ1T,EAAIjZ,KAClBs4D,EAAiB3rC,GACjBwrC,EAAYjO,KAAKC,KAAKx9B,EAAQ7f,SACzBuP,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAErCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,cAIjC,SAASN,EAAK/L,IACRiJ,GAAcrN,IAClBsN,GAAa,GAEbsG,EAAKjW,UACFuG,YAAYlE,EAAWoE,EAAMC,GAC7BlL,KAAMqX,IACL,GAAmB,MAAfA,EAAIlZ,OAAgB,CACtB,IAAIC,EAAOw4D,MAAMC,QAAQx/C,EAAIjZ,MAAQiZ,EAAIjZ,KAAO,GAChDi4D,EAAYj4D,QACPqc,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAErCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,cAE5BI,QAAQ,KACPvD,GAAa,MAmBnB,SAAS2iD,IACP,OAAO7rD,EAAO,EAGhB,SAAS8rD,IACP,OAAOT,EAAWrrD,EAYpB,OATAwN,oBAAU,KACJ5R,IAlGJ6vD,EAAiB,GACjBL,EAAY,IACZpvC,EAAQ,GAkGNjQ,EAAK/L,GACL0rD,MAGD,CAAC9vD,IAEG,CACLmE,SAAUnE,EACVqN,YACAkiD,WACAnrD,OACA+rD,cArCF,WACMD,MAAc7iD,IAChBmiD,EAAY,IACZr/C,EAAK/L,EAAO,GACZgc,EAAQhc,EAAO,KAkCjBgsD,cA/BF,WACMH,MAAc5iD,IAChBmiD,EAAY,IACZr/C,EAAK/L,EAAO,GACZgc,EAAQhc,EAAO,KA4BjB8rD,UACAD,UACAL,gBACAH,WACAtb,eAhHF,SAAwBx4B,IAIxB,SAAgBnX,GACd,GAAY,KAARA,EACF2L,EAAK,GACL2/C,QACK,CACL,GAAIziD,EAAW,OACfC,GAAa,GACb8S,EAAQ,GACRxM,EAAKjW,UACF4G,eAAevE,EAAWwE,GAC1BrL,KAAMqX,IACoB,IAADyyB,EAAL,MAAfzyB,EAAIlZ,QACNk4D,EAAYh/C,EAAIjZ,MAChBs4D,EAAyB,QAAT5sB,EAACzyB,EAAIjZ,YAAI,IAAA0rC,OAAA,EAARA,EAAU/nC,QAC3Bw0D,EAAY,IACP97C,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAErCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,cAE5BI,QAAQ,KACPvD,GAAa,MAxBnBkU,CAAO7F,KClBJ,MAAM00C,GAAiB78C,wBAAc,MAE7B,SAAS88C,GAAe58C,GAAgB,IAAf,SAAEC,GAAUD,EAClD,MAAMkhC,EAAQ0a,KAEd,OACEz1D,IAAAoa,cAACo8C,GAAe77C,SAAQ,CAACzC,MAAO6iC,GAAQjhC,GCTrC,SAAS48C,GAAWx/B,GACzB,IAAIW,EAAU,IAAIpB,KAAKS,GAEnBy/B,EAAM9+B,EAAQ4e,UACdkgB,EAAM,KACRA,EAAM,IAAMA,GAEd,IAAIC,EAAQ/+B,EAAQg/B,WAAa,EAIjC,OAHID,EAAQ,KACVA,EAAQ,IAAMA,GAEV,GAANh4D,OAAU+3D,EAAG,KAAA/3D,OAAIg4D,EAAK,KAAAh4D,OAAIi5B,EAAQi/B,e,kECUpC,MAAMl8C,GAAYC,YAAYnH,IAAK,CACjCgI,QAAS,CACPO,QAAS,EACT+f,WAAYtoB,EAAMqI,QAAQ,GAC1B8f,cAAenoB,EAAMqI,QAAQ,IAE/ByC,OAAQ,CACNC,gBAAiBs4C,KAAK,KACtBvkD,MAAOukD,KAAK,MAEd76C,OAAQ,CACNof,UAAW,SACXvgB,QAAS,OACT8kB,KAAM,IACN7kB,eAAgB,SAChBC,cAAe,SACfsD,WAAY,UAEdy4C,mBAAoB,CAClB/6C,QAAS,SACTqF,aAAc,OAIH,SAAS21C,GAAe17C,GACrC,MAAMC,EAAUZ,MACV,QAAEuH,EAAO,KAAEc,EAAI,QAAEhY,GAAYsQ,GAC5B27C,EAAcC,GAAmB5jD,mBAAS,KAC1CC,EAAWC,GAAgBF,oBAAS,IACpC6jD,EAAUC,GAAe9jD,mBAAS,IACnCwG,EAAOkI,qBAAWvI,GAElBgsB,EAAcA,KAClBvjB,EAAQlX,IA2CV8M,oBAAU,KACJkL,IAnCJxP,GAAa,GACNsG,EAAKjW,UACTkH,qBAAqBC,GACrB3L,KAAMqX,IACL,GAAmB,MAAfA,EAAIlZ,OAkBN,OADAsc,EAAK3G,SAAS,UAAWuD,EAAIgyB,YACtB,KAlBe,CACtB,IAAIuuB,EAAe,GACKvgD,EAAIjZ,KACZ6wB,QAASjuB,IACnB42D,EAAa52D,EAAIg3D,eACnBJ,EAAa52D,EAAIg3D,eAAet+C,KAAK,CACnCu+C,eAAgBj3D,EAAIi3D,eACpBl3D,IAAKC,EAAID,MAGX62D,EAAa52D,EAAIg3D,eAAiB,CAChC,CAAEC,eAAgBj3D,EAAIi3D,eAAgBl3D,IAAKC,EAAID,QAIrD82D,EAAgBD,MAMnBx3D,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,YAC3BygD,EAAYztD,EAAEgN,cAEfI,QAAQ,KACPvD,GAAa,OAMhB,CAACxI,EAASgY,IAEb,MAAMu0C,EAAkB39C,IAAe,IAAd,KAAEqxB,GAAMrxB,EAC/B,OACE7Z,IAAAoa,cAAA,OAAK8F,MAAO,CAAErM,MAAO,OAAQsR,SAAU,QAAS0U,SAAU,UACxD75B,IAAAoa,cAACwR,KAAI,KACH5rB,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,SAAU0mB,QAAS,QAC1ChiD,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aACjBywB,EAAK7pC,OAAS,IACfrB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAG1By6B,EAAKjmB,IAAI,CAACwyC,EAAG5uC,IACZ7oB,IAAAoa,cAAC2R,KAAQ,CACPrZ,QAAM,EACN4H,QAASA,KAzDrB,IAAqBiP,KAyDkBkuC,GAxD3Bp3D,IACLzD,OAAOqmB,KAAKsG,EAAKlpB,IAAK,UADZgyB,MAAM,sBAyDX5qB,IAAKgwD,GACLz3D,IAAAoa,cAACs9C,KAAc,KACb13D,IAAAoa,cAAC8zB,KAAM,CAACzyB,UAAWD,EAAQgD,QACzBxe,IAAAoa,cAACu9C,KAAY,QAGjB33D,IAAAoa,cAAC6R,KAAY,CACXla,QAAS0lD,EAAEF,eACXnlD,UACEqlD,EAAEp3D,IAAM,GAAKL,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAU9CmnD,EAAqBA,KACzB,MAAMC,EAAQ,GACd,IAAK,MAAMC,KAAeZ,EACxBW,EAAM7+C,KACJhZ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQw7C,oBACtBh3D,IAAAoa,cAACuF,IAAU,CAAClF,QAAS,MACnBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBACtBqnD,GAEH93D,IAAAoa,cAACo9C,EAAe,CAACtsB,KAAMgsB,EAAaY,OAI1C,OAAItkD,EAEAxT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQU,QACtBlc,IAAAoa,cAAC0D,KAAgB,CAACoC,MAAO,CAAEoB,aAAc,UACzCthB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAKtBonD,EAAMx2D,OACXw2D,EAEA73D,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,WACvBt7B,IAAAoa,cAAC4kC,GAAU,CACT/sC,KAAK,sBACLgtC,IAAI,uBAELmY,IAKP,OACEp3D,IAAAoa,cAACqK,KAAM,CACLtC,QAASujB,EACThhB,kBAAgB,sBAChBzB,KAAMA,GACNjjB,IAAAoa,cAACurB,KAAW,CACVvjC,GAAG,sBACH8d,MAAO,CAAEob,UAAW,WACpBt7B,IAAAoa,cAACm7C,GAAS,CACRruD,MAAM,gBACN6S,KAAMA,IAER/Z,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBACtB,IAAMxF,IAIXjL,IAAAoa,cAACuK,KAAa,CACZihB,UAAQ,EACRnqB,UAAWD,EAAQE,SACnB1b,IAAAoa,cAACw9C,EAAkB,OAErB53D,IAAAoa,cAACyrB,KAAa,KACZ7lC,IAAAoa,cAAC4F,IAAM,CACL4e,WAAS,EACTtkB,QAASorB,EACTlzB,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mB,wDC9KjC,MAAMtS,GAAU,CACd,gBACA,UACA,cACA,UACA,gBACA,oBACA,iBAEI6nB,GAAW,CACf,gBACA,UACA,cACA,UACA,gBACA,oBACA,iBAGIpL,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,GACNi9C,cAAe,CACbh9C,QAAS,OACTC,eAAgB,gBAChBiB,QAASvI,EAAMqI,QAAQ,GAAK,QAAUrI,EAAMqI,QAAQ,GAAK,QACzD6d,aAAc,sBAEhBo+B,aAAc,CACZnkD,MAAO,OACPsR,SAAU,OACVmW,UAAW,QACXvgB,QAAS,gBAEXmoB,WAAY,CACVvkB,UAAW,IAEbs5C,IAAK,CACHzlD,MAAO,OAET0lD,MAAO,CACL1lD,MAAO,YAYX,SAAS2lD,KACP,MAAM38C,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClB0+C,EAAiBn2C,qBAAWu0C,KAC3BvzC,EAAMyZ,GAAW18B,IAAMuT,UAAS,IAChC8kD,EAAiBC,GAAsBt4D,IAAMuT,YAC7C+zB,EAAOC,GAAYh0B,mBAAS,IA0GnC,OACEvT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACm7C,GAAS,CACRruD,MAAM,WACN6S,KAAMA,IAGR/Z,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnF,QAAS,OAAQC,eAAgB,kBAC7Chb,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBACtB,IAAM2nD,EAAe9tD,UAGxBtK,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aACjB,IAAM29C,EAAerC,cAAgB,IACtC/1D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAG3BzQ,IAAAoa,cAAC6C,IAAS,CACR0lB,UA1GmB/4B,IACL,KAAdA,EAAEg5B,SAEJw1B,EAAe9d,eAAehT,IAwG5B5qB,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAC9BrO,GAAG,sBACHqa,KAAK,SACLhC,QAAQ,WACRvC,MAAOovB,EACPhpB,SArHN,SAA2B1U,GACzB29B,EAAS39B,EAAEI,OAAOkO,QAqHduD,UAAWD,EAAQ0nB,WACnB5lB,WAAY,CACVi7C,eAAgBv4D,IAAAoa,cAACo+C,KAAU,CAAC/8C,UAAWD,EAAQq4B,gBAIlDukB,EAAe5kD,UAAYxT,IAAAoa,cAACuB,IAAc,MAAM,KAC/Cy8C,EAAe5kD,WAAgD,IAAnC4kD,EAAe1C,SAASr0D,OAGpDrB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACq+C,GAAe,CACdt6D,QAASA,GACTkoB,KA5FV,WACE,IAAI5P,EAAK,GACT,OAAgC,OAA5B2hD,EAAe1C,UAEnB0C,EAAe1C,SAASzwC,IAAKkG,GAC3B1U,EAAGuC,KACDgN,GAASf,IAAKxd,IACZ,IAAInH,EAAM4c,OAAOC,OAAO,GAAIgO,GAsC5B,OArCA7qB,EAAIo4D,YAAcC,GAA2BxtC,EAAEutC,aAC/Cp4D,EAAIs4D,QAAUD,GAA2BxtC,EAAEytC,SAC3Ct4D,EAAIu4D,cACF74D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQw8C,cACtB9X,GACC/0B,EAAE0tC,cACF9+C,EAAKrW,KAAKoI,iBAAiBgE,WAIjCxP,EAAI2K,QAAUjL,IAAAoa,cAAA,YAAO+Q,EAAElgB,SACvB3K,EAAIw4D,kBACF94D,IAAAoa,cAAA,QACEqB,UAAS,GAAA7c,OAAK4c,EAAQw8C,aAAY,KAAAp5D,OAChCusB,EAAE2tC,kBAAoBt9C,EAAQy8C,IAAMz8C,EAAQ08C,QAE7ChY,GACC/0B,EAAE2tC,kBACF/+C,EAAKrW,KAAKoI,iBAAiBgE,WAIjCxP,EAAIy4D,cACF/4D,IAAAoa,cAACkK,KAAO,CAACrQ,MAAO,2BACdjU,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,KAAM0+C,OAjFE/tD,EAiFoBkgB,EAAE8tC,cAAgB,GAhFnEv8B,GAAQ,QACR47B,EAAmBrtD,GAFrB,IAA+BA,IAkFjBjL,IAAAoa,cAACu9C,KAAY,QAInBr3D,EAAI24D,cACFj5D,IAAAoa,cAAC6F,IAAI,CAAC1X,GAAE,mBAAA3J,OAAqBusB,EAAE8tC,gBAC7Bj5D,IAAAoa,cAACkK,KAAO,CAACrQ,MAAO,gBACdjU,IAAAoa,cAAC4F,IAAM,CAACxN,MAAM,WAAW2Y,EAAE8tC,iBAI1B34D,EAAImH,OA3C4BgP,EA0F/ByiD,KAGPd,EAAe5kD,WAAgD,IAAnC4kD,EAAe1C,SAASr0D,OACnDrB,IAAAoa,cAAC++C,KAAQ,CACP1+C,QAAQ,OACRsE,OAAO,SAEP,KAEJ/e,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQu8C,eACtB/3D,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiJ,UAAWD,EAAQ9I,OACnBy7B,UAAWnuC,IAAAoa,cAACg/C,KAAkB,MAC9B9+C,QAtJZ,WACE89C,EAAe7B,iBAsJL15C,UAAWu7C,EAAehC,UAC1B77C,aAAW,sBACXva,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnF,QAAS,OAAQwD,WAAY,WACzCve,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SACtB,IACC2nD,EAAe7tD,KACf,OACC6tD,EAAexC,WAAaE,IACzB,GACAsC,EAAexC,YAGzB51D,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiJ,UAAWD,EAAQ9I,OACnB2mD,QAASr5D,IAAAoa,cAACk/C,KAAgB,MAC1Bh/C,QA3JZ,WACE89C,EAAe9B,iBA2JLz5C,UAAWu7C,EAAe/B,UAC1B97C,aAAW,kBACXva,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YA3C7BzQ,IAAAoa,cAAC4kC,GAAU,MAiDbh/C,IAAAoa,cAAC68C,GAAc,CACbh0C,KAAMA,EACNd,QA9LN,WACEua,GAAQ,IA8LJzxB,QAASotD,KC5QF,SAASkB,GAAkBh+C,GACxC,MAAM,SAAE8R,EAAQ,UAAE7Z,EAAS,MAAEtM,EAAQ,UAAaqU,GAC3CrD,EAAOsrC,GAAYjwC,mBAAS,IAC7BimD,EAAiBpyC,aAAYlP,EAAO,KAe1C,OAJAH,oBAAU,KAHRsV,EAIamsC,IACZ,CAACA,IAGFx5D,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC6C,IAAS,CACRP,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMvJ,IAC/B9E,GAAG,sBACHqY,QAAQ,WACRvC,MAAOA,EACPoG,SArBN,SAAqBwB,GACnB,MAAMmB,EAAInB,EAAI9V,OAAOkO,MACrBsrC,EAASviC,IAoBL5C,aAAc,MACd6B,MAAO,CAAEpE,OAAQ,uBAElBtI,EACCxT,IAAAoa,cAACuB,IAAc,CAACuE,MAAO,CAAEpE,OAAQ,wBAC/B,M,yBChCV,MAAMlB,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJC,QAAS,QAEXqN,KAAM,CACJrN,QAAS,OACTC,eAAgB,SAChBuD,WAAY,UAEd/B,KAAM,CACJzB,QAAS,OACTC,eAAgB,SAChBuD,WAAY,SACZ6U,WAAY,WAID,SAASqmC,GAAiBl+C,GACvC,MAAM,OAAE9d,GAAW8d,EACbC,EAAUZ,KAShB,OACE5a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4M,MACtBpoB,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,YACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAZjB,CACA,cAAD7R,OAAgBnB,GACbi8D,MAUqBC,Q,wBCpBnB,SAASC,GAAWr+C,GACjC,MAAM,UAAEusB,GAAcvsB,EAChBxB,EAAOkI,qBAAWvI,GAClBmgD,EAAa53C,qBAAW44B,KAExB,aAAEJ,EAAY,gBAAEC,GAAoBmf,EACpCC,EAAkBrf,EAAe,aAAe,UAEtD,IAAIt8C,EACA6nB,EACA8hB,GACF3pC,EAAU,CAAC,cAAe,YAAa,aAAc,eACrD6nB,EAAW,CAAC,UAAW,YAAa,aAAc,gBACzCy0B,GACTt8C,EAAU,CACR,cACA,gBACA,YACA,cACA,YACA,eAEF6nB,EAAW,CACT,UACA,gBACA,YACA,cACA,YACA,iBAGF7nB,EAAU,CACR,cACA,YACA,cACA,YACA,eAEF6nB,EAAW,CACT,UACA,YACA,cACA,YACA,gBAIJ,MAgBM+zC,EAAkBA,CAACtyD,EAAKonD,KAC5B,OAAQpnD,GACN,IAAK,UACH,MAnBkBonD,IAEpB7uD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,GAAA3J,OAAKkpC,EAAY,YAAc,SAAQ,KAAAlpC,OACvCk7D,EAAkBjL,EAAM5jD,QAAU,WAEpCjL,IAAAoa,cAACkK,KAAO,CAACrQ,MAAO,cACdjU,IAAAoa,cAAC4F,IAAM,CAACxN,MAAM,WAAWq8C,EAAM5jD,WAGlC4jD,EAAMmL,MAAQh6D,IAAAoa,cAAC6/C,KAAI,CAAC/yD,MAAM,QAAW,MAQ/BgzD,CAAerL,GACxB,IAAK,YACH,OAAO8J,GAA2B9J,EAAMS,WAC1C,IAAK,aACH,OAAOT,EAAMpoD,WACf,IAAK,cACH,OAAOzG,IAAAoa,cAACq/C,GAAgB,CAACh8D,OAAQoxD,EAAMsL,cACzC,IAAK,gBACH,OAAOtL,EAAMuL,cACf,IAAK,YACH,OAAOzB,GAA2B9J,EAAMwL,WAC1C,IAAK,cACH,OAAOxL,EAAMtX,YACf,QACE,OAAO,OAYb,OACEv3C,IAAAoa,cAAA,WACEpa,IAAAoa,cAACm7C,GAAS,CACRruD,MAAM,SACN6S,KAAMA,IAGR/Z,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnF,QAAS,OAAQC,eAAgB,kBAC7Chb,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACtB,IAAMopD,EAAWvvD,UAGpBtK,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aACjB,IAAMo/C,EAAWtf,YAAc,IAChCv6C,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAI3BzQ,IAAAoa,cAACm/C,GAAiB,CAChBlsC,SAAUwsC,EAAWvf,eACrB9mC,WAAW,IAGbxT,IAAAoa,cAACmZ,KAAS,CAACtJ,KAAG,GACZjqB,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLvF,QAASoxB,EACTn8B,SAAUA,IAAMo8B,GAAiBD,GACjChqC,KAAK,eACL+B,MAAM,YAGVtL,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAIjCopD,EAAWrmD,UACVxT,IAAAoa,cAACuB,IAAc,MAEf3b,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,KAEtB86C,EAAWrmD,WAA0C,IAA7BqmD,EAAWzf,OAAO/4C,OAG1CrB,IAAAoa,cAACq+C,GAAe,CACdt6D,QAASA,EACTkoB,KAvDoB,OAAtBwzC,EAAWzf,OAAwB,GAEhCyf,EAAWzf,OAAOn1B,IAAK4pC,GAC5B7oC,EAASf,IAAKxd,GAAQsyD,EAAgBtyD,EAAKonD,OAgDzC7uD,IAAAoa,cAAC4kC,GAAU,OC5InB,MAAMpkC,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJmlB,OAAQ,oBACRxhB,gBAAiB,UACjB20B,UAAW,OACXn3B,QAAS,GACT+f,WAAY,GACZ7W,SAAU,SACVrJ,OAAQ,WAINkyC,GAAyB,CAC7BC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,QAAS,MA8NIkM,OA3Nf,SAAwB/+C,GACtB,MAAM,QAAE0yC,EAAO,KAAEC,EAAI,MAAEC,EAAK,QAAEC,GAAYJ,GACpCxyC,EAAUZ,KACVb,EAAOkI,qBAAWvI,IACjBlG,EAAWC,GAAgBF,oBAAS,IACpCk7C,EAAgBC,GAAqBn7C,oBAAS,IAC9C9H,EAAOojC,GAAYt7B,mBAAS,KAC5Bo7C,EAAiBC,GAAsBr7C,mBAAS66C,IAChDmM,EAAYC,GAAiBjnD,qBAC9Bw7C,EAAe9uD,iBAAO,OACrB0uC,EAAWC,GAAgBr7B,oBAAS,GAE3CwE,oBAAU,KACR82B,EAAS90B,EAAKrW,KAAKoI,iBAAiBL,QACnC,CAACsO,EAAKrW,KAAKoI,iBAAiBL,QAE/BsM,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,YAC7B4T,EAAKjW,UACFmI,kBACC8N,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4T,EAAKrW,KAAK+E,UAEXnJ,KAAMqX,IACL6C,SAASslB,eAAe,SAASkwB,UAAYr4C,EAAIjZ,OAElDgC,MAAOg6C,GAAQjmC,GAAa,IAC5BuD,QAAQ,KACPvD,GAAa,KAGjBsG,EAAKjW,UACFoI,cAAc6N,EAAKrW,KAAKoI,iBAAiB3F,WACzC7G,KAAMqX,GAAQ6jD,EAAc7jD,EAAIjZ,SAEpC,CAACqc,EAAKrW,KAAKoI,iBAAiB3F,UAAW4T,EAAKrW,KAAK+E,WAEpD,IAAIwmC,GAAiB,EACrB,MA0EMigB,EACJlvD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6C,IAAS,CACRiD,MAAO,CAAE8b,WAAY,EAAG5I,WAAY,GAAIjU,YAAa,EAAGtL,MAAO,KAC/DkK,KAAK,QACL6gB,WAAS,EACTvhC,OAhFkBmZ,EAgFI/K,WAhFSnK,IAANkV,GAAmBA,EAAEnV,OAAS,IAAM4tC,IAAmBN,IAiFhFz2B,MAAOzM,EACP6S,SAAW1U,GAAMilC,EAASjlC,EAAEI,OAAOkO,SAErClY,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAASA,KAnFT0U,GAAcvjB,IAChBwjC,GAAiB,EACjBL,GAAa,GAEbggB,EAAmBX,GACnBl0C,EAAKjW,UACF6H,gBACCF,EACAsO,EAAKrW,KAAK+E,SACVsR,EAAKrW,KAAKoI,iBAAiB3F,WAE5B7G,KAAK,IAAMsvD,EAAmBV,IAC9BxuD,MAAOg6C,GAAQkV,EAAmBT,MAErCp0C,EAAK3G,SAAS,UAAW,uBACzB67B,GAAiB,EACjBL,GAAa,MAoEX5uC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAvFL+F,MA2IxB,OACExW,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OACE8F,MAAO,CACLpE,OAAQ,OACRwF,aAAc,OACdvG,QAAS,OACTC,eAAgB,kBAElBhb,IAAAoa,cAACyzC,GAAU,CACTv5B,KAAM/Y,EAAMusB,UAAY,mBAAqB,kBAE/C9nC,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC+0C,KAAY,CACXC,QAASA,IAAMpvD,IAAAoa,cAAC0zC,GAAW,MAC3BpyC,QAASA,IAAMqzC,EAAa7uD,UAE9BF,IAAAoa,cAAC4F,IAAM,CAAC1F,QArIA+0C,KACd,IAAKkL,EAAY,OACjB,MAAMl0C,EAAO,GAEbA,EAAK,GAAK,CACR,GAAG,GAADznB,OACCmb,EAAKpC,WAAWK,SAAS,cAAa,KAAApZ,OACvCmb,EAAKrW,KAAKoI,iBAAiB3F,YAG/BkgB,EAAK,GAAK,CACR,SACA,kBACA,oBACA,MACA,sBACA,SACA,cACA,eACApB,IAAKb,GAAOrK,EAAKpC,WAAWK,SAASoM,IACvCm2C,EAAWhsC,QAAQ,CAACghC,EAAa1mC,KAC/B,MAAM,OACJhc,EAAM,gBACN4tD,EAAe,sBACfhH,EAAqB,gBACrBD,EAAe,oBACfkH,EAAmB,OACnBhmB,EAAM,QACNzpC,EAAO,YACPssC,GACEgY,EACJlpC,EAAKwC,EAAI,GAAK,CACZhc,EACA4tD,EACAhH,EAAsBn8B,MAAM,KAAK,GACjCk8B,EACAkH,EACAhmB,EAAOkJ,eAAe,SACtB3yC,EACAssC,KAIJ8V,GACEhnC,EAAKpB,IAAKb,GAAOA,EAAGurC,KAAK,MAAMA,KAAK,MAAM,GAAD/wD,OACtCmb,EAAKpC,WAAWK,SAAS,cAAa,KAAApZ,OACvCmb,EAAKrW,KAAKoI,iBAAiB3F,cAwFvBnG,IAAAoa,cAACw1C,KAAc,CAAC1vC,MAAO,CAAEf,YAAa,UACtCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAExBg+C,EACCzuD,IAAAoa,cAAApa,IAAAie,SAAA,KACGixC,EAAW,IAtEEW,MACxB,OAAQlB,GACN,KAAKT,EACH,OACEluD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC01C,KAA8B,CAC7B5vC,MAAO,CAAE1N,MAAO,QAASw9B,cAAe,SAAUl0B,OAAQ,KAE5D9b,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAI/B,KAAKw9C,EACH,OACEjuD,IAAAoa,cAAC0D,KAAgB,CACfoC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,YAIvB,KAAKme,EACH,OACEnuD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC21C,KAAgB,CACf7vC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,SACfx9B,MAAO,SAGXxS,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAI/B,KAAK29C,EACL,QACE,OAAO,OA2BayB,IAGhB7vD,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IAAMo0C,GAAkB,IACvC1uD,IAAAoa,cAAC41C,KAAe,CAAC9vC,MAAO,CAAEf,YAAa,UACvCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAK/BzQ,IAAAoa,cAAA,OACE8F,MAAO,CAAEzB,gBAAiB,SAC1BumC,IAAK+J,EACL3sD,GAAG,YCxOX,MAAMwY,GAAYC,YAAW,MAC3BC,KAAM,CACJmlB,OAAQ,oBACRxhB,gBAAiB,UACjB20B,UAAW,OACXn3B,QAAS,GACT+f,WAAY,GACZ7W,SAAU,SACVrJ,OAAQ,WAINkyC,GAAyB,CAC7BC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,QAAS,MAqMIuM,OAlMf,SAA8Bp/C,GAC5B,MAAM,QAAE0yC,EAAO,KAAEC,EAAI,MAAEC,EAAK,QAAEC,GAAYJ,GACpCxyC,EAAUZ,KAEV3P,EAAUsQ,EAAMtQ,SAAWsQ,EAAM+yC,cAActlB,OAAO5mC,GACtD2X,EAAOkI,qBAAWvI,IACjBlG,EAAWC,GAAgBF,oBAAS,IACpCk7C,EAAgBC,GAAqBn7C,oBAAS,IAC9C9H,EAAOojC,GAAYt7B,mBAASwG,EAAKrW,KAAKoI,iBAAiBL,QACvDkjD,EAAiBC,GAAsBr7C,mBAAS66C,IAChDwM,EAAUC,GAAetnD,qBAC1Bw7C,EAAe9uD,iBAAO,MAE5B8X,oBAAU,KACR82B,EAAS90B,EAAKrW,KAAKoI,iBAAiBL,QACnC,CAACsO,EAAKrW,KAAKoI,iBAAiBL,QAE/BsM,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,WAC7B4T,EAAKjW,UACFiI,oBAAoBgO,EAAKrW,KAAKoI,iBAAiB3F,UAAW8E,GAC1D3L,KAAMqX,IACLkkD,EAAYlkD,EAAIjZ,QAGtBqc,EAAKjW,UACFyH,wBACCwO,EAAKrW,KAAKoI,iBAAiB3F,UAC3B8E,EACA8O,EAAKrW,KAAK+E,UAEXnJ,KAAMqX,IACL6C,SAASslB,eAAe,SAASkwB,UAAYr4C,EAAIjZ,KAAKwa,QAEvDxY,MAAOg6C,GAAQjmC,GAAa,IAC5BuD,QAAQ,KACPvD,GAAa,MAEhB,CAACsG,EAAKrW,KAAKoI,iBAAiB3F,YAE/B,MA+CM+oD,EACJlvD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6C,IAAS,CACRiD,MAAO,CAAE8b,WAAY,EAAG5I,WAAY,GAAIjU,YAAa,EAAGtL,MAAO,KAC/DkK,KAAK,QACL6gB,WAAS,EACT1mB,MAAOzM,EACP6S,SAAW1U,GAAMilC,EAASjlC,EAAEI,OAAOkO,SAErClY,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAASA,KAzDbs0C,EAAmBX,QACnBl0C,EAAKjW,UACF4H,0BACCD,EACAsO,EAAKrW,KAAK+E,SACVwC,EACA8O,EAAKrW,KAAKoI,iBAAiB3F,WAE5B7G,KAAK,IAAMsvD,EAAmBV,IAC9BxuD,MAAOg6C,GAAQkV,EAAmBT,MAiDjCnuD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAoD7B,OACEzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OACE8F,MAAO,CACLpE,OAAQ,OACRwF,aAAc,OACdvG,QAAS,OACTC,eAAgB,kBAElBhb,IAAAoa,cAACyzC,GAAU,CACTv5B,KAAM/Y,EAAMusB,UAAY,mBAAqB,kBAE/C9nC,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC+0C,KAAY,CACXC,QAASA,IAAMpvD,IAAAoa,cAAC0zC,GAAW,MAC3BpyC,QAASA,IAAMqzC,EAAa7uD,UAE9BF,IAAAoa,cAAC4F,IAAM,CAAC1F,QAnHA+0C,KACd,MAAMhpC,EAAO,GAEbA,EAAK,GAAK,CACRu0C,EAASE,YAAY,GAADl8D,OACjBmb,EAAKpC,WAAWK,SAAS,aAAY,KAAApZ,OAAIg8D,EAAS3vD,UAEvDob,EAAK,GAAK,CACR,SACA,kBACA,eACA,YACApB,IAAKb,GAAOrK,EAAKpC,WAAWK,SAASoM,IACvCw2C,EAASG,MAAMxsC,QAAQ,CAACghC,EAAa1mC,KACnC,MAAM,OACJhc,EAAM,UACN4iD,EAAS,iBACTuL,EAAgB,SAChBluD,GACEyiD,EACJlpC,EAAKwC,EAAI,GAAK,CACZhc,EACA4iD,EACAuL,EACAluD,KAIJugD,GACEhnC,EAAKpB,IAAKb,GAAOA,EAAGurC,KAAK,MAAMA,KAAK,MAAM,GAAD/wD,OACtCmb,EAAKpC,WAAWK,SAAS,aAAY,KAAApZ,OAAIg8D,EAAS3vD,YAsF/CjL,IAAAoa,cAACw1C,KAAc,CAAC1vC,MAAO,CAAEf,YAAa,UACtCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAExBg+C,EACCzuD,IAAAoa,cAAApa,IAAAie,SAAA,KACGixC,EAAW,IAtEEW,MACxB,OAAQlB,GACN,KAAKT,EACH,OACEluD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC01C,KAA8B,CAC7B5vC,MAAO,CAAE1N,MAAO,QAASw9B,cAAe,SAAUl0B,OAAQ,KAE5D9b,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAI/B,KAAKw9C,EACH,OACEjuD,IAAAoa,cAAC0D,KAAgB,CACfoC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,YAIvB,KAAKme,EACH,OACEnuD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC21C,KAAgB,CACf7vC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,SACfx9B,MAAO,SAGXxS,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAI/B,KAAK29C,EACL,QACE,OAAO,OA2BayB,IAGhB7vD,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IAAMo0C,GAAkB,IACvC1uD,IAAAoa,cAAC41C,KAAe,CAAC9vC,MAAO,CAAEf,YAAa,UACvCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAK9BxF,EAAQ5J,OAAS,GAAImS,EAAYxT,IAAAoa,cAACuB,IAAc,MAAa,KAC9D3b,IAAAoa,cAAA,OACE8F,MAAO,CAAEzB,gBAAiB,SAC1BumC,IAAK+J,EACL3sD,GAAG,YC/MX,MAAMwY,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJmlB,OAAQ,oBACRxhB,gBAAiB,UACjB20B,UAAW,OACXn3B,QAAS,GACT+f,WAAY,GACZ7W,SAAU,SACVrJ,OAAQ,WAINkyC,GAAyB,CAC7BC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,QAAS,MAiQI6M,OA9Pf,WACE,MAAM,QAAEhN,EAAO,KAAEC,EAAI,MAAEC,EAAK,QAAEC,GAAYJ,GACpCxyC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBwhD,EAAaj5C,qBAAWk0B,KACvBrB,EAAQC,GAAaxhC,sBACrBC,EAAWC,GAAgBF,oBAAS,IACpCk7C,EAAgBC,GAAqBn7C,oBAAS,IAC9C9H,EAAOojC,GAAYt7B,mBAASwG,EAAKrW,KAAKoI,iBAAiBL,QACvDkjD,EAAiBC,GAAsBr7C,mBAAS66C,GACjDW,EAAe9uD,iBAAO,MAE5B8X,oBAAU,KACR82B,EAAS90B,EAAKrW,KAAKoI,iBAAiBL,QACnC,CAACsO,EAAKrW,KAAKoI,iBAAiBL,QAE/BsM,oBAAU,KACHgC,EAAKrW,KAAKoI,iBAAiB3F,WAGhC4T,EAAKjW,UACF0I,UAAUuN,EAAKrW,KAAKoI,iBAAiB3F,UAAW4T,EAAKrW,KAAKX,OAAQm4D,EAAWzuD,YAAY,GACzFnN,KAAMqX,IACc,MAAfA,EAAIlZ,QACNs3C,EAAUp+B,EAAIjZ,QAGjBgC,MAAOrC,IACNwB,QAAQC,IAAIzB,MAEf,CAAC0c,EAAKrW,KAAKoI,iBAAiB3F,UAAW4T,EAAKrW,KAAKX,SAEpDgV,oBAAU,KACHgC,EAAKrW,KAAKoI,iBAAiB3F,WAGhC4T,EAAKjW,UACF6I,sBACCoN,EAAKrW,KAAKX,OACVgX,EAAKrW,KAAKoI,iBAAiB3F,UAC3B+0D,EAAWzuD,YAEZnN,KAAMqX,IACL6C,SAASslB,eAAe,UAAUkwB,UAAYr4C,EAAIjZ,OAEnDgC,MAAOg6C,GAAQjmC,GAAa,IAC5BuD,QAAQ,KACPvD,GAAa,MAEhB,CAACsG,EAAKrW,KAAKoI,iBAAiB3F,YAG/B,IAAI8oC,GAAiB,EACrB,MAkBMigB,EACJlvD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6C,IAAS,CACRiD,MAAO,CAAE8b,WAAY,EAAG5I,WAAY,GAAIjU,YAAa,EAAGtL,MAAO,KAC/DkK,KAAK,QACL6gB,WAAS,EACT1mB,MAAOzM,EACPpO,OA3BkBmZ,EA2BI/K,OA3BSnK,IAANkV,GAAmBA,EAAEnV,OAAS,IAAM4tC,GA4B7D3wB,SAAW1U,GAAMilC,EAASjlC,EAAEI,OAAOkO,SAErClY,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAASA,KA7BT0U,GAAcvjB,IAChBwjC,GAAiB,EACjB2f,EAAmBX,GACnBl0C,EAAKjW,UACF+H,oBACCJ,EACAsO,EAAKrW,KAAKX,OACVgX,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4T,EAAKrW,KAAK+E,UAEXnJ,KAAK,IAAMsvD,EAAmBV,IAC9BxuD,MAAOg6C,GAAQkV,EAAmBT,KAErClf,GAAiB,IAiBfjvC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAjCL+F,MAsCxB,MA+CMy4C,EAAgBtH,IACZC,KAAKuT,MAAe,IAATxT,GAAgB,KAAK/J,eAAe,SAGnDwd,EAAkB7L,IACtB,MAAM,gBAAEjR,EAAe,kBAAEoR,GAAsBH,EAC/C,OAAuB,GAAnBjR,EACKvkC,EAAKpC,WAAWK,SAAS,WACD,wBAAtB03C,EACF31C,EAAKpC,WAAWK,SAAS,WAEzB03C,EAAkBp4B,MAAM,KAAK,IAkExC,OACEt3B,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OACE8F,MAAO,CACLpE,OAAQ,OACRwF,aAAc,OACdvG,QAAS,OACTC,eAAgB,kBAElBhb,IAAAoa,cAAA,YACApa,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC+0C,KAAY,CACXC,QAASA,IAAMpvD,IAAAoa,cAAC0zC,GAAW,MAC3BpyC,QAASA,IAAMqzC,EAAa7uD,UAE9BF,IAAAoa,cAAC4F,IAAM,CAAC1F,QA7EA+0C,KACd,MAAMhpC,EAAO,GAEbA,EAAK,GAAK,CAACtM,EAAKpC,WAAWK,SAAS,WACpCqO,EAAK,GAAK,CAAC,SAAU,kBAAmB,gBAAiB,OACtDpB,IAAKb,GAAOrK,EAAKpC,WAAWK,SAASoM,IACrCxlB,OACCmb,EAAKpC,WAAWK,SAAS,cAAa,KAAApZ,OAC/Bmb,EAAKrW,KAAKoI,iBAAiBgE,SAAQ,MAE9CglC,EAAO3nC,QAAQohB,QAAQ,CAACghC,EAAa1mC,KACnC,MAAM,OAAEhc,EAAM,SAAEqwC,EAAQ,SAAEpwC,EAAQ,OAAE4nC,GAAW6a,EAC/ClpC,EAAKwC,EAAI,GAAK,CACZhc,EACAqwC,EACAke,EAAe7L,GACfziD,EACAmiD,EAAava,MAGjBruB,EAAKA,EAAKhlB,QAAU,CAAC,IACrBglB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,cACzB,GACA,GACA,GACAi3C,EAAana,EAAOJ,SAElBI,EAAOkM,eACT36B,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,gBACzB,GACA,GACA,GACAi3C,EAAana,EAAOkM,gBAGpBlM,EAAOF,YACTvuB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,aACzB,GACA,GACA,GACAi3C,EAAana,EAAOF,aAGxBvuB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,eACzB,GACA,GACA,GACAi3C,EAAana,EAAOH,cAGtB0Y,GACEhnC,EAAKpB,IAAKb,GAAOA,EAAGurC,KAAK,MAAMA,KAAK,MAAM,GAAD/wD,OACtCmb,EAAKpC,WAAWK,SAAS,UAAS,KAAApZ,OACnCmb,EAAKrW,KAAKoI,iBAAiB3F,cAqBvBnG,IAAAoa,cAACw1C,KAAc,CAAC1vC,MAAO,CAAEf,YAAa,UACtCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAExBg+C,EACCzuD,IAAAoa,cAAApa,IAAAie,SAAA,KACGixC,EAAW,IAjJEW,MACxB,OAAQlB,GACN,KAAKT,EACH,OACEluD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC01C,KAA8B,CAC7B5vC,MAAO,CAAE1N,MAAO,QAASw9B,cAAe,SAAUl0B,OAAQ,KAE5D9b,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAI/B,KAAKw9C,EACH,OACEjuD,IAAAoa,cAAC0D,KAAgB,CACfoC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,YAIvB,KAAKme,EACH,OACEnuD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC21C,KAAgB,CACf7vC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,SACfx9B,MAAO,SAGXxS,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAI/B,KAAK29C,EACL,QACE,OAAO,OAsGayB,IAGhB7vD,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IAAMo0C,GAAkB,IACvC1uD,IAAAoa,cAAC41C,KAAe,CAAC9vC,MAAO,CAAEf,YAAa,UACvCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAK9B+C,EAAYxT,IAAAoa,cAACuB,IAAc,MAAM,KAClC3b,IAAAoa,cAAA,OACE8F,MAAO,CAAEzB,gBAAiB,SAC1BumC,IAAK+J,EACL3sD,GAAG,aC3RI,SAASslD,GAAsBhS,EAASiS,GACrD,GAAIA,EAAS,EACX,OAAO,EAET,MAAM,gBAAE3J,EAAe,kBAAEC,GAAsBvI,EAEzC7L,EAAYoU,GAAqB,EACvC,OAAI0J,GAAU3J,EACLA,EAEF4J,KAAKC,KAAKF,EAAS9d,GAAaA,E,wBCezC,MAAMjvB,GAAYC,YAAYnH,IAAK,CACjC2nD,aAAc,CACZv/C,OAAQ,SACRjI,MAAO,eAET+sB,WAAY,CACV7lB,QAAS,OACTwD,WAAY,SACZ,CAAC7K,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B7lB,cAAe,SACfsD,WAAY,kB,mECnCX,MAAM+8C,GAAa,CACxBC,IAAK,EACLC,KAAM,EACNC,SAAU,EACVC,OAAQ,GAGGC,GAAe,CAC1BC,aAAc,EACdC,UAAW,EACXC,KAAM,EACNC,OAAQ,GAGGC,GAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAClDC,GAAS,CACpB,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,Y,cCzBK,MAAMrhD,GAAYC,YAAYnH,IAAK,CACxCwoD,gBAAiB,CACf3pD,WAAYmB,EAAM9B,QAAQG,QAAQE,MAEpCkqD,gBAAiB,CACf5pD,WAAY,WAEd0X,IAAK,CACHwyB,UAAW,GACX7iB,aAAc,qBACd3Q,OAAQ,WAEVmzC,cAAe,CACbvoD,MAAO,IACPkL,OAAQ,OACRvM,MAAO,QACPyJ,QAAS,EACT4f,cAAe,EACf9gB,QAAS,eACTmqB,UAAW,cAEbm3B,eAAgB,CACdn3B,UAAW,aACXrxB,MAAO,qBACPkH,QAAS,eACTgE,OAAQ,OACRixB,cAAe,OAEjB2mB,IAAK,CACH53C,OAAQ,OACRuc,UAAW,SACX9W,SAAU,OACV1I,OAAQ,OAEV86C,MAAO,CACLt7B,UAAW,UAEb9e,KAAM,CACJwzB,cAAe,WACfn8B,MAAO,GACPkL,OAAQ,GACRI,YAAa,MACbiU,WAAY,OAEdnf,MAAO,CACL,MAASP,EAAM9B,QAAQwqC,KAAK,KAC5B,WAAc,OACd,OAAU,GACV,UAAW,CACTnzB,OAAQ,UACR7J,eAAgB,cAGpBk9C,oBAAqB,CACnBxgD,OAAQ,IACRtJ,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BmgB,qBAAsB,CACpBxhD,QAAS,eACTqY,WAAY,IAEdopC,iBAAkB,CAChBppC,WAAY,GACZrY,QAAS,gBAEX5G,MAAO,CACLsK,gBAAiB,QACjB5K,MAAO,OACPsR,SAAU,QACVrJ,OAAQ,OACR2B,SAAU,WACVtC,IAAK,MACL0D,UAAW,mBACX5C,QAAS,OACT+f,WAAY,GACZV,UAAW,SACX83B,QAAS,QAEXqJ,cAAe,CACbjqD,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BvoC,MAAO,OACPyN,aAAc,GACdkD,SAAU,GACVqkC,WAAY,QAEd6T,mBAAoB,CAClBphC,UAAW,OACXznB,MAAO,QACPkH,QAAS,eACTi1B,cAAe,OAEjB2sB,qBAAsB,CACpBrhC,UAAW,OACXvgB,QAAS,eACTlH,MAAO,qBACPgmB,SAAU,SAEZ+iC,cAAe,CACb/oD,MAAO,OACPsR,SAAU,QACVrJ,OAAQ,OACRwF,aAAc,QAEhBu7C,cAAe,CACbv7C,aAAc,GACd3C,UAAW,IAEbm+C,WAAY,CACVjpD,MAAO,SAETgJ,SAAU,CACRrK,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5B2gB,iBAAkB,CAChB9gD,QAAS,WACTlB,QAAS,OACTC,eAAgB,iBAElBgiD,WAAY,CACV7xB,UAAW,SACXpsB,OAAQ,SAEVk+C,KAAM,CACJ78B,WAAY,KAEd88B,QAAS,CACP/9C,YAAa,MACb3M,MAAO,QAET2qD,QAAS,CACPh+C,YAAa,MACb3M,MAAO,SAET4qD,QAAS,CACPj+C,YAAa,MACb3M,MAAO,cAETuwB,QAAS,CACPlvB,MAAO,OACPkL,OAAQ,OACR9C,QAAS,UAEXohD,WAAY,CACVx3C,MAAO,QAETy3C,YAAa,CACXz3C,MAAO,SAET03C,aAAc,CACZzhD,OAAQ,EACRtJ,MAAO,cAETgrD,aAAc,CACZ1hD,OAAQ,EACRtJ,MAAO,SAETirD,eAAgB,CACdjrD,MAAO,MACP4gB,WAAY,QACZkI,UAAW,OACX9W,SAAU,OACVzJ,QAAS,eACTlH,MAAO,yBCuTI6pD,OAvceniD,IAC5B,MAAMoiD,EAAoBC,IACxB,MAAM1mC,EAAO,IAAIT,KAAKmnC,GACtB,OAAO,IAAInnC,KAAKS,EAAKC,UAAuC,IAA3BD,EAAKE,qBACnCC,SACAC,MAAM,KAAK,IAGVumC,EAAgCD,IACpC,MAAM1mC,EAAO,IAAIT,KAAKmnC,GACtB,OAAO,IAAInnC,KACTS,EAAKC,UAAuC,IAA3BD,EAAKE,oBAA8B,MAEnDC,SACAC,MAAM,KAAK,IAGVwmC,EAAe5mC,GAEjBA,GACyC,kBAAzCha,OAAO6gD,UAAUnnD,SAASonD,KAAK9mC,KAC9B+mC,MAAM/mC,GAILnd,EAAOkI,qBAAWvI,IAClB,kBAAEhR,EAAiB,kBAAEE,GAAsBmR,EAAKjW,WAChD,KAAE03D,EAAI,UAAE0C,EAAS,SAAEzC,GAAaH,IAChC,aAAEM,EAAY,UAAEC,EAAS,KAAEC,EAAI,OAAEC,GAAWJ,GAC5CngD,EAAUZ,MACTujD,EAAaC,GAAkB7qD,mBACpCgI,EAAM4iD,aAAe,CACnB53D,WAAY,GACZ83D,MAAOV,GAAiB,IAAIlnC,MAAO6nC,eACnCv8C,IAAK47C,GAAiB,IAAIlnC,MAAO6nC,eACjC7hD,KAAM,EACNhf,OAAQ+9D,EACRvnD,MAAO,GACP4gB,YAAa,GACb0pC,gBAAiB,GACjBC,iBAAkB,GAClBC,sBAAuB,MAGpBt0B,EAAUu0B,GAAenrD,wBACXjS,IAAnBia,EAAM4uB,SAAyB5uB,EAAM4uB,SAAW0xB,IAE5C,iBAAE8C,EAAgB,QAAEx8C,GAAY5G,EAEtCxD,oBAAU,KACJoyB,IAAa4xB,GACfqC,EAAe,IACVD,EACHK,iBAAkBzkD,EAAKrW,KAAK+R,YAAY1S,OACxC07D,sBAAuB1kD,EAAKrW,KAAK+R,YAAYV,YAC7CxO,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,UACvCy4D,aAAc7kD,EAAKrW,KAAKoI,iBAAiB+D,eAG5C,CAACkK,EAAKrW,KAAK+R,YAAY1S,OAAQgX,EAAKrW,KAAKoI,mBAE5C,MAAM+yD,EAAiB3nC,IAChB4mC,EAAY5mC,IAIjBknC,EAAe,IACVD,EACHE,MAAOV,EAAiBzmC,GACxBnV,IAAK87C,EAA6B3mC,MAIhC4nC,EACJ,IAAIroC,KAAK0nC,EAAYE,OAAOlnC,UAAY,IAAIV,KAAK0nC,EAAYp8C,KAAKoV,UA4B9D4nC,EAAeA,KACnBr2D,EAAkBy1D,GAAa7+D,KAAK,KAClCo/D,EAAY7C,GACZ15C,OAaE68C,EAAsBA,KAC1Bp2D,EAAkBu1D,GAAa7+D,KAAK,KAClC6iB,OAIE88C,EAAUA,KACd,OAAQ90B,GACN,KAAKyxB,EACH,OACE57D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACtB/iC,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,IAAM6H,IACf1H,QAAQ,YACRjI,MAAM,UACNiJ,UAAWD,EAAQ8hD,aACnBt9D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAI/B,KAAKorD,EACH,OACE77D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACtB/iC,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ6hD,WACnB/iD,QAASA,IAAM6H,IACf1H,QAAQ,YACRjI,MAAM,aACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,IAAMokD,EAAY5C,GAC3BrhD,QAAQ,YACRjI,MAAM,UACNiJ,UAAWD,EAAQ8hD,aACnBt9D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAI/B,KAAKqrD,EACH,OACE97D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACtB/iC,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,KACP8jD,EAAe7iD,EAAM4iD,aACrBO,EAAY7C,IAEdpgD,UAAWD,EAAQ6hD,WACnB5iD,QAAQ,YACRjI,MAAM,aACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQ8hD,YACnBzgD,SAAUiiD,EACVxkD,QAASykD,EACTtkD,QAAQ,YACRjI,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAI/B,KAAKsrD,EACH,OACE/7D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACtB/iC,IAAAoa,cAAC4F,IAAM,CACL1F,QAASiB,EAAM4G,QACf1H,QAAQ,YACRjI,MAAM,YACNiJ,UAAWD,EAAQ6hD,YACnBr9D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4F,IAAM,CACL1F,QAAS0kD,EACTvkD,QAAQ,YACRjI,MAAM,UACNqK,SAAUiiD,EACVrjD,UAAWD,EAAQ8hD,aACnBt9D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAI/B,QACE,OAAO,OAIb,OACEzQ,IAAAoa,cAACo0B,KAAUjzB,EACTvb,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQrH,OACtBnU,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQqhD,cACnBpiD,QAAQ,MACRza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEzBzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQohD,eACtB58D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAAa,KAEtCzQ,IAAAoa,cAAC6C,IAAS,CACRK,WAAY,CACVmgC,kBAAkB,EAClBjiC,QAAS,CACPqB,SAAUrB,EAAQqB,WAGtBH,WAAS,EACTG,UAAQ,EACRpB,UAAWD,EAAQmhD,qBACnBzkD,MAAK,GAAAtZ,OAAKu/D,EAAY53D,WAAU,OAAA3H,OAAMu/D,EAAYS,cAClDl5C,WAAS,KAGb1lB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAAS,KAElCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAAC0K,KAAM,CACL24B,iBAAkBtT,EAAW2xB,EAC7Bp/C,WAAS,EACTG,SAAUstB,EAAW2xB,EACrB5jD,MAAOimD,EAAY1hD,KACnB6B,SAhJQ1U,IACpBw0D,EAAe,IAAKD,EAAa1hD,KAAM7S,EAAEI,OAAOkO,SAgJpCgnD,cAAeA,IAAM,KACrB1jD,QAASA,EAAQqB,SACjBqD,MAAO,CAAE1N,MAAO,UACfmsD,EAAiB15C,IAAKxI,GACrBzc,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOuE,EAAKA,MAAOA,EAAK0iD,cAK1Cn/D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAAY,KAErCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAAC6C,IAAS,CACRK,WAAY,CACVmgC,iBAAkBtT,EAAW2xB,EAC7BtgD,QAAS,CACPqB,SAAUrB,EAAQqB,WAGtBsB,WAAY,CACVrB,UAAW,KAEbJ,WAAS,EACT4B,SA7KW1U,IACvBw0D,EAAe,IAAKD,EAAaI,gBAAiB30D,EAAEI,OAAOkO,SA6K/C2E,SAAUstB,EAAW2xB,EACrB5jD,MACEiyB,IAAayxB,EACTuC,EAAYM,sBACZN,EAAYI,oBAKxBv+D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAAU,KAEnCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAAC6C,IAAS,CACRK,WAAY,CACVmgC,iBAAkBtT,EAAW2xB,EAC7BtgD,QAAS,CACPqB,SAAUrB,EAAQqB,WAGtBsB,WAAY,CACVrB,UAAW,IAEbJ,WAAS,EACT4B,SApNS1U,IACrBw0D,EAAe,IAAKD,EAAaiB,cAAex1D,EAAEI,OAAOkO,SAoN7C2E,SAAUstB,EAAW2xB,EACrB5jD,MAAOimD,EAAYiB,kBAIzBp/D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAAS,KAElCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAACob,GAAU,CACT2nB,QAAM,EACN7+B,SAAUugD,EACVpjD,UAAWD,EAAQshD,WACnBjgD,SAAUstB,EAAW2xB,EACrBx+C,WAAY,CACVmgC,iBAAkBtT,EAAW2xB,EAC7BtgD,QAAS,CACPqB,SAAUrB,EAAQqB,WAGtB3E,MAAOimD,EAAYE,MACnB3hD,WAAS,MAIf1c,IAAAoa,cAACwb,KAAuB,CAACC,MAAOC,MAC9B91B,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAAU,KAEnCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAACilD,KAAkB,CACjB/gD,SAAUugD,EACVniD,WAAS,EACT4iD,MAAM,EACN7jD,UAAWD,EAAQshD,WACnBjgD,SAAUstB,EAAW2xB,EACrB5jD,MAAOimD,EAAYE,MACnB/gD,WAAY,CACVmgC,iBAAkBtT,EAAW2xB,EAC7BtgD,QAAS,CACPqB,SAAUrB,EAAQqB,eAM5B7c,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAAU,KAEnCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAACilD,KAAkB,CACjB/gD,SAjRK4Y,IACd4mC,EAAY5mC,IAGjBknC,EAAe,IAAKD,EAAap8C,IAAK47C,EAAiBzmC,MA8QzCooC,MAAM,EACN7jD,UAAWD,EAAQshD,WACnBjgD,SAAUstB,EAAW2xB,EACrB5jD,MAAOimD,EAAYp8C,IACnB1kB,MAAOyhE,EACPpiD,WAAS,EACTY,WAAY,CACVmgC,iBAAkBtT,EAAW2xB,EAC7BtgD,QAAS,CACPqB,SAAUrB,EAAQqB,gBAO7BiiD,GACC9+D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQiiD,gBACtBz9D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gCAG3BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAAU,KAEnCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAAC6C,IAAS,CACRK,WAAY,CACVmgC,iBAAkBtT,EAAW2xB,EAC7BtgD,QAAS,CACPqB,SAAUrB,EAAQqB,WAGtBsB,WAAY,CACVrB,UAAW,KAEbwB,SA7SS1U,IACrBw0D,EAAe,IAAKD,EAAalqD,MAAOrK,EAAEI,OAAOkO,SA6SrC2E,SAAUstB,EAAW2xB,EACrB5jD,MAAOimD,EAAYlqD,MACnByI,WAAS,MAIdytB,GAAYyxB,GACX57D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,oBACvB18D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAAgB,KAEzCzQ,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQmhD,sBACvB38D,IAAAoa,cAAC6C,IAAS,CACRyI,WAAS,EACTpI,WAAY,CACV9B,QAAS,CACPqB,SAAUrB,EAAQqB,WAGtBH,WAAS,EACT4B,SA/Ta1U,IAC3Bw0D,EAAe,IAAKD,EAAatpC,YAAajrB,EAAEI,OAAOkO,QAEnDiyB,IAAa0xB,GACfnzD,EAAkB,IAAKy1D,EAAatpC,YAAajrB,EAAEI,OAAOkO,SA4T9C2E,SAAUstB,IAAayxB,EACvB1jD,MAAOimD,EAAYtpC,gBAK3B70B,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQihD,eACtBz8D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQkhD,qBACzB18D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQmhD,sBACrBwB,EAAY1gE,SAAW+9D,EACtBrxB,IAAa0xB,GACX77D,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4F,IAAM,CACL1F,QAzTMilD,KACxB72D,EAAkB,IAAKy1D,EAAa1gE,OAAQygE,IAAa5+D,KAAK,KAC5D6iB,OAwTgB1G,UAAWD,EAAQ+hD,aACnBpvB,UAAWnuC,IAAAoa,cAACokC,KAAU,MACtB/jC,QAAQ,WACRjI,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAEzBzQ,IAAAoa,cAAC4F,IAAM,CACL1F,QA5TMklD,KACxB92D,EAAkB,IAAKy1D,EAAa1gE,OAAQg+D,IAAYn8D,KAAK,KAC3D6iB,OA2TgB1G,UAAWD,EAAQgiD,aACnBrvB,UAAWnuC,IAAAoa,cAAC+G,KAAS,MACrB1G,QAAQ,WACRjI,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAK7BzQ,IAAAoa,cAAA,KACEqB,UACED,EAAQ,SAAD5c,OAAUu/D,EAAY1gE,SAAY,IAAM+d,EAAQyhD,MAExDkB,EAAYx1B,eAMvB3oC,IAAAoa,cAAC6kD,EAAO,SCtcD,SAASQ,KACtB,MAAM,KAAEjE,EAAI,OAAEE,GAAWJ,GACnBoE,EAAgBxiD,OAAO4gB,KAAKw9B,IAAYr2C,IAAKb,IAAE,CACnDhiB,GAAIk5D,GAAWl3C,GACfld,MAAOkd,EAAK,kBAER5I,EAAUZ,KACVb,EAAOkI,qBAAWvI,IAClB,OAAE3W,EAAM,SAAE0F,GAAasR,EAAKrW,MAC5B,oBAAEyE,EAAmB,wBAAEC,EAAuB,oBAAES,GACpDkR,EAAKjW,WACArG,EAAQkiE,GAAapsD,mBAASmsD,EAAchE,KAC5CkE,EAAcC,GAAmBtsD,mBAAS,KAC1CusD,EAAiBC,GAAsBxsD,oBAAU,IACjD24B,EAAkB8zB,GAAuBzsD,oBAAS,IAClD0sD,EAAuBC,GAA4B3sD,oBAAS,IAC5DorD,EAAkBwB,GAAuB5sD,mBAAS,IACnD6sD,EAAmBR,EAAaE,IAChC,OAAE/D,EAAM,aAAEH,EAAY,UAAEC,GAAcF,GAEtC0E,GAAsE,IAAzDzjE,OAAOC,SAAS4rB,SAAS6O,MAAM,KAAK6F,QAAQ,QACzDmjC,EAAkBA,KAClBD,EACFj4D,EACEK,EACAsR,EAAKrW,KAAKoI,iBAAiB3F,UAC3Bq1D,GAECl8D,KAAMqX,IACDA,EAAIjZ,MACNmiE,EAAgBlpD,EAAIjZ,QAGvBgC,MAAMb,QAAQC,KAEbotC,EACF/jC,EAAoBM,EAAU1F,EAAQtF,EAAO2E,GAAI8pC,GAC9C5sC,KAAMqX,IACDA,EAAIjZ,MACNmiE,EAAgBlpD,EAAIjZ,QAGvBgC,MAAMb,QAAQC,KAEjBsJ,EACEK,EACAsR,EAAKrW,KAAKoI,iBAAiB3F,UAC3B1I,EAAO2E,IAEN9C,KAAMqX,IACDA,EAAIjZ,MACNmiE,EAAgBlpD,EAAIjZ,QAGvBgC,MAAMb,QAAQC,MAIvBiZ,oBAAU,KACRuoD,KACC,CAAC73D,EAAUhL,EAAO2E,GAAIW,EAAQoF,EAAqB+jC,IAEtDn0B,oBAAU,KACRlP,EAAoBJ,EAAU1F,GAAQzD,KAAMqX,IACtCA,EAAIjZ,MACNyiE,EAAoBxpD,EAAIjZ,SAG3B,CAAC+K,EAAU1F,IAEd,MAQMw9D,EAAkBh6D,IACtBwT,EAAKrW,KAAK2T,YAAY,CAAElR,UAAWI,KAGrC,OACEvG,IAAAoa,cAAApa,IAAAie,SAAA,KACGmiD,GACCpgE,IAAAoa,cAACsjD,GAAoB,CACnBz6C,OAAQm9C,EACRj+C,QAASA,KACP49C,GAAoB,GAEfM,GACHC,KAGJnC,YAAaiC,EACbzB,iBAAkBA,EAClB2B,gBAAiBA,EACjBn2B,SAAUk2B,EAAazE,EAAeC,IAGzCoE,GACCjgE,IAAAoa,cAACsjD,GAAoB,CACnBiB,iBAAkBA,EAClB17C,KAAMg9C,EACN99C,QA/BuBq+C,KAC7BN,GAAyB,GACzBI,KA8BMn2B,SAAU4xB,EACVuE,gBAAiBA,IAGrBtgE,IAAAoa,cAAA,YACIimD,GACArgE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQuhD,kBACtB/8D,IAAAoa,cAAA,WACEpa,IAAAoa,cAACwK,KAAW,CAAC7G,KAAK,SAChB/d,IAAAoa,cAAC0K,KAAM,CACLrK,QAAQ,WACRrY,GAAG,2BACHkc,SAAW1U,GACT+1D,EACED,EAAcv7C,KAAMC,GAAOA,EAAGhiB,KAAOwH,EAAEI,OAAOkO,QAGlDA,MAAOza,EAAO2E,IACbs9D,EAAcz6C,IAAKxnB,GAClBuC,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKhK,EAAO2E,GACZ8V,MAAOza,EAAO2E,IACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMhT,EAAOyJ,aAM1ClH,IAAAoa,cAACsU,KAAgB,CACfxnB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAC9Bke,QACE3uB,IAAAoa,cAACgP,KAAQ,CACP5W,MAAM,UACN6W,QAAS6iB,EACT5tB,SAAUA,IAAM0hD,GAAqB9zB,OAI3ClsC,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiI,QAAQ,YACRH,QA5EkBmmD,KAC5BP,GAAyB,KA4EflgE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAI7BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQwhD,YACrB4C,EACE33B,KAAK,CAACrK,EAAGsK,IAAM,IAAIzR,KAAKmH,EAAEygC,OAAS,IAAI5nC,KAAKyR,EAAEm2B,QAC9Cp5C,IAAI,CAACsE,EAAM9hB,IACVzH,IAAAoa,cAAA,OACE3S,IAAKA,EACL6S,QAASA,IAAMylD,EAAmBt4D,IAClCzH,IAAAoa,cAACsmD,GAAexjD,OAAAC,OAAA,CACdojD,eAAgBA,EAChBF,WAAYA,GACR92C,SAUf,MAAMm3C,GAAmBn3C,IAC9B,MAAM/N,EAAUZ,KACV+lD,EAAkB,IAAIlqC,KAAKlN,EAAK80C,OAChCuC,EAAYD,EAAgBlqB,UAC5BoqB,EAAYF,EAAgBG,WAC5BC,EACJJ,EAAgBK,aAAe,EAC3B,IAAML,EAAgBK,aACtBL,EAAgBK,aAChBC,EAAejF,GAAK2E,EAAgBpqB,UACpC2qB,EAAajF,GAAO0E,EAAgB9J,YACpCsK,EAAUA,KACd,MAAM5qC,EAAQ,IAAIE,KAClB,OACEF,EAAMkgB,YAAcmqB,GACpBrqC,EAAMsgC,aAAe8J,EAAgB9J,YACrCtgC,EAAMugC,gBAAkB6J,EAAgB7J,gBAItC,eAAEyJ,EAAc,WAAEF,GAAe92C,EAEjC63C,EAAmBA,IAChBf,EACLrgE,IAAAoa,cAACuF,IAAU,CACT+wB,QAAM,EACNj1B,UAAWD,EAAQvH,MACnBwG,QAAQ,aACRza,IAAAoa,cAAA,YACEpa,IAAAoa,cAACinD,KAAY,CAAC5lD,UAAWD,EAAQgB,OAChC+M,EAAKk1C,wBAIVz+D,IAAAoa,cAACuF,IAAU,CACT+wB,QAAM,EACNj1B,UAAWD,EAAQvH,MACnBwG,QAAQ,aACRza,IAAAoa,cAACkK,KAAO,CAACrQ,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBACrCzQ,IAAAoa,cAAA,QACEE,QAAU1Q,IACRA,EAAEoZ,kBACFu9C,EAAeh3C,EAAKhjB,cAEtBvG,IAAAoa,cAACinD,KAAY,CAAC5lD,UAAWD,EAAQgB,OAAQ,GAAA5d,OACrC2qB,EAAKhjB,WAAU,OAAA3H,OAAM2qB,EAAKq1C,aAAY,OAAAhgE,OAAM2qB,EAAKk1C,0BAO/D,OACEz+D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQyO,KACtBjqB,IAAAoa,cAAA,OACEqB,UACED,EAAQ4gD,cACR,KACC+E,IAAY3lD,EAAQ0gD,gBAAkB1gD,EAAQ2gD,kBAEjDn8D,IAAAoa,cAAA,WACEpa,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQm7C,IACnBl8C,QAAQ,MACP0mD,IACCnhE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMwwD,IACvB,IACHjhE,IAAAoa,cAAA,YAAOymD,EAAY,IAAME,KAG7B/gE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQo7C,OACtB52D,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAA,YACGwmD,EAAU,IAAC5gE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMywD,QAK5ClhE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6gD,gBACtBr8D,IAAAoa,cAACgnD,EAAgB,MACjBphE,IAAAoa,cAAA,YACEpa,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQghD,kBACtBx8D,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ8gD,oBACnB7hD,QAAQ,YACRi2B,QAAM,GACN1wC,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ,SAAD5c,OAAU2qB,EAAK9rB,UACpC8rB,EAAKof,YAER3oC,IAAAoa,cAACknD,KAAW,CAAC7lD,UAAWD,EAAQgB,OAC/B+M,EAAKtV,YClRL,SAASstD,GAAiBhmD,GACvC,OACEvb,IAAAoa,cAAA,OAAK8F,MAAO,CAAEjE,QAAS,KACrBjc,IAAAoa,cAACuF,IAAU,CAAClD,KAAK,aACfzc,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM8K,EAAMimD,qBCDtC,MAAMC,GAAkBvqC,GAASA,EAAKG,SAASC,MAAM,KAAK,GAAK,YAEhD,kBACb,MAAMvd,EAAOkI,qBAAWvI,IACjBpR,EAAMo5D,GAAWnuD,mBACtB,IAAIkjB,KAAKA,KAAKkrC,MAAQ,WAEjBp5D,EAAIq5D,GAASruD,mBAAS,IAAIkjB,OAC1BmpC,EAAcC,GAAmBtsD,mBAAS,IAajD,OAXAwE,oBAAU,KACRgC,EAAKjW,UACFuE,mCACC0R,EAAKrW,KAAK+E,SACVsR,EAAKrW,KAAKoI,iBAAiB3F,UAC3Bs7D,GAAen5D,GACfm5D,GAAe,IAAIhrC,KAAKluB,EAAG4uB,UAAY,SAExC73B,KAAMqX,GAAQkpD,EAAgBlpD,EAAIjZ,QACpC,CAAC6K,EAAID,EAAMyR,EAAKrW,KAAKoI,iBAAiB3F,UAAW4T,EAAKrW,KAAK+E,WAG5DzI,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACob,GAAU,CACTtuB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAC9B0sC,QAAM,EACNj9B,MAAO,CAAErM,MAAO,IAAKiI,OAAQ,IAC7B8pC,aAAa,WACbtnC,SAAUojD,EACVxpD,MAAO5P,IAETtI,IAAAoa,cAACob,GAAU,CACTtuB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAC9B0sC,QAAM,EACNj9B,MAAO,CAAErM,MAAO,IAAKiI,OAAQ,IAC7B8pC,aAAa,WACbtnC,SAAUsjD,EACV1pD,MAAO3P,IAETvI,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRyF,MAAO,CAAEkT,WAAY,GAAI9R,aAAc,IACvCthB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,+BAAgC,IACtDmvD,EAAav+D,QAEhBrB,IAAAoa,cAAA,OAAK8F,MAAO,CAAEirB,UAAW,SAAUpsB,OAAQ,MACxC6gD,EAAa36C,IAAKk5C,GACjBn+D,IAAAoa,cAACsmD,GAAexjD,OAAAC,OAAA,CACd1V,IAAK02D,EAAY/7D,GACjBi+D,YAAU,GACNlC,QCpDD,SAAS0D,KACtB,MAAM9nD,EAAOkI,qBAAWvI,IACjBrT,EAAMy7D,GAAWvuD,mBAAS,IAC3BimD,EAAiBpyC,aAAY/gB,EAAM,MAClC8f,EAASC,GAAc7S,oBAAS,GAEvCwE,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,WAC7B4T,EAAKjW,UACFoC,iBAAiB6T,EAAKrW,KAAKoI,iBAAiB3F,WAC5C7G,KAAMqX,IACLmrD,EAAQnrD,EAAIjZ,KAAK2I,MACjB+f,GAAW,MAEhB,CAACrM,EAAKrW,KAAKoI,iBAAiB3F,YAE/B4R,oBAAU,KACHgC,EAAKrW,KAAKoI,iBAAiB3F,YAAaggB,GAC7CpM,EAAKjW,UAAUsC,iBAAiB2T,EAAKrW,KAAKoI,iBAAiB3F,UAAWE,IACrE,CAACmzD,IAMJ,OACEx5D,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,IAAKosB,UAAW,WACpCnrC,IAAAoa,cAAC6C,IAAS,CACR/E,MAAO7R,EACPqf,WAAS,EACTjL,QAAQ,WACRiC,WAAS,EACTY,WAAY,CAAE4C,MAAO,CAAE8b,WAAY,IACnC1d,SAZc1U,IAClBk4D,EAAQl4D,EAAEI,OAAOkO,WCfN,SAAS6pD,KACtB,MAAMhoD,EAAOkI,qBAAWvI,IACjBkyB,EAAWC,GAAgBt4B,mBAAS,IAE3CwE,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,WAC7B4T,EAAKjW,UACFmC,oBAAoB8T,EAAKrW,KAAK+R,YAAYK,0BAC1CxW,KAAMqX,IACLk1B,EAAal1B,EAAIjZ,KAAKwlD,WAE3B,CAACnpC,EAAKrW,KAAKoI,iBAAiB3F,YAE/B,MAAMhI,EAAU,CACd,eACA,WACA,UACA,aACA,UACA,cAGF,OACE6B,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,IAAKosB,UAAW,WACpCnrC,IAAAoa,cAAC2d,KAAc,KACb/3B,IAAAoa,cAACuP,KAAK,CACJyrC,cAAY,EACZr3C,KAAK,SACL/d,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACN3rB,EAAQ8mB,IAAK8E,GAEV/pB,IAAAoa,cAAC4O,KAAS,CAACvhB,IAAKsiB,GACd/pB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMsZ,QAMlC/pB,IAAAoa,cAAC4P,KAAS,KACP4hB,EAAU3mB,IAAK3a,GAEZtK,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAK6C,EAAS/D,YACrBpI,EAAQ8mB,IAAK8E,GAEV/pB,IAAAoa,cAAC4O,KAAS,CACR9I,MAAO,CAAEiF,SAAU,KACnB1d,IAAK6C,EAAS/D,WAAawjB,GAChB,WAAVA,EACC/pB,IAAAoa,cAAC4H,GAAgB,CACfvR,KAAM,gBAAkBnG,EAASyf,KAEvB,gBAAVA,EAAwB,GAAAnrB,OACvB0L,EAAS/D,WAAU,OAAA3H,OAAM0L,EAASyf,IAErCzf,EAASyf,WCvDnC,MAAMnP,GAAYC,KAAYnH,IAAK,CACjCoH,KAAM,CACJqK,SAAU,KACViO,WAAY,OACZjU,YAAa,OACb3M,MAAO,SAETkJ,QAAS,CACPyJ,SAAU,KACViO,WAAY,OACZjU,YAAa,OACbJ,OAAQ,qBAEVijD,YAAa,CACXjnD,QAAS,OACTC,eAAgB,SAChBC,cAAe,SACfsD,WAAY,SACZ4G,SAAU,MAEZ88C,SAAU,CACR/1C,SAAU,EACV5K,aAAc,QAEhB4gD,gBAAiB,CACfnnD,QAAS,OACTlH,MAAO,OACPgsB,KAAM,EACN7kB,eAAgB,WAChBwJ,SAAU,IAEZ29C,cAAe,CACbpnD,QAAS,OACTgE,OAAQ,oBACR9C,QAAS,QAEXmmD,kBAAmB,CACjBvuD,MAAO,MACPkH,QAAS,OACTE,cAAe,UAEjBonD,mBAAoB,CAClBxuD,MAAO,MACPkH,QAAS,OACTE,cAAe,SACfD,eAAgB,SAChBuD,WAAY,UAEd+jD,SAAU,CACR9vD,MAAOkB,EAAM9B,QAAQG,QAAQE,KAC7BuS,SAAU,IAEZ+9C,SAAU,CACR1uD,MAAO,MACPkL,OAAQ,EACRJ,UAAW,OACX7C,OAAQ,W,8CCtDZ,MAAMlB,GAAYC,KAAYnH,IAAK,CACjCoH,KAAM,CACJqK,SAAU,KACViO,WAAY,OACZjU,YAAa,OACb3M,MAAO,SAETkJ,QAAS,CACPyJ,SAAU,KACViO,WAAY,OACZjU,YAAa,OACbJ,OAAQ,qBAEVijD,YAAa,CACXjnD,QAAS,OACTC,eAAgB,SAChBC,cAAe,SACfsD,WAAY,SACZ4G,SAAU,MAEZ88C,SAAU,CACR/1C,SAAU,EACV5K,aAAc,QAEhB86C,cAAe,GACfC,eAAgB,GAChB6F,gBAAiB,CACfnnD,QAAS,OACTlH,MAAO,OACPgsB,KAAM,EACN7kB,eAAgB,WAChBwJ,SAAU,IAEZ29C,cAAe,CACbpnD,QAAS,OACTgE,OAAQ,oBACR9C,QAAS,QAEXmmD,kBAAmB,CACjBvuD,MAAO,MACPkH,QAAS,OACTE,cAAe,UAEjBonD,mBAAoB,CAClBxuD,MAAO,MACPkH,QAAS,OACTE,cAAe,SACfD,eAAgB,SAChBuD,WAAY,UAEd+jD,SAAU,CACR9vD,MAAOkB,EAAM9B,QAAQG,QAAQE,KAC7BuS,SAAU,IAEZ+9C,SAAU,CACR1uD,MAAO,MACPkL,OAAQ,EACRJ,UAAW,OACX7C,OAAQ,QAEV0mD,kBAAmB,CACjB38C,MAAO,QACP9G,OAAQ,O,8CCpEZ,MAAMnE,GAAYC,YAAYnH,IAAK,CACjCqW,OAAQ,CACNtL,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,KACpC5pC,MAAO,QACPyJ,QAAS,WAIE,SAASwmD,GAAYlnD,GAClC,MAAM,OAAEwO,EAAM,KAAE1D,EAAI,OAAEq8C,GAAWnnD,EAC3BC,EAAUZ,KAChB,OAAKmP,GAAW1D,EAKdrmB,IAAAoa,cAACuP,KAAK,KACJ3pB,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACNC,EAAO44C,OAAO19C,IAAI,CAAC5Q,EAAUwU,IAE1B7oB,IAAAoa,cAAC4O,KAAS,CACRvN,UAAWD,EAAQuO,OACnBtiB,IAAK4M,EAAS6D,MAAQ2Q,EACtBmP,MAAOnP,EAAI,QAAU,QACpBxU,EAAS6D,UAMpBlY,IAAAoa,cAAC4P,KAAS,KACP3D,EAAKpB,IAAKgF,GAEPjqB,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAKmgD,KAAKgb,UACjB34C,EAAI04C,OAAO19C,IAAI,CAACq7B,EAAOz3B,IACtB7oB,IAAAoa,cAAC4O,KAAS,CACRvhB,IAAK64C,EAAMpoC,MAAQ2Q,EACnBmP,MAAOnP,EAAI,QAAU,QACpBy3B,EAAMpoC,UAMhBwqD,GACC1iE,IAAAoa,cAAC0P,KAAQ,KACN44C,EAAOC,OAAO19C,IAAI,CAACq7B,EAAOz3B,IAEvB7oB,IAAAoa,cAAC4O,KAAS,CACRvhB,IAAK64C,EAAMpoC,MAAQ2Q,EACnBmP,MAAOnP,EAAI,QAAU,QACpBy3B,EAAMpoC,WAxCd,KCpBJ,MAAM2qD,GAAa,CACxBC,SAAU,SACVC,SAAU,YCmBNnoD,GAAYC,YAAYnH,IAAK,CACjCsvD,YAAa,CACX1nC,UAAW,QAEbinC,SAAU,CACRxjD,OAAQ,GAEVgL,OAAQ,CACNtL,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,KACpC5pC,MAAO,QACP4tB,WAAY,KAEdthB,KAAM,CACJhD,OAAQ,OACR6C,UAAW,GACX2C,aAAc,GACdvG,QAAS,SAEX4lB,MAAO,CACL9sB,MAAO,MACPsR,SAAU,KAEZ89C,aAAc,CACZ3nC,UAAW,aAIA,SAAS4nC,KACtB,MAAM,SAAEJ,EAAQ,SAAEC,GAAaF,GACzB9oD,EAAOkI,qBAAWvI,GAClB3W,EAASgX,EAAKrW,KAAKX,QAClBogE,EAAWC,GAAgB7vD,mBAAS,KACpC8S,EAAMC,GAAW/S,mBAAS,KAC1BmvD,EAAQW,GAAa9vD,mBAAS,KAC9B4S,EAASC,GAAc7S,oBAAS,IAChC+vD,EAAWC,GAAgBhwD,mBAASuvD,GAMrCU,GAAar9C,GAAWg9C,EAAUR,OAExC5qD,oBAAU,KACRqO,GAAW,GACXrM,EAAKjW,UACFoE,iBAAiBnF,EAAQugE,GACzBhkE,KAAMqX,IACL,IAAKA,EAAIjZ,KACP,OAEF,MAAM,OAAEglE,EAAM,OAAE34C,EAAM,KAAE1D,GAAS1P,EAAIjZ,KACrC0lE,EAAar5C,GACbzD,EAAQD,GACRg9C,EAAUX,KAEXhjE,MAAMb,QAAQC,KACdkY,QAAQ,KACPoP,GAAW,MAEd,CAACk9C,IAEJ,MAAM9nD,EAAUZ,KAEVg3B,EAAaA,IAEf5xC,IAAAoa,cAACuP,KAAK,CAAClO,UAAWD,EAAQoO,OACxB5pB,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACNq5C,EAAUR,QACTQ,EAAUR,OAAO19C,IAAI,CAAC5Q,EAAUwU,IAE5B7oB,IAAAoa,cAAC4O,KAAS,CACRvhB,IAAK4M,EAAS6D,MAAQ2Q,EACtBmP,MAAOnP,EAAI,QAAU,QACpBxU,EAAS6D,UAMtBlY,IAAAoa,cAAC4P,KAAS,KACP3D,EAAKpB,IAAI,CAACgF,EAAKpB,IACd7oB,IAAAoa,cAACqpD,GAAGvmD,OAAAC,OAAA,CACF1V,IAAKohB,GACDoB,EAAG,CACPq5C,UAAWA,MAGdZ,EAAOC,QACND,EAAOC,OAAO19C,IAAI,CAACq7B,EAAOz3B,IAEtB7oB,IAAAoa,cAAC4O,KAAS,CACRvhB,IAAK64C,EAAMpoC,MAAQ2Q,EACnBmP,MAAOnP,EAAI,QAAU,QACpBy3B,EAAMpoC,UASjBwrD,EAAeA,IAEjB1jE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQynD,cACtBjjE,IAAAoa,cAAA,OACEqB,UAAWD,EAAQmlB,MACnBlhB,IAAKy/B,KACL1/B,IAAI,KAENxf,IAAAoa,cAAA,SACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAM/B,OACEzQ,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,OACEqB,UAAWD,EAAQsD,KACnBW,IAAKkkD,KACLnkD,IAAI,mBAGNxf,IAAAoa,cAAA,MAAI8F,MAAO,CAAErM,MAAO,UAElB2vD,EAGAxjE,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAASi6C,IAAcR,EACvBxkD,SArGUslD,KACtBL,EAAaD,IAAcR,EAAWC,EAAWD,MAuGzC57D,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAGhCzQ,IAAAoa,cAAA,SACEpa,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAAqB,IAC3C6yD,IAAcR,EACb/oD,EAAKrW,KAAKoI,iBAAiBgE,SAE3B9P,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAK5B0V,EACCnmB,IAAAoa,cAACuB,IAAc,CACbF,UAAWD,EAAQ+mD,SACnB/vD,MAAM,YAGRxS,IAAAoa,cAACw3B,EAAU,MAEb5xC,IAAAoa,cAAA,SACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAEzBzQ,IAAAoa,cAAA,SACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,4BArC3BzQ,IAAAoa,cAACspD,EAAY,OA6CrB,SAASD,GAAG5pD,GAA+B,IAA9B,OAAE8oD,EAAM,KAAElyD,EAAI,UAAE6yD,GAAWzpD,EACtC,MAAME,EAAOkI,qBAAWvI,GAClBqgC,EAAS93B,qBAAWg4B,IAAiBF,OACrCh3C,EAASgX,EAAKrW,KAAKX,QAClBkgB,EAAMyZ,GAAWnpB,oBAAS,IAC1B4S,EAASC,GAAc7S,oBAAS,IAChCswD,EAAiBC,GAAsBvwD,wBAASjS,GACjDka,EAAUZ,KAEV3S,EACJ06D,EAAO,IAAM5oB,GAAUA,EAAO51B,KAAMC,GAAOA,EAAGld,QAAUy7D,EAAO,GAAGzqD,OAiBpE,OAfAH,oBAAU,MACH8rD,GAAmB5gD,GAAQ82B,GAAUA,EAAO14C,SAC/C+kB,GAAW,GAEXrM,EAAKjW,UACFiE,yBAAyBhF,EAAQugE,EAAWr7D,GAASA,EAAM7F,IAC3D9C,KAAMqX,IACDA,EAAIjZ,OACNomE,EAAmBntD,EAAIjZ,MACvB0oB,GAAW,QAIlB,CAACnD,IAGFjjB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAKgJ,GACZkyD,EAAO19C,IAAI,CAACq7B,EAAOz3B,IAEhB7oB,IAAAoa,cAAC4O,KAAS,CACRvhB,IAAK64C,EAAMpoC,MAAQ2Q,EACnBmP,MAAOnP,EAAI,QAAU,QACrB7oB,IAAAoa,cAAA,aACIyO,GACA7oB,IAAAoa,cAACC,IAAU,CACTE,aAAW,aACXwD,KAAK,QACLzD,QAASA,IAAMoiB,GAASzZ,IACvBA,EAAOjjB,IAAAoa,cAAC2pD,KAAmB,MAAM/jE,IAAAoa,cAAC4pD,KAAqB,OAG3D1jB,EAAMpoC,UAMhB+K,GACCjjB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,CAACi7C,QAAStB,EAAOthE,QACxB8kB,EACCnmB,IAAAoa,cAACuB,IAAc,CACbF,UAAWD,EAAQ+mD,SACnB/vD,MAAM,YAGRxS,IAAAoa,cAACqoD,GAAgBoB,M,cClO/B,MAAMjpD,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJjH,MAAO,QAETqwD,mBAAoB,CAClB/kD,YAAazL,EAAMqI,QAAQ,IAE7B4e,YAAa,CACX9mB,MAAO,IACPyN,aAAc,GAEhBk7B,IAAK,CACHC,UAAW,OACXt3B,SAAU,OACVpK,QAAS,gBAEXopD,eAAgB,CACdtb,WAAY,OACZ9pC,OAAQ,OACRyF,SAAU,OACVwrB,cAAe,SACf7wB,YAAa,QAEfk8C,aAAc,CACZx1C,MAAO,SAET28B,GAAI,CACFR,QAAS,MACT,CAACtuC,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bh1B,QAAS,SAGb6lB,WAAY,CACV7lB,QAAS,OACTwD,WAAY,SACZ,CAAC7K,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B7lB,cAAe,SACfsD,WAAY,kBCxClB,MAAM3D,GAAYC,YAAYnH,IAAK,CACjCinB,YAAa,CACX9mB,MAAO,IACPyN,aAAc,IAEhBxF,OAAQ,CACNA,OAAQpI,EAAMqI,QAAQ,IAExBymC,GAAI,CACF7jC,UAAWjL,EAAMqI,QAAQ,GACzBuF,aAAc5N,EAAMqI,QAAQ,GAC5BqX,WAAY1f,EAAMqI,QAAQ,GAC1BoD,YAAazL,EAAMqI,QAAQ,IAE7B0mC,KAAM,CACJzmB,WAAY,GAEdilB,KAAM,CACJlmC,QAAS,OACTkB,QAASvI,EAAMqI,QAAQ,IAEzBmlC,IAAK,CACHrtC,MAAO,OACPkL,OAAQ,GACRJ,UAAW,GACXQ,YAAa,GACb0a,SAAU,KAEZsnB,QAAS,CACP,MAAS,QACT,gBAAmB,QACnB,MAAS,OACT,SAAY,IACZ,YAAe,EACf,WAAc,OAEd,UAAW,CACT1iC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,UAKpCsG,GAAyB,CAAC,MAAO,MAAO,MAAO,OAgtBtC0hB,OA9sBf,SAAmC7oD,GACjC,MAAMnD,EAAU2tB,cACVhsB,EAAOkI,qBAAWvI,GAClBk9B,EAAW30B,qBAAW03B,IACtBn+B,EAAUZ,MACV,YAAEgoC,GAAgBrnC,GACjBsnC,EAAmBC,GAAwBvvC,mBAAS,KAEpDwvC,EAAWC,GAAgBzvC,mBAAS,IAE3CwE,oBAAU,KACJgC,EAAKrW,KAAK+E,UACZsR,EAAKjW,UACFmF,6BAA6B8Q,EAAKrW,KAAK+E,UACvCnJ,KAAMqX,IAAS,IAADyyB,EAAA6Z,EACb,MAAMF,EAAe,OAAHpsC,QAAG,IAAHA,GAAS,QAANyyB,EAAHzyB,EAAKjZ,YAAI,IAAA0rC,GAAQ,QAAR6Z,EAAT7Z,EAAW8Z,cAAM,IAAAD,OAAd,EAAHA,EAAmBhb,KAAK,CAACrK,EAAGsK,IACxCtK,EAAEntB,KAAOy3B,EAAEz3B,KAAa,EACxBmtB,EAAEntB,KAAOy3B,EAAEz3B,MAAc,EACtB,GAEH0yC,EAAiBT,GAAuBz9B,IAAKb,GACjD2+B,EAAU5+B,KAAMi/B,GAAYA,EAAQ1uB,OAAStQ,IAG/C4+B,EAAa,IAAIG,KAAmBJ,MAErCrjD,MAAM,SAEV,CAACqa,EAAKrW,KAAK+E,WAEd,MAAM,aACJ46C,EAAY,QACZ10B,EACA20B,OAAQC,EAAY,SACpBC,EAAQ,YACRC,EAAW,SACXjzB,GACEkzB,aAAQ,CAAEC,cAAe/M,EAASrB,gBAEhC,kBACJyC,EAAiB,qBACjBC,EAAoB,aACpBxkC,EAAY,iBACZH,EAAgB,cAChBD,EAAa,qBACb6kC,EAAoB,kBACpBc,EAAiB,qBACjBC,GACErC,EAEJ,IAAIgN,EAAetjD,KAASA,EAuD5B,SAASwjD,EAA6B1hD,GACpC61C,GAAqB,GAErB8L,EADclB,EAAkB1+B,KAAM3N,GAAMA,EAAEpU,KAAOA,IAErD61C,GAAqB,GAGvB,SAAS8L,EAAWC,GAClBR,EAAS,aAAcQ,EAAQvzC,MAC/B+yC,EAAS,gBAAiBQ,EAAQC,QAClCT,EAAS,gBAAiBQ,EAAQE,SAClCV,EAAS,gBAAiBQ,EAAQG,KAClCX,EAAS,aAAcQ,EAAQI,MAC/BZ,EAAS,gBAAiBQ,EAAQZ,SAClCI,EAAS,oBAAqBQ,EAAQ5hD,IAuCxC,OApCA2V,oBAAU,KAyBJgC,EAAK1G,gBAGF0G,EAAKrW,KAAKoI,iBAAiB3F,UA1BhC4T,EAAKjW,UACFkF,gCAAgC+Q,EAAKrW,KAAKoI,iBAAiB3F,WAC3D7G,KAAMkX,IACL,GAAiB,MAAbA,EAAE/Y,SACJqlD,EAAqBtsC,EAAE9Y,OAClB2V,GAAe,CAClB,IAAI2wC,EAAUxtC,EAAE9Y,KAAK,GACjBs6C,IACF+L,EAAWC,GACXR,EAAS,oBAAqBQ,EAAQ5hD,KAExCkR,GAAiB,MAItB5T,MAAOrC,IACNwB,QAAQC,IAAIzB,KAEb2Z,QAAQ,KACPvD,GAAa,KAQf2E,EAAQY,KAAK,0BAKhB,IAGDhZ,IAAAoa,cAAA,QAAMq0B,SAAU4U,GA3GlB,SAAkBv8C,GAChB,IAAKq5C,OAAOr5C,EAASwxC,iBAAmB6H,OAAOr5C,EAASyxC,gBAStD,OARA/nB,EAAS,gBAAiB,CACxB/T,KAAM,QACNnI,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAElC+f,EAAS,iBAAkB,CACzB/T,KAAM,QACNnI,QAAStU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAIpCynC,EACE,IACKpxC,EAEHyxC,eAAgBzxC,EAASyxC,gBAAkB,EAC3CD,cAAexxC,EAASwxC,eAAiB,GAE3CsK,OAyFA5iD,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACVgb,QAAQ,UACRjuC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,EACJkkB,GAAI,GACJzkD,IAAAoa,cAAA,UAAI,MACCpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAE5BzQ,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8CAGzBzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQ1G,IAAA,IAAC,SAAEyE,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKnrC,EAAA,OAC7C7Z,IAAAoa,cAAC6C,IAAS,CACRR,KAAK,SACLwoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,IACT65C,IACA,IAAIvrC,EACFtO,EAAEI,OAAOkO,MAAQ,EACZtO,EAAEI,OAAOkO,MAAQ,EAClBtO,EAAEI,OAAOkO,MAOf,OALAA,EACEtO,EAAEI,OAAOkO,MAAQ,EACZtO,EAAEI,OAAOkO,MAAQ,EAClBtO,EAAEI,OAAOkO,MAERoG,EAAS6hC,OAAOjoC,KAEzBzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnB1Z,GAAG,gBACHgjD,WACE7B,EAAajL,cACTiL,EAAajL,cAAchkC,QAC3B,KAENmG,QAAQ,WACRvT,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9BpT,MAAOumD,EAAYL,EAAajL,sBAO1Ct4C,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,iBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQG,IAAA,IAAC,SAAEpC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKtkC,EAAA,OAC7C1gB,IAAAoa,cAAC6C,IAAS,CACRR,KAAK,SACLwoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,IACT65C,IACA,IAAIvrC,EACFtO,EAAEI,OAAOkO,MAAQ,EACZtO,EAAEI,OAAOkO,MAAQ,EAClBtO,EAAEI,OAAOkO,MAOf,OALAA,EACEtO,EAAEI,OAAOkO,MAAQ,GACZtO,EAAEI,OAAOkO,MAAQ,GAClBtO,EAAEI,OAAOkO,MAERoG,EAAS6hC,OAAOjoC,KAEzBzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnB1Z,GAAG,iBACHgjD,WACE7B,EAAahL,eACTgL,EAAajL,cAAchkC,QAC3B,KAENmG,QAAQ,WACRvT,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAC9BpT,MAAOumD,EAAYL,EAAahL,uBAO1Cv4C,IAAAoa,cAAC2Q,KAAO,CACN/Y,OAAK,EACLyJ,UAAWD,EAAQgnC,KAInBxiD,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,WACEpa,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mCAGzBzQ,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAS,GAAA7c,OAAK4c,EAAQmf,YAAW,KAAA/7B,OAAI4c,EAAQM,SAC7C9b,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,qCACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAEzBzQ,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,oBACLke,QAASA,EACTpO,OAAQ+kC,IAAA,IAAC,SAAEhnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKM,EAAA,OAC7CtlD,IAAAoa,cAAC0K,KAAM,CACLjI,UAAWm7B,EACXjzB,QAAQ,oCACR3iB,GAAG,8BACHqO,KAAMA,EACN2uB,OAAQA,EACRlnB,MAAOA,EACPoG,SAAW1U,IACTk6C,EAA6Bl6C,EAAEI,OAAOkO,OAC/BoG,EAAS1U,EAAEI,OAAOkO,SAG1B2qC,EACE5a,KAAK,CAACrK,EAAGsK,IACRtK,EAAEntB,KAAOy3B,EAAEz3B,MAAQ,EAAI0vC,OAAOviB,EAAEntB,KAAOy3B,EAAEz3B,OAE1CwU,IAAK++B,GACJhkD,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKu8C,EAAQ5hD,GACb8V,MAAO8rC,EAAQ5hD,IACd4hD,EAAQvzC,KACP,KACAuzC,EAAQC,OACR,KACAD,EAAQE,eASxBlkD,IAAAoa,cAAC2qC,KAAU,CACTp2B,QAASA,EACTle,KAAK,gBACL8P,OAAQglC,IAAA,IAAC,SAAEjnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKO,EAAA,OAC7CvlD,IAAAoa,cAACsU,KAAgB,CACfjT,UAAS,GAAA7c,OAAK4c,EAAQM,OAAM,KAAAld,OAAI4c,EAAQinC,MACxC9zB,QACE3uB,IAAAoa,cAACgP,KAAQ,CACP3Y,KAAMA,EACN+B,MAAM,UACN4sB,OAAQA,EACR/V,QAAS2vB,EACTiM,SAAUD,EACV1mC,SAAW1U,IACTqvC,EAAqBrvC,EAAEI,OAAOqf,SAhQxD,SAA6B67B,GAC3B,GAAIA,EACF1B,EAAS,aAAc,IACvBA,EAAS,gBAAiB,IAC1BA,EAAS,gBAAiB,IAC1BA,EAAS,gBAAiB,IAC1BA,EAAS,aAAc,IACvBA,EAAS,gBAAiB,IAG1BA,EAAS,oBAAqB,IAC9BvL,GAAqB,OAChB,CACL,IAAI71C,EAAKygD,EAAkB,GAAGzgD,GAC9BohD,EAAS,oBAAqBphD,GAC9B0hD,EAA6B1hD,GAG/BohD,EAAS,gBAAiB0B,GAE1BzB,EAAY,CACV,aACA,gBACA,gBACA,gBACA,aACA,kBAuOsB0B,CAAoBv7C,EAAEI,OAAOqf,YAInCniB,MACElH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0CAOjCzQ,IAAAoa,cAAC2Q,KAAO,CACN/Y,OAAK,EACLyJ,UAAWD,EAAQgnC,KAGrBxiD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,aACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQilC,IAAA,IAAC,SAAElnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKQ,EAAA,OAC7CxlD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnBspC,WACE7B,EAAavM,aACTuM,EAAavM,aAAa1iC,QAC1B,KAENpN,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAC9B0N,WAAY,CAAErB,UAAW,KACzBzf,MAAOumD,EAAYL,EAAavM,cAChCv8B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG3BqM,UAAW,CACT5E,MAAO,IACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAOnCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQklC,IAAA,IAAC,SAAEnnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKS,EAAA,OAC7CzlD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnBspC,WACE7B,EAAatM,oBACTsM,EAAatM,oBAAoB3iC,QACjC,KAEN6J,WAAY,CAAErB,UAAW,IACzB5V,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAC9BpT,MAAOumD,EAAYL,EAAatM,qBAChCx8B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG3BqM,UAAW,CACT5E,MAAO,GACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAOnCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQmlC,IAAA,IAAC,SAAEpnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKU,EAAA,OAC7C1lD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,sBACHgjD,WACE7B,EAAarM,oBACTqM,EAAarM,oBAAoB5iC,QACjC,KAEN6J,WAAY,CAAErB,UAAW,IACzB5V,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAC9BpT,MAAOumD,EAAYL,EAAarM,qBAChCz8B,QAAQ,cAGZ4qC,MAAO,CACLvoC,UAAW,CACT5E,MAAO,GACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAOnCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJ4C,WAAS,EACT8G,UAAU,OACVjzB,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQolC,IAAA,IAAC,SAAErnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKW,EAAA,OAC7C3lD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,kBACHgjD,WACE7B,EAAapM,gBACToM,EAAapM,gBAAgB7iC,QAC7B,KAEN6J,WAAY,CAAErB,UAAW,IACzB5V,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9BpT,MAAOumD,EAAYL,EAAapM,iBAChC18B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,MAAO8gC,EACP1kC,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,4BAK/BzQ,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,aACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQulC,IAAA,IAAC,SAAExnC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKc,EAAA,OAC7C9lD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,eACHgjD,WACE7B,EAAanM,aACTmM,EAAanM,aAAa9iC,QAC1B,KAEN6J,WAAY,CAAErB,UAAW,IACzB5V,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAC9BpT,MAAOumD,EAAYL,EAAanM,cAChC38B,QAAQ,cAGZ4qC,MAAO,CACL1oC,SAAU,CACRzE,MAAO8gC,EACP1kC,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,+BAQrCzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQwlC,IAAA,IAAC,SAAEznC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKe,EAAA,OAC7C/lD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACyK,KAAU,CACT3E,MAAO,CACLkT,WAAY,OACZ3U,gBAAiB,SAEnBrc,GAAG,wBACFpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAE1BzQ,IAAAoa,cAAC0K,KAAM,CACLmgC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNoM,SAAUm7B,EACVv8B,UAAWD,EAAQM,OACnB1Z,GAAG,kBACH2iB,QAAQ,uBACRqgC,WACE7B,EAAalM,gBACTkM,EAAalM,gBAAgB/iC,QAC7B,KAEN6J,WAAY,CAAErB,UAAW,IACzB5V,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9BpT,MAAOumD,EAAYL,EAAalM,iBAChC58B,QAAQ,YACPsoC,EAAU99B,IAAKb,GACdpkB,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAOkM,EAAGsQ,MAAOtQ,EAAG3T,UAKtC40C,MAAO,CACL1oC,SAAU,CACRzE,OAAO,EACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG3BqM,UAAW,CACT5E,MAAO,GACP5D,QACEtU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wCAQnCzQ,IAAAoa,cAAC2Q,KAAO,CACN/Y,OAAK,EACLyJ,UAAWD,EAAQgnC,OAK3BxiD,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCAEzBzQ,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAACwK,KAAW,CAAClI,WAAS,GACpB1c,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,sBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQylC,IAAA,IAAC,SAAE1nC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKgB,EAAA,OAC7ChmD,IAAAoa,cAAC6C,IAAS,CACRgoC,SAAUD,EACV9sC,MAAOA,EACPknB,OAAQA,EACR9gB,SAAW1U,GAAM0U,EAAS1U,EAAEI,OAAOkO,OACnCzH,KAAMA,EACNgL,UAAWD,EAAQM,OACnB1Z,GAAG,sBACHgjD,WACE7B,EAAaxK,oBACTwK,EAAaxK,oBAAoBzkC,QACjC,KAEN6J,WAAY,CAAErB,UAAW,IACzB5V,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAC9BpT,MAAOumD,EAAYL,EAAaxK,qBAChCt+B,QAAQ,kBAMlBza,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,gBACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQ0lC,IAAA,IAAC,SAAE3nC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKiB,EAAA,OAC7CjmD,IAAAoa,cAACyF,EAAkB,CACjBumC,QAAS,EACT//B,KAAM,EACN+Y,OAAQA,EACRlnB,MAAOA,EACPzH,KAAMA,EACN6N,SAAUA,EACVpX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9B0N,WAAY,CAAErB,UAAW,IACzBmoC,SAAUD,EACVtoC,WAAS,QAKjB1c,IAAAoa,cAACkP,KAAI,CAACC,MAAI,GACRvpB,IAAAoa,cAAC2qC,KAAU,CACTt0C,KAAK,UACLke,QAASA,EACT/K,aAAa,GACbrD,OAAQ4lC,IAAA,IAAC,SAAE7nC,EAAQ,OAAE8gB,EAAM,MAAElnB,EAAK,KAAEzH,EAAI,IAAEu0C,GAAKmB,EAAA,OAC7CnmD,IAAAoa,cAACyF,EAAkB,CACjB6F,WAAS,EACT0gC,QAAS,EACT//B,KAAM,EACN+Y,OAAQA,EACRlnB,MAAOA,EACPzH,KAAMA,EACN6N,SAAUA,EACVpX,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC9B0N,WAAY,CAAErB,UAAW,KACzBmoC,SAAUD,EACVtoC,WAAS,QAKjB1c,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAClBza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kCAEzBzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,UACVjzB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQylC,MACtBjhD,IAAAoa,cAAC4F,IAAM,CACLvD,KAAK,SACLhC,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAS,GAAA7c,OAAK4c,EAAQ0lC,IAAG,KAAAtiD,OAAI4c,EAAQ2lC,UACrCnhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBACvBzQ,IAAAoa,cAACqnC,KAAgB,CACfvhC,MAAO,CAAEkT,WAAY,GACrB5O,SAAS,iBC3vB3B,MAAM5J,GAAYC,YAAYnH,IAAK,CACjCutC,KAAM,CACJlmC,QAAS,OACTkB,QAASvI,EAAMqI,QAAQ,GACvB4C,UAAW,IAEbuiC,IAAK,CACHrtC,MAAO,OACPgmB,SAAU,IACV9a,OAAQ,GACRI,YAAa,IAEfgiC,QAAS,CACP,MAAS,QACT,gBAAmB,QACnB,MAAS,OAET,UAAW,CACT1iC,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxCioB,WAAY,CACVtpD,QAAS,eACTi1B,cAAe,SACf7wB,YAAa,IAEfmlD,oBAAqB,CACnBroD,QAAS,EACT2d,aAAc,uBAEhB2qC,SAAU,CACR1wD,MAAO,WAwJX,MAAM2wD,GAA4B3qD,IAAkB,IAAD4qD,EAAA,IAAhB,QAAE/uB,GAAS77B,EAC5C,MAAM,OAAEhN,EAAM,SAAEqwC,EAAQ,SAAEpwC,EAAQ,eAAEqsC,EAAc,cAAEgJ,EAAa,UAAElH,GAAcvF,EAC3EgvB,EAEL,QAFiBD,EAAGtiB,EAAch+B,KAChCC,GAAOA,EAAGhiB,KAAO+2C,UACnB,IAAAsrB,OAAA,EAFoBA,EAElBv9D,MACGsU,EAAUZ,KAChB,OACE5a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ8oD,qBACtBtkE,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQ6oD,WAAa,IAAM7oD,EAAQ+oD,SAC9C5uB,UAAW9oC,EACXouC,UAAWA,IAEbj7C,IAAAoa,cAAA,OACE8F,MAAO,CAAErM,MAAO,oBAAqBsL,YAAa,GAClD1D,UAAWD,EAAQ6oD,YACnBrkE,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ6oD,WACnBnkD,MAAO,CAAE2Z,SAAU,QACnBpf,QAAQ,aACP5N,GAEH7M,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ6oD,WACnB5pD,QAAQ,aACPyiC,GAEHl9C,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ6oD,WACnB5pD,QAAQ,aACPiqD,GAEH1kE,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQ6oD,WACnB5pD,QAAQ,aACP3N,EAAS,IAAC9M,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAO7Bk0D,OA9Lf,SAAmCppD,GAAQ,IAADqpD,EACxC,MAAMxsD,EAAU2tB,cACVhsB,EAAOkI,qBAAWvI,GAClBk9B,EAAW30B,qBAAW03B,IACtBn+B,EAAUZ,KAEV0tB,EAAmB,OAARsO,QAAQ,IAARA,GAAgB,QAARguB,EAARhuB,EAAU9B,cAAM,IAAA8vB,OAAR,EAARA,EAAkBz3D,SAE7B,OAAEk5C,EAAM,YAAEzD,GAAgBrnC,GAC1B,cACJ+8B,EAAa,eACbC,EAAc,WACdE,EAAU,cACVC,EAAa,cACbC,EAAa,cACbC,EAAa,WACbC,EAAU,cACVC,EAAa,oBACbC,EAAmB,QACnBnB,EAAO,cACPJ,GACEZ,EAASrB,aAkBb,OARAx9B,oBAAU,KACJgC,EAAK1G,gBACF0G,EAAKrW,KAAKoI,iBAAiB3F,WAC9BiS,EAAQY,KAAK,YAGhB,IAGDhZ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACVgb,QAAQ,UACRjuC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,EACJkkB,GAAI,GACJzkD,IAAAoa,cAAA,UAAI,MACCpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAE5BzQ,IAAAoa,cAAA,UACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAEzBzQ,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,gBACNgR,MAAOogC,IAETt4C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,iBACNgR,MAAOqgC,IAGTv4C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,aACNgR,MAAOugC,IAETz4C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,oBACNgR,MAAOwgC,IAET14C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,oBACNgR,MAAOygC,IAET34C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,gBACNgR,MAAO0gC,IAET54C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,aACNgR,MAAO2gC,IAET74C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,gBACNgR,MAAO4gC,IAGT94C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,kBACNgR,MAAO6gC,IAET/4C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,gBACNgR,MAAOs/B,IAETx3C,IAAAoa,cAACiyC,GAAY,CACXhnB,SAAS,OACTn+B,MAAM,gBACNgR,MAAO0/B,IAGT53C,IAAAoa,cAAA,MAAI8F,MAAO,CAAEvB,UAAW,KACtB3e,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAExB63B,EAASrjB,IAAKywB,GACb11C,IAAAoa,cAACoqD,GAAyB,CACxB/8D,IAAKiuC,EAAQ7oC,OACb6oC,QAASA,KAIb11C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQylC,MACtBjhD,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAWD,EAAQ0lC,IACnB5mC,QAAS+rC,GACTrmD,IAAAoa,cAAConC,KAAa,CACZh9B,SAAS,QACTtE,MAAO,CAAEf,YAAa,KAExBnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACR8mC,kBAAgB,EAChB9lC,UAAS,GAAA7c,OAAK4c,EAAQ0lC,IAAG,KAAAtiD,OAAI4c,EAAQ2lC,SACrC7mC,QApHV,WACEs8B,EAASh4B,OAAOg4B,EAASrB,cAAc,SAAU6X,GAC/CxW,EAASuB,oBACTvB,EAAStjC,kBAAiB,GAC1BsvC,EAAYwK,QAiHNptD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BCrEpBo0D,OAzGf,SAAmCtpD,GACjC,MAAM,QAAEnD,EAAO,MAAErb,GAAUwe,EACrBxB,EAAOkI,qBAAWvI,GAClBk9B,EAAW30B,qBAAW03B,KACrBuW,GAAc38C,oBAcrB,WACE,OAAQxW,EAAMu3B,MACZ,IAAK,gCACH,OAAO,EACT,IAAK,6CACH,OAAO,EACT,IAAK,0CACH,OAAO,EACT,QACE,MAAO,mBAIb,SAASsuB,EAAYwK,GACnB,OAAQ8C,EAAa,GACnB,KAAK,EACH93C,EAAQY,KAAK,8CACb,MACF,KAAK,EACHZ,EAAQY,KAAK,yCAADpa,OAA0CwuD,IACtD,MACF,QACEh1C,EAAQY,KAAK,kCAInB,SAASqtC,IACPzP,EAASkB,0BAAyB,GAClC1/B,EAAQY,KAAK,iCA8Bf,OAtEAjB,oBAAU,KACRgC,EAAKR,UAAUQ,EAAKpC,WAAWK,SAAS,cACvC,IAqEDhY,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,MACV1U,WAAW,UACX0vB,QAAQ,SACRlyB,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJkkB,GAAI,GACJzkD,IAAAoa,cAACg2C,KAAO,CACNF,WAAYA,EACZG,kBAAgB,GAhFjB,CACLrwD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBACvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBACvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBA8ELwU,IAAK/d,GACflH,IAAAoa,cAACk2C,KAAI,CAAC7oD,IAAKP,GACTlH,IAAAoa,cAACm2C,KAAS,KAAErpD,QA7C1B,WACE,OAAQgpD,GACN,KAAK,EACH,OAAOlwD,IAAAoa,cAACgqD,GAAyB,CAACxhB,YAAaA,IACjD,KAAK,EACH,OACE5iD,IAAAoa,cAACuqD,GAAyB,CACxB/hB,YAAaA,EACbyD,OAAQA,IAGd,KAAK,EACH,OACErmD,IAAAoa,cAACugD,GAAoB,CACnBnM,WAAS,EACTvjD,QASDrO,OAAOC,SAAS4rB,SAAS6O,MAAM,aAAa,KANjD,QACE,MAAO,gBAgCRk5B,KClGP,MAAM51C,GAAYC,YAAYnH,IAAK,CACjCggD,iBAAkB,CAChBxnC,SAAU,EACVpQ,OAAQ,EACRvJ,WAAY,SAEdwhD,aAAc,CACZj4C,OAAQ,OACR2B,SAAU,SACVuD,OAAQ,EACRnN,MAAO,OACPmgD,WAAY,UAEdC,cAAe,CACbD,WAAY,WAEd8Q,mBAAoB,CAClB,SAAY,QACZ,IAAO,GACP,KAAQ,MACR,UAAa,mBACb,OAAU,IACV,gBAAmB,QACnB,UAAW,CACTrmD,gBAAiB,UAGrBskB,QAAS,CACPjnB,OAAQ,IAEVipD,kBAAmB,CACjB5lD,YAAa,IAEf+jB,WAAY,CACVpnB,OAAQ,oBACR,kIAAmI,CACjIf,QAAS,SAGb84B,WAAY,CACV5Q,KAAMvvB,EAAM9B,QAAQwqC,KAAK,KACzBnzB,OAAQ,cCvCZ,MAAMnO,GAAO,SAEPkqD,GAAS,CACb,CACE5iE,GAAI,SACJkyB,KAAMxZ,GAAO,UACb8E,UAAWqwC,GACXgV,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,gBACJkyB,KAAMxZ,GAAO,kBACb8E,UAAWqwC,GACXgV,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,qBACJkyB,KAAMxZ,GAAO,uBACb8E,UAAWqwC,GACXgV,YAAa,GAEf,CACE7iE,GAAI,WACJkyB,KAAMxZ,GAAO,YACb8E,UpC2HW,WAA2B,IAADslD,EAAAC,EAAAC,EACvC,MAAM5pD,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBgyB,EAAgBzpB,qBAAWwoB,KAC1B46B,EAAiB7a,GAAsBj3C,wBAASjS,IAChDupD,EAAiBya,GAAsB/xD,oBAAS,IAChDgyD,EAAeC,GAAoBjyD,oBAAS,IAC5CkyD,EAAaC,GAAkBnyD,mBAAS,CAC7CoyD,aAAa,EACbC,SAAS,IAwFX,OArFA7tD,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,WAC7BulC,EAAclT,QAEf,CAACze,EAAKrW,KAAKoI,iBAAiB3F,YAE/B4R,oBAAU,KAC0C,GAA9C2zB,EAAc/B,8BAChB+7B,EAAe,IAAKD,EAAa,SAAa,KAE/C,CAAC/5B,EAAc1E,sBA4EhBhnC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQk4C,kBACtB1zD,IAAAoa,cAACk5C,GAAe,CACdC,kBAAiD,QAAhC2R,EAAEx5B,EAAc5E,wBAAgB,IAAAo+B,GAAU,QAAVC,EAA9BD,EAAgC58B,gBAAQ,IAAA68B,OAAV,EAA9BA,EAA0ChhD,KAAMC,GAAOA,GAAMA,EAAGuxB,WAAa0vB,GAChG7a,mBAAoBA,IAGtBxqD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQo4C,oBACtB5zD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQs4C,oBACtB9zD,IAAAoa,cAACyrD,GAAsB,CACrB33C,OAAQwd,EAAc5E,iBAAiB5Y,OACvCoZ,MAAOoE,EAAc5E,iBAAiBQ,MACtCpkB,SAAUwoB,EAAc1E,oBACxB2pB,OAAQjlB,EAAcrC,oBAI1BrpC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQq4C,oBACtB7zD,IAAAoa,cAAC6C,IAAS,CACR0lB,UAAY/4B,IACI,UAAVA,EAAEnC,KACJikC,EAAchC,wBAAwBgC,EAAcpE,QAGxDw+B,YAAa/rD,EAAKpC,WAAWK,SAAS,kBACtCyE,KAAK,SACLhB,UAAWD,EAAQ6B,UACnB5C,QAAQ,WACR6D,SAAW1U,GAAM8hC,EAAcnE,SAAS39B,EAAEI,OAAOkO,OACjDA,MAAOwzB,EAAcpE,MACrBvpB,KAAK,QACLT,WAAY,CACVi7C,eAAgBv4D,IAAAoa,cAACo+C,KAAU,MAC3Bj7C,aAAcvd,IAAAoa,cAAC2rD,KAAS,CACtBzrD,QAASA,KACPoxB,EAAcnE,SAAS,IACvBmE,EAAchC,wBAAwB,KAExCjuB,UAAWD,EAAQq4B,kBAM7B7zC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ84C,uBACtBt0D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+4C,2BACtBv0D,IAAAoa,cAAA,WACEpa,IAAAoa,cAACuF,IAAU,KACT3f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAAe,IAAqD,QAApD20D,EAAC15B,EAAc5E,iBAAiBk/B,4BAAoB,IAAAZ,IAAI,EAAE,IAACplE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAI3Hi7B,EAAc/B,6BAA+B,GAC7C3pC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQk5C,+BACtB10D,IAAAoa,cAACuF,IAAU,CAAClE,UAAWD,EAAQyN,OAAQ3O,QAASA,IAAMorD,EAAe,IAAKD,EAAa,SAAa,KAChGzlE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAAyB,KAAGi7B,EAAc/B,6BAA6B,KAElG3pC,IAAAoa,cAACi5B,KAAM,CACLwO,OAAO,QACP5+B,KAAMwiD,EAAqB,QAC3BtjD,QAASA,IAAMujD,EAAe,IAAKD,EAAa,SAAa,KAC3DzlE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6zB,QACtBrvC,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAASA,IAAMoxB,EAAc5B,QAC7BruB,UAAWD,EAAQ04C,aACnBl0D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ24C,iBACvBn0D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvBzQ,IAAAoa,cAAC2rD,KAAS,CAACtqD,UAAWD,EAAQ64C,oBA9E1BrtB,KACxB,IAAI9Y,EAAS,GACb,IAAK,MAAMkZ,KAAYJ,EACrBA,EAAoBI,GAAU7Y,QAASnK,IACrC8J,EAAOlV,KAAK,CAAEouB,WAAUlvB,MAAOkM,MAGnC,OAAO8J,GA2EU+3C,CAAiBv6B,EAAc1E,qBAAqB/hB,IAAKb,GACxDpkB,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLtW,IAAK2c,EAAGlM,MAAQkM,EAAGgjB,SACnB9sB,QAASA,IAAMoxB,EAAcrC,iBAAiBjlB,EAAGgjB,SAAUhjB,EAAGlM,OAC9DuD,UAAWD,EAAQ04C,aAtHJgS,EAAC9+B,EAAUhlC,KAAQ,IAAD+jE,EAAAC,EACrD,IAAK16B,EAAclF,YAAckF,EAAclF,UAAUriB,KAAMC,GAAOA,EAAG3T,OAAS22B,GAChF,OAGF,IAAIi/B,EAAa,GACbh8C,EAI4C,QAJvC87C,EAIgC,QAJhCC,EAAG16B,EACT5E,iBACA5Y,OACA/J,KAAMC,GAAOA,EAAG3T,OAAS22B,GACzB4qB,YAAY7tC,KAAMC,GAAOA,EAAGhiB,KAAOA,UAAG,IAAAgkE,OAAA,EAJ7BA,EAI+B/7C,aAAK,IAAA87C,IAAI,EAEpD,GAAiB,SAAb/+B,EACFi/B,EAAcrmE,IAAAoa,cAAA,YAAMpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAAS,KAAG4Z,EAAM,UACxD,GAAiB,YAAb+c,EACTi/B,EAAcrmE,IAAAoa,cAAA,YAAMpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAAY,KAAG4Z,EAAM,SAC3D,CACL,MAAMnjB,EAAQwkC,EAAclF,UAAUriB,KAAMC,GAAOA,EAAG3T,OAAS22B,GAAU4qB,YAAY7tC,KAAMC,GAAOA,EAAGhiB,KAAOA,GAC5GikE,EAAan/D,GAAK,GAAAtI,OAAOsI,EAAMuJ,KAAI,MAAA7R,OAAKyrB,EAAK,KAG/C,OACErqB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,QAAMqB,UAAW4O,EAAQ7O,EAAQ24C,gBAAkB34C,EAAQ44C,0BACxDiS,GAEHrmE,IAAAoa,cAAC2rD,KAAS,CAACtqD,UAAWD,EAAQ64C,oBA6Fb6R,CAA6B9hD,EAAGgjB,SAAUhjB,EAAGlM,SAI1B,IAAvBwzB,EAAcpE,OACbtnC,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAASA,KACPoxB,EAAcnE,SAAS,IACvBmE,EAAchC,wBAAwB,KAExCjuB,UAAWD,EAAQ04C,aACnBl0D,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ24C,iBACtBzoB,EAAcpE,OAEjBtnC,IAAAoa,cAAC2rD,KAAS,CAACtqD,UAAWD,EAAQ64C,wBAUhDr0D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQg5C,sBACrBz6C,EAAKrW,KAAK+R,YAAYia,qBACrB1vB,IAAAoa,cAACwK,KAAW,KACV5kB,IAAAoa,cAACsU,KAAgB,CACfxnB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAC9Bke,QACE3uB,IAAAoa,cAACwU,KAAM,CACLvF,QAASqiB,EAAc9E,YACvBtoB,SAAUA,IAAMotB,EAAclB,qBAAqB,WAAYkB,EAAc9E,aAC7Ep0B,MAAM,eAOhBxS,IAAAoa,cAACwK,KAAW,KACV5kB,IAAAoa,cAACsU,KAAgB,CACfxnB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9Bke,QACE3uB,IAAAoa,cAACwU,KAAM,CACLvF,QAASqiB,EAAchF,aACvBpoB,SAAUA,IAAMotB,EAAclB,qBAAqB,YAAakB,EAAchF,cAC9Ej2B,KAAK,WACL+B,MAAM,eAMdxS,IAAAoa,cAACwK,KAAW,KACV5kB,IAAAoa,cAACsU,KAAgB,CACfxnB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9Bke,QACE3uB,IAAAoa,cAACwU,KAAM,CACLvF,QAA0D,SAAjDqiB,EAAc1E,oBAA0B,KAAE,GACnD1oB,SAAUA,KAAA,IAAAgoD,EAAAC,EAAA,OAAM76B,EAAcrC,iBAAiB,OAA8D,QAAxDi9B,EAAE56B,EAAclF,UAAUriB,KAAM3N,GAAiB,SAAXA,EAAE/F,aAAgB,IAAA61D,GAAgB,QAAhBC,EAAtDD,EAAwDtU,YAAY,UAAE,IAAAuU,OAAhB,EAAtDA,EAAwEnkE,KAC/HqO,KAAK,WACL+B,MAAM,eAMdxS,IAAAoa,cAACwK,KAAW,KACV5kB,IAAAoa,cAACsU,KAAgB,CACfxnB,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAC9Bke,QACE3uB,IAAAoa,cAACwU,KAAM,CACLvF,QAASwhC,EACTvsC,SAAUA,IAAMgnD,GAAoBza,GACpCr4C,MAAM,eAMdxS,IAAAoa,cAACosD,KAAQ,CAAC/qD,UAAS,GAAA7c,OAAK4c,EAAQyN,OAAM,KAAArqB,OAAI4c,EAAQi5C,0BAA6Bn6C,QAASA,IAAMorD,EAAe,IAAKD,EAAa,aAAiB,MAChJzlE,IAAAoa,cAACi5B,KAAM,CACLwO,OAAO,QACP5+B,KAAMwiD,EAAyB,YAC/BtjD,QAASA,IAAMujD,EAAe,IAAKD,EAAa,aAAiB,KAC/DzlE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6zB,QACrBt1B,EAAKrW,KAAK+R,YAAYka,sBACrB3vB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQm5C,gBACtB30D,IAAAoa,cAACuF,IAAU,KAAC,qCACZ3f,IAAAoa,cAAC4F,IAAM,CACHvF,QAAQ,YACRjI,MAAM,UACNoN,UAAU,OACVM,MAAO,CAACrM,MAAO,QACfyG,QAxPQ1Q,IAC5BA,EAAEC,iBAEF27D,GAAiB,GAEjB95B,EAAcriC,YAAa3L,IACzB,QAAa4D,IAAT5D,EAKF,OAJA8nE,GAAiB,QAEjBzrD,EAAK3G,SAAS,UAAW,sDAK3B,MAAMsK,EAAOud,IAAIC,gBAAgBx9B,EAAKA,MAChCw5B,EAAO,IAAIT,KACXryB,EAAOoV,SAASY,cAAc,KAEpChW,EAAKsZ,KAAOA,EACZtZ,EAAKspD,aAAa,WAAW,YAAD9uD,OAAcs4B,EAAK4/B,cAAa,KAAAl4D,OAAIs4B,EAAKuf,WAAa,EAAIvf,EAAKuf,UAAY,IAAMvf,EAAKuf,UAAS,KAAA73C,OAAIs4B,EAAK2/B,YAAc,EAAI3/B,EAAK2/B,WAAa,IAAM3/B,EAAK2/B,WAAU,KAAAj4D,OAAIs4B,EAAK4pC,YAAc,EAAI5pC,EAAK4pC,WAAa,IAAM5pC,EAAK4pC,WAAU,KAAAliE,OAAIs4B,EAAK8pC,cAAgB,EAAI9pC,EAAK8pC,aAAe,IAAM9pC,EAAK8pC,aAAY,KAAApiE,OAAIs4B,EAAKuvC,cAAgB,EAAIvvC,EAAKuvC,aAAe,IAAMvvC,EAAKuvC,aAAY,UAE/YjtD,SAASkyC,KAAKiC,YAAYvpD,GAE1BA,EAAKwpD,QAELp0C,SAASkyC,KAAKgb,YAAYtiE,GAC1B62B,IAAI0rC,gBAAgBjpD,GAEpB8nD,GAAiB,OA6NGxlE,IAAAoa,cAAA,QAAM8F,MAAO,CAAE8zC,WAAYuR,EAAgB,SAAW,YAAcvlE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAC3FzQ,IAAAoa,cAAC0D,KAAgB,CAACoC,MAAO,CAAC1N,MAAO,OAAQiL,SAAU,WAAY4O,KAAM,mBAAoBlR,IAAK,mBAAoBtH,MAAO,OAAQkL,OAAQ,OAAQhE,QAASwqD,EAAgB,SAAW,YAK/LvlE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQm5C,gBACtB30D,IAAAoa,cAACuF,IAAU,KACT3f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQmf,YACnB5c,KAAK,QACLmC,MAAO,CAACrM,MAAO,SACf7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAOwzB,EAAc5E,iBAAiB8/B,WAAa,QACnDtoD,SAAWkM,GAAUkhB,EAAc9B,mBAAmBpf,EAAMxgB,OAAOkO,OACnEuD,UAAWD,EAAQqrD,aACnB7mE,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,QACdlY,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAEzBzQ,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,MACdlY,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,WACdlY,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAO/BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQm5C,gBACtB30D,IAAAoa,cAACuF,IAAU,KAAC,wBAGZ3f,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQmf,YACnB5c,KAAK,QACLmC,MAAO,CAACrM,MAAO,SACf7T,IAAAoa,cAAC0K,KAAM,CACL5M,MAAOwzB,EAAcpF,aACrBhoB,SAAWkM,GAAUkhB,EAAcxB,gBAAgB1f,EAAMxgB,OAAOkO,OAChEuD,UAAWD,EAAQqrD,aACnB7mE,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,QACdlY,IAAAoa,cAAA,QAAM8F,MAAO,CAACnF,QAAS,OAAQwD,WAAY,WAAWve,IAAAoa,cAAC0sD,KAAQ,CAAC5mD,MAAO,CAACuf,aAAc,MAAO,UAE/Fz/B,IAAAoa,cAAC4K,KAAQ,CAAC9M,MAAM,QACdlY,IAAAoa,cAAA,QAAM8F,MAAO,CAACnF,QAAS,OAAQwD,WAAY,WAAWve,IAAAoa,cAAC2sD,KAAU,CAAC7mD,MAAO,CAACuf,aAAc,MAAO,iBAUjHz/B,IAAAoa,cAACuB,IAAc,CAACF,UAAS,GAAA7c,OAAK4c,EAAQu4C,aAAY,KAAAn1D,OAAI8sC,EAAcl4B,WAAagI,EAAQy4C,iBAExFvoB,EAAc5E,iBAAiBwB,UAC9BtoC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQo5C,oBACtB50D,IAAAoa,cAAC0wB,KAAc,CACbC,SAAUW,EAAc7B,UACxBzD,QAASsF,EAActF,QACvB4E,UAAW,IACXC,aAAa,EACbyB,WAAW,EACXtqC,GAAI,oBAC8B,SAA/BspC,EAAcpF,aACbtmC,IAAAoa,cAACqvC,GAAS,CACRnhB,SAAUoD,EAAc5E,iBAAiBwB,SACzCuiB,gBAAiBA,EACjBsB,QAAS,YACT3B,mBAAoBA,IAGtBxqD,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,EACTmE,MAAO,CAACjE,QAAS,SAAUH,OAAQ,EAAGjI,MAAO,SAC5C63B,EAAc5E,iBAAiBwB,SAASrjB,IAAKywB,GAC5C11C,IAAAoa,cAAC4sD,GAAY,CACXtxB,QAASA,EACTjuC,IAAKiuC,EAAQC,UACbkV,gBAAiBA,SAS/Bnf,EAAcl4B,WAAqE,IAAxDk4B,EAAc5E,iBAAiBk/B,sBACxDhmE,IAAAoa,cAAC4kC,GAAU,CACT/sC,KAAK,yBACLgtC,IAAI,4BoC9eZgmB,YAAa,GAEf,CACE7iE,GAAI,SACJkyB,KAAMxZ,GAAO,UACb8E,UDWW,WACb,MAAMpE,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClB+kC,EAAcx8B,qBAAWk0B,KACxB7O,EAAOC,GAAYh0B,mBAAS,KAC5B+0B,EAAU2+B,GAAe1zD,mBAAS,KAClC2zD,EAAkBC,GAAuB5zD,mBAAS,KAClDC,EAAWC,GAAgBF,oBAAS,IACpC6zD,EAAcC,GAAmB9zD,oBAAS,IAC1C7N,EAAYomC,GAAiBv4B,mBAAS,IACtC+zD,EAAgBC,GAAqBh0D,oBAAS,IAE9C8xD,EAAiB7a,GAAsBj3C,wBAASjS,GAgEjDo0B,EAAU,CACd3yB,OAAQgX,EAAKrW,KAAKX,OAClByG,WAAYuQ,EAAKrW,KAAKoI,iBAAiB3F,UACvC6gC,oBAAqB,CACnB/+B,MAAO,GACPi/B,UAAW,GACXC,YAAa,GACbC,SAAU,GACVC,KAAM,IAER39B,aAAcqQ,EAAKrW,KAAKgG,aACxB2e,SAAU,GACV3iB,aACA4hC,MAAOA,EACPE,YAAa,UACboB,qBAAqB,GAGjBjhB,EAASA,KACblU,GAAa,GAETD,GAIJuG,EAAKjW,UACFsF,eAAessB,GACfp2B,KAAMqX,IACDA,GAAOA,EAAIjZ,OAEXupE,EADiB,IAAfvhE,EAEAiR,EAAIjZ,KAAK4qC,SAASrjB,IAAKywB,IACrB,MAAM8xB,EAAyBN,EAAiB/iD,KAC7CC,GAAOA,EAAGuxB,YAAcD,EAAQC,WAKnC,OAHI6xB,IACF9xB,EAAQ5oC,SAAW06D,EAAuB16D,UAErC4oC,IAKTpN,EAAS1pC,OACP+X,EAAIjZ,KAAK4qC,SAASrjB,IAAKywB,IACrB,MAAM8xB,EAAyBN,EAAiB/iD,KAC7CC,GAAOA,EAAGuxB,YAAcD,EAAQC,WAKnC,OAHI6xB,IACF9xB,EAAQ5oC,SAAW06D,EAAuB16D,UAErC4oC,MAKf6xB,GAAmB5wD,EAAIjZ,KAAK2qC,YAC5ByD,EAAcpmC,EAAa,MAG9BhG,MAAMb,QAAQC,KACdkY,QAAQ,KACPvD,GAAa,MAInB,OACEzT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQk4C,kBACtB1zD,IAAAoa,cAACk5C,GAAe,CACdC,kBAA2B,OAARjrB,QAAQ,IAARA,OAAQ,EAARA,EAAUnkB,KAAMC,GAAOA,GAAMA,EAAGuxB,WAAa0vB,GAChE7a,mBAAoBA,IAGtBxqD,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,MACV5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAEzBzQ,IAAAoa,cAAA,OAAK8F,MAAO,CAAE2F,MAAO,UACnB7lB,IAAAoa,cAAC4F,IAAM,CACL1F,QAjIoBmtD,KAC1BJ,GAAiBD,GACjBt7B,EAAc,IAgIRrwB,UAAS,GAAA7c,OAAK4c,EAAQupD,kBAAiB,KAAAnmE,OAAI4c,EAAQunB,SACnDtoB,QAAQ,YACRjI,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CACfvR,KAAM22D,EAAe,eAAiB,yBAG1CpnE,IAAAoa,cAAC4F,IAAM,CACL1F,QArIYotD,KAClBjpB,EAAYzI,SACVkxB,EAAiBjiD,IAAKb,IACb,IAAKA,EAAI2xB,IAAKiU,GAAetC,sBAAsBtjC,EAAIA,EAAGtX,UAAY,MAE/E,KACEq6D,EAAoB,IACpBF,EACE3+B,EAASrjB,IAAKywB,IACL,IAAKA,EAAS5oC,SAAU,UA6HjC2O,UAAWD,EAAQunB,QACnBoL,UAAWnuC,IAAAoa,cAAC8G,KAAO,MACnBzG,QAAQ,YACRjI,MAAM,WACNxS,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,QAAQ,IAAEy2D,EAAiB7lE,OAClDrB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAI7BzQ,IAAAoa,cAAC6C,IAAS,CACR0lB,UA9JmB/4B,IACL,KAAdA,EAAEg5B,UAEJjb,IACA0/C,GAAgB,KA2Jd3qD,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAC9BrO,GAAG,sBACHqa,KAAK,SACLhC,QAAQ,WACRvC,MAAOovB,EACPhpB,SA1KN,SAA2B1U,GACzB29B,EAAS39B,EAAEI,OAAOkO,OAClB4zB,EAAc,IAyKVrwB,UAAWD,EAAQ0nB,WACnB5lB,WAAY,CACVi7C,eAAgBv4D,IAAAoa,cAACo+C,KAAU,CAAC/8C,UAAWD,EAAQq4B,aAC/Ct2B,aAAcvd,IAAAoa,cAAC2rD,KAAS,CAACzrD,QAASA,IAAMitB,EAAS,IAAM9rB,UAAWD,EAAQq4B,gBAG9E7zC,IAAAoa,cAACuB,IAAc,CACbF,UAAS,GAAA7c,OAAK4c,EAAQu4C,aAAY,KAAAn1D,OAChC4U,GAAagI,EAAQy4C,iBAIzBj0D,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,UAAW,SACvB3e,IAAAoa,cAAC0wB,KAAc,CACbC,SAAUpjB,EACVye,QAASkhC,GAETtnE,IAAAoa,cAACqvC,GAAS,CACRG,YAAY,EACZD,eAAe,EACfuB,gBA7JexV,IACvByxB,EAAoBD,EAAiBloD,OAAQoF,GAAOA,EAAGuxB,YAAcD,EAAQC,aA6JrEwU,iBA1JeA,CAACxU,EAAW7oC,KACnC,MAAM66D,EAAkBr/B,EAAS9iB,UAAWpB,GAAOA,EAAGuxB,YAAcA,GAC9DiyB,EAA0BV,EAAiB1hD,UAAWpB,GAAOA,EAAGuxB,YAAcA,GAEpF,GAAIgyB,EAAkBC,KAA6B,EACjD,OAAO/oE,QAAQC,IAAI,qDAGrB,GAAI8oE,GAA2B,EAAG,CAChC,IAAIC,EAAsB,IAAIX,GACd,KAAZp6D,GAAoBA,EAGtB+6D,EAAoBD,GAAyB96D,SAAWA,EAFxD+6D,EAAsBA,EAAoB7oD,OAAQoF,GAAOA,EAAGuxB,YAAcA,GAK5EwxB,EAAoBU,QACf,GAAIF,GAAmB,GAAK76D,EAAW,EAAG,CAC/C,MAAM+6D,EAAsB,IAAIX,GAChCW,EAAoB7uD,KAAK,IAAKsvB,EAASq/B,GAAkB76D,aACzDq6D,EAAoBU,KAuIdv/B,SAAU8+B,EAAeF,EAAmB5+B,EAC5CkiB,mBAAoBA,OAMxBh3C,GAAiC,IAApB80B,EAASjnC,QAAgBimC,GACtCtnC,IAAAoa,cAAC4kC,GAAU,CACT/sC,KAAK,yBACLgtC,IAAI,6BClOZ,CACE78C,GAAI,aACJkyB,KAAMxZ,GAAO,cACb8E,UnBhBW,SAAwBrE,GACrC,MAAMC,EAAUZ,MACTzN,EAAS26D,GAAcv0D,mBAAS,IACjCwG,EAAOkI,qBAAWvI,GAClBo7B,EAAS7yB,qBAAWk0B,IACpBzK,EAAgBzpB,qBAAWwoB,KAC1B46B,EAAiB7a,GAAsBj3C,wBAASjS,IAEhD4W,EAAOsrC,GAAYjwC,mBAAS,IAC7BimD,EAAiBpyC,aAAYlP,EAAO,MACnC6vD,EAAQC,GAAaz0D,mBAAS,KAC9BgyD,EAAeC,GAAoBjyD,oBAAS,IAC5C00D,EAAcC,GAAmB30D,mBAAS,IA6DjDwE,oBAAU,KACR,IAAgBlL,IAeT2sD,EAdLwO,EAAU,KAELn7D,GAAqB,KAAXA,GAAiBA,EAAOxL,OAAS,GAEhDqqC,EAAcniC,eAAesD,GAAQvN,KAAMo2C,IACrCA,GACFsyB,EAAU,IA5ClB,SAAaz+C,GACX,IAAI4+C,EACAh7D,EAAQgX,KAAM3N,GAAMA,EAAEm/B,YAAcpsB,EAAKosB,YAC3CwyB,EAAOh7D,EACPg7D,EAAKhkD,KAAM3N,GAAMA,EAAEm/B,YAAcpsB,EAAKosB,WAAWI,IAC/CluB,SAASsgD,EAAKhkD,KAAM3N,GAAMA,EAAEm/B,YAAcpsB,EAAKosB,WAAWI,KAAO,GACjExsB,EAAKgf,OAEP4/B,EAAO,CAAC,IAAK5+C,EAAMwsB,IAAKxsB,EAAKgf,MAAOz7B,SAAUyc,EAAKgf,UAAYp7B,GAGjE26D,EAAWK,GACX3kB,EAAS,IACTwkB,EAAU,IAgCJr1D,CAAI+iC,IAEJsyB,EAAU,sBAMf,CAACxO,IAwCJ,MAAMjG,EAAoBpmD,EAAQgX,KAC/BC,GAAOA,GAAMA,EAAGuxB,WAAa0vB,GAGhC,OACErlE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACk5C,GAAe,CACdC,kBAAmBA,EACnB/I,mBAAoBA,IAEtBxqD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQolB,YACtB5gC,IAAAoa,cAAA,OAAK8F,MAAO,CAACf,YAAa,SACxBnf,IAAAoa,cAACm7C,GAAS,CACRruD,MAAM,aACN6S,KAAMA,IAGR/Z,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aACjBtN,EAAQ9L,OAAS,IAClBrB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAG3BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQolB,YACtB5gC,IAAAoa,cAAA,KACEpQ,OAAO,SACPs5B,IAAI,sBACJ5lB,KAAMoI,GAAgB/L,EAAKpC,WAAY,yBACvC3X,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAE1N,MAAO,OAAQ4M,eAAgB,YAAaD,YAAa,OAAQ6zB,WAAY,SAAU1xB,aAAc,QAC9G7G,QAAQ,YACRmF,UAAU,QACV5f,IAAAoa,cAAC4H,GAAgB,CACfvF,KAAK,OACLhM,KAAM,2BAKZzQ,IAAAoa,cAAA,KACEpQ,OAAO,SACPs5B,IAAI,sBACJ5lB,KAAMoI,GAAgB/L,EAAKpC,WAAY,eACvC3X,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAE1N,MAAO,OAAQ4M,eAAgB,YAAcD,YAAa,OAAQ6zB,WAAY,SAAU1xB,aAAc,QAC/G7G,QAAQ,YACRmF,UAAU,QACV5f,IAAAoa,cAAC4H,GAAgB,CACfvF,KAAK,OACLhM,KAAM,iBAKZzQ,IAAAoa,cAAA,SACEqB,UAAWD,EAAQsG,MACnB5B,MAAO,CAAEnF,QAAS,QAClB3Y,GAAG,eACHgmE,UAAQ,EACR3rD,KAAK,OACL6B,SAhGV,SAAqB1U,GACdA,EAAEI,OAAOC,MAAM,KAIpBu7D,GAAiB,GACjBsC,EAAW,IACXI,EAAgB,IAEhBnuD,EAAKjW,UAAU6F,kBACboQ,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4T,EAAKrW,KAAKgG,aACVqQ,EAAKrW,KAAKX,OACV6G,GACAtK,KAAKqX,IACLnV,WAAW,KACT,MAAMsqB,EAAQnV,EAAIjZ,KAAKouB,MAAM7G,IAAIsE,IACxB,IACFA,EACHzc,SAAUyc,EAAKwsB,OAInB+xB,EAAW,IAAIh8C,IACf03B,EAAS,IACTgiB,GAAiB,GAEb7uD,EAAIjZ,KAAK2qE,YACXH,EAAgB,IAAIvxD,EAAIjZ,KAAK4lD,UAE9B,OAGL15C,EAAEI,OAAOkO,MAAQ,OAkEXlY,IAAAoa,cAAA,SAAOwC,QAAQ,gBACb5c,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN0N,MAAO,CAAEf,YAAa,OAAQmC,aAAc,OAAQ0xB,WAAY,UAChEpzB,UAAU,QACR5f,IAAAoa,cAAA,QAAM8F,MAAO,CAAE8zC,WAAYuR,EAAgB,SAAW,YAAcvlE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAC3FzQ,IAAAoa,cAAC0D,KAAgB,CAACoC,MAAO,CAAC1N,MAAO,OAAQiL,SAAU,WAAY4O,KAAM,mBAAoBlR,IAAK,mBAAoBtH,MAAO,OAAQkL,OAAQ,OAAQhE,QAASwqD,EAAgB,SAAW,YAI3LvlE,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNoN,UAAU,OACVM,MAAO,CAAC8yB,WAAY,SAAU1xB,aAAc,QAC5ChH,QAlJW+oC,KACnB,MAAMilB,EAA+Bn7D,EAAQ8X,IAAK+Y,IACzC,IAAKA,EAAO+X,IAAKwyB,GAAwBvqC,EAAOA,EAAMlxB,aAG/DgoC,EAAOkB,SAASsyB,EAA8B,KAC5CR,EAAW,IACXI,EAAgB,QA4IVloE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qCAK3Bw3D,EAAa5mE,OAAS,GACtBrB,IAAAoa,cAACouD,KAAK,CAACC,SAAS,UACdtuD,OACEna,IAAAoa,cAACC,IAAU,CACTE,aAAW,QACX/H,MAAM,UACNuL,KAAK,QACLzD,QAASA,KACP4tD,EAAgB,MAGlBloE,IAAAoa,cAAC2rD,KAAS,CAACvhD,SAAS,cAIxBxkB,IAAAoa,cAACsuD,KAAU,KAAC1oE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gCACnCzQ,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,KAAIza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mCAC/CzQ,IAAAoa,cAAA,MAAI8F,MAAO,CAACjE,QAAS,MAClBgsD,EAAahjD,IAAKsE,GAEfvpB,IAAAoa,cAAA,UAAIpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAA2B,IAAG8Y,EAAKo/C,KAAM,IAAC3oE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAA0B,IAAE8Y,EAAK+d,MAAM,IAACtnC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oCAMrKzQ,IAAAoa,cAAC6C,IAAS,CACRP,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAC9BrO,GAAG,sBACHqY,QAAQ,WACR0D,WAAY,CACV1B,KAAM,SACNypC,QAAS,UAEXhuC,MAAOA,EACPoG,SA5ON,SAAqBwB,GACnB,MAAMmB,EAAInB,EAAI9V,OAAOkO,MACrBsrC,EAASviC,IA2OL5C,aAAc,MACd6B,MAAO,CAAEpE,OAAQ,uBAElB4vB,EAAcl4B,UACbxT,IAAAoa,cAACuB,IAAc,CAACuE,MAAO,CAAEpE,OAAQ,wBAC/B,KACHisD,EACD/nE,IAAAoa,cAAApa,IAAAie,SAAA,KACG9Q,EAAQ9L,OAAS,EAChBrB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACqvC,GAAS,CACRG,YAAY,EACZthB,SAAUn7B,EACVyF,OAnNZ,SAAgB/F,GAGd,GAFAhO,QAAQC,IAAI+N,GACZhO,QAAQC,IAAIqO,GACRA,EAAQgX,KAAM3N,GAAMA,EAAEm/B,YAAc9oC,GAAS,CAC/C,MAAMkQ,EAAO5P,EAAQ6R,OAAQxI,GAAMA,EAAEm/B,YAAc9oC,GACnDi7D,EAAW/qD,OAiNL/c,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,QAASznB,MAAO,OAAQkL,OAAQ,WAI3D/e,IAAAoa,cAAC4kC,GAAU,CACT/sC,KAAK,gCACLgtC,IAAI,qCmB/Pd,CACE78C,GAAI,sBACJkyB,KAAMxZ,GAAO,qBACb8E,UnCjDW,SAA6BrE,GAC1C,MAAM1O,EAAS0O,EAAMxe,MAAMisC,OAAO5mC,GAC5BoZ,EAAUZ,KACVb,EAAOkI,qBAAWvI,IACjBlG,EAAWC,GAAgBF,oBAAS,IACpCq1D,EAAaC,GAAkBt1D,mBAAS,CAC7CoiC,UAAW,GACX9gB,YAAa,GACb0T,MAAO,GACP+hB,QAAS,GACTwe,mBAAoB,GACpBC,gBAAiB,GACjBC,kBAAmB,GACnB/qB,kBAAmB,GACnBgrB,cAAe,GACfp1D,MAAO,GACPkL,OAAQ,GACRmqD,MAAO,GACPC,UAAW,EACXC,gBAAiB,CACf5hB,YAAa,EACbU,WAAY,EACZG,SAAU,EACVnB,mBAAoB,GAEtBK,UAAW,CACT,CACEC,YAAa,EACbU,WAAY,EACZG,SAAU,EACVnB,mBAAoB,IAGxBqF,UAAW,CACT,CACEC,QAAS,EACTC,QAAS,EACTC,SAAU,EACVC,QAAS,EACTC,WAAY,EACZC,cAAe,IAGnBC,QAAS,CACP,CACEN,QAAS,EACTC,QAAS,EACTC,SAAU,EACVK,uBAAwB,IAG5BpC,SAAU,CACR,CACEqC,WAAY,EACZR,QAAS,EACTC,QAAS,EACTC,SAAU,EACV9B,mBAAoB,MAiC1B,OANA7yC,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,WAtBxB4T,EAAKjW,UACTyF,eACCwQ,EAAKrW,KAAKoI,iBAAiB3F,UAC3B0G,EACAkN,EAAKrW,KAAKgG,aACVqQ,EAAKrW,KAAKX,QAEXzD,KAAMqX,IACc,MAAfA,EAAIlZ,QACNorE,EAAelyD,EAAIjZ,MACnB+V,GAAa,IAEbsG,EAAK3G,SAAS,UAAWuD,EAAIgyB,cAGhCjpC,MAAOkK,IACNmQ,EAAK3G,SAAS,UAAWxJ,EAAEgN,YAC3BnD,GAAa,MAQhB,CAACsG,EAAKrW,KAAKX,OAAQgX,EAAKrW,KAAKoI,iBAAiB3F,YAE1CqN,EACLxT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQU,QACtBlc,IAAAoa,cAAC0D,KAAgB,CACfC,KAAM,GACNC,UAAW,KAIfhe,IAAAoa,cAAC4xC,GAAoB,CACnBx4C,UAAWA,EACX+V,KAAMq/C,MmCjDV,CACExmE,GAAI,SACJkyB,KAAMxZ,GAAO,UACb8E,UAAWg6C,IAEb,CACEx3D,GAAI,oBACJkyB,KAAMxZ,GAAO,8BACb8E,UAAWyuC,IAEb,CACEjsD,GAAI,aACJkyB,KAAMxZ,GAAO,cACb8E,UAAW06C,IAEb,CACEl4D,GAAI,uBACJkyB,KAAMxZ,GAAO,iCACb8E,UAAW+6C,IAEb,CACEv4D,GAAI,WACJkyB,KAAMxZ,GAAO,YACb8E,U3BnBW,SAAgCrE,GAC7C,OACEvb,IAAAoa,cAACq8C,GAAe,KACdz2D,IAAAoa,cAAC+9C,GAAiB58C,M2BkBtB,CACEnZ,GAAI,sBACJkyB,KAAMxZ,GAAO,gBACb8E,UlCvDW,SAA6BrE,GAC1C,MAAM,QAAE0yC,EAAO,KAAEC,EAAI,MAAEC,EAAK,QAAEC,GAAYJ,GACpCxyC,EAAUZ,KACV7P,EAAYwQ,EAAMxQ,UAAYwQ,EAAMxQ,UAAYwQ,EAAMxe,MAAMisC,OAAO5mC,GACnE2X,EAAOkI,qBAAWvI,IACjBlG,EAAWC,GAAgBF,oBAAS,IACpCk7C,EAAgBC,GAAqBn7C,oBAAS,IAC9C9H,EAAOojC,GAAYt7B,mBAASwG,EAAKrW,KAAKoI,iBAAiBL,QACvDkjD,EAAiBC,GAAsBr7C,mBAAS66C,IAChDvjD,EAASw+D,GAAc91D,qBACxBw7C,EAAe9uD,iBAAO,OACrB0uC,EAAWC,GAAgBr7B,oBAAS,GAE3CwE,oBAAU,KACR82B,EAAS90B,EAAKrW,KAAKoI,iBAAiBL,QACnC,CAACsO,EAAKrW,KAAKoI,iBAAiBL,QAE/BsM,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,YAC7B4T,EAAKjW,UACF8G,mBAAmBmP,EAAKrW,KAAKoI,iBAAiB3F,UAAW4E,GACzDzL,KAAMqX,IACL0yD,EAAW1yD,EAAIjZ,QAEnBqc,EAAKjW,UACFgH,eACCiP,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4E,EACAgP,EAAKrW,KAAK+E,UAEXnJ,KAAMqX,IACL6C,SAASslB,eAAe,WAAWkwB,UAAYr4C,EAAIjZ,OAEpDgC,MAAOg6C,GAAQjmC,GAAa,IAC5BuD,QAAQ,KACPvD,GAAa,OAGlB,CAACsG,EAAKrW,KAAKoI,iBAAiB3F,YAG/B,IAAI8oC,GAAiB,EAErB,MAuFMigB,EACJlvD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC6C,IAAS,CACRiD,MAAO,CAAE8b,WAAY,EAAG5I,WAAY,GAAIjU,YAAa,EAAGtL,MAAO,KAC/DkK,KAAK,QACL6gB,WAAS,EACT1mB,MAAOzM,EACPpO,OAjGkBmZ,EAiGI/K,WAjGSnK,IAANkV,GAAmBA,EAAEnV,OAAS,IAAM4tC,IAAmBN,IAkGhFrwB,SAAW1U,GAAMilC,EAASjlC,EAAEI,OAAOkO,SAErClY,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAASA,KAlGT0U,GAAcvjB,IAChBwjC,GAAiB,EACjBL,GAAa,GAEbggB,EAAmBX,GACnBl0C,EAAKjW,UACF8H,aACCH,EACAsO,EAAKrW,KAAK+E,SACVsR,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4E,GAEDzL,KAAK,IAAMsvD,EAAmBV,IAC9BxuD,MAAOg6C,GAAQkV,EAAmBT,MAErCp0C,EAAK3G,SAAS,UAAW,uBACzB67B,GAAiB,EACjBL,GAAa,MAkFX5uC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAvGL+F,MA2JxB,OACExW,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OACE8F,MAAO,CACLpE,OAAQ,OACRwF,aAAc,OACdvG,QAAS,OACTC,eAAgB,kBAElBhb,IAAAoa,cAACyzC,GAAU,CACTv5B,KAAM/Y,EAAMusB,UAAY,qBAAuB,oBAEjD9nC,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC+0C,KAAY,CACXC,QAASA,IAAMpvD,IAAAoa,cAAC0zC,GAAW,MAC3BpyC,QAASA,IAAMqzC,EAAa7uD,UAE9BF,IAAAoa,cAAC4F,IAAM,CAAC1F,QAnJA+0C,KACd,MAAMhpC,EAAO,GAEbA,EAAK,GAAK,CACRxb,EAAQy+D,YAAY,GAAD1qE,OAChBmb,EAAKpC,WAAWK,SAAS,WAAU,KAAApZ,OAAIiM,EAAQA,QAAQouD,gBAE5D5yC,EAAK,GAAK,CACR,SACA,kBACA,MACA,aACA,qBACA,cACApB,IAAKb,GAAOrK,EAAKpC,WAAWK,SAASoM,IACvCvZ,EAAQ0+D,aAAah7C,QAAQ,CAACghC,EAAa1mC,KACzC,MAAM,OACJhc,EAAM,gBACN4tD,EAAe,IACf1kB,EAAG,WACHyzB,EAAU,mBACVtiB,EAAkB,WAClBuiB,GACEla,EACJlpC,EAAKwC,EAAI,GAAK,CACZhc,EACA4tD,EACA1kB,EACAyzB,EACAtiB,EACAuiB,KAGJpjD,EAAKA,EAAKhlB,QAAU,CAAC,IACrBglB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,cACzB,GACA,GACA,GACA,GACAnN,EAAQ6+D,cAEVrjD,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,aACzB,GACA,GACA,GACA,GACAnN,EAAQ+pC,WAEVvuB,EAAKA,EAAKhlB,QAAU,CAClB0Y,EAAKpC,WAAWK,SAAS,eACzB,GACA,GACA,GACA,GACAnN,EAAQ8+D,oBAGVtc,GACEhnC,EAAKpB,IAAKb,GAAOA,EAAGurC,KAAK,MAAMA,KAAK,MAAM,GAAD/wD,OACtCmb,EAAKpC,WAAWK,SAAS,WAAU,KAAApZ,OAAIiM,EAAQA,QAAQouD,kBAuFpDj5D,IAAAoa,cAACw1C,KAAc,CAAC1vC,MAAO,CAAEf,YAAa,UACtCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAExBg+C,EACCzuD,IAAAoa,cAAApa,IAAAie,SAAA,KACGixC,EAAW,IAtEEW,MACxB,OAAQlB,GACN,KAAKT,EACH,OACEluD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC01C,KAA8B,CAC7B5vC,MAAO,CAAE1N,MAAO,QAASw9B,cAAe,SAAUl0B,OAAQ,KAE5D9b,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAI/B,KAAKw9C,EACH,OACEjuD,IAAAoa,cAAC0D,KAAgB,CACfoC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,YAIvB,KAAKme,EACH,OACEnuD,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC21C,KAAgB,CACf7vC,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPiI,OAAQ,EACRk0B,cAAe,SACfx9B,MAAO,SAGXxS,IAAAoa,cAAA,QAAM8F,MAAO,CAAEsE,SAAU,SACvBxkB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAI/B,KAAK29C,EACL,QACE,OAAO,OA2BayB,IAGhB7vD,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IAAMo0C,GAAkB,IACvC1uD,IAAAoa,cAAC41C,KAAe,CAAC9vC,MAAO,CAAEf,YAAa,UACvCnf,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAK9B1F,EAAU1J,OAAS,GAAImS,EAAYxT,IAAAoa,cAACuB,IAAc,MAAa,KAChE3b,IAAAoa,cAAA,OACE8F,MAAO,CAAEzB,gBAAiB,SAC1BumC,IAAK+J,EACL3sD,GAAG,ekC/KT,CACEA,GAAI,iBACJkyB,KAAMxZ,GAAO,kBACb8E,UAAWq7C,IAEb,CACE74D,GAAI,gBACJkyB,KAAMxZ,GAAO,aACb8E,UV7BW,WACb,MAAMpE,EAAUZ,MACTgvD,EAAkBC,GAAuBt2D,oBAAS,IAClDu2D,EAAsBC,GAA2Bx2D,oBAAS,GAEjE,OACEvT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQE,SACtB1b,IAAAoa,cAACkP,KAAI,CAAC6C,WAAS,GACbnsB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAC9BiL,QAAS1b,IAAAoa,cAAC4vD,GAAoB,SAGlChqE,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAC9BiL,QAAS1b,IAAAoa,cAACqlD,GAAe,SAG7Bz/D,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MACEjU,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBACvBzQ,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEkT,WAAY,GACrB3Y,QAAQ,WACRjI,MAAM,UACN8H,QAASA,IACPyvD,GAAyBD,IAE1BA,EACC9pE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAK/BiL,QAASouD,EAAuB9pE,IAAAoa,cAAC2nD,GAAgB,MAAM/hE,IAAAoa,cAAApa,IAAAie,SAAA,SAG3Dje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAC9BiL,QACE1b,IAAAoa,cAACmnD,GAAgB,CAACC,iBAAiB,gCAIzCxhE,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MACEjU,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvBzQ,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEkT,WAAY,GACrB3Y,QAAQ,WACRjI,MAAM,UACN8H,QAASA,IAAMuvD,GAAqBD,IACnCA,EACC5pE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAK/BiL,QAASkuD,EAAmB5pE,IAAAoa,cAACynD,GAAY,MAAM7hE,IAAAoa,cAAApa,IAAAie,SAAA,eUvD7D,CACE7b,GAAI,WACJkyB,KAAMxZ,GAAO,QACb8E,UT1BW,WACb,MAAM7F,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,KAEhB,OACE5a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQE,SACtB1b,IAAAoa,cAACkP,KAAI,CAAC6C,WAAS,GACbnsB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAC9BsO,OAAQ,IACRrD,QACE1b,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2mD,eACtBniE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4mD,mBACtBpiE,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,YACNgR,MAAO6B,EAAKrW,KAAKoI,iBAAiB3F,YAEpCnG,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,cACNgR,MAAO6B,EAAKrW,KAAKoI,iBAAiB+D,cAEpC7P,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,WACNgR,MAAO6B,EAAKrW,KAAKoI,iBAAiBgE,WAEpC9P,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAO6B,EAAKrW,KAAKoI,iBAAiBm+D,QAEpCjqE,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAO6B,EAAKrW,KAAKoI,iBAAiBL,SAItCzL,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6mD,oBACtBriE,IAAAoa,cAACinD,KAAY,CAAC5lD,UAAWD,EAAQ8mD,gBAO3CtiE,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MACEjU,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBACvBzQ,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQgnD,kBACnBloD,QAASA,IAAMP,EAAK3B,QAAQY,KAAK,iBACjCyB,QAAQ,YACRza,IAAAoa,cAAC8O,KAAQ,QAIfnK,OAAQ,IACRrD,QACE1b,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2mD,eACtBniE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4mD,mBACtBpiE,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,WACNgR,MAAO6B,EAAKrW,KAAK+R,YAAYpS,WAE/BrD,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,cACNgR,MAAO6B,EAAKrW,KAAK+R,YAAYV,cAE/B/U,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,WACNgR,MAAO6B,EAAKrW,KAAKgG,eAEnB1J,IAAAoa,cAACiyC,GAAY,CACXnlD,MAAM,QACNgR,MAAO6B,EAAKrW,KAAK+R,YAAYhK,SAIjCzL,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6mD,oBACtBriE,IAAAoa,cAAC8vD,KAAQ,CAACzuD,UAAWD,EAAQ8mD,iBAOzCtiE,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ6gD,gBACtBr8D,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAC9BiL,QAAS1b,IAAAoa,cAACqlD,GAAe,UAI/Bz/D,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ+W,GAAI,GACJvgC,IAAAoa,cAACgrB,GAAwB,CACvBnxB,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAC9BiL,QACE1b,IAAAoa,cAACmnD,GAAgB,CAACC,iBAAiB,qCStFnD,CACEp/D,GAAI,aACJkyB,KAAMxZ,GAAO,cACb8E,UAAWsjD,IAEb,CACE9gE,GAAI,gBACJkyB,KAAMxZ,GAAO,iBACb8E,UL7CW,SAA+BrE,GAC5C,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBwoC,EAAqBjgC,qBAAW03B,IAChCjO,EAAgBzpB,qBAAWwoB,KAE1B0/B,EAAYC,GAAiB72D,mBAAS,KACtCpG,EAAS26D,GAAcv0D,mBAAS,KAChC2E,EAAOsrC,GAAYjwC,mBAAS,KAC5Bw0D,EAAQC,GAAaz0D,mBAAS,IAC/BimD,EAAiBpyC,aAAYlP,EAAO,MACnCqtD,EAAeC,GAAoBjyD,oBAAS,IAC5C00D,EAAcC,GAAmB30D,mBAAS,IAOjD,SAAS82D,EAAkBvqD,GACzB0jC,EAAS1jC,EAAI9V,OAAOkO,OAoDtB,SAASia,IACP,IAAI90B,GAAQ,EACZimD,EAASn2C,EAAQ8X,IAAIsE,IACQ,IAAvBA,EAAK4vB,gBAA+C,QAAvB5vB,EAAK4vB,gBAAmD,MAAvB5vB,EAAK4vB,gBACrE97C,GAAQ,EACRksB,EAAK+gD,qBAAsB,GAE3B/gD,EAAK+gD,qBAAsB,EAGR,IAAjB/gD,EAAKzc,UAAkByc,EAAKzc,UAAY,GAC1CzP,GAAQ,EACRksB,EAAKghD,eAAgB,GAErBhhD,EAAKghD,eAAgB,EAGvB1rE,QAAQC,IAAIyqB,GAELA,IAKT,OAFAu+C,EAAW,IAAIxkB,KAEPjmD,EAGV,SAASoxC,EAAS7kC,GAChBA,EAAEC,iBACGsoB,KAIL+vB,EAAmBlM,SAAS7oC,EAAS,KACnC26D,EAAW,IACXI,EAAgB,MA5FpBnwD,oBAAU,MAQV,SAAgBlL,GACd,IAAKA,GAAqB,KAAXA,GAAiBA,EAAOxL,OAAS,EAAG,OACnDqqC,EAAcxhC,qBAAqB2C,GAAQvN,KAAMgpC,IAC3CA,EACF8hC,EAAc9hC,GAEd0/B,EAAU,qBAbdrgD,CAAO6xC,IACN,CAACA,IA8FJ,MAAMgR,EAAQC,GAEVzqE,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,OACEqB,UAAWD,EAAQ0oD,mBACnBhkD,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPynB,UAAW,SACXvgB,QAAS,iBAEX/a,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQghC,IACnB7G,UAAW80B,EAAS90B,UACpBsF,UAAWwvB,EAASxvB,UACpBz7B,IAAKirD,EAAS51C,eAGlB70B,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ2oD,gBACvBnkE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBACtB,MACAg6D,EAAS90B,WAEZ31C,IAAAoa,cAAA,QACEqB,UAAWD,EAAQ2oD,eACnBjkD,MAAO,CAAEiF,SAAU,UAClBslD,EAAS51C,cAMlB,OACE70B,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQolB,YACtB5gC,IAAAoa,cAAA,OAAK8F,MAAO,CAACf,YAAa,SAC1Bnf,IAAAoa,cAACm7C,GAAS,CACRruD,MAAM,oBACN6S,KAAMA,IAER/Z,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aACjBtN,EAAQ9L,OAAS,IAClBrB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAGzBzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQolB,YACtB5gC,IAAAoa,cAAA,KACEpQ,OAAO,SACPs5B,IAAI,sBACJ5lB,KAAMoI,GAAgB/L,EAAKpC,WAAY,uBACvC3X,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAE1N,MAAO,OAAQ4M,eAAgB,YAAaD,YAAa,QAClE1E,QAAQ,YACRmF,UAAU,QACV5f,IAAAoa,cAAC4H,GAAgB,CACfvF,KAAK,OACLhM,KAAM,yBAKZzQ,IAAAoa,cAAA,KACEpQ,OAAO,SACPs5B,IAAI,sBACJ5lB,KAAMoI,GAAgB/L,EAAKpC,WAAY,aACvC3X,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAE1N,MAAO,OAAQ4M,eAAgB,YAAaD,YAAa,QAClE1E,QAAQ,YACRmF,UAAU,QACV5f,IAAAoa,cAAC4H,GAAgB,CACfvF,KAAK,OACLhM,KAAM,eAKZzQ,IAAAoa,cAAA,SACEqB,UAAWD,EAAQsG,MACnB5B,MAAO,CAAEnF,QAAS,QAClB3Y,GAAG,eACHgmE,UAAQ,EACR3rD,KAAK,OACL6B,SAtJV,SAAmB1U,GACZA,EAAEI,OAAOC,MAAM,KAIpBu7D,GAAiB,GACjBsC,EAAW,IACXI,EAAgB,IAEhBnuD,EAAKjW,UAAU2L,wBACbsK,EAAKrW,KAAKoI,iBAAiB3F,UAC3B4T,EAAKrW,KAAKgG,aACVE,GACAtK,KAAKqX,IAELnV,WAAW,KACTsmE,EAAW,IAAInxD,EAAIjZ,KAAKouB,QACxB03B,EAAS,IACTgiB,GAAiB,GAEb7uD,EAAIjZ,KAAK2qE,YACXH,EAAgB,IAAIvxD,EAAIjZ,KAAK4lD,UAE9B,OAGL15C,EAAEI,OAAOkO,MAAQ,OA8HXlY,IAAAoa,cAAA,SAAOwC,QAAQ,gBACb5c,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNoN,UAAU,QACR5f,IAAAoa,cAAA,QAAM8F,MAAO,CAAE8zC,WAAYuR,EAAgB,SAAW,YAAcvlE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAC3FzQ,IAAAoa,cAAC0D,KAAgB,CAACoC,MAAO,CAAC1N,MAAO,OAAQiL,SAAU,WAAY4O,KAAM,mBAAoBlR,IAAK,mBAAoBtH,MAAO,OAAQkL,OAAQ,OAAQhE,QAASwqD,EAAgB,SAAW,cAO7L0C,EAAa5mE,OAAS,GACtBrB,IAAAoa,cAACouD,KAAK,CAACC,SAAS,UACdtuD,OACEna,IAAAoa,cAACC,IAAU,CACTE,aAAW,QACX/H,MAAM,UACNuL,KAAK,QACLzD,QAASA,KACP4tD,EAAgB,MAGlBloE,IAAAoa,cAAC2rD,KAAS,CAACvhD,SAAS,cAIxBxkB,IAAAoa,cAACsuD,KAAU,KAAC1oE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BACnCzQ,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,KAAIza,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iCAC/CzQ,IAAAoa,cAAA,MAAI8F,MAAO,CAACjE,QAAS,MAClBgsD,EAAahjD,IAAKsE,GAEfvpB,IAAAoa,cAAA,UAAIpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAAyB,IAAG8Y,EAAKo/C,KAAM,IAAC3oE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAAwB,IAAE8Y,EAAK+d,MAAM,IAACtnC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kCAOjKzQ,IAAAoa,cAACsqC,KAAY,CACXpmC,SAAUA,CAACkM,EAAOm6B,KA1MxB,IAAap7B,KA0M0Bo7B,KArMrCmjB,EAAW,IAAI36D,EAASoc,IACxBi6B,EAAS,MAqMLtrC,MAAOA,EACPwd,QAASy0C,EACT/qC,OAAQA,KACNokB,EAAS,IACT4mB,EAAc,KAEhBxlB,kBAAgB,EAChB8lB,cAAgBl0D,GAAMA,EACtBquC,eAAiB8lB,GAA8B,kBAAXA,EAAsBA,EAASA,EAAOxG,eAC1EyG,aAAeD,GAAW3qE,IAAAoa,cAACowD,EAASG,GACpC7lB,YAAc9b,GACZhpC,IAAAoa,cAAC6C,IAASC,OAAAC,OAAA,GACJ6rB,EAAM,CACV1qB,SAAU+rD,EACV3tD,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAC9BrO,GAAG,sBACHqY,QAAQ,WACR4D,aAAc,MACd6B,MAAO,CAAEpE,OAAQ,0BAItB4vB,EAAcl4B,UACbxT,IAAAoa,cAACuB,IAAc,CAACuE,MAAO,CAAEpE,OAAQ,wBAC/B,KACHisD,EAED/nE,IAAAoa,cAACkP,KAAI,CACD6C,WAAS,EACTpQ,QAAS,EACTkX,UAAW,UACTjzB,IAAAoa,cAAA,QAAMq0B,SAAUA,GACfthC,EAAQ8X,IAAI,CAACsE,EAAMhE,KAAW,IAADslD,EAC5B,OACE7qE,IAAAoa,cAACkP,KAAI,CACDC,MAAI,EACJC,IAAE,EACF/hB,IAAK8hB,EAAKosB,WACZ31C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACkP,KAAI,CAAC6C,WAAS,GACbnsB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,IAAE,EACFtJ,MAAO,CAAEiF,SAAU,SACnBnlB,IAAAoa,cAAA,OACEqB,UAAWD,EAAQ0oD,mBACnBhkD,MAAO,CACLnB,OAAQ,GACRlL,MAAO,GACPynB,UAAW,WAEbt7B,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQghC,IACnB7G,UAAWpsB,EAAKosB,UAChBsF,UAAW1xB,EAAK0xB,UAChBz7B,IAAK+J,EAAKsL,gBAKhB70B,IAAAoa,cAACkP,KAAI,CACDpJ,MAAO,CAAE2Z,SAAU,MACnBtQ,MAAI,EACJC,GAAI,EACJ+W,GAAI,GACNvgC,IAAAoa,cAAC6C,IAAS,CACNP,WAAS,EACTkH,aAAc2F,EAAKosB,UACnB94B,UAAU,EACVpB,UAAWD,EAAQM,OACnBrB,QAAQ,WACRqB,OAAO,WAIb9b,IAAAoa,cAACkP,KAAI,CACDC,MAAI,EACJC,GAAI,EACJ+W,GAAI,GACNvgC,IAAAoa,cAAC6C,IAAS,CACNP,WAAS,EACTkH,aAAc2F,EAAKsL,YACnBhY,UAAU,EACVpB,UAAWD,EAAQM,OACnBrB,QAAQ,WACRqB,OAAO,WAIb9b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,IAAE,EACFtJ,MAAO,CAAEiF,SAAU,UACnBnlB,IAAAoa,cAACwK,KAAW,CACV9I,OAAO,QACPrB,QAAQ,WACRgB,UAAS,GAAA7c,OAAK4c,EAAQmf,cACtB36B,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,uCACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLrJ,UAAWD,EAAQM,OACnBiJ,QAAQ,sCACR3iB,GAAG,gCACHwhB,aAAc2F,EAAK4vB,eACnB76B,SAAW1U,IACTuD,EAAQoY,GAAO4zB,eAAiBvvC,EAAEI,OAAOkO,MACzCia,KAEFjrB,MAAM,gBACNyV,UAAQ,GAEH,OAAJ4M,QAAI,IAAJA,GAAmB,QAAfshD,EAAJthD,EAAM44B,qBAAa,IAAA0oB,OAAf,EAAJA,EACG5iC,KAAK,CAACrK,EAAGsK,IACTtK,EAAE12B,MAAQghC,EAAEhhC,OACP,EACDi5C,OAAOviB,EAAE12B,MAAQghC,EAAEhhC,QAExB+d,IAAKkG,GACJnrB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAK0jB,EAAE/oB,GACP8V,MAAOiT,EAAE/oB,IACR+oB,EAAEjkB,SAIXlH,IAAAoa,cAAC0wD,KAAc,CAACztE,OAAK,GACf8P,EAAQoY,GAAO+kD,oBACbtqE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBACvB,QAIZzQ,IAAAoa,cAACkP,KAAI,CACDC,MAAI,EACJC,IAAE,EACFtJ,MAAO,CAAEiF,SAAU,UACrBnlB,IAAAoa,cAAC6C,IAAS,CACN2G,aAAc2F,EAAKzc,SACnB2O,UAAWD,EAAQM,OACnB5U,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9B6N,SAAW1U,GAAMuD,EAAQoY,GAAOzY,SAA4B,EAAjBlD,EAAEI,OAAOkO,MACpDuE,KAAK,SACLsuD,gBAAiB,CAAEC,QAAQ,GAC3BvwD,QAAQ,WACRqB,OAAO,QACPa,UAAQ,IAEV3c,IAAAoa,cAAC0wD,KAAc,CAACztE,OAAK,GACjB8P,EAAQoY,GAAOglD,cACbvqE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBACvB,OAGVzQ,IAAAoa,cAACkP,KAAI,CACDC,MAAI,EACJC,IAAE,EACFtJ,MAAO,CAAEiF,SAAU,SACnBnlB,IAAAoa,cAACC,IAAU,CACTkkC,KAAK,MACLhkC,aAAW,SACXD,QAASA,KACP,IAAI1Q,EAAIuD,EACRvD,EAAEwzB,OAAO7X,EAAO,GAChBuiD,EAAW,IAAIl+D,KAEjBi1B,UAAW,GACX7+B,IAAAoa,cAACokC,KAAU,SAInBx+C,IAAAoa,cAAA,MAAIqB,UAAWD,EAAQgnC,SAK/BxiD,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,IAAE,EACF/hB,IAAI,MACJzH,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEnF,QAA4B,IAAnB5N,EAAQ9L,OAAe,OAAS,SAClDob,KAAK,SACLhC,QAAQ,YACRjI,MAAM,UACN8H,QAASm0B,EACT5xB,SAA6B,IAAnB1P,EAAQ9L,OAClBoa,UAAWD,EAAQ6/C,cACnBr7D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBK3XrC,CACErO,GAAI,wBACJkyB,KAAMxZ,GAAO,0BACb8E,UAAWilD,GACXI,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,+BACJkyB,KAAMxZ,GAAO,oCACb8E,UAAWilD,GACXI,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,oCACJkyB,KAAMxZ,GAAO,uCACb8E,UAAWilD,GACXI,YAAa,GAEf,CACE7iE,GAAI,OACJkyB,KAAMxZ,GAAO,QACb8E,UAAWuhB,GACX9M,OAAO,IAII,QACb42C,SAAU7oE,GAAM4iE,GAAO7gD,KAAM0E,GAAMA,EAAEzmB,KAAOA,GAC5C0Y,KAAMA,GACNkqD,OAAQA,IC9GKkG,OAnCKA,KAClB,MAAMnxD,EAAOkI,qBAAWvI,IAClB,cAAEyxD,GAAkBpxD,EAAKrW,KAAK+R,YAE9B21D,EAAUA,CAAChpE,EAAImjB,EAAOke,KACnB,CACLrhC,GAAIA,EACJshC,MAAO2nC,GAAcJ,SAAS7oE,GAC9BmjB,MAAOA,EACPke,SAAUA,IAIRI,EAAkB,CACtBunC,EAAQ,WAAY,EAAG,YACvBA,EAAQ,WAAY,EAAG,gBACvBA,EAAQ,SAAU,EAAG,cACrBA,EAAQ,aAAc,EAAG,kBACzBA,EAAQ,gBAAiB,EAAG,qBAC5BA,EAAQ,WAAY,EAAG,gBACvBA,EAAQ,SAAU,EAAG,cACrBA,EAAQ,aAAc,EAAG,cACzBA,EAAQ,aAAc,GAAI,kBAC1BA,EAAQ,OAAQ,GAAI,aAOtB,OAJID,GACFtnC,EAAgBzG,OAAO,EAAG,EAAGguC,EAAQ,gBAAiB,EAAG,cAGpD,CACLvnC,oBCbJ,MAAMjpB,GAAYC,YAAYnH,IAAK,CACjC43D,UAAW,CACT94D,MAAO,UACP+4D,kBAAmB,QACnB9tD,SAAU,WACV4O,KAAM,MAwFKm/C,OApFf,SAAoBjwD,GAClB,MAAMC,EAAUZ,KAEVk6B,GADO7yB,qBAAWvI,GACTuI,qBAAWk0B,KACpB0D,EAAgB53B,qBAAW03B,KAC1B12B,EAAMyZ,GAAWnpB,oBAAS,IAC1Bk4D,EAAmBC,GAAwBn4D,oBAAS,GAGrDo4D,EADWnkD,cAC2BiB,SAAS6F,SACnD,wBAGF,SAASs9C,EAAsB/+C,GAC7B6P,EAAQ7P,GAGV,SAASg/C,EAAmCh/C,GAC1C6+C,EAAqB7+C,GAGvB,OACE7sB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC+1B,GAAW50B,EACTowD,EACC3rE,IAAAoa,cAACC,IAAU,CACT7H,MAAM,UACN8H,QAASA,IAAMuxD,GAAmC,IAChDhyB,EAAcrmC,UAOdxT,IAAAoa,cAAC0D,IAAgB,CACfrD,QAAQ,gBACRqxD,eAAa,EACbrwD,UAAWD,EAAQ8vD,UACnBvtD,KAAM,GACNC,UAAW,IAXbhe,IAAAoa,cAAC2xD,KAAK,CACJC,aAAcnyB,EAAcxvB,MAC5B7X,MAAM,WACLggC,GAAmB,mBAa1BxyC,IAAAoa,cAACC,IAAU,CACT7H,MAAM,UACN8H,QAASA,IAAMsxD,GAAsB,IACnC92B,EAAOthC,UAOPxT,IAAAoa,cAAC0D,IAAgB,CACfrD,QAAQ,gBACRqxD,eAAa,EACbrwD,UAAWD,EAAQ8vD,UACnBvtD,KAAM,GACNC,UAAW,IAXbhe,IAAAoa,cAAC2xD,KAAK,CACJC,aAAcl3B,EAAOzqB,MACrB7X,MAAM,aACNxS,IAAAoa,cAAC6xD,KAAc,SAezBjsE,IAAAoa,cAAC65B,GAAgB,CACfC,WAAYg4B,KAAwBroC,kBAGtC7jC,IAAAoa,cAAC+xD,GAAuB,CACtBlpD,KAAMwoD,EACNnxD,QAASuxD,IAGX7rE,IAAAoa,cAACgyD,GAAU,CACTnpD,KAAMA,EACN3I,QAASsxD,MCtGjB,MAAMhxD,GAAYC,YAAYnH,IAAK,CACjCitB,MAAO,CACL8b,UAAW,SAEbqC,WAAY,CACVvgC,WAAY,UAEdwgC,WAAY,CACVzjB,UAAW,aAsCA+wC,OAlCf,WACE,MAAM7wD,EAAUZ,KAChB,OACE5a,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8G,UAAU,SACVxX,UAAWD,EAAQsjC,YACnB9+C,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJxpB,IAAAoa,cAAA,OACEqB,UAAWD,EAAQmlB,MACnBlhB,IAAKy/B,QAGTl/C,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJxpB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQujC,YACtB/+C,IAAAoa,cAAA,UAAI,OACJpa,IAAAoa,cAAA,SAAG,gCACHpa,IAAAoa,cAAA,SAAG,uCACHpa,IAAAoa,cAAC4F,IAAM,CACLtC,KAAK,SACLjD,QAAQ,YACRgB,UAAWD,EAAQ9I,QAAQ,cCnCvC,SAAS+N,GAAc5G,GAAqC,IAAlC+F,UAAWQ,KAAcrD,GAAMlD,EACvD,OACE7Z,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GACAJ,EAAI,CACRwD,OAAShF,GACPvb,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GACJ5B,EACAwB,OAmFCnB,mBA1EClI,IAAK,CACnBoH,KAAM,CACJC,QAAS,QAEXy4B,KAAM,CACJz4B,QAAS,QAEXo0B,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZvD,eAAgB,WAChBiB,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBzzB,QAAS,CACPiD,UAAW,GACXuN,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,GACvBgD,OAAQ,oBACRN,gBAAiB,QACjB+M,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvCtc,WA1BgB,KA4BlBkhB,aAAc,CACZ9oB,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOgF,QACjC9E,SAAU/7B,EAAM47B,YAAYG,SAASG,iBAEvCxc,WAAY,IAEdohB,cAAe,CACbphB,WAAY,KAwCDxX,EApCf,SAAiBL,GACf,MAAM,QAAEC,EAAO,MAAEze,GAAUwe,EACrBxB,EAAOkI,qBAAWvI,GAClBZ,EAAUs3B,KAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAExD,OACE/vC,IAAAoa,cAAA,QACEqB,UAAW2B,IAAW5B,EAAQE,QAAS,CACrC,CAACF,EAAQ84B,eAAgBv6B,EAAKtF,YAAcqE,EAC5C,CAAC0C,EAAQg5B,gBAAiB17B,KAE5B9Y,IAAAoa,cAACkyD,IAAM,CAACl0D,QAAS2B,EAAK3B,SACpBpY,IAAAoa,cAACwU,IAAM,KACP5uB,IAAAoa,cAACkG,IAAK,CACF+T,OAAK,EACLC,KAAMv3B,EAAMu3B,KACZ/T,OAAQA,IAAMvgB,IAAAoa,cAACoG,IAAQ,CAACjY,GAAG,iBAE5By8D,GAAOA,OAAO//C,IAAKkG,GAClBnrB,IAAAoa,cAACqG,GAAcvD,OAAAC,OAAA,CACbovD,eAAgBxyD,EAAKtF,WACrB4f,OAAK,EACLC,KAAMnJ,EAAEmJ,KACR7sB,IAAK0jB,EAAE/oB,GACP6B,MAAO,EACP7B,GAAI+oB,EAAE/oB,IACF+oB,KAGRnrB,IAAAoa,cAACkG,IAAK,CAACV,UAAWysD,W,cCzF5B,MAAMG,GAAe7yD,0BACf8yD,GAAe,CAEnBC,MAAOC,GAGPC,UAAW,GACXC,iBAAkB,GAGlB/oD,UAAW,GAGXgpD,kBAAmB,IAGfC,GAAUA,CAACrkD,EAAOvO,KACtB,OAAQA,EAAOsC,MAEb,IAAK,gBACH,MAAO,IAAKiM,EAAOkkD,UAAWzyD,EAAO6yD,SACvC,IAAK,eACH,MAAO,IAAKtkD,EAAOmkD,iBAAkB1yD,EAAO6yD,SAE9C,IAAK,gBACH,MAAO,IAAKtkD,EAAO5E,UAAW3J,EAAO6yD,SAGvC,IAAK,0BACH,MAAO,IAAKtkD,EAAOokD,kBAAmB3yD,EAAO6yD,SAE/C,QAEE,OADAnuE,QAAQxB,MAAM,OAAQ8c,EAAOsC,MACtBiM,IAIAukD,GAAgBpzD,IAAmB,IAAlB,SAAEC,GAAUD,EACxC,MAAO6O,EAAOwkD,GAAYC,qBAAWJ,GAASN,IAC9C,OACEzsE,IAAAoa,cAACoyD,GAAa7xD,SAAQ,CAACzC,MAAO,CAAEwQ,QAAOwkD,aACpCpzD,IAKMszD,GAAWA,IAAMnrD,qBAAWuqD,I,cC/BzC,MAAM5xD,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ,MAAS,OAET,QAAS,CACPgB,OAAQpI,EAAMqI,QAAQ,GACtBuF,aAAc,KAGlBg/B,MAAO,CACLzsC,MAAO,qBAETw5D,UAAW,CACTx5D,MAAO,OAETkI,QAAS,CACPD,OAAQ,qBA+NGwxD,OA3Nf,SAAwB/xD,GACtB,MAAMxB,EAAOkI,qBAAWvI,IAClB,MAAEgP,EAAK,SAAEwkD,GAAaE,KACtBG,EAAkB,CACtB,CACEnrE,GAAI,GACJoH,WAAY,GACZiH,KAAM,OACN+8D,eAAgB,OAEf9kD,EAAMkkD,WAELpxD,EAAUZ,MACTld,EAAM++B,GAAWlpB,mBAAS,KAAO,IAADk6D,EAAAC,EACrC,OAAQnyD,EAAMkB,MACZ,IAAK,SAEL,IAAK,SACH,OAAOlB,EAAM7d,KACf,IAAK,SACH,MAAO,CACL+S,KAAM,GACNjH,WAAYuQ,EAAKrW,KAAKoI,iBAAiB3F,UACvC+K,oBAAqB,SAEzB,QACE,MAAO,IACFqK,EAAM7d,KACTwT,oBAA+B,QAAZu8D,EAAElyD,EAAM7d,YAAI,IAAA+vE,GAAc,QAAdC,EAAVD,EAAYE,oBAAY,IAAAD,OAAd,EAAVA,EAA0Bx8D,wBAKvD6G,oBAAU,KACuB,IAA3B2Q,EAAM5E,UAAUziB,QAClB0Y,EAAKjW,UAAUyK,eAAejP,KAAMqX,IAClCu2D,EAAS,CAAEzwD,KAAM,gBAAiBuwD,QAASr2D,EAAIjZ,UAGlD,IAEH,MAIMkwE,EAAgCxrE,IACpC2X,EAAK9J,oBACFC,qBAAqB6J,EAAKrW,KAAKoI,iBAAiB3F,WAChD7G,KAAMqX,IACLu2D,EAAS,CAAEzwD,KAAM,gBAAiBuwD,QAASr2D,EAAIjZ,OAC/C,IAAImvE,EAAmBl2D,EAAIjZ,KAAKymB,KAAMC,GAAOA,EAAGhiB,KAAOA,GACvDvD,QAAQC,IAAI,gCAAiC+tE,GAC7CK,EAAS,CACPzwD,KAAM,eACNuwD,QAASH,GAAoBl2D,EAAIjZ,KAAK,QAmD9C,OACEsC,IAAAoa,cAAA,QACEyzD,YAAU,EACVxvD,aAAa,MACbowB,SAlDkB7kC,IACpBA,EAAEC,iBAGF,GAFWD,EAAEujB,cACQ2gD,iBAEnB,OAAQvyD,EAAMkB,MACZ,IAAK,SACH1C,EAAK9J,oBACFc,YAAY,IACRrT,EACH6I,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,YAExC7G,KAAMqX,IACL4E,EAAMslC,QACN+sB,EAA6Bj3D,EAAIjZ,KAAK0E,MAE1C,MACF,IAAK,OACC1E,EAAKiwE,aAAavrE,IACpB2X,EAAK9J,oBACFe,aAAa,IACTtT,EACHiwE,aAAcjwE,EAAKiwE,aAAavrE,GAChCmE,WAAYwT,EAAKrW,KAAKoI,iBAAiB3F,YAExC7G,KAAMqX,IACLu2D,EAAS,CAAEzwD,KAAM,eAAgBuwD,QAASr2D,EAAIjZ,OAC9C6d,EAAMslC,QACN+sB,EAA6Bj3D,EAAIjZ,KAAK0E,MAI5C,MACF,IAAK,SACH2X,EAAK9J,oBACFmB,eAAe1T,GACf4B,KAAM6rB,GAAM5P,EAAM4G,QAAQ,aAC7B,MACF,QACEpI,EAAK9J,oBACFgB,aAAavT,GACb4B,KAAM6rB,GAAM5P,EAAM4G,QAAQ,gBAUjCniB,IAAAoa,cAACuK,KAAa,CAAClJ,UAAWD,EAAQV,MAChC9a,IAAAoa,cAAC6C,IAAS,CACR7a,GAAG,eACH8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BgK,QAAQ,WACRmJ,aAAclmB,EAAK+S,KACnBoM,SAAyB,WAAftB,EAAMkB,KAChB6B,SA5Ec1U,IACpB6yB,EAAQ,IAAK/+B,EAAM+S,KAAM7G,EAAEI,OAAOkO,SA4E5BuD,UAAWD,EAAQ8kC,MACnB3jC,UAAQ,EACRiiB,WAAS,IAEV7kB,EAAKrW,KAAK+R,YAAYqZ,oBACN,WAAfvT,EAAMkB,MACJzc,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAAS3rB,EAAKyT,SACdmN,SAAUA,IACRme,EAAQ,IAAK/+B,EAAMyT,UAAWzT,EAAKyT,aAIzCjK,MAAM,qBAGI,SAAfqU,EAAMkB,MACLzc,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ8kC,OACnBtgD,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,+BACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,4BAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLrK,QAAQ,WACRsK,QAAQ,8BACR3iB,GAAG,2BACH8V,MAAOxa,EAAKiwE,aACZrvD,SAAW1U,GACT6yB,EAAQ,IACH/+B,EACHiwE,aAAc/jE,EAAEI,OAAOkO,MACvBhH,oBACEtH,EAAEI,OAAOkO,MAAMhH,qBAAuB,UAG5CT,KAAK,gBACJ88D,EAAgBtoD,IAAKyU,GAElB15B,IAAAoa,cAAC4K,KAAQ,CACP9M,MAAOwhB,EACPjyB,IAAKiyB,EAASt3B,IACbs3B,EAASjpB,SAQN,WAAf8K,EAAMkB,MACLzc,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ8kC,OACnBtgD,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,6BACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,6BAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLrK,QAAQ,WACRsK,QAAQ,4BACR7M,MAAOxa,EAAKwT,qBAAuB,QACnCoN,SAAW1U,IACT6yB,EAAQ,IAAK/+B,EAAMwT,oBAAqBtH,EAAEI,OAAOkO,UAElDwQ,EAAM5E,UAAUmB,IAAKxc,GAElBzI,IAAAoa,cAAC4K,KAAQ,CACP9M,MAAOzP,EAASisB,KAChBjtB,IAAKgB,EAASrG,IACbqG,EAASwL,WASxBjU,IAAAoa,cAACyrB,KAAa,CAACpqB,UAAWD,EAAQO,SAChC/b,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiI,QAAQ,YACR8mC,kBAAgB,EAChBjnC,QAASA,IAAMiB,EAAM4G,WACrBniB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvD,KAAK,SACLjK,MAAM,UACNiI,QAAQ,YACR8mC,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM8K,EAAMkB,WC1PzB,IAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OCoBnD,MAAM7B,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ,MAAS,OAET,QAAS,CACPgB,OAAQpI,EAAMqI,QAAQ,GACtBuF,aAAc,KAGlBg/B,MAAO,CACLzsC,MAAO,qBAETw5D,UAAW,CACTx5D,MAAO,OAETkI,QAAS,CACPD,OAAQ,qBAINiyD,GAAgC,CACpC,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,MACT,QAAS,OAqVX,SAASC,GAAgBrL,GACvB,IAAIx3C,EAAIy8B,KAAKqmB,OAAOtL,EAAO19C,IAAKb,GAAOA,EAAG8pD,WAAa,EAIvD,MAHS,aAAL/iD,IACFA,EAAI,GAECA,EAGMgjD,OA1Vf,SAA8B5yD,GAC5B,MAAMxB,EAAOkI,qBAAWvI,IAClB,MAAEgP,EAAK,SAAEwkD,GAAaE,KACtB5xD,EAAUZ,MACTwzD,EAAkBC,GAAuB96D,oBAAS,IAClD7V,EAAM++B,GAAWlpB,mBAAS,KAC/B,OAAQgI,EAAMkB,MACZ,IAAK,SAEL,IAAK,SACH,OAAOlB,EAAM7d,KACf,QACE,MAAO,CACL4wE,aAAa,EACbJ,SAAUF,GAAgBtlD,EAAMmkD,iBAAiBW,gBACjDe,aACER,GACErlD,EAAMmkD,iBAAiB37D,sBACpB,MACPs9D,SAAU,GACVC,WAAY,GACZ/kE,aAAcgf,EAAMmkD,iBAAiB37D,oBACrCw9D,eAAgB,EAChBC,oBAAoB,EACpBC,qBAAqB,EACrBC,WAAYtzD,EAAM7d,KAAKmxE,eAKzBC,EAAgBpmD,EAAMokD,kBAAkB3oD,KAC3CC,GAAOA,EAAG3T,OAAS/S,EAAK8wE,UAErBO,EAAoC,OAAbD,QAAa,IAAbA,OAAa,EAAbA,EAAeC,qBAE5Ch3D,oBAAU,KACuB,IAA3B2Q,EAAM5E,UAAUziB,QAClB0Y,EAAKjW,UAAUyK,eAAejP,KAAMqX,IAClCu2D,EAAS,CAAEzwD,KAAM,gBAAiBuwD,QAASr2D,EAAIjZ,SAGnDqc,EAAK9J,oBAAoBwB,wBAAwBnS,KAAMqX,IAEd,IAArCoD,EAAKrW,KAAK+R,YAAY5Q,YACe,IAArCkV,EAAKrW,KAAK+R,YAAY5Q,YACe,IAArCkV,EAAKrW,KAAK+R,YAAY5Q,YACe,IAArCkV,EAAKrW,KAAK+R,YAAY5Q,aAEtB8R,EAAIjZ,KAAOiZ,EAAIjZ,KAAKshB,OAAQoF,IAAQA,EAAGyL,WAEzCq9C,EAAS,CACPzwD,KAAM,0BACNuwD,QAASr2D,EAAIjZ,KAAKuqC,KAAK,CAACrK,EAAGsK,IACzBtK,EAAE7oB,YAAcmzB,EAAEnzB,YAAc,GAAK,KAGzCnY,OAAO+Z,IAAMA,EAAIjZ,QAElB,IAEH,MAaMsxE,EAAwBA,CAACplE,EAAG6G,KACpB,cAARA,GAAwB7G,EAAEI,OAAOkO,MAAM7W,OAAS,EAC7C4tE,EAAkBrlE,EAAEI,OAAOkO,MAAOxa,EAAKwwE,WAC1CzxC,EAAQ,IAAK/+B,EAAM,CAAC+S,GAAO7G,EAAEI,OAAOkO,QAGtCukB,EAAQ,IAAK/+B,EAAM,CAAC+S,GAAO7G,EAAEI,OAAOkO,SAmBlC+2D,EAAqBpiD,IACzBhuB,QAAQC,IACN4pB,EAAMmkD,iBAAiBW,eAAexuD,OACnCoF,GAAOA,EAAGqqD,WAAW79B,eAAiB/jB,EAAI+jB,eAC3CvvC,QAMU,GAHZqnB,EAAMmkD,iBAAiBW,eAAexuD,OACnCoF,GACCA,EAAGqqD,WAAW79B,eAAiB/jB,EAAI+jB,eAAiBxsB,EAAGhiB,IAAM1E,EAAK0E,IACpEf,QAEFgtE,GAAoB,GACpBxvE,QAAQC,IAAI,qBAAuBsvE,IAC5B,IAEPC,GAAoB,GACpBxvE,QAAQC,IAAI,qBAAuBsvE,IAC5B,IA2BLc,EAAeA,KACL,UAAd3zD,EAAMkB,MAAkC,UAAdlB,EAAMkB,OAAmB2xD,EAErD,OACEpuE,IAAAoa,cAAA,QACEyzD,YAAU,EACVxvD,aAAa,MACbowB,SA9BkB7kC,IACpBA,EAAEC,iBACSD,EAAEujB,cACQ2gD,mBAELoB,MACK,WAAf3zD,EAAMkB,KACR1C,EAAK9J,oBACFsB,oBAAoB7T,GACpB4B,KAAM6rB,GAAM5P,EAAM4G,QAAQ,aACL,WAAf5G,EAAMkB,KACf1C,EAAK9J,oBACFqB,oBAAoB5T,GACpB4B,KAAM6rB,GAAM5P,EAAM4G,QAAQ,cAE7BtjB,QAAQC,IAAIpB,GACZqc,EAAK9J,oBACFoB,iBAAiB3T,GACjB4B,KAAM6rB,GAAM5P,EAAM4G,QAAQ,iBAa/BniB,IAAAoa,cAACuK,KAAa,CAAClJ,UAAWD,EAAQV,MAChC9a,IAAAoa,cAAC6C,IAAS,CACR7a,GAAG,WACH+b,WAAY,CACVgxD,IAAK,KAEPjoE,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9BmT,aAAclmB,EAAKwwE,SACnBzzD,QAAQ,WACRoC,SAAyB,WAAftB,EAAMkB,KAChB6B,SAAW1U,GAAMolE,EAAsBplE,EAAG,YAC1C6S,KAAK,SACLE,UAAQ,EACRlB,UAAWD,EAAQ8kC,QAGrBtgD,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ6xD,UACnB1wD,UAAQ,GACR3c,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,kBACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLnI,UAAQ,EACRoI,QAAQ,iBACR3iB,GAAG,WACH8V,MAAOxa,EAAK8wE,SACZ3xD,SAAyB,WAAftB,EAAMkB,KAChB6B,SAhHsB1U,IAC9B,IAAIijB,EAAMjjB,EAAEI,OAAOkO,MACnBukB,EAAQ,IAAK/+B,EAAM8wE,SAAU3hD,MA+GrB7sB,IAAAoa,cAAC4K,KAAQ,CAAC9M,WAAO5W,GACftB,IAAAoa,cAAA,UACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAG1BiY,EAAMokD,kBAAkB7nD,IAAKmqD,GAE1BpvE,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAG,MAAA7I,OAAQwwE,EAAU3+D,MACrByH,MAAOk3D,EAAU3+D,MACjBzQ,IAAAoa,cAACkK,KAAO,CAACrQ,MAAOm7D,EAAUv6C,aACxB70B,IAAAoa,cAAA,OAAK8F,MAAO,CAAErM,MAAO,SAAWu7D,EAAUr6D,kBAQtD/U,IAAAoa,cAAC6C,IAAS,CACR7a,GAAG,cACH8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAC9BmT,aAAclmB,EAAK+wE,WACnBh0D,QAAQ,WACRoC,SAAyB,WAAftB,EAAMkB,KAChB6B,SAAW1U,GAAMolE,EAAsBplE,EAAG,cAC1CvM,MAAO6xE,IACP9pB,WACE8pB,IAAiBlvE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAAuB,GAEjEgL,UAAWD,EAAQ8kC,MACnB3jC,UAAQ,IAGV3c,IAAAoa,cAAC6C,IAAS,CACR7a,GAAG,YACH8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAC9BmT,aAAclmB,EAAKgxE,eACnBj0D,QAAQ,WACRgC,KAAK,SACLI,SAAyB,WAAftB,EAAMkB,KAChB6B,SAAW1U,GAAMolE,EAAsBplE,EAAG,kBAC1C6R,UAAWD,EAAQ8kC,QAGrBtgD,IAAAoa,cAACsU,KAAgB,CACfjT,UAAWD,EAAQ8kC,MACnB3xB,QACE3uB,IAAAoa,cAACwU,KAAM,CACL/R,SAAyB,WAAftB,EAAMkB,KAChBjK,MAAM,UACN6W,SAAU3rB,EAAKixE,mBACfrwD,SAtJ0B+wD,KACpC,IAAIC,GAAY5xE,EAAKixE,mBACrBlyC,EAAQ,IAAK/+B,EAAMixE,mBAAoBW,OAuJjCpoE,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAGhCzQ,IAAAoa,cAACsU,KAAgB,CACfjT,UAAWD,EAAQ8kC,MACnB3xB,QACE3uB,IAAAoa,cAACwU,KAAM,CACL/R,SAAyB,WAAftB,EAAMkB,KAChBjK,MAAM,UACN6W,SAAU3rB,EAAKkxE,oBACftwD,SA9J2BixD,KACrC,IAAID,GAAY5xE,EAAKkxE,oBACrBnyC,EAAQ,IAAK/+B,EAAMkxE,oBAAqBU,OA+JlCpoE,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAGhCzQ,IAAAoa,cAACsU,KAAgB,CACfjT,UAAWD,EAAQ8kC,MACnB3xB,QACE3uB,IAAAoa,cAACwU,KAAM,CACL/R,SAAyB,WAAftB,EAAMkB,KAChBjK,MAAM,UACN6W,QAAS3rB,EAAK4wE,YACdhwD,SAtKckxD,KACxB,IAAIF,GAAY5xE,EAAK4wE,YACrB7xC,EAAQ,IAAK/+B,EAAM4wE,YAAagB,OAuK1BpoE,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAGhCzQ,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ6xD,WACnBrtE,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,qBACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,oBACR3iB,GAAG,eACH8V,MAAOxa,EAAKgM,aACZmT,SAAyB,WAAftB,EAAMkB,KAChB6B,SApNoB1U,IAC5B6yB,EAAQ,IAAK/+B,EAAMgM,aAAcE,EAAEI,OAAOkO,UAoNjCwQ,EAAM5E,UAAUmB,IAAKG,GAElBplB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAG,MAAA7I,OAAQwmB,EAAKsP,MAChBxc,MAAOkN,EAAKsP,MACXtP,EAAKnR,UAOf86D,GACC/uE,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ6xD,UACnB1wD,UAAQ,GACR3c,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,kCACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,iCACR3iB,GAAG,mBACH8V,MAAOxa,EAAK6wE,aACZ1xD,SAAyB,WAAftB,EAAMkB,KAChB6B,SAlPkB1U,IAC5B6yB,EAAQ,IAAK/+B,EAAM6wE,aAAc3kE,EAAEI,OAAOkO,UAkP/Bu3D,GAAWxqD,IAAKnV,GAEb9P,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAG,MAAA7I,OAAQkR,GACXoI,MAAOpI,GACNA,OASf9P,IAAAoa,cAACyrB,KAAa,CAACpqB,UAAWD,EAAQO,SAChC/b,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiI,QAAQ,YACR8mC,kBAAgB,EAChBjnC,QAASA,IAAMiB,EAAM4G,WACrBniB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvD,KAAK,SACLjK,MAAM,UACNiI,QAAQ,YACRoC,SAAUqyD,IACV3tB,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM8K,EAAMkB,WCxWxC,MAAM7B,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ,MAAS,OAET,QAAS,CACPgB,OAAQpI,EAAMqI,QAAQ,GACtBuF,aAAc,KAGlBg/B,MAAO,CACLzsC,MAAO,qBAETw5D,UAAW,CACTx5D,MAAO,OAETkI,QAAS,CACPD,OAAQ,qBAsLG4zD,OAlLf,SAAwBn0D,GACtB,MAAMxB,EAAOkI,qBAAWvI,IAClB,MAAEgP,GAAU0kD,KACZ5xD,EAAUZ,MACTld,EAAM++B,GAAWlpB,mBAAS,KAC/B,OAAQgI,EAAMkB,MACZ,IAAK,SAEL,IAAK,SACH,OAAOlB,EAAM7d,KACf,QACE,MAAO,CACLiyE,aAAc,GACdC,sBAAsB,EACtBrB,aAAckB,GAAW,OAmB3BI,EAAiBnyE,IAErB,IAAIoyE,GAAM,EACVpnD,EAAM5c,iBAAiBikE,gBAAgBxhD,QAAS3d,IACzCk/D,GAAOl/D,EAAOxO,KAAO1E,EAAK0E,GAEnB0tE,IACVA,EAAMl/D,EAAOg/D,sBAFbE,EAAMpyE,EAAKkyE,uBAMVE,EAUHv0D,EAAM4G,QAAQ,YATdpI,EAAK9J,oBACFY,qBAAqB,IACjB6X,EAAM5c,iBAAiBikE,gBAAgB,GAC1CH,sBAAsB,IAEvBtwE,KAAM6rB,IACL5P,EAAM4G,QAAQ,eAkDtB,OACEniB,IAAAoa,cAAA,QACEyzD,YAAU,EACVxvD,aAAa,MACbowB,SA/CkB7kC,IACpBA,EAAEC,iBAGF,GAFWD,EAAEujB,cACQ2gD,iBAEnB,GAAmB,WAAfvyD,EAAMkB,KACR1C,EAAK9J,oBACFa,qBAAqBpT,GACrB4B,KAAM6rB,GAAM0kD,EAAcnyE,QACxB,CAEL,GAAIA,EAAKkyE,qBACP,IACE,IAAI/mD,EAAI,EACRA,EAAIH,EAAM5c,iBAAiBikE,gBAAgB1uE,OAC3CwnB,IACA,CACA,MAAMU,EAAOb,EAAM5c,iBAAiBikE,gBAAgBlnD,GAChDU,EAAKnnB,KAAO1E,EAAK0E,IAAMmnB,EAAKqmD,sBAC9B71D,EAAK9J,oBAAoBY,qBAAqB,IACzC0Y,EACHqmD,sBAAsB,IAMX,WAAfr0D,EAAMkB,KACR1C,EAAK9J,oBACFY,qBAAqBnT,GACrB4B,KAAM6rB,GAAM0kD,EAAcnyE,IAE7Bqc,EAAK9J,oBACFU,kBAAkB,IACdjT,EACH8L,WAAYkf,EAAM5c,iBAAiB1J,KAEpC9C,KAAM6rB,GAAM0kD,EAAcnyE,OAWjCsC,IAAAoa,cAACuK,KAAa,CAAClJ,UAAWD,EAAQV,MAChC9a,IAAAoa,cAAC6C,IAAS,CACR7a,GAAG,aACH8E,MAAM,iBACN0c,aAAclmB,EAAKiyE,aACnBl1D,QAAQ,WACRoC,SAAyB,WAAftB,EAAMkB,KAChB6B,SA1F0B1U,IAChC6yB,EAAQ,IAAK/+B,EAAMiyE,aAAc/lE,EAAEI,OAAOkO,SA0FpCiG,WAAY,CAAErB,UAAW,IACzBrB,UAAWD,EAAQ8kC,MACnB3jC,UAAQ,IAGV3c,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ6xD,WACnBrtE,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,kCAAiC,iBAGhDpC,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,iCACR3iB,GAAG,2BACH8V,MAAOxa,EAAK6wE,aACZ1xD,SAAyB,WAAftB,EAAMkB,KAChB6B,SA/GoB1U,IAC5B6yB,EAAQ,IAAK/+B,EAAM6wE,aAAc3kE,EAAEI,OAAOkO,SA+GlCyE,UAAQ,GACP8yD,GAAWxqD,IAAKnV,GAEb9P,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAG,MAAA7I,OAAQkR,GACXoI,MAAOpI,GACNA,MAOX9P,IAAAoa,cAACsU,KAAgB,CACfjT,UAAWD,EAAQ8kC,MACnB3xB,QACE3uB,IAAAoa,cAACwU,KAAM,CACL/R,SAAyB,WAAftB,EAAMkB,KAChBjK,MAAM,UACN6W,QAAS3rB,EAAKkyE,qBACdtxD,SA5H+B1U,IACzC,IAAI0lE,GAAY5xE,EAAKkyE,qBAErBnzC,EAAQ,IAAK/+B,EAAMkyE,qBAAsBN,OA4HnCpoE,MAAM,0BAIVlH,IAAAoa,cAACyrB,KAAa,CAACpqB,UAAWD,EAAQO,SAChC/b,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiI,QAAQ,YACR8mC,kBAAgB,EAChBjnC,QAASA,IAAMiB,EAAM4G,WACrBniB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvD,KAAK,SACLjK,MAAM,UACNiI,QAAQ,YACR8mC,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM8K,EAAMkB,WC1MxC,MAAM7B,GAAYC,YAAW,MAC3B5G,MAAO,CACL6H,OAAQ,kBAuDGk0D,OAnDf,SAAuBz0D,GACrB,MAAMC,EAAUZ,MACTqI,EAAMyZ,GAAW18B,IAAMuT,UAAS,GAEvCwE,oBAAU,KACR2kB,GAAQ,IACP,IAEH,MAAMgJ,EAAeuqC,IACnB10D,EAAMslC,MAAMovB,GACZvzC,GAAQ,IAQV,OACE18B,IAAAoa,cAAA,WACEpa,IAAAoa,cAACqK,KAAM,CACLxB,KAAMA,EACNyB,kBAAgB,oBAChBhI,WAAW,EACXwzD,sBAAoB,GACpBlwE,IAAAoa,cAACurB,KAAW,CACVvjC,GAAG,oBACHqZ,UAAWD,EAAQvH,OAClBsH,EAAMtH,OAEO,aAAfsH,EAAM9K,MACLzQ,IAAAoa,cAACs1D,GAAcxyD,OAAAC,OAAA,CACbgF,QAASujB,GACLnqB,IAEQ,aAAfA,EAAM9K,MACLzQ,IAAAoa,cAACkzD,GAAcpwD,OAAAC,OAAA,CACb0jC,MAxBIA,KACZnkB,GAAQ,GACRnhB,EAAM40D,+BAuBEhuD,QAASujB,GACLnqB,IAEQ,mBAAfA,EAAM9K,MACLzQ,IAAAoa,cAAC+zD,GAAoBjxD,OAAAC,OAAA,CACnBgF,QAASujB,GACLnqB,O,0CC5BhB,MAAMX,GAAYC,YAAYnH,IAAK,CACjC08D,SAAU,CACRlkD,SAAU,EACVpQ,OAAQ,QACRG,QAASvI,EAAMqI,QAAQ,GACvBxJ,WAAY,SAEdwwB,QAAS,CACP,QAAS,CACPjnB,OAAQ,kBAGZymD,SAAU,CACR1uD,MAAO,OACPkL,OAAQ,EACRuc,UAAW,UAEb+0C,UAAW,CACTv0D,OAAQ,aAEVw0D,YAAa,CACXlwC,WAAY,IACZ4P,cAAe,SACfgD,WAAY,UAEd7mB,UAAW,CACTswB,UAAW,sBACXt3B,SAAU,uBAEZwV,YAAa,CACXhc,UAAW,GACX9K,MAAO,OACPsR,SAAU,KAEZorD,UAAW,CACTprD,SAAU,KAEZqrD,WAAY,CACV38D,MAAO,KAET48D,YAAa,CACX,UAAa,mBACb,gBAAmB/8D,EAAM9B,QAAQG,QAAQE,KACzC,MAAS,QACT,OAAU,EACV,8BAA+B,CAC7BwM,gBAAiB/K,EAAM9B,QAAQQ,UAAUH,OAG7Cy+D,mBAAoB,CAClBp1C,UAAW,UAEbq1C,MAAO,CACL3gC,cAAe,SACf/zB,QAAS,EACTgN,OAAQ,WAEV2nD,SAAU,CACR5uB,QAAS,IAEX6uB,SAAU,CACR,SAAY,WACZ,WAAY,CACVn1D,QAAS,KACTX,QAAS,QACT0C,SAAU,WACVsD,OAAQ,EACRsL,KAAM,EACNxY,MAAO,OACPkL,OAAQ,MACR6a,aAAc,iBACd5Y,OAAQ,O,wBC/Fd,MAAMpG,GAAYC,YAAW,MAC3B8f,YAAa,CACXhc,UAAW,IAEbmyD,GAAI,CACFh1D,OAAQ,YAEVugB,EAAG,CACDvgB,OAAQ,MA8DGi1D,OA1Df,SAA4Bx1D,GAC1B,MAAMC,EAAUZ,KAgBhB,OACE5a,IAAAoa,cAAA,OAAK8F,MAAO,CAAErM,MAAO,SACnB7T,IAAAoa,cAAA,MAAIqB,UAAWD,EAAQs1D,IACrB9wE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAEzBzQ,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQ6gB,GACpBr8B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAEzBzQ,IAAAoa,cAAC6C,IAAS,CACRiD,MAAO,CAAEnF,QAAS,eAAgBlH,MAAO,qBACzC6I,WAAS,EACTxE,MAAOqD,EAAMrD,MACbuC,QAAQ,WACR6D,SA3B6BkM,IACjCjP,EAAMy1D,sBAAsBxmD,EAAMxgB,OAAOkO,MAAMof,MAAM,OA2BjD7b,UAAWD,EAAQmf,YACnBpgB,aAAYva,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBACnCwgE,QAAS,EACT/pE,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,0BAEhCzQ,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnF,QAAS,eAAgBe,OAAQ,SAC7C9b,IAAAoa,cAAA,SACEqB,UAAWD,EAAQsG,MACnB5B,MAAO,CAAEnF,QAAS,QAClB3Y,GAAG,eACHgmE,UAAQ,EACR3rD,KAAK,OACL6B,SApCkB1U,IACnBA,EAAEI,OAAOC,MAAM,KAGpBsR,EAAMxB,KAAK9J,oBAAoBM,uBAAuB3G,GAAGtK,KAAMqX,IAC7D4E,EAAMy1D,sBAAsBr6D,EAAIjZ,KAAK45B,MAAM,QAE7C1tB,EAAEI,OAAOkO,MAAQ,OA+BblY,IAAAoa,cAAA,SAAOwC,QAAQ,gBACb5c,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNoN,UAAU,QACV5f,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBC/DnC,MAAMmK,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJgB,OAAQ,eAEVo1D,KAAM,CACJp1D,OAAQpI,EAAMqI,QAAQ,OAkEXo1D,OA9Df,SAAuB51D,GACrB,MAAMC,EAAUZ,MACTw2D,EAAoBC,GAAyB99D,mBAAS,GAEvD+9D,EAAmBA,CAAC70D,EAAM80D,EAAUhoD,KACxC,IAAIioD,EACJ,GAAa,QAAT/0D,EACF+0D,EAAkB,OACb,CACLA,EAAkBt0D,OAAOC,OAAO,GAAI5B,EAAMk2D,gBAC1C,IAAIC,EAAQF,EAAgBD,GAAUvyD,QAAO,SAAU9G,GACrD,OAAOA,IAAUqR,KAEnBioD,EAAgBD,GAAYG,EAE9Bn2D,EAAMo2D,aAAaH,IAcrB,OAXAz5D,oBAAU,KACR,IAAKwD,EAAMk2D,eACT,OAEF,IAAIpnD,EAAQ,EACZ,IAAK,IAAInS,KAASgF,OAAOgpB,OAAO3qB,EAAMk2D,gBACpCpnD,GAASnS,EAAM7W,OAEjBgwE,EAAsBhnD,IACrB,CAAC9O,EAAMk2D,iBAEHl2D,EAAMk2D,eACXzxE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACrBoC,OAAO4gB,KAAKviB,EAAMk2D,gBAAgBxsD,IAAI,CAACssD,EAAU1oD,IAChD7oB,IAAAoa,cAACpa,IAAMie,SAAQ,CAACxW,IAAK,KAAOohB,GACzBtN,EAAMk2D,eAAeF,GAAUlwE,OAAS,GACvCrB,IAAAoa,cAACpa,IAAMie,SAAQ,KACbje,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM8gE,IAAY,KAErCh2D,EAAMk2D,eAAeF,GAAUtsD,IAAI,CAACsE,EAAMkuC,IACzCz3D,IAAAoa,cAAC6/C,KAAI,CACH/yD,MAAOqiB,EACPszB,SAAUA,IAAMy0B,EAAiB,SAAUC,EAAUhoD,GACrD9N,UAAWD,EAAQ01D,KACnBzpE,IAAK,KAAOgwD,QAOvB2Z,EAAqB,GACpBpxE,IAAAoa,cAAC6/C,KAAI,CACH/yD,MAAM,aACN21C,SAAUA,IAAMy0B,EAAiB,OACjC71D,UAAWD,EAAQ01D,KACnB1+D,MAAM,aAIV,M,UC5BSo/D,OAnCf,SAAiBr2D,GACf,MAAO0H,GAAQjjB,IAAMuT,UAAS,GAE9B,OACEvT,IAAAoa,cAAA,WAEI,CACE3a,KACEO,IAAAoa,cAACqK,KAAM,CACLxB,KAAMA,EACNd,QAASA,IAAM5G,EAAMs2D,iBACrBntD,kBAAgB,qBAChBqpB,mBAAiB,4BACjB/tC,IAAAoa,cAACurB,KAAW,CAACvjC,GAAG,sBAAsBmZ,EAAMtH,OAC5CjU,IAAAoa,cAACuK,KAAa,KACZ3kB,IAAAoa,cAAC03D,KAAiB,CAAC1vE,GAAG,4BACnBmZ,EAAM6M,OAGXpoB,IAAAoa,cAACyrB,KAAa,KACZ7lC,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,IAAMiB,EAAMs2D,iBACrBr/D,MAAM,UACNosB,WAAS,GAAC,YAMlBrjB,EAAMkB,QCNhB,MAAM7B,GAAYC,YAAYnH,IAAK,CACjC08D,SAAU,CACRlkD,SAAU,EACVpQ,OAAQ,QACRG,QAASvI,EAAMqI,QAAQ,GACvBxJ,WAAY,SAEdwX,OAAQ,CACNjO,OAAQ,eAEV0mC,GAAI,CACF1mC,OAAQ,eAEVi2D,OAAQ,CACNvyC,YAAa,QAEf+iC,SAAU,CACR1uD,MAAO,OACPkL,OAAQ,EACRuc,UAAW,UAEb4lB,IAAK,CACHplC,OAAQ,aACR+d,SAAU,KAEZm4C,aAAc,CACZj3D,QAAS,QAEX4f,YAAa,CACXhc,UAAW,GACX9K,MAAO,OACPsR,SAAU,KAEZ2rD,GAAI,CACFh1D,OAAQ,YAEVugB,EAAG,CACDvgB,OAAQ,GAEVm2D,iBAAkB,CAChBh2D,QAAS,WACTlB,QAAS,OACTC,eAAgB,gBAElBk3D,YAAa,CACXn3D,QAAS,cACToE,YAAa,GACbqF,SAAU,GACVhS,MAAO4pC,MAETk0B,YAAa,CACXlwC,WAAY,IACZ4P,cAAe,SACfgD,WAAY,UAEd+V,UAAW,CACT/V,WAAY,SACZ/N,SAAU,aAMRktC,GAAY,CAChBC,WAAY,CACVlyD,MAAO,CACLu8B,UAAW41B,IACXx+D,MAAO,MAGX4G,QAAS,OACT63D,mBAAoB,MCxFtB,MAAMn0E,GAAU,CACd,CACE+I,MAAO,cACPuJ,KAAM,cACNgM,KAAM,aAER,CACEvV,MAAO,OACPuJ,KAAM,OACNgM,KAAM,WAER,CACEvV,MAAO,cACPuJ,KAAM,cACNgM,KAAM,aAER,CACEvV,MAAO,gBACPuJ,KAAM,WACNgM,KAAM,WACNI,UAAU,GAEZ,CACE3V,MAAO,gBACPuJ,KAAM,gBACNgM,KAAM,WACNI,UAAU,IAuHd,MAAM4mD,GAAM5pD,IAA8B,IAA7B,UAAE04D,EAAS,SAAEC,GAAU34D,EAClC,MAAOiP,EAAQC,GAAaxV,oBAAS,GAErC,OACEvT,IAAAoa,cAAC0P,KAAQ,CACPriB,IAAK8qE,EAAUnwE,GACfqwE,GAAI,CAAE,mCAAoC,CAAExyC,OAAQ,KACpDjgC,IAAAoa,cAAC4O,KAAS,CACR9I,MAAO,CAAE+I,OAAQ,UAAWzW,MAAOsW,EAAS,OAAS,UACrD9oB,IAAAoa,cAAC8O,KAAQ,CAAC5O,QAASA,IAAMyO,GAAWD,MAErC3qB,GAAQ8mB,IAAK8E,GACZ/pB,IAAAoa,cAAC4O,KAAS,CAAEvhB,IAAKsiB,EAAOtZ,MAAO+hE,EAASzoD,EAAQwoD,EAAWzpD,EAAQC,OCxKrEjO,GAAO,oBAEPkqD,GAAS,CACb,CACE5iE,GAAI,SACJkyB,KAAMxZ,GACN8E,UFgGJ,WACE,MAAMpE,EAAUZ,KACVb,EAAOkI,qBAAWvI,IAClB,WAAE7B,GAAekC,EAAKpC,YAErB+6D,EAAaC,GAAkBp/D,oBAAS,IACxCq5D,EAAWgG,GAAgBr/D,mBAAS,KACpCs/D,EAAiBC,GAAuBv/D,mBAAS,KACjDw/D,EAAeC,GAAoBz/D,sBACnC0/D,EAAYC,GAAiB3/D,oBAAS,IAAIkjB,MAAO6nC,gBAEjDt3B,EAAqBC,GAA0B1zB,mBAAS,KACxDizB,EAAWC,GAAgBlzB,mBAAS,KAEpC4/D,EAAgBC,GAAqB7/D,mBAAS,KAE9C4S,EAASC,GAAc7S,oBAAS,IAChC6yB,EAASC,GAAc9yB,oBAAS,IAChC7N,EAAYomC,GAAiBv4B,mBAAS,IACtC8/D,EAAcC,GAAmB//D,oBAAS,IAC1CyyD,EAAsBuN,GAA2BhgE,mBAAS,GAE3DigE,EAAWvzE,oBAEV2pB,EAAO6pD,GAAYlgE,mBAAS,CACjCpV,QAAS,GACTkoB,KAAM,KAGR,SAASpX,EAAoBif,GAC3BnU,EAAKjW,UAAUmL,sBAAsB3P,KAAMqX,IACzC,MAAM+8D,EAAqB/8D,EAAIjZ,KAC5BshB,OAAQoF,GAAOrK,EAAKrW,KAAK+R,YAAY4Y,iBAAiBC,SAASlK,EAAGhiB,KAClE6iB,IAAKb,GAAOA,EAAG9U,WAElB,IAAIqkE,EAAgB,IAAIxrC,IAAoBnB,oBAAqB9Y,GACjEnU,EAAK9J,oBACFE,cAAcwjE,GACdr0E,KAAMqX,IACL8vB,EAAa9vB,EAAIjZ,KAAKwwB,OAAOlP,OAAQoF,GAAOsvD,EAAmBvvD,KAAMyvD,GAAQA,GAAOxvD,EAAG3T,YAK/FsH,oBAAU,KACHgC,EAAKrW,KAAKoI,iBAAiB3F,WAahC4T,EAAK9J,oBACFC,qBAAqB6J,EAAKrW,KAAKoI,iBAAiB3F,WAChD7G,KAAMqX,IACDA,EAAIjZ,KAAK2D,OAAS,GACpBuxE,EAAaj8D,EAAIjZ,MACjBo1E,EAAoBn8D,EAAIjZ,KAAK,IAbjCqc,EAAKjW,UACFc,6BAA6BmV,EAAKrW,KAAK+R,YAAY5Q,YACnDvF,KAAMqX,IACLq8D,EAAiBr8D,EAAIjZ,MACrBuR,EAAoB,OAapB0jE,GAAe,MAGpB,CAAC54D,EAAKrW,KAAKoI,iBAAiB3F,YAE/B,MAiCM++C,EAAYA,CAACz0C,EAAMyH,SAES5W,IAA9B0lC,EAAoBv2B,KAC0B,IAA9Cu2B,EAAoBv2B,GAAM0sB,QAAQjlB,GA8BhCiwB,EAAmBA,KAChB,CACL3+B,WAAYuQ,EAAKrW,KAAKoI,iBAAiB3F,UACvCpD,OAAQgX,EAAKrW,KAAKX,OAClB2G,aAAcqQ,EAAKrW,KAAKgG,aACxB2e,SAAU,IACV3iB,WAAY,EACZmpE,WAAYgE,EAAgBzwE,GAC5ByxE,0BAA2BV,EAC3BvqC,qBAAqB,EACrBpB,YAAa,UACbR,oBAAqBA,EACrBisC,WAAYA,IAIVtrD,EAAS,WAAmC,IAAlC+N,EAAOt0B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG+mC,IACxB/hB,GAAW,GAEXrM,EAAK9J,oBACFE,cAAculB,GACdp2B,KAAMqX,IACL0vB,EAAW1vB,EAAIjZ,KAAKgI,YAAciR,EAAIjZ,KAAKo2E,YAC3ChoC,EAAcn1B,EAAIjZ,KAAKgI,YACvB6tE,EAAwB58D,EAAIjZ,KAAKsoE,sBAE7BrvD,EAAIjZ,KAAKgI,WAAa,EACxB+tE,EAAS,IACJ7pD,EACHvD,KAAM,IAAIuD,EAAMvD,QAAS1P,EAAIjZ,KAAKq2E,eAAe1tD,QAGnDotD,EAAS,IAAK98D,EAAIjZ,KAAKq2E,iBAGzBh6D,EAAKjW,UAAUmL,sBAAsB3P,KAAM00E,IACzC,MAAMN,EAAqBM,EAAKt2E,KAC7BshB,OAAQoF,GAAOrK,EAAKrW,KAAK+R,YAAY4Y,iBAAiBC,SAASlK,EAAGhiB,KAClE6iB,IAAKb,GAAOA,EAAG9U,WAElBm3B,EAAa9vB,EAAIjZ,KAAKwwB,OAAOlP,OAAQoF,GAAOsvD,EAAmBvvD,KAAMyvD,GAAQA,GAAOxvD,EAAG3T,UAGzF2V,GAAW,KAEZ1mB,MAAOkK,IACN/K,QAAQC,IAAI,UAAW8K,EAAEgN,eAIzBq9D,EAAcA,KACdT,EAAStzE,SACXszE,EAAStzE,QAAQioB,SAAS,EAAG,IA6FjC,OACEnoB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ40D,UACtBpwE,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJ8W,GAAI,EACJkkB,GAAI,EACJqO,GAAI,KACD8Z,EAAUvrE,QACXrB,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CACLvB,UAAW,GACX9K,MAAO,OACPsR,SAAU,MAEZnlB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,kBACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,iBACR3iB,GAAG,mBACH8V,MAAO26D,EACPv0D,SA9OgB1U,IAC5BkpE,EAAoBlpE,EAAEI,OAAOkO,OAE7ByP,EAAO,IACFwgB,IACH0mC,WAAYjlE,EAAEI,OAAOkO,MAAM9V,MA0OjBqO,KAAK,iBACLgK,QAAQ,WACRy5D,aAAcl0E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBACpCm8D,EAAU3nD,IAAKyU,GAEZ15B,IAAAoa,cAAC4K,KAAQ,CACP9M,MAAOwhB,EACPjyB,IAAKiyB,EAASt3B,IACbs3B,EAASjpB,UAQvBoH,GAEC,gBADFkC,EAAKpC,WAAWK,SAAS,2BAA2B44B,cAElD5wC,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,GACJ8W,GAAI,EACJkkB,GAAI,EACJqO,GAAI,GACJ9yD,IAAAoa,cAAA,KAAG8F,MAAO,CAAE1N,MAAO,QACjBxS,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,8BAI3BzQ,IAAAoa,cAAApa,IAAAie,SAAA,OAIJje,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,IACJxpB,IAAAoa,cAAA,MAAIqB,UAAWD,EAAQs1D,IACrB9wE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAG1B+1B,EAAUvhB,IAAKwJ,GACdzuB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,EACJ8W,GAAI,EACJkkB,GAAI,EACJqO,GAAI,EACJrrD,IAAKgnB,EAAMhe,MACXzQ,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQmf,aACnB36B,IAAAoa,cAACyK,KAAU,CAACziB,GAAIqsB,EAAMhe,KAAO,mBAC3BzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMge,EAAMhe,QAEhCzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAS0J,EAAMhe,KAAO,kBACtBrO,GAAIqsB,EAAMhe,KAAO,YACjB23D,UAAQ,EACRlwD,MAAOuW,EAAMujC,YACbmiB,YAAaA,KACX,MAAMC,EAAmBptC,EAAoBvY,EAAMhe,MAC/Cu2B,EAAoBvY,EAAMhe,MAAMpP,OAChC,EACJ,OACErB,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMge,EAAMhe,OAAS,MACpC2jE,GAAgB,IAAAx1E,OAAQw1E,EAAgB,OAIjDjC,UAAWA,GACX1hE,KAAMge,EAAMhe,MACZzQ,IAAAoa,cAAA,OACEqB,UAAWD,EAAQy2D,iBACnBxqE,IAAKgnB,EAAMhe,KAAO,MAClByH,MAAO,IACPlY,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IAxTfhL,KAChB,MAAM+kE,EAAQ7tC,EACXriB,KAAMC,GAAOA,EAAG3T,MAAQnB,GACxB0iD,YAAY/sC,IAAKb,GAAOA,EAAGhiB,IAExBqvE,EAAiB,IAClBzqC,EACH,CAAC13B,GAAY+kE,GAGfptC,EAAuBwqC,GACvBxiE,EAAoBwiE,IA6SiB6C,CAAS7lD,EAAMhe,OACpCzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAEzBzQ,IAAAoa,cAAC4F,IAAM,CAAC1F,QAASA,IA7SdhL,KACjB,MAAMmiE,EAAiB,IAClBzqC,EACH,CAAC13B,GAAY,IAGf23B,EAAuBwqC,GACvBxiE,EAAoBwiE,IAsSiB8C,CAAU9lD,EAAMhe,OACrCzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAhRXge,IACT,eAAfA,EAAMhe,KACDge,EAAMujC,YAAY/pB,KAAK,CAACrK,EAAGsK,IAChCrgB,SAAS+V,EAAEntB,MAAQoX,SAASqgB,EAAEz3B,OAAS,EAAI,GAGxCge,EAAMujC,YA6QAwiB,CAAqB/lD,GAAOxJ,IAAKqkB,GAChCtpC,IAAAoa,cAAC4K,KAAQ,CACP1K,QAASA,IAlSDm6D,EAAChmD,EAAO6a,KAChC,MAAMorC,EAAmB,IAAK1tC,GACxB2tC,EAAwBD,EAAiBjmD,EAAMhe,OAAS,GAC9DikE,EAAiBjmD,EAAMhe,MAAQy0C,EAAUz2B,EAAMhe,KAAM64B,EAAWlnC,IAC5DuyE,EAAsB31D,OAAQoF,GAAOA,IAAOklB,EAAWlnC,IACvDuyE,EAAsB/1E,OAAO0qC,EAAWlnC,IAG5C6kC,EAAuBytC,GAEvBzlE,EAAoBylE,IAwRWD,CAAkBhmD,EAAO6a,GACxC7hC,IAAK6hC,EAAW74B,KAChByH,MAAOoxB,EAAW74B,MAClBzQ,IAAAoa,cAACgP,KAAQ,CAACC,QAAS67B,EAAUz2B,EAAMhe,KAAM64B,EAAWlnC,MACpDpC,IAAAoa,cAAC6R,KAAY,CACXla,QAAO,GAAAnT,OAAK0qC,EAAW74B,KAAI,MAAA7R,OAAK0qC,EAAWjf,MAAK,aAS9DrqB,IAAAoa,cAAC22D,GAAkB,CACjB7wD,MAAO,CAAEnF,QAAS,gBAClBi2D,sBA5R2BmC,IACjCC,EAAkBD,IA4RZj7D,MAAOi7D,EAAev8D,WACtBmD,KAAMA,IAGR/Z,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRyF,MAAO,CACLvB,UAAW,GACX9K,MAAO,OACPsR,SAAU,MAEZnlB,IAAAoa,cAACob,GAAU,CACTqwB,aAAW,EACXxI,QAAS01B,EACT51B,QAAM,EACNj2C,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAC9Bm1C,aAAa,WACb1tC,MAAO+6D,EACP31D,WAAY,CAAE6b,UAAU,GACxB7a,SApPgB4Y,IACxBg8C,EAAch8C,EAAKonC,eACnB2V,IAEAtsD,EAAO,IACFwgB,IACH8qC,WAAY/7C,EAAKonC,oBAkPft+D,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,IACJxpB,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN+uC,kBAAgB,EAChBjnC,QA3OgBs6D,KACxBX,IACAtsD,KA0OQlM,UAAWD,EAAQ0lC,KACnBlhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAEzBzQ,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN+uC,kBAAgB,EAChBjnC,QA9OUu6D,KAClB5tC,EAAuB,IACvBmsC,EAAkB,IAElBa,IAEAR,EAAS,CACPt1E,QAAS,GACTkoB,KAAM,KAGRtM,EAAKjW,UAAUmL,sBAAsB3P,KAAMqX,IACzC,MAAM+8D,EAAqB/8D,EAAIjZ,KAC5BshB,OAAQoF,GAAOrK,EAAKrW,KAAK+R,YAAY4Y,iBAAiBC,SAASlK,EAAGhiB,KAClE6iB,IAAKb,GAAOA,EAAG9U,WAClByK,EAAK9J,oBACFE,cAAc,IACVg4B,IACHnB,oBAAqB,GACrB6sC,0BAA2B,KAE5Bv0E,KAAMqX,IACL8vB,EAAa9vB,EAAIjZ,KAAKwwB,OAAOlP,OAAQoF,GAAOsvD,EAAmBvvD,KAAMyvD,GAAQA,GAAOxvD,EAAG3T,aAyNrFyP,MAAO,CAAEkT,WAAY,IACrB3X,UAAWD,EAAQ0lC,KACnBlhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAK3BzQ,IAAAoa,cAAC+2D,GAAa,CACZM,eAAgBzqC,EAChB2qC,aAvQkBH,IACxBvqC,EAAuBuqC,GACvByC,IAEAtsD,EAAO,IACFwgB,IACHnB,oBAAqBwqC,OAoQlBrrD,GACCnmB,IAAAoa,cAACuB,IAAc,CACbF,UAAWD,EAAQ+mD,SACnB/vD,MAAM,YAIToX,EAAMvD,KAAKhlB,OAAS,GACnBrB,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,IACJxpB,IAAAoa,cAAComB,KAAI,CAAC/lB,QAAQ,YACZza,IAAAoa,cAAC06D,KAAU,CACT7gE,MACEjU,IAAAoa,cAAA,YACG4rD,EAAsB,IACvBhmE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAG3B0J,OACEna,IAAAoa,cAAA,WACGwyD,EAAUvrE,OAAS,GAAKuoB,EAAMvD,KAAKhlB,OAAS,GAC3CrB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4F,IAAM,CACL1F,QAASA,KAxPL/D,MAyPF+8D,GAAgB,GAzPd/8D,EA0PiB,IAAM+8D,GAAgB,GAzPjEyB,MAAMC,EAAK/3E,QAAU,iCAAkC,CACrDg4E,OAAQ,OACR92E,QAAS,CACP,cAAiB,UAAYO,aAAaC,QAAQ,eAClD,eAAgB,kCAElB+sD,KAAMxoD,KAAKC,UAAU,IAChBglC,IACH9f,SAAU,IACV9d,KAAM,MAGPjL,KAAMqX,GAAQA,EAAIu+D,QAClB51E,KAAM5B,IACL,MAAMkgC,EAAIpkB,SAASY,cAAc,KACjCwjB,EAAElgB,KAAO9gB,OAAOq+B,IAAIC,gBAAgBx9B,GACpCkgC,EAAEu3C,SAAW,gBACbv3C,EAAEgwB,QACFhwB,EAAEhrB,WAEHoE,QAAQ,IAAMT,MAuOKkE,QAAQ,YACRjI,MAAM,UACN+uC,kBAAgB,EAChB1kC,SAAUw2D,GACTA,EACCrzE,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBACvBzQ,IAAAoa,cAAC0D,KAAgB,CAACoC,MAAO,CAAEkT,WAAY,OAGzCpzB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAOrCzQ,IAAAoa,cAACg7D,KAAW,KACVp1E,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC2d,KAAc,CACb7X,MAAO,CACL+kB,SAAU,OACV9f,SAAU,OACVs3B,UAAW,uBAEbuI,IAAKwuB,GACLxzE,IAAAoa,cAAC0wB,KAAc,CACbD,UAAW,EACXE,SAhQDsqC,KACjB,GAAIlvD,IAAYigB,EACd,OAGF,IAAI1Q,EAAU,IACTyS,IACHziC,WAAYA,EAAa,GAG3BiiB,EAAO+N,IAuPW0Q,QAASA,EACT4E,UAAW,IACXC,aAAa,EACbyB,WAAW,GACX1sC,IAAAoa,cAACuP,KAAK,CACJyrC,cAAY,EACZr3C,KAAK,SACL/d,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACNF,EAAMzrB,QAAQ8mB,IAAI,CAACq7B,EAAO/6B,IACzBvlB,IAAAoa,cAAC4O,KAAS,CACRvN,UAAWD,EAAQ80D,YACnB7oE,IAAG,KAAA7I,OAAO2mB,EAAK,KAAA3mB,OAAI0hD,EAAMl4B,OACzBpoB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAM6vC,EAAMl4B,WAKtCpoB,IAAAoa,cAAC4P,KAAS,KACPJ,EAAMvD,KAAKpB,IAAI,CAACgF,EAAKqrD,IACpBt1E,IAAAoa,cAAC0P,KAAQ,CAACriB,IAAG,KAAA7I,OAAOqrB,EAAIsrD,MAAK,KAAA32E,OAAI02E,IAC9BrrD,EAAIurD,UAAUvwD,IAAI,CAACq7B,EAAO/6B,IACzBvlB,IAAAoa,cAAC4O,KAAS,CACRvN,UAAWD,EAAQutC,UACnB7oC,MAAO,CAAEiF,SAAU,KACnB1d,IAAG,KAAA7I,OAAOqrB,EAAIsrD,MAAK,KAAA32E,OAAI2mB,IACtB+6B,EAAMpoC,kBAehCw6D,GACC1yE,IAAAoa,cAACw3D,GAAO,CACNn1D,KAAK,OACL2L,KAAMpoB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAC7BwD,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAC9BohE,eAAiBjoE,GAAM+oE,GAAe,QE5pB9C1N,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,YACJkyB,KAAMxZ,GAAO,aACb8E,UNwFW,WAAyB,IAAD61D,EAAAC,EACrC,MAAM37D,EAAOkI,qBAAWvI,IAClB,MAAEgP,EAAK,SAAEwkD,GAAaE,MACrBjnD,EAASC,GAAc7S,oBAAS,GACjCiI,EAAUZ,MACTuqB,EAAQwwC,GAAapiE,mBAAS,CACnCU,MAAO,GACPxD,KAAM,GACNgM,KAAM,GACN/e,KAAM,KAGRqa,oBAAU,KACR,MAAM69D,EAAap8D,SAASq8D,iBAAiB,SAC7C,IAAKD,EACH,OAEF,MAAME,EAAgB3qD,IACpBA,EAAE4qD,UAAUpjE,IAAI6I,EAAQo1D,WAGpBC,EAAWA,CAACjnE,EAAGqgB,KACnBrgB,EAAEC,iBACF+rE,EAAWrnD,QAASnK,IAClBA,EAAG2xD,UAAUnjE,OAAO4I,EAAQq1D,YAE9B5mD,EAAI8rD,UAAUpjE,IAAI6I,EAAQq1D,WAGtBmF,EAAW/rD,IAAS,IAADgsD,EAAAC,EACvB,MAAMC,EACkC,QAD1BF,EAAGz8D,SACdivB,cAAc,IAAD7pC,OAAK4c,EAAQo1D,kBAAW,IAAAqF,OAAA,EADvBA,EAEb7zE,GAAGk1B,MAAM,KAAK,GACZ8+C,EACkC,QAD5BF,EAAG18D,SACZivB,cAAc,IAAD7pC,OAAK4c,EAAQq1D,kBAAW,IAAAqF,OAAA,EADzBA,EAEX9zE,GAAGk1B,MAAM,KAAK,GAClBrN,EAAI8rD,UAAUnjE,OAAO4I,EAAQo1D,UAC7BgF,EAAWrnD,QAAStE,GAAQA,EAAI8rD,UAAUnjE,OAAO4I,EAAQq1D,WAEzD,MAAMvwB,EAAQ53B,EAAMmkD,iBAAiBW,eAAe2I,GACpDE,EAA6B,IACxB/1B,EACH4tB,SAAU/tB,OAAOi2B,GAAU,KAa/B,OATAR,EAAWrnD,QAAStE,IAClBA,EAAIpR,iBAAiB,UAAW,IAAMm9D,EAAQ/rD,MAEhD2rD,EAAWrnD,QAAStE,IAClBA,EAAIpR,iBAAiB,YAAa,IAAMi9D,EAAa7rD,MAEvD2rD,EAAWrnD,QAAStE,IAClBA,EAAIpR,iBAAiB,WAAajP,GAAMinE,EAASjnE,EAAGqgB,MAE/C,KACL2rD,EAAWrnD,QAAStE,IAClBA,EAAI4nC,oBAAoB,UAAW,IAAMmkB,EAAQ/rD,MAEnD2rD,EAAWrnD,QAAStE,IAClBA,EAAI4nC,oBAAoB,YAAa,IAAMikB,EAAa7rD,MAE1D2rD,EAAWrnD,QAAStE,IAClBA,EAAI4nC,oBAAoB,WAAajoD,GAAMinE,EAASjnE,EAAGqgB,QAG1D,CAACvB,IAEJ,MAAM4tD,EAA2C,QAAzBb,EAAG/sD,EAAMmkD,wBAAgB,IAAA4I,OAAA,EAAtBA,EAAwBtkE,SAE7ColE,EADkBx8D,EAAKrW,KAAK+R,YAAYqZ,qBACVwnD,EAEpCv+D,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,WAC7B4T,EAAK9J,oBACFC,qBAAqB6J,EAAKrW,KAAKoI,iBAAiB3F,WAChD7G,KAAMqX,IACDA,EAAIjZ,KAAK2D,OAAS,IACpB6rE,EAAS,CAAEzwD,KAAM,gBAAiBuwD,QAASr2D,EAAIjZ,OAC/CwvE,EAAS,CAAEzwD,KAAM,eAAgBuwD,QAASr2D,EAAIjZ,KAAK,SAI1D,CAACqc,EAAKrW,KAAKoI,iBAAiB3F,YAE/B,MAyEMqwE,EAAoBA,CAACl2B,EAAOrtB,KAChC,GACgB,MAAbA,GAAqBqtB,EAAM4tB,UAAY,GAC1B,QAAbj7C,GACCqtB,EAAM4tB,UAAYxlD,EAAMmkD,iBAAiBW,eAAensE,OAE1D,OAEF,MAAMo1E,EAA6B,MAAbxjD,EACtBojD,EAA6B,IACxB/1B,EACH4tB,SAAU5tB,EAAM4tB,UAAYuI,GAAiB,EAAI,MAI/CJ,EAAgC/1B,IACpCl6B,GAAW,GACXrM,EAAK9J,oBAAoBqB,oBAAoBgvC,GAAOhhD,KAAK,KACvDo3E,EAAY,YACZtwD,GAAW,MAQTswD,EAAe5sC,IACnB/vB,EAAK9J,oBACFC,qBAAqB6J,EAAKrW,KAAKoI,iBAAiB3F,WAChD7G,KAAMqX,IACLu2D,EAAS,CAAEzwD,KAAM,gBAAiBuwD,QAASr2D,EAAIjZ,OAC/C,IAAImvE,EAAmBl2D,EAAIjZ,KAAKshB,OAC7B2U,GAAMA,EAAEvxB,KAAOsmB,EAAMmkD,iBAAiBzqE,IAEzC8qE,EAAS,CAAEzwD,KAAM,eAAgBuwD,QAASH,EAAiB,IAAM,OAErE8I,EAAU,CAAE1hE,MAAO,GAAIxD,KAAM,GAAIgM,KAAM,GAAI/e,KAAM,MAGnD,OACEsC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ40D,UACtBpwE,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,IACJxpB,IAAAoa,cAAC06D,KAAU,CACT7gE,MAAO8F,EAAKrW,KAAKoI,iBAAiB+D,YAClCsK,OACEna,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACtB/iC,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAAU1Q,IAzHxB+rE,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAC9BA,KAAM,WACNgM,KAAM,SACN/e,KAAM,CACJiwE,aAAcjlD,EAAMmkD,qBAqHVpyD,QAAQ,YACR8mC,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAM/BzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACT/b,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJC,GAAI,EACJ8W,GAAI,EACJkkB,GAAI,EACJkyB,GAAI,GACJ32E,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQmf,aACnB36B,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,kCACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,iCACR3iB,GAAG,yBACH8V,MAAOwQ,EAAMmkD,iBACbvuD,SAAW1U,IA3JzBsjE,EAAS,CAAEzwD,KAAM,eAAgBuwD,QA2JmBpjE,EA3JJI,OAAOkO,SA4JzCzH,KAAK,gBACJiY,EAAMkkD,UAAU3nD,IAAKyU,GAElB15B,IAAAoa,cAAC4K,KAAQ,CACP9M,MAAOwhB,EACPjyB,IAAKiyB,EAASt3B,IACbs3B,EAASjpB,aAW3BiY,EAAMvC,SAAWA,EAChBnmB,IAAAoa,cAACuB,IAAc,CACbF,UAAWD,EAAQ+mD,SACnB/vD,MAAM,YAGRxS,IAAAoa,cAAA,OAAK8F,MAAO,CAAEnB,OAAQ,UAID,QAAtB22D,EAAAhtD,EAAMmkD,wBAAgB,IAAA6I,OAAA,EAAtBA,EAAwBjlE,OACvBzQ,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACTpQ,QAAS,GACT/b,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACNiJ,UAAWD,EAAQ60D,UACnBliC,UAAWnuC,IAAAoa,cAAC8G,KAAO,MACnB5G,QAnJqBs8D,KAC7BjB,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BA,KAAM,iBACNgM,KAAM,SACN/e,KAAM,CAAEmxE,WAAYnmD,EAAMmkD,iBAAiBzqE,QA+IrCpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAGzBzQ,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,IACJxpB,IAAAoa,cAAC06D,KAAU,CACT7gE,MAAOyU,EAAMmkD,iBAAiBp8D,KAC9B0J,OACEna,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACrBwzC,GACCv2E,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAAU1Q,IA9L5B+rE,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BA,KAAM,WACNgM,KAAM,SACN/e,KAAMgrB,EAAMmkD,oBA2LIpyD,QAAQ,YACR8mC,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAG3BzQ,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QArLKu8D,KACrBlB,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BA,KAAM,WACNgM,KAAM,OACN/e,KAAM,CACJiwE,aAAcjlD,EAAMmkD,qBAgLRpyD,QAAQ,YACR8mC,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAExB8lE,GACCv2E,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAAU1Q,IArM5B+rE,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAC9BA,KAAM,WACNgM,KAAM,SACN/e,KAAMgrB,EAAMmkD,oBAkMIpyD,QAAQ,YACR8mC,kBAAgB,GAChBvhD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAKjCzQ,IAAAoa,cAAC2d,KAAc,KACb/3B,IAAAoa,cAACuP,KAAK,CACJyrC,cAAY,EACZr3C,KAAK,QACLtC,UAAWiN,EAAMvC,QAAU,iBAAmB,IAC9CnmB,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAC4O,KAAS,CAACvN,UAAWD,EAAQ80D,aAC5BtwE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEzBzQ,IAAAoa,cAAC4O,KAAS,CACRvN,UAAS,GAAA7c,OAAK4c,EAAQ80D,YAAW,MAAA1xE,OAAK4c,EAAQg1D,gBAGpDxwE,IAAAoa,cAAC4P,KAAS,MACNtB,EAAMmkD,iBAAiBW,gBAAkB,IACxCvlC,KAAK,CAACrK,EAAGsK,IAAMtK,EAAEswC,SAAWhmC,EAAEgmC,UAC9BjpD,IAAI,CAACq7B,EAAO/6B,IAETvlB,IAAAoa,cAAC0P,KAAQ,CACPuY,UAAU,OACV5mB,UAAU,OACVrZ,GAAI,QAAUmjB,EACd9d,IAAG,GAAA7I,OAAKgpD,KAAKgb,SAAQ,KAAAhkE,OAAI0hD,EAAMl+C,GAAKk+C,EAAM4tB,WAC1CluE,IAAAoa,cAAC4O,KAAS,CAAC9I,MAAO,CAAE2Z,SAAU,MAC3B08C,GACCv2E,IAAAoa,cAAC08D,KAAO,CACNx8D,QAASA,IAAMk8D,EAAkBl2B,EAAO,MACxC7kC,UAAWD,EAAQm1D,QAGvB3wE,IAAAoa,cAAC6C,IAAS,CACRJ,UAAW05D,EACX3yD,aAAc08B,EAAM4tB,SACpBhuD,MAAO,CAAErM,MAAO,GAAIkH,QAAS,gBAC7BoD,WAAY,CACV+B,MAAO,CAAEob,UAAW,WAEtBhe,WAAY,CACVmgC,kBAAkB,GAEpBre,OAASx1B,IACHA,EAAEI,OAAOkO,MAAQ,EACnBm+D,EAA6B,IACxB/1B,EACH4tB,SAAUtkE,EAAEI,OAAOkO,QAGrBtO,EAAEI,OAAOkO,MAAQooC,EAAM4tB,YAI5BqI,GACCv2E,IAAAoa,cAAC28D,KAAS,CACRz8D,QAASA,IAAMk8D,EAAkBl2B,EAAO,QACxC7kC,UAAWD,EAAQm1D,SAIzB3wE,IAAAoa,cAAC4O,KAAS,KAAEs3B,EAAMvrC,aAClB/U,IAAAoa,cAAC4O,KAAS,KAAEs3B,EAAMmuB,YAClBzuE,IAAAoa,cAAC4O,KAAS,KAAEs3B,EAAMouB,gBAClB1uE,IAAAoa,cAAC4O,KAAS,KACPs3B,EAAMquB,mBACL3uE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,OAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAG3BzQ,IAAAoa,cAAC4O,KAAS,KACPs3B,EAAMsuB,oBACL5uE,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,OAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,SAG3BzQ,IAAAoa,cAAC4O,KAAS,KAAEs3B,EAAM52C,cAClB1J,IAAAoa,cAAC4O,KAAS,KAAEs3B,EAAMiuB,cAClBvuE,IAAAoa,cAAC4O,KAAS,KACPutD,GACCv2E,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACC,IAAU,CACTE,aAAW,SACXD,QAAU1Q,GAxRZ2b,KAC5BowD,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAC9BA,KAAM,iBACNgM,KAAM,SACN/e,KAAM,IAAKgrB,EAAMmkD,iBAAiBW,eAAejoD,GAAQA,YAmRbyxD,CAAqBzxD,IACrCvlB,IAAAoa,cAAC8O,KAAQ,OAEXlpB,IAAAoa,cAACC,IAAU,CACTE,aAAW,SACXD,QAAU1Q,GApRV2b,KAC9BowD,EAAU,CACR1hE,MAAOjU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BA,KAAM,iBACNgM,KAAM,SACN/e,KAAM,IAAKgrB,EAAMmkD,iBAAiBW,eAAejoD,GAAQA,YAgR3B0xD,CAAuB1xD,IAEzBvlB,IAAAoa,cAACokC,KAAU,gBAgBtB,KAAhBrZ,EAAO10B,MACNzQ,IAAAoa,cAAC41D,GAAa,CACZnvB,MAAO61B,EACPvG,4BA1Q4BA,KAClCwF,EAAU,CAAE1hE,MAAO,GAAIxD,KAAM,GAAIgM,KAAM,GAAI/e,KAAM,MA0Q3C+S,KAAM00B,EAAO10B,KACbwD,MAAOkxB,EAAOlxB,MACdvW,KAAMynC,EAAOznC,KACb+e,KAAM0oB,EAAO1oB,SM1hBnBwoD,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,OACJkyB,KAAMxZ,GAAO,QACb8E,UAAWuhB,GACX8jC,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,aACJkyB,KAAMxZ,GAAO,cACb8E,UDcW,WACb,MAAM7F,EAAOkI,qBAAWvI,IACjBw9D,EAAYC,GAAiB5jE,qBAE9Bi/D,EAAWA,CAACzoD,EAAQwoD,EAAWzpD,EAAQC,IACvB,cAAhBgB,EAAOtN,KACFqM,EACL9oB,IAAAoa,cAAC6C,IAAS,CACRmiB,OAASx1B,IACPwtE,EAAcxtE,EAAEI,OAAOkO,MAAO6R,EAAOtZ,KAAM8hE,GAC3CxpD,GAAU,IAEZ7I,MAAO,CAAErM,MAAuB,gBAAhBkW,EAAOtZ,KAAyB,IAAM,KACtDiM,WAAS,EACTkH,aAAc2uD,EAAUxoD,EAAOtZ,QAEjCzQ,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAErM,MAAuB,gBAAhBkW,EAAOtZ,KAAyB,IAAM,MACrD8hE,EAAUxoD,EAAOtZ,OAKJ,YAAhBsZ,EAAOtN,KACFzc,IAAAoa,cAACuF,IAAU,CAAClD,KAAK,aAAa81D,EAAUxoD,EAAOtZ,OAGpC,aAAhBsZ,EAAOtN,KACFqM,EACL9oB,IAAAoa,cAACgP,KAAQ,CACPvM,SAAUkN,EAAOlN,SACjBrK,MAAM,UACN6W,QAASkpD,EAAUxoD,EAAOtZ,MAC1B6N,SAAW1U,IACTwtE,GAAe7E,EAAUxoD,EAAOtZ,MAAOsZ,EAAOtZ,KAAM8hE,GACpDxpD,GAAU,MAId/oB,IAAAoa,cAACgP,KAAQ,CACPvM,UAAQ,EACRrK,MAAM,UACN6W,QAASkpD,EAAUxoD,EAAOtZ,aAfhC,EAqBFsH,oBAAU,KACRgC,EAAK9J,oBACFwB,wBACAnS,KAAMqX,GAAQwgE,EAAcxgE,EAAIjZ,QAClC,IAEH,MAAM05E,EAAgBA,CAACl/D,EAAO6R,EAAQwoD,KACpCx4D,EAAK9J,oBACFuB,gBAAgB+gE,EAAUnwE,GAAI,CAC7ByyB,YAAa09C,EAAU19C,YACvB9f,YAAaw9D,EAAUx9D,YACvB8a,SAAU0iD,EAAU1iD,SACpB,CAAC9F,GAAS7R,IAEX5Y,KAAMqX,IACL,MAAM0gE,EAAgBH,EAAWjyD,IAAKb,GAChCA,EAAGhiB,KAAOmwE,EAAUnwE,GACf,IACFgiB,EACHyQ,YAAa09C,EAAU19C,YACvB9f,YAAaw9D,EAAUx9D,YACvB8a,SAAU0iD,EAAU1iD,SACpB,CAAC9F,GAAS7R,GAGLkM,GAGX+yD,EAAcE,MAIpB,OACEr3E,IAAAoa,cAAC2d,KAAc,CAACnY,UAAWL,KACzBvf,IAAAoa,cAACuP,KAAK,CACJ8oD,GAAI,CAAE54C,SAAU,KAChBtf,aAAW,gBACXva,IAAAoa,cAACyP,KAAS,KACR7pB,IAAAoa,cAAC0P,KAAQ,KACP9pB,IAAAoa,cAAC4O,KAAS,MACT7qB,GAAQ8mB,IAAK8E,GACZ/pB,IAAAoa,cAAC4O,KAAS,CAACvhB,IAAKsiB,EAAO7iB,OACrBlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAMsZ,EAAO7iB,YAKvClH,IAAAoa,cAAC4P,KAAS,KACG,OAAVktD,QAAU,IAAVA,OAAU,EAAVA,EACGjvC,KAAK,CAACrK,EAAGsK,IACTtK,EAAE7oB,YAAcmzB,EAAEnzB,aACb,EACDorC,OAAOviB,EAAE7oB,YAAcmzB,EAAEnzB,cAE9BkQ,IAAKstD,GACJvyE,IAAAoa,cAACqpD,GAAG,CACFh8D,IAAK8qE,EAAU9hE,KAAO8hE,EAAU19C,YAChC09C,UAAWA,EACXC,SAAUA,SCvHtBvN,YAAa,EACb5wC,OAAO,IAII,QACb42C,SAAU7oE,GAAM4iE,GAAO7gD,KAAM0E,GAAMA,EAAEzmB,KAAOA,GAC5C0Y,KAAMA,GACNkqD,OAAQA,IChCV,SAASvkD,GAAc5G,GAAqC,IAAlC+F,UAAWQ,KAAcrD,GAAMlD,EACvD,OACE7Z,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GACAJ,EAAI,CACRwD,OAAShF,GACPvb,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GACJ5B,EACAwB,OA6ECnB,mBApEClI,IAAK,CACnBoH,KAAM,CACJC,QAAS,QAEXy4B,KAAM,CACJz4B,QAAS,QAEXo0B,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZvD,eAAgB,WAChBiB,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBzzB,QAAS,CACPwQ,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,GACvBgD,OAAQ,OACRJ,UAAW,OACXF,gBAAiB,QACjB+M,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvCtc,WA1BgB,KA4BlBkhB,aAAc,CACZ9oB,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOgF,QACjC9E,SAAU/7B,EAAM47B,YAAYG,SAASG,iBAEvCxc,WAAY,IAEdohB,cAAe,CACbphB,WAAY,KAkCDxX,EA9Bf,SAAiBL,GACf,MAAM,QAAEC,GAAYD,EACdxB,EAAOkI,qBAAWvI,GAClBZ,EAAUs3B,KAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAExD,OACE/vC,IAAAoa,cAAA,QACEqB,UAAW2B,IAAW5B,EAAQE,QAAS,CACrC,CAACF,EAAQ84B,eAAgBv6B,EAAKtF,YAAcqE,EAC5C,CAAC0C,EAAQg5B,gBAAiB17B,KAE5B9Y,IAAAoa,cAACkyD,IAAM,CAACl0D,QAAS2B,EAAK3B,SACpBpY,IAAAoa,cAACwU,IAAM,KACJo2C,GAAOA,OAAO//C,IAAKkG,GAClBnrB,IAAAoa,cAACqG,GAAcvD,OAAAC,OAAA,CACbkX,OAAK,EACLC,KAAMnJ,EAAEmJ,KACR7sB,IAAK0jB,EAAE/oB,IACH+oB,EAAC,CACLlnB,MAAO,MAIXjE,IAAAoa,cAACkG,IAAK,CAACV,UAAWysD,WCtDbnB,OA5BKA,KAClB,MAAMnxD,EAAOkI,qBAAWvI,IAClB,mBAAEoV,GAAuB/U,EAAKrW,KAAK+R,YAEnC21D,EAAUA,CAAChpE,EAAImjB,EAAOke,KACnB,CACLrhC,GAAIA,EACJshC,MAAO2nC,GAAcJ,SAAS7oE,GAC9BmjB,MAAOA,EACPke,SAAUA,IAIRI,EAAkB,CACtBunC,EAAQ,SAAU,EAAG,mBACrBA,EAAQ,YAAa,EAAG,cAS1B,OANIt8C,GACF+U,EAAgB7qB,KAAKoyD,EAAQ,aAAc,EAAG,eAGhDvnC,EAAgB7qB,KAAKoyD,EAAQ,OAAQ,EAAG,SAEjC,CACLvnC,gBAAiBA,ICbN2nC,OAXf,SAAoBjwD,GAClB,OACEvb,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC+1B,GAAW50B,GACZvb,IAAAoa,cAAC65B,GAAgB,CACfC,WAAYg3B,KAAcrnC,oB,OCRnBhpB,mBAAYnH,IAAK,CAE9B6oC,WAAY,CACV9+B,SAAU,WACVtC,IAAK,EACLkR,KAAM,EACNxY,MAAO,OACPkL,OAAQ,QAEVsrC,gBAAiB,CACftrC,OAAQ,OACRhE,QAAS,OACTC,eAAgB,SAChBuD,WAAY,UAEdi+B,IAAK,CACHr3B,SAAU,OACVs3B,UAAW,QAEbv1C,MAAO,CACL+0B,cAAe,YACfzX,SAAU,GACV/G,SAAU,WACVtC,IAAK,EACLkR,KAAM,EACN5N,gBAAiB,0BACjBxC,QAAS,UACTzJ,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BiW,cAAe,CACbhmC,KAAM,OACNvL,MAAO,EACPsf,WAAY,OACZ5b,SAAU,IAEZvQ,MAAO,CACLuQ,SAAU,GACV4b,WAAY,OACZtkB,OAAQ,SACRf,QAAS,QAET,CAACrH,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5BvrB,SAAU,KAGd2kC,MAAO,CACL3kC,SAAU,IAEZ8tC,OAAQ,CACNv3C,QAAS,OACT6e,aAAc,YACd24B,kBAAmB7+C,EAAM9B,QAAQwqC,KAAK,KACtCvgB,cAAe,EACfld,UAAW,EACX1C,QAAS,SACTJ,SAAU,QAIZ22C,IAAK,CACHzzC,OAAQ,OACR0zC,YAAa,EACbC,YAAah/C,EAAM9B,QAAQwqC,KAAK,KAChCuW,YAAa,SAEfC,KAAM,CACJn1C,SAAU,WACVsB,OAAQ,EACRkmB,SAAU,SACVjJ,WAAY,SAEdv8B,KAAM,CACJkf,UAAW,QAIb24D,QAAS,CACPv8D,QAAS,OACTw8D,UAAW,GACX9kB,YAAa,EACbC,YAAah/C,EAAM9B,QAAQwqC,KAAK,KAChCuW,YAAa,QACbl1C,SAAU,WACVkB,WAAY,GAEd64D,wBAAyB,CACvB39C,SAAU,KAEZ49C,SAAU,CACR5jE,MAAO,GACPkL,OAAQ,GACRtB,SAAU,YAEZi6D,SAAU,CACRv4D,YAAa,OACbiU,WAAY,GACZ4I,WAAY,GAEd27C,UAAW,CACT77D,OAAQ,cAEV87D,UAAW,CACTn6D,SAAU,SACV0B,YAAa,GACblD,QAAS,EACT0C,WAAY,GAEdyqC,UAAW,CACTruC,QAAS,eACTqY,WAAY,GACZvU,UAAW,oBAEbktC,IAAK,CACHhxC,QAAS,OACTe,OAAQ,cACR,CAACpI,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5BlW,SAAU,MAGdg+C,cAAe,CACbl5D,UAAW,EACX6F,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BrhC,QAAS,gBAEX+8D,aAAc,CACZh8D,OAAQ,GAEVhP,SAAU,CACR,MAAS,GACT,UAAa,SACb,YAAe,EACf,aAAgB,GAEhB,UAAW,CACT2yB,aAAc,IAGlBs4C,gBAAiB,CACf,MAAS,OACT,MAAS,QACT,gBAAmB,QACnB,OAAU,GACV,aAAgB,GAEhB,UAAW,CACTt5D,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxC47B,cAAe,CACb,UAAa,SACb,MAAS,GACT,OAAU,GACV,OAAU,UACV,UAAW,CACTv5D,gBAAiB/K,EAAM9B,QAAQwqC,KAAK,OAGxC67B,WAAY,CACVC,YAAa,YACbC,iBAAkBzkE,EAAM9B,QAAQwqC,KAAK,KACrCviB,SAAU,IACV9e,QAAS,eACTkB,QAAS,iBACT,CAACvI,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9Bo3C,YAAa,SAGjBE,oBAAqB,CACnB,CAAC1kE,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9BjtB,MAAO,UAGXwkE,aAAc,CACZ,CAAC3kE,EAAMmtB,YAAYC,KAAK,OAAQ,CAC9B/lB,QAAS,SAGbu9D,OAAQ,CACN76D,SAAU,WACVxB,QAAS,mBAEXs8D,cAAe,CACb/zD,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5B6L,YAAa,CACXzjC,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BviB,SAAU,OACVyB,UAAW,SACXvgB,QAAS,gBAEXutC,UAAW,CACT9jC,SAAU,GACVhS,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1BrhC,QAAS,eACTqY,WAAY,IAEdtjB,SAAU,CACR2N,SAAU,WACVtC,IAAK,QACLkR,KAAM,OACN7Z,MAAOkB,EAAM9B,QAAQwqC,KAAK,KAC1B53B,SAAU,GACVxD,OAAQ,GAEVonC,WAAY,CACV5jC,SAAU,GACV4b,WAAY,OACZvG,SAAU,OACVyB,UAAW,QACXvgB,QAAS,mBCpNEF,eAAYnH,IAAK,CAE9B6oC,WAAY,CACV9+B,SAAU,WACVtC,IAAK,EACLkR,KAAM,EACNxY,MAAO,OACPkL,OAAQ,QAEVsrC,gBAAiB,CACftrC,OAAQ,OACRhE,QAAS,OACTC,eAAgB,SAChBuD,WAAY,UAEdi+B,IAAK,CACHr3B,SAAU,OACVs3B,UAAW,QAEbv1C,MAAO,CACL+0B,cAAe,YACfzX,SAAU,GACV/G,SAAU,WACVtC,IAAK,EACLkR,KAAM,EACN5N,gBAAiB,0BACjBxC,QAAS,UACTzJ,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BiW,cAAe,CACbhmC,KAAM,OACNvL,MAAO,EACPsf,WAAY,OACZ5b,SAAU,IAEZvQ,MAAO,CACLuQ,SAAU,GACV4b,WAAY,OACZtkB,OAAQ,SACRf,QAAS,QAET,CAACrH,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5BvrB,SAAU,KAGd2kC,MAAO,CACL3kC,SAAU,IAEZ8tC,OAAQ,CACNv3C,QAAS,OACT6e,aAAc,YACd24B,kBAAmB7+C,EAAM9B,QAAQwqC,KAAK,KACtCvgB,cAAe,EACfld,UAAW,EACX1C,QAAS,SACTJ,SAAU,QAIZ22C,IAAK,CACHzzC,OAAQ,OACR0zC,YAAa,EACbC,YAAah/C,EAAM9B,QAAQwqC,KAAK,KAChCuW,YAAa,SAEfC,KAAM,CACJn1C,SAAU,WACVsB,OAAQ,EACRkmB,SAAU,SACVjJ,WAAY,SAEdv8B,KAAM,CACJkf,UAAW,QAIb24D,QAAS,CACPv8D,QAAS,OACTw8D,UAAW,GACX9kB,YAAa,EACbC,YAAah/C,EAAM9B,QAAQwqC,KAAK,KAChCuW,YAAa,QACbl1C,SAAU,WACVkB,WAAY,GAGd84D,SAAU,CACR5jE,MAAO,GACPkL,OAAQ,GACRtB,SAAU,YAEZi6D,SAAU,CACRv4D,YAAa,OACbiU,WAAY,GACZ4I,WAAY,GAEd27C,UAAW,CACT77D,OAAQ,cAEV87D,UAAW,CACTn6D,SAAU,SACV0B,YAAa,GACblD,QAAS,EACT0C,WAAY,GAEdyqC,UAAW,CACTruC,QAAS,eACTqY,WAAY,GACZvU,UAAW,oBAEbwqC,eAAgB,CACdjqC,eAAgB,YAChB6J,OAAQ,WAEVuvD,QAAS,CACPr9D,IAAK,OC5GF,MAAMs9D,GAAsBl9D,IACjC,MAAMmwB,EAAgBzpB,qBAAWwoB,KAC3B,UACJkL,EAAS,YACT9gB,EAAW,QACXy1B,EAAO,cACPjM,EAAa,gBACbC,EAAe,WACfiM,EAAU,UACVtP,GACE1/B,EAAMm6B,QAEJgjC,GAA0B,OAAVnuB,QAAU,IAAVA,OAAU,EAAVA,EAAYlpD,QAAS,EACrCma,EAAUZ,KAEhB,OACE5a,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQi8D,UAEtBz3E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+gC,YACtBv8C,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0B+2C,GAC5Br7B,QAASoxB,EAAcrB,YACvB5uB,UAAWD,EAAQ6uC,iBACnBrqD,IAAAoa,cAAC4gC,GAAY,CACXv/B,UAAWD,EAAQghC,IACnB7G,UAAWA,EACXn2B,IAAKqV,EACLqmB,cAAc,2BACdD,UAAWA,OAMnBj7C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQk8D,UAEtB13E,IAAAoa,cAAC6F,IAAI,CACH1X,GAAE,wBAAA3J,OAA0B+2C,GAC5Bl6B,UAAS,GAAA7c,OAAK4c,EAAQvH,MAAK,KAAArV,OAAI4c,EAAQm8D,WACvCr9D,QAASoxB,EAAcrB,aACvBrqC,IAAAoa,cAAApa,IAAAie,SAAA,KACG4W,EACAm1B,GAAelC,aAAavsC,EAAMzO,SAAUyO,EAAMm6B,WAKvD11C,IAAAoa,cAAA,QAAMqB,UAAS,GAAA7c,OAAK4c,EAAQtU,MAAK,KAAAtI,OAAI4c,EAAQo8D,YAC1CttB,GAIHtqD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ2tC,OACvBnpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBACvBzQ,IAAAoa,cAAA,YAAM,IAAEu7B,IAIV31C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4tC,WACtBppD,IAAAoa,cAACwhC,GAAS,CACRxzB,KAAMi2B,EACN5gD,OAAQ6gD,KAGXo6B,GACC14E,IAAAoa,cAAA,OACEE,QAASA,IAAMiB,EAAMivC,mBAAmB7U,GACxCl6B,UAAWD,EAAQ4tC,WACnBppD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ6tC,gBACvBrpD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBCvExBkoE,GAAe34E,IAAM44E,KAAMr9D,IACtC,MAAM,QACJm6B,EAAU,GAAE,iBACZyU,EAAgB,SAChBr6C,EAAQ,yBACR+oE,GACEt9D,GACE,gBAAEyiC,EAAe,MAAEzV,GAAUmN,EAC7Bl6B,EAAUZ,KACVqqC,EAAWhlD,iBAAO,OACjB+mD,EAAc+C,GAAmBx2C,mBACtC8zC,EAAU3R,EAAQ6R,UAAU,GAAGC,cAE3BT,EAAcC,EAAaE,mBAAqB,EAuBtD,SAASG,EAAUtR,GACjB,IAAIuR,EAAgB,CAClBE,YAAa,GAUf,OARA9R,EAAQ6R,UAAUh5B,QAAS2tB,IAEvBA,EAAMsL,aAAezR,GACrBmG,EAAMsL,YAAcF,EAAcE,cAElCF,EAAgBpL,KAGboL,EAGT,MAAMG,GAAc/R,EAAQ6R,UAAUlmD,OAEtC,OACErB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ87D,SACtBt3E,IAAAoa,cAACq+D,GAAkB,CAAC/iC,QAASA,IAE7B11C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQg8D,yBACtBx3E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQq8D,eACtB73E,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQs8D,cACpB93E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAAU,IAAE83B,GAErCvoC,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQs8D,cACpB93E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAAgB,IAAEutC,IAG7Ch+C,IAAAoa,cAAA,OAAKqB,UAAS,GAAA7c,OAAK4c,EAAQ88D,OAAM,KAAA15E,OAAI4c,EAAQy8D,aAE3Cj4E,IAAAoa,cAAA,OAAKqB,UAAS,GAAA7c,OAAK4c,EAAQ1L,SAAQ,KAAAlR,OAAI4c,EAAQ68D,eAC5CvoE,GAIFi3C,EACC/mD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQysC,aAAcjB,EAAakB,YAEnDloD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQysC,aACvBjoD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAK3BzQ,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YAAapB,EAAaqB,UACnDroD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8sC,WACtBvB,EACC/mD,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAGzB,GAEFzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAA2B,GAAA7R,OAC9C82C,EAAQ5oC,UAAYk6C,EAAaQ,YAAW,KAChDxnD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAK/BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQuwC,KACtB/rD,IAAAoa,cAAC6C,IAAS,CACRJ,SAAU4qC,EACV1pC,KAAK,QACLtB,KAAK,SACLvE,MAAOw9B,EAAQ5oC,SACfwR,SAAW1U,GA1FWkD,KAC5B,GAAIA,EAAW,EACb,OAGFq9C,EAAiBzU,EAAQC,UAAW7oC,GACpC,IAAIovC,EAAQmL,EAAUO,KAAKqmB,IAAInhE,EAAUkxC,GAAmB,IAC5D+L,EAAgB7N,IAmFOgO,CAAqBtgD,EAAEI,OAAOkO,OAC/CuD,UAAWD,EAAQ1O,SACnB5F,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9Bs6D,gBAAiB,CAAEC,QAAQ,GAC3B/lB,SAAUA,EACV3qC,QAASA,KACP2qC,EAAS/kD,QAAQqnB,OAAO,GAAI,IAE9B6X,OApFc2rB,KACpBZ,EACEzU,EAAQC,UACRmjC,GAAsBpjC,EAASA,EAAQ5oC,YAkFnCwQ,WAAY,CACVa,WAAY,CACV8sC,KAAMvV,EAAQnN,OAASmN,EAAQuI,oBAGnCxjC,QAAQ,aAGVza,IAAAoa,cAAC4F,IAAM,CACLnD,SAAU4qC,EACVhsC,UAAWD,EAAQu8D,gBACnBz9D,QApGYotD,KAClBmR,EAAyBnjC,KAoGnB11C,IAAAoa,cAAC8G,KAAO,WC7HZtG,GAAYC,YAAYnH,IAAK,CACjCqlE,UAAW,CACTh+D,QAAS,OACTc,SAAU,OACVb,eAAgB,gBAChBu8D,UAAW,OACX1jE,MAAO,oBACPmN,OAAQ,IACRvC,gBAAiB,UACjB3C,OAAQ,oBACRG,QAAS,QAET,CAACvI,EAAMmtB,YAAYkP,GAAG,OAAQ,CAC5Bj0B,OAAQ,uBAGZuB,UAAW,CACTxJ,MAAO,IACP4K,gBAAiB,QACjBtC,aAAc,EACdL,OAAQ,oBACR,kIAAmI,CACjIf,QAAS,YAKA,SAASi+D,GAAiBz9D,GACvC,MAAMC,EAAUZ,MACV,OACJsT,EAAM,MACNoZ,EAAK,SACLpkB,EAAQ,OACRytC,EAAM,YACNsoB,EAAW,8BACXroB,GACEr1C,GACGrD,EAAOsrC,GAAYjwC,mBAAS+zB,GAEnCvvB,oBAAU,KACRyrC,EAASlc,IACR,CAACA,IAaJ,OACEtnC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQu9D,WACtB/4E,IAAAoa,cAACyrD,GAAsB,CACrBjV,8BAA+BA,EAC/B1iC,OAAQA,EACRhL,SAAUA,EACVytC,OAAQA,IAEV3wD,IAAAoa,cAAC6C,IAAS,CACR0lB,UAjBiB/4B,IACL,KAAdA,EAAEg5B,SAEJq2C,EAAY/gE,IAeR9V,GAAG,kBACH8E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAC9BgM,KAAK,SACLhB,UAAWD,EAAQ6B,UACnB5C,QAAQ,WACR6D,SA3BR,SAAwB1U,GACtB45C,EAAS55C,EAAEI,OAAOkO,QA2BZA,MAAOA,EACP6F,KAAK,QACLT,WAAY,CACVi7C,eACEv4D,IAAAoa,cAACoD,IAAc,CAACC,SAAS,SACvBzd,IAAAoa,cAACo+C,KAAU,OAGfj7C,aAAcvd,IAAAoa,cAAC2rD,KAAS,CACtBzrD,QAASA,KACPkpC,EAAS,IACTy1B,EAAY,KAEdx9D,UAAWD,EAAQq4B,kBCnEjC,MAAMj5B,GAAYC,YAAYnH,IAAK,CACjCggD,iBAAkB,CAChB34C,QAAS,OACT44C,SAAU,SACVznC,SAAU,EACVpQ,OAAQ,EACRvJ,WAAY,QACZwM,OAAQ,QAEVg1C,aAAc,CACZj4C,OAAQ,OACR2B,SAAU,SACVuD,OAAQ,EACRnN,MAAO,OACPmgD,WAAY,UAEdC,cAAe,CACbD,WAAY,WAEd8Q,mBAAoB,CAClB,SAAY,QACZ,IAAO,IACP,KAAQ,MACR,UAAa,kBACb,OAAU,IACV,gBAAmB,QACnB,UAAW,CACTrmD,gBAAiB,UAGrBskB,QAAS,CACPjnB,OAAQ,WACRqD,YAAa,QAEf+5D,gBAAiB,CACfr5C,KAAM,YAERtY,OAAQ,CACN1T,MAAO,KAETslE,aAAc,CACZ73D,aAAc,GACd83D,KAAM,YAERC,cAAe,CACbxlE,MAAO,IACPkH,QAAS,gBAEXu+D,aAAc,CACZv+D,QAAS,eACTi1B,cAAe,MACfnqB,MAAO,SAET62B,WAAY,CACVj/B,SAAU,WACVqD,MAAO,GACP3F,IAAK,EACLtH,MAAO,IACP4K,gBAAiB,QACjBtC,aAAc,GAEhBkO,MAAO,CACL7F,SAAU,IAEZ0vC,YAAa,CACXn5C,QAAS,eACTklB,OAAQ,sBACR9gB,YAAa,EACbmC,aAAc,EACdnF,aAAc,EACdF,QAAS,GAEXk4C,gBAAiB,CACfnkB,cAAe,UAEjBokB,yBAA0B,CACxB5hD,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BiY,gBAAiB,CACfrkB,cAAe,SACf5c,WAAY,EACZvf,MAAO,GACPkL,OAAQ,IAEVmP,OAAQ,CACNvP,UAAW,GAEb46D,iBAAkB,CAChBx+D,QAAS,eACTqY,WAAY,IAEdomD,SAAU,CACR19D,OAAQ,GAEV29D,OAAQ,CACN39D,OAAQ,GAEV49D,SAAU,CACRv+D,IAAK,OACL6gB,WAAY,OACZlb,MAAO,EACPrD,SAAU,QACV5J,MAAO,oBACPtB,WAAY,QACZyO,OAAQ,MAIN24D,GAAaA,CAACC,EAAOC,IAClBD,EAAQC,EAAQD,EAAQC,E,8CC7H1B,MAAMlB,GAAe34E,IAAM44E,KAAMr9D,IACtC,MAAMxB,EAAOkI,qBAAWvI,IAClB,QAAEg8B,EAAO,WAAEjvC,EAAU,gBAAEqzE,GAAoBv+D,GAC3C,MAAEgtB,EAAK,gBAAEyV,GAAoBtI,GAC5BqkC,EAASC,GAAczmE,mBAASmiC,EAAQqkC,SACzCv+D,EAAUZ,KACVqqC,EAAWhlD,iBAAO,OACjBkmB,EAASC,GAAc7S,oBAAS,IAEhCyzC,EAAc+C,GAAmBx2C,mBAoExC,SAAmBwiC,GACjB,IAAIuR,EAAgB,CAClBE,YAAa,GAUf,OARA9R,EAAQ6R,UAAUh5B,QAAS2tB,IAEvBA,EAAMsL,aAAezR,GACrBmG,EAAMsL,YAAcF,EAAcE,cAElCF,EAAgBpL,KAGboL,EA/EPD,CAAU3R,EAAQ6R,UAAU,GAAGC,cAG3BT,EAAcC,EAAaE,mBAAqB,EA+EtD,MAAMO,GAAc/R,EAAQ6R,UAAUlmD,OAEtC,OACErB,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ87D,SACtBt3E,IAAAoa,cAACq+D,GAAkB,CAAC/iC,QAASA,IAE7B11C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQg8D,yBACtBx3E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQq8D,eACtB73E,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQs8D,cACpB93E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAAU,IAAE83B,GAErCvoC,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQs8D,cACpB93E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAAgB,IAAEutC,IAG7Ch+C,IAAAoa,cAAA,OAAKqB,UAAS,GAAA7c,OAAK4c,EAAQ88D,OAAM,KAAA15E,OAAI4c,EAAQy8D,aAE1ClxB,EACC/mD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQysC,aAAcjB,EAAakB,YAEnDloD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQysC,aACvBjoD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAK3BzQ,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ4sC,YAAapB,EAAaqB,UACnDroD,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ8sC,WACtBvB,EACC/mD,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAGzB,GAEFzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAA2B,GAAA7R,OAC9C82C,EAAQ5oC,UAAYk6C,EAAaQ,YAAW,KAChDxnD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBAK/BzQ,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQuwC,KACtB/rD,IAAAoa,cAAC6C,IAAS,CACRJ,SAAU4qC,EACV1pC,KAAK,QACLtB,KAAK,SACLvE,MAAO6hE,EACPz7D,SA9HiB1U,IACvBowE,EAAWpwE,EAAEI,OAAOkO,QA8HduD,UAAWD,EAAQ1O,SACnB5F,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAC9Bs6D,gBAAiB,CAAEC,QAAQ,GAC3B/lB,SAAUA,EACV3qC,QAASA,KACP2qC,EAAS/kD,QAAQqnB,OAAO,GAAI,IAE9B6X,OAlIc2rB,KACpB3kC,GAAW,GACXrM,EAAKjW,UACF4C,4BAA4B,CAC3BD,aACAoG,OAAQ6oC,EAAQC,UAChBokC,YAEDz6E,KAAMqX,IACLmjE,IACA1zD,GAAW,KAEZ1mB,MAAOg6C,IACNrnB,MAAM,0BACNjM,GAAW,MAqHT3L,QAAQ,aAEVza,IAAAoa,cAAA,OAAK8F,MAAO,CAAEvB,WAAY,EAAGyU,WAAY,KACvCpzB,IAAAoa,cAAA,OACEE,QArHQ2/D,MACX9zD,GAAW4zD,GAAW,IACzB3zD,GAAW,GACXrM,EAAKjW,UACF4C,4BAA4B,CAC3BD,aACAoG,OAAQ6oC,EAAQC,UAChBokC,QAASA,EAAU,IAEpBz6E,KAAK,KACJw6E,IACA1zD,GAAW,KAEZ1mB,MAAOg6C,IACNrnB,MAAM,0BACNjM,GAAW,OAuGT3K,UAAWD,EAAQw8D,eACnBh4E,IAAAoa,cAAC8/D,KAAe,CACd5/D,QAASA,OACT4F,MAAO,CAAE+iB,KAAM,YAGnBjjC,IAAAoa,cAAA,OACEE,QAzGU6/D,KACbh0D,IACHC,GAAW,GACXrM,EAAKjW,UACF4C,4BAA4B,CAC3BD,aACAoG,OAAQ6oC,EAAQC,UAChBokC,QAASA,EAAU,IAEpBz6E,KAAK,KACJw6E,IACA1zD,GAAW,KAEZ1mB,MAAM,KACL2yB,MAAM,0BACNjM,GAAW,OA2FT3K,UAAWD,EAAQw8D,eACnBh4E,IAAAoa,cAACggE,KAAiB,CAChB9/D,QAASA,OACT4F,MAAO,CAAE+iB,KAAM,iBC3JvBroB,GAAYC,YAAYnH,IAAK,CACjCggD,iBAAkB,CAChB34C,QAAS,OACT44C,SAAU,SACVznC,SAAU,EACVpQ,OAAQ,EACRvJ,WAAY,QACZwM,OAAQ,QAEVg1C,aAAc,CACZj4C,OAAQ,OACR2B,SAAU,SACVuD,OAAQ,EACRnN,MAAO,OACPmgD,WAAY,UAEdC,cAAe,CACbD,WAAY,WAEd8Q,mBAAoB,CAClB,SAAY,QACZ,IAAO,IACP,KAAQ,MACR,UAAa,kBACb,OAAU,IACV,gBAAmB,QACnB,UAAW,CACTrmD,gBAAiB,UAGrBskB,QAAS,CACPjnB,OAAQ,WACRqD,YAAa,QAEf+5D,gBAAiB,CACfr5C,KAAM,YAERtY,OAAQ,CACN1T,MAAO,KAETslE,aAAc,CACZ73D,aAAc,GACd83D,KAAM,YAERC,cAAe,CACbxlE,MAAO,IACPkH,QAAS,gBAEXu+D,aAAc,CACZv+D,QAAS,eACTi1B,cAAe,MACfnqB,MAAO,SAET62B,WAAY,CACVj/B,SAAU,WACVqD,MAAO,GACP3F,IAAK,EACLtH,MAAO,IACP4K,gBAAiB,QACjBtC,aAAc,GAEhBkO,MAAO,CACL7F,SAAU,IAEZ0vC,YAAa,CACXn5C,QAAS,eACTklB,OAAQ,sBACR9gB,YAAa,EACbmC,aAAc,EACdnF,aAAc,EACdF,QAAS,GAEXk4C,gBAAiB,CACfnkB,cAAe,UAEjBokB,yBAA0B,CACxB5hD,MAAOkB,EAAM9B,QAAQwqC,KAAK,MAE5BiY,gBAAiB,CACfrkB,cAAe,SACf5c,WAAY,EACZvf,MAAO,GACPkL,OAAQ,IAEVmP,OAAQ,CACNvP,UAAW,GAEb46D,iBAAkB,CAChBx+D,QAAS,eACTqY,WAAY,IAEdomD,SAAU,CACR19D,OAAQ,GAEV29D,OAAQ,CACN39D,OAAQ,GAEV49D,SAAU,CACRv+D,IAAK,OACL6gB,WAAY,OACZlb,MAAO,EACPrD,SAAU,QACV5J,MAAO,oBACPtB,WAAY,QACZyO,OAAQ,MCpHZ,MAEMgkD,GAAS,CACb,CACE5iE,GAAI,gBACJkyB,KAAK,GAAD11B,OALK,YAKI,KACbghB,UH2HW,SAAoBrE,GACjC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClB+kC,EAAcx8B,qBAAWk0B,IACzBzK,EAAgBzpB,qBAAWwoB,KAC1B4vC,EAAiBC,GAAsB/mE,oBAAS,IAChD2zD,EAAkBqT,GAAwBhnE,mBAC/CrQ,KAAKsV,MAAM9Z,aAAaC,QAAQ,qBAAuB,QAElD6U,EAAWC,GAAgBF,oBAAS,IACpC6zD,EAAcC,GAAmB9zD,oBAAS,GAE3CgjB,GAAQ,IAAIE,MAAOY,SAASC,MAAM,KAAK,GAAK,YAC5CkjD,EAAe9uC,EAAchE,SAASsY,kBACtCy6B,EAAuBd,GAAWpjD,EAAOikD,GACzCE,EAAmBh8E,aAAaC,QAAQ,iBACvC24C,EAAcqjC,GAAoBpnE,mBACvComE,GAAWc,EAAsBC,KAE5BE,EAAmBC,GAAwBtnE,oBAAS,IACpDunE,EAAsBC,GAA2BxnE,oBAAS,GAC3D8T,EAAcpnB,kBAAO,GACrBmY,EAAU2tB,cAEVi1C,EAAmB9jD,IACvBx4B,aAAaa,QAAQ,eAAgB23B,GACrCyjD,EAAiBzjD,IAGb+jD,EAAwBA,KAC5BF,GAAwB,IAM1BhjE,oBAAU,KACRnb,OAAOic,iBAAiB,SAAUoiE,GAC3B,KACLr+E,OAAOi1D,oBAAoB,SAAUopB,KAEtC,IAEH,MAAM9T,EAAuB7+B,IAC3B5pC,aAAaa,QAAQ,mBAAoB2D,KAAKC,UAAUmlC,IACxDiyC,EAAqBjyC,IA4DjBA,GADwBoD,EAAc5E,iBAAiBwB,UAAY,IAClCrjB,IAAKywB,IAC1C,MAAMwlC,EAAmChU,EAAiB/iD,KACvDC,GAAOA,EAAGuxB,YAAcD,EAAQC,WAEnC,MAAO,IACFD,EACH5oC,SAAUouE,EACNA,EAAiCpuE,SACjC,MAYRiL,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,YACvBkhB,EAAYnnB,SAEfinE,EAAoB,IAGvBptD,EAAKjW,UACFwC,aAAayT,EAAKrW,KAAKoI,iBAAiB3F,WACxC7G,KAAMqX,IACU,IAADyyB,EAAVzyB,EAAIjZ,OACNguC,EAAc7D,aAA2BlxB,EAAIjZ,KAlB1CuqC,KAAK,CAACrK,EAAGsK,IACdtK,EAAEntB,KAAOy3B,EAAEz3B,KAAa,EACxBmtB,EAAEntB,KAAOy3B,EAAEz3B,MAAc,EACtB,IAgBDi7B,EAAc3D,aACJ,QAARqB,EAAAzyB,EAAIjZ,YAAI,IAAA0rC,OAAA,EAARA,EAAUjlB,KACPC,GACCA,EAAG3d,aACHvD,KAAKsV,MAAM9Z,aAAaC,QAAQ,aAAe,MAC5C8H,cACF,OAIVnH,KAAK,KAEJosC,EAAclT,SAEf94B,MAAMb,QAAQC,MAEnBuoB,EAAYnnB,SAAU,GACrB,CAAC6Z,EAAKrW,KAAKoI,iBAAiB3F,UAAWulC,EAAchE,SAASjhC,aAEjEsR,oBAAU,KACR,MAAMojE,EAAiBC,IACjBx+E,OAAOusB,QAAU,IACnBmxD,GAAmB,GAEnBA,GAAmB,IAIvB,OADA19E,OAAO4c,SAASX,iBAAiB,SAAUsiE,GACpC,IAAMv+E,OAAO4c,SAASq4C,oBAAoB,SAAUspB,IAC1D,IAMH,MAuBMtC,EAA4BnjC,IAC5BklC,IAGJnnE,GAAa,GACbgrC,EAAY9rC,IACV,CACE9F,OAAQ6oC,EAAQC,UAChBI,IAAK6R,KAAKqmB,IACRv4B,EAAQ5oC,UAAY,EACpB86C,KAAKqmB,IAAIv4B,EAAQsI,gBAAiBtI,EAAQnN,QAE5C9hC,WAAYilC,EAAchE,SAASjhC,WACnCuG,sBAAuBsqC,GAEzB,KACE7jC,GAAa,GACb,MAAM4nE,EAAiB/yC,EAAS9iB,UAC7BpB,GAAOA,EAAGuxB,YAAcD,EAAQC,WAEf,IAAIrN,GACZ+yC,GAAgBvuE,SAAW,GACvCq6D,EACED,EAAiBloD,OAAQoF,GAAOA,EAAGuxB,YAAcD,EAAQC,gBAM3DwU,EAAmBA,CAACxU,EAAW7oC,KAAc,IAADwuE,EAEhD,MAAMC,EAA0D,QAApDD,EAAGhzC,EAASnkB,KAAMC,GAAOA,EAAGuxB,YAAcA,UAAU,IAAA2lC,OAAA,EAAjDA,EAAmDxuE,SAClE,GAAIyuE,IAAWzuE,IAAcyuE,IAAWzuE,EACtC,OAEF,MAAM66D,EAAkBr/B,EAAS9iB,UAC9BpB,GAAOA,EAAGuxB,YAAcA,GAErBiyB,EAA0BV,EAAiB1hD,UAC9CpB,GAAOA,EAAGuxB,YAAcA,GAG3B,GAAIgyB,EAAkBC,KAA6B,EACjD,OAAO/oE,QAAQC,IAAI,qDAIrB,GAAI8oE,GAA2B,EAAG,CAChC,IAAIC,EAAsB,IAAIX,GACd,KAAZp6D,GAAoBA,EAKtB+6D,EAAoBD,GAAyB96D,SAAWA,EAJxD+6D,EAAsBA,EAAoB7oD,OACvCoF,GAAOA,EAAGuxB,YAAcA,GAK7BwxB,EAAoBU,QAGf,GAAIF,GAAmB,GAAK76D,EAAW,EAAG,CAC/C,MAAM+6D,EAAsB,IAAIX,GAChCW,EAAoB7uD,KAAK,IACpBsvB,EAASq/B,GACZ76D,aAEFq6D,EAAoBU,KAIlBnR,EAAc8kB,IAClB,MAAMtkD,EAAO,IAAIT,KAAK+kD,GAEtB,OADA5+E,OAAOs6B,KAAOA,EACR,GAANt4B,OAAUs4B,EAAKuf,UAAS,KAAA73C,OAAIs4B,EAAK2/B,WAAa,EAAC,KAAAj4D,OAAIs4B,EAAK4/B,gBAyD1D,SAAS2kB,EAAuBhtD,EAAO6a,GACrCoC,EAAcrC,iBAAiB5a,EAAO6a,GAuBxC,MAAMhC,EAAQoE,EAAc5E,iBAAiBQ,MAE7C,OACEtnC,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQk4C,kBAGtB1zD,IAAAoa,cAAA,OACEqB,UAAWD,EAAQk+D,SACnBx5D,MAAO,CACLrM,MAAO0H,EAAMgxD,eACT,qBACA,sBAENvsE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ29D,cACtBn5E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ69D,eACtBr5E,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ+L,QACnBvnB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,cACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACL7B,KAAM63D,EACN34D,QAAS84D,EACTS,OAnVeC,KAC3BZ,GAAwB,IAmVZh2D,QAAQ,aACR7M,MAAOwzB,EAAchE,SACrBppB,SAvUY1U,IACxBA,EAAEC,iBACFw9D,GAAgB,GAChBF,EAAoB,IACpB,MAAMz/B,EAAW99B,EAAEI,OAAOkO,MAC1BwzB,EAAc3D,YAAYL,GAC1BszC,EAAgBrB,GAAWjyC,EAASsY,kBAAmBzpB,IACvDne,EAAQY,KAAK,CACX2O,OAAQ,OAiUG+jB,EAAc9D,UAAU3iB,IAAKyiB,GAE1B1nC,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKigC,EAASjhC,WACdyR,MAAOwvB,GACNA,EAASj3B,SAMnBi7B,EAAchE,SAASsY,mBACtBhgD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+9D,kBACtBv5E,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQg+D,UACpBx5E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBACtBimD,EAAWhrB,EAAchE,SAASsY,oBAErChgD,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQi+D,QACpBz5E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBACtBimD,EAAWhrB,EAAchE,SAASuY,oBAK3CjgD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ89D,cACtBt5E,IAAAoa,cAAC4F,IAAM,CACL1F,QAvOgBmtD,KAC1BJ,GAAiBD,IAuOP3rD,UAAWD,EAAQunB,QACnBtoB,QAAQ,YACRjI,MAAM,WACNxS,IAAAoa,cAAC4H,GAAgB,CACfvR,KAAM22D,EAAe,eAAiB,yBAG1CpnE,IAAAoa,cAAC4F,IAAM,CACL1F,QA5OQotD,KACdkT,GAGJn8B,EAAYzI,SACVkxB,EAAiBjiD,IAAKb,IACb,IACFA,EACH2xB,IAAK+iC,GAAsB10D,EAAIA,EAAGtX,UAClCE,sBAAuBsqC,EACvB7wC,WAAYilC,EAAchE,SAASjhC,cAGvC,KACE0gE,EAAoB,OA+Nd1rD,UAAWD,EAAQunB,QACnBtoB,QAAQ,YACRjI,MAAM,WACNxS,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,QAAQ,IAAC,IAAA7R,OAAKsoE,EAAiB7lE,OAAM,SAKpErB,IAAAoa,cAAApa,IAAAie,SAAA,KACGytB,EAAcr4B,eACbrT,IAAAoa,cAAA,OACE8F,MAAO,CACLzC,SAAU,WACVm+D,MAAO,SAET57E,IAAAoa,cAAC4+D,GAAgB,CACfpoB,+BAA6B,EAC7B1iC,OAAQwd,EAAc5E,iBAAiB5Y,OACvCoZ,MAAOoE,EAAc5E,iBAAiBQ,MACtCpkB,SAAUwoB,EAAc1E,oBACxB2pB,OAAQ8qB,EACRxC,YAAavtC,EAAchC,0BAE7B1pC,IAAAoa,cAACob,GAAU,CACT2nB,QAAM,EACNp/B,KAAK,QACL8nC,aAAW,EACXprC,QAAQ,SACRmrC,aAAa,WACb1+C,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,uBAC9B4sC,QAAS3R,EAAchE,SAASuY,gBAChC3C,QAAS5R,EAAchE,SAASsY,kBAChC1hC,SA1XgB4Y,IAC5B,IAAKA,EAEH,YADAyjD,EAAiB,IAGnB,MAAMkB,EAAW3kD,EAAKG,SACtB,IAAIX,EACAmlD,GAKAnlD,EAD0C,eAAxCmlD,EAASvkD,MAAM,KAAK,GAAGqW,UAAU,GAnBzC,SAA4BzW,GAC1B,OACE,IAAIT,KAAKS,EAAKC,UAAuC,IAA3BD,EAAKE,qBAC5BC,SACAC,MAAM,KAAK,GAAK,YAgBPd,CAAmB,IAAIC,KAAKS,IAE5B2kD,EAASvkD,MAAM,KAAK,GAAK,aAMnCoU,EAAchE,SAASuY,iBAAmBvpB,GAC1C+jD,GAAwB/jD,GAExBskD,EAAgBtkD,GAChBmkD,GAAqB,KAErBF,EAAiBjkD,GACjBmkD,GAAqB,MAGvBF,EAAiBzjD,GACjByjD,EAAiBjvC,EAAchE,SAASsY,qBA4V9BvkC,UAAWD,EAAQkhC,WACnB7/B,UAAW6uB,EAAchE,SACzBxvB,MAAOo/B,KAIbt3C,IAAAoa,cAACuB,IAAc,CACbF,UAAS,GAAA7c,OAAK4c,EAAQu4C,aAAY,KAAAn1D,OAChC8sC,EAAcl4B,WAAagI,EAAQy4C,iBAIvCj0D,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8hB,QAAQ,gBACRxyB,UAAWD,EAAQsgE,eACnB97E,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ/N,UAAWD,EAAQ0S,SAEjBwd,EAAc/B,6BAA+B,GAAKrC,IAClDtnC,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAhJlB,WACEoxB,EAAc5B,SAgJEruB,UAAWD,EAAQ04C,aACnBl0D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ24C,iBACvBn0D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBACvBzQ,IAAAoa,cAAC2rD,KAAS,CAACtqD,UAAWD,EAAQ64C,oBArKlD,SAA0BrtB,GACxB,IAAI9Y,EAAS,GACb,IAAK,MAAMkZ,KAAYJ,EACrBA,EAAoBI,GAAU7Y,QAASnK,IACrC8J,EAAOlV,KAAK,CACVouB,WACAlvB,MAAOkM,MAIb,OAAO8J,EA8JQ+3C,CAAiBv6B,EAAc1E,qBAAqB/hB,IAClDb,GACCpkB,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLtW,IAAK2c,EAAGlM,MAAQkM,EAAGgjB,SACnB9sB,QAASA,IACPmhE,EAAuBr3D,EAAGgjB,SAAUhjB,EAAGlM,OAEzCuD,UAAWD,EAAQ04C,aAzNJgS,EAAC9+B,EAAUhlC,KAE9C,MAAMokC,EAAYkF,EAAclF,UAC1Bu1C,EAAmBrwC,EAAc5E,iBAAiB5Y,OACxD,IAAIm4C,EAAa,GACjB,IAAK7/B,EACH,OAEF,MAAMw1C,EAAMx1C,EAAUriB,KAAMC,GAAOA,EAAG3T,OAAS22B,GACzC60C,EAAgBF,EAAiB53D,KAAMC,GAAOA,EAAG3T,OAAS22B,GAChE,IAAK40C,EACH,OAEF,MAAM90E,EAAQ80E,EAAIhqB,YAAY7tC,KAAMC,GAAOA,EAAGhiB,KAAOA,GACrD,IAAI85E,EAAaD,EAAcjqB,YAAY7tC,KAAMC,GAAOA,EAAGhiB,KAAOA,GAClE,MAAMioB,EAAQ6xD,EAAaA,EAAW7xD,MAAQ,EAY9C,OATEg8C,EADe,SAAbj/B,EAEApnC,IAAAoa,cAAA,YACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAIdvJ,GAAK,GAAAtI,OAAOsI,EAAMuJ,MAI/BzQ,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,QACEqB,UACE4O,EAAQ7O,EAAQ24C,gBAAkB34C,EAAQ44C,0BAG3CiS,GAEHrmE,IAAAoa,cAAC2rD,KAAS,CAACtqD,UAAWD,EAAQ64C,oBAuLb6R,CACC9hD,EAAGgjB,SACHhjB,EAAGlM,SAKVovB,EACCtnC,IAAAoa,cAAC4F,IAAM,CACLjC,KAAK,QACLzD,QAASA,IAAMoxB,EAAchC,wBAAwB,IACrDjuB,UAAWD,EAAQ04C,aACnBl0D,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQ24C,iBAAiB,IAAE7sB,EAAM,KAClDtnC,IAAAoa,cAAC2rD,KAAS,CAACtqD,UAAWD,EAAQ64C,mBAE9B,MAGRr0D,IAAAoa,cAACuF,IAAU,CAAClE,UAAWD,EAAQ6O,OA/K3C,WACE,IAAInjB,EAAQ,GACZ,GAAIwkC,EAAc5E,iBAAiBwB,SAAU,CAC3C,IAAIje,EAAQqhB,EAAc5E,iBAAiBwB,SAASjnC,OAChDk/C,EAAQ7U,EAAc5E,iBAAiBk/B,qBAC3C9+D,EACElH,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAAe,IAAC,IAAA7R,OAAKyrB,EAAK,KACjDrqB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,OAAO,IAAC,IAAA7R,OAAK2hD,EAAK,KACzCvgD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAI7B,OAAOvJ,EAoKMg1E,OAKTl8E,IAAAoa,cAACuB,IAAc,CACbF,UAAS,GAAA7c,OAAK4c,EAAQu4C,aAAY,KAAAn1D,OAChC4U,GAAagI,EAAQy4C,iBAIxBomB,EACCr6E,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QAnWV,WACE1d,OAAOurB,SAAS,EAAG,IAmWX1M,UAAWD,EAAQspD,oBACnB9kE,IAAAoa,cAAC+hE,KAAc,MACfn8E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEvB,MAKNzQ,IAAAoa,cAAA,OACEqB,UAAWD,EAAQ09D,gBACnBh5D,MAAO,CACLvB,UAAW+sB,EAAc/B,6BAA+B,IAAM,MAG/Dy9B,EACCF,EAAiBjiD,IAAI,CAACywB,EAAS7sB,IAC7B7oB,IAAAoa,cAACu+D,GAAY,CACXjjC,QAASA,EACTmjC,yBAA0BA,EAC1B1uB,iBAAkBA,EAClBr6C,SAAgB,IAAN+Y,GAAW9O,EAAKrW,KAAKoI,iBAAiBgE,SAChDrI,IAAKiuC,EAAQC,aAIjB31C,IAAAoa,cAACuwB,GAAe,CACdI,SAAUW,EAAc7B,UACxBzD,QAASsF,EAActF,QACvBsG,WAAS,EACThxB,QAAS4sB,EAASrjB,IAAI,CAACywB,EAAS7sB,IAC9B7oB,IAAAoa,cAACu+D,GAAY,CACXjjC,QAASA,EACTmjC,yBAA0BA,EAC1B1uB,iBAAkBA,EAClBr6C,SAAgB,IAAN+Y,GAAW9O,EAAKrW,KAAKoI,iBAAiBgE,SAChDrI,IAAKiuC,EAAQC,iBAOrBniC,GAAiC,IAApB80B,EAASjnC,QAAgBimC,GACtCtnC,IAAAoa,cAAC4kC,GAAU,CACT/sC,KAAK,yBACLgtC,IAAI,4BGprBV5qB,OAAO,GAET,CACEjyB,GAAI,SACJkyB,KAAK,GAAD11B,OAXK,YAWI,WACbghB,UAAWg6C,GACXvlC,OAAO,GAET,CACEjyB,GAAI,oBACJkyB,KAAMxZ,uBACN8E,UAAWyuC,IAEb,CACEjsD,GAAI,aACJkyB,KAAK,GAAD11B,OAtBK,YAsBI,eACbghB,UAAWsjD,GACX7uC,OAAO,GAET,CACEjyB,GAAI,UACJkyB,KAAK,GAAD11B,OA5BK,YA4BI,YACbghB,UD2FW,SAAoBrE,GACjC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBgyB,EAAgBzpB,qBAAWwoB,KAC1B4vC,EAAiBC,GAAsB/mE,oBAAS,GAMjD+0B,EAAWoD,EAAc5E,iBAAiBwB,UAAY,GAU5DvwB,oBAAU,KACJgC,EAAKrW,KAAKoI,iBAAiB3F,YAGxBulC,EAAc9D,UAAUvmC,OAsB3BqqC,EAAclT,OArBdze,EAAKjW,UACFwC,aAAayT,EAAKrW,KAAKoI,iBAAiB3F,WACxC7G,KAAMqX,IACU,IAADyyB,EAAVzyB,EAAIjZ,OACNguC,EAAc7D,aAA2BlxB,EAAIjZ,KAhB5CuqC,KAAK,CAACrK,EAAGsK,IACdtK,EAAEntB,KAAOy3B,EAAEz3B,KAAa,EACxBmtB,EAAEntB,KAAOy3B,EAAEz3B,MAAc,EACtB,IAcCi7B,EAAc3D,aACJ,QAARqB,EAAAzyB,EAAIjZ,YAAI,IAAA0rC,OAAA,EAARA,EAAUjlB,KACPC,GACCA,EAAG3d,aACHvD,KAAKsV,MAAM9Z,aAAaC,QAAQ,aAAe,MAC5C8H,cACF,OAIVnH,KAAK,KAEJosC,EAAclT,SAEf94B,MAAMb,QAAQC,OAKpB,CAACib,EAAKrW,KAAKoI,iBAAiB3F,UAAWulC,EAAchE,WAExD3vB,oBAAU,KACR,MAAMojE,EAAiBC,IACjBx+E,OAAOusB,QAAU,IACnBmxD,GAAmB,GAEnBA,GAAmB,IAIvB,OADA19E,OAAO4c,SAASX,iBAAiB,SAAUsiE,GACpC,IAAMv+E,OAAO4c,SAASq4C,oBAAoB,SAAUspB,IAC1D,IAMH,MAAMzkB,EAAc8kB,IAClB,MAAMtkD,EAAO,IAAIT,KAAK+kD,GAEtB,OADA5+E,OAAOs6B,KAAOA,EACR,GAANt4B,OAAUs4B,EAAKuf,UAAS,KAAA73C,OAAIs4B,EAAK2/B,WAAa,EAAC,KAAAj4D,OAAIs4B,EAAK4/B,gBAqB1D,OACE92D,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQk4C,kBAEtB1zD,IAAAoa,cAAA,OACEqB,UAAWD,EAAQk+D,SACnBx5D,MAAO,CACLrM,MAAO0H,EAAMgxD,eACT,qBACA,sBAENvsE,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ29D,cACtBn5E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ69D,eACtBr5E,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ+L,QACnBvnB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,cACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,aACR7M,MAAOwzB,EAAchE,SACrBppB,SA1GY1U,IACxB8hC,EAAc3D,YAAYn+B,EAAEI,OAAOkO,SA0GtBwzB,EAAc9D,UAAU3iB,IAAKyiB,GAE1B1nC,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKigC,EAASjhC,WACdyR,MAAOwvB,GACNA,EAASj3B,SAMnBi7B,EAAchE,SAASsY,mBACtBhgD,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ+9D,kBACtBv5E,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQg+D,UACpBx5E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBACtBimD,EAAWhrB,EAAchE,SAASsY,oBAErChgD,IAAAoa,cAAA,KAAGqB,UAAWD,EAAQi+D,QACpBz5E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,oBACtBimD,EAAWhrB,EAAchE,SAASuY,mBAIzCjgD,IAAAoa,cAAC4F,IAAM,CACLE,MAAO,CAAEvB,UAAW,GACpBlE,QAAQ,WACRH,QAASA,IACPP,EAAKjW,UACF0C,2BAA2BklC,EAAchE,SAASjhC,YAClDnH,KAAMqX,GAAQ+0B,EAAclT,SAEjCx4B,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAI7BzQ,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACuB,IAAc,CACbF,UAAS,GAAA7c,OAAK4c,EAAQu4C,aAAY,KAAAn1D,OAChC8sC,EAAcl4B,WAAagI,EAAQy4C,iBAEvCj0D,IAAAoa,cAACkP,KAAI,CACH6C,WAAS,EACT8hB,QAAQ,gBACRxyB,UAAWD,EAAQsgE,eACnB97E,IAAAoa,cAACkP,KAAI,CACHC,MAAI,EACJC,GAAI,GACJ/N,UAAWD,EAAQ0S,QACnBluB,IAAAoa,cAACuF,IAAU,CAAClE,UAAWD,EAAQ6O,OAxF3C,WACE,IAAInjB,EAAQ,GACZ,GAAIwkC,EAAc5E,iBAAiBwB,SAAU,CAC3C,IAAIje,EAAQqhB,EAAc5E,iBAAiBwB,SAASjnC,OAChDk/C,EAAQ7U,EAAc5E,iBAAiBk/B,qBAC3C9+D,EACElH,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,eAAe,IAAA7R,OACjCyrB,EAAK,KACVrqB,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,OAAO,IAAA7R,OACzB2hD,EAAK,KACVvgD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAI7B,OAAOvJ,EAyE0Cg1E,OAI7Cl8E,IAAAoa,cAACuB,IAAc,CACbF,UAAS,GAAA7c,OAAK4c,EAAQu4C,aAAY,KAAAn1D,OAChC8sC,EAAcl4B,WAAagI,EAAQy4C,iBAGtComB,EACCr6E,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRH,QA9GV,WACE1d,OAAOurB,SAAS,EAAG,IA8GX1M,UAAWD,EAAQspD,oBACnB9kE,IAAAoa,cAAC+hE,KAAc,MACfn8E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAEvB,MAMNzQ,IAAAoa,cAAA,OACEqB,UAAWD,EAAQ09D,gBACnBh5D,MAAO,CACLvB,UAAW+sB,EAAc/B,6BAA+B,IAAM,MAEhE3pC,IAAAoa,cAACuwB,GAAe,CACdI,SAAUW,EAAc7B,UACxBzD,QAASsF,EAActF,QACvBsG,WAAS,EACThxB,QAAS4sB,EAASrjB,IAAI,CAACywB,EAAS7sB,IAC9B7oB,IAAAoa,cAACu+D,GAAY,CACXlyE,WAAYilC,EAAchE,SAASjhC,WACnCqzE,gBAAiBpuC,EAAclT,KAC/Bkd,QAASA,EACTmjC,yBAA0BA,OAC1B1uB,iBAAkBA,OAClBr6C,SAAgB,IAAN+Y,GAAW9O,EAAKrW,KAAKoI,iBAAiBgE,SAChDrI,IAAKmgD,KAAKgb,iBCnSpBvuC,OAAO,GAET,CACEjyB,GAAI,OACJkyB,KAAK,GAAD11B,OAlCK,YAkCI,SACbghB,UAAWuhB,GACX9M,OAAO,GAET,CACEjyB,GAAI,iBACJkyB,KAAMxZ,2BACN8E,UAAWq7C,IAEb,CACE74D,GAAI,SACJkyB,KAAMxZ,mBACN8E,UAAWqwC,GACXgV,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,gBACJkyB,KAAMxZ,2BACN8E,UAAWqwC,GACXgV,YAAa,EACb5wC,OAAO,GAET,CACEjyB,GAAI,qBACJkyB,KAAMxZ,gCACN8E,UAAWqwC,GACXgV,YAAa,IAIF,QACbgG,SAAU7oE,GAAM4iE,GAAO7gD,KAAM0E,GAAMA,EAAEzmB,KAAOA,GAC5C0Y,KAnEW,YAoEXkqD,OAAQA,ICpEV,SAASvkD,GAAc5G,GAAqC,IAAlC+F,UAAWQ,KAAcrD,GAAMlD,EACvD,OACE7Z,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GACAJ,EAAI,CACRwD,OAAShF,GACPvb,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GACJ5B,EACAwB,OA+ECnB,mBAtEClI,IAAK,CACnBoH,KAAM,CACJC,QAAS,QAEXy4B,KAAM,CACJz4B,QAAS,QAEXo0B,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZvD,eAAgB,WAChBiB,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBzzB,QAAS,CACPiD,UAAW,GACXuN,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,GACvBgD,OAAQ,oBACRN,gBAAiB,QACjB+M,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvCtc,WA1BgB,KA4BlBkhB,aAAc,CACZ9oB,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOgF,QACjC9E,SAAU/7B,EAAM47B,YAAYG,SAASG,iBAEvCxc,WAAY,IAEdohB,cAAe,CACbphB,WAAY,KAoCDxX,EAhCf,SAAiBL,GACf,MAAM,QAAEC,GAAYD,EACdxB,EAAOkI,qBAAWvI,GAClBZ,EAAUs3B,KAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAExD,OACE/vC,IAAAoa,cAAA,QACEqB,UAAW2B,IAAW5B,EAAQE,QAAS,CACrC,CAACF,EAAQ84B,eAAgBv6B,EAAKtF,YAAcqE,EAC5C,CAAC0C,EAAQg5B,gBAAiB17B,KAE5B9Y,IAAAoa,cAACkyD,IAAM,CAACl0D,QAAS2B,EAAK3B,SACpBpY,IAAAoa,cAACwU,IAAM,KACJo2C,GAAOA,OAAO//C,IAAKkG,GAClBnrB,IAAAoa,cAACqG,GAAcvD,OAAAC,OAAA,CACb2qB,WAAS,EACTykC,eAAgBxyD,EAAKtF,WACrB4f,OAAK,EACLC,KAAMnJ,EAAEmJ,KACRrwB,MAAO,EACPwD,IAAK0jB,EAAE/oB,GACPA,GAAI+oB,EAAE/oB,IACF+oB,KAGRnrB,IAAAoa,cAACkG,IAAK,CAACV,UAAWysD,WCpF5B,MAmBMjB,GAAUA,CAAChpE,EAAImjB,EAAOke,KACnB,CACLrhC,GAAIA,EACJshC,MAAO2nC,GAAcJ,SAAS7oE,GAC9BmjB,MAAOA,EACPke,SAAUA,IAICynC,OA5BKA,KAClB,MAAMnxD,EAAOkI,qBAAWvI,IAClB,mBAAE4Z,GAAuBvZ,EAAKrW,KAAK+R,YACnCouB,EAAkB,CACtBunC,GAAQ,gBAAiB,EAAG,iBAC5BA,GAAQ,SAAU,EAAG,UACrBA,GAAQ,aAAc,EAAG,cACzBA,GAAQ,OAAQ,EAAG,SAOrB,OAJI93C,GACFuQ,EAAgB7qB,KAAKoyD,GAAQ,UAAW,EAAG,YAGtC,CACLvnC,gBAAiBA,ICHrB,MAAMjpB,GAAYC,YAAYnH,IAAK,CACjC43D,UAAW,CACT94D,MAAO,UACP+4D,kBAAmB,QACnB9tD,SAAU,WACV4O,KAAM,MAkDKm/C,OA9Cf,SAAoBjwD,GAClB,MAAMC,EAAUZ,KAEVk6B,GADO7yB,qBAAWvI,GACTuI,qBAAWk0B,MACnBlzB,EAAMyZ,GAAWnpB,oBAAS,GAEjC,SAASq4D,EAAsB/+C,GAC7B6P,EAAQ7P,GAGV,OACE7sB,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC+1B,GAAW50B,EACVvb,IAAAoa,cAACC,IAAU,CACT7H,MAAM,UACN8H,QAASA,IAAMsxD,GAAsB,IACnC92B,EAAOthC,UAOPxT,IAAAoa,cAAC0D,IAAgB,CACfrD,QAAQ,gBACRqxD,eAAa,EACbrwD,UAAWD,EAAQ8vD,UACnBvtD,KAAM,GACNC,UAAW,IAXbhe,IAAAoa,cAAC2xD,KAAK,CACJC,aAAcl3B,EAAOzqB,MACrB7X,MAAM,aACNxS,IAAAoa,cAAC6xD,KAAc,SAcvBjsE,IAAAoa,cAAC65B,GAAgB,CACfC,WAAYg3B,KAAcrnC,kBAG5B7jC,IAAAoa,cAACgyD,GAAU,CACTnpD,KAAMA,EACN3I,QAASsxD,MC7CjB,MAAMhxD,GAAYC,YAAW,MAC3BuhE,cAAe,CACbvoE,MAAO,OACP8K,UAAW,OACX2C,aAAc,OACdga,UAAW,UAEbnnB,MAAO,CACLN,MAAO,IACPsR,SAAU,OACVpG,OAAQ,IACRtB,SAAU,WACV3B,OAAQ,OACR6C,UAAW,OACXF,gBAAiB,QACjB6c,UAAW,SACXU,WAAY,IAEdqgD,WAAY,CACVthE,QAAS,QACTlH,MAAO,MACPiI,OAAQ,OACR6C,UAAW,IAEb29D,YAAa,CACXzoE,MAAO,IACPsL,YAAa,IAEfk8C,aAAc,CACZ18C,UAAW,IAEb6hC,aAAc,CACZ7hC,UAAW,GACXQ,YAAa,KAEfo9D,aAAc,CACZzgE,OAAQ,GAEV0gE,kBAAmB,CACjBv8C,OAAQ,OACRthB,UAAW,IAEb89D,iBAAkB,CAChB3gE,OAAQ,OA0cZ,MAAM4gE,GAAanhE,IACjB,MAAM,UAAEohE,EAAS,MAAE1oE,EAAK,UAAE2oE,EAAS,GAAEx6E,EAAE,aAAEy6E,EAAY,aAAEC,GAAiBvhE,EAClEwhE,EAAS98E,iBAAO,MAGhB+8E,EAAcA,KAClBD,EAAO78E,QAAQggB,MAAMnB,OACnB6oC,KAAKq1B,MAAMF,EAAO78E,QAAQg9E,aAJV,EAAI,KAImC,MAW3D,OARAnlE,oBAAU,KACRilE,IACApgF,OAAOic,iBAAiB,SAAUmkE,GAAa,GACxC,KACLpgF,OAAOi1D,oBAAoB,SAAUmrB,GAAa,KAEnD,CAACD,IAGF/8E,IAAAoa,cAAComB,KAAI,CACHwkB,IAAK+3B,EACL78D,MAAO,CACLzC,SAAU,aAEZzd,IAAAoa,cAAA,UACEhY,GAAIu6E,EACJz8D,MAAO,CACLi9D,QAAS,WACThiE,IAAK,EACLkR,KAAM,EACNtN,OAAQ,OACRlL,MAAO,QAETI,MAAOA,EACPwL,IAAG,0CAAA7gB,OAA4C+9E,EAAS,wBACxDS,iBAAe,EACfC,MAAM,6FACNC,YAAY,MACbT,GAAgBC,GACf98E,IAAAoa,cAAC8O,KAAQ,CACP5O,QAASA,IAAMsiE,EAAUx6E,GACzB8d,MAAO,CACLzC,SAAU,WACVsD,OAAQ,GACRD,MAAO,EACPE,OAAQ,EACRxO,MAAO,QACPyW,OAAQ,eCnjBd+7C,GAAS,CACb,CACE5iE,GAAI,YACJkyB,KAAK,GAAD11B,OALK,aAKI,KACbghB,UD4DW,SAAmBrE,GAChC,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,IACjB6jE,EAAWC,GAAgBjqE,mBAAS,KACpCkqE,EAAaC,GAAkBnqE,mBAAS,KACxCoqE,EAAYC,GAAiBrqE,mBAAS,KACtChJ,EAAMgc,GAAWhT,mBAAS,IAE1BsqE,EAAUC,GAAevqE,oBAAS,IAClCwqE,EAAiBC,GAAsBzqE,oBAAS,IAChDvE,EAASivE,GAAc1qE,mBAAS,KAChCU,EAAOC,GAAYX,mBAAS,KAC5BtL,EAAOi2E,GAAY3qE,mBAAS,KAC5BnR,EAAIqhB,GAASlQ,mBAAS,KACtB4qE,EAAUC,GAAe7qE,mBAAS,KAClCiiD,EAAQ6oB,GAAa9qE,oBAAS,IAC9B+qE,EAAYC,GAAiBhrE,oBAAS,IACtCirE,EAAiBC,GAAsBlrE,mBAAS,KAChDwmC,EAAQC,GAAazmC,mBAAS,CAAC,MAC/BmrE,EAAe38C,GAAKxuB,mBACzB3W,OAAO+hF,WAAa,IAAO,EAAI/hF,OAAO+hF,WAAa,IAAM,EAAI,GAEzD9B,EAAe9iE,EAAKrW,KAAK+R,YAAYma,iBACpCktD,EAAc8B,GAAmBrrE,mBAASspE,IAC3C,eAAEtQ,GAAmBhxD,EAE3BxD,oBAAU,KACRgC,EAAKjW,UACFwK,YACAhP,KAAMqX,IACLqjC,EAAUrjC,EAAIjZ,QAEfgC,MAAM,SACR,IAEHqY,oBAAU,KACRgC,EAAKjW,UACF6K,mBACArP,KAAMqX,IACL6mE,EAAa7mE,EAAIjZ,QAElBgC,MAAM,SACR,IAEH,MAAMm/E,EAAgBhwE,MACfyvE,GAAczvE,EAAM2mD,YAGrB8oB,IAAezvE,EAAM2mD,aAIV,OAAXioB,QAAW,IAAXA,OAAW,EAAXA,EAAar7E,KACXyM,EAAM5G,QAAoB,OAAXw1E,QAAW,IAAXA,OAAW,EAAXA,EAAar7E,QAK9Bu7E,IACG9uE,EAAMsvE,SAASvtC,cAActiB,SAASqvD,EAAW/sC,iBAC/C/hC,EAAMoF,MAAM28B,cAActiB,SAASqvD,EAAW/sC,kBASnDkuC,EAAmBA,KACvBb,EAAW,IACX/pE,EAAS,IACTgqE,EAAS,IACTE,EAAY,IACZK,EAAmB,IACnBh7D,EAAM,IACN46D,GAAU,IAGNzB,EAAax6E,IACjB,MAAMyM,EAAQ0uE,EAAUp5D,KAAMC,GAAOA,EAAGhiB,KAAOA,GAC/CqhB,EAAMrhB,GACN67E,EAAWpvE,EAAM8tE,WACjBzoE,EAASrF,EAAMoF,OACfiqE,EACEnkC,EAAO51B,KAAMlc,GAAUA,EAAM7F,IAAMyM,EAAM5G,QAAU,CACjDf,MAAO,OACP9E,GAAI,KAGRg8E,EAAYvvE,EAAMsvE,UAClBM,EAAmB5vE,EAAM2vE,iBACzBH,EAAUxvE,EAAM2mD,QAChBwoB,GAAmB,GACnBF,GAAY,IAYRiB,EAAcA,KAClB,MAAMC,EAAW,CACfrC,UAAW3tE,EACXiF,QACAhM,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAO7F,GACd+7E,WACAK,kBACAhpB,UAEFz7C,EAAKjW,UAAU8K,gBAAgBowE,GAAU1/E,KAAMqX,IAE7C6mE,EAAa,IAAID,EAAW5mE,EAAIjZ,SAElCohF,IACAd,GAAmB,GACnBF,GAAY,IAGRmB,EAAaA,KACjB,MAAMD,EAAW,CACf58E,KACAu6E,UAAW3tE,EACXiF,QACAhM,MAAY,OAALA,QAAK,IAALA,OAAK,EAALA,EAAO7F,GACd+7E,WACAK,kBACAhpB,UAEFz7C,EAAKjW,UAAUgL,iBAAiBkwE,GAAU1/E,KAAK,KAE7Ck+E,EACED,EAAUt4D,IAAKb,GACTA,EAAGhiB,KAAOA,EACL48E,EAEF56D,IAGX06D,IACAd,GAAmB,GACnBF,GAAY,MAuBVoB,EAAoB30E,IACxBgc,EAAQhc,IAGV,OACEvK,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ4gE,eACtBp8E,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ+L,QACnBvnB,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,SACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLC,QAAQ,QACR7M,MAAOulE,EACPv9D,MAAO,CAAErM,MAAO,IAAKsL,YAAa,IAClCb,SAAW1U,IACT8zE,EAAe9zE,EAAEI,OAAOkO,OACxBqO,EAAQ,KAET,CAAC,CAAEnkB,GAAI,GAAI8E,MAAO,UAAY6yC,GAAQ90B,IAAI,CAAChd,EAAO4gB,IAE/C7oB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAK,IAAMohB,EACX3Q,MAAOjQ,GACNA,EAAMf,UAMjBlH,IAAAoa,cAAC6C,IAAS,CACR/E,MAAOylE,EACPr/D,SAAW1U,IACTg0E,EAAch0E,EAAEI,OAAOkO,OACvBqO,EAAQ,IAEV9L,QAAQ,WACRiC,WAAS,EACTkiB,WAAS,EACT13B,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAC9BgL,UAAWD,EAAQ8gE,cAEpBO,GACC78E,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,UACNiI,QAAQ,YACRgB,UAAWD,EAAQ+gE,aACnBjiE,QAASA,IAAM0jE,GAAoBD,IACnC/9E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAG1BosE,GACC78E,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAASyzD,EACTx+D,SAAUA,IAAMsgE,GAAiB9B,KAGrC51E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,mBAGjCosE,GACC78E,IAAAoa,cAACsU,KAAgB,CACfC,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAASi1D,EACThgE,SAAUA,IAAMigE,GAAeD,KAGnCp3E,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAKpCzQ,IAAAoa,cAACo0B,KAAK,CACJvrB,KAAM86D,EACN57D,QAASA,KACP67D,GAAmB,GACnBc,IACAhB,GAAY,KAEd99E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQrH,OACtBnU,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRgB,UAAWD,EAAQqhD,eAClBghB,EACC79E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBAEvBzQ,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,qBACvBzQ,IAAAoa,cAAA,KACE8F,MAAO,CACLd,eAAgB,YAChB5M,MAAO,OACPgS,SAAU,KAEZxkB,IAAAoa,cAAC6F,IAAI,CAAC1X,GAAG,mBACPvI,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,yBAMjCzQ,IAAAoa,cAAA,QAAMq0B,SApLE7kC,IACdA,EAAEC,iBACEg0E,EACFoB,IAEAF,MAgLM/+E,IAAAoa,cAAC6C,IAAS,CACR/E,MAAOlJ,EACPsP,SAlIa1U,IACvB,MAAMu1E,EAAQv1E,EAAEI,OAAOkO,MACnBinE,EAAM7wD,SAAS,qBACjB2vD,EAAWkB,EAAM7nD,MAAM,aAAa,IAEpC2mD,EAAWkB,IA8HH1kE,QAAQ,WACRiC,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,YAC9BgL,UAAWD,EAAQ6gE,aAEpBrtE,GACChP,IAAAoa,cAAA,OACE8F,MAAO,CACLrM,MAAO,IACPkL,OAAQ,IACRtB,SAAU,WACV3B,OAAQ,OACRwF,aAAc,KAEhBthB,IAAAoa,cAAA,UACEhY,GAAI4M,EACJyM,UAAWD,EAAQghE,kBACnBvoE,MAAOA,EACPwL,IAAG,0CAAA7gB,OAA4CoQ,EAAO,wBACtDquE,MAAM,6FACNn9D,MAAO,CACLmM,KAAM,EACNlR,IAAK,EACL4D,OAAQ,OACRlL,MAAO,OACP4J,SAAU,YAEZ6/D,YAAY,IACZF,iBAAe,KAGrBp9E,IAAAoa,cAAC6C,IAAS,CACR/E,MAAOjE,EACPqK,SAAW1U,GAAMsK,EAAStK,EAAEI,OAAOkO,OACnCuC,QAAQ,WACRiC,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,UAC9BgL,UAAWD,EAAQ6gE,aAErBr8E,IAAAoa,cAACwK,KAAW,CACVnK,QAAQ,WACRgB,UAAWD,EAAQ6gE,YACnBr8E,IAAAoa,cAACyK,KAAU,CAACziB,GAAG,SACbpC,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAEzBzQ,IAAAoa,cAAC0K,KAAM,CACLpI,WAAS,EACTqI,QAAQ,QACR7M,MAAOjQ,EACPqW,SAAW1U,IACTs0E,EAASt0E,EAAEI,OAAOkO,SAEnB,CAAC,CAAE9V,GAAI,GAAI8E,MAAO,WAAa6yC,GAAQ90B,IAAI,CAAChd,EAAO4gB,IAEhD7oB,IAAAoa,cAAC4K,KAAQ,CACPvd,IAAKohB,EACL3Q,MAAOjQ,GACNA,EAAMf,UAMjBlH,IAAAoa,cAAC6C,IAAS,CACR/E,MAAOimE,EACP7/D,SAAW1U,GAAMw0E,EAAYx0E,EAAEI,OAAOkO,OACtCuC,QAAQ,WACRiC,WAAS,EACTxV,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAC9BgL,UAAWD,EAAQ6gE,aAErBr8E,IAAAoa,cAACsU,KAAgB,CACfjT,UAAWD,EAAQ8kC,MACnB3xB,QACE3uB,IAAAoa,cAACwU,KAAM,CACLpc,MAAM,UACN6W,QAASmsC,EACTl3C,SAAUA,IAAM+/D,GAAW7oB,KAG/BtuD,MAAOlH,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,gBAEhCzQ,IAAAoa,cAAA,WACGyjE,GACC79E,IAAAoa,cAAC4F,IAAM,CACLxN,MAAM,YACNiI,QAAQ,YACRH,QAjNI8kE,KAClBrlE,EAAKjW,UAAUiL,mBAAmB3M,GAAI9C,KAAMqX,IAE1C6mE,EAAaD,EAAUv+D,OAAQoF,GAAOA,EAAGhiB,IAAMA,IAC/C08E,IACAd,GAAmB,GACnBF,GAAY,MA4MAriE,UAAWD,EAAQglC,cACnBxgD,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,iBAG3BzQ,IAAAoa,cAAC4F,IAAM,CACLvD,KAAK,SACLjK,MAAM,UACNiI,QAAQ,YACRgB,UAAWD,EAAQ6/C,cAClBwiB,EACC79E,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,cAEvBzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kBAOnCzQ,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,WACvBt7B,IAAAoa,cAAA,OAAK8F,MAAO,CAAEiF,SAAU,KAAMrJ,OAAQ,SACpC9b,IAAAoa,cAAA,OACE8F,MAAO,CACLnF,QAAS,OACT0tC,oBAAoB,WAAD7pD,OAAagpD,KAAKy3B,KACnCX,GACD,wBACDh2B,iBAAiB,WAAD9pD,OAAagpD,KAAKy3B,KAAKX,GAAc,SACrDY,UAAW,OACXC,OAAQ,SAEThC,EACEv+D,OAAO6/D,GACP58C,MAAM13B,EAAOm0E,GAAgBn0E,EAAO,GAAKm0E,GACzCz5D,IAAKb,GACJpkB,IAAAoa,cAACsiE,GAASx/D,OAAAC,OAAA,GACJiH,EAAE,CACNmoD,eAAgBA,EAChB9kE,IAAK2c,EAAGhiB,GACRy6E,aAAcA,EACdD,UAAWA,EACXE,aAAcA,OAItB98E,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQihE,iBACnB5/D,SAAUtS,EAAO,EACjB+P,QAASA,IAAM4kE,EAAiB30E,EAAO,GACvCkQ,QAAQ,YACP,KAEHza,IAAAoa,cAACuF,IAAU,CACTO,MAAO,CAAEnF,QAAS,gBAClBN,QAAQ,aACRza,IAAAoa,cAAC4H,GAAgB,CACfE,UAAW,CACT3X,EAAO,EACPq9C,KAAKC,KACH01B,EAAUv+D,OAAO6/D,GAAcx9E,OAASq9E,IAG5CjuE,KAAK,cAGTzQ,IAAAoa,cAAC4F,IAAM,CACLvE,UAAWD,EAAQihE,iBACnB5/D,UACGtS,EAAO,GAAKm0E,GACbnB,EAAUv+D,OAAO6/D,GAAcx9E,OAEjCiZ,QAASA,IAAM4kE,EAAiB30E,EAAO,GACvCkQ,QAAQ,YACP,UCtfX4Z,OAAO,GAET,CACEjyB,GAAI,OACJkyB,KAAK,GAAD11B,OAXK,aAWI,SACbghB,UAAWuhB,GACX9M,OAAO,IAII,QACb42C,SAAU7oE,GAAM4iE,GAAO7gD,KAAM0E,GAAMA,EAAEzmB,KAAOA,GAC5C0Y,KAnBW,aAoBXkqD,OAAQA,ICdV,SAASvkD,GAAc5G,GAAqC,IAAlC+F,UAAWQ,KAAcrD,GAAMlD,EACvD,OACE7Z,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GACAJ,EAAI,CACRwD,OAAShF,GACPvb,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GACJ5B,EACAwB,OA8ECnB,mBArEClI,IAAK,CACnBoH,KAAM,CACJC,QAAS,QAEXy4B,KAAM,CACJz4B,QAAS,QAEXo0B,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZvD,eAAgB,WAChBiB,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBzzB,QAAS,CACPiD,UAAW,GACXuN,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,GACvBgD,OAAQ,oBACRN,gBAAiB,QACjB+M,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvCtc,WA1BgB,KA4BlBkhB,aAAc,CACZ9oB,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOgF,QACjC9E,SAAU/7B,EAAM47B,YAAYG,SAASG,iBAEvCxc,WAAY,IAEdohB,cAAe,CACbphB,WAAY,KAmCDxX,EA/Bf,SAAiBL,GACf,MAAM,QAAEC,GAAYD,EACdxB,EAAOkI,qBAAWvI,GAClBZ,EAAUs3B,KAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAExD,OACE/vC,IAAAoa,cAAA,QACEqB,UAAW2B,IAAW5B,EAAQE,QAAS,CACrC,CAACF,EAAQ84B,eAAgBv6B,EAAKtF,YAAcqE,EAC5C,CAAC0C,EAAQg5B,gBAAiB17B,KAE5B9Y,IAAAoa,cAACkyD,IAAM,CAACl0D,QAAS2B,EAAK3B,SACpBpY,IAAAoa,cAACwU,IAAM,KACJo2C,GAAOA,OAAO//C,IAAKkG,GAClBnrB,IAAAoa,cAACqG,GAAcvD,OAAAC,OAAA,CACbovD,eAAgBxyD,EAAKtF,WACrB4f,OAAK,EACLC,KAAMnJ,EAAEmJ,KACR7sB,IAAK0jB,EAAE/oB,GACPA,GAAI+oB,EAAE/oB,GACN6B,MAAO,GACHknB,KAGRnrB,IAAAoa,cAACkG,IAAK,CAACV,UAAWysD,WCrF5B,MAAMjB,GAAUA,CAAChpE,EAAImjB,EAAOke,KACnB,CACLrhC,GAAIA,EACJshC,MAAO2nC,GAAcJ,SAAS7oE,GAC9BmjB,MAAOA,EACPke,SAAUA,IAMC,QACbI,gBAHsB,CAACunC,GAAQ,YAAa,EAAG,aAAcA,GAAQ,OAAQ,EAAG,UCKnEI,OAZf,SAAoBjwD,GAClB,OACEvb,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC+1B,GAAW50B,GAEZvb,IAAAoa,cAAC65B,GAAgB,CACfC,WAAYsrC,GAAmB37C,oBCRvC,MAEMmhC,GAAS,CACb,CACE5iE,GAAI,OACJkyB,KAAK,GAAD11B,OALK,iBAKI,KACbghB,UCLW,WACb,OACE5f,IAAAoa,cAAA,KACEpQ,OAAO,SACPs5B,IAAI,sBACJpjB,MAAO,CAAEsE,SAAU,GAAIhS,MAAO,OAAQ8oB,UAAW,SAAUxf,OAAQ,IACnE4B,KAAK,6BACL1d,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,sBDDzB4jB,OAAO,GAET,CACEjyB,GAAI,OACJkyB,KAAK,GAAD11B,OAXK,iBAWI,SACbghB,UAAWuhB,GACX9M,OAAO,IAII,QACb42C,SAAU7oE,GAAM4iE,GAAO7gD,KAAM0E,GAAMA,EAAEzmB,KAAOA,GAC5C0Y,KAnBW,iBAoBXkqD,OAAQA,IEbV,SAASvkD,GAAc5G,GAAqC,IAAlC+F,UAAWQ,KAAcrD,GAAMlD,EACvD,OACE7Z,IAAAoa,cAACkG,IAAKpD,OAAAC,OAAA,GACAJ,EAAI,CACRwD,OAAShF,GACPvb,IAAAoa,cAACgG,EAASlD,OAAAC,OAAA,GACJ5B,EACAwB,OA8ECnB,mBArEClI,IAAK,CACnBoH,KAAM,CACJC,QAAS,QAEXy4B,KAAM,CACJz4B,QAAS,QAEXo0B,QAAS,CACPp0B,QAAS,OACTwD,WAAY,SACZvD,eAAgB,WAChBiB,QAAS,WACNvI,EAAMqhB,OAAOoa,SAElBzzB,QAAS,CACPiD,UAAW,GACXuN,SAAU,EACVjQ,QAASvI,EAAMqI,QAAQ,GACvBgD,OAAQ,oBACRN,gBAAiB,QACjB+M,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOC,MACjCC,SAAU/7B,EAAM47B,YAAYG,SAASC,gBAEvCtc,WA1BgB,KA4BlBkhB,aAAc,CACZ9oB,WAAY9X,EAAM47B,YAAYrxC,OAAO,SAAU,CAC7CsxC,OAAQ77B,EAAM47B,YAAYC,OAAOgF,QACjC9E,SAAU/7B,EAAM47B,YAAYG,SAASG,iBAEvCxc,WAAY,IAEdohB,cAAe,CACbphB,WAAY,KAmCDxX,EA/Bf,SAAiBL,GACf,MAAM,QAAEC,GAAYD,EACdxB,EAAOkI,qBAAWvI,GAClBZ,EAAUs3B,KAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAExD,OACE/vC,IAAAoa,cAAA,QACEqB,UAAW2B,IAAW5B,EAAQE,QAAS,CACrC,CAACF,EAAQ84B,eAAgBv6B,EAAKtF,YAAcqE,EAC5C,CAAC0C,EAAQg5B,gBAAiB17B,KAE5B9Y,IAAAoa,cAACkyD,IAAM,CAACl0D,QAAS2B,EAAK3B,SACpBpY,IAAAoa,cAACwU,IAAM,KACJo2C,GAAOA,OAAO//C,IAAKkG,GAClBnrB,IAAAoa,cAACqG,GAAcvD,OAAAC,OAAA,CACbovD,eAAgBxyD,EAAKtF,WACrB4f,OAAK,EACLC,KAAMnJ,EAAEmJ,KACR7sB,IAAK0jB,EAAE/oB,GACP6B,MAAO,GACP7B,GAAI+oB,EAAE/oB,IACF+oB,KAGRnrB,IAAAoa,cAACkG,IAAK,CAACV,UAAWysD,WCrF5B,MAAMjB,GAAUA,CAAChpE,EAAImjB,EAAOke,KACnB,CACLrhC,GAAIA,EACJshC,MAAO2nC,GAAcJ,SAAS7oE,GAC9BmjB,MAAOA,EACPke,SAAUA,IAIC,QACXI,gBAAiB,CAACunC,GAAQ,OAAQ,EAAG,QAASA,GAAQ,OAAQ,EAAG,UCGtDI,OAXf,SAAoBjwD,GAClB,OACEvb,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC+1B,GAAW50B,GACZvb,IAAAoa,cAAC65B,GAAgB,CACfC,WAAYsrC,GAAmB37C,oBCQvC,MAAM47C,GAAY,CAChB,CACEr9E,GAAI,QACJkyB,KAAM,aACN1U,UAAW,KACX3b,OAAQ,EACRowB,OAAO,GAET,CACEjyB,GAAI,MACJkyB,KAAM,OACN1U,UvHoBW,SAAsBrE,GACnC,MAAMxB,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,KACV9B,EAAUs3B,aAAcr2B,EAAKrG,MAAMmtB,YAAYkP,GAAG,OAExD,OACE/vC,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAC+1B,GAAMjzB,OAAAC,OAAA,GACD5B,EAAK,CACT9B,aAAcM,EAAK2lE,iBACnBjrE,WAAYsF,EAAKtF,cAEnBzU,IAAAoa,cAAC65B,GAAgB,CACfC,WAAY3Q,KAAcM,kBAE5B7jC,IAAAoa,cAAA,QACEqB,UAAW2B,IAAW5B,EAAQE,QAAS,CACrC,CAACF,EAAQ84B,cAAev6B,EAAKtF,YAAcqE,EAC3C,CAAC0C,EAAQg5B,gBAAiBz6B,EAAKtF,YAAcqE,KAE/C9Y,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ2zB,UACxBnvC,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,OACL/T,OAAQA,IAAMvgB,IAAAoa,cAACimB,GAAS,QAE1BrgC,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,gBACL/T,OAAQA,IAAMvgB,IAAAoa,cAACslB,GAAgB,QAEjC1/B,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,YACL/T,OAAQA,IAAMvgB,IAAAoa,cAACulE,GAAW,CAAC17E,MAAO,MAEpCjE,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,gBACL/T,OAAQA,IAAMvgB,IAAAoa,cAAC4lB,GAAQ,QAGzBhgC,IAAAoa,cAACqG,GAAc,CACb6T,KAAK,aACLva,KAAMA,EACN6F,UAAWggE,GACXj/D,YAAa,QuHjEnB1c,MAAO,EACPowB,OAAO,GAET,CACEjyB,GAAI,WACJ6B,MAAO,EACPqwB,KAAMurD,GAAe/kE,KACrB8E,UCvBW,SAAsBrE,GACnC,OACEvb,IAAAoa,cAACswB,GAAgB,KACf1qC,IAAAoa,cAACu8B,GAAgB,KACf32C,IAAAoa,cAACg8B,GAAc,CAAC3oC,SAAU,GACxBzN,IAAAoa,cAACw/B,GAAqB,KACpB55C,IAAAoa,cAAC8/B,GAAgB,KACfl6C,IAAAoa,cAAC0gC,GAAa,KACZ96C,IAAAoa,cAACoxD,GAAU,MACXxrE,IAAAoa,cAAC0lE,GAAO,CAAC/iF,MAAOwe,EAAMxe,eDelCioE,OAAQ6a,GAAe7a,QAEzB,CACE5iE,GAAI,oBACJ6B,MAAO,EACPqwB,KAAMyrD,GAAwBjlE,KAC9B8E,UErCW,WACb,OACE5f,IAAAoa,cAAC6yD,GAAa,KACZjtE,IAAAoa,cAACoxD,GAAU,MACXxrE,IAAAoa,cAAC0lE,GAAO,QFkCV9a,OAAQ+a,GAAwB/a,QAElC,CACE5iE,GAAI,UACJ6B,MAAO,EACPqwB,KAAM0rD,GAAcllE,KACpB8E,UGxCW,WACb,OACE5f,IAAAoa,cAACswB,GAAgB,KACf1qC,IAAAoa,cAACu8B,GAAgB,KACf32C,IAAAoa,cAACg8B,GAAc,CAAC3oC,SAAU,GACtBzN,IAAAoa,cAAC8/B,GAAgB,KACfl6C,IAAAoa,cAAC0gC,GAAa,KACZ96C,IAAAoa,cAACoxD,GAAU,MACXxrE,IAAAoa,cAAC0lE,GAAO,YHiCpB9a,OAAQgb,GAAchb,QAExB,CACE5iE,GAAI,WACJ6B,MAAO,EACPqwB,KAAM2rD,GAAenlE,KACrB8E,UIrDW,WACb,OACE5f,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACoxD,GAAU,MACXxrE,IAAAoa,cAAC0lE,GAAO,QJkDV9a,OAAQib,GAAejb,QAEzB,CACE5iE,GAAI,eACJ6B,MAAO,GACPqwB,KAAM4rD,GAAmBplE,KACzB8E,UK5DW,WACb,OACE5f,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACoxD,GAAU,MACXxrE,IAAAoa,cAAC0lE,GAAO,QLyDV9a,OAAQkb,GAAmBlb,SAIxB,SAAS1kC,GAAQl+B,GACtB,OAAOq9E,GAAUt7D,KAAM3N,GAAMA,EAAEvS,QAAU7B,GMsB5BwZ,WAhFClI,IAAK,CACnBzB,KAAM,CACJkuE,iBAAkB,YAClBC,mBAAoB,aACpB3hE,gBAAiB,UACjB1D,QAAS,OACTlH,MAAO,OACPkL,OAAQ,OACRqc,gBAAiB,qCAEnBtgB,KAAM,CACJjH,MAAO,OACPkH,QAAS,QACTqY,WAAY1f,EAAMqI,QAAQ,GAC1BoD,YAAazL,EAAMqI,QAAQ,GAC3B,CAACrI,EAAMmtB,YAAYkP,GAAG,IAAyB,EAAnBr8B,EAAMqI,QAAQ,KAAU,CAClDlI,MAAO,IACPuf,WAAY,OACZjU,YAAa,WA8DJvD,EAzDR,SAAmBL,GACxB,MAAO/H,EAAWC,GAAgBF,oBAAS,IACpC2F,EAAWmnE,GAAgB9sE,mBAAS,CAAElQ,SAAU,GAAIrB,SAAU,MAC9Ds+E,EAAcC,GAAmBhtE,oBAAS,IAC3C,QAAEiI,GAAYD,EACdxB,EAAOkI,qBAAWvI,GA6BxB,OAVA3B,oBAAU,KACR,GAAIgC,EAAKhG,iBAAmBgG,EAAKrW,KAAK+R,YAAYE,KAAKtU,OAAS,EAAG,CACjE,IAAIoV,EAAK6pB,GAAQvmB,EAAKrW,KAAK+R,YAAYG,cACvCyC,EAAQW,KAAKvC,EAAG6d,MAElB,MAAO,KACLisD,GAAgB,KAEjB,CAACxmE,IAGF/Z,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQvJ,MACvBjS,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAComE,GAAM,CACLhtE,UAAWA,EACX0F,UAAWA,EACXmG,QAjCR,SAAuBnH,GACrBmoE,EAAa,IAAKnnE,EAAW7V,SAAU6U,KAiCjCoH,YA9BR,SAA2BpH,GACzBmoE,EAAa,IAAKnnE,EAAWlX,SAAUkW,KA8BjC0G,OA3BR,WACEnL,GAAa,GACbsG,EAAKd,kBAAkBC,GAAWxZ,MAAM,KAClC4gF,GACF7sE,GAAa,a,qBCuJrB,SAASgtE,KACP,OACEzgF,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACsmE,KAAsB,CAACxgE,MAAO,CAAE1N,MAAO,QAASsJ,OAAQ,UACzD9b,IAAAoa,cAACuF,IAAU,CACTlF,QAAQ,KACRmF,UAAU,MAAK,WAGjB5f,IAAAoa,cAACuF,IAAU,CAAClF,QAAQ,aAAY,0CAGhCza,IAAAoa,cAAC6F,IAAI,CACHC,MAAO,CAAE1N,MAAO,QAChBjK,GAAG,UAAS,WAWLqT,WAnNClI,IAAK,CACnBZ,MAAO,CACLiI,QAAS,OACTE,cAAe,SACfsD,WAAY,SACZtC,QAAQ,GAADrd,OAAK8U,EAAMqI,QAAQ,GAAE,OAAAnd,OAAM8U,EAAMqI,QAAQ,GAAE,OAAAnd,OAAM8U,EAAMqI,QAC5D,GACD,OAEHyC,OAAQ,CACN1C,OAAQpI,EAAMqI,QAAQ,GACtB0C,gBAAiB/K,EAAM9B,QAAQQ,UAAUH,MAE3CyM,KAAM,CACJ7K,MAAO,OACP8K,UAAWjL,EAAMqI,QAAQ,IAE3B6C,OAAQ,CACND,UAAWjL,EAAMqI,QAAQ,IAE3B4C,UAAW,CACTA,UAAW,OACXE,UAAW,oBAEbC,KAAM,CACJjL,MAAO,OACPkL,OAAQ,QACRC,OAAQ,kBACR/C,QAASvI,EAAMqI,QAAQ,GACvBuF,aAAc,IAEhBrP,KAAM,CACJkuE,iBAAkB,YAClBC,mBAAoB,aACpB3hE,gBAAiB,UACjB1D,QAAS,OACTlH,MAAO,OACPkL,OAAQ,OACRqc,gBAAiB,qCAEnBtgB,KAAM,CACJjH,MAAO,OACPkH,QAAS,QACTqY,WAAY1f,EAAMqI,QAAQ,GAC1BoD,YAAazL,EAAMqI,QAAQ,GAC3B,CAACrI,EAAMmtB,YAAYkP,GAAG,IAAyB,EAAnBr8B,EAAMqI,QAAQ,KAAU,CAClDlI,MAAO,IACPuf,WAAY,OACZjU,YAAa,WAmKJvD,EA9Jf,SAAgBL,GACd,MAAMxB,EAAOkI,qBAAWvI,IAEjBjO,EAAOojC,GAAYt7B,mBAAS,KAC5BotE,EAAYC,GAAiBrtE,oBAAS,IACtCwB,EAAaC,GAAkBzB,mBAAS,KACxCstE,EAAkBC,GAAuBvtE,oBAAS,IAElDC,EAAWC,GAAgBF,oBAAS,IACpCwtE,EAAsBC,GAA2BztE,oBAAS,IAE3D,QAAEiI,EAAO,MAAEze,GAAUwe,EAGrBxY,EAASk+E,KAAKlkF,EAAMisC,OAAO5mC,IAC3BqG,EAAW1L,EAAMisC,OAAOvgC,SAYxBqb,EAAY,CAChB,QAAS,EACT,QAAS,EACT,QAAS,EACT,GAAM,EACN,QAAS,EACT,GAAM,GAGR,SAASlF,IACP,OAAKnT,EAGAsJ,GAGLtB,GAAa,QACbsG,EAAKrY,SACFY,WAAW,CACVwJ,iBAAkB/I,EAClB0F,SAAUqb,EAAUrb,IAAa,EACjCsM,cACAtJ,UAEDnM,KAAK,KACJ0hF,GAAwB,KAEzBthF,MAAOg6C,IACN76C,QAAQC,IAAI46C,GACZ3/B,EAAK3F,SAAS,CACZC,SAAU,mBACVC,QAAS,sDAGZ0C,QAAQ,IAAMvD,GAAa,KApBrBqtE,GAAoB,GAHpBF,GAAc,GA0BzB,OACE5gF,IAAAoa,cAAA,QAAMqB,UAAWD,EAAQvJ,MACvBjS,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAACkB,EAAa,CACZG,UAAWD,EAAQmD,UACnBnL,UAAWA,GACXxT,IAAAoa,cAACmF,IAAK,CAAC9D,UAAWD,EAAQ1I,OACxB9S,IAAAoa,cAAA,OACEoF,IAAI,UACJC,IAAKC,KACLjE,UAAWD,EAAQsD,OAGpBiiE,EACC/gF,IAAAoa,cAACqmE,GAAgB,MAEjBzgF,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAACyF,EAAkB,CACjBzd,GAAG,6BACHwa,QAAQ,QACR1V,MAAM,QACNgR,MAAOzM,EACP6S,SAhEhB,SAA2B1U,GACzBg3E,GAAc,GACd/xC,EAASjlC,EAAEI,OAAOkO,QA+DJqE,QAASqC,EACTpC,KAAMxc,IAAAoa,cAAC2F,IAAa,MACpBpD,UAAQ,EACRD,WAAS,EACTrf,MAAOsjF,IAGT3gF,IAAAoa,cAACyF,EAAkB,CACjBzd,GAAG,gCACHwa,QAAQ,cACR1V,MAAM,YACNgR,MAAOnD,EACPuJ,SAlFhB,SAAiC1U,GAC/Bk3E,GAAoB,GACpB9rE,EAAepL,EAAEI,OAAOkO,QAiFVqE,QAASqC,EACTpC,KAAMxc,IAAAoa,cAAC2F,IAAa,MACpBpD,UAAQ,EACRD,WAAS,EACTrf,MAAOwjF,IAGT7gF,IAAAoa,cAAC4F,IAAM,CACLvY,IAAI,cACJgV,KAAK,SACLhC,QAAQ,YACRjI,MAAM,UACNiJ,UAAWD,EAAQoD,OACnBtE,QAASsE,EACTlB,UAAM,EACNhB,WAAS,GAAC,WAIZ1c,IAAAoa,cAAC6F,IAAI,CACH1X,GAAG,SACH2X,MAAO,CAAEvB,UAAW,OAAQS,eAAgB,cAAe,oC,qBCzL7E,MAAMxE,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ6D,UAAW,OACX5D,QAAS,OACTC,eAAgB,SAChBC,cAAe,SACfsD,WAAY,UAEdzL,MAAO,MAEM,SAASouE,GAAqB3lE,GAC3C,MAAMxB,EAAOkI,qBAAWvI,GAClB3W,EAASwY,EAAMxe,MAAMisC,OAAOjmC,OAC5BvD,EAAQ+b,EAAMxe,MAAMisC,OAAOxpC,MAC3Bgc,EAAUZ,MAET5Y,EAAUsd,GAAe/L,mBAAS,KAClC4tE,EAAWC,GAAgB7tE,mBAAS,KACpC9V,EAAQkiE,GAAapsD,mBAAS,KAC9B4S,EAASC,GAAc7S,oBAAS,GAwCvC,OACEvT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,WACvBt7B,IAAAoa,cAAA,UAAI,8CACH3c,EAASuC,IAAAoa,cAAA,KAAG8F,MAAO,CAAE1N,MAAO,QAAU/U,GAAc,MAEvDuC,IAAAoa,cAACmF,IAAK,CAAC9D,UAAWD,EAAQ1I,OACvBqT,EAAUnmB,IAAAoa,cAACuB,KAAc,MAAM,KAChC3b,IAAAoa,cAACyF,EAAkB,CACjB3Y,MAAM,mBACNoX,SAhDR,SAAsBwB,GACpBR,EAAYQ,EAAI9V,OAAOkO,QAgDjBlW,UAAQ,IAEVhC,IAAAoa,cAACyF,EAAkB,CACjB3Y,MAAM,mBACNoX,SAlDR,SAAuBwB,GACrBshE,EAAathE,EAAI9V,OAAOkO,QAkDlBlW,UAAQ,IAEVhC,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN8H,QApDR,WACmB,KAAbtY,EAKAA,IAAam/E,GAIjB/6D,GAAW,GACXrM,EAAKrY,SACFoB,eAAeC,EAAQf,EAAUxC,GACjCF,KAAMqX,IACc,MAAfA,EAAIlZ,QACNsc,EAAK3B,QAAQY,KAAK,YAGrBtZ,MAAOkK,IACN/K,QAAQC,IAAI8K,EAAEpM,UACVoM,EAAEpM,UACJmiE,EACE3/D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAI5BuG,QAAQ,KACPoP,GAAW,MApBbu5C,EAAU,2BALVA,EAAU,sBAmDNjjD,WAAS,GAAC,YChFpB,MAAM9B,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ6D,UAAW,OACX5D,QAAS,OACTC,eAAgB,SAChBC,cAAe,SACfsD,WAAY,UAEdzL,MAAO,MAEM,SAASuuE,GAAsB9lE,GAC5C,MAAMxB,EAAOkI,qBAAWvI,GAClB8B,EAAUZ,MAETnP,EAAOojC,GAAYt7B,mBAAS,KAC5B9V,EAAQkiE,GAAapsD,mBAAS,KAC9B03C,EAAMq2B,GAAW/tE,mBAAS,IAC1B4S,EAASC,GAAc7S,oBAAS,GAErBwG,EAAKrW,KAAKX,OAqC5B,OACE/C,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,WACvBt7B,IAAAoa,cAAA,UACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBAExBhT,EAASuC,IAAAoa,cAAA,KAAG8F,MAAO,CAAE1N,MAAO,QAAU/U,GAAc,MAG7C,IAATwtD,EACCjrD,IAAAoa,cAACmF,IAAK,CAAC9D,UAAWD,EAAQ1I,OACvBqT,EAAUnmB,IAAAoa,cAACuB,KAAc,MAAM,KAChC3b,IAAAoa,cAACyF,EAAkB,CACjB3Y,MAAM,eACN7J,MAAkB,KAAXI,EACP6gB,SAlDV,SAAsBwB,GACpB+uB,EAAS/uB,EAAI9V,OAAOkO,UAmDdlY,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN8H,QAnDV,WACgB,KAAV7O,EAKCujB,GAAcvjB,IAInB2a,GAAW,GACXrM,EAAKrY,SACF0B,qBAAqBqI,GACrBnM,KAAMqX,IACc,MAAfA,EAAIlZ,SACN6jF,EAAQ,GACR3hB,EAAU,OAGbjgE,MAAOkK,IACN/K,QAAQC,IAAI8K,EAAEpM,UACVoM,EAAEpM,UACJmiE,EAAU,yBAEZ5lD,EAAK3G,SAAS,UAAWxJ,EAAEpM,SAASC,UAErCuZ,QAAQ,KACPoP,GAAW,MApBbu5C,EAAU,wBALVA,EAAU,oBAkDJjjD,WAAS,GACT1c,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,aAI3BzQ,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,wBCnF/B,MAAMmK,GAAYC,YAAYnH,IAAK,CACjCoH,KAAM,CACJ6D,UAAW,OACX5D,QAAS,OACTC,eAAgB,SAChBC,cAAe,SACfsD,WAAY,UAEdzL,MAAO,MAEM,SAASyuE,GAAgChmE,GACtD,MAAMxB,EAAOkI,qBAAWvI,GAClB3W,EAASwY,EAAMxe,MAAMisC,OAAOjmC,OAC5BvD,EAAQ+b,EAAMxe,MAAMisC,OAAOxpC,MAC3Bgc,EAAUZ,MAET5Y,EAAUsd,GAAe/L,mBAAS,KAClC4tE,EAAWC,GAAgB7tE,mBAAS,KACpC9V,EAAQkiE,GAAapsD,mBAAS,KAC9B4S,EAASC,GAAc7S,oBAAS,GAyCvC,OACEvT,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACtB9a,IAAAoa,cAAA,OAAK8F,MAAO,CAAEob,UAAW,WACvBt7B,IAAAoa,cAAA,UACEpa,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,kCAExBhT,EAASuC,IAAAoa,cAAA,KAAG8F,MAAO,CAAE1N,MAAO,QAAU/U,GAAc,MAEvDuC,IAAAoa,cAACmF,IAAK,CAAC9D,UAAWD,EAAQ1I,OACvBqT,EAAUnmB,IAAAoa,cAACuB,IAAc,MAAM,KAChC3b,IAAAoa,cAACyF,EAAkB,CACjB3Y,MAAM,qBACNoX,SAnDR,SAAsBwB,GACpBR,EAAYQ,EAAI9V,OAAOkO,QAmDjBlW,UAAQ,IAEVhC,IAAAoa,cAACyF,EAAkB,CACjB3Y,MAAM,uBACNoX,SArDR,SAAuBwB,GACrBshE,EAAathE,EAAI9V,OAAOkO,QAqDlBlW,UAAQ,IAEVhC,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN8H,QAvDR,WACmB,KAAbtY,EAKAA,IAAam/E,GAKjB/6D,GAAW,GACXrM,EAAKrY,SACFoB,eAAeC,EAAQf,EAAUxC,GACjCF,KAAMqX,IACc,MAAfA,EAAIlZ,QACNsc,EAAK3B,QAAQY,KAAK,YAGrBtZ,MAAOrC,IACNwB,QAAQC,IAAIzB,EAAMG,UACdH,EAAMG,UACRmiE,EACE3/D,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,2BAI5BuG,QAAQ,KACPoP,GAAW,MArBbu5C,EAAU,2BALVA,EAAU,sBAsDNjjD,WAAS,GAAC,YC/EL,SAAS8kE,GAAUjmE,GAChC,MAAMxB,EAAOkI,qBAAWvI,GAClBsrD,EX0DD,SAAmBrvD,GACxB,IAAKA,EAAM,MAAO,GAClB,MAAMc,EAAKgpE,GAAUzgE,OAAQxI,GAAMb,EAAK2Y,SAAS9X,EAAEvS,QACnD,OAAOwS,GAAU,GW7DFgrE,CAAU,IAAI1nE,EAAKrW,KAAK+R,YAAYE,OAEnD,OACE3V,IAAAoa,cAACkyD,IAAM,CAACl0D,QAAS2B,EAAK3B,SACpBpY,IAAAoa,cAACwU,IAAM,KACL5uB,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,SACL/T,OAAQA,IAAMvgB,IAAAoa,cAACsnE,GAAS,QAE1B1hF,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,wBACL1U,UAAW+hE,KAEb3hF,IAAAoa,cAACkG,IAAK,CACJ+T,OAAK,EACLC,KAAK,IACL/T,OAAQA,IAAMvgB,IAAAoa,cAACoG,IAAQ,CAACjY,GAAG,aAE5By8D,EAAO//C,IAAK2Y,GACX59B,IAAAoa,cAAC+F,GAAcjD,OAAAC,OAAA,CACbmX,KAAMsJ,EAAEtJ,KACR7sB,IAAKm2B,EAAEx7B,GACPie,OAAQtG,EAAKhG,iBACT6pB,KAGR59B,IAAAoa,cAACkG,IAAK,CACJgU,KAAK,mCACL1U,UAAWshE,KAEblhF,IAAAoa,cAACkG,IAAK,CACJgU,KAAK,SACL1U,UAAWyhE,KAEbrhF,IAAAoa,cAACkG,IAAK,CACJgU,KAAK,oCACL1U,UAAW2hE,KAEbvhF,IAAAoa,cAACkG,IAAK,CAACV,UAAWysD,O,8CChD1B,MAAMzxD,GAAYC,YAAW,CAC3BC,KAAM,CACJoR,SAAU,EACV2T,KAAM,EACN9kB,QAAS,OACTE,cAAe,SACfD,eAAgB,SAChBuD,WAAY,SACZtC,QAAS,OAEXf,IAAK,CACH6D,OAAQ,OACRlL,MAAO,UAMI,SAAS+tE,KACtB,MAAOpG,EAAMqG,GAAWtuE,mBAAS,GAE3BiI,EAAUZ,KAehB,OATA7C,oBAAU,KACR,MAAM+pE,EAActgF,WAAW,KACzBg6E,EAbQ,IAcZqG,EAAQrG,EAAO,IACd,KAEH,MAAO,IAAMtuD,aAAa40D,IACzB,IAGD9hF,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQV,MACrB0gE,EAtBW,GAuBVx7E,IAAAoa,cAAC6D,WAAQ,KACPje,IAAAoa,cAACuF,KAAU,CACTlF,QAAQ,WACRM,QAAQ,QACRid,MAAM,SACNnN,cAAY,GAAC,aACF2wD,EAAO,EAAI,WAAaA,EAAb,SAAyC,MAEjEx7E,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQN,KACtBlb,IAAAoa,cAACuB,IAAc,QAInB3b,IAAAoa,cAAC6D,WAAQ,KACPje,IAAAoa,cAAA,WACEpa,IAAAoa,cAAC2nE,KAAS,CAAC7hE,MAAO,CAAEsE,SAAU,WAEhCxkB,IAAAoa,cAACuF,KAAU,CACTlF,QAAQ,WACRM,QAAQ,QACRid,MAAM,SACNnN,cAAY,GAAC,kDAGf7qB,IAAAoa,cAAC4F,KAAM,CACLvF,QAAQ,YACRjI,MAAM,UACN8H,QA3CV,WACE1d,OAAOC,SAAS0a,WA0CS,Y,yBC3D7B,MAAMqD,GAAYC,YAAYnH,IAAK,CACjCzB,KAAM,CACJ8M,OAAQ,OACRlL,MAAO,OACP4J,SAAU,WACVjL,MAAO,QACPsJ,OAAQ,EACRX,IAAK,GAEP6mE,SAAU,CACRhhE,OAAQtN,EAAMsN,OAAOquB,OAAS,EAC9B78B,MAAO,WAII,SAASw/B,GAAIz2B,GAC1B,MAAMC,EAAUZ,KACVb,EAAOkI,qBAAWvI,GAClBhG,EAAQuuE,eACPpuE,EAAOC,GAAYP,mBAAS3W,OAAO+hF,YAQ1C,OANA5mE,oBAAU,KACR,MAAMmqE,EAAeA,IAAMnoE,EAAKjG,SAASJ,EAAMmtB,aAE/C,OADAjkC,OAAOic,iBAAiB,SAAUqpE,GAC3B,IAAMtlF,OAAOi1D,oBAAoB,SAAUqwB,IACjD,CAACnoE,IAGF/Z,IAAAoa,cAAC+nE,IAAgB,CAACzuE,MAAOqG,EAAKrG,OAC5B1T,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQvJ,MACrB8H,EAAKvG,UACJxT,IAAAoa,cAACwnE,GAAgB,MAEjB5hF,IAAAoa,cAAApa,IAAAie,SAAA,KACEje,IAAAoa,cAAConE,GAAS,CACR3tE,MAAOA,EACPpM,IAAK,IAENsS,EAAKrW,KAAK8P,UACTxT,IAAAoa,cAACgoE,KAAQ,CACP3mE,UAAWD,EAAQwmE,SACnB/+D,KAAMlJ,EAAKrW,KAAK8P,WAChBxT,IAAAoa,cAAC0D,KAAgB,CAACtL,MAAM,aAExB,QCpDhB,MAAMoI,GAAYC,YAAYnH,IAAK,CACjC2uE,gBAAiB,CACflnE,IAAK,EACLsC,SAAU,WACV5J,MAAO,OACPkL,OAAQ,OACRiC,OAAQ,mBACRvC,gBAAiB,QACjBujC,QAAS,IAEXsgC,iBAAkB,CAChBriD,OAAQ,iBACRxiB,SAAU,QACV4O,KAAM,MACNlR,IAAK,MACL0D,UAAW,wBACXmC,OAAQ,mBACRvC,gBAAiB,QACjBob,SAAU,QACV5d,QAAS,OACTE,aAAc,OAEhB9H,SAAU,CACRinB,UAAW,SACXha,aAAc,QAEhBhN,QAAS,CACPgN,aAAc,QAEhByhB,QAAS,CACPzH,UAAW,YAIA,SAASkT,KACtB,MAAMz0B,EAAOkI,qBAAWvI,IAClB,SAAErF,EAAQ,QAAEC,GAAYyF,EAAK5F,MAC7BqH,EAAUZ,KAEhB,OAAOb,EAAK5F,MAAME,UAAY0F,EAAK5F,MAAMG,QACrCiuE,IAASC,aACPxiF,IAAAoa,cAAA,WACEpa,IAAAoa,cAAA,OACEE,QAASA,IAAMP,EAAK3F,SAAS,IAC7BqH,UAAWD,EAAQ6mE,kBACrBriF,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQ8mE,kBACtBtiF,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQnH,SACnBoG,QAAQ,KACRmF,UAAU,MACTvL,GAEHrU,IAAAoa,cAACuF,IAAU,CACTlE,UAAWD,EAAQlH,QACnBmG,QAAQ,YACRmF,UAAU,KACTtL,GAEHtU,IAAAoa,cAAA,OAAKqB,UAAWD,EAAQunB,SACtB/iC,IAAAoa,cAAC4F,IAAM,CACLvF,QAAQ,WACRjI,MAAM,UACN8H,QAASA,IAAMP,EAAK3F,SAAS,KAC7BpU,IAAAoa,cAAC4H,GAAgB,CAACvR,KAAK,WAK/B+I,SAASslB,eAAe,WAE1B,K,yBC9DC,SAAS2jD,KAId,OAFAjpE,SAASslB,eAAe,2BAA2BkwB,UAAY,GAG7DhvD,IAAAoa,cAACR,EAAY,KACX5Z,IAAAoa,cAACsoE,KAAW,MACZ1iF,IAAAoa,cAAC43B,GAAG,CAACvqC,IAAK,IACVzH,IAAAoa,cAACo0B,GAAK,OAKG,SAASm0C,KACtB,OACE3iF,IAAAoa,cAACwoE,mBAAgB,CACfC,kBAAgB,EAChBC,SAAU,EACVn+C,aAAc,CACZC,SAAU,SACVC,WAAY,SAEdk+C,iBAAkB,KAClB/iF,IAAAoa,cAACqoE,GAAI,OC/BX3rE,IAAQksE,WAAW,iBACnBlsE,IAAQmsE,SAASrmF,OAAOC,SAAS4rB,SAAW7rB,OAAOC,SAAS8qB,QAE5D46D,IAAShiE,OAAOvgB,IAAAoa,cAACuoE,GAAwB,MAAKnpE,SAASslB,eAAe,StMwHhE,kBAAmBokD,WACrBA,UAAUC,cAAcC,MAAM9jF,KAAM+jF,IAClCA,EAAaC,iB","file":"static/js/main.c422ccfb.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH4AAABSCAYAAACSTWDFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjY1QkQ3RUYyNDJGMTFFMzgwQzhEMDg5MjJEMDI3REYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjY1QkQ3RjAyNDJGMTFFMzgwQzhEMDg5MjJEMDI3REYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjVCRDdFRDI0MkYxMUUzODBDOEQwODkyMkQwMjdERiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjVCRDdFRTI0MkYxMUUzODBDOEQwODkyMkQwMjdERiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv0kN90AABHSSURBVHja7J0JvFfTFsc3ZSiNT6VnSCFDISQZQoYUmR8vw/NkToRnSHlF8owvIbNXSgjJXBl6CKEyVRIqug1kqkQ0KL39+/y/5/333fec8z/3dm/u/99Zn8/63Ps/Z59h77X3Wr+19tr7rLd69WoTRfPmzjYFSLUt32/5aMu/Wr7bch/LqwutoltutXXkuaqm8EmCbm55seVPLA+y/BfOVbN8teWFlu+13MLy75Y/tryikBtl/QKu23qWb7D8veW3LU+1PMkRuktXWZZ6m2j5fctfW/5rKvj8pH0tS9eNt7yKYy0iyjaw3JD/f6YDHGW5fqE2TiGregnvQ8tL6QCPWt4vxzX3We6O8GtaXpKO+MpLm1l+2vICbPMpqO5FgLf3LG9q+TDOB7TAE+yDls+33NHyHMs/Cd9aPt7ytZaLLM+33M/yhnlvBwsA1Y+xfGiOMhLyjpb3As3fhCDX45gAXmfKvMHxOOpt+V/5jOrzfcRXTyB0w4gXWBtt+QLLh6D6/4NK7wgI7JpA6KJjUxtfuU2VkPwTqOzPKf+k5eOcMmdZvsxyf8pKg+xk+TTMSJTHkNr4P4iaEHj5LeL8taD4AZa/QTt09oQekFR/S+41E4zQ1PILMV5AT7RFauPXpvmy/JHlehHnFZnrYvnvlu8qg4BmWT4RjSF3cLeIcu9aPsDyytTGrx3qitCHW27P6NwfxP0TI1YCGVLGUSlt8iLX9kBjXGp5D8s7WD4Zd3GfhBgjVfXlRNtZvthyJ9y21iYTYu2OfV4IUl8TW1wf924MI/5uOtuelicQIFLH2z4Fd2uPBuCfj7J8hHNcNvkYx8Y/Y7kbo7S0LuLDBIAUu1+N2m/K+dXc/xzLjVMbv3bpn54v/RMum4SmSZkqCGtDhD/FZKJ4Et55gDnRs5aH4c5tCj9guYblnVHzaogrLN/svYPMyVv56Mfn24jfE/W7jeVdvXNnWp5heTICC0CaNMBgAjW10QKK0j0EcBP42xZ1vhjbfhLCD/DBcxzbwvJFzjOFIb40mcmf20xmcicd8eVMbS2/YnmDkHNFdIaXLbfzzv1guZbJhlmX0BnGosYvt3yLgwe+wb5X8e6jaN1QRn8YKZy7u+VvU1RfvtQjQuiip7C7B4ecq2eKx9alwu9F6Fviw7sgsGGI0EUHmUwMf2LEO/yZYFCK6suZGoYcW24y4dZeNHqSLJqx2GuDaj8XdZ2LBOKOtLw3gaMwapQKvvxpWsixviaTZCH3amACzNIPrTAb1X22ycTvhRfeyHHtNngNQ0D0L4WUmZLa+PKn3RHwBp4/rxDsv3NcK83wDvZfMfhBTqf/ETUuLPCmyczd5xoQGvXNAIkBzQZUVpo5/EKx8R/hN7s0C0QeRYswAbUZ6bL393j1roMA5zGqBexuAANE0bYeyFOMv73Jo8SNfHPnjvd+14hB0YrkKfniE+z4voC5ahHa5Fk6ykgww1cmE60LIyH/TZzf0kJK1fo8FXzF0D7e79YI6poIez6NAEvLBPcOIn6dTXaSRzH5Nl65HzEbPUPUf95QvsXqffStkays2IdDyioAc0FCoft0HhrigZBzPfEeOnvHv0gFX3F0u/f7BFjo/Gnn+HfY4PZr8CzNur3n/JawFSa+DzDZyAOPA1PBVxw9jg++yjk2jNGnDtANgLWMcxutwbM2cu5TBF64FXDYzSm3EM9iRir4iqP62O5dTCZfbgnA6n5GvGLqzfEABOKmrsGzPsG16889f0EDnB94u/jzmpZ93eRZNk6+Cb6uyeTMrcK+18M3v5FzHwDITkD9Di3jcxbTid7CtbsL1F+EjW+Jqu9jMuldmpf/NRV8xdF0y3/CbZJQNFOmxQ9KumhreXPLr5pMNo78cKVGPVKG51zBCK8KyFPHUuLl0XQCdbjrLX/K8973zE+lp3ycj2+LanVJo20CbpbOvWmySZhKshzFdf6orhnS+WXHL3d+18K+H0An0PRtFe8+jXHzKhXFRe7yNRHjFVNy+tX3taWqNUc+GUEJ+StVqw6d5AYCOsqla4oXoNE8hnsciTuoiF/cyplKu7iiEAWvFS9TTPQ0bUC/AwZ7mJIzdy1w++Z7xxXefczy4QnjCs0d9J83gs/XnLvPTCYNqlcCDNMde90XN0xZNK1R/cswA9PBAyMBaoclfI8ulVXohWjj3U4rgJckVKpcuwa4YrdElFE4eOMQ/BBFt2EmKi0V6to5LWLQytgFCcrKp1dO/KSYMvL990v47ImmZKw+ryjfF01qWvY4RnQuqgkCD6PlcK0E91FM/hjKp4L/A+ktEHjcXPgqRnRUfr3Cs9KL7+V41kywwTf53miFshXKa9joaTH2+GvcuShS+vSzgLwwegFQOK8QGqyQ9sBRXF4JFV0Rnmz/JwCw7miFjjHX9wDxdzCZlTpCtkryGM21itotLJTGWm8d2OdOSP10Rn21HGWLcNHGmPjUq7ygQt4RIwltAvh7Ag0Qtn+d4v2K5j1vMkGhDQq9UdaFDQ6l8oea7EydFk/UM9mcuUUxaD8VfAGRbNv38DpL65uUUsGnlAo+pVTwKaWCTykVfEqp4FNKBZ9SKviUUsGnVPmotCFb5a1V944pf13hz1wf79HMmHLSld6suXF9NCBuBkzZMLvQOYssz/XOV+d94uhr3iuIzUdNN9agjLJugxUxjbyBoYke7ZqRdOHEbpSPmr+v47RFWNttzvPnxbzjWhvxWjY8y2O9mLJfNG/dPKKC2mBAc9nvUG4SFb7QlNx2VO90MxUcZzKLI+ZwjbuL5WEh7+JzM8r2o/OcF1GvEyjvZtdO8e71DfVUVm67HO2k88r4ecVEb6t6ifeOPo2m/nHvuNZGfED/8EaLBK7dnlvR07/inBY5KjVqBxpM694WUFnNe99pMhsPar48SAwIEifUaIMYDVrBorVymlptwkgKSDnwUVuQfeX9vhOBvpuwnsqvu4v/pTG0x80xdEB1zh4R13Xnr/bVVfLHyHxX9QHdHnJsDII6w2RXlgxG6Eprvs8pO9JkFyKeRs8ONiEIMmfVYMF24CqnVas7ekI3dJAhCd9bpkWrapVxOz9B+XkhddV+dtpX70qTycEbGKLitbZeq3lPplylE3x5grvX+LsFf/dAeMM9oQckO3Uq6vMq57hGvpIfa3vlpWrHruE7qgM2RPOU9YNC6jDa70bLtPqGtOEV4J6+dOY2aLWCFXywMdFnjg0WPRRzjUCh1rgpR2g7jj2O+VAO3XUms/K1Ssw9GjHKfA4T7DNoo/0itFZSWoDZ0ehv4b1LJ5P9HMoAwGD3mHvtEPH+1SpS8GVV9X2c/zfgRY9A6IMdlWgAJHEU7GvTENXZjw6pkdMLXoSK7hOCkq+FfWoCoPNJGyXtzujX8uYHy9gG0x0N95GDfdRJg333ZqNdOtGxZ4bc5/GYZ8yubIL3d5mSur7eZL8QERwzJvrzIQFtyt+FjqoXcNJy5b3RHMpyPYu/GmHuFmeDPPQb0A8xdv5vJpNDf48p/i260lA97721McM5gNk5eDPB+50EaO0a0ZZzQo73rYwjvi5/qwBcJKDxpvga8fH8PdpE7+leFU2hxvP3iFuJQMXa+KA3jaFGvMMpN64U4C4gvedxvOPTDnIvTbvpG7W/OKP9fJD//mgon85AyH7K1/MmfGnXJU7nqTSCdwUsNaYvOQwF0AXq9WXUvFaojjCZLNaw3t4YuxsERjqD1P2938c5blV50FSe9SQdqzS4SNpoezTcUsCodueYgRbxaWsE2a2Uz6p0I96lObhko0HwbfC9V9DL5ea9ih1+gh4vt+wyUL1U7g3cqzk2V2r6Jkbjt5QPXMRXI8BdGM008Uur1CG1zUnPmIjebk6ksBnqfC+0WG/O6WtXm3GfwRGdpSOq/qY1jLw1iajvwgiTUaGo/kXscitGQ0Bv4NPKFbsFsPIrGkJC19ceDzHZRY/Kez+cStyKxgjK741PPCEE3H0UwXsmeHcJ76WIcy2de72Nb74TeEb1WkYbXoab92gMrrgdPHPGGrZ1/4i69q3IET+AYEoY9UJwVXBFAmG+yYg9FEHIP59LY08Puc/LjPz96Eg16QijTPHdIz9M0IiBazmQGEDYSFtFJzyaewbU1XMJl+FRTDTFY+s1GcUzTPx8xRCeP98JShXFjNKrveePy1HfmaUR5LqwhGqdpXV9CVVKqeBT+r+qnzunaEiI/xzY4DAXrF+OoMw4U3ziQmvKuwCKfgMHCN27e80oSHMKtvIz7371ub4t4OhnIm4CWu56+D1wqR6PAGvVcbXkKg7L0S4b4+odSWRuOe7fY55XUY/2MCFtOJXnfBfW7sQBNKO5DTjjU1zi10MCRf1i3juol9vuPcBVfpBN0+IjrAlYIcGvRiAB8NmIios08XK6KR4mFSDZCgGE0TAnQtWJ37+BPHXfXU32c96diNTJx9Uy5oNM8YmYjjR2TQcIbYVL8ztINgjX6pvuz/Bee4V0oDoEVu7geVGkDqpNELbFrfyMa5sjsKfopCuIQczi/6Ue4FMdF/Nebp0acI82BIA+ps1bOO3S2ZFH8Iyo9w7q9ZDJbqWu5x3gRFHXN9m9dtXB2gWqfpjtBXXgagQnlDxxMD3J/476xyabQeKzG5a8g0CMGlE7VihGrk0FH6EjxH01qjWCVAO0Q9gHMkICNytsj/ia+P9l2VS4AXGHRmiZhkTiduHYCFC5j97v9dpAHfx4vKYhjkndkHhHG+ISDWiXPWiX59ACD5aDNp/jyLQW73U1HXvA+hFocIblCxHi1k6ApTRUiw6jsKibEDGfgM+NCVxHvZ92qPivd+5DRnXYPrUvUbmhpvQfFe6FateOlveb4mlW8xDKxQnu8xud9jHab1snrNuSuvf23Mv5qP/X0IQHljPCX2z5Osz3EbnA3X3Y5FNMyVy7XPQTApedPNOUbv67KYKVSpwUExQJo/sZMcea3BsgulSFesqkDIopV5qdMgKt84sT4fs1ZiCtct755ArCdbL1VXMFcFYz2pqjYoP937cz4UkRUoXuhMe52Cw15J1cMwqBxn2Kc1cn+ONSoH79wEiRd+wC7tEHIPhiggbZDPA4yhNuB1NyE8WXTHYSKow2R3AnAqiCeYeduS4ujDwBU7JLeUt83tzZ7dAk7ySJ3C137JM7OsJmjvzkgdHgBYGO9vARhGPPM9H7yQdbkawIEXwL79jYEMEvw8a+D7hsZaKnaY1XP/+ZHULU+4+e4C+OMAEK857kAKyqJrurdpxGWWnik0+SUD0r6CFOe24DbhLgvCiJH98aFeQCKU2hhmWNhH34T+r+elBmXdT+ElyPzSOeOdsZIS7tzz3qMqrjSC6pPiteg/Borlm9ALT5X6nu6TzzgIhrJwFk78DtCjRRG8cj+p0OuruJD5U3xawG4ezAe6obUb5qRIetjrkTH047SOvuam395Fwj/lBUw0hTtn1iNnHsW1CJwajVG2nksE9va8ZOs3inoq4XeY1gTLIZLk0SXQpQHJhAs73GCG9lspsdLnVctZ9jnnOJ4w6/gz0fZrLboBu8De2Ff7YJz0MMfHCDiRQtQFvtC1j1PaFW/J0eguoblypyZ1VEVcun86KqbPcyCL0lfneXkOcE04pRExQrcT02ZbTWD+nlSRMY7wT9d0hQ9hq02wgTvkYgyTOXo2mk1R412eRTg4mTEPtj//06XYVGHGuKZ+YOB1dd6V1TlwG0CtyUmIIR38EKeqxjD5phw6X+TsDpd6mJiZ6lmwoylS1biI/bg9G0lMbbk041LYdHsSO280uCKrMBd8IKyumbmOMeLshshr8cR7rfWUQF9YGDl6lPDTRfc0zX2Bz3+QIBjiBK2ZbOrOnpo6jLcGIR42nzQ2jXCXQKd2T3RvveSKcaj8dwOIOjh8md21hC8JOdCFDgUrwBcn3IlNwgeBq2OUqNBCBqCqr8HF72eFT/LDqGG+r8nvfw0e4lIPJugMLaqHhV/Ar85ACBL+YeYSZpKc8fbkousvBJdf4ALXcoz12JHe9OR17i2NXJEfd8CmxzJGo/CMqMB7FL5R8HyF1Je0kTPBBirxcS6OnFNV2ok97zdlP8m3uimblM4f8EGAB1ELLDlh9piQAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/mini-abe.6476cd89.png\";","module.exports = __webpack_public_path__ + \"static/media/hubpic1.aeae770d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hubpic2.933f2591.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hubpic7.d5bc7e9c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hubpic9.9d176c63.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hubpic12.2ba22d38.jpg\";","module.exports = __webpack_public_path__ + \"static/media/missingProduct.f8a1c6fa.svg\";","module.exports = __webpack_public_path__ + \"static/media/RDGLogo.16dd7cbd.jpg\";","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and roles)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\r\n ),\r\n)\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config)\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\r\n )\r\n })\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing\r\n if (installingWorker == null) {\r\n return\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\r\n )\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration)\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.')\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error)\r\n })\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type')\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload()\r\n })\r\n })\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config)\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. SalesApp is running in offline mode.',\r\n )\r\n })\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister()\r\n })\r\n }\r\n}\r\n","import { createBrowserHistory } from 'history'\r\n\r\nexport default createBrowserHistory()\r\n","// REACT_APP_API = local || dev || test || staging || prod\r\nlet api = process.env.REACT_APP_API\r\n\r\nlet dataApi = {\r\n local: 'http://localhost:60248/api/',\r\n dev: 'https://b2b-api-dev.rdg.dk/api/',\r\n test: 'https://b2b-api-test.rdg.dk/api/',\r\n prod: 'https://b2b-api.rdg.dk/api/',\r\n staging: 'https://b2b-api-staging.rdg.dk/api/',\r\n}\r\n\r\nlet hubApi = {\r\n local: 'https://portal-sales-api-test.rdg.dk/api',\r\n dev: 'https://portal-sales-api-test.rdg.dk/api',\r\n test: 'https://portal-sales-api-test.rdg.dk/api',\r\n prod: 'https://portal-sales-api.rdg.dk/api/',\r\n staging: 'https://portal-sales-api-staging.rdg.dk/api/',\r\n}\r\n\r\nlet hubImage = {\r\n local: 'http://localhost:60248',\r\n dev: 'https://b2b-api-dev.rdg.dk',\r\n test: 'https://b2b-api-test.rdg.dk',\r\n prod: 'https://b2b-api.rdg.dk',\r\n staging: 'https://b2b-api-staging.rdg.dk',\r\n}\r\n\r\nexport default {\r\n dataUrl: dataApi[api],\r\n hubUrl: hubApi[api],\r\n hubImageUrl: hubImage[api],\r\n}\r\n","import axios from 'axios'\r\nimport ApiUrls from './ApiUrls'\r\n\r\n// All requests uses request- and response interceptors for handling access token and refresh token\r\nconst addAxiosInterceptors = (axiosInstance) => {\r\n // Add access token to all requests\r\n axiosInstance.interceptors.request.use(\r\n (config) => {\r\n const accessToken = localStorage.getItem('accessToken')\r\n if (accessToken) {\r\n config.headers['Authorization'] = `Bearer ${accessToken}`\r\n }\r\n return config\r\n },\r\n (error) => {\r\n console.log('rejected in request')\r\n Promise.reject(error)\r\n },\r\n )\r\n\r\n // Catch responses with expired errors and renew access token using refresh token\r\n axiosInstance.interceptors.response.use(\r\n (response) => {\r\n return response\r\n },\r\n (error) => {\r\n let isExpired = isExpiredAccesTokenError(error)\r\n\r\n if (isExpired) {\r\n const originalRequest = error.config\r\n let refreshToken = localStorage.getItem('refreshToken')\r\n let accessToken = localStorage.getItem('accessToken')\r\n\r\n if (refreshToken && accessToken && !originalRequest._retry) {\r\n originalRequest._retry = true\r\n return axios\r\n .post(`${ApiUrls.hubUrl}/auth/refreshtoken`, {\r\n accessToken: accessToken,\r\n refreshToken: refreshToken,\r\n })\r\n .then((response) => {\r\n if (response.status === 200) {\r\n localStorage.setItem(\r\n 'accessToken',\r\n response.data.accessToken.token,\r\n )\r\n localStorage.setItem('refreshToken', response.data.refreshToken)\r\n console.info('Access Token refreshed!')\r\n return axios(originalRequest)\r\n }\r\n })\r\n .catch((error) => {\r\n // Ignore access token errors here\r\n let isExpiredError = isExpiredAccesTokenError(error)\r\n if (!isExpiredError) {\r\n localStorage.removeItem('accessToken')\r\n localStorage.removeItem('refreshToken')\r\n localStorage.removeItem('userId')\r\n window.location = '/login'\r\n }\r\n return error\r\n })\r\n }\r\n }\r\n return Promise.reject(error)\r\n },\r\n )\r\n}\r\n\r\nfunction isExpiredAccesTokenError(error) {\r\n return error.response?.status === 440 && error.response.data?.tokenExpired\r\n}\r\n\r\nexport default function HttpClientHandler(base, masterData) {\r\n let httpClient = axios.create({\r\n baseURL: base,\r\n headers: masterData\r\n ? {\r\n 'Content-Type': 'application/json',\r\n 'X-Api-Key': '8ec1c52d-2d10-4ab3-83a1-fbdd7dc6e221',\r\n }\r\n : {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n if (!masterData) {\r\n addAxiosInterceptors(httpClient)\r\n }\r\n\r\n return {\r\n httpClient,\r\n }\r\n}\r\n","import HttpClientHandler from './httpClientHandler'\r\nimport HubStore from './HubStore'\r\nimport BaseStore from './BaseStore'\r\nimport DataStore from './DataStore'\r\nimport StatisticStore from './StatisticStore'\r\nimport MasterItemDataStore from './MasterItemDataStore'\r\nimport ApiUrls from './ApiUrls'\r\n\r\nexport default function DataStoreHandler() {\r\n const getBaseStore = (baseUrl) => {\r\n let clientHandler = HttpClientHandler(baseUrl)\r\n return BaseStore(clientHandler.httpClient)\r\n }\r\n\r\n const hubStore = HubStore(getBaseStore(ApiUrls.hubUrl))\r\n const dataStore = DataStore(getBaseStore(ApiUrls.dataUrl))\r\n const statisticStore = StatisticStore(getBaseStore(ApiUrls.statisticsUrl))\r\n const masterItemDataStore = MasterItemDataStore(getBaseStore(ApiUrls.dataUrl))\r\n\r\n return {\r\n hubStore,\r\n dataStore,\r\n statisticStore,\r\n masterItemDataStore,\r\n }\r\n}\r\n","import axios from 'axios'\r\nimport React from 'react'\r\n\r\nexport default function BaseStore(httpClient) {\r\n const cancelToken = React.useRef(null)\r\n cancelToken.current = {}\r\n\r\n function setHttpClient(hc) {\r\n httpClient = hc\r\n }\r\n\r\n function post(url, obj) {\r\n return httpClient.post(url, obj)\r\n }\r\n\r\n function put(url, obj) {\r\n return httpClient.put(url, obj)\r\n }\r\n\r\n function get(url, obj) {\r\n return httpClient.get(url, obj)\r\n }\r\n\r\n function del(url) {\r\n return httpClient.delete(url)\r\n }\r\n\r\n async function stall(stallTime = 3000) {\r\n await new Promise((resolve) => setTimeout(resolve, stallTime))\r\n }\r\n\r\n function postSingleton(url, obj) {\r\n // will cancel pending request when sending a new one.\r\n if (cancelToken.current[url]) {\r\n cancelToken.current[url].cancel('')\r\n }\r\n const token = axios.CancelToken.source()\r\n cancelToken.current[url] = token\r\n return httpClient.post(url, obj, { cancelToken: token.token })\r\n }\r\n\r\n function getSingleton(url, requestIdentifier) {\r\n // will cancel pending request when sending a new one.\r\n if (cancelToken.current[requestIdentifier]) {\r\n cancelToken.current[requestIdentifier].cancel('')\r\n }\r\n const token = axios.CancelToken.source()\r\n cancelToken.current[requestIdentifier] = token\r\n return httpClient.get(url, { cancelToken: token.token })\r\n }\r\n\r\n return {\r\n setHttpClient,\r\n post,\r\n postSingleton,\r\n getSingleton,\r\n put,\r\n get,\r\n del,\r\n stall,\r\n httpClient,\r\n }\r\n}\r\n","export default function HubStore(base) {\r\n let baseStore = base\r\n\r\n // Auth\r\n function login(username, password) {\r\n return baseStore.post('/auth/login', { username, password })\r\n }\r\n\r\n function authenticated() {\r\n return baseStore.get('/user/authenticated')\r\n }\r\n\r\n function logout() {\r\n return baseStore.post('auth/logout')\r\n }\r\n\r\n function refreshToken(oldAccessToken, oldRefreshToken) {\r\n return baseStore.post('/auth/refreshtoken', {\r\n accessToken: oldAccessToken,\r\n refreshToken: oldRefreshToken,\r\n })\r\n }\r\n\r\n //User\r\n async function getLanguagePack(id) {\r\n return {}\r\n }\r\n\r\n function signupUser(obj) {\r\n return baseStore.post('/User/signup', obj)\r\n }\r\n\r\n function createUser(obj) {\r\n console.log(obj)\r\n return baseStore.post('/user', obj)\r\n }\r\n\r\n function updateUser(userDto) {\r\n return baseStore.put('/User', userDto)\r\n }\r\n\r\n function removeUser(id) {\r\n return baseStore.del(`/user/${id}`)\r\n }\r\n\r\n function getAllUsers() {\r\n let rs = baseStore.get('/user/all')\r\n return rs\r\n }\r\n\r\n function getLoggedInUser() {\r\n let rs = baseStore.get(`/user`)\r\n return rs\r\n }\r\n\r\n function getUser(id) {\r\n let rs = baseStore.get(`/user/${id}`)\r\n return rs\r\n }\r\n\r\n function searchUsers(obj) {\r\n return baseStore.postSingleton(`/user/search`, obj)\r\n }\r\n\r\n function updateSelectedCustomerAccount(obj) {\r\n return baseStore.put('/user/SelectedCustomerAccount', obj)\r\n }\r\n\r\n function updateUserLanguage(obj) {\r\n return baseStore.put('user/UserLanguage', obj)\r\n }\r\n\r\n function submitPassword(userId, pw, token) {\r\n let dto = {\r\n userId: userId,\r\n password: pw,\r\n token: token,\r\n }\r\n return baseStore.post(`/auth/submitpassword`, JSON.stringify(dto))\r\n }\r\n\r\n function requestResetPassword(userName) {\r\n let dto = {\r\n userName,\r\n }\r\n return baseStore.post(`/auth/resetpassword`, JSON.stringify(dto))\r\n }\r\n\r\n function requestNewRegistrationMail(userName) {\r\n let dto = {\r\n userName,\r\n }\r\n return baseStore.post(\r\n `/auth/newRegistration/resetpassword`,\r\n JSON.stringify(dto),\r\n )\r\n }\r\n\r\n function createNewsletterUser(user) {\r\n return baseStore.post('/User/NewsLetterSignUp', user)\r\n }\r\n\r\n function changeNewsLetter(userId, newsLetter) {\r\n return baseStore.put(\r\n 'User/UserNewsLetter',\r\n JSON.stringify({ userId, newsLetter }),\r\n )\r\n }\r\n\r\n return {\r\n refreshToken,\r\n login,\r\n logout,\r\n authenticated,\r\n getLanguagePack,\r\n createUser,\r\n signupUser,\r\n updateUser,\r\n removeUser,\r\n getAllUsers,\r\n getLoggedInUser,\r\n getUser,\r\n searchUsers,\r\n submitPassword,\r\n requestResetPassword,\r\n requestNewRegistrationMail,\r\n updateSelectedCustomerAccount,\r\n updateUserLanguage,\r\n createNewsletterUser,\r\n changeNewsLetter,\r\n }\r\n}\r\n","import axios from 'axios'\r\nimport ApiUrls from './ApiUrls'\r\nimport { func } from 'prop-types'\r\n\r\nexport default function DataStore(baseStore) {\r\n function getUserCustomers(\r\n salesInitials,\r\n employeeAccountNo,\r\n samplesPurchaseAccount,\r\n pageNumber,\r\n resultsPerPage,\r\n ) {\r\n return baseStore.get(\r\n `/Sellers/customers/${salesInitials}/${employeeAccountNo}/${samplesPurchaseAccount}/${pageNumber}/${resultsPerPage}`,\r\n )\r\n }\r\n\r\n function getUserCustomersBySearch(\r\n salesInitials,\r\n employeePurchaseAccountNo,\r\n samplesPurchaseAccount,\r\n searchText,\r\n limit,\r\n ) {\r\n return baseStore.getSingleton(\r\n `/Sellers/customers/search/${salesInitials}/${employeePurchaseAccountNo}/${samplesPurchaseAccount}/${\r\n searchText || null\r\n }/${limit}`,\r\n 'getcustomers',\r\n )\r\n }\r\n\r\n function getCustomerCount(\r\n salesInitials,\r\n employeeAccountNo,\r\n samplesPurchaseAccount,\r\n ) {\r\n return baseStore.get(\r\n `/Sellers/customerCount/${salesInitials}/${employeeAccountNo}/${samplesPurchaseAccount}`,\r\n )\r\n }\r\n\r\n function getBlockedCustomers(salesInitials) {\r\n return baseStore.get(`/Sellers/customers/blocked/${salesInitials}`)\r\n }\r\n\r\n function getCustomerByAccountNo(accountNo) {\r\n return baseStore.get(`/customers/${accountNo}`)\r\n }\r\n\r\n function getCustomersBySearch(term) {\r\n return baseStore.get(`/customers/search/${term}/5`)\r\n }\r\n\r\n function getCustomerAddressesByAccountNo(accountNo) {\r\n return baseStore.get(`/customers/addresses/${accountNo}`)\r\n }\r\n\r\n function getCustomerDeliveryCountries(languageId) {\r\n return baseStore.get(`/Customers/deliveryCountries/${languageId}`)\r\n }\r\n\r\n function postCustomerNote(accountNo, note) {\r\n return baseStore.post(`/Customers/note`, { accountNo, note })\r\n }\r\n\r\n function getCustomerNotes(accountNo) {\r\n return baseStore.get(`/Customers/note/${accountNo}`)\r\n }\r\n\r\n function getSellersBySearch(term) {\r\n return baseStore.get(`/sellers/search/${term}/5`)\r\n }\r\n\r\n function getEmployeesBySearch(term) {\r\n return baseStore.get(`/employees/search/${term}/5`)\r\n }\r\n\r\n function getAllFacetValues(obj) {\r\n return baseStore.post('/Product/facetValues', obj)\r\n }\r\n\r\n function searchProducts(obj) {\r\n return baseStore.postSingleton(`/product/search`, obj)\r\n }\r\n\r\n function searchExcel(obj) {\r\n return API.post(`/product//searchExcel`, obj, {\r\n headers: {\r\n 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'),\r\n },\r\n responseType: 'blob'\r\n })\r\n }\r\n\r\n function getProductById(customerId, productId, languageCode, userId) {\r\n return baseStore.get(\r\n `/Product/${customerId}/${productId}/${languageCode}/${userId}`,\r\n )\r\n }\r\n\r\n function getReturnProductById(customerId, productId, languageCode) {\r\n return baseStore.get(\r\n `/Product/${customerId}/${productId}/${languageCode}/rma`,\r\n )\r\n }\r\n\r\n const API = axios.create({\r\n baseURL: ApiUrls.dataUrl,\r\n });\r\n\r\n function getReturnProductByExcel(customerId, languageCode, e) {\r\n e.preventDefault()\r\n const formData = new FormData()\r\n formData.append('excelFile', e.target.files[0])\r\n\r\n return API.post(`/Product/${customerId}/${languageCode}/rma/upload`, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'),\r\n },\r\n })\r\n }\r\n\r\n function getProductByExcel(customerId, languageCode, userId, e) {\r\n e.preventDefault()\r\n const formData = new FormData()\r\n formData.append('excelFile', e.target.files[0])\r\n\r\n return API.post(`/Product/${customerId}/${languageCode}/${userId}/upload`, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'),\r\n },\r\n })\r\n }\r\n\r\n function getCustomerList(sellerId) {\r\n return baseStore.get(`/Sellers/${sellerId}/customers`)\r\n }\r\n\r\n function getInvoices(customer, page, offset) {\r\n return baseStore.get(`/invoices/all/${customer}/${page}/${offset}`)\r\n }\r\n\r\n function getInvoicesCount(customer) {\r\n return baseStore.get(`/invoices/all/${customer}/count`)\r\n }\r\n\r\n function searchInvoices(customer, txt) {\r\n return baseStore.get(`/invoices/${customer}/search/${txt}`)\r\n }\r\n\r\n function getInvoiceDetailed(customer, invoice) {\r\n return baseStore.get(`/invoices/${customer}/${invoice}/detailed`)\r\n }\r\n\r\n function getInvoiceHtml(customer, invoiceId, languageId) {\r\n return baseStore.get(\r\n `/invoices/${customer}/${invoiceId}/${languageId}/detailedHtml`,\r\n )\r\n }\r\n\r\n function getTrackingBySalesId(salesId) {\r\n return baseStore.get(`/tracking/invoiceNo/${salesId}`)\r\n }\r\n\r\n function getOrders(customer) {\r\n return baseStore.get(`/orders/${customer}`)\r\n }\r\n\r\n function getOrder(customer, salesId, languageId) {\r\n return baseStore.get(\r\n `/Orders/OrderConfirmation/${customer}/${salesId}/${languageId}`,\r\n )\r\n }\r\n\r\n function searchOrders(customer, txt) {\r\n return baseStore.get(`/orders/${customer}/search/${txt}`)\r\n }\r\n\r\n function getDetailedOrderHtml(customer, salesId, onlyBackOrders, languageId) {\r\n return baseStore.get(\r\n `/Orders/OrderConfirmation/${customer}/${salesId}/${onlyBackOrders}/${languageId}`,\r\n )\r\n }\r\n\r\n function getDetailedRMAOrderHtml(customer, salesId, languageId) {\r\n return baseStore.get(\r\n `/RMAOrders/OrderConfirmation/${customer}/${salesId}/${languageId}`,\r\n )\r\n }\r\n\r\n function getRMAOrders(customer) {\r\n return baseStore.get(`/RMAorders/${customer}`)\r\n }\r\n\r\n function getBackOrdersHtml(customer, languageId) {\r\n return baseStore.get(`/orders/BackOrdersHtml/${customer}/${languageId}`)\r\n }\r\n\r\n function getBackOrders(customer) {\r\n return baseStore.get(`/orders/BackOrder/${customer}`)\r\n }\r\n\r\n function searchRMAOrders(customer, txt) {\r\n return baseStore.get(`/RMAorders/${customer}/search/${txt}`)\r\n }\r\n\r\n function getRMAOrderDetailed(customer, salesId) {\r\n return baseStore.get(`/RMAorders/${customer}/${salesId}`)\r\n }\r\n\r\n function emailOrderConfirmation(\r\n email,\r\n languageId,\r\n salesId,\r\n customer,\r\n onlyBackOrders,\r\n ) {\r\n return baseStore.post('Mail/OrderConfirmation', {\r\n email,\r\n languageId,\r\n salesId,\r\n customer,\r\n onlyBackOrders,\r\n })\r\n }\r\n\r\n function emailRMAOrderConfirmation(email, languageId, salesId, customer) {\r\n return baseStore.post('Mail/RMAOrderConfirmation', {\r\n email,\r\n languageId,\r\n salesId,\r\n customer,\r\n })\r\n }\r\n\r\n function emailRestOrders(email, languageId, customer) {\r\n return baseStore.post('Mail/BackOrders', { email, languageId, customer })\r\n }\r\n\r\n function emailInvoice(email, languageId, customer, invoiceId) {\r\n return baseStore.post('Mail/Invoice', {\r\n email,\r\n languageId,\r\n customer,\r\n invoiceId,\r\n })\r\n }\r\n\r\n function emailBasketOverview(email, userId, selectedCustomer, languageId) {\r\n return baseStore.post('Mail/BasketOverview', {\r\n email,\r\n userId,\r\n selectedCustomer,\r\n languageId,\r\n })\r\n }\r\n\r\n function getReturnReasons() {\r\n return baseStore.get('/System/returnReasons')\r\n }\r\n\r\n function getBrands() {\r\n return baseStore.get('/System/brands')\r\n }\r\n\r\n function getFunctionGroups(language) {\r\n return baseStore.get(`/System/functionGroups/${language}`)\r\n }\r\n\r\n function getDesignCollections() {\r\n return baseStore.get('/System/designCollections')\r\n }\r\n\r\n //Orders\r\n function createOrder(dto) {\r\n return baseStore.post(`/orders/createOrder`, dto)\r\n }\r\n\r\n function validateOrder(dto) {\r\n return baseStore.post(`/orders/validateOrder`, dto)\r\n }\r\n\r\n function createRMA(dto) {\r\n return baseStore.post(`/RMAorders/createRMAOrder`, dto)\r\n }\r\n\r\n function validateRMA(dto) {\r\n return baseStore.post(`/RMAorders/validateRMAOrder`, dto)\r\n }\r\n\r\n //Basket\r\n function getBasket(customerNo, userId, basketType, includeMarkup = false) {\r\n return baseStore.get(`/Basket/user/${customerNo}/${userId}/${includeMarkup}/${basketType}`)\r\n }\r\n\r\n function getBasketOverviewHtml(userId, customerNo, basketType) {\r\n return baseStore.get(`/Basket/basketOverviewHtml/${userId}/${customerNo}/${basketType}`);\r\n }\r\n\r\n function addBasketEntry(\r\n itemId,\r\n quantity,\r\n userId,\r\n customerNo,\r\n tradeFairCampaignId,\r\n basketType,\r\n requestedShippingDate = null,\r\n calculateMarkup = false,\r\n ) {\r\n return baseStore.post(`/Basket`, {\r\n itemId,\r\n quantity,\r\n userId,\r\n customerNo,\r\n tradeFairCampaignId,\r\n requestedShippingDate,\r\n calculateMarkup,\r\n basketType\r\n })\r\n }\r\n\r\n function addMultipleEntries(entries) {\r\n return baseStore.post(`/Basket/multi`, entries)\r\n }\r\n\r\n function updateBasketEntry(\r\n entryChanges,\r\n userId,\r\n customerNo,\r\n calculateMarkup = false,\r\n basketType\r\n ) {\r\n return baseStore.put(`/Basket`, {\r\n ...entryChanges,\r\n userId,\r\n customerNo,\r\n calculateMarkup,\r\n basketType\r\n })\r\n }\r\n\r\n function removeBasketEntry(basketEntryId) {\r\n return baseStore.del(`/Basket/entry/${basketEntryId}`);\r\n }\r\n\r\n function deleteBasket(basketId) {\r\n return baseStore.del(`/Basket/${basketId}`)\r\n }\r\n\r\n function archiveBasket(dto) {\r\n return baseStore.post(`/Basket/archive`, dto)\r\n }\r\n\r\n function getArchivedBasketById(archiveId) {\r\n return baseStore.get(`/Basket/archive/${archiveId}`)\r\n }\r\n\r\n //RMA Basket\r\n function getRMABasket(customerNo, userId) {\r\n return baseStore.get(`/RMABasket/user/${customerNo}/${userId}`)\r\n }\r\n\r\n function addRMABasketEntry(itemId, quantity, userId, customerNo) {\r\n return baseStore.post(`/RMABasket`, {\r\n itemId,\r\n quantity,\r\n userId,\r\n customerNo,\r\n })\r\n }\r\n\r\n function addMultipleRMAEntries(entries) {\r\n return baseStore.post(`/RMABasket/multi`, entries)\r\n }\r\n\r\n function updateRMABasketEntry(\r\n basketEntryId,\r\n entryChanges,\r\n userId,\r\n customerNo,\r\n ) {\r\n return baseStore.put(`/RMABasket`, {\r\n basketEntryId,\r\n ...entryChanges,\r\n userId,\r\n customerNo,\r\n })\r\n }\r\n\r\n function removeRMABasketEntry(basketEntryId, accountNo, userId) {\r\n return baseStore.del(`/RMABasket/${basketEntryId}/${accountNo}/${userId}`)\r\n }\r\n\r\n function deleteRMABasket(basketId) {\r\n return baseStore.del(`/RMABasket/${basketId}`)\r\n }\r\n\r\n function archiveRMABasket(dto) {\r\n return baseStore.post(`/RMABasket/archive`, dto)\r\n }\r\n\r\n function getArchivedRMABasketById(archiveId) {\r\n return baseStore.get(`/Basket/archive/${archiveId}`)\r\n }\r\n\r\n function getUserAppointments(languageId, userId, status) {\r\n if (status === 3) {\r\n //for future only\r\n return baseStore.get(\r\n `/Agreement/user?languageId=${languageId}&userId=${userId}&status=${0}&futureOnly=${true}`,\r\n )\r\n } else {\r\n return baseStore.get(\r\n `/Agreement/user?languageId=${languageId}&userId=${userId}&status=${status}&futureOnly=${false}`,\r\n )\r\n }\r\n }\r\n\r\n function getCustomerAppointments(languageId, customerNo, status) {\r\n if (status === 3) {\r\n return baseStore.get(\r\n `/Agreement/customer?languageId=${languageId}&customerNo=${customerNo}&status=${0}&futureOnly=${true}`,\r\n )\r\n } else {\r\n return baseStore.get(\r\n `/Agreement/customer?languageId=${languageId}&customerNo=${customerNo}&status=${status}&futureOnly=${false}`,\r\n )\r\n }\r\n }\r\n\r\n function getCustomerAppointmentsInDateRange(\r\n languageId,\r\n customerNo,\r\n from,\r\n to,\r\n ) {\r\n return baseStore.get(\r\n `/Agreement/customer/daterange?languageId=${languageId}&customerNo=${customerNo}&from=${from}&to=${to}`,\r\n )\r\n }\r\n\r\n function getAppointmentById(language, id) {\r\n return baseStore.get(`/Agreement/${id}?languageId=${language}`)\r\n }\r\n\r\n function changeAppointment(appointmentObject) {\r\n return baseStore.put(`/Agreement`, appointmentObject)\r\n }\r\n\r\n function createAppointment(appointmentObject) {\r\n return baseStore.post(`Agreement`, appointmentObject)\r\n }\r\n\r\n function getAppointmentTypes(language, userId) {\r\n return baseStore.get(\r\n `Agreement/types?languageId=${language}&userId=${userId}`,\r\n )\r\n }\r\n\r\n function getSalesByMetric(userId, metric) {\r\n return baseStore.get(`Statistics/${userId}/${metric}`)\r\n }\r\n\r\n function getSalesByMetricAndBrand(userId, metric, brand) {\r\n return baseStore.get(`Statistics/${userId}/${metric}/${brand}`)\r\n }\r\n\r\n function getLanguages() {\r\n return baseStore.get('/System/languages')\r\n }\r\n\r\n function getAllUsers() {\r\n return baseStore.get('/user/all')\r\n }\r\n\r\n function getLoggedInUser() {\r\n return baseStore.get(`/user`)\r\n }\r\n\r\n function createLabel(label) {\r\n return baseStore.post('/Labels', label)\r\n }\r\n\r\n function updateLabel(label) {\r\n return baseStore.put('/Labels', label)\r\n }\r\n\r\n function getLabelGroups() {\r\n return baseStore.get('/Labels/LabelGroup')\r\n }\r\n function getLabels() {\r\n return baseStore.get('/Labels')\r\n }\r\n\r\n function searchLabels(term) {\r\n return baseStore.get(`/Labels/search/${term}`)\r\n }\r\n\r\n function getLabelByKey(key) {\r\n return baseStore.get(`/Labels/key/${key}`)\r\n }\r\n\r\n function getDetailedLabelById(id) {\r\n return baseStore.get(`/Labels/${id}`)\r\n }\r\n\r\n function getLabelIdByKey(key) {\r\n return baseStore.get(`/Labels/key/${key}`)\r\n }\r\n\r\n function removeLabel(id) {\r\n return baseStore.del(`/Labels/${id}`)\r\n }\r\n\r\n function getDictionary(languageId) {\r\n return baseStore.get(`/labels/language/${languageId}`)\r\n }\r\n\r\n function updateAppImage(id, formData) {\r\n return baseStore.httpClient.put(`/apps/${id}`, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n })\r\n }\r\n\r\n function getApps() {\r\n return baseStore.get('/apps')\r\n }\r\n\r\n function getApp(id) {\r\n return baseStore.get(`/apps/${id}`)\r\n }\r\n\r\n function getUserTypes() {\r\n return baseStore.get('/User/Usertypes')\r\n }\r\n\r\n function getCampaigns(customerNo) {\r\n return baseStore.get(`/tradefairCampaign/tradeFair/${customerNo}`)\r\n }\r\n\r\n function setSortingOnCampaignProduct(obj) {\r\n return baseStore.post(`/tradefairCampaign/newSortOrder`, obj)\r\n }\r\n\r\n function createSortOrderForCampaign(campaignId) {\r\n return baseStore.post(\r\n `/tradefairCampaign/createSortOrderForCampaign/${campaignId}`,\r\n )\r\n }\r\n\r\n function campaignProductSearch(obj) {\r\n return baseStore.postSingleton(`/tradefairCampaign/search/`, obj)\r\n }\r\n\r\n function getYoutubeVideos() {\r\n return baseStore.get('/YoutubeVideos/all')\r\n }\r\n\r\n function addYoutubeVideo(video) {\r\n return baseStore.post('/YoutubeVideos/add', video)\r\n }\r\n\r\n function editYoutubeVideo(video) {\r\n return baseStore.put('/YoutubeVideos/edit', video)\r\n }\r\n\r\n function deleteYoutubeVideo(videoId) {\r\n return baseStore.del(`/YoutubeVideos/delete/${videoId}`)\r\n }\r\n\r\n function getIntroDates() {\r\n return baseStore.get(`/Apps/introDates`)\r\n }\r\n\r\n function createIntroDates(datesObj) {\r\n return baseStore.post(`/Apps/introDate`, datesObj)\r\n }\r\n\r\n function editIntroDates(datesObj) {\r\n return baseStore.put(`/Apps/introDate`, datesObj)\r\n }\r\n\r\n function deleteIntroDates(id) {\r\n return baseStore.del(`/Apps/introDate/${id}`)\r\n }\r\n\r\n function getMasterDataFacets() {\r\n return baseStore.get(`/MasterDataFacets/all`)\r\n }\r\n\r\n function addFacetToUser(userId, facetId) {\r\n return baseStore.post(`/MasterDataFacets/FacetToUser/${userId}/${facetId}`)\r\n }\r\n\r\n function removeFacetFromUser(userId, facetId) {\r\n return baseStore.del(`MasterDataFacets/FacetToUser/${userId}/${facetId}`)\r\n }\r\n\r\n function addMasterDataFacet(facetName) {\r\n return baseStore.post(`MasterDataFacets/addFacet`, { facetName })\r\n }\r\n\r\n function removeMasterDataFacet(facetId) {\r\n return baseStore.del(`MasterDataFacets/removeFacet/${facetId}`)\r\n }\r\n function getMasterDataDatesByUserType(userTypeId) {\r\n return baseStore.get(`MasterDataDate/priceToDate/${userTypeId}`)\r\n }\r\n function getMasterDataDates() {\r\n return baseStore.get('MasterDataDate/masterDataDates')\r\n }\r\n function CreateMasterDataDate(obj) {\r\n return baseStore.post(`MasterDataDate/masterDataDates`, obj)\r\n }\r\n function UpdateMasterDataDate(obj) {\r\n return baseStore.put(`MasterDataDate/masterDataDates`, obj)\r\n }\r\n function DeleteMasterDataDate(obj) {\r\n return baseStore.del(\r\n 'MasterDataDate/masterDataDates?introductionDate=' + obj,\r\n )\r\n }\r\n function getMasterDataStandardTemplates() {\r\n return baseStore.get(`MasterDataTemplate/standard`)\r\n }\r\n\r\n function GetUserTypesGroup() {\r\n return baseStore.get('User/UsertypesGroup')\r\n }\r\n\r\n function GetMasterDataItemAvailableDate() {\r\n return baseStore.get('MasterDataItemAvailableDate')\r\n }\r\n\r\n function CreateMasterDataItemAvailableDate(obj) {\r\n return baseStore.post('MasterDataItemAvailableDate', obj)\r\n }\r\n\r\n function UpdateMasterDataItemAvailableDate(obj) {\r\n return baseStore.put('MasterDataItemAvailableDate', obj)\r\n }\r\n\r\n function DeleteMasterDataItemAvailableDate(obj) {\r\n return baseStore.del('MasterDataItemAvailableDate?introductionDate=' + obj)\r\n }\r\n\r\n const GetHelpLinks = appId => baseStore.get(`HelpLinkManagement/${appId}`);\r\n const DelHelpLinks = (appId, id) => baseStore.del(`HelpLinkManagement/${appId}?entryId=${id}`)\r\n const NewHelpLinks = (appId, link) => baseStore.post(`HelpLinkManagement/${appId}`, link)\r\n const UpdateHelpLinks = (appId, link) => baseStore.put(`HelpLinkManagement/${appId}`, link)\r\n\r\n return {\r\n GetHelpLinks,\r\n DelHelpLinks,\r\n NewHelpLinks,\r\n UpdateHelpLinks,\r\n GetMasterDataItemAvailableDate,\r\n UpdateMasterDataItemAvailableDate,\r\n DeleteMasterDataItemAvailableDate,\r\n CreateMasterDataItemAvailableDate,\r\n GetUserTypesGroup,\r\n getMasterDataDates,\r\n getMasterDataDatesByUserType,\r\n CreateMasterDataDate,\r\n UpdateMasterDataDate,\r\n DeleteMasterDataDate,\r\n getIntroDates,\r\n createIntroDates,\r\n editIntroDates,\r\n deleteIntroDates,\r\n getUserCustomers,\r\n getUserCustomersBySearch,\r\n getCustomerCount,\r\n getBlockedCustomers,\r\n getCustomerNotes,\r\n postCustomerNote,\r\n getCampaigns,\r\n createSortOrderForCampaign,\r\n setSortingOnCampaignProduct,\r\n campaignProductSearch,\r\n getApps,\r\n updateAppImage,\r\n getApp,\r\n getUserTypes,\r\n createLabel,\r\n updateLabel,\r\n getLabelGroups,\r\n getLabels,\r\n searchLabels,\r\n getLabelByKey,\r\n getDetailedLabelById,\r\n getLabelIdByKey,\r\n removeLabel,\r\n getDictionary,\r\n getAllUsers,\r\n getLoggedInUser,\r\n getSalesByMetricAndBrand,\r\n getSalesByMetric,\r\n getUserAppointments,\r\n getCustomerAppointments,\r\n getCustomerAppointmentsInDateRange,\r\n getAppointmentById,\r\n changeAppointment,\r\n createAppointment,\r\n getAppointmentTypes,\r\n getCustomerByAccountNo: getCustomerByAccountNo,\r\n getCustomersBySearch,\r\n getCustomerAddressesByAccountNo,\r\n getCustomerDeliveryCountries,\r\n getSellersBySearch,\r\n getEmployeesBySearch,\r\n searchProducts,\r\n searchExcel,\r\n getProductById,\r\n getProductByExcel,\r\n getReturnProductById,\r\n getCustomerList,\r\n getInvoices,\r\n getInvoicesCount,\r\n searchInvoices,\r\n getInvoiceDetailed,\r\n getInvoiceHtml,\r\n getTrackingBySalesId,\r\n getOrders,\r\n getOrder,\r\n searchOrders,\r\n getDetailedOrderHtml,\r\n getDetailedRMAOrderHtml,\r\n emailOrderConfirmation,\r\n emailRMAOrderConfirmation,\r\n emailRestOrders,\r\n emailInvoice,\r\n emailBasketOverview,\r\n getRMAOrderDetailed,\r\n getRMAOrders,\r\n getBackOrdersHtml,\r\n getBackOrders,\r\n searchRMAOrders,\r\n createOrder,\r\n validateOrder,\r\n createRMA,\r\n validateRMA,\r\n getBasket,\r\n getBasketOverviewHtml,\r\n addBasketEntry,\r\n addMultipleEntries,\r\n updateBasketEntry,\r\n removeBasketEntry,\r\n deleteBasket,\r\n archiveBasket,\r\n getArchivedBasketById,\r\n\r\n getRMABasket,\r\n addRMABasketEntry,\r\n addMultipleRMAEntries,\r\n updateRMABasketEntry,\r\n removeRMABasketEntry,\r\n archiveRMABasket,\r\n getArchivedRMABasketById,\r\n deleteRMABasket,\r\n\r\n getReturnReasons,\r\n getBrands,\r\n getLanguages,\r\n getFunctionGroups,\r\n getDesignCollections,\r\n\r\n getAllFacetValues,\r\n\r\n getYoutubeVideos,\r\n addYoutubeVideo,\r\n editYoutubeVideo,\r\n deleteYoutubeVideo,\r\n getMasterDataFacets,\r\n addFacetToUser,\r\n removeFacetFromUser,\r\n addMasterDataFacet,\r\n removeMasterDataFacet,\r\n getMasterDataStandardTemplates,\r\n\r\n getReturnProductByExcel\r\n }\r\n}\r\n","export default function StatisticStore(base) {\r\n let baseStore = base\r\n\r\n function getStatistics(accountName, currency) {\r\n let rs = baseStore.get(`/sales/${accountName}/${currency}`)\r\n return rs\r\n }\r\n\r\n return {\r\n getStatistics,\r\n }\r\n}\r\n","import axios from 'axios'\r\nimport ApiUrls from './ApiUrls'\r\n\r\nexport default function MasterItemDataStore(baseStore) {\r\n const getCustomerTemplates = function (customerId) {\r\n return baseStore.get('MasterDataTemplate/customer/' + customerId)\r\n }\r\n\r\n const productSearch = function (searchObj) {\r\n return baseStore.post('MasterDataSearch/Product', searchObj)\r\n }\r\n\r\n // Customer ADD\r\n const addCustomer = function (customer) {\r\n return baseStore.post('/MasterDataCustomer', { name: customer.name })\r\n }\r\n\r\n // Customer UPDATE\r\n const updateCustomer = function (customer) {\r\n return baseStore.put('/MasterDataCustomer/' + customer.id, {\r\n name: customer.name,\r\n })\r\n }\r\n\r\n // Customer Detail ADD\r\n const addCustomerDetail = function (detail) {\r\n return baseStore.post('/MasterDataCustomer/Detail/', detail)\r\n }\r\n\r\n // Customer Detail UPDATE\r\n const updateCustomerDetail = function (detail) {\r\n return baseStore.put('/MasterDataCustomer/Detail/' + detail.id, detail)\r\n }\r\n\r\n // Customer Detail DELETE\r\n const deleteCustomerDetail = function (detail) {\r\n return baseStore.del('/MasterDataCustomer/Detail/' + detail.id)\r\n }\r\n\r\n // Template ADD\r\n const addTemplate = function (data) {\r\n return baseStore.post('/MasterDataTemplate', data)\r\n }\r\n\r\n // Template COPY\r\n const copyTemplate = function (data) {\r\n return baseStore.post('/MasterDataTemplate/copyFromTemplate', data)\r\n }\r\n\r\n // Template UPDATE\r\n const editTemplate = function (data) {\r\n return baseStore.put(`/MasterDataTemplate/${data.id}`, {\r\n name: data.name,\r\n defaultLanguageCode: data.defaultLanguageCode,\r\n standard: data.standard,\r\n })\r\n }\r\n\r\n // Template DELETE\r\n const deleteTemplate = function (data) {\r\n return baseStore.del(`/MasterDataTemplate/${data.id}`)\r\n }\r\n\r\n // Template Field ADD\r\n const addTemplateField = function (data) {\r\n return baseStore.post('/MasterDataTemplate/field', data)\r\n }\r\n\r\n // Template Field UPDATE\r\n const updateTemplateField = function (data) {\r\n return baseStore.put(`/MasterDataTemplate/field/${data.id}`, data)\r\n }\r\n\r\n // Template field DELETE\r\n const deleteTemplateField = function (data) {\r\n return baseStore.del(`/MasterDataTemplate/field/${data.id}`)\r\n }\r\n\r\n // Template field GET data\r\n const readTemplateFieldData = function () {\r\n return baseStore.get('/MasterDataTemplate/DataField')\r\n }\r\n\r\n // Update DataField\r\n const updateDataField = function (id, data) {\r\n return baseStore.put(`/MasterDataTemplate/DataField/${id}`, data)\r\n }\r\n\r\n // Language\r\n const getLanguages = function () {\r\n return baseStore.get('Language')\r\n }\r\n\r\n //special axios instance for these, as they require special headers, should be fixed later\r\n\r\n const API = axios.create({\r\n baseURL: ApiUrls.dataUrl,\r\n })\r\n\r\n const productSearchExport = function (searchObj) {\r\n return API.post('MasterDataSearch/Product/Excel', searchObj, {\r\n headers: {\r\n responseType: 'arraybuffer',\r\n Authorization: 'Bearer ' + localStorage.getItem('accessToken'),\r\n },\r\n })\r\n }\r\n\r\n const getFilterFromExcelFile = (e) => {\r\n e.preventDefault()\r\n const formData = new FormData()\r\n formData.append('excelFile', e.target.files[0])\r\n return API.post('MasterDataSearch/product/excel/upload', formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'),\r\n },\r\n })\r\n }\r\n\r\n return {\r\n getLanguages,\r\n getCustomerTemplates,\r\n productSearch,\r\n productSearchExport,\r\n getFilterFromExcelFile,\r\n\r\n // Customer\r\n addCustomer,\r\n updateCustomer,\r\n\r\n // Customer Detail\r\n addCustomerDetail,\r\n updateCustomerDetail,\r\n deleteCustomerDetail,\r\n\r\n // Template\r\n addTemplate,\r\n copyTemplate,\r\n editTemplate,\r\n deleteTemplate,\r\n\r\n // Template field\r\n addTemplateField,\r\n updateTemplateField,\r\n deleteTemplateField,\r\n\r\n // Datafield\r\n updateDataField,\r\n readTemplateFieldData,\r\n }\r\n}\r\n","import { createMuiTheme } from '@material-ui/core/styles'\r\n\r\nexport default createMuiTheme({\r\n palette: {\r\n typography: {\r\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n },\r\n primary: {\r\n light: '#919de6',\r\n main: '#3f50b5',\r\n dark: '#002884',\r\n contrastText: '#fff',\r\n },\r\n secondary: {\r\n light: '#ff5f52',\r\n main: '#c62828',\r\n dark: '#8e0000',\r\n contrastText: '#ffffff',\r\n },\r\n edit: {\r\n main: '#00ecd9',\r\n },\r\n appBar: {\r\n background: '#F5F5F5',\r\n color: '#737373',\r\n },\r\n background: {\r\n default: 'white',\r\n },\r\n button: {\r\n primary: '#747474',\r\n secondary: '#747474',\r\n add: '#097E15',\r\n remove: 'red',\r\n update: 'orange',\r\n },\r\n },\r\n})\r\n","import { createMuiTheme } from '@material-ui/core'\r\n\r\nexport default createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: '#000000',\r\n },\r\n secondary: {\r\n main: '#747474',\r\n },\r\n edit: {\r\n main: '#ffffff',\r\n },\r\n background: {\r\n default: '#747474',\r\n secondary: '#747474',\r\n },\r\n paper: {\r\n default: '#747474',\r\n },\r\n },\r\n})\r\n","const CustomerQuantityEnum = {\r\n MANY: 2,\r\n TWO: 1,\r\n ONEORNONE: 0,\r\n}\r\n\r\nexport { CustomerQuantityEnum }\r\n","import { useEffect, useState } from 'react'\n\n//Settings handlers\nimport History from './history'\n\n//Data\nimport DataStoreHandler from '../data/DataStoreHandler'\nimport ReactGA from 'react-ga'\n\n//Themes\nimport Theme from '../theme/rdg-theme'\nimport DarkTheme from '../theme/dark-theme'\nimport { useDictionaryModel } from '../languages/Dictionary'\nimport { CustomerQuantityEnum } from '../../shared/Enums/CustomersEnum'\n\nexport function useCoreModel(snackbar) {\n const [isInitialized, setIsInitialized] = useState(false)\n const [isLoading, setIsLoading] = useState(true)\n const [theme, setTheme] = useState(Theme)\n const [width, setWidth] = useState()\n const [isAuthenticated, setisAuthenticated] = useState(false)\n const [title, setTitle] = useState()\n const [modal, setModal] = useState({ headline: '', message: '' })\n const [showLabelNames, setShowLabelNames] = useState(false)\n const [isExpanded, setIsExpanded] = useState(true)\n\n //Data, Stores & HttpClientHandler\n const dataStoreHandler = DataStoreHandler()\n\n //Core models\n const userModel = useUserModel(snackbar, dataStoreHandler)\n const dictionaryModel = useDictionaryModel(\n userModel,\n dataStoreHandler.dataStore,\n )\n const history = History\n\n function authenticateLogin(loginForm) {\n return new Promise((resolve, reject) => {\n let status = null\n dataStoreHandler.hubStore\n .login(loginForm.userName, loginForm.password)\n .then((response) => {\n status = response\n if (response.status === 200) {\n let userId = response.data.userId\n localStorage.setItem('accessToken', response.data.accessToken.token)\n localStorage.setItem('refreshToken', response.data.refreshToken)\n localStorage.setItem('userId', userId)\n setisAuthenticated(true)\n const setLoad = () => setIsLoading(false)\n userModel.load(userId, setLoad)\n resolve(true)\n //callback(true);\n //}\n } //else sessionModel.incrementLogin();\n })\n .catch((error) => {\n console.log(error)\n status = error.response?.status\n setisAuthenticated(false)\n reject(false)\n })\n .finally(() => {\n if (status === null)\n snackbar(\n 'error',\n 'Network error! Could not connect to the database.',\n )\n else if (status === 401)\n snackbar(\n 'error',\n 'Unauthorized! The user/password combination was not valid.',\n )\n else if (status === 500)\n snackbar(\n 'error',\n 'Internal server error! Contact support@rdg.dk if the problem persists.',\n )\n })\n })\n }\n\n function logout() {\n setisAuthenticated(false)\n localStorage.removeItem('accessToken')\n localStorage.removeItem('refreshToken')\n localStorage.removeItem('userId')\n dataStoreHandler.hubStore\n .logout()\n .catch((error) => {\n console.warn(error)\n })\n .finally(() => {\n History.push('/login')\n })\n }\n\n function useSetTheme() {\n setTheme(theme === Theme ? DarkTheme : Theme) //Hack - doesn't actually set the theme, it flips between dark and normal.\n snackbar('info', 'Theme was changed')\n }\n\n function getUserApps() {\n let arr = []\n if (userModel.userSetting.apps) arr = userModel.userSetting.apps\n return arr\n }\n\n function setTitles(title) {\n document.title = `RDG Portal | ${title}`\n setTitle(title)\n }\n\n useEffect(() => {\n if (isInitialized)\n {\n return\n }\n\n setIsInitialized(true)\n\n // Check if user is authenticated\n let refreshToken = localStorage.getItem('refreshToken')\n let accessToken = localStorage.getItem('accessToken')\n let userId = localStorage.getItem('userId')\n\n if (refreshToken && accessToken && userId) {\n dataStoreHandler.hubStore\n .authenticated()\n .then((response) => {\n const setLoad = (success) => {\n if (success) {\n setisAuthenticated(true)\n setIsLoading(false)\n } else {\n snackbar('warning', 'Session could not be authenticated')\n setisAuthenticated(false)\n setIsLoading(false)\n }\n }\n userModel.load(userId, setLoad)\n })\n .catch((error) => {\n let isExpired =\n error.response?.status === 440 && error.response.data?.tokenExpired\n if (isExpired) {\n setIsInitialized(false)\n return\n }\n snackbar('warning', error.toString())\n setIsLoading(false)\n })\n .finally(() => {})\n } else {\n //history.push(\"/login\"); todo: investigate - why redirect here?\n setIsLoading(false)\n }\n }, [\n snackbar,\n setIsInitialized,\n isInitialized,\n userModel,\n dataStoreHandler,\n history,\n ])\n\n useEffect(() => {\n setIsExpanded(getDrawerStatus())\n\n const mm = window.matchMedia(\"(max-width: 1366px)\");\n mm.addEventListener('change', () => {\n if (mm.matches) {\n setIsExpanded(false)\n } else {\n setIsExpanded(getDrawerStatus())\n }\n })\n\n if (mm.matches) {\n setIsExpanded(false)\n }\n }, [])\n\n function getDrawerStatus() {\n let o = localStorage.getItem('openDrawer')\n return JSON.parse(o) === true\n }\n\n function expandDrawer(value) {\n setIsExpanded(value)\n localStorage.setItem('openDrawer', JSON.stringify(value))\n }\n\n return {\n isInitialized,\n isLoading,\n user: userModel,\n logout,\n history,\n theme,\n width,\n setWidth,\n snackbar,\n dictionary: dictionaryModel,\n hubStore: dataStoreHandler.hubStore,\n dataStore: dataStoreHandler.dataStore,\n statisticStore: dataStoreHandler.statisticStore,\n masterItemDataStore: dataStoreHandler.masterItemDataStore,\n authenticateLogin,\n setTheme: useSetTheme,\n getUserApps,\n isAuthenticated: isAuthenticated,\n setTitles,\n title,\n modal,\n setModal,\n showLabelNames,\n setShowLabelNames,\n isExpanded,\n expandDrawer\n }\n}\nexport function useUserModel(snackbar, dataStoreHandler) {\n const [isInitialized, setIsInitialized] = useState(false)\n const [userId, setUserId] = useState(0)\n const [userName, setUserName] = useState('')\n const [displayName, setDisplayName] = useState('Unregistered user')\n const [selectedCustomer, setSelectedCustomer] = useState({\n accountNo: '',\n accountName: '',\n accountType: '',\n currency: '',\n Phone: '',\n Email: '',\n })\n const [basketUserId, setBasketUserId] = useState(0)\n const [language, setLanguage] = useState(0)\n const [languageCode, setLanguageCode] = useState()\n const [userSetting, setUserSetting] = useState({\n apps: [],\n primaryAppId: 1,\n selectedCustomerAccount: null,\n salesPersonAgentInitials: null,\n employeePurchaseAccount: null,\n samplesPurchaseAccount: null,\n languageManagement: false,\n HelpLinkManagement: false,\n customerUserManagement: false,\n allUserManagement: false,\n userTypeId: 1,\n })\n\n const [isLoading, setIsLoading] = useState(false)\n\n const { ONEORNONE, TWO, MANY } = CustomerQuantityEnum\n\n const [hasMultipleAccounts, setHasMultipleAccounts] = useState(ONEORNONE)\n\n function resetCustomer() {\n load(userId)\n }\n\n function handleChangeCustomer(acc, basketUserId) {\n acc.id = null\n if (!acc) {\n snackbar('warning', 'Invalid account!')\n return\n }\n\n setIsLoading(true)\n\n dataStoreHandler.hubStore\n .updateSelectedCustomerAccount({\n userId: userId,\n accountNo: acc.accountNo,\n accountName: acc.accountName,\n })\n .then(() => window.location.reload())\n .catch(() => snackbar('warning', 'Failed to set selected customer account no in Database'))\n }\n\n function loadSelectedCustomer(accountNo) {\n if (!accountNo) {\n setIsLoading(false)\n setSelectedCustomer({ noCustomer: true })\n return\n }\n dataStoreHandler.dataStore\n .getCustomerByAccountNo(accountNo)\n .then((res) => {\n if (res.status === 200) {\n setSelectedCustomer(res.data)\n setIsLoading(false)\n }\n })\n .catch((e) => {\n console.log(e.toString())\n })\n }\n\n function handleChangeLanguage(languageId, languageCode) {\n if (!userId) return\n\n dataStoreHandler.hubStore\n .updateUserLanguage({ userId, languageId })\n .then((x) => {\n if (x.status === 200) {\n setLanguage(languageId)\n setLanguageCode(languageCode)\n }\n })\n .catch((error) => {\n console.log(error)\n snackbar('warning', 'Failed to switch language.')\n })\n .finally(() => {})\n }\n\n function handleChangePrimaryApp(id, callback) {\n if (userId === 0) return\n\n let s = userSetting\n s.primaryAppId = id\n\n dataStoreHandler.hubStore\n .updateUser(s)\n .then((x) => {\n if (x.status === 200) {\n setUserSetting(s)\n if (callback) callback(id)\n }\n })\n .catch((error) => {\n if (callback) callback(id)\n console.log(error)\n snackbar('warning', 'Failed to update settings..')\n })\n .finally(() => {})\n }\n\n function selectedCustomerToString() {\n return (\n selectedCustomer.accountNo + ' (' + selectedCustomer.accountName + ')'\n )\n }\n\n function load(userId, callback) {\n if (!userId) return null\n setIsLoading(true)\n\n dataStoreHandler.hubStore\n .getLoggedInUser()\n .then((x) => {\n let rs = x\n if (x.status === 200) {\n if (rs.data) {\n const {\n userId,\n userName,\n languageId,\n languageCode,\n displayName,\n selectedCustomerAccount,\n salesPersonAgentInitials,\n employeePurchaseAccount,\n samplesPurchaseAccount,\n } = rs.data\n\n setUserId(userId)\n setUserName(userName)\n setBasketUserId(userId)\n setDisplayName(displayName)\n setUserSetting(rs.data)\n setLanguage(languageId)\n setLanguageCode(languageCode)\n loadSelectedCustomer(selectedCustomerAccount)\n setIsInitialized(true)\n\n if (salesPersonAgentInitials) {\n setHasMultipleAccounts(MANY)\n } else {\n //if no initials\n if (employeePurchaseAccount && samplesPurchaseAccount) {\n setHasMultipleAccounts(TWO)\n } else {\n setHasMultipleAccounts(ONEORNONE)\n }\n }\n\n ReactGA.set({ userId: userId })\n if (callback) callback(true)\n } else {\n if (callback) callback(false)\n return false\n }\n }\n })\n .catch(function (error) {\n throw error\n })\n .finally(() => setIsLoading(false))\n }\n return {\n isInitialized,\n isLoading,\n userId,\n basketUserId,\n account: userName,\n displayName,\n selectedCustomer,\n language,\n languageCode,\n hasMultipleAccounts,\n resetCustomer,\n setLanguage: handleChangeLanguage,\n setPrimaryApp: handleChangePrimaryApp,\n userSetting,\n load: load,\n setCustomer: handleChangeCustomer,\n selectedCustomerToString,\n }\n}\n","import { useEffect, useState } from 'react'\r\n\r\nexport function useDictionaryModel(user, dataStore) {\r\n const [dictionary, setDictionary] = useState([])\r\n const [isEditMode, setIsEditMode] = useState(false)\r\n\r\n function getLabel(key) {\r\n let rs = dictionary[key]\r\n return rs ? rs : key\r\n }\r\n\r\n function load() {\r\n if (user.userId === 0 || user.language === 0) return\r\n dataStore\r\n .getDictionary(user.language)\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setDictionary(x.data.dictionary)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {})\r\n }\r\n\r\n function useSetIsEditMode(value) {\r\n setIsEditMode(value)\r\n console.log(value)\r\n }\r\n\r\n useEffect(() => {\r\n load()\r\n }, [user.language])\r\n\r\n return {\r\n getLabel,\r\n isEditMode,\r\n useSetIsEditMode,\r\n load,\r\n }\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useCoreModel } from '../settings/Core'\r\nimport { useSnackbar } from 'notistack'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport ClearIcon from '@material-ui/core/SvgIcon/SvgIcon'\r\n\r\nfunction SnackbarHandler() {\r\n //Snackbar setup\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar()\r\n const action = (key) => (\r\n closeSnackbar(key)}\r\n aria-label='Clear'\r\n color='secondary'>\r\n \r\n \r\n )\r\n return (variant, message) => enqueueSnackbar(message, { action, variant })\r\n}\r\n\r\nexport const CoreContext = createContext(null)\r\n\r\nexport default function CoreProvider({ children }) {\r\n const core = useCoreModel(SnackbarHandler())\r\n\r\n return {children}\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n },\r\n bar: {\r\n top: '4px',\r\n borderTopLeftRadius: '10px',\r\n borderTopRightRadius: '10px',\r\n },\r\n}))\r\n\r\nexport default function LoadingBarBox(props) {\r\n const classes = useStyles()\r\n const { children, className, isLoading } = props\r\n\r\n return (\r\n
\r\n
\r\n {isLoading ? : null}\r\n {children}\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useState } from 'react'\r\n\r\nimport '../../resources/css/overrides.css'\r\n\r\nimport classNames from 'classnames'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport InputAdornment from '@material-ui/core/InputAdornment'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport Visibility from '@material-ui/icons/Visibility'\r\nimport VisibilityOff from '@material-ui/icons/VisibilityOff'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport CircularProgress from '@material-ui/core/CircularProgress/CircularProgress'\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n margin: {\r\n margin: theme.spacing(1),\r\n },\r\n outlinedInputFieldWithIcon: {\r\n padding: '10px',\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n },\r\n loader: {\r\n borderRadius: '10px 10px 0 0',\r\n },\r\n})\r\n\r\nfunction PasswordIcon(showPassword, onClick) {\r\n return {\r\n endAdornment: (\r\n \r\n onClick()}\r\n href={void 0}>\r\n {showPassword ? : }\r\n \r\n \r\n ),\r\n }\r\n}\r\n\r\nfunction LoadingIcon(isLoading, icon) {\r\n return {\r\n endAdornment: (\r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n <>{icon}\r\n )}\r\n \r\n ),\r\n }\r\n}\r\n\r\nfunction OutlinedInputField(props) {\r\n const [showPassword, setShowPassword] = useState(false)\r\n const { password } = props\r\n const { error } = props\r\n const {\r\n autocomplete,\r\n isLoading,\r\n onEnter,\r\n icon,\r\n id,\r\n type,\r\n fullWidth,\r\n required,\r\n label,\r\n value,\r\n htmlFor,\r\n disabled,\r\n classes,\r\n maxLength,\r\n ...rest\r\n } = props\r\n\r\n const inputProps = (password) =>\r\n password\r\n ? PasswordIcon(showPassword, togglePassword)\r\n : LoadingIcon(isLoading, icon)\r\n\r\n function togglePassword() {\r\n setShowPassword(!showPassword)\r\n }\r\n\r\n function handleChange(e) {\r\n props.onChange(e)\r\n }\r\n\r\n function catchEnter(e) {\r\n if (onEnter !== undefined && e.key === 'Enter') onEnter()\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default withStyles(styles)(OutlinedInputField)\r\n","import React from 'react'\r\n//Components\r\nimport LoadingBarBox from '../../../../core/components/ui/LoadingBarBox'\r\nimport OutlinedInputField from './OutlinedInputField'\r\n\r\n//Material UI\r\nimport withStyles from '@material-ui/core/styles/withStyles'\r\nimport Button from '@material-ui/core/Button'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport AccountCircle from '@material-ui/icons/AccountCircle'\r\nimport { Link } from 'react-router-dom'\r\nimport Logo from '../../../../core/images/rosendahl-design-group-logo.png'\r\n\r\nconst styles = (theme) => ({\r\n paper: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\r\n 3,\r\n )}px`,\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: '100%',\r\n marginTop: theme.spacing(1),\r\n },\r\n submit: {\r\n marginTop: theme.spacing(3),\r\n },\r\n marginTop: {\r\n marginTop: '45vh',\r\n transform: 'translateY(-50%)',\r\n },\r\n logo: {\r\n width: 'auto',\r\n height: '100px',\r\n filter: 'brightness(0.5)',\r\n padding: theme.spacing(1),\r\n },\r\n newUserInfoWrapper: {\r\n '& > *': {\r\n display: 'inline-block',\r\n },\r\n 'marginTop': 20,\r\n },\r\n leftSide: {\r\n marginRight: 5,\r\n },\r\n link: {\r\n textDecoration: 'underline',\r\n color: 'blue',\r\n },\r\n})\r\n\r\nfunction SignIn(props) {\r\n const { classes, isLoading, loginForm, setUser, setPassword, submit } = props\r\n\r\n function handleChangeUserName(evt) {\r\n evt.preventDefault()\r\n setUser(evt.target.value)\r\n }\r\n\r\n function handleChangePassword(evt) {\r\n evt.preventDefault()\r\n setPassword(evt.target.value)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n\r\n Sign in\r\n \r\n\r\n }\r\n required\r\n fullWidth\r\n />\r\n\r\n \r\n\r\n \r\n Sign In\r\n \r\n\r\n \r\n Forgot Password?\r\n \r\n
\r\n \r\n New user? Please contact our customer service on:\r\n \r\n
\r\n\r\n \r\n DK:\r\n \r\n \r\n kundeservice@rdg.dk\r\n \r\n
\r\n\r\n \r\n NO:\r\n \r\n \r\n salgno@rdg.dk\r\n \r\n
\r\n\r\n \r\n Other countries:\r\n \r\n \r\n customerservice@rdg.dk\r\n \r\n
\r\n\r\n \r\n Please inform us of your customer number and email address.\r\n \r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(SignIn)\r\n","import { Redirect, Route } from \"react-router-dom\";\r\nimport React from \"react\";\r\n\r\nexport const ProtectedRoute = ({ component: Component, isAuth, ...rest }) => {\r\n return (\r\n \r\n isAuth ? : \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport const ComponentRoute = ({\r\n component: Component,\r\n componentId,\r\n ...rest\r\n}) => (\r\n } />\r\n);\r\n","import React from 'react'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport CheckIcon from '@material-ui/icons/Check'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport Fab from '@material-ui/core/Fab/Fab'\r\n\r\nconst icon = (v) => {\r\n if (v === 'add') return \r\n else if (v === 'submit') return \r\n else if (v === 'cancel') return \r\n else return null\r\n}\r\n\r\nexport const FloatingActionButton = (props) => {\r\n const { variant } = props\r\n return (\r\n props.onClick(e)}\r\n style={{\r\n position: 'fixed',\r\n right: '15px',\r\n bottom: '60px',\r\n zIndex: '1000',\r\n }}>\r\n {icon(variant)}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport Paper from '@material-ui/core/Paper'\r\nimport withStyles from '@material-ui/core/styles/withStyles'\r\n\r\nconst styles = (theme) => ({\r\n formPaper: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(1),\r\n borderRadius: 0,\r\n },\r\n outlined: {\r\n boxShadow: 'none',\r\n padding: theme.spacing(0),\r\n },\r\n topBorder: {\r\n borderTop: '1px solid #e0e0e0',\r\n },\r\n})\r\n\r\nfunction FormSection(props) {\r\n const { classes, children, isOutlined, topBorder, ...rest } = props\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(FormSection)\r\n","import React, { useEffect, useState } from 'react'\r\nimport DOMPurify from 'dompurify'\r\n\r\nimport { useContext } from 'react'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport {\r\n Button,\r\n FormControl,\r\n InputLabel,\r\n makeStyles,\r\n MenuItem,\r\n Select,\r\n TextField,\r\n} from '@material-ui/core'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport LinkIcon from '@material-ui/icons/Link'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n ico: {\r\n 'color': 'white',\r\n 'background': theme.palette.primary.main,\r\n 'marginLeft': 10,\r\n 'transform': 'translateY(-5px)',\r\n\r\n '&:hover': {\r\n background: theme.palette.primary.dark,\r\n },\r\n },\r\n icoSuccess: {\r\n 'color': 'white',\r\n 'background': theme.palette.success.main,\r\n 'marginLeft': 10,\r\n 'transform': 'translateY(-5px)',\r\n\r\n '&:hover': {\r\n background: theme.palette.success.main,\r\n },\r\n },\r\n input: {\r\n width: 250,\r\n marginBottom: 20,\r\n },\r\n end: {\r\n margin: '20px 0',\r\n },\r\n}))\r\n\r\nexport default function TranslationLabel(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const { name, children, variables, onClose, type } = props\r\n const [modalOpen, setModalOpen] = useState(false)\r\n const [groups, setGroups] = useState([])\r\n const value = core.dictionary.getLabel(name)\r\n\r\n function handleSetModalOpen(type) {\r\n core.dataStore.getLabelGroups().then((response) => {\r\n setGroups(response.data)\r\n setModalOpen(type)\r\n })\r\n }\r\n\r\n function closeModal() {\r\n setModalOpen(false)\r\n onClose && onClose()\r\n }\r\n\r\n function createOutputString(value, variables) {\r\n const variablesOrEmptyArray = variables || []\r\n let output = value\r\n while (output.match(/{}/)) {\r\n output = output.replace(/{}/, variablesOrEmptyArray.shift())\r\n }\r\n return output\r\n }\r\n\r\n return (\r\n <>\r\n {core.dictionary.isEditMode ? (\r\n <>\r\n {createOutputString(value, variables)}\r\n {children}\r\n {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n handleSetModalOpen('label')\r\n }}\r\n open={modalOpen === 'label'}\r\n selected={name}\r\n core={core}\r\n classes={classes}\r\n onClose={closeModal}\r\n groups={groups}\r\n name={name}\r\n showLabelNames={core.showLabelNames}\r\n type='label'\r\n />\r\n {type === 'link' && (\r\n {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n handleSetModalOpen('link')\r\n }}\r\n open={modalOpen === 'link'}\r\n selected={name + '-link'}\r\n core={core}\r\n classes={classes}\r\n onClose={closeModal}\r\n groups={groups}\r\n name={name + '-link'}\r\n showLabelNames={core.showLabelNames}\r\n type='link'\r\n />\r\n )}\r\n \r\n ) : (\r\n \r\n {children}\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nfunction EditLabel(props) {\r\n const {\r\n selected,\r\n open,\r\n setModalOpen,\r\n onClose,\r\n core,\r\n classes,\r\n groups,\r\n name,\r\n showLabelNames,\r\n type,\r\n } = props\r\n const [translations, setTranslations] = useState([])\r\n const [id, setId] = useState(undefined)\r\n const [selectedGroup, setSelectedGroup] = useState('')\r\n const [defaultValue, setDefaultValue] = useState('')\r\n const [languages, setLanguages] = useState([])\r\n\r\n function handleOnClose() {\r\n onClose()\r\n core.dictionary.load()\r\n }\r\n\r\n function load() {\r\n core.dataStore\r\n .getLabelByKey(selected)\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setId(x.data)\r\n if (open) {\r\n core.dataStore.getLabels().then((res) => {\r\n const label = res.data.find((el) => el.label.id === x.data)\r\n setTranslations(label.translations)\r\n setDefaultValue(label?.label?.defaultValue)\r\n setSelectedGroup(label?.label?.labelGroup)\r\n })\r\n }\r\n }\r\n })\r\n .catch((e) => {})\r\n core.dataStore\r\n .getLanguages()\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setLanguages(res.data)\r\n }\r\n })\r\n .catch(() => {})\r\n }\r\n\r\n const translationValueChange = (value, languageId) => {\r\n const index = translations.findIndex((el) => el.languageId == languageId)\r\n const newTranslations = [...translations]\r\n if (index > -1) {\r\n newTranslations[index].value = value\r\n } else {\r\n newTranslations.push({ languageId, value })\r\n }\r\n setTranslations(newTranslations)\r\n }\r\n\r\n useEffect(() => {\r\n load()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [open])\r\n\r\n function addLabel() {\r\n core.dataStore\r\n .createLabel({\r\n key: selected,\r\n labelGroup: selectedGroup,\r\n defaultValue: defaultValue,\r\n })\r\n .then((response) => {\r\n core.snackbar('succes', 'Label was created')\r\n handleOnClose()\r\n })\r\n .catch((e) => {\r\n core.snackbar('Error', 'Label was not created')\r\n })\r\n }\r\n\r\n function updateLabel() {\r\n core.dataStore\r\n .updateLabel({\r\n id,\r\n defaultValue,\r\n key: selected,\r\n LabelGroup: selectedGroup,\r\n Translations: translations,\r\n })\r\n .then((res) => {\r\n handleOnClose()\r\n })\r\n }\r\n\r\n return id === undefined ? (\r\n <>\r\n \r\n \r\n {type === 'link' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n

{`Add Label for key \"${selected}\"`}

\r\n
\r\n setDefaultValue(e.target.value)}\r\n />\r\n
\r\n \r\n Group\r\n {\r\n setSelectedGroup(e.target.value)\r\n }}\r\n label='Group'>\r\n \r\n None\r\n \r\n {groups.length > 0 &&\r\n groups.map((group) => (\r\n {group}\r\n ))}\r\n \r\n \r\n
\r\n \r\n Add Label\r\n \r\n
\r\n
\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n {type === 'link' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n

{`Changle label for key \"${selected}\"`}

\r\n
\r\n setDefaultValue(e.target.value)}\r\n />\r\n
\r\n \r\n Group\r\n {\r\n setSelectedGroup(e.target.value)\r\n }}\r\n label='Group'>\r\n \r\n None\r\n \r\n {groups.length > 0 &&\r\n groups.map((group) => (\r\n {group}\r\n ))}\r\n \r\n \r\n {languages.length &&\r\n languages.map((lang) => {\r\n return (\r\n <>\r\n \r\n translationValueChange(e.target.value, lang.id)\r\n }\r\n value={\r\n translations?.find((el) => el.languageId == lang.id)\r\n ?.value || ''\r\n }\r\n variant='outlined'\r\n fullWidth\r\n style={{ marginTop: 10 }}\r\n multiline\r\n />\r\n \r\n )\r\n })}\r\n
\r\n \r\n Update Label\r\n \r\n \r\n Close\r\n \r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nexport function translationLink(dictionary, name) {\r\n const value = dictionary.getLabel(name + '-link')\r\n return value\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableRow,\r\n TableHead,\r\n TableCell,\r\n makeStyles,\r\n Checkbox,\r\n TablePagination,\r\n TextField,\r\n Select,\r\n MenuItem,\r\n FormControl,\r\n InputLabel,\r\n} from '@material-ui/core'\r\nimport Grid from '@material-ui/core/Grid/Grid'\r\nimport { FloatingActionButton } from '../FloatingActionButton'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport FormSection from '../../../components/forms/FormSection'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport { useDebounce } from 'use-lodash-debounce'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nconst useStyles = makeStyles((theme) => {})\r\n\r\nconst apps = ['app2', 'app6', 'app7', 'app9', 'app12']\r\nconst appNumbers = [2, 6, 7, 9, 12]\r\nconst administration = [\r\n 'allUserManagement',\r\n 'languageManagement',\r\n 'settingsAdministration'\r\n]\r\nconst editableAdministration = ['showBackordersOnProduct']\r\nconst editableAdministrationLabels = ['showBackOrdersOnProduct'] // seperate one for labels because of a bug with TranslationLabels casing\r\n\r\nconst headers = [\r\n 'ID',\r\n 'User Name',\r\n 'Selected Customer',\r\n 'Selected Customer Name',\r\n ...apps,\r\n ...administration,\r\n ...editableAdministrationLabels,\r\n 'Archive',\r\n 'Activated',\r\n 'newsLetter',\r\n]\r\nconst dataKeys = [\r\n { value: 'userId', type: 'string' },\r\n { value: 'userName', type: 'string' },\r\n { value: 'selectedCustomerAccount', type: 'string' },\r\n { value: 'selectedCustomerName', type: 'string' },\r\n //apps are unlike the rest of the values, since they are numbers in an array\r\n ...appNumbers.map((el) => ({\r\n value: el,\r\n type: 'appcheckbox',\r\n editable: true,\r\n })),\r\n ...administration.map((el) => ({\r\n value: el,\r\n type: 'checkbox',\r\n editable: false,\r\n })),\r\n ...editableAdministration.map((el) => ({\r\n value: el,\r\n type: 'checkbox',\r\n editable: true,\r\n })),\r\n { value: 'showArchiveCheckbox', type: 'checkbox', editable: true},\r\n { value: 'isEnabled', type: 'checkbox', editable: true },\r\n { value: 'newsLetter', type: 'checkbox', editable: true },\r\n]\r\n\r\nexport default function OverviewTab(props) {\r\n const [loading, setLoading] = useState(false)\r\n const [rows, setRows] = useState([])\r\n const classes = useStyles()\r\n const [page, setPage] = useState(0)\r\n const [rowsPerPage, setRowsPerPage] = useState(10)\r\n const [showActivated, setShowActivated] = useState(1) //whether to search in activated users, 0 = all, 1 = activated = not activated\r\n const [userType, setUserType] = useState(0)\r\n const [input, setInput] = useState('')\r\n const [totalUsers, setTotalUsers] = useState(100)\r\n const [userTypes, setUserTypes] = useState([])\r\n const activatedEnum = [\r\n { value: 0, label: 'All' },\r\n { value: 1, label: 'Activated' },\r\n { value: 2, label: 'Inactive' },\r\n ]\r\n const debouncedInput = useDebounce(input, 300)\r\n const [firstRender, setFirstRender] = useState(true)\r\n\r\n const { core, select } = props\r\n const createPath = '/hub/admin/users/create'\r\n const editPath = '/hub/admin/users/edit'\r\n const location = useLocation()\r\n\r\n function create() {\r\n core.history.push(createPath)\r\n }\r\n\r\n function edit(id) {\r\n select(id)\r\n\r\n var urlParams = new URLSearchParams(location.search)\r\n urlParams.append('pageNumber', page + 1)\r\n urlParams.append('scrollTo', parseInt(window.scrollY))\r\n\r\n core.history.replace({\r\n pathname: location.pathname,\r\n search: '?' + urlParams.toString(),\r\n state: { isActive: true },\r\n })\r\n\r\n core.history.push(editPath)\r\n }\r\n\r\n useEffect(() => {\r\n core.dataStore.getUserTypes().then((res) => {\r\n setUserTypes([{ userTypeId: 0, type: 'All' }, ...res.data])\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n let searchParams = new URLSearchParams(window.location.search)\r\n if (firstRender) {\r\n setFirstRender(false)\r\n if (searchParams.has('input')) {\r\n setInput(searchParams.get('input'))\r\n }\r\n\r\n if (searchParams.has('userType')) {\r\n setUserType(parseInt(searchParams.get('userType')))\r\n }\r\n\r\n if (searchParams.has('showActivated')) {\r\n setShowActivated(parseInt(searchParams.get('showActivated')))\r\n }\r\n\r\n if (searchParams.has('rowsPerPage')) {\r\n setRowsPerPage(parseInt(searchParams.get('rowsPerPage')))\r\n }\r\n\r\n if (searchParams.has('pageNumber')) {\r\n setPage(parseInt(searchParams.get('pageNumber')) - 1)\r\n }\r\n }\r\n\r\n search(false, searchParams.has('scrollTo') ? parseInt(searchParams.get('scrollTo')) : 1)\r\n }, [debouncedInput, userType, showActivated, rowsPerPage, page])\r\n\r\n const toggleCheckBox = (user, setting) => {\r\n setLoading(true)\r\n if (typeof setting == 'string') {\r\n const updatedUserObject = { ...user, [setting]: !user[setting] }\r\n core.hubStore.updateUser(updatedUserObject).then((res) => {\r\n setRows(\r\n rows.map((el) =>\r\n el.userId === user.userId ? updatedUserObject : el,\r\n ),\r\n )\r\n setLoading(false)\r\n })\r\n } else {\r\n //if setting is a number it is the number of an app, so remove if already in apps array, and add if it isn't\r\n\r\n const newApps = user.apps.find((el) => el == setting)\r\n ? user.apps.filter((el) => el != setting)\r\n : user.apps.concat(setting)\r\n core.hubStore.updateUser({ ...user, apps: newApps }).then((res) => {\r\n setRows(\r\n rows.map((el) =>\r\n el.userId === user.userId ? { ...user, apps: newApps } : el,\r\n ),\r\n )\r\n setLoading(false)\r\n })\r\n }\r\n }\r\n\r\n const search = (firstPage = false, scrollTo = 0) => {\r\n setLoading(true)\r\n core.hubStore\r\n .searchUsers({\r\n text: input,\r\n userType,\r\n showActivated,\r\n pageSize: rowsPerPage,\r\n pageNumber: firstPage ? 1 : page + 1,\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setLoading(false)\r\n setRows(res.data.users)\r\n setTotalUsers(res.data.totalUsers)\r\n var urlParams = new URLSearchParams()\r\n\r\n if (input !== '') {\r\n urlParams.append('input', input)\r\n }\r\n\r\n if (userType !== 0) {\r\n urlParams.append('userType', userType)\r\n }\r\n\r\n if (showActivated !== 1) {\r\n urlParams.append('showActivated', showActivated)\r\n }\r\n\r\n if (rowsPerPage !== 10) {\r\n urlParams.append('rowsPerPage', rowsPerPage)\r\n }\r\n\r\n if (page !== 0) {\r\n urlParams.append('pageNumber', page + 1)\r\n }\r\n\r\n var searchQuery = '?' + urlParams.toString()\r\n if (searchQuery !== '?') {\r\n core.history.replace({\r\n pathname: location.pathname,\r\n search: searchQuery,\r\n state: { isActive: true },\r\n })\r\n } else {\r\n core.history.replace({\r\n pathname: location.pathname,\r\n search: '',\r\n state: { isActive: true },\r\n })\r\n }\r\n\r\n if (scrollTo !== 0) {\r\n window.scrollTo(0, scrollTo)\r\n }\r\n }\r\n })\r\n .catch(() => {})\r\n }\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage)\r\n }\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(parseInt(event.target.value, 10))\r\n setPage(0)\r\n }\r\n\r\n const MakeRow = ({user, i}) => {\r\n const [active, setActive] = useState(false)\r\n\r\n return (\r\n <>\r\n \r\n setActive(!active)} />\r\n \r\n {dataKeys.map((key) => (\r\n <>\r\n {key.type === 'string' && (\r\n edit(user.userId)}\r\n key={key.value + i}>\r\n {user[key.value]}\r\n \r\n )}\r\n {key.type === 'checkbox' && (\r\n \r\n toggleCheckBox(user, key.value)}\r\n />\r\n \r\n )}\r\n {key.type === 'appcheckbox' && (\r\n \r\n toggleCheckBox(user, key.value)}\r\n checked={!!user.apps.find((el) => el == key.value)}\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 setInput(e.target.value)\r\n }}\r\n value={input}\r\n fullWidth\r\n label={}\r\n variant='outlined'\r\n autoComplete={'off'}\r\n style={{ margin: '10px 0px 10px 0px' }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n value={showActivated}\r\n onChange={(e) => setShowActivated(e.target.value)}\r\n variant='outlined'>\r\n {activatedEnum.map((item) => (\r\n {item.label}\r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n value={userType}\r\n onChange={(e) => setUserType(e.target.value)}\r\n variant='outlined'>\r\n {userTypes.map((item) => (\r\n {item.type}\r\n ))}\r\n \r\n \r\n \r\n \r\n\r\n {loading ? :
}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {headers.map((header, i) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n {\r\n \r\n {rows.map((row, i) => {\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","import React from 'react'\r\n\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Divider from '@material-ui/core/Divider'\r\nimport WarningIcon from '@material-ui/icons/WarningOutlined'\r\n\r\nfunction FormHeader(props) {\r\n // const classes = props;\r\n const { title, displayWarning = false } = props\r\n return (\r\n <>\r\n \r\n {title} {displayWarning ? : null}\r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default FormHeader\r\n","import React, { Component } from 'react'\r\nimport { withStyles } from '@material-ui/core'\r\n\r\nimport Paper from '@material-ui/core/Paper/Paper'\r\nimport Popper from '@material-ui/core/Popper/Popper'\r\nimport Fade from '@material-ui/core/Fade/Fade'\r\nimport ListItem from '@material-ui/core/ListItem/ListItem'\r\nimport List from '@material-ui/core/List/List'\r\nimport ListItemText from '@material-ui/core/ListItemText/ListItemText'\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n height: 250,\r\n flexGrow: 1,\r\n },\r\n container: {\r\n position: 'relative',\r\n },\r\n suggestionsContainerOpen: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n marginTop: theme.spacing(1),\r\n left: 0,\r\n right: 0,\r\n },\r\n suggestion: {\r\n display: 'block',\r\n },\r\n suggestionsList: {\r\n margin: 0,\r\n padding: 0,\r\n listStyleType: 'none',\r\n },\r\n divider: {\r\n height: theme.spacing(3),\r\n },\r\n})\r\n\r\nclass AutoSuggest extends Component {\r\n handleSelect = (e, r) => {\r\n e.preventDefault()\r\n this.props.onSelect(r)\r\n }\r\n\r\n render() {\r\n const { anchorEl, open } = this.props\r\n const id = open ? 'simple-popper' : null\r\n\r\n return (\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n {this.props.items.map((r) => (\r\n this.handleSelect(e, r)}\r\n key={r.id}>\r\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 default withStyles(styles)(AutoSuggest)\r\n","import React, { Component } from 'react'\r\nimport { withStyles } from '@material-ui/core'\r\n\r\nimport Clear from '@material-ui/icons/Clear'\r\nimport OutlinedInputField from '../../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport AutoSuggest from './AutoSuggest'\r\n\r\nconst styles = () => ({\r\n loader: {\r\n borderRadius: '10px 10px 0 0',\r\n },\r\n})\r\n\r\nlet timeOut\r\n\r\nclass SearchForm extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.state = {\r\n searchInput: props.initialValue || '',\r\n results: [],\r\n currentResults: 0,\r\n displayResults: false,\r\n anchorParentEl: null,\r\n anchorEl: null,\r\n open: false,\r\n isLoading: false,\r\n delay: true,\r\n }\r\n }\r\n\r\n handleResult = (rs, val) => {\r\n const { handleResult, displayResults } = this.props\r\n if (!displayResults) handleResult(rs, val)\r\n this.setState({\r\n isLoading: false,\r\n displayResults: displayResults && rs.length > 0,\r\n results: rs,\r\n })\r\n }\r\n\r\n handle = (e) => {\r\n window.clearTimeout(timeOut)\r\n const { currentTarget } = e\r\n const { onEmptyTerm, items, onSearch, async } = this.props\r\n const val = e.target.value\r\n const returnResult = (rs) => this.handleResult(rs, val)\r\n\r\n this.setState(\r\n {\r\n isLoading: val.length > 1 || val.length === 0,\r\n searchInput: val,\r\n displayResults: false,\r\n delay: true,\r\n anchorEl: currentTarget,\r\n },\r\n () => {\r\n if (items) {\r\n if (val.length > 0) {\r\n timeOut = window.setTimeout(() => {\r\n onSearch(val).then((rs) => returnResult(rs.data))\r\n }, 300)\r\n } else if (val.length === 0) {\r\n if (onEmptyTerm) {\r\n timeOut = window.setTimeout(() => {\r\n onEmptyTerm().then((rs) => returnResult(rs.data))\r\n }, 300)\r\n } else returnResult([])\r\n }\r\n } else {\r\n if (val.length > 0) {\r\n timeOut = window.setTimeout(() => {\r\n if (async) {\r\n onSearch(val).then((rs) => returnResult(rs.data))\r\n } else {\r\n returnResult(onSearch(val))\r\n }\r\n this.setState({\r\n isLoading: false,\r\n })\r\n }, 150)\r\n } else returnResult([])\r\n }\r\n },\r\n )\r\n }\r\n\r\n handleSelect = (obj) => {\r\n this.props.onSelect(obj)\r\n this.setState({\r\n displayResults: false,\r\n searchInput: this.props.primary(obj),\r\n })\r\n }\r\n handleClear = () => {\r\n this.props.onSelect({})\r\n this.setState({ displayResults: false, searchInput: '' })\r\n }\r\n\r\n render() {\r\n const { displayResults } = this.props\r\n const { isLoading } = this.state\r\n\r\n return (\r\n
\r\n \r\n }\r\n isLoading={isLoading}\r\n htmlFor={this.props.htmlFor}\r\n label={this.props.label}\r\n fullWidth={this.props.fullWidth}\r\n required={this.props.required}\r\n error={this.props.error}\r\n />\r\n\r\n {displayResults ? (\r\n \r\n ) : null}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(SearchForm)\r\n","import React from 'react'\r\n\r\nexport default function () {\r\n return
\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport { Switch, Grid, FormControlLabel, Button } from '@material-ui/core'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport FormSection from '../../../components/forms/FormSection'\r\nimport FormHeader from '../../../components/forms/FormHeader'\r\n\r\nexport default function MasterDataTab(props) {\r\n const { isEditMode, setUserForm, core, userForm, updateUser } = props\r\n const [facets, setFacets] = useState([])\r\n\r\n useEffect(() => {\r\n core.dataStore.getMasterDataFacets().then((res) => {\r\n setFacets(res.data)\r\n })\r\n }, [])\r\n\r\n const handleToggleFacet = (facetId) => {\r\n if (isEditMode) {\r\n if (userForm.masterDataFacets.includes(facetId)) {\r\n core.dataStore\r\n .removeFacetFromUser(userForm.userId, facetId)\r\n .then((res) => {\r\n setUserForm({\r\n ...userForm,\r\n masterDataFacets: userForm.masterDataFacets.filter(\r\n (el) => el !== facetId,\r\n ),\r\n })\r\n })\r\n } else {\r\n core.dataStore.addFacetToUser(userForm.userId, facetId).then((res) => {\r\n setUserForm({\r\n ...userForm,\r\n masterDataFacets: [...userForm.masterDataFacets, facetId],\r\n })\r\n })\r\n }\r\n } else {\r\n if (userForm.masterDataFacets.includes(facetId)) {\r\n setUserForm({\r\n ...userForm,\r\n masterDataFacets: userForm.masterDataFacets.filter(\r\n (el) => el !== facetId,\r\n ),\r\n })\r\n } else {\r\n setUserForm({\r\n ...userForm,\r\n masterDataFacets: [...userForm.masterDataFacets, facetId],\r\n })\r\n }\r\n }\r\n }\r\n\r\n const handleToggleTemplateManagement = () => {\r\n updateUser({\r\n ...userForm,\r\n templateManagement: !userForm.templateManagement,\r\n })\r\n }\r\n\r\n const selectAllFacets = () => {\r\n if (isEditMode) {\r\n //add a facet to user for each facet missing\r\n const disabledFacets = facets\r\n .map((el) => el.id)\r\n .filter((el) => !userForm.masterDataFacets.includes(el))\r\n disabledFacets.forEach((el) => {\r\n core.dataStore.addFacetToUser(userForm.userId, el).catch(() => {\r\n core.setModal({\r\n headline: 'Something went wrong',\r\n message: `Couldn't add facet with id ${el}`,\r\n })\r\n })\r\n })\r\n }\r\n setUserForm({ ...userForm, masterDataFacets: facets.map((el) => el.id) })\r\n }\r\n\r\n const deselectAllFacets = () => {\r\n if (isEditMode) {\r\n //remove a facet on user for every facet enabled\r\n const enabledFacets = userForm.masterDataFacets\r\n enabledFacets.forEach((el) => {\r\n core.dataStore.removeFacetFromUser(userForm.userId, el).catch(() => {\r\n core.setModal({\r\n headline: 'Something went wrong',\r\n message: `Couldn't remove facet with id ${el}`,\r\n })\r\n })\r\n })\r\n }\r\n setUserForm({ ...userForm, masterDataFacets: [] })\r\n }\r\n\r\n return (\r\n \r\n \r\n } />\r\n \r\n \r\n
\r\n {facets.map((facet) => (\r\n handleToggleFacet(facet.id)}\r\n inputProps={{\r\n 'aria-label': 'secondary checkbox',\r\n }}\r\n />\r\n }\r\n label={}\r\n />\r\n ))}\r\n
\r\n \r\n }\r\n />\r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n )\r\n}\r\n","export default function ValidateEmail(email) {\r\n const elm = document.createElement('input')\r\n elm.value = email\r\n elm.required = true\r\n elm.type = 'email'\r\n\r\n return elm.checkValidity()\r\n}\r\n","const admin = {\r\n allUserManagement: true,\r\n languageManagement: true,\r\n helpLinkManagement: false,\r\n settingsAdministration: true,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 7, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: false,\r\n showInventory: true,\r\n showArchiveCheckbox: true,\r\n downloadExcelOfItems: true,\r\n masterDataFacets: [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17],\r\n templateManagement: true,\r\n videoManagement: true,\r\n}\r\n\r\nconst internal = {\r\n allUserManagement: false,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: false,\r\n showInventory: true,\r\n showArchiveCheckbox: false,\r\n downloadExcelOfItems: true,\r\n masterDataFacets: [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\nconst customer = {\r\n allUserManagement: false,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: true,\r\n showInventory: false,\r\n showArchiveCheckbox: false,\r\n masterDataFacets: [1, 2, 6, 8, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\nconst salesAgent = {\r\n allUserManagement: false,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: true,\r\n showInventory: true,\r\n showArchiveCheckbox: false,\r\n masterDataFacets: [1, 2, 6, 8, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\nconst salesPerson = {\r\n allUserManagement: true,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 7, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: true,\r\n showInventory: true,\r\n showArchiveCheckbox: true,\r\n masterDataFacets: [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\nconst distributor = {\r\n allUserManagement: false,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: false,\r\n showInventory: false,\r\n showArchiveCheckbox: false,\r\n masterDataFacets: [1, 2, 6, 8, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\nconst merchandiser = {\r\n allUserManagement: false,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: true,\r\n apps: [1, 2, 6, 7, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: true,\r\n showInventory: true,\r\n showArchiveCheckbox: true,\r\n masterDataFacets: [1, 2, 5, 6, 7, 8, 9, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\nconst marketing = {\r\n allUserManagement: false,\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n settingsAdministration: false,\r\n canCreateNewsLetterUser: true,\r\n showBackordersOnProduct: false,\r\n apps: [1, 12],\r\n primaryAppId: 1,\r\n isEnabled: true,\r\n newsLetter: true,\r\n showInventory: false,\r\n showArchiveCheckbox: false,\r\n masterDataFacets: [1, 2, 6, 8, 10, 13, 14, 15, 16, 17],\r\n templateManagement: false,\r\n videoManagement: false,\r\n}\r\n\r\n//note: the userTypeId's go from 1 (admin) to 8. They will be indexed by their id, so the order in this array is crucial\r\nexport default function getDefaultUserSettings() {\r\n return [\r\n admin,\r\n internal,\r\n customer,\r\n salesAgent,\r\n salesPerson,\r\n distributor,\r\n merchandiser,\r\n marketing,\r\n ]\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\n\r\n//Core lib\r\nimport FormSection from '../../../components/forms/FormSection'\r\nimport FormHeader from '../../../components/forms/FormHeader'\r\n\r\n//Theme\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\n//Components\r\nimport OutlinedInputField from '../../../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport Grid from '@material-ui/core/Grid/Grid'\r\nimport SearchForm from '../SearchForm'\r\nimport OutlinedInput from '@material-ui/core/OutlinedInput'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport Select from '@material-ui/core/Select'\r\nimport Switch from '@material-ui/core/Switch'\r\nimport FormGroup from '@material-ui/core/FormGroup/FormGroup'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel'\r\nimport Checkbox from '@material-ui/core/Checkbox/Checkbox'\r\nimport FormControl from '@material-ui/core/FormControl/FormControl'\r\nimport FormDivider from '../../../components/forms/FormDivider'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport InputLabel from '@material-ui/core/InputLabel'\r\nimport MasterDataTab from './MasterDataTab'\r\nimport { FloatingActionButton } from '../FloatingActionButton'\r\nimport Divider from '@material-ui/core/Divider/Divider'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport ValidateEmail from '../../../../shared/EmailValidation'\r\n\r\nimport Tabs from '@material-ui/core/Tabs'\r\nimport Tab from '@material-ui/core/Tab'\r\nimport getDefaultUserSettings from './DefaultUserConfigurations'\r\n\r\n//Components\r\nconst styles = (theme) => ({\r\n root: {\r\n backgroundColor: 'red',\r\n },\r\n formPaper: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(1),\r\n borderRadius: 0,\r\n },\r\n chipBox: {\r\n marginTop: theme.spacing(1),\r\n },\r\n selectedTab: {\r\n color: 'blue',\r\n },\r\n userTypeSelect: {\r\n marginTop: 10,\r\n },\r\n})\r\n\r\nfunction UserFormView(props) {\r\n const { core, mode, selected } = props\r\n const [userForm, setUserForm] = useState({\r\n userName: '',\r\n displayName: '',\r\n languageId: 1,\r\n apps: [1, 2, 9, 12], //include the most used by default\r\n masterDataFacets: [],\r\n email: '',\r\n isEnabled: true,\r\n primaryAppId: 1,\r\n selectedCustomerAccount: '',\r\n salesPersonAgentInitials: '',\r\n employeePurchaseAccount: '',\r\n samplesPurchaseAccount: '',\r\n languageManagement: false,\r\n helpLinkManagement: false,\r\n customerUserManagement: false,\r\n settingsAdministration: false,\r\n showInventory: false,\r\n showArchiveCheckbox: false,\r\n allUserManagement: false,\r\n userTypeId: 3,\r\n showBackordersOnProduct: true,\r\n canCreateNewsLetterUser: true,\r\n newsLetter: false,\r\n videoManagement: false,\r\n })\r\n\r\n const [error, setError] = useState() //name of first field with an error, or undefined for no errors\r\n const [selectedCustomer, setSelectedCustomer] = useState(undefined)\r\n const [samplesPurchase, setSamplesPurchase] = useState(undefined)\r\n const [employeePurchase, setEmployeePurchase] = useState(undefined)\r\n const [agentInitials, setAgentInitials] = useState(undefined)\r\n const [allApps, setAllApps] = useState([])\r\n const [selectedTab, setSelectedTab] = useState(1)\r\n const [loading, setLoading] = useState(false)\r\n const [userLoaded, setUserLoaded] = useState(false)\r\n const [userTypes, setUserTypes] = useState([])\r\n const [showEmployeePurchaseAccount, setShowEmployeePurchaseAccount] = useState(false)\r\n const [showSalesPersonAgentInitials, setShowSalesPersonAgentInitials] = useState(false)\r\n const [showSamplesPurchaseAccount, setShowSamplesPurchaseAccount] = useState(false)\r\n const isEditMode = mode === 'edit'\r\n const isCreateMode = mode === 'create'\r\n const appsEnum = {\r\n GENERAL: 1,\r\n SALES: 2,\r\n MASTERDATA: 6,\r\n TRADEFAIR: 7,\r\n VIDEO: 9,\r\n }\r\n const { GENERAL, SALES, VIDEO, MASTERDATA } = appsEnum\r\n\r\n useEffect(() => {\r\n if (!isEditMode) {\r\n setUserForm({\r\n ...userForm,\r\n ...getDefaultUserSettings()[userForm.userTypeId - 1],\r\n })\r\n }\r\n\r\n if (userTypes) {\r\n const relevantUserType = userTypes.find((el) => el.userTypeId === userForm.userTypeId)\r\n\r\n if (relevantUserType) {\r\n setShowEmployeePurchaseAccount(\r\n (employeePurchase !== undefined || !isEditMode) &&\r\n relevantUserType.showEmployeePurchaseAccount,\r\n )\r\n setShowSalesPersonAgentInitials(\r\n (agentInitials !== undefined || !isEditMode) &&\r\n relevantUserType.showSalesPersonAgentInitials,\r\n )\r\n setShowSamplesPurchaseAccount(\r\n (samplesPurchase !== undefined || !isEditMode) &&\r\n relevantUserType.showSamplesPurchaseAccount,\r\n )\r\n }\r\n }\r\n }, [\r\n userTypes,\r\n userForm.userTypeId,\r\n agentInitials,\r\n samplesPurchase,\r\n employeePurchase,\r\n isEditMode,\r\n ])\r\n\r\n function getCustomerLabel(accountNo, setStateFunction) {\r\n if (!accountNo) {\r\n return setStateFunction('')\r\n }\r\n\r\n core.dataStore\r\n .getCustomerByAccountNo(accountNo)\r\n .then((res) => {\r\n setStateFunction(`${res.data.accountNo} - ${res.data.accountName}`)\r\n })\r\n .catch(() => {\r\n setStateFunction('')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (!userForm.userName) {\r\n return // wait for userForm to be loaded\r\n }\r\n\r\n getCustomerLabel(userForm.selectedCustomerAccount, setSelectedCustomer)\r\n getCustomerLabel(userForm.samplesPurchaseAccount, setSamplesPurchase)\r\n getCustomerLabel(userForm.employeePurchaseAccount, setEmployeePurchase)\r\n setAgentInitials(userForm.salesPersonAgentInitials)\r\n }, [userForm])\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getApps()\r\n .then((rs) => setAllApps(rs.data))\r\n .catch(console.log)\r\n }, [setAllApps]);\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getUserTypes()\r\n .then((res) => setUserTypes(res.data))\r\n .catch(console.log)\r\n }, [setUserTypes])\r\n\r\n useEffect(() => load(), [core.dataStore])\r\n\r\n function load() {\r\n if (isEditMode && selected && selected !== -1) {\r\n core.hubStore\r\n .getUser(selected)\r\n .then((x) => {\r\n if (x.status === 200) {\r\n let rs = x.data\r\n if (rs) {\r\n setUserForm(rs)\r\n setUserLoaded(true)\r\n }\r\n } else alert(x.statusMessage)\r\n })\r\n .catch(console.log)\r\n } else if (selected === -1) core.history.push('/hub/admin/users')\r\n }\r\n\r\n function submitEdits(userForm) {\r\n //in userform the backend expects null, not empty strings!\r\n if (!isEditMode) {\r\n return\r\n }\r\n setLoading(true)\r\n\r\n if (validate(userForm)) {\r\n core.hubStore\r\n .updateUser({\r\n ...userForm,\r\n selectedCustomerAccount: userForm.selectedCustomerAccount || null,\r\n salesPersonAgentInitials: userForm.salesPersonAgentInitials || null,\r\n employeePurchaseAccount: userForm.employeePurchaseAccount || null,\r\n samplesPurchaseAccount: userForm.samplesPurchaseAccount || null,\r\n })\r\n .catch(() => core.snackbar('warning', 'Internal server error when saving user data, try again or contact developer'))\r\n .finally(() => setLoading(false));\r\n } else {\r\n setLoading(false)\r\n }\r\n }\r\n\r\n function createUser() {\r\n //in userform the backend expects null, not empty strings!\r\n setLoading(true)\r\n if (validate(userForm)) {\r\n core.hubStore\r\n .createUser({\r\n ...userForm,\r\n selectedCustomerAccount: userForm.selectedCustomerAccount || null,\r\n salesPersonAgentInitials: userForm.salesPersonAgentInitials || null,\r\n employeePurchaseAccount: userForm.employeePurchaseAccount || null,\r\n samplesPurchaseAccount: userForm.samplesPurchaseAccount || null,\r\n })\r\n .then(() => core.history.push('/hub/admin/users'))\r\n .catch(() => core.snackbar('warning', \"Internal server error when saving user data, try again or contact developer\"))\r\n .finally(() => setLoading(false))\r\n }\r\n\r\n setLoading(false)\r\n }\r\n\r\n function goToFrontPage() {\r\n core.history.push('/hub/admin/users')\r\n }\r\n\r\n let needsCustomerSet = isCreateMode && [1, 2, 3, 4, 5, 6, 7, 8].includes(userForm.userTypeId)\r\n let needsEmployeeAccountSet = [1, 2, 4, 5, 7].includes(userForm.userTypeId)\r\n function validate(userForm) {\r\n\r\n if (!userForm.userName) {\r\n setError('userName')\r\n core.snackbar(\"warning\", \"Username is mandatory!\")\r\n } else if (!userForm.displayName) {\r\n setError('displayName')\r\n core.snackbar(\"warning\", \"Display name is mandatory!\")\r\n } else if (!ValidateEmail(userForm.email)) {\r\n setError('email')\r\n core.snackbar('warning', 'Email is mandatory or is invalid')\r\n } else if (needsCustomerSet && !userForm.selectedCustomerAccount) {\r\n setError('selectedCustomerAccount')\r\n core.snackbar('warning', 'Selecte customer account is mandatory')\r\n } else if (needsEmployeeAccountSet && !userForm.employeePurchaseAccount) {\r\n setError('employeePurchaseAccount')\r\n core.snackbar('warning', 'Employee purchase account is mandatory')\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n function updateUser(userForm) {\r\n setUserForm(userForm)\r\n submitEdits(userForm)\r\n }\r\n\r\n function handleChangeUserName(e) {\r\n e.preventDefault()\r\n if (error === 'userName') {\r\n setError(undefined)\r\n }\r\n updateUser({ ...userForm, userName: e.target.value })\r\n }\r\n\r\n function handleChangeEmail(e) {\r\n e.preventDefault()\r\n if (error === 'email') {\r\n setError(undefined)\r\n }\r\n updateUser({ ...userForm, email: e.target.value })\r\n }\r\n\r\n function handleUserTypeChange(e) {\r\n const userTypeId = e.target.value\r\n\r\n const userFormTemp = {\r\n ...userForm,\r\n ...getDefaultUserSettings()[userTypeId -1],\r\n userTypeId\r\n }\r\n\r\n needsCustomerSet = isCreateMode && [1, 2, 3, 4, 5, 6, 7, 8].includes(userFormTemp.userTypeId)\r\n needsEmployeeAccountSet = [1, 2, 4, 5, 7].includes(userFormTemp.userTypeId)\r\n\r\n setUserForm(userFormTemp)\r\n if (validate(userFormTemp)) {\r\n\r\n submitEdits({\r\n ...userForm,\r\n ...getDefaultUserSettings()[userTypeId - 1],\r\n userTypeId\r\n })\r\n }\r\n }\r\n\r\n function handleChangeDisplayName(e) {\r\n e.preventDefault()\r\n if (error === 'displayName') {\r\n setError(undefined)\r\n }\r\n updateUser({ ...userForm, displayName: e.target.value })\r\n }\r\n\r\n function handleChangeIsEnabled(e) {\r\n e.preventDefault()\r\n updateUser({ ...userForm, isEnabled: e.target.checked })\r\n }\r\n\r\n function handleChangeAllUsermanagement(e) {\r\n updateUser({ ...userForm, allUserManagement: e.target.checked })\r\n }\r\n\r\n function handleChangeLanguagemanagement(e) {\r\n updateUser({ ...userForm, languageManagement: e.target.checked })\r\n }\r\n\r\n function handleChangeHelpLinkManagement(e) {\r\n updateUser({ ...userForm, helpLinkManagement: e.target.checked })\r\n }\r\n\r\n function handleChangeShowInventory(e) {\r\n updateUser({ ...userForm, showInventory: e.target.checked })\r\n }\r\n\r\n function handleChangeShowArchiveCheckbox(e) {\r\n updateUser({ ...userForm, showArchiveCheckbox: e.target.checked })\r\n }\r\n\r\n function handleChangeDownloadExcelOfItems(e) {\r\n updateUser({ ...userForm, downloadExcelOfItems: e.target.checked})\r\n }\r\n\r\n function handleChangeSettingsAdministration(e) {\r\n updateUser({ ...userForm, settingsAdministration: e.target.checked })\r\n }\r\n\r\n function handleChangeShowBackordersOnProduct(e) {\r\n updateUser({ ...userForm, showBackordersOnProduct: e.target.checked })\r\n }\r\n\r\n function handleChangeVideoManagement(e) {\r\n updateUser({ ...userForm, videoManagement: e.target.checked })\r\n }\r\n\r\n function handleChangeCanChangeSortOrder(e) {\r\n updateUser({ ...userForm, canChangeSortOrder: e.target.checked })\r\n }\r\n\r\n function handleChangeCreateNewsLetterAccounts(e) {\r\n updateUser({ ...userForm, canCreateNewsLetterUser: e.target.checked })\r\n }\r\n\r\n function handleNewsLetterChange(e) {\r\n updateUser({ ...userForm, newsLetter: e.target.checked })\r\n }\r\n\r\n function selectSelectedCustomerAccount(s) {\r\n if (error === 'selectedCustomerAccount') {\r\n setError(undefined)\r\n }\r\n updateUser({\r\n ...userForm,\r\n selectedCustomerAccount: s.accountNo,\r\n selectedCustomerName: s.accountName,\r\n })\r\n }\r\n\r\n function selectSalesAgentInitials(initials) {\r\n //the form calls this handler with {} on clear\r\n if (JSON.stringify({}) === JSON.stringify(initials)) {\r\n initials = null\r\n }\r\n updateUser({ ...userForm, salesPersonAgentInitials: initials })\r\n }\r\n\r\n function selectEmployee(s) {\r\n if (error === 'employeePurchaseAccount') {\r\n setError(undefined)\r\n }\r\n updateUser({\r\n ...userForm,\r\n employeePurchaseAccount: s.accountNo,\r\n })\r\n }\r\n\r\n function selectSamplesAccount(s) {\r\n updateUser({\r\n ...userForm,\r\n samplesPurchaseAccount: s.accountNo,\r\n })\r\n }\r\n\r\n function handleAppSelection(r) {\r\n let newSelected = userForm.apps.includes(r)\r\n ? userForm.apps.filter((c) => c !== r)\r\n : [...userForm.apps, r]\r\n\r\n updateUser({ ...userForm, apps: newSelected })\r\n }\r\n\r\n function handleSelectStartupApp(e) {\r\n updateUser({ ...userForm, primaryAppId: e.target.value })\r\n }\r\n\r\n function handleSelectLanguage(e) {\r\n updateUser({ ...userForm, languageId: e.target.value })\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {userForm.apps.map((app) => (\r\n setSelectedTab(app)}\r\n label={\r\n app === 1 ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n ))}\r\n \r\n\r\n \r\n\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n {selectedTab === GENERAL && (userLoaded || !isEditMode) && (\r\n <>\r\n \r\n \r\n } />\r\n\r\n }\r\n label={}\r\n type='text'\r\n value={userForm.userName}\r\n onChange={handleChangeUserName}\r\n error={error === 'userName'}\r\n disabled={isEditMode}\r\n fullWidth\r\n required\r\n autoComplete='false'\r\n />\r\n \r\n\r\n }\r\n label={}\r\n type='text'\r\n value={userForm.email}\r\n onChange={handleChangeEmail}\r\n error={error === 'email'}\r\n fullWidth\r\n autoComplete='false'\r\n required\r\n />\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {userTypes &&\r\n userTypes.map((type) => (\r\n \r\n {type.type}\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n \r\n\r\n {(isCreateMode || error === 'employeePurchaseAccount' || error === 'selectedCustomerAccount') && (\r\n <>\r\n {needsCustomerSet && (\r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n htmlFor={}\r\n required={false}\r\n displayResults={true}\r\n onSelect={selectSelectedCustomerAccount}\r\n onSearch={core.dataStore.getCustomersBySearch}\r\n primary={(x) => x.accountNo + ' - ' + x.accountName}\r\n fullWidth\r\n initialValue={\r\n userForm.selectedCustomerAccount &&\r\n userForm.selectedCustomerAccount +\r\n ' - ' +\r\n userForm.selectedCustomerName\r\n }\r\n error={error === 'selectedCustomerAccount'}\r\n async\r\n />\r\n \r\n \r\n \r\n }\r\n label={\r\n \r\n }\r\n />\r\n \r\n \r\n )}\r\n {needsEmployeeAccountSet && (\r\n \r\n }\r\n />\r\n }\r\n htmlFor={}\r\n required={false}\r\n displayResults={true}\r\n onSelect={selectEmployee}\r\n onSearch={core.dataStore.getEmployeesBySearch}\r\n primary={(x) => x.accountNo + ' - ' + x.accountName}\r\n fullWidth\r\n async\r\n error={error === 'employeePurchaseAccount'}\r\n initialValue={employeePurchase}\r\n />\r\n \r\n )}\r\n \r\n )}\r\n {isEditMode ? (\r\n \r\n ) : null}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n }\r\n label={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n label={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n label={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {allApps\r\n .filter((el) => el.id !== 1)\r\n .map((r, k) => (\r\n handleAppSelection(r.id)}\r\n value={r.id}\r\n />\r\n }\r\n label={}\r\n />\r\n ))}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n\r\n {PrimaryAppSelection(\r\n userForm.primaryAppId,\r\n handleSelectStartupApp,\r\n userForm.apps,\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n {\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {selectedTab === SALES && (\r\n <>\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n label={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n {(selectedCustomer !== undefined || !isEditMode) && (\r\n }\r\n htmlFor={}\r\n required={false}\r\n displayResults={true}\r\n onSelect={selectSelectedCustomerAccount}\r\n onSearch={core.dataStore.getCustomersBySearch}\r\n primary={(x) => x.accountNo + ' - ' + x.accountName}\r\n fullWidth\r\n error={error === 'selectedCustomerAccount'}\r\n initialValue={\r\n userForm.selectedCustomerAccount &&\r\n userForm.selectedCustomerAccount +\r\n ' - ' +\r\n userForm.selectedCustomerName\r\n }\r\n async\r\n />\r\n )}\r\n \r\n \r\n\r\n {showSalesPersonAgentInitials && (\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n htmlFor={\r\n \r\n }\r\n required={false}\r\n displayResults={true}\r\n onSearch={core.dataStore.getSellersBySearch}\r\n onSelect={selectSalesAgentInitials}\r\n primary={(initials) => initials}\r\n fullWidth\r\n initialValue={agentInitials}\r\n async\r\n />\r\n \r\n \r\n )}\r\n\r\n {showSamplesPurchaseAccount && (\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n }\r\n htmlFor={}\r\n required={false}\r\n displayResults={true}\r\n onSelect={selectSamplesAccount}\r\n onSearch={core.dataStore.getEmployeesBySearch}\r\n primary={(x) => x.accountNo + ' - ' + x.accountName}\r\n fullWidth\r\n initialValue={samplesPurchase}\r\n async\r\n />\r\n \r\n \r\n )}\r\n\r\n {showEmployeePurchaseAccount && (\r\n \r\n \r\n }\r\n />\r\n }\r\n htmlFor={}\r\n required={false}\r\n displayResults={true}\r\n onSelect={selectEmployee}\r\n onSearch={core.dataStore.getEmployeesBySearch}\r\n primary={(x) => x.accountNo + ' - ' + x.accountName}\r\n fullWidth\r\n async\r\n initialValue={employeePurchase}\r\n error={error === 'employeePurchaseAccount'}\r\n />\r\n \r\n \r\n )}\r\n \r\n )}\r\n {selectedTab === VIDEO && (\r\n \r\n \r\n } />\r\n \r\n \r\n \r\n }\r\n label={}\r\n />\r\n \r\n \r\n \r\n \r\n )}\r\n {selectedTab === MASTERDATA && (\r\n \r\n )}\r\n \r\n )}\r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(UserFormView)\r\n\r\nfunction UserRegistrationStatus(props) {\r\n const core = useContext(CoreContext)\r\n\r\n function handleSendPasswordRecoveryMail() {\r\n core.hubStore\r\n .requestResetPassword(props.email)\r\n .then(() =>\r\n core.snackbar(\r\n 'success',\r\n core.dictionary.getLabel('PasswordResetMailSendSucces'),\r\n ),\r\n )\r\n .catch(() =>\r\n core.snackbar(\r\n 'warning',\r\n core.dictionary.getLabel('PasswordResetMailSendFailed'),\r\n ),\r\n )\r\n }\r\n\r\n function handleSendAccountRegistrationMail() {\r\n core.hubStore\r\n .requestNewRegistrationMail(props.email)\r\n .then(() =>\r\n core.snackbar(\r\n 'success',\r\n core.dictionary.getLabel('RegistrationMailSendSucces'),\r\n ),\r\n )\r\n .catch(() =>\r\n core.snackbar(\r\n 'warning',\r\n core.dictionary.getLabel('RegistrationMailSendFailed'),\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\nfunction LanguageSelection({ selected, handleChange }) {\r\n const core = useContext(CoreContext)\r\n const [languages, setLanguages] = useState([])\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getLanguages()\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setLanguages(x.data)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n }, [core.hubStore])\r\n\r\n return (\r\n \r\n \r\n }>\r\n {languages.map((v) => (\r\n \r\n {v.title}\r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n\r\nfunction PrimaryAppSelection(selected, handleChange, apps) {\r\n return (\r\n \r\n \r\n }\r\n onChange={handleChange}\r\n displayEmpty>\r\n \r\n \r\n \r\n {apps.map((v) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n )\r\n}\r\n","import React, { useState, useContext } from 'react'\r\nimport { Route } from 'react-router-dom'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport UserSearchView from './UserSearchView'\r\nimport UserFormView from './UserFormView'\r\n\r\nexport default function UsersManager() {\r\n const core = useContext(CoreContext)\r\n const [selected, setSelected] = useState(-1)\r\n\r\n function handleSelect(r) {\r\n setSelected(r)\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","import React, { useContext, useEffect, useState } from 'react'\r\n\r\n//Core\r\nimport { CoreContext } from '../../context/CoreContext'\r\n\r\n//MUI\r\nimport Select from '@material-ui/core/Select'\r\nimport OutlinedInput from '@material-ui/core/OutlinedInput'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport FormControl from '@material-ui/core/FormControl'\r\n\r\nfunction LanguageSelection() {\r\n const core = useContext(CoreContext)\r\n const [languages, setLanguages] = useState([])\r\n\r\n function loadLanguages() {\r\n core.dataStore\r\n .getLanguages()\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setLanguages(x.data)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {})\r\n }\r\n\r\n useEffect(() => {\r\n loadLanguages()\r\n }, [])\r\n\r\n const selectLanguage = (e) => {\r\n const index = e.target.value\r\n core.user.setLanguage(languages[index].id, languages[index].code)\r\n }\r\n\r\n const selectedLanguage = languages.find(\r\n (el) => el.id === core.user.language,\r\n )?.title\r\n\r\n return selectedLanguage ? (\r\n \r\n el.id === core.user.language)}\r\n onChange={selectLanguage}\r\n input={\r\n \r\n }>\r\n {languages.map((v, i) => (\r\n \r\n {v.title}\r\n \r\n ))}\r\n \r\n \r\n ) : null\r\n}\r\n\r\nexport default LanguageSelection\r\n","import React, { useContext, useEffect, useState } from 'react'\r\n\r\n//Core\r\nimport { CoreContext } from '../../context/CoreContext'\r\n\r\n//MUI\r\nimport Select from '@material-ui/core/Select'\r\nimport OutlinedInput from '@material-ui/core/OutlinedInput'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport FormControl from '@material-ui/core/FormControl'\r\nimport TranslationLabel from '../../components/TranslationLabel'\r\n\r\nfunction PrimaryAppSelection() {\r\n const core = useContext(CoreContext)\r\n const [app, setApp] = useState(core.user.userSetting.primaryAppId)\r\n const [allApps, setAllApps] = useState([])\r\n let userApps = core.getUserApps()\r\n\r\n function handleChange(e) {\r\n setApp(e.target.value)\r\n core.user.setPrimaryApp(e.target.value)\r\n }\r\n\r\n function buildMenuItem(item) {\r\n let rs = allApps.find((x) => x.id === item)\r\n let description = ''\r\n if (rs) {\r\n description = rs.title\r\n }\r\n return (\r\n \r\n {description}\r\n \r\n )\r\n }\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getApps()\r\n .then((rs) => {\r\n setAllApps(rs.data)\r\n })\r\n .catch((e) => {\r\n console.log(e)\r\n throw e\r\n })\r\n }, [])\r\n\r\n return (\r\n
\r\n \r\n \r\n }\r\n onChange={handleChange}\r\n displayEmpty>\r\n \r\n \r\n \r\n {userApps.map((v) => buildMenuItem(v))}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PrimaryAppSelection\r\n","import React, { useContext, useState } from 'react'\r\n//theme\r\nimport { withStyles } from '@material-ui/core'\r\n\r\n//Components\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport Switch from '@material-ui/core/Switch'\r\nimport TranslationLabel from '../components/TranslationLabel'\r\nimport FormSection from '../components/forms/FormSection'\r\nimport FormHeader from '../components/forms/FormHeader'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport LanguageSelection from '../components/selections/LanguageSelection'\r\nimport PrimaryAppSelection from '../components/selections/PrimaryAppSelection'\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n ...theme.mixins.gutters(),\r\n padding: theme.spacing(2),\r\n flexGrow: 1,\r\n },\r\n})\r\n\r\nfunction UserSettingsPage() {\r\n const core = useContext(CoreContext)\r\n const [newsLetter, setNewsLetter] = useState(core.user.userSetting.newsLetter)\r\n\r\n return (\r\n <>\r\n \r\n } />\r\n \r\n {core.user.userSetting.languageManagement ? (\r\n {\r\n core.dictionary.useSetIsEditMode(!core.dictionary.isEditMode)\r\n }}\r\n />\r\n }\r\n label={}\r\n />\r\n ) : null}\r\n \r\n \r\n } />\r\n {\r\n core.hubStore\r\n .changeNewsLetter(\r\n core.user.userId,\r\n !core.user.userSetting.newsLetter,\r\n )\r\n .then(() => {\r\n setNewsLetter(!core.user.userSetting.newsLetter)\r\n })\r\n }}\r\n />\r\n \r\n\r\n \r\n } />\r\n \r\n \r\n\r\n \r\n } />\r\n {core.user.selectedCustomer.accountNo}\r\n \r\n \r\n )\r\n}\r\nexport default withStyles(styles)(UserSettingsPage)\r\n","import React, { useContext } from 'react'\r\nimport daLocale from 'date-fns/locale/da'\r\nimport enLocale from 'date-fns/locale/en-GB'\r\nimport deLocale from 'date-fns/locale/de'\r\nimport noLocale from 'date-fns/locale/nn'\r\nimport svLocale from 'date-fns/locale/sv'\r\nimport DateFnsUtils from '@date-io/date-fns'\r\nimport TranslationLabel from '../core/components/TranslationLabel'\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardDatePicker,\r\n} from '@material-ui/pickers'\r\nimport { CoreContext } from '../core/context/CoreContext'\r\n\r\nconst locales = {\r\n 'en-GB': enLocale,\r\n 'da-DK': daLocale,\r\n 'sv-SE': svLocale,\r\n 'nb-NO': noLocale,\r\n 'de-DE': deLocale,\r\n}\r\n\r\nconst DatePicker = (props) => {\r\n const core = useContext(CoreContext)\r\n const locale = locales[core.user.languageCode]\r\n locale.options.weekStartsOn = 1\r\n\r\n return (\r\n \r\n }\r\n maxDateMessage={}\r\n invalidDateMessage={}\r\n {...props}\r\n />\r\n \r\n )\r\n}\r\n\r\nexport default DatePicker\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport DatePicker from '../../../../shared/DatePicker'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport DateFnsUtils from '@date-io/date-fns'\r\nimport {\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Paper,\r\n LinearProgress,\r\n} from '@material-ui/core'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever'\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'\r\nimport FormSection from '../../../components/forms/FormSection'\r\nimport FormHeader from '../../../components/forms/FormHeader'\r\n\r\nexport default function SalesAppSettings(props) {\r\n const core = useContext(CoreContext)\r\n const [dates, setDates] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const today = getTimeMinusOffset(new Date())\r\n const [newDate, setNewDate] = useState({\r\n id: 'newDate',\r\n introductionDate: today,\r\n itemAvailableB2BShop: today,\r\n pictureAvailableB2BShop: today,\r\n newsEndDateB2BShop: today,\r\n })\r\n\r\n const reloadIntroDates = () => {\r\n setLoading(true)\r\n core.dataStore.getIntroDates().then((res) => {\r\n setDates(res.data.reverse())\r\n })\r\n setLoading(false)\r\n }\r\n\r\n useEffect(() => {\r\n reloadIntroDates()\r\n }, [])\r\n\r\n function getTimeMinusOffset(date) {\r\n return (\r\n new Date(date.getTime() - date.getTimezoneOffset() * 60000)\r\n .toJSON()\r\n .split('T')[0] + 'T00:00:00'\r\n )\r\n }\r\n\r\n const onDateChange = (date, id, dateType) => {\r\n setLoading(true)\r\n const dateString = getTimeMinusOffset(date)\r\n const dateObj = { ...dates.find((el) => el.id === id) }\r\n dateObj[dateType] = dateString\r\n core.dataStore\r\n .editIntroDates(dateObj)\r\n .then(() => {\r\n reloadIntroDates()\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n const onNewDateChange = (date, dateType) => {\r\n const dateString = getTimeMinusOffset(date)\r\n const dateObj = { ...newDate }\r\n dateObj[dateType] = dateString\r\n setNewDate(dateObj)\r\n }\r\n\r\n const deleteDates = (id) => {\r\n setLoading(true)\r\n core.dataStore.deleteIntroDates(id).then(() => {\r\n reloadIntroDates()\r\n })\r\n }\r\n\r\n const addIntroDate = () => {\r\n setLoading(true)\r\n core.dataStore\r\n .createIntroDates({ ...newDate, id: undefined })\r\n .then(() => {\r\n reloadIntroDates()\r\n setLoading(false)\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n core.setModal({\r\n headline: ,\r\n message: ,\r\n })\r\n })\r\n }\r\n\r\n const DateCell = (props) => {\r\n const { dateLine, name, isNewDate } = props\r\n return (\r\n \r\n {\r\n isNewDate\r\n ? onNewDateChange(date, name)\r\n : onDateChange(date, dateLine.id, name)\r\n }}\r\n value={dateLine[name]}\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 {loading ? :
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {dates.map((dateLine) => (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n deleteDates(dateLine.id)}\r\n />\r\n \r\n \r\n ))}\r\n {/* The row for new dates */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n addIntroDate()}\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, useContext } from 'react'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport DatePicker from '../../../../shared/DatePicker'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport DateFnsUtils from '@date-io/date-fns'\r\nimport {\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Paper,\r\n LinearProgress,\r\n Tooltip,\r\n Typography,\r\n makeStyles,\r\n} from '@material-ui/core'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever'\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n customTooltip: {\r\n fontSize: 14,\r\n },\r\n}))\r\n\r\nexport default function MasterDataDates() {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n const [userGroups, setUserGroup] = useState([])\r\n const [dates, setDates] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [init, setInit] = useState(true)\r\n\r\n const today = getTimeMinusOffset(new Date())\r\n const [newDate, setNewDate] = useState([])\r\n\r\n function getTimeMinusOffset(date) {\r\n return (\r\n new Date(date.getTime() - date.getTimezoneOffset() * 60000)\r\n .toJSON()\r\n .split('T')[0] + 'T00:00:00'\r\n )\r\n }\r\n\r\n const reloadIntroDates = () => {\r\n setLoading(true)\r\n\r\n core.dataStore.getMasterDataDates().then((res) => {\r\n setDates(res.data.reverse())\r\n })\r\n\r\n setLoading(false)\r\n }\r\n\r\n const convertToPostModel = (dates) => {\r\n const postModel = []\r\n\r\n dates.dataAvailableDate.forEach((item) => {\r\n postModel.push({\r\n priceDate: dates.introductionDate,\r\n userTypeGroupId: item.userTypeGroupId,\r\n availableDate: item.availableDate,\r\n })\r\n })\r\n\r\n return postModel\r\n }\r\n\r\n const onDateChange = (date) => {\r\n setLoading(true)\r\n\r\n console.log(date)\r\n\r\n core.dataStore\r\n .UpdateMasterDataDate(convertToPostModel(date))\r\n .then(() => {\r\n reloadIntroDates()\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n const addIntroDate = () => {\r\n setLoading(true)\r\n\r\n core.dataStore\r\n .CreateMasterDataDate(convertToPostModel(newDate))\r\n .then(() => {\r\n reloadIntroDates()\r\n setLoading(false)\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n core.setModal({\r\n headline: ,\r\n message: ,\r\n })\r\n })\r\n }\r\n\r\n const deleteDates = (introductionDate) => {\r\n setLoading(true)\r\n\r\n core.dataStore.DeleteMasterDataDate(introductionDate).then(() => {\r\n reloadIntroDates()\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .GetUserTypesGroup()\r\n .then((res) => {\r\n setUserGroup(res.data)\r\n\r\n var newDate = {\r\n introductionDate: today,\r\n dataAvailableDate: [],\r\n }\r\n res.data.forEach((item) => {\r\n newDate.dataAvailableDate.push({\r\n userTypeGroupId: item.userTypeGroupId,\r\n availableDate: today,\r\n })\r\n })\r\n\r\n setNewDate(newDate)\r\n setInit(false)\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n setInit(false)\r\n })\r\n\r\n reloadIntroDates()\r\n }, [])\r\n\r\n return (\r\n <>\r\n \r\n \r\n {loading ? :
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {userGroups.map((userGroup) => (\r\n \r\n \r\n {userGroup.type}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {dates.map((dateLine) => (\r\n \r\n \r\n \r\n \r\n\r\n {dateLine.dataAvailableDate.map((item) => (\r\n <>\r\n {userGroups.map((u) => (\r\n <>\r\n {u.userTypeGroupId == item.userTypeGroupId ? (\r\n \r\n {\r\n const editDate = { ...dateLine }\r\n\r\n for (\r\n let i = 0;\r\n i < editDate.dataAvailableDate.length;\r\n i++\r\n ) {\r\n if (\r\n editDate.dataAvailableDate[i]\r\n .userTypeGroupId == item.userTypeGroupId\r\n ) {\r\n editDate.dataAvailableDate[\r\n i\r\n ].availableDate = getTimeMinusOffset(date)\r\n }\r\n }\r\n\r\n onDateChange(editDate)\r\n }}\r\n value={item.availableDate}\r\n />\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n ))}\r\n \r\n ))}\r\n\r\n \r\n deleteDates(dateLine.introductionDate)}\r\n />\r\n \r\n \r\n ))}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {!init ? (\r\n \r\n \r\n {\r\n const editDate = { ...newDate }\r\n editDate.introductionDate = getTimeMinusOffset(date)\r\n\r\n for (\r\n let i = 0;\r\n i < editDate.dataAvailableDate.length;\r\n i++\r\n ) {\r\n editDate.dataAvailableDate[i].availableDate =\r\n getTimeMinusOffset(date)\r\n }\r\n\r\n setNewDate(editDate)\r\n }}\r\n value={newDate.introductionDate}\r\n />\r\n \r\n\r\n {newDate.dataAvailableDate.map((dataAvailableDate) => (\r\n \r\n {\r\n const editDate = { ...newDate }\r\n\r\n for (\r\n let i = 0;\r\n i < editDate.dataAvailableDate.length;\r\n i++\r\n ) {\r\n if (\r\n editDate.dataAvailableDate[i].userTypeGroupId ==\r\n dataAvailableDate.userTypeGroupId\r\n ) {\r\n editDate.dataAvailableDate[i].availableDate =\r\n getTimeMinusOffset(date)\r\n }\r\n }\r\n\r\n setNewDate(editDate)\r\n }}\r\n value={dataAvailableDate.availableDate}\r\n />\r\n \r\n ))}\r\n\r\n \r\n addIntroDate()}\r\n />\r\n \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, useContext } from 'react'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport DatePicker from '../../../../shared/DatePicker'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers'\r\nimport DateFnsUtils from '@date-io/date-fns'\r\nimport {\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Paper,\r\n LinearProgress,\r\n Tooltip,\r\n Typography,\r\n makeStyles,\r\n} from '@material-ui/core'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever'\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n customTooltip: {\r\n fontSize: 14,\r\n },\r\n}))\r\n\r\nexport default function MasterDataAvailableDateSettings(props) {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n const [userGroups, setUserGroup] = useState([])\r\n const [dates, setDates] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [init, setInit] = useState(true)\r\n\r\n const today = getTimeMinusOffset(new Date())\r\n const [newDate, setNewDate] = useState([])\r\n\r\n function getTimeMinusOffset(date) {\r\n return (\r\n new Date(date.getTime() - date.getTimezoneOffset() * 60000)\r\n .toJSON()\r\n .split('T')[0] + 'T00:00:00'\r\n )\r\n }\r\n\r\n const reloadIntroDates = () => {\r\n setLoading(true)\r\n\r\n core.dataStore.GetMasterDataItemAvailableDate().then((res) => {\r\n setDates(res.data.reverse())\r\n })\r\n\r\n setLoading(false)\r\n }\r\n\r\n const convertToPostModel = (dates) => {\r\n const postModel = []\r\n\r\n dates.dataAvailableDate.forEach((item) => {\r\n postModel.push({\r\n introductionDate: dates.introductionDate,\r\n userTypeGroupId: item.userTypeGroupId,\r\n availableDate: item.availableDate,\r\n })\r\n })\r\n\r\n return postModel\r\n }\r\n\r\n const onDateChange = (date) => {\r\n setLoading(true)\r\n\r\n console.log(date)\r\n\r\n core.dataStore\r\n .UpdateMasterDataItemAvailableDate(convertToPostModel(date))\r\n .then(() => {\r\n reloadIntroDates()\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n const addIntroDate = () => {\r\n setLoading(true)\r\n\r\n core.dataStore\r\n .CreateMasterDataItemAvailableDate(convertToPostModel(newDate))\r\n .then(() => {\r\n reloadIntroDates()\r\n setLoading(false)\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n core.setModal({\r\n headline: ,\r\n message: ,\r\n })\r\n })\r\n }\r\n\r\n const deleteDates = (introductionDate) => {\r\n setLoading(true)\r\n\r\n core.dataStore\r\n .DeleteMasterDataItemAvailableDate(introductionDate)\r\n .then(() => {\r\n reloadIntroDates()\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .GetUserTypesGroup()\r\n .then((res) => {\r\n setUserGroup(res.data)\r\n\r\n var newDate = {\r\n introductionDate: today,\r\n dataAvailableDate: [],\r\n }\r\n res.data.forEach((item) => {\r\n newDate.dataAvailableDate.push({\r\n userTypeGroupId: item.userTypeGroupId,\r\n availableDate: today,\r\n })\r\n })\r\n\r\n setNewDate(newDate)\r\n setInit(false)\r\n })\r\n .catch(() => {\r\n setLoading(false)\r\n setInit(false)\r\n })\r\n\r\n reloadIntroDates()\r\n }, [])\r\n\r\n return (\r\n <>\r\n \r\n \r\n {loading ? :
}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {userGroups.map((userGroup) => (\r\n \r\n \r\n {userGroup.type}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {dates.map((dateLine) => (\r\n \r\n \r\n \r\n \r\n\r\n {dateLine.dataAvailableDate.map((item) => (\r\n <>\r\n {userGroups.map((u) => (\r\n <>\r\n {u.userTypeGroupId == item.userTypeGroupId ? (\r\n \r\n {\r\n const editDate = { ...dateLine }\r\n\r\n for (\r\n let i = 0;\r\n i < editDate.dataAvailableDate.length;\r\n i++\r\n ) {\r\n if (\r\n editDate.dataAvailableDate[i]\r\n .userTypeGroupId == item.userTypeGroupId\r\n ) {\r\n editDate.dataAvailableDate[\r\n i\r\n ].availableDate = getTimeMinusOffset(date)\r\n }\r\n }\r\n\r\n onDateChange(editDate)\r\n }}\r\n value={item.availableDate}\r\n />\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n ))}\r\n \r\n ))}\r\n\r\n \r\n deleteDates(dateLine.introductionDate)}\r\n />\r\n \r\n \r\n ))}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {!init ? (\r\n \r\n \r\n {\r\n const editDate = { ...newDate }\r\n editDate.introductionDate = getTimeMinusOffset(date)\r\n\r\n for (\r\n let i = 0;\r\n i < editDate.dataAvailableDate.length;\r\n i++\r\n ) {\r\n editDate.dataAvailableDate[i].availableDate =\r\n getTimeMinusOffset(date)\r\n }\r\n\r\n setNewDate(editDate)\r\n }}\r\n value={newDate.introductionDate}\r\n />\r\n \r\n\r\n {newDate.dataAvailableDate.map((dataAvailableDate) => (\r\n \r\n {\r\n const editDate = { ...newDate }\r\n\r\n for (\r\n let i = 0;\r\n i < editDate.dataAvailableDate.length;\r\n i++\r\n ) {\r\n if (\r\n editDate.dataAvailableDate[i].userTypeGroupId ==\r\n dataAvailableDate.userTypeGroupId\r\n ) {\r\n editDate.dataAvailableDate[i].availableDate =\r\n getTimeMinusOffset(date)\r\n }\r\n }\r\n\r\n setNewDate(editDate)\r\n }}\r\n value={dataAvailableDate.availableDate}\r\n />\r\n \r\n ))}\r\n\r\n \r\n addIntroDate()}\r\n />\r\n \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, useContext } from 'react'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport { Typography, Box } from '@material-ui/core'\r\nimport FormSection from '../../../components/forms/FormSection'\r\nimport FormHeader from '../../../components/forms/FormHeader'\r\nimport MasterDataDates from './MasterDataDates'\r\nimport MasterDataAvailableDateSettings from './MasterDataAvailableDateSettings'\r\n\r\nexport default function MasterDataSettings(props) {\r\n const core = useContext(CoreContext)\r\n const [standardTemplates, setStandardTemplates] = useState([])\r\n\r\n useEffect(() => {\r\n core.dataStore.getMasterDataStandardTemplates().then((res) => {\r\n setStandardTemplates(res.data)\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 {standardTemplates.map((template) => (\r\n \r\n \r\n {template.name}\r\n \r\n \r\n {template.defaultLanguageCode}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport TranslationLabel from '../../../components/TranslationLabel'\r\nimport FormSection from '../../../components/forms/FormSection'\r\nimport FormHeader from '../../../components/forms/FormHeader'\r\nimport { Box, FormControl, Button } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport ApiUrls from '../../../../core/data/ApiUrls'\r\nimport hubpic1 from '../../../../assets/images/hubpic1.jpg'\r\nimport hubpic2 from '../../../../assets/images/hubpic2.jpg'\r\nimport hubpic7 from '../../../../assets/images/hubpic7.jpg'\r\nimport hubpic9 from '../../../../assets/images/hubpic9.jpg'\r\nimport hubpic12 from '../../../../assets/images/hubpic12.jpg'\r\n\r\nconst images = {\r\n 2: hubpic1,\r\n 6: hubpic2,\r\n 7: hubpic7,\r\n 9: hubpic9,\r\n 12: hubpic12,\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n actionLinks: {\r\n textDecoration: 'underline',\r\n cursor: 'pointer',\r\n },\r\n resetMargin: {\r\n margin: '0',\r\n },\r\n formControl: {\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n },\r\n}))\r\n\r\nexport default function HubSettings(prop) {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n const [apps, setApps] = useState([])\r\n const [load, setLoad] = useState(false)\r\n\r\n useEffect(() => {\r\n core.dataStore.getApps().then((res) => {\r\n setApps(res.data.filter((app) => app.id !== 1))\r\n })\r\n }, [load])\r\n\r\n function removePreview(app) {\r\n setApps(\r\n apps.map((item) => {\r\n if (item.id == app.id) {\r\n item.previewImage = undefined\r\n }\r\n\r\n return item\r\n }),\r\n )\r\n }\r\n\r\n function removeImage(app) {\r\n let formData = new FormData()\r\n formData.append('file', [])\r\n\r\n core.dataStore.updateAppImage(app.id, formData).then(() => {\r\n setLoad(!load)\r\n })\r\n }\r\n\r\n function uploadImage(app) {\r\n let formData = new FormData()\r\n formData.append('file', app.previewImage)\r\n\r\n core.dataStore.updateAppImage(app.id, formData).then(() => {\r\n setLoad(!load)\r\n })\r\n }\r\n\r\n function showPreview(app, e) {\r\n setApps(\r\n apps.map((item) => {\r\n if (item.id == app.id) {\r\n item.previewImage = e.target.files[0]\r\n }\r\n\r\n return item\r\n }),\r\n )\r\n }\r\n\r\n function imageToPreview(app) {\r\n if (app.previewImage) {\r\n return (\r\n \r\n \r\n

\r\n \r\n \r\n removePreview(app)}>\r\n - \r\n \r\n \r\n

\r\n
\r\n )\r\n }\r\n\r\n if (app.backgroundImage !== '' && app.backgroundImage != null) {\r\n return (\r\n \r\n \r\n

\r\n \r\n -\r\n removeImage(app)}>\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 return (\r\n <>\r\n {apps.map((app) => {\r\n return (\r\n \r\n \r\n\r\n \r\n {imageToPreview(app)}\r\n\r\n {!app.previewImage ? (\r\n \r\n showPreview(app, 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 ) : (\r\n \r\n
\r\n uploadImage(app)}\r\n style={{\r\n marginBottom: '5px',\r\n }}>\r\n \r\n \r\n
\r\n \r\n \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, useContext } from 'react'\r\nimport { CoreContext } from '../../../context/CoreContext'\r\nimport SalesAppSettings from './SalesAppSettings'\r\nimport MasterDataSettings from './MasterDataSettings'\r\nimport HubSettings from './HubSettings'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nimport Tabs from '@material-ui/core/Tabs'\r\nimport Tab from '@material-ui/core/Tab'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n selectedTab: {\r\n color: 'blue',\r\n },\r\n}))\r\n\r\nexport default function SettingsManagement() {\r\n const core = useContext(CoreContext)\r\n const [selectedTab, setSelectedTab] = useState(1)\r\n const [allApps, setAllApps] = useState([])\r\n const classes = useStyles()\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getApps()\r\n .then((rs) => {\r\n setAllApps(rs.data)\r\n })\r\n .catch(() => {})\r\n }, [selectedTab])\r\n\r\n const selectedApp = () => {\r\n switch (selectedTab) {\r\n case 1:\r\n return \r\n case 2:\r\n return \r\n case 6:\r\n return \r\n default:\r\n return <>\r\n }\r\n }\r\n\r\n const TabHeadline = (props) => {\r\n return (\r\n setSelectedTab(props.id)}\r\n label={props.title}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {allApps.map((app) => (\r\n \r\n ))}\r\n \r\n {selectedApp()}\r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport List from '@material-ui/core/List'\r\nimport ListItem from '@material-ui/core/ListItem'\r\nimport ListItemText from '@material-ui/core/ListItemText'\r\nimport Collapse from '@material-ui/core/Collapse'\r\nimport ExpandLess from '@material-ui/icons/ExpandLess'\r\nimport ExpandMore from '@material-ui/icons/ExpandMore'\r\nimport Table from '@material-ui/core/Table'\r\nimport TableBody from '@material-ui/core/TableBody'\r\nimport TableCell from '@material-ui/core/TableCell'\r\nimport TableHead from '@material-ui/core/TableHead'\r\nimport TableRow from '@material-ui/core/TableRow'\r\nimport {\r\n FormControl,\r\n IconButton,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n TextField,\r\n Typography,\r\n Button,\r\n} from '@material-ui/core'\r\nimport CancelRoundedIcon from '@material-ui/icons/CancelRounded'\r\nimport CheckCircleRoundedIcon from '@material-ui/icons/CheckCircleRounded'\r\nimport TranslationLabel from './../../../components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n minWidth: 360,\r\n backgroundColor: theme.palette.background.paper,\r\n borderBottom: '1px solid #ddd',\r\n paddingBottom: 0,\r\n },\r\n select: {\r\n width: 300,\r\n marginBottom: 30,\r\n },\r\n nested: {\r\n marginBottom: 20,\r\n },\r\n th: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n fontSize: '.8em',\r\n textTransform: 'uppercase',\r\n color: '#777',\r\n },\r\n expandable: {\r\n backgroundColor: '#F9F9F9',\r\n borderTop: '1px solid #ddd',\r\n },\r\n link: {\r\n color: theme.palette.primary.main,\r\n textDecoration: 'underline',\r\n cursor: 'pointer',\r\n },\r\n icon: {\r\n margin: '6px 0 0 8px',\r\n },\r\n input: {\r\n width: 250,\r\n },\r\n cell: {\r\n paddingTop: 13,\r\n paddingBottom: 8,\r\n },\r\n tcell: {\r\n height: 62,\r\n width: 360,\r\n paddingTop: 13,\r\n paddingBottom: 8,\r\n },\r\n p: {\r\n display: 'block',\r\n margin: '10px 0 30px',\r\n },\r\n h1: {\r\n fontSize: 30,\r\n marginTop: 30,\r\n },\r\n collapseAllWrapper: {\r\n float: 'right',\r\n },\r\n}))\r\n\r\nfunction LanguageManager(props) {\r\n const { core } = props\r\n const [data, setData] = useState(null)\r\n const classes = useStyles()\r\n const [open, setOpen] = useState([])\r\n const [lang, setLang] = useState(1)\r\n const [languages, setLanguages] = useState([])\r\n const [openLabelValues, setOpenLabelValues] = useState([])\r\n const [openDefaultValues, setOpenDefaultValues] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n\r\n const isAdmin = core.user.userSetting.userTypeId === 1\r\n\r\n // Set expandable panels state\r\n const toggleOpen = (id) => {\r\n let idx = open.indexOf(id)\r\n let arr = [...open]\r\n if (idx !== -1) {\r\n arr.splice(idx, 1)\r\n } else {\r\n arr.push(id)\r\n }\r\n setOpen(arr)\r\n }\r\n\r\n const openAll = () => {\r\n setOpen(Object.keys(data))\r\n }\r\n\r\n const closeAll = () => {\r\n setOpen([])\r\n }\r\n\r\n // Set active rows state\r\n const toggleActivateField = (id) => {\r\n let idx = openLabelValues.indexOf(id)\r\n let arr = [...openLabelValues]\r\n if (idx !== -1) {\r\n arr.splice(idx, 1)\r\n } else {\r\n arr.push(id)\r\n }\r\n setOpenLabelValues(arr)\r\n }\r\n\r\n const toggleOpenDefaultValue = (id) => {\r\n if (!isAdmin) {\r\n //only allow admins to change default values\r\n return\r\n }\r\n if (openDefaultValues.includes(id)) {\r\n setOpenDefaultValues(openDefaultValues.filter((el) => el !== id))\r\n } else {\r\n setOpenDefaultValues([...openDefaultValues, id])\r\n }\r\n }\r\n\r\n const handleLanguageChange = (e) => {\r\n setLang(e.target.value)\r\n setOpenLabelValues([])\r\n setOpenDefaultValues([])\r\n }\r\n\r\n const handleBlur = (e, item) => {\r\n if (e.target.value === getTranslatedLabel(item)?.value) {\r\n toggleActivateField(item.label.id)\r\n }\r\n }\r\n\r\n const handleKeyUpValue = (e, item) => {\r\n if (e.key === 'Enter') {\r\n saveLabelValue(item, e.target.value)\r\n } else if (e.key === 'Escape') {\r\n toggleActivateField(item.label.id)\r\n }\r\n }\r\n\r\n const handleKeyUpDefaultValue = (e, item) => {\r\n if (e.key === 'Enter') {\r\n saveLabelDefaultValue(item, e.target.value)\r\n } else if (e.key === 'Escape') {\r\n toggleOpenDefaultValue(item.label.id)\r\n }\r\n }\r\n\r\n const handleSaveValueClick = (item) => {\r\n let val = document.getElementById(`labelValue${item.label.id}`).value\r\n saveLabelValue(item, val)\r\n }\r\n\r\n const handleSaveDefaultValueClick = (item) => {\r\n let val = document.getElementById(`labelDefaultValue${item.label.id}`).value\r\n saveLabelDefaultValue(item, val)\r\n }\r\n\r\n const saveLabelDefaultValue = (item, value) => {\r\n const newItem = { ...item }\r\n newItem.label.defaultValue = value\r\n updateLabel(item.label)\r\n toggleOpenDefaultValue(item.label.id)\r\n }\r\n\r\n const saveLabelValue = (item, value) => {\r\n let label = getTranslatedLabel(item)\r\n if (label && label.value) {\r\n label.value = value\r\n } else {\r\n item.translations.push({\r\n languageId: lang,\r\n value: value,\r\n })\r\n }\r\n\r\n let postBody = { ...item.label }\r\n postBody.translations = item.translations\r\n updateLabel(postBody)\r\n toggleActivateField(item.label.id)\r\n }\r\n\r\n const updateLabel = (item) => {\r\n console.log('updating item', item)\r\n core.dataStore\r\n .updateLabel(item)\r\n .then(() => {\r\n core.snackbar('success', 'Label was updated')\r\n })\r\n .catch(() => {})\r\n }\r\n\r\n const getTranslatedLabel = (item) => {\r\n return item.translations.find((tl) => tl.languageId === lang)\r\n }\r\n\r\n useEffect(() => {\r\n if (loading) {\r\n return\r\n }\r\n setLoading(true)\r\n\r\n core.dataStore.getLabels().then((response) => {\r\n // Group by labelGroup\r\n // returns object\r\n let groups = response.data.reduce((r, a) => {\r\n r[a.label.labelGroup] = [...(r[a.label.labelGroup] || []), a]\r\n return r\r\n }, {})\r\n setData(groups)\r\n })\r\n core.dataStore.getLanguages().then((response) => {\r\n setLanguages(response.data)\r\n })\r\n }, [core.dataStore, setData, setLanguages, setLoading, loading])\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 {languages.map((language) => {\r\n return (\r\n \r\n {language.title}\r\n \r\n )\r\n })}\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n {data !== null &&\r\n Object.entries(data).map((entry) => {\r\n return (\r\n
\r\n toggleOpen(entry[0])}>\r\n \r\n {open.indexOf(entry[0]) !== -1 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Key\r\n \r\n Default\r\n \r\n \r\n Translation\r\n \r\n \r\n \r\n \r\n {entry[1] &&\r\n entry[1].map((item) => (\r\n \r\n \r\n {item.label.key}\r\n \r\n {/* {item.label.defaultValue} */}\r\n \r\n {openDefaultValues.indexOf(item.label.id) ===\r\n -1 ? (\r\n \r\n toggleOpenDefaultValue(item.label.id)\r\n }>\r\n {item.label.defaultValue || 'Not defined'}\r\n \r\n ) : (\r\n
\r\n \r\n handleKeyUpDefaultValue(e, item)\r\n }\r\n autoFocus\r\n />\r\n \r\n handleSaveDefaultValueClick(item)\r\n }>\r\n \r\n \r\n \r\n toggleOpenDefaultValue(item.label.id)\r\n }>\r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n {openLabelValues.indexOf(item.label.id) ===\r\n -1 ? (\r\n \r\n toggleActivateField(item.label.id)\r\n }\r\n onFocus={() =>\r\n toggleActivateField(item.label.id)\r\n }>\r\n {getTranslatedLabel(item)?.value ||\r\n 'Not defined'}\r\n \r\n ) : (\r\n
\r\n \r\n handleKeyUpValue(e, item)\r\n }\r\n autoFocus\r\n onBlur={(e) => handleBlur(e, item)}\r\n />\r\n \r\n handleSaveValueClick(item)\r\n }>\r\n \r\n \r\n \r\n toggleActivateField(item.label.id)\r\n }>\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\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 default LanguageManager\r\n","import React, { useContext } from 'react'\r\nimport { Route } from 'react-router-dom'\r\n\r\nimport UsersManager from './UserManager/UsersManager'\r\nimport UserSettingsPage from '../../pages/UserSettingsPage'\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nimport { CoreContext } from '../../context/CoreContext'\r\nimport SettingsManagement from './SettingsManagement/SettingsManagement'\r\nimport LanguageManager from './LanguageManager/LanguageManager'\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: 0,\r\n paddingBottom: theme.spacing(2),\r\n paddingLeft: '0!important',\r\n paddingRight: '0!important',\r\n flexGrow: 1,\r\n backgroundColor: 'transparent',\r\n },\r\n})\r\n\r\nfunction AdminView(props) {\r\n const core = useContext(CoreContext)\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\nexport default withStyles(styles)(AdminView)\r\n","import React from 'react'\r\n\r\n//Components\r\nimport AdminView from '../admin/components/AdminView'\r\n\r\n//Theme\r\nimport { withStyles } from '@material-ui/core/styles'\r\n\r\nconst styles = (theme) => ({\r\n gridFullHeight: {\r\n height: '100%',\r\n },\r\n tabRoot: {\r\n flexGrow: 1,\r\n },\r\n flex: {\r\n display: 'flex',\r\n flex: 1,\r\n },\r\n paper: {\r\n width: '100%',\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: theme.spacing(2),\r\n paddingLeft: '0',\r\n paddingRight: '0',\r\n borderRadius: 0,\r\n },\r\n cornerButton: {\r\n right: '15px',\r\n bottom: '15px',\r\n },\r\n title: {\r\n paddingLeft: '15px',\r\n },\r\n})\r\n\r\nexport function AdminPage() {\r\n return \r\n}\r\n\r\nexport default withStyles(styles)(AdminPage)\r\n","import React from 'react'\r\n\r\nexport default function Feedback() {\r\n return (\r\n <>\r\n \r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport CardMedia from '@material-ui/core/CardMedia'\r\nimport Card from '@material-ui/core/Card'\r\nimport CardActionArea from '@material-ui/core/CardActionArea'\r\nimport ApiUrls from '../../core/data/ApiUrls'\r\nimport { CoreContext } from '../../core/context/CoreContext'\r\nimport { findApp } from '../../core/settings/hubRoutes'\r\nimport TranslationLabel from '../../core/components/TranslationLabel'\r\n\r\nimport hubpic1 from '../../assets/images/hubpic1.jpg'\r\nimport hubpic2 from '../../assets/images/hubpic2.jpg'\r\nimport hubpic7 from '../../assets/images/hubpic7.jpg'\r\nimport hubpic9 from '../../assets/images/hubpic9.jpg'\r\nimport hubpic12 from '../../assets/images/hubpic12.jpg'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n paper: {\r\n padding: theme.spacing(2),\r\n textAlign: 'center',\r\n color: theme.palette.text.secondary,\r\n },\r\n cardRoot: {\r\n width: '100%',\r\n },\r\n media: {\r\n height: 140,\r\n },\r\n title: {\r\n padding: '5px',\r\n fontSize: '1.4rem',\r\n margin: '0',\r\n fontWeight: '400',\r\n textAlign: 'center',\r\n },\r\n}))\r\n\r\nconst images = {\r\n 2: hubpic1,\r\n 6: hubpic2,\r\n 7: hubpic7,\r\n 9: hubpic9,\r\n 12: hubpic12,\r\n}\r\n\r\nexport default function HubPortal() {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n const [apps, setApps] = useState([])\r\n\r\n useEffect(() => {\r\n core.setTitles('Hub')\r\n }, [core.setTitles])\r\n\r\n useEffect(() => {\r\n const userApps = core.getUserApps()\r\n core.dataStore.getApps().then((res) => {\r\n setApps(\r\n res.data.filter((app) => app.id !== 1 && userApps.includes(app.id)),\r\n )\r\n })\r\n }, [])\r\n\r\n return (\r\n
\r\n \r\n {apps.length === 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n apps.map((v) => {\r\n var app = findApp(v.id)\r\n\r\n return (\r\n \r\n {app.id !== '' ? (\r\n \r\n \r\n \r\n \r\n

\r\n {}\r\n

\r\n
\r\n \r\n \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 { Button, TextField, Typography, makeStyles } from '@material-ui/core'\nimport React, { useContext, useEffect, useState, useRef } from 'react'\nimport { CoreContext } from '../context/CoreContext'\nimport TranslationLabel, { translationLink } from './TranslationLabel'\nimport Switch from '@material-ui/core/Switch'\nimport FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel'\nimport Trash from '@material-ui/icons/Delete'\nimport HeightIcon from '@material-ui/icons/Height';\n\nconst useStyles = makeStyles((theme) => ({\n pageHeader: {\n display: 'flex',\n alignItems: 'center',\n [theme.breakpoints.down('sm')]: {\n flexDirection: 'column',\n alignItems: 'flex-start',\n }\n }\n}))\n\n\nconst defaultNewLink = {\n translationKey: '',\n isBreakerHeadline: false,\n sortOrder: 1\n}\nexport default function HelpPage(props) {\n const [helpLinks, setHelpLinks] = useState([]);\n const [editLinks, setEditLinks] = useState(false);\n const [newLink, SetNewLink] = useState(defaultNewLink);\n\n const classes = useStyles()\n const core = useContext(CoreContext)\n const { appId } = props\n const label = 'helpPageLabel' + appId\n\n useEffect(() => {\n core.dataStore.GetHelpLinks(appId)\n .then(res => setHelpLinks(res.data));\n\n console.log(helpLinks)\n }, [appId])\n\n const createNewLink = () => {\n var newLinkClone = {... newLink};\n\n //If length of helpllinks are 0, set sortOrder to 1 else last item sort order + 1\n newLinkClone.sortOrder = helpLinks.length === 0 ? 1 : helpLinks[helpLinks.length - 1].sortOrder + 1;\n\n core.dataStore.NewHelpLinks(appId, newLinkClone)\n .then(() => {\n SetNewLink(defaultNewLink);\n\n core.dataStore.GetHelpLinks(appId)\n .then(res => setHelpLinks(res.data));\n })\n }\n\n const changeNewLinkBreakHeadline = e => {\n SetNewLink({... newLink, isBreakerHeadline: e.target.checked })\n }\n\n const changeNewLinkTranslationKey = e => {\n SetNewLink({... newLink, translationKey: e.target.value})\n }\n\n const deleteLink = link => {\n if(window.confirm(\"Slet: \" + link.translationKey)) {\n core.dataStore.DelHelpLinks(appId, link.id)\n .then(() => {\n core.dataStore.GetHelpLinks(appId)\n .then(res => setHelpLinks(res.data));\n })\n }\n }\n\n const saveLink = (link) => {\n core.dataStore.UpdateHelpLinks(appId, {... link})\n .then(() => {\n core.dataStore.GetHelpLinks(appId)\n .then(res => setHelpLinks(res.data));\n })\n }\n\n const dragLink = useRef(null);\n const dragOverLink = useRef(null);\n\n const handleSort = () => {\n const items = [... helpLinks];\n const draggedItem = items[dragLink.current];\n const remainingItems = items.filter((_, idx) => idx !== dragLink.current);\n\n const beforeItems = remainingItems.slice(0, dragOverLink.current);\n const afterItems = remainingItems.slice(dragOverLink.current);\n\n const newOrder = [...beforeItems, draggedItem, ...afterItems];\n newOrder.forEach((item, idx) => {\n item.sortOrder = idx + 1;\n });\n\n setHelpLinks(newOrder);\n\n newOrder.forEach((item) => {\n core.dataStore.UpdateHelpLinks(appId, item);\n });\n\n dragLink.current = null;\n dragOverLink.current = null;\n };\n\n const EditLinkComponent = ({innerHtml, linkObj, index}) => {\n return (\n
(dragLink.current = index)}\n onDragEnter={() => (dragOverLink.current = index)}\n onDragOver={(e) => e.preventDefault()}\n onDragEnd={handleSort}>\n \n {innerHtml}\n\n {\n if (e.keyCode === 13) {\n //for the enter key\n saveLink(linkObj);\n }\n }}\n style={{marginLeft: 'auto', width: '50px'}}\n variant='outlined'\n size='small'\n defaultValue={linkObj.sortOrder}\n onChange={e => linkObj.sortOrder = e.target.value}\n />\n\n deleteLink(linkObj)}\n className={classes.buttons}\n color='primary'>\n \n \n
\n )\n }\n\n return (\n <>\n
\n
\n \n \n \n
\n
\n {core.user.userSetting.helpLinkManagement && ( setEditLinks(!editLinks)}\n className={classes.buttons}\n variant='contained'\n color='primary'>\n {editLinks && (\"stop\")} \n \n )}\n
\n
\n\n {/* EDIT FORM */}\n {editLinks && (\n
\n
\n }\n variant='outlined'\n onChange={changeNewLinkTranslationKey}\n value={newLink.translationKey}\n className={classes.inputField}\n />\n
\n
\n
\n \n }\n label={}\n />\n
\n
\n \n {}\n \n
\n
\n
\n )}\n\n {/* HELPTLINK IN EDIT MODE */}\n {editLinks && (\n <>\n {helpLinks.map((helpLink, index) => {\n return (\n <>\n {helpLink.isBreakerHeadline && (\n \n \n \n } />\n )}\n\n {!helpLink.isBreakerHeadline && (\n \n \n \n \n \n } />\n )}\n \n )\n })}\n \n )}\n\n {/* HELPLINK IN NON EDIT MODE */}\n {!editLinks && (\n <>\n {helpLinks.map(helpLink => {\n return (\n <>\n {helpLink.isBreakerHeadline && (\n \n \n \n )}\n\n {!helpLink.isBreakerHeadline && (\n \n \n \n \n \n )}\n \n )\n })}\n \n )}\n \n )\n}\n","import { useContext } from 'react'\r\nimport { CoreContext } from '../../core/context/CoreContext'\r\nimport UserFormView from './components/UserManager/UserFormView'\r\n\r\nexport default function GetAdminNav() {\r\n const core = useContext(CoreContext)\r\n const { languageManagement, allUserManagement, settingsAdministration } =\r\n core.user.userSetting\r\n\r\n const userManagementItem = {\r\n id: 'Customers',\r\n index: 2,\r\n labelKey: 'userAdmin',\r\n route: {\r\n id: 'UserAdmin',\r\n path: '/hub/admin/users',\r\n component: UserFormView,\r\n },\r\n }\r\n\r\n const languageItem = {\r\n id: 'Translate',\r\n index: 3,\r\n labelKey: 'language',\r\n route: {\r\n id: 'Translate',\r\n path: '/hub/admin/language',\r\n },\r\n }\r\n\r\n const settingsAdministationItem = {\r\n id: 'Settings',\r\n index: 4,\r\n labelKey: 'settingsManagement',\r\n route: {\r\n id: 'settingsManagement',\r\n path: '/hub/admin/settingsManagement',\r\n },\r\n }\r\n\r\n const feedbackItem = {\r\n id: 'Feedback',\r\n index: 5,\r\n labelKey: 'Feedback',\r\n route: {\r\n id: 'Feedback',\r\n path: '/hub/feedback',\r\n },\r\n }\r\n const helpItem = {\r\n id: 'Help',\r\n index: 6,\r\n labelKey: 'help',\r\n route: {\r\n id: 'Help',\r\n path: '/hub/help',\r\n },\r\n }\r\n\r\n const upperNavigation = [\r\n {\r\n id: 'Hub',\r\n index: 1,\r\n labelKey: 'hub',\r\n route: {\r\n id: 'Hub',\r\n path: '/hub/',\r\n },\r\n },\r\n ]\r\n\r\n if (allUserManagement) {\r\n upperNavigation.push(userManagementItem)\r\n }\r\n if (languageManagement) {\r\n upperNavigation.push(languageItem)\r\n }\r\n if (settingsAdministration) {\r\n upperNavigation.push(settingsAdministationItem)\r\n }\r\n upperNavigation.push(feedbackItem)\r\n upperNavigation.push(helpItem)\r\n\r\n const adminNav = [\r\n {\r\n id: 1,\r\n component: 1,\r\n label: 'User administration',\r\n path: '/hub/admin/users',\r\n weight: 0,\r\n indent: false,\r\n },\r\n {\r\n id: 6,\r\n component: 13,\r\n label: 'Language',\r\n path: '/hub/admin/language',\r\n weight: 0,\r\n indent: false,\r\n },\r\n ]\r\n\r\n return {\r\n adminNav,\r\n upperNavigation\r\n }\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { findApp } from '../../../core/settings/hubRoutes'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport { ListItem, ListItemText } from '@material-ui/core'\r\n\r\nexport default function AppListItem(props) {\r\n const [app, setApp] = useState({\r\n id: '',\r\n title: '',\r\n description: '',\r\n path: '',\r\n })\r\n const { appId } = props\r\n\r\n function loadApp() {\r\n let rs = findApp(appId)\r\n if (rs) setApp(rs)\r\n }\r\n\r\n useEffect(() => {\r\n if (appId) {\r\n loadApp()\r\n }\r\n }, [appId])\r\n\r\n return (\r\n app.id && (\r\n \r\n } />\r\n \r\n )\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport PopupState, { bindPopover, bindTrigger } from 'material-ui-popup-state'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AppsIcon from '@material-ui/icons/AppsOutlined'\r\nimport Popover from '@material-ui/core/Popover'\r\nimport AppListItem from '../../apps/hub-portal/components/AppListItem'\r\nimport { List } from '@material-ui/core'\r\n\r\nexport default function GlobalAppNavigationButton(props) {\r\n const core = useContext(CoreContext)\r\n return (\r\n \r\n {(popupState) => (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {core.getUserApps().map((v) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React, { useState } from 'react'\r\nimport { makeStyles, Typography } from '@material-ui/core'\r\nimport Button from '@material-ui/core/Button'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n article: {\r\n margin: '24px 12px 0 12px',\r\n height: 360,\r\n },\r\n wrapper: {\r\n background: 'white',\r\n border: '1px solid #dadce0',\r\n borderRadius: 8,\r\n overflow: 'hidden',\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n },\r\n root: {\r\n width: '100%',\r\n overflow: 'hidden',\r\n boxSizing: 'border-box',\r\n height: '100%',\r\n },\r\n title: {\r\n borderBottom: '1px solid #dadce0',\r\n padding: '12px',\r\n height: 55,\r\n },\r\n content: {\r\n height: '100%',\r\n },\r\n button: {\r\n margin: 0,\r\n padding: '12px',\r\n color: theme.palette.primary.main,\r\n },\r\n dialog: {},\r\n}))\r\n\r\nexport default function DashboardWidgetContainer(props) {\r\n const { content, title, expanded, height, icon, hideTitle, expandContent } =\r\n props\r\n const [open, setOpen] = useState(false)\r\n const classes = useStyles()\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true)\r\n }\r\n const handleClose = () => {\r\n setOpen(false)\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n {!hideTitle ? (\r\n
\r\n {title}\r\n
\r\n ) : null}\r\n\r\n
{content}
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport function DashboardDialogView(props) {\r\n const { open, handleClose, title, content, hideTitle, expandContent } = props\r\n const classes = useStyles()\r\n return (\r\n
\r\n \r\n {!hideTitle ? (\r\n \r\n {title}\r\n \r\n ) : null}\r\n {content}\r\n {expandContent ? (\r\n {expandContent}\r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n","import { useContext, useState } from 'react'\r\nimport { useLocation, useHistory } from 'react-router-dom'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\n\r\nexport function useProductsModel() {\r\n const core = useContext(CoreContext)\r\n let location = useLocation()\r\n let history = useHistory()\r\n\r\n const pageSize = 24\r\n const urlParamsAccept = [\r\n 'brand',\r\n 'mainColor',\r\n 'category',\r\n 'subCategory',\r\n 'news',\r\n 'query',\r\n 'scrollTo',\r\n 'page',\r\n ]\r\n const isLargeScreen = window.matchMedia(\r\n `(min-width: ${core.theme.breakpoints.values.sm}px)`,\r\n ).matches\r\n const lastChosenViewMode =\r\n window.localStorage.getItem('productsListViewMode') || 'list'\r\n\r\n //todo customerId not set when first search is run\r\n const accountNo = core.user.selectedCustomer.accountNo\r\n const language = core.user.languageCode\r\n\r\n const [isInitialized, setIsInitialized] = useState(false)\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [hasMore, setHasMore] = useState(true)\r\n const [listViewMode, _setListViewMode] = useState(\r\n isLargeScreen ? lastChosenViewMode : 'grid',\r\n )\r\n const [allFacets, setAllFacets] = useState(undefined)\r\n const [onlyCampaign, _setOnlyCampaign] = useState(false)\r\n const [onlyArchive, _setOnlyArchive] = useState(false)\r\n\r\n const setListViewMode = (viewMode) => {\r\n _setListViewMode(viewMode)\r\n window.localStorage.setItem('productsListViewMode', viewMode)\r\n }\r\n\r\n // entire search state\r\n const [searchCollection, setSearchCollection] = useState({})\r\n\r\n const initialSelectedFactes = {\r\n brand: [],\r\n mainColor: [],\r\n subCategory: [],\r\n category: [],\r\n news: [],\r\n }\r\n const [selectedFacetValues, setSelectedFacetValues] = useState(\r\n initialSelectedFactes,\r\n )\r\n const [query, setQuery] = useState('')\r\n const [sortByField, setSortByField] = useState('BrandId')\r\n const [campaign, _setCampaign] = useState(\r\n JSON.parse(localStorage.getItem('campaign')) || '{}',\r\n )\r\n const [campaigns, setCampaigns] = useState([])\r\n\r\n const isFairApp = window.location.pathname.split('/')[1] === 'fair-app'\r\n\r\n const clearProducts = () => {\r\n setSearchCollection({ ...searchCollection, products: [] })\r\n }\r\n\r\n const setCampaign = (campaign) => {\r\n if (!campaign) {\r\n return\r\n }\r\n localStorage.setItem('campaign', JSON.stringify(campaign))\r\n _setCampaign(campaign)\r\n }\r\n\r\n // Product search triggers:\r\n function init() {\r\n if (!accountNo) {\r\n return\r\n }\r\n //get facet values\r\n if (!allFacets) {\r\n getAllFacetValues()\r\n }\r\n\r\n //Trigger search with or without urlparams\r\n let initalParamsFromQueryString = getSelectedFacetValuesFromURL()\r\n if (Object.keys(initalParamsFromQueryString).length > 0) {\r\n let options = {\r\n ...getSearchOptions(),\r\n query: initalParamsFromQueryString.hasOwnProperty('query')\r\n ? initalParamsFromQueryString.query[0]\r\n : '',\r\n selectedFacetValues: {\r\n brand: initalParamsFromQueryString.hasOwnProperty('brand')\r\n ? initalParamsFromQueryString.brand\r\n : [],\r\n mainColor: initalParamsFromQueryString.hasOwnProperty('mainColor')\r\n ? initalParamsFromQueryString.mainColor\r\n : [],\r\n subCategory: initalParamsFromQueryString.hasOwnProperty(\r\n 'subCategory',\r\n )\r\n ? initalParamsFromQueryString.subCategory\r\n : [],\r\n category: initalParamsFromQueryString.hasOwnProperty(\r\n 'category',\r\n )\r\n ? initalParamsFromQueryString.category\r\n : [],\r\n news: initalParamsFromQueryString.hasOwnProperty('news')\r\n ? initalParamsFromQueryString.news\r\n : [],\r\n },\r\n pageSize: initalParamsFromQueryString.hasOwnProperty('page')\r\n ? initalParamsFromQueryString.page[0] * pageSize\r\n : pageSize,\r\n }\r\n\r\n setQuery(\r\n initalParamsFromQueryString.hasOwnProperty('query')\r\n ? initalParamsFromQueryString.query[0]\r\n : '',\r\n )\r\n\r\n search(\r\n options,\r\n initalParamsFromQueryString.hasOwnProperty('page')\r\n ? initalParamsFromQueryString.page[0] * 1\r\n : 1,\r\n initalParamsFromQueryString.hasOwnProperty('scrollTo')\r\n ? initalParamsFromQueryString.scrollTo[0] * 1\r\n : 0,\r\n )\r\n } else {\r\n search()\r\n }\r\n }\r\n\r\n function getCampaigns() {\r\n //get campaigns\r\n if (!campaigns.length) {\r\n core.dataStore\r\n .getCampaigns(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n if (res.data) {\r\n setCampaigns(sortCampaigns(res.data))\r\n setCampaign(\r\n res.data?.find(\r\n (el) =>\r\n el.campaignId ===\r\n JSON.parse(localStorage.getItem('campaign') || '{}')\r\n .campaignId,\r\n ) || {},\r\n )\r\n }\r\n })\r\n }\r\n }\r\n\r\n const sortCampaigns = (arr) => {\r\n return arr.sort((a, b) => {\r\n if (a.name > b.name) return 1\r\n if (a.name < b.name) return -1\r\n return 0\r\n })\r\n }\r\n\r\n const setCampaignOrArchive = (facet, facetValue) => {\r\n let options = {\r\n ...getSearchOptions(),\r\n selectedFacetValues: { ...selectedFacetValues },\r\n query\r\n }\r\n\r\n if (facet === 'campaign') {\r\n _setOnlyArchive(false)\r\n _setOnlyCampaign(facetValue)\r\n\r\n options.onlyCampaign = facetValue\r\n options.onlyArchive = false\r\n } else if (facet === 'archive') {\r\n _setOnlyCampaign(false)\r\n _setOnlyArchive(facetValue)\r\n\r\n options.onlyArchive = facetValue\r\n options.onlyCampaign = false\r\n }\r\n\r\n search(options);\r\n }\r\n\r\n function toggleFacetValue(facet, facetValue) {\r\n //Update selectedFacetValues\r\n let _selectedFacetValues = { ...selectedFacetValues }\r\n _selectedFacetValues[facet] = addIfNotExistsRemoveIfItDoes(\r\n _selectedFacetValues[facet] || [],\r\n facetValue,\r\n )\r\n setSelectedFacetValues(_selectedFacetValues)\r\n\r\n // Trigger search\r\n let options = {\r\n ...getSearchOptions(),\r\n selectedFacetValues: _selectedFacetValues,\r\n query,\r\n }\r\n search(options)\r\n }\r\n\r\n function handleSearchQueryChange(query) {\r\n setQuery(query)\r\n // Trigger search\r\n let options = { ...getSearchOptions(), selectedFacetValues, query: query }\r\n search(options)\r\n }\r\n\r\n function handleSortByChange(value) {\r\n setSortByField(value)\r\n let options = {\r\n ...getSearchOptions(),\r\n selectedFacetValues: selectedFacetValues,\r\n sortByField: value,\r\n }\r\n search(options)\r\n }\r\n\r\n function reset() {\r\n setQuery('')\r\n search({ ...getSearchOptions(), query: '' })\r\n }\r\n\r\n function increment() {\r\n if (isLoading || !hasMore) {\r\n return\r\n }\r\n\r\n // Trigger search\r\n let options = {\r\n ...getSearchOptions(),\r\n selectedFacetValues,\r\n query,\r\n pageNumber: searchCollection.pageNumber + 1,\r\n }\r\n search(options)\r\n }\r\n\r\n function searchExcel(callback) {\r\n core.dataStore.searchExcel({...getSearchOptions(), selectedFacetValues, query})\r\n .then(response => {\r\n if (response.status === 200) {\r\n callback(response)\r\n } else {\r\n console.log('warning', response.statusText)\r\n callback(undefined)\r\n }\r\n })\r\n .catch((e) => {\r\n console.log('warning', e.toString())\r\n })\r\n }\r\n\r\n function search(options = getSearchOptions(), pageNumber = 1, scrollTo = 0) {\r\n setIsLoading(true)\r\n // choose between normal and compaign search\r\n const endpoint = isFairApp\r\n ? core.dataStore.campaignProductSearch\r\n : core.dataStore.searchProducts\r\n\r\n endpoint(options)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n setHasMore(!response.data.isLastPage)\r\n\r\n const products = response.data.products.map((item) => {\r\n return {\r\n ...item,\r\n quantity: item.colli\r\n }\r\n })\r\n\r\n if (response.data.pageNumber > 1) {\r\n setSearchCollection({\r\n ...response.data,\r\n products: [\r\n ...searchCollection.products,\r\n ...products,\r\n ],\r\n })\r\n } else {\r\n setSearchCollection({\r\n ...response.data,\r\n products: [\r\n ...products\r\n ],\r\n pageNumber: pageNumber,\r\n })\r\n }\r\n\r\n setSelectedFacetValues(response.data.selectedFacetValues)\r\n\r\n setIsInitialized(true)\r\n updateUrl(response.data)\r\n\r\n if (scrollTo !== 0) {\r\n document\r\n .querySelector('#product-scroller')\r\n .parentNode.scrollTo(0, scrollTo)\r\n }\r\n } else {\r\n console.log('warning', response.statusText)\r\n }\r\n })\r\n .catch((e) => {\r\n console.log('warning', e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n // Other:\r\n\r\n function getSelecteFacetValuesCount() {\r\n let count = 0\r\n Object.values(selectedFacetValues).forEach(\r\n (facet) => (count += facet.length),\r\n )\r\n\r\n if (query != \"\") {\r\n count++;\r\n }\r\n\r\n return count\r\n }\r\n\r\n function getProductById(itemId) {\r\n setIsLoading(true)\r\n return core.dataStore\r\n .getProductById(accountNo, itemId, language, core.user.userId)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n return res.data\r\n } else {\r\n return null\r\n }\r\n })\r\n .catch((e) => {})\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function getReturnProductById(itemId) {\r\n setIsLoading(true)\r\n return core.dataStore\r\n .getReturnProductById(accountNo, itemId, language)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n return res.data\r\n } else {\r\n return null\r\n }\r\n })\r\n .catch((e) => {})\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function getProductsByIds(ids) {\r\n return core.dataStore\r\n .searchProducts({ ...getSearchOptions(), SearchOnlyInTheseProducts: ids })\r\n .then((res) => {\r\n return res\r\n })\r\n }\r\n\r\n // Internal helpers:\r\n\r\n function getSearchOptions() {\r\n return {\r\n userId: core.user.userId,\r\n customerId: accountNo,\r\n selectedFacetValues: {\r\n brand: [],\r\n mainColor: [],\r\n subCategory: [],\r\n category: [],\r\n news: [],\r\n },\r\n languageCode: language,\r\n pageSize: pageSize,\r\n pageNumber: 1,\r\n query,\r\n sortByField,\r\n descendingSortOrder: false,\r\n campaignId: isFairApp ? campaign.campaignId : undefined,\r\n onlyCampaign,\r\n onlyArchive,\r\n initColi: true\r\n }\r\n }\r\n\r\n function addIfNotExistsRemoveIfItDoes(array, value) {\r\n if (!value.length) {\r\n return []\r\n }\r\n\r\n return array.indexOf(value) === -1\r\n ? [...array, value]\r\n : array.filter((i) => i !== value)\r\n }\r\n\r\n function updateUrl(sfv) {\r\n var urlParams = new URLSearchParams()\r\n\r\n Object.entries(sfv.selectedFacetValues).forEach((entry) => {\r\n let key = entry[0]\r\n let arr = entry[1]\r\n if (arr.length > 0) {\r\n urlParams.append(key, arr)\r\n }\r\n })\r\n\r\n if (sfv.query !== '') {\r\n urlParams.append('query', sfv.query)\r\n }\r\n\r\n urlParams.sort()\r\n\r\n var searchQuery = '?' + urlParams.toString()\r\n if (searchQuery !== '?') {\r\n history.replace({\r\n pathname: location.pathname,\r\n search: searchQuery,\r\n state: { isActive: true },\r\n })\r\n } else {\r\n history.replace({\r\n pathname: location.pathname,\r\n search: '',\r\n state: { isActive: true },\r\n })\r\n }\r\n }\r\n\r\n function getAllFacetValues() {\r\n core.dataStore\r\n .getAllFacetValues({\r\n customerId: accountNo,\r\n languageCode: language,\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setAllFacets(res.data)\r\n }\r\n })\r\n .catch(console.log)\r\n }\r\n\r\n function getSelectedFacetValuesFromURL() {\r\n let params = {}\r\n let searchParams = new URLSearchParams(window.location.search)\r\n searchParams.forEach((value, key) => {\r\n key = decodeURI(key)\r\n if (urlParamsAccept.indexOf(key) !== -1) {\r\n value = decodeURI(value)\r\n params[key] = value.split(',')\r\n }\r\n })\r\n return params\r\n }\r\n\r\n const gotoProduct = () => {\r\n if (location.pathname == '/sales/products') {\r\n var page = searchCollection.pageNumber\r\n var urlParams = new URLSearchParams(location.search)\r\n var scrollerPosition =\r\n document.querySelector('#product-scroller').parentNode.scrollTop\r\n console.log(scrollerPosition)\r\n\r\n urlParams.append('page', page)\r\n urlParams.append('scrollTo', scrollerPosition)\r\n\r\n urlParams.sort()\r\n\r\n var searchQuery = '?' + urlParams.toString()\r\n }\r\n\r\n history.replace({\r\n pathname: location.pathname,\r\n search: searchQuery,\r\n state: { isActive: true },\r\n })\r\n }\r\n\r\n return {\r\n setQuery,\r\n init,\r\n getCampaigns,\r\n isLoading,\r\n isInitialized,\r\n searchCollection,\r\n selectedFacetValues,\r\n query,\r\n sortByField,\r\n toggleFacetValue,\r\n handleSearchQueryChange,\r\n getSelecteFacetValuesCount,\r\n handleSortByChange,\r\n increment,\r\n searchExcel,\r\n hasMore,\r\n reset,\r\n getProductById,\r\n getProductsByIds,\r\n getReturnProductById,\r\n listViewMode,\r\n setListViewMode,\r\n allFacets,\r\n campaign,\r\n setCampaign,\r\n campaigns,\r\n setCampaigns,\r\n clearProducts,\r\n onlyCampaign,\r\n onlyArchive,\r\n gotoProduct,\r\n setCampaignOrArchive,\r\n }\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useProductsModel } from '../pages/Products/ProductsModel'\r\n\r\nexport const ProductsContext = createContext(null)\r\n\r\nexport default function ProductsProvider({ children }) {\r\n const products = useProductsModel()\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport InfiniteScroll from 'react-infinite-scroller'\r\n\r\nexport default function ContentScroller(props) {\r\n const { content, onLoad, hasMore, pageStart = 0, ...rest } = props\r\n\r\n return (\r\n \r\n {content}\r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { ProductsContext } from '../../apps/sales-web-app/context/ProductsContext'\r\nimport { LinearProgress, makeStyles } from '@material-ui/core'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport List from '@material-ui/core/List'\r\nimport ListItem from '@material-ui/core/ListItem'\r\nimport ListItemText from '@material-ui/core/ListItemText'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from './TranslationLabel'\r\nimport { CustomerQuantityEnum } from '../../shared/Enums/CustomersEnum'\r\nimport ContentScroller from '../../apps/sales-web-app/components/ContentScroller'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n height: '100%',\r\n },\r\n container: {\r\n //height: '100%'\r\n },\r\n list: {\r\n height: 253, //Static height for dashboard. This could be dynamic if the component should be used in other places\r\n overflowY: 'scroll',\r\n },\r\n button: {\r\n display: 'inline-block',\r\n float: 'right',\r\n marginRight: '10px',\r\n marginTop: '10px',\r\n [theme.breakpoints.down('sm')]: {\r\n width: '40%',\r\n },\r\n },\r\n listItem: {\r\n paddingTop: '3px',\r\n paddingBottom: '3px',\r\n },\r\n customer0: {\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: '#d4ffd9',\r\n },\r\n 'backgroundColor': '#f0fff2',\r\n },\r\n customer1: {\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: '#b1f0fc',\r\n },\r\n 'backgroundColor': '#d4f8ff',\r\n },\r\n customer2: {\r\n '&:hover': {\r\n cursor: 'pointer',\r\n backgroundColor: '#f6e8fc',\r\n },\r\n 'backgroundColor': '#fcf5ff',\r\n },\r\n mobileInput: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: '50%',\r\n },\r\n },\r\n}))\r\n\r\nexport default function CustomerSelection(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const productsModel = useContext(ProductsContext)\r\n const [src, setSrc] = useState('')\r\n const [customers, setCustomers] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [pageNumber, setPageNumber] = useState(0)\r\n const [hasMore, setHasMore] = useState(false)\r\n const [contentScroll, setContentScroll] = useState(false)\r\n const resultsPerPage = 30\r\n\r\n const { TWO } = CustomerQuantityEnum\r\n\r\n //if component is used as a modal, then set a fixed width on the container\r\n const { handleClose, isModal } = props\r\n\r\n function handleSearch(e) {\r\n setContentScroll(false)\r\n const src = e.target.value\r\n setSrc(src)\r\n setLoading(true)\r\n\r\n const {\r\n salesPersonAgentInitials,\r\n employeePurchaseAccount,\r\n samplesPurchaseAccount,\r\n } = core.user.userSetting\r\n core.dataStore\r\n .getUserCustomersBySearch(\r\n salesPersonAgentInitials,\r\n employeePurchaseAccount,\r\n samplesPurchaseAccount,\r\n src,\r\n resultsPerPage,\r\n )\r\n .then((res) => {\r\n setCustomers(res?.data)\r\n setLoading(false)\r\n })\r\n .catch(() => {})\r\n }\r\n\r\n function showAllCustomers() {\r\n //if !contentScroll it means there might be search results in customers from a previous search\r\n //dont append them to the all customers call\r\n const appendResults = contentScroll\r\n if (loading) {\r\n return\r\n }\r\n setLoading(true)\r\n setSrc('')\r\n setContentScroll(true)\r\n const {\r\n salesPersonAgentInitials,\r\n employeePurchaseAccount,\r\n samplesPurchaseAccount,\r\n } = core.user.userSetting\r\n core.dataStore\r\n .getUserCustomers(\r\n salesPersonAgentInitials,\r\n employeePurchaseAccount,\r\n samplesPurchaseAccount,\r\n pageNumber + 1,\r\n resultsPerPage,\r\n )\r\n .then((res) => {\r\n if (appendResults) {\r\n setCustomers([...customers, ...res.data?.customers])\r\n } else {\r\n setCustomers(res.data?.customers)\r\n }\r\n setPageNumber(res.data?.pageNumber)\r\n setHasMore(!res.data?.isLastPage)\r\n setLoading(false)\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n }\r\n\r\n function handleClick(value) {\r\n if (productsModel) {\r\n productsModel.clearProducts()\r\n }\r\n core.user.setCustomer(value)\r\n handleClose && handleClose()\r\n }\r\n\r\n useEffect(() => {\r\n const { hasMultipleAccounts } = core.user\r\n if (hasMultipleAccounts == TWO) {\r\n showAllCustomers()\r\n }\r\n }, [src, core.user.hasMultipleAccounts])\r\n\r\n useEffect(() => {\r\n //autoFocus doesn't work in the modal, so this accomplishes autoFocus for the input\r\n if (isModal) {\r\n //avoid using the same id as the customerSearch on the dashboard\r\n const input = document.getElementById(String(isModal))\r\n if (input) {\r\n input.focus()\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 variant='standard'\r\n onChange={handleSearch}\r\n className={classes.mobileInput}\r\n value={src}\r\n InputProps={{\r\n id: String(isModal),\r\n }}\r\n />\r\n {core.user.hasMultipleAccounts != TWO && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n {contentScroll ? (\r\n \r\n {customers.map((item, index) => (\r\n handleClick(item)}\r\n className={\r\n classes[`customer${item.accountType}`] +\r\n ' ' +\r\n classes.listItem\r\n }>\r\n \r\n \r\n ))}\r\n \r\n }>\r\n ) : (\r\n \r\n {customers.map((item, index) => (\r\n handleClick(item)}\r\n className={\r\n classes[`customer${item.accountType}`] +\r\n ' ' +\r\n classes.listItem\r\n }>\r\n \r\n \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, { useContext, useState, useEffect } from 'react'\r\nimport {\r\n makeStyles,\r\n Switch,\r\n FormControlLabel,\r\n Modal,\r\n TextField,\r\n Dialog,\r\n} from '@material-ui/core'\r\nimport Avatar from '@material-ui/core/Avatar'\r\nimport Popover from '@material-ui/core/Popover'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Settings from '@material-ui/icons/Settings'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport TranslationLabel from './TranslationLabel'\r\nimport Button from '@material-ui/core/Button'\r\nimport SwitchIcon from '@material-ui/icons/SupervisedUserCircle'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport ExitIcon from '@material-ui/icons/ExitToApp'\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline'\r\nimport { DashboardDialogView } from '../../apps/sales-web-app/components/DashboardWidgetContainer'\r\nimport CustomerSelection from './CustomerSelection'\r\nimport Select from '@material-ui/core/Select'\r\nimport OutlinedInput from '@material-ui/core/OutlinedInput'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport FormControl from '@material-ui/core/FormControl'\r\nimport OutlinedInputField from '../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport ValidateEmail from '../../shared/EmailValidation'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n popperBg: {\r\n borderRadius: '8px',\r\n border: '1px solid #ccc',\r\n boxShadow: '0 2px 10px rgba(0,0,0,.2)',\r\n },\r\n rowPadded: {\r\n padding: 15,\r\n },\r\n row: {\r\n width: '100%',\r\n textAlign: 'center',\r\n alignItems: 'center',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n largeAvatar: {\r\n width: theme.spacing(7),\r\n height: theme.spacing(7),\r\n },\r\n containerRoot: {\r\n minWidth: '250px',\r\n },\r\n borderTop: {\r\n borderTop: '1px solid #e8eaed',\r\n },\r\n button: {\r\n margin: 0,\r\n padding: '15px',\r\n },\r\n labelOpenerWrapper: {\r\n width: 350,\r\n height: 200,\r\n textAlign: 'center',\r\n zIndex: 10,\r\n backgroundColor: 'white',\r\n position: 'absolute',\r\n left: '50vw',\r\n top: '50vh',\r\n transform: 'translateY(-50%)',\r\n padding: 20,\r\n },\r\n}))\r\n\r\nexport default function UserBadge() {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const [anchorEl, setAnchorEl] = React.useState(null)\r\n const [labelOpenerOpen, setLabelOpenerOpen] = useState(false)\r\n const [labelEditorOpen, setLabelEditorOpen] = useState(false)\r\n const [labelValue, setLabelValue] = useState('')\r\n const [newsletterUserMenuOpen, setNewsletterUserMenuOpen] = useState(false)\r\n let avatarInitials = core.user.displayName.substring(1, 0)\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget)\r\n }\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null)\r\n }\r\n\r\n const [openSwitchCustomer, setOpenSwitchCustomer] = useState(false)\r\n const handleClickOpenSwitchCustomer = () => {\r\n setOpenSwitchCustomer(true)\r\n }\r\n const handleCloseSwitchCustomer = () => {\r\n setOpenSwitchCustomer(false)\r\n }\r\n\r\n const openLabel = (e) => {\r\n console.log('open label')\r\n e.preventDefault()\r\n setLabelOpenerOpen(false)\r\n setLabelEditorOpen(true)\r\n }\r\n\r\n const open = Boolean(anchorEl)\r\n const id = open ? 'simple-popover' : undefined\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 {avatarInitials}\r\n \r\n \r\n \r\n \r\n {core.user.displayName}\r\n \r\n \r\n \r\n \r\n {core.user.account}\r\n \r\n \r\n \r\n \r\n \r\n {core.user.selectedCustomer.accountNo}\r\n {' - '}\r\n {core.user.selectedCustomer.accountName}\r\n \r\n {core.user.hasMultipleAccounts ? (\r\n \r\n }\r\n onClick={handleClickOpenSwitchCustomer}\r\n fullWidth>\r\n \r\n \r\n\r\n {\r\n handleCloseSwitchCustomer()\r\n }}\r\n content={\r\n {\r\n handleClose()\r\n handleCloseSwitchCustomer()\r\n }}\r\n useConfirmationDialogue={false}\r\n />\r\n }\r\n hideTitle\r\n />\r\n \r\n ) : null}\r\n \r\n }\r\n onClick={() => core.history.push('/hub/settings')}\r\n fullWidth>\r\n \r\n \r\n \r\n {core.user.userSetting.canCreateNewsLetterUser && (\r\n \r\n }\r\n onClick={() =>\r\n setNewsletterUserMenuOpen(!newsletterUserMenuOpen)\r\n }\r\n fullWidth>\r\n \r\n \r\n \r\n )}\r\n setNewsletterUserMenuOpen(false)}>\r\n setNewsletterUserMenuOpen(false)}\r\n />\r\n \r\n {core.user.userSetting.languageManagement && (\r\n \r\n
\r\n {core.dictionary.isEditMode && (\r\n <>\r\n setLabelOpenerOpen(true)}\r\n variant='outlined'>\r\n Open a label\r\n \r\n \r\n core.setShowLabelNames(!core.showLabelNames)\r\n }\r\n variant='outlined'>\r\n Show label names\r\n \r\n \r\n )}\r\n {\r\n core.dictionary.useSetIsEditMode(\r\n !core.dictionary.isEditMode,\r\n )\r\n }}\r\n />\r\n }\r\n label={}\r\n />\r\n
\r\n \r\n )}\r\n setLabelOpenerOpen(false)}>\r\n
\r\n Label name\r\n
\r\n setLabelValue(e.target.value)}\r\n variant='outlined'\r\n />\r\n \r\n Open label\r\n \r\n \r\n
\r\n \r\n {labelEditorOpen && (\r\n {\r\n setLabelEditorOpen(false)\r\n }}\r\n open={true}\r\n />\r\n )}\r\n \r\n }\r\n onClick={() => core.logout()}\r\n fullWidth>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nconst NewsLetterUserMenu = ({ onClose }) => {\r\n const core = useContext(CoreContext)\r\n\r\n const [highlight, setHighlight] = useState(false)\r\n const [email, setEmail] = useState('')\r\n const [name, setName] = useState('')\r\n const [language, setLanguage] = useState(core.user.userSetting.languageId)\r\n const [created, setCreated] = useState(false)\r\n const [loading, setLoading] = useState(false)\r\n const displayWarning = (x) => (x === undefined || x.length < 3 || !emailValidated) && highlight ? true : false\r\n var emailValidated = false\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n setEmail(e.target.value)}\r\n fullWidth\r\n error={displayWarning(email)}\r\n style={{ width: '100%', display: 'block', marginBottom: '12px' }}\r\n variant='outlined'\r\n label='email'\r\n />\r\n setName(e.target.value)}\r\n fullWidth\r\n error={displayWarning(name)}\r\n style={{ width: '100%', display: 'block', marginBottom: '12px' }}\r\n variant='outlined'\r\n label='navn'\r\n />\r\n \r\n {!created ? (\r\n {\r\n if (ValidateEmail(email)) {\r\n setLoading(true)\r\n emailValidated = true\r\n setHighlight(false)\r\n\r\n core.hubStore\r\n .createNewsletterUser({\r\n displayName: name,\r\n email,\r\n language,\r\n selectedCustomerAccount: core.user.selectedCustomer.accountNo,\r\n selectedCustomerName: core.user.selectedCustomer.accountName,\r\n sendEmail: true,\r\n salesPerson: core.user.displayName,\r\n })\r\n .then((res) => {\r\n setCreated(true)\r\n })\r\n } else {\r\n emailValidated = false\r\n setHighlight(true)\r\n }\r\n }}>\r\n Opret\r\n \r\n ) : (\r\n <>\r\n
\r\n \r\n \r\n \r\n
\r\n {\r\n onClose()\r\n }}>\r\n Ok\r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nfunction LanguageSelection({ language, setLanguage }) {\r\n const core = useContext(CoreContext)\r\n const [languages, setLanguages] = useState([])\r\n\r\n function loadLanguages() {\r\n core.dataStore\r\n .getLanguages()\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setLanguages(x.data)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {})\r\n }\r\n\r\n useEffect(() => {\r\n loadLanguages()\r\n }, [])\r\n\r\n const selectLanguage = (e) => {\r\n const index = e.target.value\r\n setLanguage(languages[index].id)\r\n }\r\n\r\n const selectedLanguage = languages.find((el) => el.id === language)?.title\r\n\r\n return selectedLanguage ? (\r\n \r\n el.id === language)}\r\n onChange={selectLanguage}\r\n input={\r\n \r\n }>\r\n {languages.map((v, i) => (\r\n \r\n {v.title}\r\n \r\n ))}\r\n \r\n \r\n ) : null\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport classNames from 'classnames'\r\nimport AppBar from '@material-ui/core/AppBar'\r\nimport Toolbar from '@material-ui/core/Toolbar'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport MenuIcon from '@material-ui/icons/Menu'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery/useMediaQuery'\r\nimport HomeIcon from '@material-ui/icons/Home'\r\nimport { useHistory } from 'react-router-dom'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nimport { CoreContext } from '../../context/CoreContext'\r\nimport GlobalAppNavigationButton from '../GlobalAppNavigationButton'\r\nimport UserBadge from '../UserBadge'\r\n\r\nconst drawerWidth = 240\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n boxShadow: 'none',\r\n },\r\n toolbar: {\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create(['width', 'margin'], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n backgroundColor: theme.palette.appBar.background,\r\n color: theme.palette.appBar.color,\r\n boxShadow: 'none',\r\n },\r\n appBarShift: {\r\n marginLeft: drawerWidth,\r\n width: `calc(100% - ${drawerWidth}px)`,\r\n transition: theme.transitions.create(['width', 'margin'], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n sectionDesktop: {\r\n display: 'flex',\r\n },\r\n menuButton: {\r\n marginLeft: 0,\r\n marginRight: 10,\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n marginRight: 30,\r\n },\r\n },\r\n title: {\r\n display: 'none',\r\n verticalAlign: 'middle',\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'inline-block',\r\n },\r\n },\r\n blocked: {\r\n verticalAlign: 'middle',\r\n color: 'red',\r\n display: 'inline-block',\r\n marginLeft: 5,\r\n },\r\n env: {\r\n paddingLeft: 5,\r\n fontSize: 20,\r\n fontWeight: 600,\r\n color: 'red',\r\n width: 'fit-content',\r\n },\r\n}))\r\n\r\nfunction Topbar(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n const history = useHistory()\r\n\r\n const customerInfo = `${core.user.selectedCustomer.accountNo} - ${core.user.selectedCustomer.accountName} (${core.user.selectedCustomer.currency})`\r\n const customerHeadline = core.user.selectedCustomer.accountNo ? (\r\n customerInfo\r\n ) : (\r\n \r\n )\r\n\r\n const environments = {\r\n dev: 'Development',\r\n test: 'Test',\r\n prod: '',\r\n staging: 'Staging',\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {!core.isExpanded && (\r\n core.expandDrawer(!core.isExpanded)}>\r\n \r\n \r\n )}\r\n
\r\n {environments[process.env.REACT_APP_API]}\r\n
\r\n
\r\n \r\n {customerHeadline}\r\n \r\n {core.user.selectedCustomer.blocked && (\r\n \r\n \r\n \r\n )}\r\n
\r\n\r\n
\r\n
\r\n {/* Other - basket etc. */}\r\n {props.children}\r\n\r\n {/* App list */}\r\n {core.getUserApps().length > 2 && }\r\n
\r\n\r\n {/* Profile menu */}\r\n \r\n \r\n history.push('/' + window.location.pathname.split('/')[1])\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default Topbar\r\n","import React from 'react'\r\n\r\nimport Default from '@material-ui/icons/Warning'\r\nimport Exit from '@material-ui/icons/ExitToApp'\r\nimport Search from '@material-ui/icons/Search'\r\nimport Dashboard from '@material-ui/icons/Dashboard'\r\nimport Admin from '@material-ui/icons/SupervisedUserCircle'\r\nimport Basket from '@material-ui/icons/ShoppingBasket'\r\nimport User from '@material-ui/icons/AccountCircle'\r\nimport Switch from '@material-ui/icons/SwitchCamera'\r\nimport Gallery from '@material-ui/icons/PhotoAlbum'\r\nimport Graph from '@material-ui/icons/GraphicEqOutlined'\r\nimport Home from '@material-ui/icons/Home'\r\nimport Product from '@material-ui/icons/Shop'\r\nimport Invoice from '@material-ui/icons/Wallpaper'\r\nimport Settings from '@material-ui/icons/Settings'\r\nimport Highlight from '@material-ui/icons/Highlight'\r\nimport QuickEntry from '@material-ui/icons/Dialpad'\r\nimport Orders from '@material-ui/icons/AssignmentLate'\r\nimport Invoices from '@material-ui/icons/AssignmentTurnedIn'\r\nimport Statistics from '@material-ui/icons/BarChart'\r\nimport Help from '@material-ui/icons/Help'\r\nimport Customers from '@material-ui/icons/People'\r\nimport Translate from '@material-ui/icons/Translate'\r\nimport Hub from '@material-ui/icons/Apps'\r\nimport RemoveShoppingCart from '@material-ui/icons/RemoveShoppingCart'\r\nimport AnnouncementIcon from '@material-ui/icons/Announcement'\r\nimport PlayCircleOutlineIcon from '@material-ui/icons/PlayCircleOutline'\r\nimport ShoppingBasketIcon from '@material-ui/icons/ShoppingBasket'\r\n\r\nconst getIcon = (name) => {\r\n if (name) {\r\n const icon = name.toLowerCase()\r\n switch (icon) {\r\n case 'feedback':\r\n return \r\n case 'exit':\r\n return \r\n case 'dashboardpage':\r\n return \r\n case 'admin':\r\n return \r\n case 'basket':\r\n return \r\n case 'homepage':\r\n return \r\n case 'products':\r\n return \r\n case 'invoice':\r\n return \r\n case 'graph':\r\n return \r\n case 'gallery':\r\n return \r\n case 'switch':\r\n return \r\n case 'search':\r\n return \r\n case 'user':\r\n return \r\n case 'settings':\r\n return \r\n case 'quickentry':\r\n return \r\n case 'orders':\r\n return \r\n case 'invoices':\r\n return \r\n case 'statistics':\r\n return \r\n case 'help':\r\n return \r\n case 'customers':\r\n return \r\n case 'translate':\r\n return \r\n case 'hub':\r\n return \r\n case 'returnservice':\r\n return \r\n case 'productsearch':\r\n return \r\n case 'videopage':\r\n return \r\n case 'basketoverview':\r\n return \r\n default:\r\n return \r\n }\r\n }\r\n}\r\n\r\nexport default { getIcon: getIcon }\r\n","import React from 'react'\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon/ListItemIcon'\r\nimport ListItemText from '@material-ui/core/ListItemText/ListItemText'\r\nimport ListItem from '@material-ui/core/ListItem/ListItem'\r\nimport IconFinder from '../../../apps/sales-web-app/libraries/IconFinder'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icon: {\r\n minWidth: 45,\r\n marginLeft: 7,\r\n },\r\n}))\r\n\r\nexport default function NavItem(props) {\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n \r\n {IconFinder.getIcon(props.id)}\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\n\r\nimport classNames from 'classnames'\r\nimport Drawer from '@material-ui/core/Drawer'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery'\r\nimport { CoreContext } from '../../context/CoreContext'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\n\r\nexport default function HubDrawer(props) {\r\n const { drawerWidth = 240, marginTop = 64, closedWidth = 70 } = props\r\n let dWidth = drawerWidth\r\n let drawerMargin = marginTop\r\n let drawerWidthClosed = closedWidth\r\n const useStyles = makeStyles((theme) => ({\r\n drawer: {\r\n width: drawerWidthClosed,\r\n flexShrink: 0,\r\n whiteSpace: 'nowrap',\r\n },\r\n drawerPaper: {\r\n width: drawerWidthClosed,\r\n },\r\n drawerOpen: {\r\n width: dWidth,\r\n marginTop: drawerMargin,\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: 'hidden',\r\n width: drawerWidthClosed,\r\n marginTop: drawerMargin,\r\n },\r\n }))\r\n\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n\r\n if (!matches) {\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { fade } from '@material-ui/core/styles/colorManipulator'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport List from '@material-ui/core/List'\r\nimport Divider from '@material-ui/core/Divider'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft'\r\nimport logo from '../../../assets/images/RDGLogo.jpg'\r\n\r\nimport NavItem from './NavItem'\r\nimport TranslationLabel from '../TranslationLabel'\r\nimport { CoreContext } from '../../context/CoreContext'\r\nimport HubDrawer from './HubDrawer'\r\n\r\nconst drawerWidth = 240\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n boxShadow: 'none',\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n MuiToolbar: {\r\n padding: 0,\r\n },\r\n menuButton: {\r\n marginLeft: 0,\r\n marginRight: 36,\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n drawer: {\r\n width: drawerWidth,\r\n flexShrink: 0,\r\n whiteSpace: 'nowrap',\r\n },\r\n drawerPaper: {\r\n width: drawerWidth,\r\n },\r\n drawerOpen: {\r\n width: drawerWidth,\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n drawerClose: {\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: 'hidden',\r\n width: theme.spacing(7) + 1,\r\n [theme.breakpoints.up('sm')]: {\r\n width: theme.spacing(9) + 1,\r\n },\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 0px',\r\n ...theme.mixins.toolbar,\r\n },\r\n search: {\r\n 'position': 'relative',\r\n 'borderRadius': theme.shape.borderRadius,\r\n 'backgroundColor': fade(theme.palette.common.white, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.common.white, 0.25),\r\n },\r\n 'marginRight': theme.spacing(2),\r\n 'marginLeft': 0,\r\n 'width': '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(3),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing(9),\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(1),\r\n paddingRight: theme.spacing(1),\r\n paddingBottom: theme.spacing(1),\r\n paddingLeft: theme.spacing(10),\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('md')]: {\r\n width: 200,\r\n },\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(3),\r\n },\r\n closeIcon: {\r\n marginLeft: 120,\r\n },\r\n logo: {\r\n display: 'inline-block',\r\n width: 34,\r\n height: 30,\r\n float: 'left',\r\n marginLeft: 10,\r\n cursor: 'pointer',\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n width: 46,\r\n height: 40,\r\n marginLeft: 20,\r\n },\r\n },\r\n}))\r\n\r\nexport default function NavigationDrawer(props) {\r\n const classes = useStyles()\r\n const { upperItems } = props\r\n const core = useContext(CoreContext)\r\n const handleAction = (path) => core.history.location.pathname === path ? null : navigate(path)\r\n\r\n function navigate(path) {\r\n core.history.push(path)\r\n }\r\n\r\n return (\r\n \r\n
\r\n core.history.push('/hub')}\r\n src={logo}\r\n className={classes.logo}\r\n alt='Rosendahl Design Group'\r\n />\r\n core.expandDrawer(!core.isExpanded)}>\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n {upperItems.map((i) => (\r\n }\r\n key={i.index}\r\n path={i.route.path}\r\n id={i.id}\r\n action={() => handleAction(i.route.path)}\r\n selected={core.history.location.pathname === i.path}\r\n />\r\n ))}\r\n \r\n \r\n )\r\n}\r\n","import React, { useContext, useState, useEffect } from 'react'\r\nimport { Route } from 'react-router-dom'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery'\r\nimport classNames from 'classnames'\r\n\r\nimport { ComponentRoute } from '../components/ProtectedRoutes'\r\nimport AdminPage2 from './AdminPage'\r\nimport Feedback from './Feedback'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport HubPortal from '../../apps/hub-portal/HubPortal'\r\nimport HubHelpPage from './../components/HelpPage'\r\n\r\nimport GetAdminNav from '../admin/adminNav'\r\nimport UserSettingsPage from './UserSettingsPage'\r\nimport Topbar from '../components/navigation/Topbar'\r\nimport NavigationDrawer from '../components/navigation/NavigationDrawer'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(2),\r\n height: '100%',\r\n backgroundColor: 'white',\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 240,\r\n },\r\n contentStatic: {\r\n marginLeft: 70,\r\n },\r\n}))\r\n\r\nexport default function HubDashboard(props) {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\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","import React, { useContext, useEffect, useState } from 'react'\nimport { CoreContext } from '../context/CoreContext'\nimport TranslationLabel from '../components/TranslationLabel'\n\nconst emptyBasketState = {\n entries: [],\n amount: 0,\n id: 0,\n totalAmount: 0,\n vatAmount: 0,\n};\n\nexport function useBasketModel(basketId) {\n const [isLoading, setIsLoading] = useState(false)\n const [basket, setBasket] = useState(emptyBasketState)\n\n const core = useContext(CoreContext)\n const isConfirmationPage = window.location.href.split('/')[window.location.href.split('/').length - 1] === 'confirmation'\n const basketType = basketId;\n\n const differentCampaignsErrorModal = (attemptedCampaign, basketCampaign) => {\n return {\n headline: ,\n message: (\n <>\n \n
\n \n {' '}\n {attemptedCampaign}\n \n
\n \n {' '}\n {basketCampaign}\n \n \n ),\n }\n }\n\n const multiAdd = (entries, callback) => {\n setIsLoading(true)\n\n const basketEntries = entries.map(item => {\n return {\n itemId: item.productNo,\n quantity: parseInt(item.qty),\n userId: core.user.userId,\n customerNo: core.user.selectedCustomer.accountNo,\n requestedShippingDate: item.requestedShippingDate || null,\n tradeFairCampaignId: item.campaignId,\n basketType: basketId\n }\n })\n\n core.dataStore\n .addMultipleEntries(basketEntries)\n .then((res) => {\n if (callback) callback(res.data)\n load()\n })\n .catch((res) => {\n core.setModal(\n differentCampaignsErrorModal(\n entries[0]?.campaignId,\n basket.tradeFairCampaignId,\n ),\n )\n })\n .finally(() => setIsLoading(false))\n }\n\n const add = (item, callback) => {\n const itemAlreadyExists = basket.entries.find((x) => x.productNo === item.itemId)\n\n if (!itemAlreadyExists) {\n setIsLoading(true)\n\n core.dataStore\n .addBasketEntry(\n item.itemId,\n parseInt(item.qty),\n core.user.userId,\n core.user.selectedCustomer.accountNo,\n item.campaignId,\n basketId,\n item.requestedShippingDate,\n )\n .then((res) => {\n if (callback) callback(res.data)\n load()\n })\n .catch((res) => {\n core.setModal(\n differentCampaignsErrorModal(item.campaignId, basket.tradeFairCampaignId),\n )\n })\n .finally(() => setIsLoading(false))\n } else {\n updateEntry(itemAlreadyExists.basketEntryId, itemAlreadyExists.quantity + item.qty, callback)\n }\n }\n\n const update = (changesObj, callback) => {\n setIsLoading(true)\n\n core.dataStore\n .updateBasketEntry(\n changesObj,\n core.user.userId,\n core.user.selectedCustomer.accountNo,\n isConfirmationPage,\n basketId\n )\n .then((res) => {\n if (callback) callback(res.data)\n load();\n })\n .catch((error) => core.snackbar('warning', error.toString()))\n .finally(() => setIsLoading(false))\n }\n\n const updateEntry = (changesObj, callback) => changesObj.quantity < 1\n ? remove(changesObj.basketEntryId, callback)\n : update(changesObj, callback)\n\n const remove = (basketEntryId, callback) => {\n setIsLoading(true)\n\n core.dataStore\n .removeBasketEntry(basketEntryId)\n .then((res) => {\n if (callback) callback(res.data)\n load()\n })\n .catch((error) => core.snackbar('warning', error.toString()))\n .finally(() => setIsLoading(false))\n }\n\n const deleteBasket = (basketId) => {\n setIsLoading(true)\n\n core.dataStore\n .deleteBasket(basketId)\n .then(() => load())\n .catch((res) => core.snackbar('warning', res && res.statusText))\n .finally(setIsLoading(false))\n }\n\n function load(includeMarkup) {\n if (!core.user.selectedCustomer.accountNo) {\n return\n }\n\n setIsLoading(true)\n\n core.dataStore\n .getBasket(\n core.user.selectedCustomer.accountNo,\n core.user.userId,\n basketId,\n !!includeMarkup\n )\n .then((res) => setBasket(res.data))\n .catch((res) => core.snackbar('warning', res.statusText))\n .finally(() => setIsLoading(false))\n }\n\n const submit = (orderDetails, callback) => {\n orderDetails.tradeFairCampaignId = basket.tradeFairCampaignId\n console.log(orderDetails)\n core.dataStore\n .archiveBasket({\n userId: core.user.userId,\n customerNo: core.user.selectedCustomer.accountNo,\n basketId: basket.id\n })\n .then((x) => {\n localStorage.setItem('lastOrderId', x.data.salesId)\n submitOrderToAxapta({\n ...orderDetails,\n campaignId:\n x.data.campaignId\n }, x.data, callback)\n })\n .catch((error) => core.snackbar('warning', error.toString()))\n .finally(() => setIsLoading(false))\n }\n\n const submitOrderToAxapta = (orderDetails, salesDto, callback) => {\n setIsLoading(true)\n\n const orderLines = basket.entries.map((product) => ({\n productNo: product.itemId,\n quantity: product.quantity,\n requestedShippingDate: product.requestedShippingDate,\n }))\n\n const orderHeaderDto = {\n ...orderDetails,\n ...{\n salesId: salesDto.salesId,\n salesTaker: core.user.userId,\n customerNo: core.user.selectedCustomer.accountNo,\n orderLines: orderLines,\n },\n }\n\n core.dataStore\n .createOrder(orderHeaderDto)\n .then((x) => {\n if (x.data.status) {\n setBasket({ entries: [] })\n if (callback) callback()\n load()\n } else {\n core.snackbar('error', 'The B2B service did not return an order number')\n }\n })\n .catch((error) => core.snackbar('warning', error.toString()))\n .finally(() => setIsLoading(false))\n }\n\n const getCount = () => basket.entries.length\n\n useEffect(() => load(), [core.user.selectedCustomer.accountNo])\n\n return {\n isLoading,\n count: getCount(),\n basket,\n add,\n multiAdd,\n updateEntry,\n remove,\n submit,\n deleteBasket,\n load,\n basketType\n }\n}\n","import React, { createContext } from 'react'\r\nimport { useBasketModel } from '../settings/BasketModel'\r\n\r\nexport const BasketContext = createContext(null)\r\n\r\nexport default function BasketProvider(props) {\r\n const basket = useBasketModel(props.basketId)\r\n console.log(props.basketId)\r\n\r\n return (\r\n {props.children}\r\n )\r\n}\r\n","export default function FindNextShippingDate(date) {\r\n let daysToAdd = 1 //by default return tomorrow\r\n if (date.getDay() === 5) {\r\n //fri\r\n daysToAdd += 2\r\n } else if (date.getDay() === 6) {\r\n //sat\r\n daysToAdd++\r\n }\r\n date.setDate(date.getDate() + daysToAdd)\r\n return date\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useCheckoutModel } from '../pages/Basket/CheckoutModel'\r\n\r\nexport const CheckoutContext = createContext(null)\r\n\r\nexport default function CheckoutProvider({ children }) {\r\n const checkout = useCheckoutModel()\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import { useContext, useState } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport FindNextShippingDate from '../../libraries/FindNextShippingDate'\r\n\r\nexport function useCheckoutModel() {\r\n const defaultOrderDetails = {\r\n hasNewAddress: false,\r\n\r\n deliveryAddressId: '',\r\n deliveryName: '',\r\n deliveryStreetName1: '',\r\n deliveryStreetName2: '',\r\n deliveryZipCode: '',\r\n deliveryCity: '',\r\n deliveryCountry: '',\r\n\r\n shippingDate: FindNextShippingDate(new Date()).toJSON(),\r\n customerRef: '',\r\n requisitionNo: '',\r\n attention: '',\r\n emailForTracking: '',\r\n mobilePhoneNo: '',\r\n comment: '',\r\n }\r\n\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [orderDetailsValidated, setOrderDetailsValidated] = useState(false)\r\n const [orderDetails, setOrderDetails] = useState(defaultOrderDetails)\r\n const [addressFormLocked, setAddressFormLocked] = useState(true)\r\n\r\n const core = useContext(CoreContext)\r\n\r\n function validateOrderDetails(formData, callback) {\r\n return core.dataStore\r\n .validateOrder(formData)\r\n .then((x) => {\r\n if (x.status === 200 && x.data) {\r\n setOrderDetails(x.data)\r\n setOrderDetailsValidated(true)\r\n if (typeof callback === 'function') {\r\n callback()\r\n }\r\n }\r\n })\r\n .catch((error) => core.snackbar('warning', error.toString()))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function resetOrderDetails(params) {\r\n setOrderDetails(defaultOrderDetails)\r\n setOrderDetailsValidated(false)\r\n }\r\n\r\n return {\r\n isLoading,\r\n setIsLoading,\r\n addressFormLocked,\r\n setAddressFormLocked,\r\n orderDetails,\r\n setOrderDetails,\r\n validateOrderDetails,\r\n orderDetailsValidated,\r\n setOrderDetailsValidated,\r\n resetOrderDetails,\r\n }\r\n}\r\n","import { useContext, useEffect, useState } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\n\r\nexport function useReturnServiceModel() {\r\n const defaultOrderDetails = {\r\n hasNewAddress: false,\r\n\r\n pickupPallets: '',\r\n pickupPackages: '',\r\n\r\n pickupAddressId: '',\r\n pickupName: '',\r\n pickupStreet1: '',\r\n pickupStreet2: '',\r\n pickupZipCode: '',\r\n pickupCity: '',\r\n pickupCountry: '',\r\n\r\n pickupContactPerson: '',\r\n comment: '',\r\n }\r\n\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [basket, setBasket] = useState({ entries: [] })\r\n const [orderDetailsValidated, setOrderDetailsValidated] = useState(false)\r\n const [orderDetails, setOrderDetails] = useState(defaultOrderDetails)\r\n const [addressFormLocked, setAddressFormLocked] = useState(true)\r\n const [isInitialized, setIsInitialized] = useState(false)\r\n const [useAnotherAddress, setUseAnotherAddress] = useState(false)\r\n\r\n const core = useContext(CoreContext)\r\n\r\n function multiAdd(entries, callback) {\r\n setIsLoading(true)\r\n\r\n let basketEntries = []\r\n for (let i = 0; i < entries.length; i++) {\r\n let obj = {\r\n productNo: entries[i].productNo,\r\n quantity: entries[i].quantity,\r\n returnReasonId: entries[i].returnReasonId,\r\n userId: core.user.userId,\r\n customerNo: core.user.selectedCustomer.accountNo,\r\n }\r\n basketEntries.push(obj)\r\n }\r\n\r\n core.dataStore\r\n .addMultipleRMAEntries(basketEntries)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n callback(res.data)\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n }\r\n })\r\n .then(() => load())\r\n .catch((error) => {\r\n core.snackbar('warning', error.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function add(itemId, qty, callback) {\r\n const itemAlreadyExists = basket.entries.some(\r\n (item) => item.productNo === itemId,\r\n )\r\n\r\n if (!itemAlreadyExists) {\r\n setIsLoading(true)\r\n core.dataStore\r\n .addRMABasketEntry(\r\n itemId,\r\n qty,\r\n core.user.userId,\r\n core.user.selectedCustomer.accountNo,\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setBasket(res.data)\r\n if (callback) {\r\n callback()\r\n }\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n }\r\n })\r\n .catch((error) => {\r\n core.snackbar('warning', error.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n } else {\r\n const item = basket.entries.find((item) => item.productNo === itemId)\r\n updateEntry(item.basketEntryId, item.quantity + qty, callback)\r\n }\r\n }\r\n\r\n function updateThis(basketEntryId, entryChanges, callback) {\r\n setIsLoading(true)\r\n core.dataStore\r\n .updateRMABasketEntry(\r\n basketEntryId,\r\n entryChanges,\r\n core.user.userId,\r\n core.user.selectedCustomer.accountNo,\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setBasket(res.data)\r\n if (callback) callback()\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n }\r\n })\r\n .catch((error) => {\r\n core.snackbar('warning', error.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function updateEntry(\r\n basketEntryId,\r\n quantity,\r\n returnReasonId = null,\r\n callback,\r\n ) {\r\n if (quantity < 1) {\r\n remove(basketEntryId, callback)\r\n } else {\r\n updateThis(basketEntryId, { quantity, returnReasonId }, callback)\r\n }\r\n }\r\n\r\n function clearBasket() {\r\n setIsLoading(true)\r\n core.dataStore\r\n .deleteRMABasket(basket.id)\r\n .then((res) => {\r\n setBasket({ entries: [] })\r\n })\r\n .catch((err) => console.log(err))\r\n .finally(() => setIsLoading(false))\r\n }\r\n\r\n function remove(basketEntryId, callback) {\r\n setIsLoading(true)\r\n core.dataStore\r\n .removeRMABasketEntry(\r\n basketEntryId,\r\n core.user.selectedCustomer.accountNo,\r\n core.user.userId,\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setBasket(res.data)\r\n\r\n if (callback) {\r\n callback()\r\n }\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n }\r\n })\r\n .catch((error) => {\r\n core.snackbar('warning', error.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function load() {\r\n setIsLoading(true)\r\n if (core.user.selectedCustomer.accountNo == '') {\r\n return\r\n }\r\n core.dataStore\r\n .getRMABasket(core.user.selectedCustomer.accountNo, core.user.userId)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setBasket(res.data)\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function submit(orderDetails, callback) {\r\n core.dataStore\r\n .archiveRMABasket({\r\n userId: core.user.userId,\r\n customerNo: core.user.selectedCustomer.accountNo,\r\n pickupPallets: orderDetails.pickupPallets,\r\n pickupPackages: orderDetails.pickupPackages,\r\n })\r\n .then((x) => {\r\n if (x.status === 200) {\r\n localStorage.setItem('lastRMAOrderNoId', x.data.rmaOrderNo)\r\n submitOrderToAxapta(orderDetails, x.data.rmaOrderNo, callback)\r\n resetOrderDetails()\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n core.snackbar('warning', error.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function submitOrderToAxapta(orderDetails, rmaId, callback) {\r\n setIsLoading(true)\r\n\r\n const orderLines = basket.entries.map((item) => {\r\n const { itemId, quantity, returnReasonId } = item\r\n return {\r\n productNo: itemId,\r\n quantity,\r\n returnReasonId,\r\n }\r\n })\r\n\r\n console.log('orderLines', orderLines)\r\n\r\n const orderHeaderDto = {\r\n ...orderDetails,\r\n rmaId,\r\n salesTaker: core.user.userId,\r\n customerNo: core.user.selectedCustomer.accountNo,\r\n pickupName: core.user.selectedCustomer.accountName,\r\n RmaOrderLines: orderLines,\r\n }\r\n\r\n core.dataStore\r\n .createRMA(orderHeaderDto)\r\n .then((x) => {\r\n if (x.status === 200) {\r\n console.log(x)\r\n if (x.data.status) {\r\n //reset hook\r\n setBasket({ entries: [] })\r\n //reload basket\r\n load()\r\n if (callback) {\r\n callback(x.data.recid)\r\n }\r\n } else {\r\n core.snackbar(\r\n 'error',\r\n 'The B2B service did not return an order number',\r\n )\r\n }\r\n }\r\n })\r\n .catch((error) => core.snackbar('warning', error.toString()))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function getCount() {\r\n return basket.entries.length\r\n }\r\n\r\n function validateOrderDetails(formData, callback) {\r\n setIsLoading(true)\r\n return core.dataStore\r\n .validateRMA(formData)\r\n .then((x) => {\r\n if (x.status === 200 && x.data) {\r\n setOrderDetails(x.data)\r\n setOrderDetailsValidated(true)\r\n if (typeof callback === 'function') {\r\n callback()\r\n }\r\n }\r\n })\r\n .catch((error) => core.snackbar('warning', error.toString()))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function resetOrderDetails(params) {\r\n setOrderDetails(defaultOrderDetails)\r\n setOrderDetailsValidated(false)\r\n }\r\n\r\n useEffect(() => {\r\n load()\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n return {\r\n isLoading,\r\n setIsLoading,\r\n count: getCount(),\r\n basket,\r\n add,\r\n multiAdd,\r\n updateEntry,\r\n remove,\r\n submit,\r\n orderDetails,\r\n setOrderDetails,\r\n validateOrderDetails,\r\n orderDetailsValidated,\r\n setOrderDetailsValidated,\r\n resetOrderDetails,\r\n addressFormLocked,\r\n setAddressFormLocked,\r\n clearBasket,\r\n isInitialized,\r\n setIsInitialized,\r\n useAnotherAddress,\r\n setUseAnotherAddress,\r\n }\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useReturnServiceModel } from '../pages/ReturnService/ReturnServiceModel'\r\n\r\nexport const ReturnServiceContext = createContext(null)\r\n\r\nexport default function ReturnServiceProvider({ children }) {\r\n const returnService = useReturnServiceModel()\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import { useContext, useEffect, useState } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\n\r\nexport function useCategoryModel() {\r\n const core = useContext(CoreContext)\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [brands, setBrands] = useState([])\r\n\r\n function loadBrands() {\r\n setIsLoading(true)\r\n\r\n core.dataStore\r\n .getBrands()\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setBrands(x.data ? x.data : [])\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n loadBrands()\r\n }, [])\r\n\r\n return {\r\n isLoading,\r\n brands,\r\n }\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useCategoryModel } from '../pages/Products/CategoryModel'\r\n\r\nexport const CategoryContext = createContext(null)\r\n\r\nexport default function CategoryProvider({ children }) {\r\n const category = useCategoryModel()\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import { useContext, useEffect, useState } from 'react'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\n\r\nexport function useOrderModel() {\r\n const core = useContext(CoreContext)\r\n const accountNo = core.user.selectedCustomer.accountNo\r\n\r\n const [isInitialized, setIsInitialized] = useState(false)\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [orders, setOrders] = useState([])\r\n const [searchInput, setSearchInput] = useState('')\r\n const [ordersCount, setOrdersCount] = useState(0) //until the api can provide a count\r\n const [lookingInRMA, setLookingInRMA] = useState(false)\r\n\r\n function search() {\r\n if (lookingInRMA) {\r\n return searchRMA()\r\n }\r\n if (searchInput === '') {\r\n load()\r\n } else {\r\n if (isLoading) return\r\n setIsLoading(true)\r\n\r\n core.dataStore\r\n .searchOrders(accountNo, searchInput)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setOrders(res.data)\r\n setOrdersCount(res.data?.length)\r\n } else core.snackbar('warning', res.statusText)\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n }\r\n\r\n function load() {\r\n if (isLoading || !accountNo) {\r\n return\r\n }\r\n\r\n setIsLoading(true)\r\n core.dataStore\r\n .getOrders(accountNo)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setOrders(res.data)\r\n setOrdersCount(res.data?.length)\r\n setIsInitialized(true)\r\n } else core.snackbar('warning', res.statusText)\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function searchRMA() {\r\n if (searchInput === '') {\r\n loadRMA()\r\n } else {\r\n if (isLoading) return\r\n setIsLoading(true)\r\n core.dataStore\r\n .searchRMAOrders(accountNo, searchInput)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setOrders(res.data)\r\n setOrdersCount(res.data?.length)\r\n } else core.snackbar('warning', res.statusText)\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n }\r\n\r\n function loadRMA() {\r\n if (isLoading || !accountNo) {\r\n return\r\n }\r\n setIsLoading(true)\r\n core.dataStore\r\n .getRMAOrders(accountNo)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setOrders(res.data)\r\n setOrdersCount(res.data?.length)\r\n setIsInitialized(true)\r\n }\r\n })\r\n .catch((err) => console.log(err.toString()))\r\n .finally(() => setIsLoading(false))\r\n }\r\n\r\n useEffect(() => {\r\n search(searchInput)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [searchInput, core.user.selectedCustomer.accountNo, lookingInRMA])\r\n\r\n return {\r\n ordersCount,\r\n customer: accountNo,\r\n isLoading,\r\n isInitialized,\r\n orders,\r\n setSearchInput,\r\n lookingInRMA,\r\n setLookingInRMA,\r\n }\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useOrderModel } from '../model/OrdersModel'\r\n\r\nexport const OrderContext = createContext(null)\r\n\r\nexport default function OrderProvider({ children }) {\r\n const model = useOrderModel()\r\n\r\n return {children}\r\n}\r\n","import React from 'react'\r\nimport missingProduct from '../../assets/images/missingProduct.svg'\r\n\r\nexport default function InriverImage(props) {\r\n const { productNo, showImage = false, displayConfig = 'SalesSite_Large', ...rest } = props\r\n\r\n const sizeCodes = {\r\n SalesSite_SmallThumbnail: 3814,\r\n SalesSite_Large: 3813,\r\n }\r\n\r\n const src = `https://imagebank.rdg.dk/customerurl/rdg/cdn/packshot/${productNo}?d=${sizeCodes[displayConfig]}`\r\n\r\n return (\r\n {\r\n e.target.src = missingProduct\r\n e.target.style = 'padding: 8px;'\r\n }}\r\n />\r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n stockItem: {\r\n fontSize: 10,\r\n textTransform: 'uppercase',\r\n color: '#666',\r\n marginTop: 6,\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: 'auto',\r\n },\r\n },\r\n stockItemLink: {\r\n 'textDecoration': 'underline',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n dot: {\r\n width: 6,\r\n height: 6,\r\n backgroundColor: 'green',\r\n display: 'inline-block',\r\n borderRadius: 3,\r\n margin: '0 5px',\r\n transform: 'translateY(-1px)',\r\n },\r\n warning: {\r\n backgroundColor: 'orange',\r\n },\r\n danger: {\r\n backgroundColor: 'red',\r\n },\r\n}))\r\n\r\nexport default function StockItem(props) {\r\n const classes = useStyles()\r\n const { text, status = 1 } = props\r\n\r\n const dotClasses = {\r\n 1: classes.dot,\r\n 2: `${classes.dot} ${classes.warning}`,\r\n 3: `${classes.dot} ${classes.danger}`,\r\n }\r\n\r\n return (\r\n
\r\n \r\n {text}\r\n
\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\n\r\n//Material UI\r\nimport { makeStyles } from '@material-ui/core'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport { Link } from 'react-router-dom'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddCircle from '@material-ui/icons/AddCircle'\r\nimport RemoveCircle from '@material-ui/icons/RemoveCircle'\r\nimport DatePicker from '../../../../../shared/DatePicker'\r\nimport DateRangeIcon from '@material-ui/icons/DateRange'\r\n\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\nimport { BasketContext } from '../../../../../core/context/BasketContext'\r\nimport InriverImage from '../../../../../core/components/InriverImage'\r\nimport StockItem from '../../Products/StockItem'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n listItemRoot: {\r\n padding: '10px 0px',\r\n },\r\n txt: {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n },\r\n title: {\r\n fontWeight: 700,\r\n },\r\n productNo: {\r\n fontSize: 15,\r\n },\r\n addedBy: {\r\n fontSize: 12,\r\n },\r\n price: {\r\n minWidth: 80,\r\n marginLeft: 'auto',\r\n textAlign: 'right',\r\n },\r\n old: {\r\n color: theme.palette.grey[500],\r\n fontSize: 11,\r\n },\r\n new: {\r\n fontSize: 14,\r\n fontWeight: 700,\r\n },\r\n row: {\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n },\r\n quantity: {\r\n fontWeight: 700,\r\n fontSize: 13,\r\n textAlign: 'center',\r\n minWidth: 20,\r\n },\r\n buttonItemWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: 34,\r\n borderBottom: '1px solid #cecece',\r\n justifyContent: 'flex-start',\r\n width: '100%',\r\n paddingLeft: 55,\r\n },\r\n delete: {\r\n marginLeft: 'auto',\r\n },\r\n imgWrapper: {\r\n display: 'block',\r\n marginRight: 6,\r\n marginTop: 10,\r\n width: 50,\r\n height: 50,\r\n },\r\n img: {\r\n maxHeight: 50,\r\n maxWidth: '100%',\r\n },\r\n datePicker: {\r\n width: 140,\r\n },\r\n shipping: {\r\n fontSize: 16,\r\n verticalAlign: '-webkit-baseline-middle',\r\n },\r\n}))\r\n\r\nexport default function BasketListViewItem(props) {\r\n const {\r\n data,\r\n onDelete,\r\n disabled,\r\n validDateTo,\r\n validDateFrom,\r\n updateShippingDate,\r\n isCampaignItem,\r\n } = props\r\n const classes = useStyles()\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 {`${data.itemId} - ${data.itemName}`}\r\n \r\n
\r\n {isCampaignItem ? (\r\n
\r\n \r\n \r\n \r\n updateShippingDate(date, data)}\r\n keyboardIcon={\r\n \r\n }\r\n InputProps={{\r\n disableUnderline: true,\r\n style: { fontSize: '16px' },\r\n readOnly: true,\r\n }}\r\n />\r\n
\r\n ) : (\r\n

\r\n {data.createdByUser}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n {data.priceBeforeDiscount !== data.price && (\r\n \r\n {data.priceBeforeDiscount.toLocaleString('da-DK', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}\r\n \r\n )}\r\n
\r\n {data.price.toLocaleString('da-DK', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}\r\n
\r\n
\r\n {data.amount.toLocaleString('da-DK', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n })}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {disabled && (\r\n
\r\n \r\n
\r\n )}\r\n {!disabled && (\r\n onDelete(data.basketEntryId)}>\r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nfunction BasketQuantitySelection(props) {\r\n const { entryId, qty, isReadOnly, minimumQuantity, multiplesQuantity } = props\r\n const classes = useStyles()\r\n const basketModel = useContext(BasketContext)\r\n const increment = multiplesQuantity || 1\r\n\r\n function handleIncrement() {\r\n if (isReadOnly) return\r\n basketModel.updateEntry({\r\n basketEntryId: entryId,\r\n quantity: qty + increment,\r\n })\r\n }\r\n\r\n function handleDecrement() {\r\n if (isReadOnly) return\r\n if (qty - increment < minimumQuantity) {\r\n return\r\n }\r\n basketModel.updateEntry({\r\n basketEntryId: entryId,\r\n quantity: qty - increment,\r\n })\r\n }\r\n\r\n function handleManualSelectQuantity() {\r\n if (isReadOnly) return\r\n alert('Manual quantity selection not implemented yet.')\r\n }\r\n\r\n return !isReadOnly ? (\r\n <>\r\n \r\n \r\n \r\n \r\n {qty}\r\n
\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n : {qty}\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Monkey from '../../../core/images/mini-abe.png'\r\nimport Typography from '@material-ui/core/Typography/Typography'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n image: {\r\n maxHeight: '250px',\r\n maxWidth: '258px',\r\n filter: 'grayscale(100%)',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n centerGrid: {\r\n alignItems: 'center',\r\n },\r\n textCenter: {\r\n textAlign: 'center',\r\n },\r\n}))\r\n\r\nexport default function EmptyState(props) {\r\n const classes = useStyles()\r\n const { main = 'emptyStateMain', sub = 'emptyStateSub' } = props\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","import React, { useContext, useState, useEffect } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core'\r\nimport BasketListViewItem from './BasketListViewItem'\r\nimport { BasketContext } from '../../../../../core/context/BasketContext'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport EmptyState from '../../../components/EmptyState'\r\nimport { ProductsContext } from '../../../context/ProductsContext'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n basketListViewRoot: {},\r\n progressContainer: {\r\n height: '4px',\r\n },\r\n}))\r\n\r\nexport const sortEnum = {\r\n PRODUCTNO: 'PRODUCTNO',\r\n DELIVERY: 'DELIVERY',\r\n}\r\n\r\nexport default function BasketListView(props) {\r\n const { isMiniBasket = false, disabled, sortBy } = props\r\n const classes = useStyles()\r\n const basketModel = useContext(BasketContext)\r\n const productsModel = useContext(ProductsContext)\r\n const [validDateFrom, setValidDateFrom] = useState('')\r\n const [validDateTo, setValidDateTo] = useState('')\r\n\r\n const basketCampaignId = basketModel.basket.tradeFairCampaignId\r\n\r\n function getTimeMinusOffset(date) {\r\n return (\r\n new Date(date.getTime() - date.getTimezoneOffset() * 60000)\r\n .toJSON()\r\n .split('T')[0] + 'T00:00:00'\r\n )\r\n }\r\n\r\n const sortEntries = (entries) => {\r\n if (sortBy === sortEnum.PRODUCTNO) {\r\n return entries\r\n .filter((el) => el)\r\n .sort((a, b) => {\r\n if (a.itemId < b.itemId) return -1\r\n if (a.itemId > b.itemId) return 1\r\n return 0\r\n })\r\n } else if (sortBy === sortEnum.DELIVERY) {\r\n return entries\r\n .filter((el) => el)\r\n .sort((a, b) => {\r\n if (a.requestedShippingDate < b.requestedShippingDate) return -1\r\n if (a.requestedShippingDate > b.requestedShippingDate) return 1\r\n return 0\r\n })\r\n }\r\n return entries\r\n }\r\n\r\n useEffect(() => {\r\n productsModel.getCampaigns()\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (basketCampaignId && productsModel.campaigns.length)\r\n setValidDateFrom(\r\n productsModel.campaigns.find((el) => el.campaignId === basketCampaignId)\r\n ?.deliveryValidFrom,\r\n )\r\n setValidDateTo(\r\n productsModel.campaigns.find((el) => el.campaignId === basketCampaignId)\r\n ?.deliveryValidTo,\r\n )\r\n }, [basketCampaignId, productsModel.campaigns])\r\n\r\n function removeItem(id) {\r\n basketModel.remove(id)\r\n }\r\n\r\n function updateShippingDate(date, data) {\r\n const formattedDate = getTimeMinusOffset(date)\r\n //if date changes such that 2 items with same itemId now have same deliverydate aswell, then delete one and combine their quantities\r\n\r\n const duplicate = basketModel.basket.entries.find(\r\n (item) =>\r\n item.itemId === data.itemId &&\r\n item.requestedShippingDate === formattedDate &&\r\n item.basketEntryId !== data.basketEntryId,\r\n )\r\n\r\n if (duplicate) {\r\n data.quantity += duplicate.quantity\r\n basketModel.remove(duplicate.basketEntryId)\r\n }\r\n basketModel.updateEntry({ ...data, requestedShippingDate: formattedDate })\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {basketModel.isLoading ? : null}\r\n
\r\n {basketModel.basket.entries.length > 0 ? (\r\n <>\r\n {sortEntries(basketModel.basket.entries).map((data, i) => (\r\n \r\n ))}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )\r\n}\r\n","//Uses the JS Internationalization API to format currency based on input.\r\nexport function formatCurrency(value, currency = 'DKK', locales = 'da-DK') {\r\n let rs = value + ' ' + currency\r\n //console.log(currency);\r\n if (typeof value === 'string') {\r\n value = Number(value.replace(',', '.'))\r\n }\r\n try {\r\n let formatter = new Intl.NumberFormat(locales, {\r\n style: 'currency',\r\n currency: currency,\r\n })\r\n rs = formatter.format(value)\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n return rs\r\n}\r\n","import React, { useContext, useState, useEffect } from 'react'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport { formatCurrency } from '../../../libraries/CurrencyTransformer'\r\nimport { BasketContext } from '../../../../../core/context/BasketContext'\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\nimport { makeStyles, Dialog, DialogTitle, Button } from '@material-ui/core'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n marginTop: theme.spacing(2),\r\n },\r\n field: {\r\n marginRight: '70px',\r\n },\r\n total: {\r\n justifyContent: 'space-between',\r\n fontWeight: 700,\r\n padding: '5px 0',\r\n borderTop: '1px solid #dedede',\r\n marginTop: 10,\r\n },\r\n deleteButton: {\r\n width: 'fit-content',\r\n marginBottom: 10,\r\n },\r\n}))\r\nexport default function BasketSummary(props) {\r\n const [confirmationModalOpen, setConfirmationModalOpen] = useState(false)\r\n const basketModel = useContext(BasketContext)\r\n const core = useContext(CoreContext)\r\n const currency = core.user.selectedCustomer.currency\r\n const classes = useStyles()\r\n\r\n const { hideEmptyBasketButton, close, showMarkup } = props\r\n\r\n const showEmptyBasketButton =\r\n basketModel.basket.entries.length && !hideEmptyBasketButton\r\n\r\n const emptyBasket = (e) => {\r\n basketModel.deleteBasket(basketModel.basket.id)\r\n setConfirmationModalOpen(false)\r\n close(e)\r\n }\r\n\r\n const handleBasketPreviewClick = (e) => {\r\n if (basketModel.basketType == 0) {\r\n core.history.push('/sales/basketOverview')\r\n } else if (basketModel.basketType == 1) {\r\n core.history.push('/fair-app/basketOverview')\r\n }\r\n close(e)\r\n }\r\n\r\n useEffect(() => {\r\n //load with markup on confirmation page\r\n const isConfirmationPage =\r\n window.location.href.split('/')[\r\n window.location.href.split('/').length - 1\r\n ] === 'confirmation'\r\n basketModel.load(isConfirmationPage)\r\n }, [])\r\n\r\n return (\r\n \r\n setConfirmationModalOpen(false)}>\r\n \r\n \r\n
\r\n setConfirmationModalOpen(false)}\r\n variant='contained'\r\n color='primary'>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {!!showEmptyBasketButton && (\r\n
\r\n setConfirmationModalOpen(true)}\r\n variant='contained'\r\n color='secondary'\r\n className={classes.deleteButton}>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n
\r\n
{formatCurrency(basketModel.basket.amount, currency)}
\r\n \r\n {showMarkup && !!basketModel.basket.markupAmount && (\r\n \r\n
\r\n \r\n
\r\n
{formatCurrency(basketModel.basket.markupAmount, currency)}
\r\n \r\n )}\r\n {!!basketModel.basket.vatAmount && (\r\n \r\n
\r\n \r\n
\r\n
{formatCurrency(basketModel.basket.vatAmount, currency)}
\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n
{formatCurrency(basketModel.basket.totalAmount, currency)}
\r\n \r\n \r\n )\r\n}\r\n","import { makeStyles } from '@material-ui/core'\r\n\r\nexport default makeStyles((theme) => ({\r\n list: {\r\n width: 450,\r\n maxWidth: '100vw',\r\n height: '100%',\r\n padding: theme.spacing(2),\r\n overflowY: 'scroll',\r\n\r\n [theme.breakpoints.up('md')]: {\r\n overflowY: 'auto',\r\n },\r\n },\r\n root: {\r\n padding: '10px',\r\n },\r\n sub: {\r\n color: theme.palette.grey[600],\r\n borderBottom: '1px solid #ddd',\r\n marginTop: 0,\r\n paddingBottom: 10,\r\n },\r\n btns: {\r\n display: 'flex',\r\n padding: theme.spacing(1),\r\n },\r\n btn: {\r\n width: 'auto',\r\n height: 40,\r\n margin: 5,\r\n minWidth: 100,\r\n },\r\n btnNext: {\r\n 'color': 'white',\r\n 'backgroundColor': 'black',\r\n 'width': '100%',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n summary: {\r\n padding: theme.spacing(2),\r\n },\r\n}))\r\n","import React from 'react'\r\n\r\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\r\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\r\nimport { Button } from '@material-ui/core'\r\n\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\n\r\nimport useStyles from './shared/miniBasketStyles'\r\n\r\nexport default function MiniBasketButtons(props) {\r\n const classes = useStyles()\r\n const { onSubmit, close, submitLabel } = props\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","import React, { useContext, useState } from 'react'\r\nimport Drawer from '@material-ui/core/Drawer'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport { Switch } from '@material-ui/core'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\n\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\n\r\nimport BasketListView, { sortEnum } from './BasketListView'\r\nimport BasketSummary from './BasketSummary'\r\nimport MiniBasketButtons from './MiniBasketButtons'\r\n\r\nimport { BasketContext } from '../../../../../core/context/BasketContext'\r\n\r\nimport useStyles from './shared/miniBasketStyles'\r\n\r\nexport default function TemporaryDrawer(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const basketModel = useContext(BasketContext)\r\n const basket = basketModel.basket\r\n const [sortBy, setSortBy] = useState(sortEnum.PRODUCTNO)\r\n\r\n const { open, onClick } = props\r\n\r\n function closeDrawer(event) {\r\n if (\r\n event.type === 'keydown' &&\r\n (event.key === 'Tab' || event.key === 'Shift')\r\n ) {\r\n return\r\n }\r\n onClick(false)\r\n }\r\n\r\n function productCountLabel() {\r\n return (\r\n \r\n {basket.entries.length + ' '}\r\n {basket.entries.length === 1 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n function handleGotoCheckout() {\r\n if (core.user.selectedCustomer.blocked) {\r\n core.setModal({\r\n headline: ,\r\n message: ,\r\n })\r\n return\r\n }\r\n\r\n onClick(false)\r\n\r\n if (basketModel.basketType == 0) {\r\n core.history.push('/sales/basket')\r\n } else if (basketModel.basketType == 1) {\r\n core.history.push('/fair-app/basket')\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n {basket.campaignName && (\r\n \r\n {`(${basket.campaignName})`}\r\n \r\n )}\r\n

{productCountLabel()}

\r\n {basket.campaignId && (\r\n
\r\n \r\n setSortBy(\r\n sortBy === sortEnum.PRODUCTNO\r\n ? sortEnum.DELIVERY\r\n : sortEnum.PRODUCTNO,\r\n )\r\n }\r\n color='primary'\r\n />\r\n }\r\n label={}\r\n labelPlacement='start'\r\n />\r\n
\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, { useContext } from 'react'\r\n//Context\r\n\r\n//Material UI\r\nimport { makeStyles } from '@material-ui/core'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport { Link } from 'react-router-dom'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport AddCircle from '@material-ui/icons/AddCircle'\r\nimport RemoveCircle from '@material-ui/icons/RemoveCircle'\r\nimport Select from '@material-ui/core/Select'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\nimport { ReturnServiceContext } from '../../../context/ReturnServiceContext'\r\nimport InriverImage from '../../../../../core/components/InriverImage'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n listItemRoot: {\r\n padding: '10px 0px',\r\n borderBottom: '1px solid #cecece',\r\n },\r\n txt: {\r\n marginLeft: 10,\r\n marginRight: 10,\r\n },\r\n title: {\r\n fontWeight: 700,\r\n },\r\n productNo: {\r\n fontSize: 14,\r\n },\r\n price: {\r\n minWidth: 150,\r\n marginLeft: 'auto',\r\n textAlign: 'right',\r\n },\r\n old: {\r\n color: theme.palette.grey[500],\r\n fontSize: 11,\r\n },\r\n new: {\r\n fontSize: 14,\r\n fontWeight: 700,\r\n },\r\n row: {\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n },\r\n quantity: {\r\n fontWeight: 700,\r\n fontSize: 13,\r\n textAlign: 'center',\r\n minWidth: 20,\r\n },\r\n buttonItemWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: 34,\r\n justifyContent: 'flex-start',\r\n width: '100%',\r\n paddingLeft: 10,\r\n },\r\n delete: {\r\n marginLeft: 'auto',\r\n },\r\n imgWrapper: {\r\n display: 'block',\r\n marginRight: 6,\r\n marginTop: 10,\r\n height: 50,\r\n width: 50\r\n },\r\n img: {\r\n maxHeight: 60,\r\n maxWidth: '100%',\r\n },\r\n}))\r\n\r\nexport default function BasketReturnServiceListViewItem(props) {\r\n const { data, onDelete, disabled } = props\r\n const classes = useStyles()\r\n const returnServiceModel = useContext(ReturnServiceContext)\r\n\r\n const handleReturnReasonChange = (e) => {\r\n const returnReasonId = e.target.value\r\n returnServiceModel.updateEntry(\r\n data.basketEntryId,\r\n data.quantity,\r\n returnReasonId,\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 {data.itemName}\r\n \r\n
\r\n \r\n {data.itemId}\r\n
\r\n
\r\n \r\n {data.returnReasons.map((reason) => (\r\n {reason.label}\r\n ))}\r\n \r\n
\r\n \r\n \r\n \r\n {!disabled && (\r\n onDelete(data.basketEntryId)}>\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nfunction BasketQuantitySelection(props) {\r\n const { entryId, qty, isReadOnly, returnReasonId } = props\r\n const classes = useStyles()\r\n const returnServiceModel = useContext(ReturnServiceContext)\r\n\r\n function handleIncrement() {\r\n if (isReadOnly) return\r\n returnServiceModel.updateEntry(entryId, qty + 1, returnReasonId)\r\n }\r\n\r\n function handleDecrement() {\r\n if (isReadOnly) return\r\n returnServiceModel.updateEntry(entryId, qty + -1, returnReasonId)\r\n }\r\n\r\n function handleManualSelectQuantity() {\r\n if (isReadOnly) return\r\n alert('Manual quantity selection not implemented yet.')\r\n }\r\n\r\n return !isReadOnly ? (\r\n <>\r\n \r\n \r\n \r\n \r\n {qty}\r\n
\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n : {qty}\r\n
\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\n\r\nimport BasketReturnServiceListViewItem from './BasketReturnServiceListViewItem'\r\n\r\nimport { ReturnServiceContext } from '../../../context/ReturnServiceContext'\r\n\r\nimport EmptyState from '../../../components/EmptyState'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n basketListViewRoot: {},\r\n progressContainer: {\r\n height: '4px',\r\n },\r\n}))\r\n\r\nexport default function BasketReturnServiceListView(props) {\r\n const { onUpdate, isMiniBasket = false, disabled } = props\r\n const classes = useStyles()\r\n const returnServiceModel = useContext(ReturnServiceContext)\r\n\r\n function handleDelete(basketEntryId) {\r\n returnServiceModel.remove(basketEntryId)\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {returnServiceModel.isLoading ? : null}\r\n
\r\n {returnServiceModel.basket.entries.length > 0 ? (\r\n <>\r\n {returnServiceModel.basket.entries.map((data) => (\r\n \r\n ))}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport Drawer from '@material-ui/core/Drawer'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport { Button } from '@material-ui/core'\r\n\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\n\r\nimport BasketReturnServiceListView from './BasketReturnServiceListView'\r\nimport MiniBasketButtons from './MiniBasketButtons'\r\nimport { ReturnServiceContext } from '../../../context/ReturnServiceContext'\r\n\r\nimport useStyles from './shared/miniBasketStyles'\r\n\r\nexport default function TemporaryDrawer(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const returnServiceModel = useContext(ReturnServiceContext)\r\n const basket = returnServiceModel.basket\r\n const { open, onClick } = props\r\n\r\n function closeDrawer(event) {\r\n if (\r\n event.type === 'keydown' &&\r\n (event.key === 'Tab' || event.key === 'Shift')\r\n ) {\r\n return\r\n }\r\n onClick(false)\r\n }\r\n\r\n function productCountLabel() {\r\n return (\r\n \r\n {basket.entries.length + ' '}\r\n {basket.entries.length === 1 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )\r\n }\r\n\r\n function handleGotoCheckout() {\r\n onClick(false)\r\n core.history.push('/sales/returnService/checkout')\r\n }\r\n\r\n function emptyBasket() {\r\n returnServiceModel.clearBasket()\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n

{productCountLabel()}

\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nimport { CheckoutContext } from '../../../context/CheckoutContext'\r\nimport { BasketContext } from '../../../../../core/context/BasketContext'\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\n\r\nimport Autocomplete from '@material-ui/lab/Autocomplete'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport OutlinedInputField from '../../../components/ui/OutlinedInputField'\r\nimport {\r\n Checkbox,\r\n Divider,\r\n FormControl,\r\n FormControlLabel,\r\n makeStyles,\r\n TextField,\r\n Select,\r\n MenuItem,\r\n InputLabel,\r\n} from '@material-ui/core'\r\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\n\r\nimport { useForm, Controller } from 'react-hook-form'\r\nimport DatePicker from '../../../../../shared/DatePicker'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n width: 400,\r\n marginBottom: 20,\r\n },\r\n margin: {\r\n margin: theme.spacing(1),\r\n },\r\n hr: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(4),\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n padd: {\r\n paddingTop: 6,\r\n },\r\n btns: {\r\n display: 'flex',\r\n padding: theme.spacing(1),\r\n },\r\n btn: {\r\n width: 'auto',\r\n height: 40,\r\n marginTop: 30,\r\n marginRight: 10,\r\n minWidth: 100,\r\n },\r\n btnNext: {\r\n 'color': 'white',\r\n 'backgroundColor': 'black',\r\n 'width': '100%',\r\n 'maxWidth': 300,\r\n 'marginRight': 0,\r\n 'marginLeft': 'auto',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n}))\r\n\r\nconst firstCountriesInSelect = ['DNK', 'DEU', 'NOR', 'SWE']\r\n\r\nfunction OrderDetails(props) {\r\n const history = useHistory()\r\n const core = useContext(CoreContext)\r\n const checkout = useContext(CheckoutContext)\r\n const basketModel = useContext(BasketContext)\r\n const classes = useStyles()\r\n const { advanceStep } = props\r\n const { addressFormLocked, setAddressFormLocked } = checkout\r\n const [deliveryAddresses, setDeliveryAddresses] = useState([])\r\n\r\n const [countries, setCountries] = useState([])\r\n\r\n useEffect(() => {\r\n if (core.user.language) {\r\n core.dataStore\r\n .getCustomerDeliveryCountries(core.user.language)\r\n .then((res) => {\r\n const countries = res?.data?.result?.sort((a, b) => {\r\n if (a.name > b.name) return 1\r\n if (a.name < b.name) return -1\r\n return 0\r\n })\r\n const firstCountries = firstCountriesInSelect.map((el) =>\r\n countries.find((country) => country.code === el),\r\n )\r\n\r\n setCountries([...firstCountries, ...countries])\r\n })\r\n .catch(() => {})\r\n }\r\n }, [core.user.language])\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n errors: fieldsErrors,\r\n setValue,\r\n clearErrors,\r\n } = useForm({ defaultValues: checkout.orderDetails })\r\n\r\n let checkObject = (obj) => (obj ? true : false)\r\n\r\n //temp\r\n const canChangeDeliveryAddress =\r\n core.user.selectedCustomer.canChangeDeliveryAddress\r\n\r\n function onSubmit(formData) {\r\n checkout.setIsLoading(true)\r\n checkout.validateOrderDetails(formData, advanceStep)\r\n }\r\n\r\n const goBack = () => {\r\n console.log(basketModel)\r\n history.push(\r\n basketModel.basket.tradeFairCampaignId ? '/fair-app' : '/sales/products',\r\n )\r\n }\r\n\r\n function resetDeliveryAdress(isChecked) {\r\n if (isChecked) {\r\n setValue('deliveryName', '')\r\n setValue('deliveryStreetName1', '')\r\n setValue('deliveryStreetName2', '')\r\n setValue('deliveryZipCode', '')\r\n setValue('deliveryCity', '')\r\n setValue('deliveryCountry', '')\r\n\r\n //reset select\r\n setValue('deliveryAddressId', '')\r\n setAddressFormLocked(false)\r\n } else {\r\n let address =\r\n deliveryAddresses.find((addr) => addr.addressType === 2) ||\r\n deliveryAddresses.find((addr) => addr.addressType === 0) ||\r\n deliveryAddresses[0]\r\n setValue('deliveryAddressId', address.id)\r\n onInvoiceAddressSelectChange(address.id)\r\n }\r\n\r\n setValue('hasNewAddress', isChecked)\r\n\r\n clearErrors([\r\n 'deliveryName',\r\n 'deliveryStreetName1',\r\n 'deliveryStreetName2',\r\n 'deliveryZipCode',\r\n 'deliveryCity',\r\n 'deliveryCountry',\r\n ])\r\n }\r\n\r\n function onInvoiceAddressSelectChange(id) {\r\n setAddressFormLocked(false)\r\n let address = deliveryAddresses.find((x) => x.id === id)\r\n setAdresse(address)\r\n setAddressFormLocked(true)\r\n }\r\n\r\n function setAdresse(address) {\r\n setValue('deliveryName', address.name)\r\n setValue('deliveryStreetName1', address.street)\r\n setValue('deliveryStreetName2', address.street2)\r\n setValue('deliveryZipCode', address.zip)\r\n setValue('deliveryCity', address.city)\r\n setValue('deliveryCountry', address.country)\r\n }\r\n\r\n useEffect(() => {\r\n if (basketModel.basket.entries && basketModel.basket.tradeFairCampaignId) {\r\n //find earliest delivery date in the product list and set shippingDate to that\r\n let entriesByDate = basketModel.basket.entries.map(\r\n (el) => el.requestedShippingDate,\r\n )\r\n const earliestDate = (entriesByDate = entriesByDate.sort()[0])\r\n setValue('shippingDate', earliestDate)\r\n console.log('sat value of shipping date')\r\n }\r\n }, [basketModel.basket.entries, basketModel.basket.tradeFairCampaignId])\r\n\r\n useEffect(() => {\r\n function load() {\r\n core.dataStore\r\n .getCustomerAddressesByAccountNo(core.user.selectedCustomer.accountNo)\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setDeliveryAddresses(\r\n x.data.sort((a, b) =>\r\n a.name < b.name ? -1 : Number(a.name > b.name),\r\n ),\r\n )\r\n let address\r\n //if canChangeAddress = true set default address to first addr of type 0. Otherwise to first addr of type 2\r\n\r\n address =\r\n x.data.find((addr) => addr.addressType === 2) ||\r\n x.data.find((addr) => addr.addressType === 0) ||\r\n x.data[0]\r\n if (addressFormLocked) {\r\n setAdresse(address)\r\n }\r\n setValue('deliveryAddressId', address.id)\r\n checkout.setIsInitialized(true)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {\r\n checkout.setIsLoading(false)\r\n })\r\n }\r\n\r\n if (core.isInitialized) {\r\n //redirect if no customer accountNo set,\r\n //could be if basket is accessed directly from browser refresh\r\n if (!core.user.selectedCustomer.accountNo) {\r\n history.push('/sales')\r\n } else {\r\n load()\r\n }\r\n }\r\n }, [])\r\n\r\n return (\r\n
\r\n \r\n \r\n

\r\n 1. \r\n

\r\n {\r\n \r\n
\r\n {/* Select address */}\r\n \r\n {\r\n onInvoiceAddressSelectChange(newval.id)\r\n }}\r\n options={deliveryAddresses}\r\n disableClearable\r\n getOptionLabel={(address) =>\r\n `${address.name}, ${address.street}, ${address.street2}`\r\n }\r\n renderInput={(params) => (\r\n \r\n }\r\n variant='outlined'\r\n fullWidth\r\n />\r\n )}\r\n />\r\n \r\n\r\n {/* New address */}\r\n (\r\n \r\n resetDeliveryAdress(e.target.checked)\r\n }\r\n />\r\n }\r\n label={\r\n \r\n }\r\n />\r\n )}\r\n />\r\n
\r\n\r\n \r\n\r\n <>\r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n helperText={\r\n fieldsErrors.deliveryName\r\n ? fieldsErrors.deliveryName.message\r\n : null\r\n }\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryName)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: (\r\n \r\n ),\r\n },\r\n maxLength: {\r\n value: 100,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n helperText={\r\n fieldsErrors.deliveryStreetName1\r\n ? fieldsErrors.deliveryStreetName1.message\r\n : null\r\n }\r\n label={\r\n \r\n }\r\n error={checkObject(fieldsErrors.deliveryStreetName1)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: (\r\n \r\n ),\r\n },\r\n maxLength: {\r\n value: 60,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryStreetName2'\r\n helperText={\r\n fieldsErrors.deliveryStreetName2\r\n ? fieldsErrors.deliveryStreetName2.message\r\n : null\r\n }\r\n label={\r\n \r\n }\r\n error={checkObject(fieldsErrors.deliveryStreetName2)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n maxLength: {\r\n value: 60,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryZipCode'\r\n helperText={\r\n fieldsErrors.deliveryZipCode\r\n ? fieldsErrors.deliveryZipCode.message\r\n : null\r\n }\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryZipCode)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: !addressFormLocked,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryCity'\r\n helperText={\r\n fieldsErrors.deliveryCity\r\n ? fieldsErrors.deliveryCity.message\r\n : null\r\n }\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryCity)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: !addressFormLocked,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n (\r\n <>\r\n \r\n {}\r\n \r\n {\r\n onChange(e.target.value)\r\n }}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryCountry'\r\n labelId='deliveryCountryLabel'\r\n label={}\r\n helperText={\r\n fieldsErrors.deliveryCountry\r\n ? fieldsErrors.deliveryCountry.message\r\n : null\r\n }\r\n error={checkObject(fieldsErrors.deliveryCountry)}\r\n variant='outlined'>\r\n {countries.map((el) => (\r\n {el.name}\r\n ))}\r\n \r\n \r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: (\r\n \r\n ),\r\n },\r\n maxLength: {\r\n value: 10,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n
\r\n }\r\n\r\n \r\n \r\n {\r\n setValue('shippingDate', date.toJSON())\r\n return { value: date } //important to update the controller value after change else state is updated and the controller will not render\r\n }}\r\n render={({ onChange, onBlur, value, name, ref }) => (\r\n }\r\n name={name}\r\n onBlur={onBlur}\r\n onChange={onChange}\r\n value={value}\r\n disablePast={true}\r\n className={classes.margin}\r\n //shippingDate cannot be set on campaign baskets, as they can have different dates on each product\r\n readOnly={basketModel.basket.tradeFairCampaignId}\r\n InputProps={{\r\n inputProps: {\r\n readOnly: true,\r\n },\r\n }}\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: ,\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n className={classes.margin}\r\n inputProps={{\r\n maxLength: 30,\r\n }}\r\n id='customerRef'\r\n helperText={\r\n fieldsErrors.customerRef\r\n ? fieldsErrors.customerRef.message\r\n : null\r\n }\r\n variant='outlined'\r\n label={}\r\n error={checkObject(fieldsErrors.customerRef)}\r\n />\r\n )}\r\n />\r\n \r\n \r\n {/* \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n className={classes.margin}\r\n id=\"requisitionNo\"\r\n inputProps={{\r\n maxLength: 20\r\n }}\r\n helperText={\r\n fieldsErrors.requisitionNo\r\n ? fieldsErrors.requisitionNo.message\r\n : null\r\n }\r\n variant=\"outlined\"\r\n label={}\r\n error={checkObject(fieldsErrors.requisitionNo)}\r\n />\r\n )}\r\n />\r\n \r\n */}\r\n\r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n className={classes.margin}\r\n id='attention'\r\n helperText={\r\n fieldsErrors.attention\r\n ? fieldsErrors.attention.message\r\n : null\r\n }\r\n label={}\r\n error={checkObject(fieldsErrors.attention)}\r\n variant='outlined'\r\n />\r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n className={classes.margin}\r\n id='mobilePhoneNo'\r\n helperText={\r\n fieldsErrors.mobilePhoneNo\r\n ? fieldsErrors.mobilePhoneNo.message\r\n : null\r\n }\r\n variant='outlined'\r\n label={}\r\n error={checkObject(fieldsErrors.mobilePhoneNo)}\r\n inputProps={{ maxLength: 20 }}\r\n />\r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n className={classes.margin}\r\n id='emailForTracking'\r\n inputProps={{\r\n maxLength: 80,\r\n }}\r\n helperText={\r\n fieldsErrors.emailForTracking\r\n ? fieldsErrors.emailForTracking.message\r\n : null\r\n }\r\n variant='outlined'\r\n label={}\r\n error={checkObject(fieldsErrors.emailForTracking)}\r\n />\r\n )}\r\n control={control}\r\n defaultValue=''\r\n rules={{\r\n pattern: {\r\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i,\r\n message: ,\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n label={}\r\n inputRef={ref}\r\n fullWidth\r\n maxLength={200}\r\n />\r\n )}\r\n rules={{\r\n maxLength: {\r\n value: 200,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n \r\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 default OrderDetails\r\n","import { makeStyles } from '@material-ui/core'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport React from 'react'\r\n\r\nconst useStyles2 = makeStyles(() => ({\r\n fieldItem: {\r\n color: '#5F6368',\r\n display: 'flex',\r\n borderBottom: '1px dashed #767676',\r\n fontSize: '16px',\r\n marginBottom: '5px',\r\n },\r\n fieldItemName: {\r\n fontWeight: 'normal',\r\n marginRight: '3px',\r\n },\r\n fieldItemValue: {},\r\n}))\r\nexport default function FieldItemHeader(props) {\r\n const classes = useStyles2()\r\n const { label, name, value } = props\r\n\r\n return (\r\n
\r\n
\r\n {label ? : { name }}\r\n
\r\n
{value}
\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport TagIcon from '@material-ui/icons/LocalOfferOutlined'\r\nimport TranslationLabel from '../core/components/TranslationLabel'\r\n\r\nconst priceEnum = {\r\n Standard: 0,\r\n Campaign: 1,\r\n Archive: 2\r\n}\r\n\r\nfunction findPrice(colli, product) {\r\n let _currentPrice = {};\r\n\r\n product.priceDtos.forEach(price => {\r\n if (price.minQuantity <= colli && price.minQuantity > 0) {\r\n _currentPrice = price;\r\n }\r\n });\r\n\r\n return _currentPrice;\r\n}\r\n\r\nfunction hasNoPrice(product) {\r\n return !product.priceDtos.length;\r\n}\r\n\r\nfunction findNextAllowedNumber(product, number) {\r\n if (number < 1) {\r\n return 0\r\n }\r\n const { minimumQuantity, multiplesQuantity } = product\r\n\r\n const increment = multiplesQuantity || 1\r\n if (number <= minimumQuantity) {\r\n return minimumQuantity\r\n }\r\n return Math.ceil(number / increment) * increment\r\n}\r\n\r\nfunction hasDiscount(currentPrice) {\r\n return (currentPrice.priceType == priceEnum.Standard && currentPrice.discountPercentage > 0)\r\n || (currentPrice.priceType !== priceEnum.Standard);\r\n}\r\n\r\nfunction RenderPriceTag(currentPrice) {\r\n if (currentPrice.priceType == undefined\r\n || currentPrice.priceType == priceEnum.Standard) {\r\n return;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {currentPrice.priceType == priceEnum.Campaign\r\n ? \r\n : \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nfunction nextPriceTag(quantity, product) {\r\n const nextPrice = product\r\n .priceDtos\r\n .find(el => el.minQuantity > quantity\r\n && (el.priceType == priceEnum.Archive || el.priceType == priceEnum.Campaign))\r\n\r\n if (!nextPrice) {\r\n return;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n {nextPrice.minQuantity}+\r\n \r\n \r\n )\r\n}\r\n\r\nfunction renderPrice(currentPrice, classes) {\r\n return (\r\n <>\r\n {hasDiscount(currentPrice) ? (\r\n
\r\n {currentPrice.grossPrice}\r\n { RenderPriceTag(currentPrice) }\r\n
\r\n ) : (\r\n \r\n \r\n { RenderPriceTag(currentPrice) }\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nfunction renderYourPrice(currentPrice, quantity, classes) {\r\n return (\r\n
\r\n {currentPrice.netPrice}\r\n \r\n {hasDiscount(currentPrice) ? (\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )}{' '}\r\n {' '}\r\n {quantity || 0}\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default {\r\n findPrice,\r\n hasNoPrice,\r\n findNextAllowedNumber,\r\n hasDiscount,\r\n RenderPriceTag,\r\n nextPriceTag,\r\n renderPrice,\r\n renderYourPrice,\r\n priceEnum\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n stockItem: {\r\n fontSize: 10,\r\n textTransform: 'uppercase',\r\n color: '#666',\r\n marginTop: 6,\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: 'auto',\r\n },\r\n },\r\n stockItemLink: {\r\n 'textDecoration': 'underline',\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n dot: {\r\n width: 6,\r\n height: 6,\r\n backgroundColor: 'green',\r\n display: 'inline-block',\r\n borderRadius: 3,\r\n margin: '0 5px',\r\n transform: 'translateY(-1px)',\r\n },\r\n warning: {\r\n backgroundColor: 'orange',\r\n },\r\n danger: {\r\n backgroundColor: 'red',\r\n },\r\n}))\r\n\r\nexport default function StockItem(props) {\r\n const classes = useStyles()\r\n const { text, status = 1 } = props\r\n\r\n const dotClasses = {\r\n 1: classes.dot,\r\n 2: `${classes.dot} ${classes.warning}`,\r\n 3: `${classes.dot} ${classes.danger}`,\r\n }\r\n\r\n return (\r\n
\r\n \r\n {text}\r\n
\r\n )\r\n}\r\n","import React, { useContext, useState, useRef, useEffect } from 'react'\nimport { Link } from 'react-router-dom'\nimport { makeStyles, TextField, Button } from '@material-ui/core'\n\nimport InriverImage from '../../../core/components/InriverImage'\nimport TranslationLabel from '../../../core/components/TranslationLabel'\nimport priceDtoHelper from '../../../shared/PriceDtoHelper'\nimport StockItem from './StockItem'\n\nimport { BasketContext } from '../../../core/context/BasketContext'\nimport { ProductsContext } from '../context/ProductsContext'\n\nimport AddIcon from '@material-ui/icons/Add'\nimport DeleteIcon from '@material-ui/icons/Delete'\n\nconst useStyles = makeStyles((theme) => ({\n tableRoot: {\n display: 'grid',\n gridAutoRows: 'auto',\n gridTemplateColumns: 'min-content auto min-content min-content min-content min-content',\n gridTemplateRows: 'min-content',\n gap: '0px 0px',\n alignItems: 'center'\n },\n tableHeaderCell: {\n fontSize: '1rem',\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n fontWeight: 400,\n lineHeight: 1.5,\n letterSpacing: '0.00938em',\n textAlign: 'left',\n padding: '5px 20px'\n },\n tableCell: {\n position: 'relative',\n padding: '5px 20px',\n whiteSpace: 'nowrap'\n },\n tableCellQuntity: {\n borderLeft: '1px solid #eee',\n padding: '0 0 0 20px',\n },\n tableCellLast: {\n padding: '0 20px 0 0',\n marginLeft: 5\n },\n title: {\n fontSize: 14,\n fontWeight: 'bold',\n display: 'block',\n\n [theme.breakpoints.up('sm')]: {\n fontSize: 16,\n },\n },\n label: {\n textTransform: 'uppercase',\n fontSize: 11,\n backgroundColor: 'rgba(255, 255, 255, .6)',\n color: theme.palette.grey[600],\n position: 'static',\n marginRight: 15,\n padding: 0,\n },\n small: {\n fontSize: 13,\n },\n listStock: {\n display: 'inline-block',\n marginLeft: 15,\n transform: 'translateY(-1px)',\n },\n listOpenOrders: {\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n quantity: {\n width: '64px',\n\n '& input': {\n paddingRight: 0,\n },\n },\n btn: {\n color: 'white',\n backgroundColor: 'black',\n flexGrow: 1,\n height: 40,\n\n '&:hover': {\n backgroundColor: theme.palette.grey[800],\n },\n },\n priceNormal: {\n fontSize: 12,\n color: theme.palette.grey[500],\n display: 'block',\n },\n priceText: {\n fontSize: 12,\n color: theme.palette.grey[500],\n display: 'inline-block',\n marginLeft: 10,\n },\n currency: {\n position: 'absolute',\n top: '-16px',\n left: '62px',\n color: theme.palette.grey[600],\n fontSize: 12,\n },\n priceYours: {\n fontSize: 16,\n fontWeight: 'bold',\n display: 'inline-block',\n },\n img: {\n maxWidth: '100%',\n maxHeight: '100%'\n },\n quantityOptionsHeader: {\n display: 'block',\n marginRight: '15px'\n },\n quantityOptionsCell: {\n display:'block',\n whiteSpace:'nowrap'\n },\n quantityOptions: { display:'flex',fontWeight:'400',lineHeight:'1.5',letterSpacing:'0.00938em',padding:'5px 0',fontSize:'13px'}\n}))\n\nexport default function TableView(props) {\n const classes = useStyles()\n const productsModel = useContext(ProductsContext)\n const basket = useContext(BasketContext)\n const settings = {emptyQuantity: false, hideHeader: false, hideDetailed: false, remove: undefined, ...props}\n\n if (!props.products) {\n return (<>)\n }\n\n const Cell = (props) => {\n const [currentPrice, setCurrentPrice] = useState(priceDtoHelper.findPrice(props.product.quantity || props.product.colli, props.product))\n const [quantity, setQuantity] = useState(props.product.quantity)\n const inputRef = useRef(null)\n\n useEffect(() => {\n if (!props.product.quantity) {\n return\n }\n\n if (props.product.quantity <= 0) {\n handleChangeQuantity({\n target: {\n value: (props.product.priceDtos[0] && props.product.priceDtos[0].minQuantity) || 1,\n },\n })\n }\n }, [props.product])\n\n const handleChangeQuantity = (e) => {\n let val = e.target.value\n let price = priceDtoHelper.findPrice(val, props.product)\n\n props.product.quantity = val\n setQuantity(val)\n setCurrentPrice(price)\n\n if (settings.onQuantityChange) {\n settings.onQuantityChange(props.product.productNo, val)\n }\n }\n\n\n const addToBasket = (e) => {\n basket.add({\n itemId: props.product.productNo,\n qty: priceDtoHelper.findNextAllowedNumber(props.product, quantity),\n campaignId: null,\n requestedShippingDate: null,\n })\n\n if (settings.addColiToBasket) {\n settings.addColiToBasket(props.product)\n }\n }\n\n const onBlurHandler = () => {\n const allowedQuantity = priceDtoHelper.findNextAllowedNumber(props.product, quantity)\n setQuantity(allowedQuantity)\n setCurrentPrice(priceDtoHelper.findPrice(allowedQuantity, props.product))\n }\n\n const renderColiQuntity = () => {\n var price = props.product.priceDtos.find(e => e.priceType == priceDtoHelper.priceEnum.Archive || e.priceType == priceDtoHelper.priceEnum.Campaign)\n\n if (!price) {\n return props.product.colli;\n }\n\n return price.minQuantity;\n }\n\n const renderColiName = () => {\n var price = props.product.priceDtos.find(e => e.priceType == priceDtoHelper.priceEnum.Archive || e.priceType == priceDtoHelper.priceEnum.Campaign)\n\n if (!price) {\n return (\n \n \n \n )\n }\n\n if (price.priceType == priceDtoHelper.priceEnum.Campaign) {\n return (\n \n \n \n )\n }\n else {\n return (\n \n \n \n );\n }\n }\n\n return (\n <>\n
\n {!props.hideDetailed && (\n <>\n
\n
\n
\n \n \n \n
\n
\n
\n
\n {props.product.description}\n\n {props.product.brandNo}\n\n {props.product.productNo}\n\n
\n \n
\n\n {props.product.openOrders.length > 0 && (\n props.setOpenOrdersModal(props.product.productNo)}>\n \n \n \n
\n )}\n \n \n )}\n
\n
\n
\n {props.product.colli !== 1 && ()}\n {renderColiName()}\n Brownbox\n
\n
\n {props.product.colli !== 1 && (1-{props.product.colli-1} )}\n {renderColiQuntity()} \n {props.product.brownBox.numberOfItemsInBox} \n
\n
\n
\n
\n {!props.showRetailPrice && (\n <>\n {priceDtoHelper.hasDiscount(currentPrice) && (\n {currentPrice.grossPrice}\n )}\n {currentPrice.netPrice}\n \n )}\n\n {props.showRetailPrice && (\n \n {props.product.recommendedRetailPrice}\n \n )}\n
\n
\n {inputRef.current.select(0, -1)}}\n label={}\n variant='outlined'\n />\n
\n
\n {!settings.remove && (\n \n \n \n )}\n\n {settings.remove && (\n settings.remove(props.product.productNo)}>\n \n \n )}\n
\n \n )\n }\n\n return (\n
\n {!settings.hideHeader && (\n <>\n
\n
\n
\n
\n
\n
\n
\n \n )}\n\n {props.products.map((product) => (\n \n ))}\n
\n )\n}\n","import React, { useContext } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport Button from '@material-ui/core/Button'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport BackIcon from '@material-ui/icons/ArrowBack'\r\nimport FieldItemHeader from './FieldItemHeader'\r\nimport InriverImage from '../../../../core/components/InriverImage'\r\nimport TableView from '../../components/TableView'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n fillHeight: {\r\n height: '100%',\r\n [theme.breakpoints.down('sm')]: {\r\n height: 'auto',\r\n },\r\n },\r\n detailedItemRoot: {\r\n flexGrow: 1,\r\n height: 'calc(100% - 33px)',\r\n margin: '-15px',\r\n },\r\n detailedImageItem: {\r\n height: '100%',\r\n background: '#E5E5E5',\r\n flexDirection: 'column',\r\n flex: 1,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('sm')]: {\r\n maxHeight: '150px',\r\n flexGrow: 0,\r\n flexBasis: '100%',\r\n },\r\n },\r\n detailedImage: {\r\n maxWidth: '100%',\r\n maxHeight: '75%',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n },\r\n detailedImageSize: {\r\n width: '100%',\r\n height: 'auto',\r\n },\r\n imageContainer: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('sm')]: {\r\n maxHeight: '150px',\r\n maxWidth: '150px',\r\n },\r\n },\r\n body: {\r\n padding: theme.spacing(5),\r\n backgroundColor: 'white',\r\n height: '100%',\r\n [theme.breakpoints.down('md')]: {\r\n padding: theme.spacing(4),\r\n marginBottom: '20px',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(2),\r\n },\r\n },\r\n detailedTitle: {\r\n textAlign: 'left',\r\n color: theme.palette.text.primary,\r\n fontWeight: 'bold',\r\n marginBottom: 10,\r\n },\r\n floatingBackButton: {\r\n position: 'absolute',\r\n padding: theme.spacing(1),\r\n },\r\n barcodeWrapper: {},\r\n rightColumn: {\r\n height: '100%',\r\n overflowY: 'scroll',\r\n },\r\n cta: {\r\n marginLeft: -10,\r\n marginRight: -10,\r\n },\r\n}))\r\n\r\nexport default function DetailedItemTemplate(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n\r\n const { item: product } = props\r\n\r\n function handleClickBack() {\r\n core.history.goBack()\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 {product.description}\r\n \r\n\r\n \r\n {!!product.designerName && (\r\n \r\n )}\r\n \r\n \r\n \r\n {core.user.userSetting.showInventory && (\r\n \r\n )}\r\n
\r\n\r\n \r\n {product.priceDtos.map((price, index) => (\r\n
\r\n \r\n \r\n {price.discountPercentage !== 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 \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n\r\n \r\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 useStyles2 = makeStyles((theme) => ({\r\n fieldItemName: {\r\n display: 'flex',\r\n width: '50%',\r\n color: theme.palette.text.primary,\r\n fontWeight: 'bold',\r\n },\r\n fieldItemValue: {\r\n display: 'flex',\r\n flex: 1,\r\n },\r\n exp: {\r\n display: 'flex',\r\n marginBottom: 10,\r\n }\r\n}))\r\nexport function FieldItemRow(props) {\r\n const classes = useStyles2()\r\n const { label, name, value } = props\r\n\r\n return (\r\n
\r\n
\r\n {label ? : { name }}\r\n
\r\n
{value}
\r\n
\r\n )\r\n}\r\n","import React, { useContext, useEffect } from 'react'\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\nimport { CheckoutContext } from '../../../context/CheckoutContext'\r\nimport { BasketContext } from '../../../../../core/context/BasketContext'\r\n\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nimport { Grid, makeStyles } from '@material-ui/core'\r\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\nimport Button from '@material-ui/core/Button'\r\nimport BasketListView from './BasketListView'\r\nimport BasketSummary from './BasketSummary'\r\nimport { FieldItemRow } from '../../Products/DetailedItemTemplate'\r\nimport { format } from 'date-fns'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n btns: {\r\n display: 'flex',\r\n marginTop: 30,\r\n padding: '8px 0',\r\n },\r\n btn: {\r\n width: 'auto',\r\n minWidth: 120,\r\n height: 40,\r\n marginRight: 10,\r\n },\r\n btnNext: {\r\n 'color': 'white',\r\n 'backgroundColor': 'black',\r\n 'width': '100%',\r\n 'marginRight': 0,\r\n 'marginLeft': 'auto',\r\n 'maxWidth': 250,\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n}))\r\n\r\nfunction Confirmation(props) {\r\n const history = useHistory()\r\n const core = useContext(CoreContext)\r\n const checkout = useContext(CheckoutContext)\r\n const basket = useContext(BasketContext)\r\n const classes = useStyles()\r\n\r\n const { goBack, advanceStep } = props\r\n\r\n function checkoutFlow() {\r\n basket.submit(checkout.orderDetails, function (orderId) {\r\n checkout.resetOrderDetails()\r\n advanceStep()\r\n })\r\n }\r\n\r\n const handleBasketPreviewClick = () => {\r\n if (basket.basketType == 0) {\r\n core.history.push('/sales/basketOverview')\r\n } else if (basket.basketType == 1) {\r\n core.history.push('/fair-app/basketOverview')\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (core.isInitialized) {\r\n //redirect if no customer accountNo set,\r\n //could be if basket is accessed directly from browser refresh\r\n if (!core.user.selectedCustomer.accountNo) {\r\n if (basket.basketType == 0) {\r\n core.history.push('/sales')\r\n } else if (basket.basketType == 1) {\r\n core.history.push('/fair-app')\r\n }\r\n }\r\n }\r\n }, [])\r\n\r\n return (\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\n\r\n
\r\n \r\n \r\n \r\n \r\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 default Confirmation\r\n","export const saveAsCsv = (data, filename) => {\n var encodedUri = encodeURI(\n 'data:text/csv;charset=utf-8,' + '\\uFEFF' + data.replaceAll('#', ''),\n )\n\n console.log(encodedUri)\n var link = document.createElement('a')\n link.setAttribute('href', encodedUri)\n link.setAttribute('download', filename + '.csv')\n document.body.appendChild(link) // Required for FF\n\n link.click() // This will download the data file named \"my_data.csv\".\n}\n","import Button from '@material-ui/core/Button'\r\nimport BackIcon from '@material-ui/icons/ArrowBack'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport { Link } from 'react-router-dom'\r\nimport React from 'react'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n btnIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n}))\r\n\r\nexport default function BackButton(props) {\r\n const classes = useStyles()\r\n const { path } = props\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import Button from '@material-ui/core/Button'\r\nimport Icon from '@material-ui/icons/PictureAsPdf'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport React from 'react'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n btnIcon: {\r\n marginRight: theme.spacing(1),\r\n },\r\n}))\r\n\r\nexport default function PrintButton(props) {\r\n const classes = useStyles()\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState, useRef } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport { makeStyles, Button, TextField } from '@material-ui/core'\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined'\r\nimport CircularProgress from '@material-ui/core/CircularProgress'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport TableChartIcon from '@material-ui/icons/TableChart'\r\nimport { saveAsCsv } from '../../../../shared/SaveAsCsv'\r\nimport ValidateEmail from '../../../../shared/EmailValidation'\r\n\r\nimport BackButton from '../../components/BackButton'\r\nimport PrintButton from '../../components/PrintButton'\r\nimport ReactToPrint from 'react-to-print'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n border: '1px solid #e0e0e0',\r\n backgroundColor: '#F5F5F5',\r\n overflowX: 'auto',\r\n padding: 30,\r\n paddingTop: 10,\r\n maxWidth: '1042px',\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nconst emailSendingStatusEnum = {\r\n SENDING: 'SENDING',\r\n SENT: 'SENT',\r\n ERROR: 'ERROR',\r\n INITIAL: null,\r\n}\r\n\r\nfunction DetailedOrderView(props) {\r\n const { SENDING, SENT, ERROR, INITIAL } = emailSendingStatusEnum\r\n const classes = useStyles()\r\n //on receipt page id comes from props and onlyRestOrders always false, on detailedOrderView it comes from url together with onlyRestOrders\r\n const salesId = props.salesId || props.computedMatch.params.id\r\n const onlyRestOrders = props.isReceipt\r\n ? false\r\n : props.computedMatch.params.onlyRestOrders\r\n const core = useContext(CoreContext)\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [showEmailField, setShowEmailField] = useState(false)\r\n const [email, setEmail] = useState(core.user.selectedCustomer.email)\r\n const [emailSentStatus, setEmailSentStatus] = useState(INITIAL)\r\n const [order, setOrder] = useState()\r\n const [highlight, setHighlight] = useState(false)\r\n const componentRef = useRef(null)\r\n\r\n useEffect(() => {\r\n setEmail(core.user.selectedCustomer.email)\r\n }, [core.user.selectedCustomer.email])\r\n\r\n useEffect(() => {\r\n console.log(props.computedMatch, salesId, onlyRestOrders)\r\n if (core.user.selectedCustomer.accountNo) {\r\n core.dataStore\r\n .getDetailedOrderHtml(\r\n core.user.selectedCustomer.accountNo,\r\n salesId,\r\n onlyRestOrders,\r\n core.user.language,\r\n )\r\n .then((res) => {\r\n document.getElementById('order').innerHTML = res.data\r\n })\r\n .catch((err) => setIsLoading(false))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n\r\n core.dataStore\r\n .getOrder(\r\n core.user.selectedCustomer.accountNo,\r\n salesId,\r\n core.user.language,\r\n )\r\n .then((res) => {\r\n setOrder(res.data)\r\n })\r\n .catch(() => console.log('getOrder failed'))\r\n }\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const displayWarning = (x) => (x === undefined || x.length < 3 || !emailValidated) && highlight ? true : false\r\n\r\n var emailValidated = false\r\n const sendEmail = () => {\r\n if (ValidateEmail(email)) {\r\n emailValidated = true\r\n setHighlight(false)\r\n\r\n setEmailSentStatus(SENDING)\r\n core.dataStore\r\n .emailOrderConfirmation(\r\n email,\r\n core.user.language,\r\n salesId,\r\n core.user.selectedCustomer.accountNo,\r\n onlyRestOrders,\r\n )\r\n .then(() => setEmailSentStatus(SENT))\r\n .catch((err) => setEmailSentStatus(ERROR))\r\n } else {\r\n core.snackbar('warning', 'Wrong email format!')\r\n emailValidated = false\r\n setHighlight(true)\r\n }\r\n }\r\n\r\n const formatNumber = (number) => {\r\n return number.toLocaleString('da-DK')\r\n }\r\n\r\n const saveCsv = () => {\r\n if (!order) return\r\n const rows = []\r\n //first row is headers\r\n rows[0] = [\r\n `${core.dictionary.getLabel('orderNumber')} ${order.salesId}`,\r\n `${core.dictionary.getLabel('orderDate')} ${\r\n order.orderDate.split('T')[0]\r\n }`,\r\n ]\r\n rows[1] = [\r\n 'EAN',\r\n 'itemId',\r\n 'itemDescription',\r\n 'expectedDeliveryDate',\r\n 'expectedStockDate',\r\n 'quantity',\r\n 'salesPrice',\r\n ].map((el) => core.dictionary.getLabel(el))\r\n order.orderLines.forEach((productLine, i) => {\r\n const {\r\n eanNumber,\r\n itemId,\r\n itemTitle,\r\n requestedShippingDate,\r\n expectedStockDate,\r\n quantity,\r\n amount,\r\n } = productLine\r\n rows[i + 2] = [\r\n eanNumber,\r\n itemId,\r\n itemTitle,\r\n requestedShippingDate,\r\n expectedStockDate,\r\n quantity,\r\n formatNumber(amount),\r\n ]\r\n })\r\n rows[rows.length] = [''] //space\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('amount'),\r\n '',\r\n '',\r\n '',\r\n '',\r\n formatNumber(order.amount),\r\n ]\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('vatAmount'),\r\n '',\r\n '',\r\n '',\r\n '',\r\n formatNumber(order.vatAmount),\r\n ]\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('orderAmount'),\r\n '',\r\n '',\r\n '',\r\n '',\r\n formatNumber(order.totalAmount),\r\n ]\r\n\r\n saveAsCsv(\r\n rows.map((el) => el.join(';')).join('\\n'),\r\n `${core.dictionary.getLabel('order')}${order.salesId}`,\r\n )\r\n }\r\n\r\n const EmailField = (\r\n <>\r\n setEmail(e.target.value)}\r\n />\r\n sendEmail()}>\r\n \r\n \r\n \r\n )\r\n\r\n const renderEmailStatus = () => {\r\n switch (emailSentStatus) {\r\n case SENT:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case SENDING:\r\n return (\r\n \r\n )\r\n case ERROR:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case INITIAL:\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n }\r\n content={() => componentRef.current}\r\n />\r\n \r\n {showEmailField ? (\r\n <>\r\n {EmailField} {renderEmailStatus()}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {isLoading ? : null}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default DetailedOrderView\r\n","import React, { useContext, useEffect, useState } from 'react'\r\n//Core\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { BasketContext } from '../../../../core/context/BasketContext'\r\nimport { CheckoutContext } from '../../context/CheckoutContext'\r\n\r\n//MUI\r\nimport Grid from '@material-ui/core/Grid/Grid'\r\nimport Stepper from '@material-ui/core/Stepper'\r\nimport Step from '@material-ui/core/Step'\r\nimport StepLabel from '@material-ui/core/StepLabel'\r\nimport OrderDetails from './components/OrderDetails'\r\nimport Confirmation from './components/Confirmation'\r\nimport DetailedOrderView from '../Orders/DetailedOrderView'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nfunction BasketPage(props) {\r\n const { match } = props\r\n const core = useContext(CoreContext)\r\n const basketModel = useContext(BasketContext)\r\n const checkout = useContext(CheckoutContext)\r\n const [activeStep] = useState(getActiveStep)\r\n useEffect(() => {\r\n core.setTitles(core.dictionary.getLabel('checkout'))\r\n }, [])\r\n\r\n function getSteps() {\r\n return [\r\n ,\r\n ,\r\n ,\r\n ]\r\n }\r\n\r\n function getActiveStep() {\r\n switch (match.path) {\r\n case '/sales/basket':\r\n case '/fair-app/basket':\r\n return 0 // details\r\n case '/sales/basket/confirmation':\r\n case '/fair-app/basket/confirmation':\r\n return 1\r\n case '/sales/basket/receipt':\r\n case '/fair-app/basket/receipt':\r\n return 2\r\n default:\r\n return 'Unknown step'\r\n }\r\n }\r\n\r\n function advanceStep() {\r\n switch (activeStep + 1) {\r\n case 1:\r\n if (basketModel.basketType == 0) {\r\n core.history.push('/sales/basket/confirmation')\r\n } else if (basketModel.basketType == 1) {\r\n core.history.push('/fair-app/basket/confirmation')\r\n }\r\n break\r\n case 2:\r\n if (basketModel.basketType == 0) {\r\n core.history.push('/sales/basket/receipt')\r\n } else if (basketModel.basketType == 1) {\r\n core.history.push('/fair-app/basket/receipt')\r\n }\r\n break\r\n default:\r\n if (basketModel.basketType == 0) {\r\n core.history.push('/sales/basket') // details\r\n } else if (basketModel.basketType == 1) {\r\n core.history.push('/fair-app/basket')\r\n }\r\n }\r\n }\r\n\r\n function goBack() {\r\n checkout.setOrderDetailsValidated(false)\r\n if (basketModel.basketType == 0) {\r\n core.history.push('/sales/basket')\r\n } else if (basketModel.basketType == 1) {\r\n core.history.push('/fair-app/basket')\r\n }\r\n }\r\n\r\n function getCurrentStep() {\r\n switch (activeStep) {\r\n case 0:\r\n return \r\n case 1:\r\n return (\r\n \r\n )\r\n case 2:\r\n return (\r\n \r\n )\r\n default:\r\n return 'Unknown step'\r\n }\r\n }\r\n\r\n function getOrderId() {\r\n let rs = localStorage.getItem('lastOrderId')\r\n if (!rs) return undefined\r\n else return rs\r\n }\r\n\r\n return (\r\n // \r\n <>\r\n \r\n \r\n \r\n {getSteps().map((label) => (\r\n \r\n {label}\r\n \r\n ))}\r\n \r\n \r\n \r\n {getCurrentStep()}\r\n \r\n // \r\n )\r\n}\r\n\r\nexport default BasketPage\r\n","import React, { useState } from 'react'\r\nimport {\r\n Checkbox,\r\n FormControlLabel,\r\n makeStyles\r\n} from '@material-ui/core'\r\nimport Button from '@material-ui/core/Button'\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore'\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nconst facetsStyles = makeStyles(() => ({\r\n facets: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n },\r\n}))\r\n\r\nexport default function Facets(props) {\r\n const classes = facetsStyles()\r\n const { facets, selected, change, hideChosenFacetCategoryCounts } = props\r\n const brand = facets && facets.find((x) => x.name === 'brand')\r\n const subCategory = facets && facets.find((x) => x.name === 'subCategory')\r\n const mainColor = facets && facets.find((x) => x.name === 'mainColor')\r\n const categorys = facets && facets.find((x) => x.name === 'category')\r\n\r\n // hideChosenFacetCategoryCounts is used to hide counts that are incorrect in fairApp\r\n // They are only incorrect once a facet in their category is chosen\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\nconst facetStyles = makeStyles((theme) => ({\r\n facet: {\r\n position: 'relative',\r\n },\r\n btn: {\r\n 'borderRadius': 4,\r\n 'whiteSpace': 'nowrap',\r\n 'textTransform': 'uppercase',\r\n 'display': 'inline-flex',\r\n 'padding': '5px 4px 4px 10px',\r\n 'marginLeft': 5,\r\n 'fontSize': 14,\r\n 'cursor': 'pointer',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[300],\r\n },\r\n },\r\n btnCount: {\r\n fontSize: 10,\r\n display: 'inline-block',\r\n backgroundColor: 'white',\r\n padding: '2px 3px 1px',\r\n borderRadius: 1,\r\n lineHeight: 1,\r\n height: 14,\r\n color: theme.palette.grey[700],\r\n margin: '2px 3px 0 7px',\r\n },\r\n lists: {\r\n position: 'relative',\r\n top: 14,\r\n left: 0,\r\n zIndex: 10,\r\n },\r\n cbList: {\r\n position: 'absolute',\r\n width: 310,\r\n backgroundColor: 'white',\r\n padding: '6px 0px 15px 15px',\r\n top: 0,\r\n left: 0,\r\n border: '1px solid #EAEAEA',\r\n height: 410,\r\n },\r\n listItems: {\r\n 'maxHeight': 340,\r\n 'overflowY': 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: 5,\r\n height: 5,\r\n },\r\n '&::-webkit-scrollbar-thumb': {\r\n background: theme.palette.grey[400],\r\n },\r\n '&::-webkit-scrollbar-track': {\r\n background: theme.palette.grey[100],\r\n },\r\n // For Internet Explorer\r\n 'scrollbarFaceColor': theme.palette.grey[400],\r\n 'scrollbarTrackColor': theme.palette.grey[100],\r\n 'scrollbarShadowColor': theme.palette.grey[400],\r\n 'scrollbarDarkShadowColor': theme.palette.grey[400],\r\n },\r\n listItemsExtra: {\r\n maxHeight: 310,\r\n overflowY: 'auto',\r\n },\r\n cbListExtra: {\r\n backgroundColor: theme.palette.grey[100],\r\n left: 249,\r\n borderLeft: 'none',\r\n },\r\n angle: {\r\n marginTop: -3,\r\n },\r\n label: {\r\n 'display': 'block',\r\n\r\n '& .MuiFormControlLabel-label': {\r\n fontSize: 15,\r\n },\r\n\r\n '& sup': {\r\n color: theme.palette.grey[600],\r\n verticalAlign: 'text-top',\r\n fontSize: '70%',\r\n },\r\n },\r\n ctaBtn: {\r\n position: 'absolute',\r\n top: 405,\r\n left: 10,\r\n zIndex: 11,\r\n },\r\n cb: {\r\n padding: '6px 10px',\r\n },\r\n titleExtra: {\r\n textTransform: 'uppercase',\r\n fontSize: 14,\r\n margin: '9px 0 5px',\r\n },\r\n}))\r\n\r\nfunction Facet(props) {\r\n const classes = facetStyles()\r\n const [open, setOpen] = useState(false)\r\n const {\r\n change,\r\n facet,\r\n checked,\r\n children = null,\r\n hideChosenFacetCategoryCounts,\r\n } = props\r\n const hasChildren = children != null\r\n\r\n function handleToggle() {\r\n if (open) {\r\n handleClose()\r\n } else {\r\n handleOpen()\r\n }\r\n }\r\n\r\n const handleOpen = () => {\r\n setOpen(true)\r\n document\r\n .getElementById('root')\r\n .addEventListener('click', handleOutsideClick)\r\n }\r\n\r\n const handleClose = () => {\r\n setOpen(false)\r\n document\r\n .getElementById('root')\r\n .removeEventListener('click', handleOutsideClick)\r\n }\r\n\r\n const handleOutsideClick = (e) => {\r\n let $element = e.target\r\n let outsideTarget = $element.closest(`#${facet.name}`) === null\r\n if (outsideTarget) {\r\n handleClose()\r\n }\r\n }\r\n\r\n if (!facet) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {checked.length > 0 && (\r\n {checked.length}\r\n )}\r\n \r\n \r\n {open && (\r\n
\r\n
\r\n
\r\n
\r\n {/* alphabetic sort */}\r\n {facet.facetValues\r\n .sort((a, b) =>\r\n a.name < b.name ? -1 : Number(a.name > b.name),\r\n )\r\n .map((fv) => (\r\n \r\n {fv.name}{' '}\r\n {!(\r\n hideChosenFacetCategoryCounts && checked.length\r\n ) && ({fv.count})}\r\n \r\n }\r\n control={\r\n }\r\n checkedIcon={}\r\n className={classes.cb}\r\n onChange={(e) => change(facet.name, fv.id)}\r\n />\r\n }\r\n />\r\n ))}\r\n
\r\n
\r\n {checked.length > 0 && hasChildren && children}\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, { useContext, useState, useRef, useEffect } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { makeStyles, Grid, TextField, Button } from '@material-ui/core'\r\n\r\nimport { CategoryContext } from '../context/CategoryContext'\r\nimport { ProductsContext } from '../context/ProductsContext'\r\nimport { BasketContext } from '../../../core/context/BasketContext'\r\n\r\nimport priceDtoHelper from '../../../shared/PriceDtoHelper'\r\nimport InriverImage from '../../../core/components/InriverImage'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nimport StockItem from './StockItem'\r\nimport AddIcon from '@material-ui/icons/Add'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n imgWrapper: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n },\r\n imgWrapperInner: {\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n img: {\r\n maxWidth: '100%',\r\n maxHeight: '100%',\r\n },\r\n label: {\r\n textTransform: 'uppercase',\r\n fontSize: 11,\r\n position: 'absolute',\r\n top: 5,\r\n left: 7,\r\n backgroundColor: 'rgba(255, 255, 255, .6)',\r\n padding: '1px 3px',\r\n color: theme.palette.grey[600],\r\n },\r\n labelDiscount: {\r\n left: 'auto',\r\n right: 7,\r\n fontWeight: 'bold',\r\n fontSize: 12,\r\n },\r\n title: {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n margin: '0 10px',\r\n display: 'block',\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n fontSize: 16,\r\n },\r\n },\r\n small: {\r\n fontSize: 13,\r\n },\r\n double: {\r\n display: 'flex',\r\n borderBottom: '1px solid',\r\n borderBottomColor: theme.palette.grey[200],\r\n paddingBottom: 5,\r\n marginTop: 5,\r\n padding: '0 10px',\r\n flexWrap: 'wrap',\r\n },\r\n box: {\r\n height: '100%',\r\n borderWidth: 1,\r\n borderColor: theme.palette.grey[200],\r\n borderStyle: 'solid',\r\n },\r\n head: {\r\n position: 'relative',\r\n height: 0,\r\n overflow: 'hidden',\r\n paddingTop: '71.5%',\r\n },\r\n info: {\r\n marginTop: 'auto',\r\n },\r\n quantityOptionsHeader: {\r\n display: 'block',\r\n marginRight: '15px'\r\n },\r\n quantityOptionsCell: {\r\n display:'block',\r\n whiteSpace:'nowrap'\r\n },\r\n quantityOptions: { display:'flex',fontWeight:'400',lineHeight:'1.5',letterSpacing:'0.00938em',padding:'5px 10px',fontSize:'13px',margin: '10px 0'},\r\n priceNormal: {\r\n fontSize: 12,\r\n color: theme.palette.grey[500],\r\n display: 'block',\r\n },\r\n priceText: {\r\n fontSize: 12,\r\n color: theme.palette.grey[500],\r\n display: 'inline-block',\r\n marginLeft: 10,\r\n },\r\n currency: {\r\n position: 'absolute',\r\n top: '-16px',\r\n left: '62px',\r\n color: theme.palette.grey[600],\r\n fontSize: 12,\r\n },\r\n priceYours: {\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n display: 'inline-block',\r\n },\r\n btn: {\r\n color: 'white',\r\n backgroundColor: 'black',\r\n flexGrow: 1,\r\n height: 40,\r\n marginLeft: '5px',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n}))\r\n\r\nexport default function(props) {\r\n const { product = {}, showRetailPrice } = props\r\n const classes = useStyles()\r\n const categories = useContext(CategoryContext)\r\n const productsModel = useContext(ProductsContext)\r\n const basket = useContext(BasketContext)\r\n const [currentPrice, setCurrentPrice] = useState(priceDtoHelper.findPrice(props.product.colli, props.product))\r\n const [quantity, setQuantity] = useState(props.product.colli)\r\n const inputRef = useRef(null)\r\n\r\n useEffect(() => {\r\n if (quantity === '') {\r\n return\r\n }\r\n\r\n if (quantity <= 0) {\r\n handleChangeQuantity({\r\n target: {\r\n value:\r\n (props.product.priceDtos[0] && props.product.priceDtos[0].minQuantity) || 1,\r\n },\r\n })\r\n }\r\n }, [quantity])\r\n\r\n const handleChangeQuantity = (e) => {\r\n let val = e.target.value\r\n let price = priceDtoHelper.findPrice(val, props.product)\r\n\r\n setQuantity(val)\r\n setCurrentPrice(price)\r\n }\r\n\r\n const addToBasket = (e) => {\r\n basket.add({\r\n itemId: props.product.productNo,\r\n qty: priceDtoHelper.findNextAllowedNumber(props.product, quantity),\r\n campaignId: null,\r\n requestedShippingDate: null,\r\n })\r\n }\r\n\r\n const onBlurHandler = () => {\r\n const allowedQuantity = priceDtoHelper.findNextAllowedNumber(props.product, quantity)\r\n setQuantity(allowedQuantity)\r\n setCurrentPrice(priceDtoHelper.findPrice(allowedQuantity, props.product))\r\n }\r\n\r\n const getBrandLabel = (id) => {\r\n if (!categories) {\r\n return null\r\n }\r\n const brandItem =\r\n categories.brands && categories.brands.find((el) => el.id === id)\r\n return brandItem && brandItem.label\r\n }\r\n\r\n const renderColiQuntity = () => {\r\n var price = props.product.priceDtos.find(e => e.priceType == priceDtoHelper.priceEnum.Archive || e.priceType == priceDtoHelper.priceEnum.Campaign)\r\n\r\n if (!price) {\r\n return props.product.colli;\r\n }\r\n\r\n return price.minQuantity;\r\n }\r\n\r\n const renderColiName = () => {\r\n var price = props.product.priceDtos.find(e => e.priceType == priceDtoHelper.priceEnum.Archive || e.priceType == priceDtoHelper.priceEnum.Campaign)\r\n\r\n if (!price) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n if (price.priceType == priceDtoHelper.priceEnum.Campaign) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n else {\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 {getBrandLabel(product.brandNo)}\r\n \r\n\r\n {priceDtoHelper.hasDiscount(currentPrice) && (\r\n \r\n -{currentPrice.discountPercentage}%\r\n \r\n )}\r\n \r\n \r\n \r\n {product.description}\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n {product.productNo}\r\n \r\n\r\n \r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n {props.product.colli !== 1 && ()}\r\n {renderColiName()}\r\n Brownbox\r\n
\r\n
\r\n {props.product.colli !== 1 && (1-{props.product.colli-1} )}\r\n {renderColiQuntity()} \r\n {props.product.brownBox.numberOfItemsInBox} \r\n
\r\n
\r\n
\r\n \r\n {!props.showRetailPrice && (\r\n <>\r\n {priceDtoHelper.hasDiscount(currentPrice) && (\r\n {currentPrice.grossPrice}\r\n )}\r\n {currentPrice.netPrice}\r\n \r\n )}\r\n\r\n {props.showRetailPrice && (\r\n \r\n {props.product.recommendedRetailPrice}\r\n \r\n )}\r\n \r\n
\r\n\r\n \r\n {inputRef.current.select(0, -1)}}\r\n label={}\r\n variant='outlined'\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 from 'react'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { Typography, Button, Modal, makeStyles } from '@material-ui/core'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n modalWrapper: {\r\n backgroundColor: 'white',\r\n width: '500px',\r\n maxWidth: '100%',\r\n margin: 'auto',\r\n position: 'relative',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n padding: '25px',\r\n paddingTop: 10,\r\n textAlign: 'center',\r\n outline: 'none',\r\n },\r\n openOrderModalLine: {\r\n cursor: 'pointer',\r\n margin: 5,\r\n },\r\n}))\r\n\r\nconst OpenOrdersModal = (props) => {\r\n const { openOrdersProduct, setOpenOrdersModal } = props\r\n const classes = useStyles()\r\n\r\n return (\r\n setOpenOrdersModal(undefined)}>\r\n
\r\n \r\n \r\n \r\n {openOrdersProduct &&\r\n openOrdersProduct.openOrders.map((order) => (\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n ))}\r\n\r\n setOpenOrdersModal(undefined)}>\r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default OpenOrdersModal\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport InfiniteScroll from 'react-infinite-scroller'\r\nimport {\r\n makeStyles,\r\n TextField,\r\n InputAdornment,\r\n LinearProgress,\r\n FormControl,\r\n FormControlLabel,\r\n Switch,\r\n Button,\r\n Drawer,\r\n MenuItem,\r\n Select,\r\n CircularProgress,\r\n Typography,\r\n Grid\r\n} from \"@material-ui/core\";\r\n\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { ProductsContext } from '../../context/ProductsContext'\r\n\r\nimport ProductSearchBarFacets from './ProductSearchBarFacets'\r\nimport EmptyState from '../../components/EmptyState'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport GridViewItem from '../../components/GridViewItem'\r\nimport TableView from '../../components/TableView'\r\nimport OpenOrdersModal from './OpenOrdersModal'\r\n\r\nimport SearchIcon from '@material-ui/icons/Search'\r\nimport MoreIcon from '@material-ui/icons/More';\r\nimport GridOnIcon from '@material-ui/icons/GridOn'\r\nimport ListIcon from '@material-ui/icons/List'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n productsPageRoot: {\r\n width: 'calc(100% + 32px)',\r\n margin: '-8px 20px 0 -16px',\r\n flexGrow: 1,\r\n background: 'white',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n height: 'calc(100% - 31px)',\r\n position: 'relative',\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n margin: '-17px 20px 0 -16px',\r\n },\r\n },\r\n ProductsPageHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n backgroundColor: '#EAEAEA',\r\n padding: '10px 15px',\r\n\r\n [theme.breakpoints.down('sm')]: {\r\n alignItems: 'flex-start',\r\n flexDirection: 'column-reverse'\r\n },\r\n },\r\n ProductsPageSearch: {\r\n background: '#fff',\r\n borderRadius: 4,\r\n\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%',\r\n marginBottom: 10\r\n },\r\n },\r\n textField: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%'\r\n },\r\n '&::-webkit-search-decoration,::-webkit-search-cancel-button,::-webkit-search-results-button,::-webkit-search-results-decoration': {\r\n display: 'none'\r\n }\r\n },\r\n ProductsPageFacets: {\r\n marginLeft: -10\r\n },\r\n stickyloader: {\r\n width: '100%',\r\n visibility: 'hidden',\r\n position: 'absolute'\r\n },\r\n loaderVisible: {\r\n visibility: 'visible',\r\n },\r\n resetButton: {\r\n display: 'inline-block',\r\n border: '1px solid lightgrey',\r\n marginRight: 5,\r\n marginBottom: 5,\r\n borderRadius: 2,\r\n padding: 5,\r\n },\r\n resetButtonText: {\r\n verticalAlign: 'middle',\r\n },\r\n greyedOutResetButtonText: {\r\n color: theme.palette.grey['500'],\r\n },\r\n resetButtonIcon: {\r\n verticalAlign: 'middle',\r\n marginLeft: 5,\r\n width: 15,\r\n height: 15,\r\n },\r\n ProductsPageSubHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n padding: '10px 15px',\r\n borderBottom: '1px solid rgba(0, 0, 0, .12)',\r\n\r\n [theme.breakpoints.down('md')]: {\r\n flexDirection: 'column-reverse',\r\n alignItems: 'flex-start',\r\n },\r\n },\r\n ProductsPageHeaderResults: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n ProductsPageSettings: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexWrap: 'wrap',\r\n\r\n [theme.breakpoints.down('md')]: {\r\n marginBottom: 10,\r\n width: '100%'\r\n },\r\n },\r\n ProductsPageSettingsLast: {\r\n [theme.breakpoints.down('md')]: {\r\n marginLeft: 'auto',\r\n },\r\n },\r\n ProductsPageHeaderResultsLast: {\r\n marginLeft: 10,\r\n paddingLeft: 10,\r\n borderLeft: '2px solid rgba(0, 0, 0, .12)'\r\n },\r\n cursor: {\r\n cursor: 'pointer',\r\n textDecoration: 'underline'\r\n },\r\n drawer: {\r\n padding: '20px 10px',\r\n width: 300\r\n },\r\n moreOptionsRow: {\r\n width: '100%',\r\n marginBottom: '20px',\r\n paddingBottom: '20px',\r\n borderBottom: '1px solid rgba(0, 0, 0, .12)'\r\n },\r\n scrollableProducts: {\r\n marginTop: 25,\r\n overflowY: 'scroll',\r\n flex: '1 1 auto',\r\n },\r\n}))\r\n\r\nexport default function ProductsPageV2() {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const productsModel = useContext(ProductsContext)\r\n const [openOrdersModal, setOpenOrdersModal] = useState(undefined)\r\n const [showRetailPrice, setShowRetailPrice] = useState(false)\r\n const [uploadLoading, setUploadLoading] = useState(false)\r\n const [drawerState, setDrawerState] = useState({\r\n moreOptions: false,\r\n filters: false\r\n })\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo) {\r\n productsModel.init()\r\n }\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n useEffect(() => {\r\n if (productsModel.getSelecteFacetValuesCount() == 0) {\r\n setDrawerState({ ...drawerState, ['filters']: false })\r\n }\r\n }, [productsModel.selectedFacetValues])\r\n\r\n const downloadExcelOfItems = (e) => {\r\n e.preventDefault();\r\n\r\n setUploadLoading(true);\r\n\r\n productsModel.searchExcel((data) => {\r\n if (data === undefined) {\r\n setUploadLoading(false);\r\n\r\n core.snackbar('warning', 'Something went wrong when trying to download excel')\r\n\r\n return\r\n }\r\n\r\n const href = URL.createObjectURL(data.data)\r\n const date = new Date()\r\n const link = document.createElement('a')\r\n\r\n link.href = href\r\n link.setAttribute('download', `Products_${date.getFullYear()}-${date.getDate() >= 9 ? date.getDate() : '0' + date.getDate()}-${date.getMonth() >= 9 ? date.getMonth() : '0' + date.getMonth()}_${date.getHours() >= 9 ? date.getHours() : '0' + date.getHours()}_${date.getMinutes() >= 9 ? date.getMinutes() : '0' + date.getMinutes()}_${date.getSeconds() >= 9 ? date.getSeconds() : '0' + date.getSeconds()}.xlsm`)\r\n\r\n document.body.appendChild(link)\r\n\r\n link.click()\r\n\r\n document.body.removeChild(link)\r\n URL.revokeObjectURL(href)\r\n\r\n setUploadLoading(false)\r\n });\r\n }\r\n\r\n const getFacetLabelByCategoryAndId = (category, id) => {\r\n if (!productsModel.allFacets || !productsModel.allFacets.find((el) => el.name === category)) {\r\n return\r\n }\r\n\r\n let facetLabel = ''\r\n let count = productsModel\r\n .searchCollection\r\n .facets\r\n .find((el) => el.name === category)\r\n .facetValues.find((el) => el.id === id)?.count ?? 0\r\n\r\n if (category === 'news') {\r\n facetLabel = ( ({count}))\r\n } else if (category === 'archive') {\r\n facetLabel = ( ({count}))\r\n } else {\r\n const label = productsModel.allFacets.find((el) => el.name === category).facetValues.find((el) => el.id === id)\r\n facetLabel = label && `${label.name} (${count})`\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {facetLabel}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const getArrayOfFacets = (selectedFacetValues) => {\r\n let facets = []\r\n for (const category in selectedFacetValues) {\r\n selectedFacetValues[category].forEach((el) => {\r\n facets.push({ category, value: el })\r\n })\r\n }\r\n return facets\r\n }\r\n\r\n return (\r\n
\r\n el && el.productNo == openOrdersModal)}\r\n setOpenOrdersModal={setOpenOrdersModal}\r\n />\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n {\r\n if (e.key === 'Enter') {\r\n productsModel.handleSearchQueryChange(productsModel.query)\r\n }\r\n }}\r\n placeholder={core.dictionary.getLabel('searchProducts')}\r\n type='search'\r\n className={classes.textField}\r\n variant='outlined'\r\n onChange={(e) => productsModel.setQuery(e.target.value)}\r\n value={productsModel.query}\r\n size='small'\r\n InputProps={{\r\n startAdornment: ,\r\n endAdornment: {\r\n productsModel.setQuery('')\r\n productsModel.handleSearchQueryChange('')\r\n }}\r\n className={classes.searchIcon} />\r\n }}\r\n />\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n {productsModel.searchCollection.totalNumberOfResults ?? 0} \r\n \r\n
\r\n\r\n {(productsModel.getSelecteFacetValuesCount() > 0) && (\r\n
\r\n setDrawerState({ ...drawerState, ['filters']: true })}>\r\n ({productsModel.getSelecteFacetValuesCount()})\r\n \r\n setDrawerState({ ...drawerState, ['filters']: false })}>\r\n
\r\n productsModel.reset()}\r\n className={classes.resetButton}>\r\n \r\n \r\n \r\n \r\n \r\n\r\n {getArrayOfFacets(productsModel.selectedFacetValues).map((el) => (\r\n productsModel.toggleFacetValue(el.category, el.value)}\r\n className={classes.resetButton}>\r\n {getFacetLabelByCategoryAndId(el.category, el.value)}\r\n \r\n ))}\r\n\r\n {productsModel.query != \"\" && (\r\n {\r\n productsModel.setQuery(\"\")\r\n productsModel.handleSearchQueryChange(\"\")\r\n }}\r\n className={classes.resetButton}>\r\n <>\r\n \r\n {productsModel.query}\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n )}\r\n
\r\n\r\n
\r\n {core.user.userSetting.showArchiveCheckbox && (\r\n \r\n }\r\n control={\r\n productsModel.setCampaignOrArchive('archive', !productsModel.onlyArchive)}\r\n color='primary'\r\n />\r\n }\r\n />\r\n \r\n )}\r\n\r\n \r\n }\r\n control={\r\n productsModel.setCampaignOrArchive('campaign', !productsModel.onlyCampaign)}\r\n name='campaign'\r\n color='primary'\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n }\r\n control={\r\n productsModel.toggleFacetValue('news', productsModel.allFacets.find((x) => x.name === 'news')?.facetValues[1]?.id)}\r\n name='newsOnly'\r\n color='primary'\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n }\r\n control={\r\n setShowRetailPrice(!showRetailPrice)}\r\n color='primary'\r\n />\r\n }\r\n />\r\n \r\n\r\n setDrawerState({ ...drawerState, ['moreOptions']: true })}/>\r\n setDrawerState({ ...drawerState, ['moreOptions']: false })}>\r\n
\r\n {core.user.userSetting.downloadExcelOfItems && (\r\n
\r\n Download din søgning til excel\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n
\r\n \r\n \r\n \r\n \r\n productsModel.handleSortByChange(event.target.value)}\r\n className={classes.selectEmpty}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n Vælg visning form\r\n \r\n \r\n productsModel.setListViewMode(event.target.value)}\r\n className={classes.selectEmpty}>\r\n \r\n List\r\n \r\n \r\n Grid\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n {productsModel.searchCollection.products && (\r\n
\r\n \r\n {productsModel.listViewMode === 'list' ? (\r\n \r\n ) : (\r\n \r\n {productsModel.searchCollection.products.map((product) => (\r\n \r\n ))}\r\n \r\n )}\r\n \r\n
\r\n )}\r\n\r\n {!productsModel.isLoading && productsModel.searchCollection.totalNumberOfResults === 0 && (\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { CircularProgress, makeStyles } from '@material-ui/core'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport DetailedItemTemplate from './DetailedItemTemplate'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n loader: {\r\n marginTop: 100,\r\n textAlign: 'center',\r\n },\r\n}))\r\n\r\nexport default function DetailedProductView(props) {\r\n const itemId = props.match.params.id\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [itemDetails, setItemDetails] = useState({\r\n productNo: '',\r\n description: '',\r\n colli: '',\r\n brandNo: '',\r\n designCollectionNo: '',\r\n functionGroupNo: '',\r\n inventoryQuantity: '',\r\n multiplesQuantity: '',\r\n orderMultiple: '',\r\n width: '',\r\n height: '',\r\n depth: '',\r\n inriverId: 0,\r\n defaultPriceDto: {\r\n minQuantity: 0,\r\n grossPrice: 0,\r\n netPrice: 0,\r\n discountPercentage: 0,\r\n },\r\n priceDtos: [\r\n {\r\n minQuantity: 0,\r\n grossPrice: 0,\r\n netPrice: 0,\r\n discountPercentage: 0,\r\n },\r\n ],\r\n dimension: [\r\n {\r\n depthCm: 0,\r\n widthCm: 0,\r\n heightCm: 0,\r\n volumeL: 0,\r\n diameterCm: 0,\r\n grossWeightKg: 0,\r\n },\r\n ],\r\n giftBox: [\r\n {\r\n depthCm: 0,\r\n widthCm: 0,\r\n heightCm: 0,\r\n noOfGiftBoxesPerPallet: 0,\r\n },\r\n ],\r\n brownBox: [\r\n {\r\n boxEanCode: 0,\r\n depthCm: 0,\r\n widthCm: 0,\r\n heightCm: 0,\r\n numberOfItemsInBox: 0,\r\n },\r\n ],\r\n })\r\n\r\n function load() {\r\n return core.dataStore\r\n .getProductById(\r\n core.user.selectedCustomer.accountNo,\r\n itemId,\r\n core.user.languageCode,\r\n core.user.userId,\r\n )\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setItemDetails(res.data)\r\n setIsLoading(false)\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n }\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo) {\r\n load()\r\n }\r\n }, [core.user.userId, core.user.selectedCustomer.accountNo])\r\n\r\n return isLoading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState, useRef } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport { makeStyles, Button, TextField } from '@material-ui/core'\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined'\r\nimport CircularProgress from '@material-ui/core/CircularProgress'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport TableChartIcon from '@material-ui/icons/TableChart'\r\n\r\nimport BackButton from '../../components/BackButton'\r\nimport PrintButton from '../../components/PrintButton'\r\nimport ReactToPrint from 'react-to-print'\r\nimport { saveAsCsv } from '../../../../shared/SaveAsCsv'\r\nimport ValidateEmail from '../../../../shared/EmailValidation'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n border: '1px solid #e0e0e0',\r\n backgroundColor: '#F5F5F5',\r\n overflowX: 'auto',\r\n padding: 30,\r\n paddingTop: 10,\r\n maxWidth: '1042px',\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nconst emailSendingStatusEnum = {\r\n SENDING: 'SENDING',\r\n SENT: 'SENT',\r\n ERROR: 'ERROR',\r\n INITIAL: null,\r\n}\r\n\r\nexport default function DetailedInvoiceView(props) {\r\n const { SENDING, SENT, ERROR, INITIAL } = emailSendingStatusEnum\r\n const classes = useStyles()\r\n const invoiceId = props.invoiceId ? props.invoiceId : props.match.params.id\r\n const core = useContext(CoreContext)\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [showEmailField, setShowEmailField] = useState(false)\r\n const [email, setEmail] = useState(core.user.selectedCustomer.email)\r\n const [emailSentStatus, setEmailSentStatus] = useState(INITIAL)\r\n const [invoice, setInvoice] = useState() //only used to save as excel\r\n const componentRef = useRef(null)\r\n const [highlight, setHighlight] = useState(false)\r\n\r\n useEffect(() => {\r\n setEmail(core.user.selectedCustomer.email)\r\n }, [core.user.selectedCustomer.email])\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo) {\r\n core.dataStore\r\n .getInvoiceDetailed(core.user.selectedCustomer.accountNo, invoiceId)\r\n .then((res) => {\r\n setInvoice(res.data)\r\n })\r\n core.dataStore\r\n .getInvoiceHtml(\r\n core.user.selectedCustomer.accountNo,\r\n invoiceId,\r\n core.user.language,\r\n )\r\n .then((res) => {\r\n document.getElementById('invoice').innerHTML = res.data\r\n })\r\n .catch((err) => setIsLoading(false))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const displayWarning = (x) => (x === undefined || x.length < 3 || !emailValidated) && highlight ? true : false\r\n var emailValidated = false\r\n\r\n const sendEmail = () => {\r\n if (ValidateEmail(email)) {\r\n emailValidated = true\r\n setHighlight(false)\r\n\r\n setEmailSentStatus(SENDING)\r\n core.dataStore\r\n .emailInvoice(\r\n email,\r\n core.user.language,\r\n core.user.selectedCustomer.accountNo,\r\n invoiceId,\r\n )\r\n .then(() => setEmailSentStatus(SENT))\r\n .catch((err) => setEmailSentStatus(ERROR))\r\n } else {\r\n core.snackbar('warning', 'Wrong email format!')\r\n emailValidated = false\r\n setHighlight(true)\r\n }\r\n }\r\n\r\n const saveCsv = () => {\r\n const rows = []\r\n //first row is headers\r\n rows[0] = [\r\n invoice.invoiceName,\r\n `${core.dictionary.getLabel('invoice')} ${invoice.invoice.invoiceNumber}`,\r\n ]\r\n rows[1] = [\r\n 'itemId',\r\n 'itemDescription',\r\n 'qty',\r\n 'salesPrice',\r\n 'discountPercentage',\r\n 'totalPrice',\r\n ].map((el) => core.dictionary.getLabel(el))\r\n invoice.invoiceLines.forEach((productLine, i) => {\r\n const {\r\n itemId,\r\n itemDescription,\r\n qty,\r\n salesPrice,\r\n discountPercentage,\r\n lineAmount,\r\n } = productLine\r\n rows[i + 2] = [\r\n itemId,\r\n itemDescription,\r\n qty,\r\n salesPrice,\r\n discountPercentage,\r\n lineAmount,\r\n ]\r\n })\r\n rows[rows.length] = [''] //space\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('orderTotal'),\r\n '',\r\n '',\r\n '',\r\n '',\r\n invoice.orderBalance,\r\n ]\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('vatAmount'),\r\n '',\r\n '',\r\n '',\r\n '',\r\n invoice.vatAmount,\r\n ]\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('orderAmount'),\r\n '',\r\n '',\r\n '',\r\n '',\r\n invoice.totalInvoiceAmount,\r\n ]\r\n\r\n saveAsCsv(\r\n rows.map((el) => el.join(';')).join('\\n'),\r\n `${core.dictionary.getLabel('invoice')}-${invoice.invoice.invoiceNumber}`,\r\n )\r\n }\r\n\r\n const EmailField = (\r\n <>\r\n setEmail(e.target.value)}\r\n />\r\n sendEmail()}>\r\n \r\n \r\n \r\n )\r\n\r\n const renderEmailStatus = () => {\r\n switch (emailSentStatus) {\r\n case SENT:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case SENDING:\r\n return (\r\n \r\n )\r\n case ERROR:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case INITIAL:\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n }\r\n content={() => componentRef.current}\r\n />\r\n \r\n {showEmailField ? (\r\n <>\r\n {EmailField} {renderEmailStatus()}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {invoiceId.length > 0 ? isLoading ? : null : null}\r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport Table from '@material-ui/core/Table/Table'\r\nimport TableHead from '@material-ui/core/TableHead/TableHead'\r\nimport TableRow from '@material-ui/core/TableRow/TableRow'\r\nimport TableCell from '@material-ui/core/TableCell/TableCell'\r\nimport TableBody from '@material-ui/core/TableBody/TableBody'\r\nimport withStyles from '@material-ui/core/styles/withStyles'\r\nimport { lighten } from '@material-ui/core/styles/colorManipulator'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n width: '100%',\r\n overflowX: 'auto',\r\n boxShadow: 'none',\r\n },\r\n table: {\r\n fontFamily: theme.typography.fontFamily,\r\n minWidth: 700,\r\n },\r\n flexContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n boxSizing: 'border-box',\r\n },\r\n tableRow: {\r\n cursor: 'pointer',\r\n },\r\n tableRowHover: {\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[200],\r\n },\r\n },\r\n tableCell: {\r\n flex: 1,\r\n },\r\n noClick: {\r\n cursor: 'initial',\r\n },\r\n highlight:\r\n theme.palette.type === 'light'\r\n ? {\r\n color: theme.palette.primary.main,\r\n backgroundColor: lighten(theme.palette.primary.light, 0.85),\r\n }\r\n : {\r\n color: theme.palette.text.primary,\r\n backgroundColor: theme.palette.primary.dark,\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n actions: {\r\n color: theme.palette.text.secondary,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n outlined: {\r\n boxShadow: 'none',\r\n padding: theme.spacing(0),\r\n },\r\n topBorder: {\r\n borderTop: '1px solid #000',\r\n borderRadius: 0,\r\n },\r\n})\r\n\r\nfunction ResponsiveTable(props) {\r\n const {\r\n classes,\r\n headers,\r\n rows,\r\n selected,\r\n isOutlined,\r\n topBorder,\r\n select,\r\n stickyHeader,\r\n } = props\r\n\r\n const handleClick = (_, id) => {\r\n if (!select) return\r\n\r\n let newSelected = id\r\n if (newSelected === selected) newSelected = -1\r\n select(newSelected)\r\n }\r\n\r\n function extractCell(cell) {\r\n return cell ? (cell.isString ? cell.toString() : cell) : null\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {headers.map((h, k) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n {\r\n \r\n {rows.map((r, k) => {\r\n return (\r\n handleClick(event, r[0])}\r\n selected={selected === r[0]}>\r\n {r.map((c, k) => (\r\n \r\n {extractCell(c)}\r\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 default withStyles(styles)(ResponsiveTable)\r\n","import React, { useEffect } from 'react'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nexport default function PageTitle(props) {\r\n const { label, core, hidden } = props\r\n\r\n useEffect(() => {\r\n core.setTitles(core.dictionary.getLabel(label))\r\n }, [])\r\n\r\n return (\r\n hidden != true && (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n )\r\n}\r\n","import { useContext, useEffect, useState } from 'react'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\n\r\nexport function useInvoiceModel() {\r\n const core = useContext(CoreContext)\r\n const accountNo = core.user.selectedCustomer.accountNo\r\n\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [invoices, setInvoices] = useState([])\r\n const [page, setPage] = useState(1)\r\n const [offset] = useState(25)\r\n const [eofCount, setEofCount] = useState(Infinity) //until the api can provide a count\r\n const [invoicesCount, setInvoicesCount] = useState(0) //until the api can provide a count\r\n\r\n function reset() {\r\n setInvoicesCount(0)\r\n setInvoices([])\r\n setPage(1)\r\n }\r\n\r\n function setSearchInput(input) {\r\n search(input)\r\n }\r\n\r\n function search(txt) {\r\n if (txt === '') {\r\n load(1)\r\n loadInvoicesCount()\r\n } else {\r\n if (isLoading) return\r\n setIsLoading(true)\r\n setPage(1)\r\n core.dataStore\r\n .searchInvoices(accountNo, txt)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setInvoices(res.data)\r\n setInvoicesCount(res.data?.length)\r\n setEofCount(1)\r\n } else core.snackbar('warning', res.statusText)\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n }\r\n\r\n function loadInvoicesCount() {\r\n if (!accountNo) {\r\n return\r\n }\r\n core.dataStore\r\n .getInvoicesCount(accountNo)\r\n .then((res) => {\r\n console.log('invoices res', res.status, res.data)\r\n if (res.status === 200) {\r\n const count = res.data\r\n setInvoicesCount(count)\r\n setEofCount(Math.ceil(count / offset))\r\n } else core.snackbar('warning', res.statusText)\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n })\r\n }\r\n\r\n function load(page) {\r\n if (isLoading || !accountNo) return\r\n setIsLoading(true)\r\n\r\n core.dataStore\r\n .getInvoices(accountNo, page, offset)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n let data = Array.isArray(res.data) ? res.data : []\r\n setInvoices(data)\r\n } else core.snackbar('warning', res.statusText)\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n function incrementPage() {\r\n if (hasNext() && !isLoading) {\r\n setInvoices([])\r\n load(page + 1)\r\n setPage(page + 1)\r\n }\r\n }\r\n function decrementPage() {\r\n if (hasPrev() && !isLoading) {\r\n setInvoices([])\r\n load(page - 1)\r\n setPage(page - 1)\r\n }\r\n }\r\n\r\n function hasPrev() {\r\n return page > 1\r\n }\r\n\r\n function hasNext() {\r\n return eofCount > page\r\n }\r\n\r\n useEffect(() => {\r\n if (accountNo) {\r\n reset()\r\n load(page)\r\n loadInvoicesCount()\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [accountNo])\r\n\r\n return {\r\n customer: accountNo,\r\n isLoading,\r\n invoices,\r\n page,\r\n incrementPage,\r\n decrementPage,\r\n hasNext,\r\n hasPrev,\r\n invoicesCount,\r\n eofCount,\r\n setSearchInput\r\n }\r\n}\r\n","import React, { createContext } from 'react'\r\nimport { useInvoiceModel } from '../model/InvoicesModel'\r\n\r\nexport const InvoiceContext = createContext(null)\r\n\r\nexport default function InvoiceProvider({ children }) {\r\n const model = useInvoiceModel()\r\n\r\n return (\r\n {children}\r\n )\r\n}\r\n","export function formatDate(date) {\r\n let dateObj = new Date(date)\r\n\r\n let day = dateObj.getDate()\r\n if (day < 10) {\r\n day = '0' + day\r\n }\r\n let month = dateObj.getMonth() + 1\r\n if (month < 10) {\r\n month = '0' + month\r\n }\r\n return `${day}-${month}-${dateObj.getFullYear()}`\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport Avatar from '@material-ui/core/Avatar'\r\nimport List from '@material-ui/core/List'\r\nimport ListItem from '@material-ui/core/ListItem'\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar'\r\nimport ListItemText from '@material-ui/core/ListItemText'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport ShippingIcon from '@material-ui/icons/LocalShipping'\r\nimport { blue } from '@material-ui/core/colors'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { CircularProgress } from '@material-ui/core'\r\nimport EmptyState from '../../components/EmptyState'\r\nimport DialogContent from '@material-ui/core/DialogContent'\r\nimport Button from '@material-ui/core/Button'\r\nimport DialogActions from '@material-ui/core/DialogActions'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport PageTitle from '../../components/PageTitle'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n content: {\r\n padding: 0,\r\n paddingTop: theme.spacing(1),\r\n paddingBottom: theme.spacing(1),\r\n },\r\n avatar: {\r\n backgroundColor: blue[100],\r\n color: blue[600],\r\n },\r\n loader: {\r\n textAlign: 'center',\r\n display: 'flex',\r\n flex: '1',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n packingSlipSection: {\r\n padding: '0 25px',\r\n marginBottom: 10,\r\n },\r\n}))\r\n\r\nexport default function InvoiceTracker(props) {\r\n const classes = useStyles()\r\n const { onClose, open, salesId } = props\r\n const [packingSlips, setPackingSlips] = useState([])\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [loadText, setLoadText] = useState('')\r\n const core = useContext(CoreContext)\r\n\r\n const handleClose = () => {\r\n onClose(salesId)\r\n }\r\n\r\n function handleClick(item) {\r\n if (!item.url) alert('No url was found.')\r\n else window.open(item.url, '_blank')\r\n }\r\n\r\n function load() {\r\n setIsLoading(true)\r\n return core.dataStore\r\n .getTrackingBySalesId(salesId)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n let packingSlips = {}\r\n const trackingObjects = res.data\r\n trackingObjects.forEach((obj) => {\r\n if (packingSlips[obj.packingSlipNo]) {\r\n packingSlips[obj.packingSlipNo].push({\r\n trackingNumber: obj.trackingNumber,\r\n url: obj.url,\r\n })\r\n } else {\r\n packingSlips[obj.packingSlipNo] = [\r\n { trackingNumber: obj.trackingNumber, url: obj.url },\r\n ]\r\n }\r\n })\r\n setPackingSlips(packingSlips)\r\n } else {\r\n core.snackbar('warning', res.statusText)\r\n return null\r\n }\r\n })\r\n .catch((e) => {\r\n core.snackbar('warning', e.toString())\r\n setLoadText(e.toString())\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (open) load()\r\n }, [salesId, open])\r\n\r\n const TrackingNumbers = ({ list }) => {\r\n return (\r\n
\r\n \r\n
\r\n \r\n {list.length + ' '}\r\n \r\n \r\n
\r\n {list.map((t, i) => (\r\n handleClick(t)}\r\n key={t}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n ))}\r\n
\r\n
\r\n )\r\n }\r\n\r\n const RenderPackingSlips = () => {\r\n const slips = []\r\n for (const packingSlip in packingSlips) {\r\n slips.push(\r\n
\r\n \r\n \r\n {packingSlip}\r\n \r\n \r\n
,\r\n )\r\n }\r\n if (isLoading) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n return slips.length ? (\r\n slips\r\n ) : (\r\n
\r\n \r\n {loadText}\r\n
\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {' ' + salesId}\r\n \r\n \r\n\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, { useContext, useState } from 'react'\r\n\r\nimport ResponsiveTable from '../../components/ResponsiveTable'\r\nimport EmptyState from '../../components/EmptyState'\r\nimport PageTitle from '../../components/PageTitle'\r\nimport InvoiceProvider, { InvoiceContext } from '../../context/InvoiceContext'\r\n\r\nimport { LinearProgress, makeStyles, Tooltip } from '@material-ui/core'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport * as DateTransformer from '../../libraries/DateTransformer'\r\nimport { formatCurrency } from '../../libraries/CurrencyTransformer'\r\nimport SearchIcon from '@material-ui/icons/Search'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport ShippingIcon from '@material-ui/icons/LocalShippingOutlined'\r\nimport { Link } from 'react-router-dom'\r\nimport InvoiceTracker from './InvoiceTracker'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore'\r\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext'\r\nimport { Skeleton } from '@material-ui/lab'\r\n\r\nconst headers = [\r\n 'invoiceNumber',\r\n 'salesId',\r\n 'invoiceDate',\r\n 'dueDate',\r\n 'invoiceAmount',\r\n 'outstandingAmount',\r\n 'trackAndTrace',\r\n]\r\nconst dataKeys = [\r\n 'invoiceNumber',\r\n 'salesId',\r\n 'invoiceDate',\r\n 'dueDate',\r\n 'invoiceAmount',\r\n 'outstandingAmount',\r\n 'trackAndTrace',\r\n]\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {},\r\n paginationBox: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n padding: theme.spacing(1) + 'px 0 ' + theme.spacing(1) + 'px 0 ',\r\n borderBottom: '1px solid #e0e0e0',\r\n },\r\n rightAligned: {\r\n width: '100%',\r\n maxWidth: '90px',\r\n textAlign: 'right',\r\n display: 'inline-block',\r\n },\r\n inputField: {\r\n marginTop: 15,\r\n },\r\n red: {\r\n color: 'red',\r\n },\r\n green: {\r\n color: 'green',\r\n },\r\n}))\r\n\r\nexport default function InvoicesContextWrapper(props) {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction InvoicesPage() {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const invoiceContext = useContext(InvoiceContext)\r\n const [open, setOpen] = React.useState(false)\r\n const [selectedSalesId, setSelectedSalesId] = React.useState()\r\n const [query, setQuery] = useState('')\r\n\r\n function handleClose() {\r\n setOpen(false)\r\n }\r\n\r\n function handleDisplayTracking(salesId) {\r\n setOpen(true)\r\n setSelectedSalesId(salesId)\r\n }\r\n\r\n function handleNavigateBefore() {\r\n invoiceContext.decrementPage()\r\n }\r\n\r\n function handleQueryChange(e) {\r\n setQuery(e.target.value)\r\n }\r\n\r\n const keypressHandler = (e) => {\r\n if (e.keyCode === 13) {\r\n //for the enter key\r\n invoiceContext.setSearchInput(query)\r\n }\r\n }\r\n\r\n function handleNavigateNext() {\r\n invoiceContext.incrementPage()\r\n }\r\n function generateSkeletonTable() {\r\n let arr = []\r\n for (let i = 0; i < 5; i++) {\r\n arr.push(generateSkeletonRow())\r\n }\r\n return arr\r\n }\r\n function generateSkeletonRow() {\r\n let n = 7 //Size from headers\r\n //let w = //(100 / n)+\"%\";\r\n let arr = []\r\n for (let i = 0; i < n; i++) {\r\n arr.push(\r\n
\r\n \r\n
,\r\n )\r\n }\r\n return (\r\n
\r\n {arr}\r\n
\r\n )\r\n }\r\n\r\n function getRows() {\r\n let rs = []\r\n if (invoiceContext.invoices === null) return rs\r\n\r\n invoiceContext.invoices.map((r) =>\r\n rs.push(\r\n dataKeys.map((key) => {\r\n let obj = Object.assign({}, r)\r\n obj.invoiceDate = DateTransformer.formatDate(r.invoiceDate)\r\n obj.dueDate = DateTransformer.formatDate(r.dueDate)\r\n obj.invoiceAmount = (\r\n \r\n {formatCurrency(\r\n r.invoiceAmount,\r\n core.user.selectedCustomer.currency,\r\n )}\r\n \r\n )\r\n obj.salesId = {r.salesId}\r\n obj.outstandingAmount = (\r\n \r\n {formatCurrency(\r\n r.outstandingAmount,\r\n core.user.selectedCustomer.currency,\r\n )}\r\n \r\n )\r\n obj.trackAndTrace = (\r\n \r\n handleDisplayTracking(r.invoiceNumber + '')}>\r\n \r\n \r\n \r\n )\r\n obj.invoiceNumber = (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n return obj[key]\r\n }),\r\n ),\r\n )\r\n return rs\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n {' ' + invoiceContext.customer}\r\n \r\n\r\n \r\n {' ' + invoiceContext.invoicesCount + ' '}\r\n \r\n \r\n
\r\n }\r\n id='filled-margin-dense'\r\n type='search'\r\n variant='outlined'\r\n value={query}\r\n onChange={handleQueryChange}\r\n className={classes.inputField}\r\n InputProps={{\r\n startAdornment: ,\r\n }}\r\n />\r\n\r\n {invoiceContext.isLoading ? : null}\r\n {!invoiceContext.isLoading && invoiceContext.invoices.length === 0 ? (\r\n \r\n ) : (\r\n <>\r\n \r\n\r\n {invoiceContext.isLoading && invoiceContext.invoices.length === 0 ? (\r\n \r\n ) : null}\r\n\r\n
\r\n }\r\n onClick={handleNavigateBefore}\r\n disabled={!invoiceContext.hasPrev()}\r\n aria-label='load previous page'>\r\n \r\n \r\n
\r\n \r\n \r\n {' ' +\r\n invoiceContext.page +\r\n ' / ' +\r\n (invoiceContext.eofCount === Infinity\r\n ? ''\r\n : invoiceContext.eofCount)}\r\n \r\n
\r\n }\r\n onClick={handleNavigateNext}\r\n disabled={!invoiceContext.hasNext()}\r\n aria-label='load next page'>\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 { LinearProgress } from '@material-ui/core'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { useDebounce } from 'use-lodash-debounce'\r\n\r\nexport default function SimpleSearchField(props) {\r\n const { onSearch, isLoading, label = 'search' } = props\r\n const [value, setValue] = useState('')\r\n const debouncedValue = useDebounce(value, 300)\r\n\r\n function handleInput(evt) {\r\n const v = evt.target.value\r\n setValue(v)\r\n }\r\n\r\n function handleSearch(val) {\r\n onSearch(val)\r\n }\r\n\r\n useEffect(() => {\r\n handleSearch(debouncedValue)\r\n }, [debouncedValue])\r\n\r\n return (\r\n
\r\n }\r\n id='filled-margin-dense'\r\n variant='outlined'\r\n value={value}\r\n onChange={handleInput}\r\n autoComplete={'off'}\r\n style={{ margin: '10px 0px 10px 0px' }}\r\n />\r\n {isLoading ? (\r\n \r\n ) : null}\r\n
\r\n )\r\n}\r\n","import React from 'react'\r\nimport ReceivedIcon from '@material-ui/icons/QueryBuilder'\r\nimport { makeStyles } from '@material-ui/core'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n text: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n icon: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n marginLeft: '10px',\r\n },\r\n}))\r\n\r\nexport default function OrderStatusLabel(props) {\r\n const { status } = props\r\n const classes = useStyles()\r\n\r\n function handleStatus() {\r\n return {\r\n text: `orderStatus${status}`,\r\n icon: ,\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, { useContext } from 'react'\r\nimport ResponsiveTable from '../../components/ResponsiveTable'\r\nimport EmptyState from '../../components/EmptyState'\r\n\r\nimport { LinearProgress, Tooltip } from '@material-ui/core'\r\nimport PageTitle from '../../components/PageTitle'\r\nimport SimpleSearchField from '../../components/SimpleSearchField'\r\nimport { OrderContext } from '../../context/OrderContext'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { Link } from 'react-router-dom'\r\nimport Button from '@material-ui/core/Button'\r\nimport * as DateTransformer from '../../libraries/DateTransformer'\r\nimport OrderStatusLabel from './OrderStatusLabel'\r\nimport Chip from '@material-ui/core/Chip'\r\nimport FormGroup from '@material-ui/core/FormGroup'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport Switch from '@material-ui/core/Switch'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\n\r\nexport default function OrdersPage(props) {\r\n const { isFairApp } = props\r\n const core = useContext(CoreContext)\r\n const orderModel = useContext(OrderContext)\r\n\r\n const { lookingInRMA, setLookingInRMA } = orderModel\r\n const ordersUrlPrefix = lookingInRMA ? 'rmaOrders/' : 'orders/'\r\n\r\n let headers\r\n let dataKeys\r\n if (isFairApp) {\r\n headers = ['orderNumber', 'orderDate', 'campaignId', 'orderStatus']\r\n dataKeys = ['salesId', 'orderDate', 'campaignId', 'orderStatus']\r\n } else if (lookingInRMA) {\r\n headers = [\r\n 'orderNumber',\r\n 'returnItemNum',\r\n 'orderDate',\r\n 'customerRef',\r\n 'updatedAt',\r\n 'orderStatus',\r\n ]\r\n dataKeys = [\r\n 'salesId',\r\n 'returnItemNum',\r\n 'orderDate',\r\n 'customerRef',\r\n 'updatedAt',\r\n 'orderStatus',\r\n ]\r\n } else {\r\n headers = [\r\n 'orderNumber',\r\n 'orderDate',\r\n 'customerRef',\r\n 'updatedAt',\r\n 'orderStatus',\r\n ]\r\n dataKeys = [\r\n 'salesId',\r\n 'orderDate',\r\n 'customerRef',\r\n 'updatedAt',\r\n 'orderStatus',\r\n ]\r\n }\r\n\r\n const getOrderNumber = (order) => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {order.isRMA ? : null}\r\n \r\n )\r\n }\r\n\r\n const getValueFromKey = (key, order) => {\r\n switch (key) {\r\n case 'salesId':\r\n return getOrderNumber(order)\r\n case 'orderDate':\r\n return DateTransformer.formatDate(order.orderDate)\r\n case 'campaignId':\r\n return order.campaignId\r\n case 'orderStatus':\r\n return \r\n case 'returnItemNum':\r\n return order.returnItemNum\r\n case 'updatedAt':\r\n return DateTransformer.formatDate(order.updatedAt)\r\n case 'customerRef':\r\n return order.customerRef\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n function getRows() {\r\n if (orderModel.orders === null) return []\r\n\r\n return orderModel.orders.map((order) =>\r\n dataKeys.map((key) => getValueFromKey(key, order)),\r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n {' ' + orderModel.customer}\r\n \r\n\r\n \r\n {' ' + orderModel.ordersCount + ' '}\r\n \r\n \r\n
\r\n\r\n \r\n\r\n \r\n setLookingInRMA(!lookingInRMA)}\r\n name='lookingInRMA'\r\n color='primary'\r\n />\r\n }\r\n label={}\r\n />\r\n \r\n\r\n {orderModel.isLoading ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n {!orderModel.isLoading && orderModel.orders.length === 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useContext, useEffect, useState, useRef } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { makeStyles, Button, TextField } from '@material-ui/core'\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined'\r\nimport CircularProgress from '@material-ui/core/CircularProgress'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport TableChartIcon from '@material-ui/icons/TableChart'\r\nimport { saveAsCsv } from '../../../../shared/SaveAsCsv'\r\nimport ValidateEmail from '../../../../shared/EmailValidation'\r\n\r\nimport BackButton from '../../components/BackButton'\r\nimport PrintButton from '../../components/PrintButton'\r\nimport ReactToPrint from 'react-to-print'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n border: '1px solid #e0e0e0',\r\n backgroundColor: '#F5F5F5',\r\n overflowX: 'auto',\r\n padding: 30,\r\n paddingTop: 10,\r\n maxWidth: '1042px',\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nconst emailSendingStatusEnum = {\r\n SENDING: 'SENDING',\r\n SENT: 'SENT',\r\n ERROR: 'ERROR',\r\n INITIAL: null,\r\n}\r\n\r\nfunction RestOrdersView(props) {\r\n const { SENDING, SENT, ERROR, INITIAL } = emailSendingStatusEnum\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [showEmailField, setShowEmailField] = useState(false)\r\n const [email, setEmail] = useState('')\r\n const [emailSentStatus, setEmailSentStatus] = useState(INITIAL)\r\n const [restOrders, setRestOrders] = useState()\r\n const componentRef = useRef(null)\r\n const [highlight, setHighlight] = useState(false)\r\n\r\n useEffect(() => {\r\n setEmail(core.user.selectedCustomer.email)\r\n }, [core.user.selectedCustomer.email])\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo) {\r\n core.dataStore\r\n .getBackOrdersHtml(\r\n core.user.selectedCustomer.accountNo,\r\n core.user.language,\r\n )\r\n .then((res) => {\r\n document.getElementById('order').innerHTML = res.data\r\n })\r\n .catch((err) => setIsLoading(false))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n\r\n core.dataStore\r\n .getBackOrders(core.user.selectedCustomer.accountNo)\r\n .then((res) => setRestOrders(res.data))\r\n }\r\n }, [core.user.selectedCustomer.accountNo, core.user.language])\r\n\r\n var emailValidated = false\r\n const displayWarning = (x) => (x === undefined || x.length < 3 || !emailValidated) && highlight ? true : false\r\n\r\n const sendEmail = () => {\r\n if (ValidateEmail(email)) {\r\n emailValidated = true\r\n setHighlight(false)\r\n\r\n setEmailSentStatus(SENDING)\r\n core.dataStore\r\n .emailRestOrders(\r\n email,\r\n core.user.language,\r\n core.user.selectedCustomer.accountNo,\r\n )\r\n .then(() => setEmailSentStatus(SENT))\r\n .catch((err) => setEmailSentStatus(ERROR))\r\n } else {\r\n core.snackbar('warning', 'Wrong email format!')\r\n emailValidated = false\r\n setHighlight(true)\r\n }\r\n }\r\n\r\n const saveCsv = () => {\r\n if (!restOrders) return\r\n const rows = []\r\n //first row is headers\r\n rows[0] = [\r\n '',\r\n `${core.dictionary.getLabel('backOrders')} ${\r\n core.user.selectedCustomer.accountNo\r\n }`,\r\n ]\r\n rows[1] = [\r\n 'itemId',\r\n 'itemDescription',\r\n 'expectedStockDate',\r\n 'qty',\r\n 'quantityOutstanding',\r\n 'amount',\r\n 'orderNumber',\r\n 'customerRef',\r\n ].map((el) => core.dictionary.getLabel(el))\r\n restOrders.forEach((productLine, i) => {\r\n const {\r\n itemId,\r\n itemDescription,\r\n confirmedDeliveryDate,\r\n quantityOrdered,\r\n quantityOutstanding,\r\n amount,\r\n salesId,\r\n customerRef,\r\n } = productLine\r\n rows[i + 2] = [\r\n itemId,\r\n itemDescription,\r\n confirmedDeliveryDate.split('T')[0],\r\n quantityOrdered,\r\n quantityOutstanding,\r\n amount.toLocaleString('da-DK'),\r\n salesId,\r\n customerRef,\r\n ]\r\n })\r\n\r\n saveAsCsv(\r\n rows.map((el) => el.join(';')).join('\\n'),\r\n `${core.dictionary.getLabel('backOrders')} ${\r\n core.user.selectedCustomer.accountNo\r\n }`,\r\n )\r\n }\r\n\r\n const EmailField = (\r\n <>\r\n setEmail(e.target.value)}\r\n />\r\n sendEmail()}>\r\n \r\n \r\n \r\n )\r\n\r\n const renderEmailStatus = () => {\r\n switch (emailSentStatus) {\r\n case SENT:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case SENDING:\r\n return (\r\n \r\n )\r\n case ERROR:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case INITIAL:\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n }\r\n content={() => componentRef.current}\r\n />\r\n \r\n {showEmailField ? (\r\n <>\r\n {EmailField} {renderEmailStatus()}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default RestOrdersView\r\n","import React, { useContext, useEffect, useState, useRef } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport { makeStyles, Button, TextField } from '@material-ui/core'\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined'\r\nimport CircularProgress from '@material-ui/core/CircularProgress'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport TableChartIcon from '@material-ui/icons/TableChart'\r\n\r\nimport BackButton from '../../components/BackButton'\r\nimport PrintButton from '../../components/PrintButton'\r\nimport ReactToPrint from 'react-to-print'\r\nimport { saveAsCsv } from '../../../../shared/SaveAsCsv'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n border: '1px solid #e0e0e0',\r\n backgroundColor: '#F5F5F5',\r\n overflowX: 'auto',\r\n padding: 30,\r\n paddingTop: 10,\r\n maxWidth: '1042px',\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nconst emailSendingStatusEnum = {\r\n SENDING: 'SENDING',\r\n SENT: 'SENT',\r\n ERROR: 'ERROR',\r\n INITIAL: null,\r\n}\r\n\r\nfunction DetailedRMAOrderView(props) {\r\n const { SENDING, SENT, ERROR, INITIAL } = emailSendingStatusEnum\r\n const classes = useStyles()\r\n //On receipt page salesId comes from props and onlyRestOrders = false, but comes from url together with onlyRestOrders on normal rmaOrder page\r\n const salesId = props.salesId || props.computedMatch.params.id\r\n const core = useContext(CoreContext)\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [showEmailField, setShowEmailField] = useState(false)\r\n const [email, setEmail] = useState(core.user.selectedCustomer.email)\r\n const [emailSentStatus, setEmailSentStatus] = useState(INITIAL)\r\n const [rmaOrder, setRmaOrder] = useState() //only used to save as excel, csv\r\n const componentRef = useRef(null)\r\n\r\n useEffect(() => {\r\n setEmail(core.user.selectedCustomer.email)\r\n }, [core.user.selectedCustomer.email])\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo)\r\n core.dataStore\r\n .getRMAOrderDetailed(core.user.selectedCustomer.accountNo, salesId)\r\n .then((res) => {\r\n setRmaOrder(res.data)\r\n })\r\n\r\n core.dataStore\r\n .getDetailedRMAOrderHtml(\r\n core.user.selectedCustomer.accountNo,\r\n salesId,\r\n core.user.language,\r\n )\r\n .then((res) => {\r\n document.getElementById('order').innerHTML = res.data.value\r\n })\r\n .catch((err) => setIsLoading(false))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const sendEmail = () => {\r\n setEmailSentStatus(SENDING)\r\n core.dataStore\r\n .emailRMAOrderConfirmation(\r\n email,\r\n core.user.language,\r\n salesId,\r\n core.user.selectedCustomer.accountNo,\r\n )\r\n .then(() => setEmailSentStatus(SENT))\r\n .catch((err) => setEmailSentStatus(ERROR))\r\n }\r\n\r\n const saveCsv = () => {\r\n const rows = []\r\n //first row is headers\r\n rows[0] = [\r\n rmaOrder.custAccount,\r\n `${core.dictionary.getLabel('rmaNumber')} ${rmaOrder.salesId}`,\r\n ]\r\n rows[1] = [\r\n 'itemId',\r\n 'itemDescription',\r\n 'returnReason',\r\n 'quantity',\r\n ].map((el) => core.dictionary.getLabel(el))\r\n rmaOrder.lines.forEach((productLine, i) => {\r\n const {\r\n itemId,\r\n itemTitle,\r\n returnReasonName,\r\n quantity\r\n } = productLine\r\n rows[i + 2] = [\r\n itemId,\r\n itemTitle,\r\n returnReasonName,\r\n quantity\r\n ]\r\n })\r\n\r\n saveAsCsv(\r\n rows.map((el) => el.join(';')).join('\\n'),\r\n `${core.dictionary.getLabel('rmaNumber')}-${rmaOrder.salesId}`,\r\n )\r\n }\r\n\r\n const EmailField = (\r\n <>\r\n setEmail(e.target.value)}\r\n />\r\n sendEmail()}>\r\n \r\n \r\n \r\n )\r\n\r\n const renderEmailStatus = () => {\r\n switch (emailSentStatus) {\r\n case SENT:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case SENDING:\r\n return (\r\n \r\n )\r\n case ERROR:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case INITIAL:\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n }\r\n content={() => componentRef.current}\r\n />\r\n \r\n {showEmailField ? (\r\n <>\r\n {EmailField} {renderEmailStatus()}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {salesId.length > 0 ? isLoading ? : null : null}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default DetailedRMAOrderView\r\n","import React, { useContext, useEffect, useState, useRef } from 'react'\r\nimport { CoreContext } from '../../context/CoreContext'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport { makeStyles, Button, TextField } from '@material-ui/core'\r\nimport MailOutlineIcon from '@material-ui/icons/MailOutline'\r\nimport TranslationLabel from '../../components/TranslationLabel'\r\nimport CheckCircleOutlineOutlinedIcon from '@material-ui/icons/CheckCircleOutlineOutlined'\r\nimport CircularProgress from '@material-ui/core/CircularProgress'\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline'\r\nimport TableChartIcon from '@material-ui/icons/TableChart'\r\nimport PrintButton from '../../../apps/sales-web-app/components/PrintButton'\r\nimport ReactToPrint from 'react-to-print'\r\nimport { saveAsCsv } from '../../../shared/SaveAsCsv'\r\nimport ValidateEmail from '../../../shared/EmailValidation'\r\nimport { BasketContext } from '../../context/BasketContext'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n border: '1px solid #e0e0e0',\r\n backgroundColor: '#F5F5F5',\r\n overflowX: 'auto',\r\n padding: 30,\r\n paddingTop: 10,\r\n maxWidth: '1042px',\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nconst emailSendingStatusEnum = {\r\n SENDING: 'SENDING',\r\n SENT: 'SENT',\r\n ERROR: 'ERROR',\r\n INITIAL: null,\r\n}\r\n\r\nfunction BasketOverview() {\r\n const { SENDING, SENT, ERROR, INITIAL } = emailSendingStatusEnum\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const basketCore = useContext(BasketContext)\r\n const [basket, setBasket] = useState()\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [showEmailField, setShowEmailField] = useState(false)\r\n const [email, setEmail] = useState(core.user.selectedCustomer.email)\r\n const [emailSentStatus, setEmailSentStatus] = useState(INITIAL)\r\n const componentRef = useRef(null)\r\n\r\n useEffect(() => {\r\n setEmail(core.user.selectedCustomer.email)\r\n }, [core.user.selectedCustomer.email])\r\n\r\n useEffect(() => {\r\n if (!core.user.selectedCustomer.accountNo) {\r\n return\r\n }\r\n core.dataStore\r\n .getBasket(core.user.selectedCustomer.accountNo, core.user.userId, basketCore.basketType, true)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setBasket(res.data)\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n }, [core.user.selectedCustomer.accountNo, core.user.userId])\r\n\r\n useEffect(() => {\r\n if (!core.user.selectedCustomer.accountNo) {\r\n return\r\n }\r\n core.dataStore\r\n .getBasketOverviewHtml(\r\n core.user.userId,\r\n core.user.selectedCustomer.accountNo,\r\n basketCore.basketType,\r\n )\r\n .then((res) => {\r\n document.getElementById('basket').innerHTML = res.data\r\n })\r\n .catch((err) => setIsLoading(false))\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const displayWarning = (x) => (x === undefined || x.length < 3 || !emailValidated ? true : false)\r\n var emailValidated = false\r\n const sendEmail = () => {\r\n if (ValidateEmail(email)) {\r\n emailValidated = true\r\n setEmailSentStatus(SENDING)\r\n core.dataStore\r\n .emailBasketOverview(\r\n email,\r\n core.user.userId,\r\n core.user.selectedCustomer.accountNo,\r\n core.user.language,\r\n )\r\n .then(() => setEmailSentStatus(SENT))\r\n .catch((err) => setEmailSentStatus(ERROR))\r\n } else {\r\n emailValidated = false\r\n }\r\n }\r\n\r\n const EmailField = (\r\n <>\r\n setEmail(e.target.value)}\r\n />\r\n sendEmail()}>\r\n \r\n \r\n \r\n )\r\n\r\n const renderEmailStatus = () => {\r\n switch (emailSentStatus) {\r\n case SENT:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case SENDING:\r\n return (\r\n \r\n )\r\n case ERROR:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n case INITIAL:\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n const formatNumber = (number) => {\r\n return (Math.round(number * 100) / 100).toLocaleString('da-DK')\r\n }\r\n\r\n const getStockStatus = (productLine) => {\r\n const { inventoryStatus, expectedStockDate } = productLine\r\n if (inventoryStatus == 1) {\r\n return core.dictionary.getLabel('inStock')\r\n } else if (expectedStockDate === '0001-01-01T00:00:00') {\r\n return core.dictionary.getLabel('unknown')\r\n } else {\r\n return expectedStockDate.split('T')[0]\r\n }\r\n }\r\n\r\n const saveCsv = () => {\r\n const rows = []\r\n //first row is headers\r\n rows[0] = [core.dictionary.getLabel('basket')]\r\n rows[1] = ['itemId', 'itemDescription', 'expectedStock', 'qty']\r\n .map((el) => core.dictionary.getLabel(el))\r\n .concat(\r\n core.dictionary.getLabel('salesPrice') +\r\n ` (${core.user.selectedCustomer.currency})`,\r\n )\r\n basket.entries.forEach((productLine, i) => {\r\n const { itemId, itemName, quantity, amount } = productLine\r\n rows[i + 2] = [\r\n itemId,\r\n itemName,\r\n getStockStatus(productLine),\r\n quantity,\r\n formatNumber(amount),\r\n ]\r\n })\r\n rows[rows.length] = [''] //space\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('orderTotal'),\r\n '',\r\n '',\r\n '',\r\n formatNumber(basket.amount),\r\n ]\r\n if (basket.markupAmount) {\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('markupAmount'),\r\n '',\r\n '',\r\n '',\r\n formatNumber(basket.markupAmount),\r\n ]\r\n }\r\n if (basket.vatAmount) {\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('vatAmount'),\r\n '',\r\n '',\r\n '',\r\n formatNumber(basket.vatAmount),\r\n ]\r\n }\r\n rows[rows.length] = [\r\n core.dictionary.getLabel('orderAmount'),\r\n '',\r\n '',\r\n '',\r\n formatNumber(basket.totalAmount),\r\n ]\r\n\r\n saveAsCsv(\r\n rows.map((el) => el.join(';')).join('\\n'),\r\n `${core.dictionary.getLabel('basket')}-${\r\n core.user.selectedCustomer.accountNo\r\n }`,\r\n )\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n }\r\n content={() => componentRef.current}\r\n />\r\n \r\n {showEmailField ? (\r\n <>\r\n {EmailField} {renderEmailStatus()}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {isLoading ? : null}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default BasketOverview\r\n","export default function findNextAllowedNumber(product, number) {\r\n if (number < 1) {\r\n return 0\r\n }\r\n const { minimumQuantity, multiplesQuantity } = product\r\n\r\n const increment = multiplesQuantity || 1\r\n if (number <= minimumQuantity) {\r\n return minimumQuantity\r\n }\r\n return Math.ceil(number / increment) * increment\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport { useDebounce } from 'use-lodash-debounce'\r\n\r\nimport TranslationLabel, { translationLink } from '../../../../core/components/TranslationLabel'\r\nimport { BasketContext } from '../../../../core/context/BasketContext'\r\nimport { ProductsContext } from '../../context/ProductsContext'\r\nimport EmptyState from '../../components/EmptyState'\r\nimport PageTitle from '../../components/PageTitle'\r\n\r\nimport { LinearProgress } from '@material-ui/core'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport TableView from '../../components/TableView'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Button from '@material-ui/core/Button'\r\nimport { CircularProgress } from '@material-ui/core'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport findNextAllowedQuantity from '../../libraries/FindNextAllowedQuantity'\r\nimport OpenOrdersModal from '../Products/OpenOrdersModal'\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport AlertTitle from '@material-ui/lab/AlertTitle'\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Fab from '@material-ui/core/Fab/Fab'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n submitButton: {\r\n margin: '10px 0',\r\n width: 'fit-content',\r\n },\r\n pageHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n [theme.breakpoints.down('sm')]: {\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n }\r\n }\r\n}))\r\n\r\nexport default function QuickEntryPage(props) {\r\n const classes = useStyles()\r\n const [entries, setEntries] = useState([])\r\n const core = useContext(CoreContext)\r\n const basket = useContext(BasketContext)\r\n const productsModel = useContext(ProductsContext)\r\n const [openOrdersModal, setOpenOrdersModal] = useState(undefined)\r\n\r\n const [value, setValue] = useState('')\r\n const debouncedValue = useDebounce(value, 300)\r\n const [srcTxt, setSrcTxt] = useState('')\r\n const [uploadLoading, setUploadLoading] = useState(false)\r\n const [uploadErrors, setUploadErrors] = useState([])\r\n\r\n function handleInput(evt) {\r\n const v = evt.target.value\r\n setValue(v)\r\n }\r\n\r\n function handleQtyChange(itemId, qty) {\r\n if (parseInt(qty) < 0) {\r\n qty = 0\r\n } else {\r\n let rs = entries.find((x) => x.productNo === itemId)\r\n\r\n if (!rs) return\r\n\r\n rs.qty = qty\r\n const rest = entries.filter((x) => x.productNo !== itemId)\r\n let tmp = [...rest, rs]\r\n tmp.sort((a, b) =>\r\n a.productNo > b.productNo ? 1 : b.productNo > a.productNo ? -1 : 0,\r\n )\r\n setEntries(tmp)\r\n }\r\n }\r\n\r\n function add(item) {\r\n let temp\r\n if (entries.find((x) => x.productNo === item.productNo)) {\r\n temp = entries\r\n temp.find((x) => x.productNo === item.productNo).qty =\r\n parseInt(temp.find((x) => x.productNo === item.productNo).qty || 0) +\r\n item.colli\r\n } else {\r\n temp = [{ ...item, qty: item.colli, quantity: item.colli }, ...entries]\r\n }\r\n\r\n setEntries(temp)\r\n setValue('')\r\n setSrcTxt('')\r\n }\r\n\r\n function remove(itemId) {\r\n console.log(itemId)\r\n console.log(entries)\r\n if (entries.find((x) => x.productNo === itemId)) {\r\n const rest = entries.filter((x) => x.productNo !== itemId)\r\n setEntries(rest)\r\n }\r\n }\r\n\r\n const handleSubmit = () => {\r\n const entriesWithAllowedQuantities = entries.map((entry) => {\r\n return { ...entry, qty: findNextAllowedQuantity(entry, entry.quantity) }\r\n })\r\n\r\n basket.multiAdd(entriesWithAllowedQuantities, () => {\r\n setEntries([])\r\n setUploadErrors([])\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n function search(itemId) {\r\n setSrcTxt('')\r\n\r\n if (!itemId || itemId === '' || itemId.length < 3) return\r\n\r\n productsModel.getProductById(itemId).then((product) => {\r\n if (product) {\r\n setSrcTxt('')\r\n add(product)\r\n } else {\r\n setSrcTxt('No items found.')\r\n }\r\n })\r\n }\r\n\r\n search(debouncedValue)\r\n }, [debouncedValue])\r\n\r\n\r\n function UploadOrder(e) {\r\n if (!e.target.files[0]) {\r\n return\r\n }\r\n\r\n setUploadLoading(true)\r\n setEntries([])\r\n setUploadErrors([])\r\n\r\n core.dataStore.getProductByExcel(\r\n core.user.selectedCustomer.accountNo,\r\n core.user.languageCode,\r\n core.user.userId,\r\n e\r\n ).then(res => {\r\n setTimeout(() => {\r\n const items = res.data.items.map(item => {\r\n return {\r\n ...item,\r\n quantity: item.qty\r\n }\r\n })\r\n\r\n setEntries([...items])\r\n setValue('')\r\n setUploadLoading(false)\r\n\r\n if (res.data.withErrors) {\r\n setUploadErrors([...res.data.errors])\r\n }\r\n }, 500);\r\n })\r\n\r\n e.target.value = ''\r\n }\r\n\r\n\r\n const openOrdersProduct = entries.find(\r\n (el) => el && el.productNo == openOrdersModal,\r\n )\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n {entries.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\r\n { uploadErrors.length > 0 && (\r\n {\r\n setUploadErrors([]);\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n
    \r\n {uploadErrors.map((item) => {\r\n return (\r\n
  • { item.line } {item.query}
  • \r\n )\r\n })}\r\n
\r\n
\r\n )}\r\n }\r\n id='filled-margin-dense'\r\n variant='outlined'\r\n inputProps={{\r\n type: 'number',\r\n pattern: '[0-9]*',\r\n }}\r\n value={value}\r\n onChange={handleInput}\r\n autoComplete={'off'}\r\n style={{ margin: '10px 0px 10px 0px' }}\r\n />\r\n {productsModel.isLoading ? (\r\n \r\n ) : null}\r\n {srcTxt}\r\n <>\r\n {entries.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 )\r\n}\r\n","export const statusEnum = {\r\n ALL: 0,\r\n OPEN: 1,\r\n FINISHED: 2,\r\n FUTURE: 3,\r\n}\r\n\r\nexport const viewModeEnum = {\r\n CUSTOMERVIEW: 0,\r\n SALESVIEW: 1,\r\n EDIT: 2,\r\n CREATE: 3,\r\n}\r\n\r\nexport const days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']\r\nexport const months = [\r\n 'january',\r\n 'february',\r\n 'march',\r\n 'april',\r\n 'may',\r\n 'june',\r\n 'july',\r\n 'august',\r\n 'september',\r\n 'october',\r\n 'november',\r\n 'december',\r\n]\r\n","import { makeStyles } from '@material-ui/core'\r\n\r\nexport const useStyles = makeStyles((theme) => ({\r\n backgroundToday: {\r\n background: theme.palette.primary.main,\r\n },\r\n backgroundOther: {\r\n background: '#3c69c2',\r\n },\r\n row: {\r\n maxHeight: 70,\r\n borderBottom: '1px solid darkgrey',\r\n cursor: 'pointer',\r\n },\r\n leftContainer: {\r\n width: 120,\r\n height: '65px',\r\n color: 'white',\r\n padding: 5,\r\n paddingBottom: 0,\r\n display: 'inline-block',\r\n boxSizing: 'border-box',\r\n },\r\n rightContainer: {\r\n boxSizing: 'border-box',\r\n width: 'calc(100% - 120px)',\r\n display: 'inline-block',\r\n height: '65px',\r\n verticalAlign: 'top',\r\n },\r\n day: {\r\n height: '100%',\r\n textAlign: 'center',\r\n fontSize: '16px',\r\n margin: '5px',\r\n },\r\n month: {\r\n textAlign: 'center',\r\n },\r\n icon: {\r\n verticalAlign: 'text-top',\r\n width: 18,\r\n height: 18,\r\n marginRight: '5px',\r\n marginLeft: '0px',\r\n },\r\n title: {\r\n 'color': theme.palette.grey['800'],\r\n 'lineHeight': '1rem',\r\n 'margin': 10,\r\n '&:hover': {\r\n cursor: 'pointer',\r\n textDecoration: 'underline',\r\n },\r\n },\r\n appointmentInfoLine: {\r\n margin: '0',\r\n color: theme.palette.grey['600'],\r\n },\r\n phoneNumberContainer: {\r\n display: 'inline-block',\r\n marginLeft: 10,\r\n },\r\n subjectContainer: {\r\n marginLeft: 10,\r\n display: 'inline-block',\r\n },\r\n modal: {\r\n backgroundColor: 'white',\r\n width: '100%',\r\n maxWidth: '500px',\r\n margin: 'auto',\r\n position: 'relative',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n padding: '25px',\r\n paddingTop: 10,\r\n textAlign: 'center',\r\n outline: 'none',\r\n },\r\n modalInfoLine: {\r\n color: theme.palette.grey['800'],\r\n width: '100%',\r\n marginBottom: 10,\r\n fontSize: 16,\r\n lineHeight: '32px',\r\n },\r\n appointmentInfoKey: {\r\n textAlign: 'left',\r\n width: '120px',\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n },\r\n appointmentInfoValue: {\r\n textAlign: 'left',\r\n display: 'inline-block',\r\n width: 'calc(100% - 120px)',\r\n minWidth: '200px',\r\n },\r\n modalInfoBody: {\r\n width: '100%',\r\n maxWidth: '600px',\r\n margin: 'auto',\r\n marginBottom: '50px',\r\n },\r\n modalHeadline: {\r\n marginBottom: 20,\r\n marginTop: 20,\r\n },\r\n timePicker: {\r\n width: '180px',\r\n },\r\n disabled: {\r\n color: theme.palette.grey['800'],\r\n },\r\n filtersContainer: {\r\n padding: '5px 15px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n scrollable: {\r\n overflowY: 'scroll',\r\n height: '253px',\r\n },\r\n bold: {\r\n fontWeight: 700,\r\n },\r\n status1: {\r\n marginRight: '5px',\r\n color: 'blue',\r\n },\r\n status2: {\r\n marginRight: '5px',\r\n color: 'green',\r\n },\r\n status3: {\r\n marginRight: '5px',\r\n color: 'darkorange',\r\n },\r\n buttons: {\r\n width: '100%',\r\n height: '40px',\r\n padding: '0 30px',\r\n },\r\n leftButton: {\r\n float: 'left',\r\n },\r\n rightButton: {\r\n float: 'right',\r\n },\r\n cancelButton: {\r\n margin: 3,\r\n color: 'darkorange',\r\n },\r\n finishButton: {\r\n margin: 3,\r\n color: 'green',\r\n },\r\n validationLine: {\r\n color: 'red',\r\n marginLeft: '110px',\r\n textAlign: 'left',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n width: 'calc(100% - 110px)',\r\n },\r\n}))\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport Modal from '@material-ui/core/Modal'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport Button from '@material-ui/core/Button'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport Select from '@material-ui/core/Select'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport DatePicker from '../../../../shared/DatePicker'\r\nimport DateFnsUtils from '@date-io/date-fns'\r\nimport {\r\n MuiPickersUtilsProvider,\r\n KeyboardTimePicker,\r\n} from '@material-ui/pickers'\r\nimport { useStyles } from './styles'\r\nimport { statusEnum, viewModeEnum } from './enums'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport CheckIcon from '@material-ui/icons/Check'\r\n\r\nconst ModalWithAppointment = (props) => {\r\n const getFormattedDate = (isoString) => {\r\n const date = new Date(isoString)\r\n return new Date(date.getTime() - date.getTimezoneOffset() * 60000)\r\n .toJSON()\r\n .split('.')[0]\r\n }\r\n\r\n const getFormattedDatePlusTwoHours = (isoString) => {\r\n const date = new Date(isoString)\r\n return new Date(\r\n date.getTime() - date.getTimezoneOffset() * 60000 + 2 * 60 * 60000,\r\n )\r\n .toJSON()\r\n .split('.')[0]\r\n }\r\n\r\n const isValidDate = (date) => {\r\n return (\r\n date &&\r\n Object.prototype.toString.call(date) === '[object Date]' &&\r\n !isNaN(date)\r\n )\r\n }\r\n\r\n const core = useContext(CoreContext)\r\n const { changeAppointment, createAppointment } = core.dataStore\r\n const { OPEN, CANCELLED, FINISHED } = statusEnum\r\n const { CUSTOMERVIEW, SALESVIEW, EDIT, CREATE } = viewModeEnum\r\n const classes = useStyles()\r\n const [appointment, setAppointment] = useState(\r\n props.appointment || {\r\n customerNo: '',\r\n start: getFormattedDate(new Date().toISOString()),\r\n end: getFormattedDate(new Date().toISOString()),\r\n type: 1,\r\n status: OPEN,\r\n title: '',\r\n description: '',\r\n customerContact: '',\r\n rdgContactUserId: '',\r\n rdgContactDisplayName: '',\r\n },\r\n )\r\n const [viewMode, setViewMode] = useState(\r\n props.viewMode !== undefined ? props.viewMode : SALESVIEW,\r\n )\r\n const { appointmentTypes, onClose } = props\r\n\r\n useEffect(() => {\r\n if (viewMode === CREATE) {\r\n setAppointment({\r\n ...appointment,\r\n rdgContactUserId: core.user.userSetting.userId,\r\n rdgContactDisplayName: core.user.userSetting.displayName,\r\n customerNo: core.user.selectedCustomer.accountNo,\r\n customerName: core.user.selectedCustomer.accountName,\r\n })\r\n }\r\n }, [core.user.userSetting.userId, core.user.selectedCustomer])\r\n\r\n const onStartChange = (date) => {\r\n if (!isValidDate(date)) {\r\n return\r\n }\r\n //set the day of the end date to the same day as the start date + 2 hours\r\n setAppointment({\r\n ...appointment,\r\n start: getFormattedDate(date),\r\n end: getFormattedDatePlusTwoHours(date),\r\n })\r\n }\r\n\r\n const isEndBeforeStart =\r\n new Date(appointment.start).getTime() > new Date(appointment.end).getTime()\r\n\r\n const onEndChange = (date) => {\r\n if (!isValidDate(date)) {\r\n return\r\n }\r\n setAppointment({ ...appointment, end: getFormattedDate(date) })\r\n }\r\n const onPhoneChange = (e) => {\r\n setAppointment({ ...appointment, customerPhone: e.target.value })\r\n }\r\n const onTitleChange = (e) => {\r\n setAppointment({ ...appointment, title: e.target.value })\r\n }\r\n const onDescriptionChange = (e) => {\r\n setAppointment({ ...appointment, description: e.target.value })\r\n //changing the description is possible on the SALESVIEW mode\r\n if (viewMode === SALESVIEW) {\r\n changeAppointment({ ...appointment, description: e.target.value })\r\n }\r\n }\r\n const onContactChange = (e) => {\r\n setAppointment({ ...appointment, customerContact: e.target.value })\r\n }\r\n const onTypeChange = (e) => {\r\n setAppointment({ ...appointment, type: e.target.value })\r\n }\r\n\r\n const onSubmitEdit = () => {\r\n changeAppointment(appointment).then(() => {\r\n setViewMode(SALESVIEW)\r\n onClose()\r\n })\r\n }\r\n const cancelAppointment = () => {\r\n changeAppointment({ ...appointment, status: CANCELLED }).then(() => {\r\n onClose()\r\n })\r\n }\r\n const finishAppointment = () => {\r\n changeAppointment({ ...appointment, status: FINISHED }).then(() => {\r\n onClose()\r\n })\r\n }\r\n const onCreateAppointment = () => {\r\n createAppointment(appointment).then(() => {\r\n onClose()\r\n })\r\n }\r\n\r\n const Buttons = () => {\r\n switch (viewMode) {\r\n case CUSTOMERVIEW:\r\n return (\r\n
\r\n onClose()}\r\n variant='contained'\r\n color='primary'\r\n className={classes.rightButton}>\r\n \r\n \r\n
\r\n )\r\n case SALESVIEW:\r\n return (\r\n
\r\n onClose()}\r\n variant='contained'\r\n color='secondary'>\r\n \r\n \r\n setViewMode(EDIT)}\r\n variant='contained'\r\n color='primary'\r\n className={classes.rightButton}>\r\n \r\n \r\n
\r\n )\r\n case EDIT:\r\n return (\r\n
\r\n {\r\n setAppointment(props.appointment)\r\n setViewMode(SALESVIEW)\r\n }}\r\n className={classes.leftButton}\r\n variant='contained'\r\n color='secondary'>\r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n case CREATE:\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n default:\r\n return null\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 null}\r\n classes={classes.disabled}\r\n style={{ color: 'black' }}>\r\n {appointmentTypes.map((type) => (\r\n {type.typeText}\r\n ))}\r\n \r\n \r\n
\r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {isEndBeforeStart && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n {viewMode != CUSTOMERVIEW && (\r\n
\r\n \r\n :\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n \r\n
\r\n {appointment.status === OPEN ? (\r\n viewMode === SALESVIEW && (\r\n <>\r\n }\r\n variant='outlined'\r\n color='primary'>\r\n \r\n \r\n }\r\n variant='outlined'\r\n color='primary'>\r\n \r\n \r\n \r\n )\r\n ) : (\r\n \r\n {appointment.statusText}\r\n

\r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ModalWithAppointment\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport Button from '@material-ui/core/Button'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport CustomerIcon from '@material-ui/icons/AccountBox'\r\nimport SubjectIcon from '@material-ui/icons/Subject'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\r\nimport Checkbox from '@material-ui/core/Checkbox'\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport { statusEnum, viewModeEnum, days, months } from './enums'\r\nimport ModalWithAppointment from './ModalWithAppointment'\r\nimport { useStyles } from './styles'\r\nimport { Select, MenuItem, FormControl } from '@material-ui/core'\r\n\r\nexport default function AppointmentList() {\r\n const { OPEN, FUTURE } = statusEnum\r\n const statusOptions = Object.keys(statusEnum).map((el) => ({\r\n id: statusEnum[el],\r\n label: el + '-statuslabel',\r\n }))\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const { userId, language } = core.user\r\n const { getUserAppointments, getCustomerAppointments, getAppointmentTypes } =\r\n core.dataStore\r\n const [status, setStatus] = useState(statusOptions[FUTURE])\r\n const [appointments, setAppointments] = useState([])\r\n const [openAppointment, setOpenAppointment] = useState(-1)\r\n const [showAllCustomers, setShowAllCustomers] = useState(false)\r\n const [showCreateAppointment, setShowCreateAppointment] = useState(false)\r\n const [appointmentTypes, setAppointmentTypes] = useState([])\r\n const modalAppointment = appointments[openAppointment]\r\n const { CREATE, CUSTOMERVIEW, SALESVIEW } = viewModeEnum\r\n\r\n const isHomePage = window.location.pathname.split('/').indexOf('home') !== -1\r\n const getAppointments = () => {\r\n if (isHomePage) {\r\n getCustomerAppointments(\r\n language,\r\n core.user.selectedCustomer.accountNo,\r\n OPEN,\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n setAppointments(res.data)\r\n }\r\n })\r\n .catch(console.log)\r\n } else {\r\n if (showAllCustomers) {\r\n getUserAppointments(language, userId, status.id, showAllCustomers)\r\n .then((res) => {\r\n if (res.data) {\r\n setAppointments(res.data)\r\n }\r\n })\r\n .catch(console.log)\r\n } else {\r\n getCustomerAppointments(\r\n language,\r\n core.user.selectedCustomer.accountNo,\r\n status.id,\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n setAppointments(res.data)\r\n }\r\n })\r\n .catch(console.log)\r\n }\r\n }\r\n }\r\n useEffect(() => {\r\n getAppointments()\r\n }, [language, status.id, userId, getUserAppointments, showAllCustomers])\r\n\r\n useEffect(() => {\r\n getAppointmentTypes(language, userId).then((res) => {\r\n if (res.data) {\r\n setAppointmentTypes(res.data)\r\n }\r\n })\r\n }, [language, userId])\r\n\r\n const openCreateAppointment = () => {\r\n setShowCreateAppointment(true)\r\n }\r\n const closeCreateAppointment = () => {\r\n setShowCreateAppointment(false)\r\n getAppointments()\r\n }\r\n\r\n const changeCustomer = (customerNo) => {\r\n core.user.setCustomer({ accountNo: customerNo })\r\n }\r\n\r\n return (\r\n <>\r\n {modalAppointment && (\r\n {\r\n setOpenAppointment(-1)\r\n //reload appointments when closing modal on SALESVIEW, cus they might have edited the appointment\r\n if (!isHomePage) {\r\n getAppointments()\r\n }\r\n }}\r\n appointment={modalAppointment}\r\n appointmentTypes={appointmentTypes}\r\n getAppointments={getAppointments}\r\n viewMode={isHomePage ? CUSTOMERVIEW : SALESVIEW}\r\n />\r\n )}\r\n {showCreateAppointment && (\r\n \r\n )}\r\n
\r\n {!isHomePage && (\r\n
\r\n
\r\n \r\n \r\n setStatus(\r\n statusOptions.find((el) => el.id === e.target.value),\r\n )\r\n }\r\n value={status.id}>\r\n {statusOptions.map((status) => (\r\n \r\n {}\r\n \r\n ))}\r\n \r\n \r\n
\r\n }\r\n control={\r\n setShowAllCustomers(!showAllCustomers)}\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n {appointments\r\n .sort((a, b) => new Date(a.start) - new Date(b.start))\r\n .map((item, key) => (\r\n setOpenAppointment(key)}>\r\n \r\n
\r\n ))}\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nexport const AppointmentLine = (item) => {\r\n const classes = useStyles()\r\n const appointmentDate = new Date(item.start)\r\n const startDate = appointmentDate.getDate()\r\n const startHour = appointmentDate.getHours()\r\n const startMin =\r\n appointmentDate.getMinutes() < 9\r\n ? '0' + appointmentDate.getMinutes()\r\n : appointmentDate.getMinutes()\r\n const startWeekDay = days[appointmentDate.getDay()]\r\n const startMonth = months[appointmentDate.getMonth()]\r\n const isToday = () => {\r\n const today = new Date()\r\n return (\r\n today.getDate() === startDate &&\r\n today.getMonth() === appointmentDate.getMonth() &&\r\n today.getFullYear() === appointmentDate.getFullYear()\r\n )\r\n }\r\n\r\n const { changeCustomer, isHomePage } = item\r\n\r\n const AppointmentTitle = () => {\r\n return isHomePage ? (\r\n \r\n \r\n \r\n {item.rdgContactDisplayName}\r\n \r\n \r\n ) : (\r\n \r\n }>\r\n {\r\n e.stopPropagation()\r\n changeCustomer(item.customerNo)\r\n }}>\r\n \r\n {`${item.customerNo} - ${item.customerName} - ${item.rdgContactDisplayName}`}\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 {isToday() ? (\r\n \r\n ) : (\r\n \r\n )}{' '}\r\n {startHour + ':' + startMin}\r\n \r\n
\r\n
\r\n \r\n \r\n {startDate} \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {item.statusText}\r\n \r\n \r\n {item.title}\r\n \r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { Typography } from '@material-ui/core'\r\n\r\nexport default function DashboardMessage(props) {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport DatePicker from '../../../../shared/DatePicker'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { Typography } from '@material-ui/core'\r\nimport { AppointmentLine } from '../../components/appointmentList/AppointmentList'\r\n\r\nconst setHoursToZero = (date) => date.toJSON().split('T')[0] + 'T00:00:00'\r\n\r\nexport default function () {\r\n const core = useContext(CoreContext)\r\n const [from, setFrom] = useState(\r\n new Date(Date.now() - 1000 * 60 * 60 * 24 * 365),\r\n ) // 1 year ago\r\n const [to, setTo] = useState(new Date())\r\n const [appointments, setAppointments] = useState([])\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getCustomerAppointmentsInDateRange(\r\n core.user.language,\r\n core.user.selectedCustomer.accountNo,\r\n setHoursToZero(from),\r\n setHoursToZero(new Date(to.getTime() + 3600 * 1000 * 24)),\r\n )\r\n .then((res) => setAppointments(res.data))\r\n }, [to, from, core.user.selectedCustomer.accountNo, core.user.language])\r\n\r\n return (\r\n <>\r\n }\r\n autoOk\r\n style={{ width: 190, margin: 10 }}\r\n inputVariant='outlined'\r\n onChange={setFrom}\r\n value={from}\r\n />\r\n }\r\n autoOk\r\n style={{ width: 190, margin: 10 }}\r\n inputVariant='outlined'\r\n onChange={setTo}\r\n value={to}\r\n />\r\n \r\n {' '}\r\n {appointments.length}\r\n \r\n
\r\n {appointments.map((appointment) => (\r\n \r\n ))}\r\n
\r\n \r\n )\r\n}\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { TextField } from '@material-ui/core'\r\nimport { useDebounce } from 'use-lodash-debounce'\r\n\r\nexport default function CustomerNote() {\r\n const core = useContext(CoreContext)\r\n const [note, setNote] = useState('')\r\n const debouncedValue = useDebounce(note, 300)\r\n const [loading, setLoading] = useState(true)\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo)\r\n core.dataStore\r\n .getCustomerNotes(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n setNote(res.data.note)\r\n setLoading(false)\r\n })\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n useEffect(() => {\r\n if (!core.user.selectedCustomer.accountNo || loading) return\r\n core.dataStore.postCustomerNote(core.user.selectedCustomer.accountNo, note)\r\n }, [debouncedValue])\r\n\r\n const updateNote = (e) => {\r\n setNote(e.target.value)\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport {\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableBody,\r\n TableCell,\r\n} from '@material-ui/core'\r\n\r\nexport default function BlockedCustomers() {\r\n const core = useContext(CoreContext)\r\n const [customers, setCustomers] = useState([])\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo)\r\n core.dataStore\r\n .getBlockedCustomers(core.user.userSetting.salesPersonAgentInitials)\r\n .then((res) => {\r\n setCustomers(res.data.result)\r\n })\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const headers = [\r\n 'customerName',\r\n 'currency',\r\n 'balance',\r\n 'balanceDue',\r\n 'blocked',\r\n 'modifiedBy',\r\n ]\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {headers.map((header) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n {customers.map((customer) => {\r\n return (\r\n \r\n {headers.map((header) => {\r\n return (\r\n \r\n {header == 'blocked' ? (\r\n \r\n ) : header == 'customerName' ? (\r\n `${customer.customerNo} - ${customer[header]}`\r\n ) : (\r\n customer[header]\r\n )}\r\n \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 } from 'react'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport makeStyles from '@material-ui/core/styles/makeStyles'\r\nimport AppointmentList from '../../components/appointmentList/AppointmentList'\r\nimport DashboardWidgetContainer from '../../components/DashboardWidgetContainer'\r\nimport DashboardMessage from './DashboardMessage'\r\nimport NumberOfAppointments from './NumberOfAppointments'\r\nimport { Button } from '@material-ui/core'\r\nimport CustomerNote from './CustomerNote'\r\nimport BlockedCustomers from './BlockedCustomers'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: 1400,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n color: 'black',\r\n },\r\n content: {\r\n maxWidth: 1400,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n height: 'calc(100% - 55px)',\r\n },\r\n titleScreen: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n maxWidth: 1400,\r\n },\r\n dashTabs: {\r\n flexGrow: 1,\r\n marginBottom: '10px',\r\n },\r\n switchContainer: {\r\n display: 'flex',\r\n width: '100%',\r\n flex: 1,\r\n justifyContent: 'flex-end',\r\n fontSize: 12,\r\n },\r\n userContainer: {\r\n display: 'flex',\r\n height: 'calc(100% - 55px)',\r\n padding: '15px',\r\n },\r\n userLeftContainer: {\r\n width: '80%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n userRightContainer: {\r\n width: '20%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n userIcon: {\r\n color: theme.palette.primary.main,\r\n fontSize: 70,\r\n },\r\n progress: {\r\n width: '90%',\r\n height: 5,\r\n marginTop: '20px',\r\n margin: 'auto',\r\n },\r\n}))\r\n\r\nexport default function DashboardPage() {\r\n const classes = useStyles()\r\n const [showCustomerNote, setShowCustomerNote] = useState(false)\r\n const [showBlockedCustomers, setShowBlockedCustomers] = useState(false)\r\n\r\n return (\r\n
\r\n
\r\n \r\n <>\r\n \r\n }\r\n content={}\r\n />\r\n \r\n \r\n }\r\n content={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n setShowBlockedCustomers(!showBlockedCustomers)\r\n }>\r\n {showBlockedCustomers ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n }\r\n content={showBlockedCustomers ? : <>}\r\n />\r\n \r\n \r\n }\r\n content={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n setShowCustomerNote(!showCustomerNote)}>\r\n {showCustomerNote ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n }\r\n content={showCustomerNote ? : <>}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React, { useContext, useState } from 'react'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport makeStyles from '@material-ui/core/styles/makeStyles'\r\nimport UserIcon from '@material-ui/icons/PersonOutlined'\r\nimport CustomerIcon from '@material-ui/icons/AccountBalance'\r\nimport AppointmentList from '../../components/appointmentList/AppointmentList'\r\nimport DashboardWidgetContainer from '../../components/DashboardWidgetContainer'\r\nimport Button from '@material-ui/core/Button'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport { FieldItemRow } from '../Products/DetailedItemTemplate'\r\nimport DashboardMessage from '../../pages/Dashboard/DashboardMessage'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n maxWidth: 1120,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n color: 'black',\r\n },\r\n content: {\r\n maxWidth: 1120,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n height: 'calc(100% - 55px)',\r\n },\r\n titleScreen: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n maxWidth: 1120,\r\n },\r\n dashTabs: {\r\n flexGrow: 1,\r\n marginBottom: '10px',\r\n },\r\n leftContainer: {},\r\n rightContainer: {},\r\n switchContainer: {\r\n display: 'flex',\r\n width: '100%',\r\n flex: 1,\r\n justifyContent: 'flex-end',\r\n fontSize: 12,\r\n },\r\n userContainer: {\r\n display: 'flex',\r\n height: 'calc(100% - 55px)',\r\n padding: '15px',\r\n },\r\n userLeftContainer: {\r\n width: '80%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n userRightContainer: {\r\n width: '20%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n userIcon: {\r\n color: theme.palette.primary.main,\r\n fontSize: 70,\r\n },\r\n progress: {\r\n width: '90%',\r\n height: 5,\r\n marginTop: '20px',\r\n margin: 'auto',\r\n },\r\n editProfileButton: {\r\n float: 'right',\r\n height: 32,\r\n },\r\n}))\r\n\r\nexport default function DashboardPage() {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n\r\n return (\r\n
\r\n
\r\n \r\n <>\r\n \r\n }\r\n height={230}\r\n content={\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n }\r\n />\r\n
\r\n\r\n \r\n \r\n \r\n core.history.push('/hub/settings')}\r\n variant='outlined'>\r\n \r\n \r\n \r\n }\r\n height={230}\r\n content={\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n }\r\n />\r\n \r\n \r\n <>\r\n \r\n
\r\n }\r\n content={}\r\n />\r\n
\r\n \r\n \r\n }\r\n content={\r\n \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 Table from '@material-ui/core/Table'\r\nimport TableBody from '@material-ui/core/TableBody'\r\nimport TableCell from '@material-ui/core/TableCell'\r\nimport TableHead from '@material-ui/core/TableHead'\r\nimport TableRow from '@material-ui/core/TableRow'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n header: {\r\n backgroundColor: theme.palette.grey['700'],\r\n color: 'white',\r\n padding: '10px',\r\n },\r\n}))\r\n\r\nexport default function SimpleTable(props) {\r\n const { header, rows, footer } = props\r\n const classes = useStyles()\r\n if (!header || !rows) {\r\n return null\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {header.fields.map((headline, i) => {\r\n return (\r\n \r\n {headline.value}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n {rows.map((row) => {\r\n return (\r\n \r\n {row.fields.map((field, i) => (\r\n \r\n {field.value}\r\n \r\n ))}\r\n \r\n )\r\n })}\r\n {footer && (\r\n \r\n {footer.fields.map((field, i) => {\r\n return (\r\n \r\n {field.value}\r\n \r\n )\r\n })}\r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n","export const valueTypes = {\r\n CURRENCY: 'Amount',\r\n QUANTITY: 'Quantity',\r\n}\r\n","import React, { useState, useContext, useEffect } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { CategoryContext } from '../../context/CategoryContext'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { makeStyles } from '@material-ui/core'\r\nimport Table from '@material-ui/core/Table'\r\nimport TableBody from '@material-ui/core/TableBody'\r\nimport TableCell from '@material-ui/core/TableCell'\r\nimport TableHead from '@material-ui/core/TableHead'\r\nimport TableRow from '@material-ui/core/TableRow'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown'\r\nimport { FormControlLabel, Switch } from '@material-ui/core'\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp'\r\nimport { LinearProgress } from '@material-ui/core'\r\n\r\nimport SimpleTable from './SimpleTable'\r\nimport Monkey from '../../../../core/images/mini-abe.png'\r\nimport { valueTypes } from './Enums'\r\nimport RosendahlLogo from '../../../../core/images/rosendahl-design-group-logo.png'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n leftAligned: {\r\n textAlign: 'left',\r\n },\r\n progress: {\r\n height: 5,\r\n },\r\n header: {\r\n backgroundColor: theme.palette.grey['700'],\r\n color: 'white',\r\n fontWeight: 600,\r\n },\r\n logo: {\r\n margin: 'auto',\r\n marginTop: 50,\r\n marginBottom: 50,\r\n display: 'block',\r\n },\r\n image: {\r\n width: '50%',\r\n maxWidth: 500,\r\n },\r\n imageWrapper: {\r\n textAlign: 'center',\r\n },\r\n}))\r\n\r\nexport default function StatisticsPage() {\r\n const { CURRENCY, QUANTITY } = valueTypes\r\n const core = useContext(CoreContext)\r\n const userId = core.user.userId\r\n const [headerRow, setHeaderRow] = useState({})\r\n const [rows, setRows] = useState([])\r\n const [footer, setFooter] = useState({})\r\n const [loading, setLoading] = useState(false)\r\n const [valueType, setValueType] = useState(CURRENCY)\r\n\r\n const toggleValueType = () => {\r\n setValueType(valueType === CURRENCY ? QUANTITY : CURRENCY)\r\n }\r\n\r\n const showStats = !loading && headerRow.fields\r\n\r\n useEffect(() => {\r\n setLoading(true)\r\n core.dataStore\r\n .getSalesByMetric(userId, valueType)\r\n .then((res) => {\r\n if (!res.data) {\r\n return\r\n }\r\n const { footer, header, rows } = res.data\r\n setHeaderRow(header)\r\n setRows(rows)\r\n setFooter(footer)\r\n })\r\n .catch(console.log)\r\n .finally(() => {\r\n setLoading(false)\r\n })\r\n }, [valueType])\r\n\r\n const classes = useStyles()\r\n\r\n const Statistics = () => {\r\n return (\r\n \r\n \r\n \r\n {headerRow.fields &&\r\n headerRow.fields.map((headline, i) => {\r\n return (\r\n \r\n {headline.value}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n {rows.map((row, i) => (\r\n \r\n ))}\r\n {footer.fields &&\r\n footer.fields.map((field, i) => {\r\n return (\r\n \r\n {field.value}\r\n \r\n )\r\n })}\r\n \r\n
\r\n )\r\n }\r\n\r\n const NoStatistics = () => {\r\n return (\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 {!showStats ? (\r\n \r\n ) : (\r\n <>\r\n \r\n }\r\n label={}\r\n />\r\n\r\n

\r\n \r\n {' '}\r\n {valueType === CURRENCY ? (\r\n core.user.selectedCustomer.currency\r\n ) : (\r\n \r\n )}\r\n \r\n

\r\n\r\n {loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\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 Row({ fields, name, valueType }) {\r\n const core = useContext(CoreContext)\r\n const brands = useContext(CategoryContext).brands\r\n const userId = core.user.userId\r\n const [open, setOpen] = useState(false)\r\n const [loading, setLoading] = useState(false)\r\n const [insideTableData, setInsideTableData] = useState(undefined)\r\n const classes = useStyles()\r\n\r\n const brand =\r\n fields[0] && brands && brands.find((el) => el.label === fields[0].value)\r\n\r\n useEffect(() => {\r\n if (!insideTableData && open && brands && brands.length) {\r\n setLoading(true)\r\n //this assumes that the brand name is in the first column (fields[0])\r\n core.dataStore\r\n .getSalesByMetricAndBrand(userId, valueType, brand && brand.id)\r\n .then((res) => {\r\n if (res.data) {\r\n setInsideTableData(res.data)\r\n setLoading(false)\r\n }\r\n })\r\n }\r\n }, [open])\r\n\r\n return (\r\n <>\r\n \r\n {fields.map((field, i) => {\r\n return (\r\n \r\n \r\n {!i && (\r\n setOpen(!open)}>\r\n {open ? : }\r\n \r\n )}\r\n {field.value}\r\n \r\n \r\n )\r\n })}\r\n \r\n {open && (\r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React, { useContext, useState, useEffect } from 'react'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { ReturnServiceContext } from '../../context/ReturnServiceContext'\r\nimport { ProductsContext } from '../../context/ProductsContext'\r\nimport PageTitle from '../../components/PageTitle'\r\nimport TranslationLabel, { translationLink } from '../../../../core/components/TranslationLabel'\r\nimport {\r\n LinearProgress,\r\n makeStyles,\r\n FormControl,\r\n MenuItem,\r\n Select,\r\n InputLabel,\r\n FormHelperText,\r\n} from '@material-ui/core'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport Autocomplete from '@material-ui/lab/Autocomplete'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Button from '@material-ui/core/Button'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport InriverImage from '../../../../core/components/InriverImage'\r\nimport { useDebounce } from 'use-lodash-debounce'\r\nimport { CircularProgress } from '@material-ui/core'\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport AlertTitle from '@material-ui/lab/AlertTitle'\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n listImageContainer: {\r\n marginRight: theme.spacing(1),\r\n },\r\n formControl: {\r\n width: 200,\r\n marginBottom: 0,\r\n },\r\n img: {\r\n maxHeight: '100%',\r\n maxWidth: '100%',\r\n display: 'inline-block',\r\n },\r\n selectItemText: {\r\n lineHeight: '60px',\r\n height: '60px',\r\n fontSize: '16px',\r\n verticalAlign: 'bottom',\r\n marginRight: '20px',\r\n },\r\n submitButton: {\r\n float: 'right',\r\n },\r\n hr: {\r\n opacity: '0.5',\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'none',\r\n },\r\n },\r\n pageHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n [theme.breakpoints.down('sm')]: {\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n }\r\n }\r\n}))\r\n\r\nexport default function ReturnServicePageForm(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const returnServiceModel = useContext(ReturnServiceContext)\r\n const productsModel = useContext(ProductsContext)\r\n\r\n const [suggetions, setSuggetions] = useState([]);\r\n const [entries, setEntries] = useState([]);\r\n const [value, setValue] = useState('')\r\n const [srcTxt, setSrcTxt] = useState('')\r\n const debouncedValue = useDebounce(value, 300)\r\n const [uploadLoading, setUploadLoading] = useState(false)\r\n const [uploadErrors, setUploadErrors] = useState([])\r\n\r\n\r\n useEffect(() => {\r\n search(debouncedValue)\r\n }, [debouncedValue])\r\n\r\n function handleSearchInput(evt) {\r\n setValue(evt.target.value)\r\n }\r\n\r\n function search(itemId) {\r\n if (!itemId || itemId === '' || itemId.length < 4) return\r\n productsModel.getReturnProductById(itemId).then((products) => {\r\n if (products) {\r\n setSuggetions(products)\r\n } else {\r\n setSrcTxt('No items found.')\r\n }\r\n })\r\n }\r\n\r\n function add(item) {\r\n if (!item) {\r\n return\r\n }\r\n\r\n setEntries([...entries, item])\r\n setValue('')\r\n }\r\n\r\n function UploadRma(e) {\r\n if (!e.target.files[0]) {\r\n return\r\n }\r\n\r\n setUploadLoading(true)\r\n setEntries([])\r\n setUploadErrors([])\r\n\r\n core.dataStore.getReturnProductByExcel(\r\n core.user.selectedCustomer.accountNo,\r\n core.user.languageCode,\r\n e\r\n ).then(res => {\r\n\r\n setTimeout(() => {\r\n setEntries([...res.data.items])\r\n setValue('')\r\n setUploadLoading(false)\r\n\r\n if (res.data.withErrors) {\r\n setUploadErrors([...res.data.errors])\r\n }\r\n }, 500);\r\n })\r\n\r\n e.target.value = ''\r\n }\r\n\r\n function validate() {\r\n var error = false,\r\n errors = entries.map(item => {\r\n if (item.returnReasonId == '' || item.returnReasonId == 'null' || item.returnReasonId == null) {\r\n error = true;\r\n item.returnReasonIdError = true;\r\n } else {\r\n item.returnReasonIdError = false\r\n }\r\n\r\n if (item.quantity == '' || item.quantity <= 0) {\r\n error = true;\r\n item.quantityError = true;\r\n } else {\r\n item.quantityError = false;\r\n }\r\n\r\n console.log(item)\r\n\r\n return item;\r\n });\r\n\r\n setEntries([...errors]);\r\n\r\n return !error;\r\n }\r\n\r\n function onSubmit(e) {\r\n e.preventDefault();\r\n if (!validate()) {\r\n return;\r\n }\r\n\r\n returnServiceModel.multiAdd(entries, () => {\r\n setEntries([])\r\n setUploadErrors([])\r\n })\r\n }\r\n\r\n const Item = (itemData) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {' - '}\r\n {itemData.productNo}\r\n \r\n \r\n {itemData.description}\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 {entries.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 { uploadErrors.length > 0 && (\r\n {\r\n setUploadErrors([]);\r\n }}\r\n >\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n
    \r\n {uploadErrors.map((item) => {\r\n return (\r\n
  • { item.line } {item.query}
  • \r\n )\r\n })}\r\n
\r\n
\r\n )}\r\n\r\n add(newval)}\r\n value={value}\r\n options={suggetions}\r\n onBlur={() => {\r\n setValue('')\r\n setSuggetions([])\r\n }}\r\n disableClearable\r\n filterOptions={(x) => x}\r\n getOptionLabel={(option) => (typeof option === 'string' ? option : option.selectItemText)}\r\n renderOption={(option) => }\r\n renderInput={(params) => (\r\n }\r\n id='filled-margin-dense'\r\n variant='outlined'\r\n autoComplete={'off'}\r\n style={{ margin: '10px 0px 10px 0px' }}\r\n />\r\n )}\r\n />\r\n {productsModel.isLoading ? (\r\n \r\n ) : null}\r\n {srcTxt}\r\n\r\n \r\n
\r\n {entries.map((item, index) => {\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 entries[index].returnReasonId = e.target.value\r\n validate()\r\n }}\r\n label='Return reason'\r\n required>\r\n {/* alphabetical returnReasons */}\r\n {item?.returnReasons\r\n ?.sort((a, b) =>\r\n a.label < b.label\r\n ? -1\r\n : Number(a.label > b.label),\r\n )\r\n .map((r) => (\r\n \r\n {r.label}\r\n \r\n ))}\r\n \r\n \r\n { entries[index].returnReasonIdError\r\n ? \r\n : null}\r\n \r\n \r\n \r\n \r\n }\r\n onChange={(e) => entries[index].quantity = e.target.value * 1}\r\n type='number'\r\n InputLabelProps={{ shrink: true }}\r\n variant='outlined'\r\n margin='dense'\r\n required\r\n />\r\n \r\n { entries[index].quantityError\r\n ? \r\n : null}\r\n \r\n \r\n \r\n {\r\n var e = entries;\r\n e.splice(index, 1);\r\n setEntries([...e]);\r\n }}\r\n tabIndex={-1}>\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n )\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, { useContext, useEffect, useState } from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nimport { ReturnServiceContext } from '../../../context/ReturnServiceContext'\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\n\r\nimport Grid from '@material-ui/core/Grid'\r\nimport OutlinedInputField from '../../../components/ui/OutlinedInputField'\r\nimport {\r\n Checkbox,\r\n Divider,\r\n FormControl,\r\n FormControlLabel,\r\n InputLabel,\r\n makeStyles,\r\n MenuItem,\r\n Select,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core'\r\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\n\r\nimport { useForm, Controller } from 'react-hook-form'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n width: 400,\r\n marginBottom: 20,\r\n },\r\n margin: {\r\n margin: theme.spacing(1),\r\n },\r\n hr: {\r\n marginTop: theme.spacing(4),\r\n marginBottom: theme.spacing(4),\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n },\r\n padd: {\r\n paddingTop: 6,\r\n },\r\n btns: {\r\n display: 'flex',\r\n padding: theme.spacing(1),\r\n },\r\n btn: {\r\n width: 'auto',\r\n height: 40,\r\n marginTop: 30,\r\n marginRight: 10,\r\n minWidth: 100,\r\n },\r\n btnNext: {\r\n 'color': 'white',\r\n 'backgroundColor': 'black',\r\n 'width': '100%',\r\n 'maxWidth': 300,\r\n 'marginRight': 0,\r\n 'marginLeft': 'auto',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n}))\r\n\r\nconst firstCountriesInSelect = ['DNK', 'DEU', 'NOR', 'SWE']\r\n\r\nfunction ReturnServiceOrderDetails(props) {\r\n const history = useHistory()\r\n const core = useContext(CoreContext)\r\n const checkout = useContext(ReturnServiceContext)\r\n const classes = useStyles()\r\n const { advanceStep } = props\r\n const [deliveryAddresses, setDeliveryAddresses] = useState([])\r\n\r\n const [countries, setCountries] = useState([])\r\n\r\n useEffect(() => {\r\n if (core.user.language) {\r\n core.dataStore\r\n .getCustomerDeliveryCountries(core.user.language)\r\n .then((res) => {\r\n const countries = res?.data?.result?.sort((a, b) => {\r\n if (a.name > b.name) return 1\r\n if (a.name < b.name) return -1\r\n return 0\r\n })\r\n const firstCountries = firstCountriesInSelect.map((el) =>\r\n countries.find((country) => country.code === el),\r\n )\r\n\r\n setCountries([...firstCountries, ...countries])\r\n })\r\n .catch(() => {})\r\n }\r\n }, [core.user.language])\r\n\r\n const {\r\n handleSubmit,\r\n control,\r\n errors: fieldsErrors,\r\n setValue,\r\n clearErrors,\r\n setError,\r\n } = useForm({ defaultValues: checkout.orderDetails })\r\n\r\n const {\r\n addressFormLocked,\r\n setAddressFormLocked,\r\n setIsLoading,\r\n setIsInitialized,\r\n isInitialized,\r\n validateOrderDetails,\r\n useAnotherAddress,\r\n setUseAnotherAddress,\r\n } = checkout\r\n\r\n let checkObject = (obj) => (obj ? true : false)\r\n\r\n function onSubmit(formData) {\r\n if (!Number(formData.pickupPallets) && !Number(formData.pickupPackages)) {\r\n setError('pickupPallets', {\r\n type: 'focus',\r\n message: ,\r\n })\r\n setError('pickupPackages', {\r\n type: 'focus',\r\n message: ,\r\n })\r\n return\r\n }\r\n validateOrderDetails(\r\n {\r\n ...formData,\r\n //send 0 instead of empty strings\r\n pickupPackages: formData.pickupPackages || 0,\r\n pickupPallets: formData.pickupPallets || 0,\r\n },\r\n advanceStep,\r\n )\r\n }\r\n\r\n function resetDeliveryAdress(isChecked) {\r\n if (isChecked) {\r\n setValue('pickupName', '')\r\n setValue('pickupStreet1', '')\r\n setValue('pickupStreet2', '')\r\n setValue('pickupZipCode', '')\r\n setValue('pickupCity', '')\r\n setValue('pickupCountry', '')\r\n\r\n //reset select\r\n setValue('deliveryAddressId', '')\r\n setAddressFormLocked(false)\r\n } else {\r\n let id = deliveryAddresses[0].id\r\n setValue('deliveryAddressId', id)\r\n onInvoiceAddressSelectChange(id)\r\n }\r\n\r\n setValue('hasNewAddress', isChecked)\r\n\r\n clearErrors([\r\n 'pickupName',\r\n 'pickupStreet1',\r\n 'pickupStreet2',\r\n 'pickupZipCode',\r\n 'pickupCity',\r\n 'pickupCountry',\r\n ])\r\n }\r\n\r\n function onInvoiceAddressSelectChange(id) {\r\n setAddressFormLocked(false)\r\n let address = deliveryAddresses.find((x) => x.id === id)\r\n setAdresse(address)\r\n setAddressFormLocked(true)\r\n }\r\n\r\n function setAdresse(address) {\r\n setValue('pickupName', address.name)\r\n setValue('pickupStreet1', address.street)\r\n setValue('pickupStreet2', address.street2)\r\n setValue('pickupZipCode', address.zip)\r\n setValue('pickupCity', address.city)\r\n setValue('pickupCountry', address.country)\r\n setValue('deliveryAddressId', address.id)\r\n }\r\n\r\n useEffect(() => {\r\n function load() {\r\n core.dataStore\r\n .getCustomerAddressesByAccountNo(core.user.selectedCustomer.accountNo)\r\n .then((x) => {\r\n if (x.status === 200) {\r\n setDeliveryAddresses(x.data)\r\n if (!isInitialized) {\r\n let address = x.data[0]\r\n if (addressFormLocked) {\r\n setAdresse(address)\r\n setValue('deliveryAddressId', address.id)\r\n }\r\n setIsInitialized(true)\r\n }\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n if (core.isInitialized) {\r\n //redirect if no customer accountNo set,\r\n //could be if basket is accessed directly from browser refresh\r\n if (!core.user.selectedCustomer.accountNo) {\r\n history.push('/sales/returnService')\r\n } else {\r\n load()\r\n }\r\n }\r\n }, [])\r\n\r\n return (\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 clearErrors()\r\n var value =\r\n e.target.value < 0\r\n ? (e.target.value = 0)\r\n : e.target.value\r\n\r\n value =\r\n e.target.value > 5\r\n ? (e.target.value = 5)\r\n : e.target.value\r\n\r\n return onChange(Number(value))\r\n }}\r\n name={name}\r\n className={classes.margin}\r\n id='pickupPallets'\r\n helperText={\r\n fieldsErrors.pickupPallets\r\n ? fieldsErrors.pickupPallets.message\r\n : null\r\n }\r\n variant='outlined'\r\n label={}\r\n error={checkObject(fieldsErrors.pickupPallets)}\r\n />\r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n (\r\n {\r\n clearErrors()\r\n var value =\r\n e.target.value < 0\r\n ? (e.target.value = 0)\r\n : e.target.value\r\n\r\n value =\r\n e.target.value > 20\r\n ? (e.target.value = 20)\r\n : e.target.value\r\n\r\n return onChange(Number(value))\r\n }}\r\n name={name}\r\n className={classes.margin}\r\n id='pickupPackages'\r\n helperText={\r\n fieldsErrors.pickupPackages\r\n ? fieldsErrors.pickupPallets.message\r\n : null\r\n }\r\n variant='outlined'\r\n label={}\r\n error={checkObject(fieldsErrors.pickupPackages)}\r\n />\r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n\r\n {\r\n
\r\n
\r\n \r\n \r\n \r\n {/* Select address */}\r\n \r\n \r\n \r\n \r\n (\r\n {\r\n onInvoiceAddressSelectChange(e.target.value)\r\n return onChange(e.target.value)\r\n }}>\r\n {/* alphabetical list */}\r\n {deliveryAddresses\r\n .sort((a, b) =>\r\n a.name < b.name ? -1 : Number(a.name > b.name),\r\n )\r\n .map((address) => (\r\n \r\n {address.name +\r\n ', ' +\r\n address.street +\r\n ', ' +\r\n address.street2}\r\n \r\n ))}\r\n \r\n )}\r\n />\r\n \r\n\r\n {/* New address */}\r\n (\r\n {\r\n setUseAnotherAddress(e.target.checked)\r\n resetDeliveryAdress(e.target.checked)\r\n }}\r\n />\r\n }\r\n label={\r\n \r\n }\r\n />\r\n )}\r\n />\r\n
\r\n\r\n \r\n\r\n <>\r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n helperText={\r\n fieldsErrors.deliveryName\r\n ? fieldsErrors.deliveryName.message\r\n : null\r\n }\r\n label={}\r\n inputProps={{ maxLength: 100 }}\r\n error={checkObject(fieldsErrors.deliveryName)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: (\r\n \r\n ),\r\n },\r\n maxLength: {\r\n value: 100,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n helperText={\r\n fieldsErrors.deliveryStreetName1\r\n ? fieldsErrors.deliveryStreetName1.message\r\n : null\r\n }\r\n inputProps={{ maxLength: 60 }}\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryStreetName1)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: (\r\n \r\n ),\r\n },\r\n maxLength: {\r\n value: 60,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryStreetName2'\r\n helperText={\r\n fieldsErrors.deliveryStreetName2\r\n ? fieldsErrors.deliveryStreetName2.message\r\n : null\r\n }\r\n inputProps={{ maxLength: 60 }}\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryStreetName2)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n maxLength: {\r\n value: 60,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryZipCode'\r\n helperText={\r\n fieldsErrors.deliveryZipCode\r\n ? fieldsErrors.deliveryZipCode.message\r\n : null\r\n }\r\n inputProps={{ maxLength: 10 }}\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryZipCode)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: useAnotherAddress,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryCity'\r\n helperText={\r\n fieldsErrors.deliveryCity\r\n ? fieldsErrors.deliveryCity.message\r\n : null\r\n }\r\n inputProps={{ maxLength: 60 }}\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryCity)}\r\n variant='outlined'\r\n />\r\n )}\r\n rules={{\r\n required: {\r\n value: useAnotherAddress,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n (\r\n <>\r\n \r\n {}\r\n \r\n onChange(e.target.value)}\r\n name={name}\r\n disabled={addressFormLocked}\r\n className={classes.margin}\r\n id='deliveryCountry'\r\n labelId='deliveryCountryLabel'\r\n helperText={\r\n fieldsErrors.deliveryCountry\r\n ? fieldsErrors.deliveryCountry.message\r\n : null\r\n }\r\n inputProps={{ maxLength: 10 }}\r\n label={}\r\n error={checkObject(fieldsErrors.deliveryCountry)}\r\n variant='outlined'>\r\n {countries.map((el) => (\r\n {el.name}\r\n ))}\r\n \r\n \r\n )}\r\n rules={{\r\n required: {\r\n value: true,\r\n message: (\r\n \r\n ),\r\n },\r\n maxLength: {\r\n value: 10,\r\n message: (\r\n \r\n ),\r\n },\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n \r\n \r\n \r\n (\r\n onChange(e.target.value)}\r\n name={name}\r\n className={classes.margin}\r\n id='pickupContactPerson'\r\n helperText={\r\n fieldsErrors.pickupContactPerson\r\n ? fieldsErrors.pickupContactPerson.message\r\n : null\r\n }\r\n inputProps={{ maxLength: 60 }}\r\n label={}\r\n error={checkObject(fieldsErrors.pickupContactPerson)}\r\n variant='outlined'\r\n />\r\n )}\r\n />\r\n \r\n \r\n \r\n (\r\n }\r\n inputProps={{ maxLength: 30 }}\r\n inputRef={ref}\r\n fullWidth\r\n />\r\n )}\r\n />\r\n \r\n \r\n (\r\n }\r\n inputProps={{ maxLength: 200 }}\r\n inputRef={ref}\r\n fullWidth\r\n />\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\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 default ReturnServiceOrderDetails\r\n","import React, { useContext, useEffect } from 'react'\r\nimport { CoreContext } from '../../../../../core/context/CoreContext'\r\nimport { ReturnServiceContext } from '../../../context/ReturnServiceContext'\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nimport { Grid, makeStyles } from '@material-ui/core'\r\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\nimport Button from '@material-ui/core/Button'\r\nimport InriverImage from '../../../../../core/components/InriverImage'\r\nimport Typography from '@material-ui/core/Typography'\r\n\r\nimport { FieldItemRow } from '../../Products/DetailedItemTemplate'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n btns: {\r\n display: 'flex',\r\n padding: theme.spacing(1),\r\n marginTop: 40,\r\n },\r\n btn: {\r\n width: 'auto',\r\n minWidth: 120,\r\n height: 40,\r\n marginRight: 10,\r\n },\r\n btnNext: {\r\n 'color': 'white',\r\n 'backgroundColor': 'black',\r\n 'width': '100%',\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n returnLine: {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n marginRight: 10,\r\n },\r\n returnLineContainer: {\r\n padding: 5,\r\n borderBottom: '1px solid lightgrey',\r\n },\r\n imgWidth: {\r\n width: '72px',\r\n },\r\n}))\r\n\r\nfunction ReturnServiceConfirmation(props) {\r\n const history = useHistory()\r\n const core = useContext(CoreContext)\r\n const checkout = useContext(ReturnServiceContext)\r\n const classes = useStyles()\r\n\r\n const products = checkout?.basket?.entries\r\n\r\n const { goBack, advanceStep } = props\r\n const {\r\n pickupPallets,\r\n pickupPackages,\r\n pickupName,\r\n pickupStreet1,\r\n pickupStreet2,\r\n pickupZipCode,\r\n pickupCity,\r\n pickupCountry,\r\n pickupContactPerson,\r\n comment,\r\n requisitionNo,\r\n } = checkout.orderDetails\r\n\r\n function checkoutFlow() {\r\n checkout.submit(checkout.orderDetails, function (orderId) {\r\n checkout.resetOrderDetails()\r\n checkout.setIsInitialized(false)\r\n advanceStep(orderId)\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (core.isInitialized) {\r\n if (!core.user.selectedCustomer.accountNo) {\r\n history.push('/sales')\r\n }\r\n }\r\n }, [])\r\n\r\n return (\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 {products.map((product) => (\r\n \r\n ))}\r\n\r\n
\r\n \r\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 RmaConfirmationProductRow = ({ product }) => {\r\n const { itemId, itemName, quantity, returnReasonId, returnReasons, showImage } = product\r\n const returnReason = returnReasons.find(\r\n (el) => el.id === returnReasonId,\r\n )?.label\r\n const classes = useStyles()\r\n return (\r\n
\r\n \r\n \r\n \r\n {itemId}\r\n \r\n \r\n {itemName}\r\n \r\n \r\n {returnReason}\r\n \r\n \r\n {quantity} \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default ReturnServiceConfirmation\r\n","import React, { useContext, useEffect, useState } from 'react'\r\n//Core\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { ReturnServiceContext } from '../../context/ReturnServiceContext'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\n//MUI\r\nimport Grid from '@material-ui/core/Grid/Grid'\r\nimport Stepper from '@material-ui/core/Stepper'\r\nimport Step from '@material-ui/core/Step'\r\nimport StepLabel from '@material-ui/core/StepLabel'\r\nimport ReturnServiceOrderDetails from './components/ReturnServiceOrderDetails'\r\nimport ReturnServiceConfirmation from './components/ReturnServiceConfirmation'\r\nimport DetailedRMAOrderView from '../Orders/DetailedRMAOrderView'\r\n\r\nfunction ReturnServiceCheckoutPage(props) {\r\n const { history, match } = props\r\n const core = useContext(CoreContext)\r\n const checkout = useContext(ReturnServiceContext)\r\n const [activeStep] = useState(getActiveStep)\r\n\r\n useEffect(() => {\r\n core.setTitles(core.dictionary.getLabel('checkout'))\r\n }, [])\r\n\r\n function getSteps() {\r\n return [\r\n ,\r\n ,\r\n ,\r\n ]\r\n }\r\n\r\n function getActiveStep() {\r\n switch (match.path) {\r\n case '/sales/returnService/checkout':\r\n return 0 // details\r\n case '/sales/returnService/checkout/confirmation':\r\n return 1\r\n case '/sales/returnService/checkout/receipt/*':\r\n return 2\r\n default:\r\n return 'Unknown step'\r\n }\r\n }\r\n\r\n function advanceStep(orderId) {\r\n switch (activeStep + 1) {\r\n case 1:\r\n history.push('/sales/returnService/checkout/confirmation')\r\n break\r\n case 2:\r\n history.push(`/sales/returnService/checkout/receipt/${orderId}`)\r\n break\r\n default:\r\n history.push('/sales/returnService/checkout') // details\r\n }\r\n }\r\n\r\n function goBack() {\r\n checkout.setOrderDetailsValidated(false)\r\n history.push('/sales/returnService/checkout')\r\n }\r\n\r\n function getCurrentStep() {\r\n switch (activeStep) {\r\n case 0:\r\n return \r\n case 1:\r\n return (\r\n \r\n )\r\n case 2:\r\n return (\r\n \r\n )\r\n default:\r\n return 'Unknown step'\r\n }\r\n }\r\n\r\n function getOrderId() {\r\n return window.location.pathname.split('/receipt/')[1]\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {getSteps().map((label) => (\r\n \r\n {label}\r\n \r\n ))}\r\n \r\n \r\n \r\n {getCurrentStep()}\r\n \r\n )\r\n}\r\n\r\nexport default ReturnServiceCheckoutPage\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport InfiniteScroll from 'react-infinite-scroller'\r\nimport { Button, LinearProgress, makeStyles } from '@material-ui/core'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport SearchIcon from '@material-ui/icons/Search'\r\nimport CloseIcon from \"@material-ui/icons/Close\"\r\nimport TableView from '../../components/TableView'\r\n\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { Typography } from '@material-ui/core'\r\nimport EmptyState from '../../components/EmptyState'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { BasketContext } from '../../../../core/context/BasketContext'\r\nimport OpenOrdersModal from '../Products/OpenOrdersModal'\r\nimport priceDtoHelper from '../../../../shared/PriceDtoHelper'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n productsPageRoot: {\r\n flexGrow: 1,\r\n margin: 0,\r\n background: 'white',\r\n },\r\n stickyloader: {\r\n margin: 'auto',\r\n position: 'sticky',\r\n zIndex: 1,\r\n width: '100%',\r\n visibility: 'hidden',\r\n },\r\n loaderVisible: {\r\n visibility: 'visible',\r\n },\r\n stickyScrollButton: {\r\n 'position': 'fixed',\r\n 'top': 80,\r\n 'left': '50%',\r\n 'transform': 'translateX(-50%)',\r\n 'zIndex': 100,\r\n 'backgroundColor': 'white',\r\n '&:hover': {\r\n backgroundColor: 'white',\r\n },\r\n },\r\n buttons: {\r\n margin: 10,\r\n },\r\n seeProductsButton: {\r\n marginRight: 20,\r\n },\r\n inputField: {\r\n margin: '10px 0px 10px 0px',\r\n '&::-webkit-search-decoration,::-webkit-search-cancel-button,::-webkit-search-results-button,::-webkit-search-results-decoration': {\r\n display: 'none'\r\n }\r\n },\r\n searchIcon: {\r\n fill: theme.palette.grey['700'],\r\n cursor: 'pointer'\r\n },\r\n}))\r\n\r\nexport default function SearchPage() {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const basketModel = useContext(BasketContext)\r\n const [query, setQuery] = useState('')\r\n const [products, setProducts] = useState([])\r\n const [selectedProducts, setSelectedProducts] = useState([])\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [showSelected, setShowSelected] = useState(false)\r\n const [pageNumber, setPageNumber] = useState(1)\r\n const [hasMoreResults, setHasMoreResults] = useState(false)\r\n\r\n const [openOrdersModal, setOpenOrdersModal] = useState(undefined)\r\n\r\n function handleQueryChange(e) {\r\n setQuery(e.target.value)\r\n setPageNumber(1)\r\n }\r\n\r\n const keypressHandler = (e) => {\r\n if (e.keyCode === 13) {\r\n //for the enter key\r\n search()\r\n setShowSelected(false)\r\n }\r\n }\r\n\r\n const showSelectedHandler = () => {\r\n setShowSelected(!showSelected)\r\n setPageNumber(1)\r\n }\r\n\r\n const addToBasket = () => {\r\n basketModel.multiAdd(\r\n selectedProducts.map((el) => {\r\n return { ...el, qty: priceDtoHelper.findNextAllowedNumber(el, el.quantity || 0) }\r\n }),\r\n () => {\r\n setSelectedProducts([])\r\n setProducts(\r\n products.map((product) => {\r\n return { ...product, quantity: '' }\r\n }),\r\n )\r\n },\r\n )\r\n }\r\n\r\n const addColiToBasket = (product) => {\r\n setSelectedProducts(selectedProducts.filter((el) => el.productNo !== product.productNo))\r\n }\r\n\r\n const onQuantityChange = (productNo, quantity) => {\r\n const changingProduct = products.findIndex((el) => el.productNo === productNo)\r\n const changingSelectedProduct = selectedProducts.findIndex((el) => el.productNo === productNo)\r\n\r\n if (changingProduct + changingSelectedProduct === -2) {\r\n return console.log('changed quantity on product not in products lists')\r\n }\r\n\r\n if (changingSelectedProduct > -1) {\r\n let newSelectedProducts = [...selectedProducts]\r\n if (quantity == '0' || !quantity) {\r\n newSelectedProducts = newSelectedProducts.filter((el) => el.productNo !== productNo)\r\n } else {\r\n newSelectedProducts[changingSelectedProduct].quantity = quantity\r\n }\r\n\r\n setSelectedProducts(newSelectedProducts)\r\n } else if (changingProduct > -1 && quantity > 0) {\r\n const newSelectedProducts = [...selectedProducts]\r\n newSelectedProducts.push({ ...products[changingProduct], quantity })\r\n setSelectedProducts(newSelectedProducts)\r\n }\r\n }\r\n\r\n const options = {\r\n userId: core.user.userId,\r\n customerId: core.user.selectedCustomer.accountNo,\r\n selectedFacetValues: {\r\n brand: [],\r\n mainColor: [],\r\n subCategory: [],\r\n category: [],\r\n news: [],\r\n },\r\n languageCode: core.user.languageCode,\r\n pageSize: 24,\r\n pageNumber,\r\n query: query,\r\n sortByField: 'BrandId',\r\n descendingSortOrder: false,\r\n }\r\n\r\n const search = () => {\r\n setIsLoading(true)\r\n\r\n if (isLoading) {\r\n return;\r\n }\r\n\r\n core.dataStore\r\n .searchProducts(options)\r\n .then((res) => {\r\n if (res && res.data) {\r\n if (pageNumber === 1) {\r\n setProducts(\r\n res.data.products.map((product) => {\r\n const alreadySelectedProduct = selectedProducts.find(\r\n (el) => el.productNo === product.productNo,\r\n )\r\n if (alreadySelectedProduct) {\r\n product.quantity = alreadySelectedProduct.quantity\r\n }\r\n return product\r\n }),\r\n )\r\n } else {\r\n setProducts(\r\n products.concat(\r\n res.data.products.map((product) => {\r\n const alreadySelectedProduct = selectedProducts.find(\r\n (el) => el.productNo === product.productNo,\r\n )\r\n if (alreadySelectedProduct) {\r\n product.quantity = alreadySelectedProduct.quantity\r\n }\r\n return product\r\n }),\r\n ),\r\n )\r\n }\r\n setHasMoreResults(!res.data.isLastPage)\r\n setPageNumber(pageNumber + 1)\r\n }\r\n })\r\n .catch(console.log)\r\n .finally(() => {\r\n setIsLoading(false)\r\n })\r\n }\r\n\r\n return (\r\n
\r\n el && el.productNo == openOrdersModal)}\r\n setOpenOrdersModal={setOpenOrdersModal}\r\n />\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n }\r\n variant='contained'\r\n color='primary'>\r\n \r\n {selectedProducts.length}\r\n \r\n \r\n \r\n
\r\n }\r\n id='filled-margin-dense'\r\n type='search'\r\n variant='outlined'\r\n value={query}\r\n onChange={handleQueryChange}\r\n className={classes.inputField}\r\n InputProps={{\r\n startAdornment: ,\r\n endAdornment: setQuery('') } className={classes.searchIcon} />,\r\n }}\r\n />\r\n \r\n\r\n {/* Product list */}\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n {/* No products */}\r\n {!isLoading && products.length === 0 && query && (\r\n \r\n )}\r\n
\r\n )\r\n}\r\n","import BasketPage from '../pages/Basket/BasketPage'\r\nimport ProductsPageV2 from '../pages/Products/ProductsPageV2'\r\nimport DetailedProductView from '../pages/Products/DetailedProductView'\r\nimport DetailedInvoiceView from '../pages/Invoices/DetailedInvoiceView'\r\nimport InvoicesPage from '../pages/Invoices/InvoicesPage'\r\nimport OrdersPage from '../pages/Orders/OrdersPage'\r\nimport RestOrdersView from '../pages/Orders/RestOrdersView'\r\nimport DetailedOrderView from '../pages/Orders/DetailedOrderView'\r\nimport DetailedRMAOrderView from '../pages/Orders/DetailedRMAOrderView'\r\nimport BasketOverview from '../../../core/pages/BasketOverview/BasketOverview'\r\nimport QuickEntryPage from '../pages/QuickEntry/QuickEntryPage'\r\nimport DashboardPage from '../pages/Dashboard/DashboardPage'\r\nimport HomePage from '../pages/Home/HomePage'\r\nimport StatisticsPage from '../pages/Statistics/StatisticsPage'\r\nimport ReturnServicePageForm from '../pages/ReturnService/ReturnServicePageForm'\r\nimport ReturnServiceCheckoutPage from '../pages/ReturnServiceCheckout/ReturnServiceCheckoutPage'\r\nimport SearchPage from '../pages/SearchPage/SearchPage'\r\nimport HelpPage from '../../../core/components/HelpPage'\r\n\r\nconst root = '/sales'\r\n\r\nconst routes = [\r\n {\r\n id: 'Basket',\r\n path: root + '/basket',\r\n component: BasketPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'BasketReceipt',\r\n path: root + '/basket/receipt',\r\n component: BasketPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'BasketConfirmation',\r\n path: root + '/basket/confirmation',\r\n component: BasketPage,\r\n accessLevel: 0,\r\n },\r\n {\r\n id: 'Products',\r\n path: root + '/products',\r\n component: ProductsPageV2,\r\n accessLevel: 0,\r\n },\r\n {\r\n id: 'Search',\r\n path: root + '/search',\r\n component: SearchPage,\r\n },\r\n {\r\n id: 'QuickEntry',\r\n path: root + '/quickEntry',\r\n component: QuickEntryPage,\r\n },\r\n {\r\n id: 'DetailedProductView',\r\n path: root + '/products/item/:id',\r\n component: DetailedProductView,\r\n },\r\n {\r\n id: 'Orders',\r\n path: root + '/orders',\r\n component: OrdersPage,\r\n },\r\n {\r\n id: 'DetailedOrderView',\r\n path: root + '/orders/:id/:onlyRestOrders',\r\n component: DetailedOrderView,\r\n },\r\n {\r\n id: 'RestOrders',\r\n path: root + '/restOrders',\r\n component: RestOrdersView,\r\n },\r\n {\r\n id: 'DetailedRMAOrderView',\r\n path: root + '/rmaOrders/:id/:onlyRestOrders',\r\n component: DetailedRMAOrderView,\r\n },\r\n {\r\n id: 'Invoices',\r\n path: root + '/invoices',\r\n component: InvoicesPage,\r\n },\r\n {\r\n id: 'DetailedInvoiceView',\r\n path: root + '/invoices/:id',\r\n component: DetailedInvoiceView,\r\n },\r\n {\r\n id: 'BasketOverview',\r\n path: root + '/basketOverview',\r\n component: BasketOverview,\r\n },\r\n {\r\n id: 'DashboardPage',\r\n path: root + '/dashboard',\r\n component: DashboardPage,\r\n },\r\n {\r\n id: 'HomePage',\r\n path: root + '/home',\r\n component: HomePage,\r\n },\r\n {\r\n id: 'Statistics',\r\n path: root + '/statistics',\r\n component: StatisticsPage,\r\n },\r\n {\r\n id: 'ReturnService',\r\n path: root + '/returnService',\r\n component: ReturnServicePageForm,\r\n },\r\n {\r\n id: 'ReturnServiceCheckout',\r\n path: root + '/returnService/checkout',\r\n component: ReturnServiceCheckoutPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'ReturnServiceCheckoutReceipt',\r\n path: root + '/returnService/checkout/receipt/*',\r\n component: ReturnServiceCheckoutPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'ReturnServiceCheckoutConfirmation',\r\n path: root + '/returnService/checkout/confirmation',\r\n component: ReturnServiceCheckoutPage,\r\n accessLevel: 0,\r\n },\r\n {\r\n id: 'Help',\r\n path: root + '/help',\r\n component: HelpPage,\r\n exact: true,\r\n },\r\n]\r\n\r\nexport default {\r\n getRoute: id => routes.find((i) => i.id === id),\r\n root: root,\r\n routes: routes\r\n}\r\n","import { useContext } from 'react'\r\nimport routeSettings from './routes'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\n\r\nconst GetNavItems = () => {\r\n const core = useContext(CoreContext)\r\n const { showDashboard } = core.user.userSetting\r\n\r\n const navItem = (id, index, labelKey) => {\r\n return {\r\n id: id,\r\n route: routeSettings.getRoute(id),\r\n index: index,\r\n labelKey: labelKey,\r\n }\r\n }\r\n\r\n const upperNavigation = [\r\n navItem('HomePage', 1, 'homePage'),\r\n navItem('Products', 3, 'productsPage'),\r\n navItem('Search', 4, 'searchPage'),\r\n navItem('QuickEntry', 5, 'quickEntryPage'),\r\n navItem('ReturnService', 6, 'returnServicePage'),\r\n navItem('Invoices', 7, 'invoicesPage'),\r\n navItem('Orders', 8, 'ordersPage'),\r\n navItem('RestOrders', 9, 'restOrders'),\r\n navItem('Statistics', 11, 'statisticsPage'),\r\n navItem('Help', 12, 'helpPage'),\r\n ]\r\n\r\n if (showDashboard) {\r\n upperNavigation.splice(1, 0, navItem('DashboardPage', 2, 'dashboard'))\r\n }\r\n\r\n return {\r\n upperNavigation,\r\n }\r\n}\r\n\r\nexport default GetNavItems\r\n","import React, { useContext, useState } from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Badge from '@material-ui/core/Badge'\r\nimport ShoppingBasket from '@material-ui/icons/ShoppingBasket'\r\nimport CircularProgress from '@material-ui/core/CircularProgress/CircularProgress'\r\n\r\nimport NavigationDrawer from '../../../core/components/navigation/NavigationDrawer'\r\nimport Topbar from '../../../core/components/navigation/Topbar'\r\nimport MiniBasket from '../pages/Basket/components/MiniBasket'\r\nimport MiniBasketReturnService from '../pages/Basket/components/MiniBasketReturnService'\r\n\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport { BasketContext } from '../../../core/context/BasketContext'\r\nimport { ReturnServiceContext } from '../context/ReturnServiceContext'\r\n\r\nimport getNavigationSettings from '../config/navigation'\r\n\r\nimport IconFinder from '../libraries/IconFinder'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n facebook2: {\r\n color: '#6798e5',\r\n animationDuration: '550ms',\r\n position: 'absolute',\r\n left: 0,\r\n },\r\n}))\r\n\r\nfunction Navigation(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const basket = useContext(BasketContext)\r\n const returnService = useContext(ReturnServiceContext)\r\n const [open, setOpen] = useState(false)\r\n const [openReturnService, setOpenReturnService] = useState(false)\r\n\r\n const location = useLocation()\r\n const showReturnBasketHideBasket = location.pathname.includes(\r\n '/sales/returnService',\r\n )\r\n\r\n function handleClickMiniBasket(val) {\r\n setOpen(val)\r\n }\r\n\r\n function handleClickMiniBasketReturnService(val) {\r\n setOpenReturnService(val)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {showReturnBasketHideBasket ? (\r\n handleClickMiniBasketReturnService(true)}>\r\n {!returnService.isLoading ? (\r\n \r\n {IconFinder.getIcon('returnservice')}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ) : (\r\n handleClickMiniBasket(true)}>\r\n {!basket.isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\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 default Navigation\r\n","import React from 'react'\r\nimport Grid from '@material-ui/core/Grid'\r\nimport Button from '@material-ui/core/Button'\r\n\r\nimport Monkey from '../images/mini-abe.png'\r\nimport { makeStyles } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n image: {\r\n maxHeight: '250px',\r\n },\r\n centerGrid: {\r\n alignItems: 'center',\r\n },\r\n textCenter: {\r\n textAlign: 'center',\r\n },\r\n}))\r\n\r\nfunction NotFound() {\r\n const classes = useStyles()\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

404

\r\n

The page could not be found.

\r\n

Can't find what you're looking for?

\r\n \r\n Log in\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nexport default NotFound\r\n","import React, { useContext } from 'react'\r\nimport { Redirect, Route, Router, Switch } from 'react-router-dom'\r\nimport routes from '../config/routes'\r\nimport classNames from 'classnames'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery/useMediaQuery'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport NotFound from '../../../core/pages/NotFound'\r\n\r\nfunction ComponentRoute({ component: Component, ...rest }) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nconst drawerWidth = 240\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n marginTop: 64,\r\n flexGrow: 1,\r\n padding: theme.spacing(2),\r\n height: 'calc(100% - 64px)',\r\n backgroundColor: 'white',\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: drawerWidth,\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 70,\r\n },\r\n contentStatic: {\r\n marginLeft: 0,\r\n },\r\n})\r\n\r\nfunction Content(props) {\r\n const { classes, match } = props\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n />\r\n {routes.routes.map((r) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Content)\r\n","import React, { createContext, useContext, useReducer } from 'react'\r\nimport labels from '../assets/feeds/texts.json'\r\n\r\nconst StoreContext = createContext()\r\nconst initialState = {\r\n //common\r\n texts: labels,\r\n\r\n //templates\r\n templates: [],\r\n selectedTemplate: '',\r\n\r\n //languages\r\n languages: [],\r\n\r\n //\r\n templateFieldData: [],\r\n}\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n // Templates\r\n case 'SET_TEMPLATES':\r\n return { ...state, templates: action.payload }\r\n case 'SET_TEMPLATE':\r\n return { ...state, selectedTemplate: action.payload }\r\n // Languages\r\n case 'SET_LANGUAGES':\r\n return { ...state, languages: action.payload }\r\n\r\n // TemplatefieldData\r\n case 'SET_TEMPLATE_FIELD_DATA':\r\n return { ...state, templateFieldData: action.payload }\r\n\r\n default:\r\n console.error('oops', action.type)\r\n return state\r\n }\r\n}\r\n\r\nexport const StoreProvider = ({ children }) => {\r\n const [state, dispatch] = useReducer(reducer, initialState)\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport const useStore = () => useContext(StoreContext)\r\n","import React, { useState, useContext, useEffect } from 'react'\r\nimport { useStore } from '../../global/store'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport {\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n Select,\r\n MenuItem,\r\n FormControl,\r\n InputLabel,\r\n FormControlLabel,\r\n Switch,\r\n} from '@material-ui/core'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n 'width': '100%',\r\n\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n marginBottom: 20,\r\n },\r\n },\r\n field: {\r\n width: 'calc(100% - 16px)',\r\n },\r\n fieldHalf: {\r\n width: '50%',\r\n },\r\n spacing: {\r\n margin: '10px 25px 20px',\r\n },\r\n}))\r\n\r\nfunction TemplateDialog(props) {\r\n const core = useContext(CoreContext)\r\n const { state, dispatch } = useStore()\r\n const templateOptions = [\r\n {\r\n id: '',\r\n customerId: '',\r\n name: 'None',\r\n templateFields: [],\r\n },\r\n ...state.templates,\r\n ]\r\n const classes = useStyles()\r\n const [data, setData] = useState(() => {\r\n switch (props.type) {\r\n case 'delete':\r\n return props.data\r\n case 'update':\r\n return props.data\r\n case 'create':\r\n return {\r\n name: '',\r\n customerId: core.user.selectedCustomer.accountNo,\r\n defaultLanguageCode: 'da-DK',\r\n }\r\n default:\r\n return {\r\n ...props.data,\r\n defaultLanguageCode: props.data?.fromTemplate?.defaultLanguageCode,\r\n }\r\n }\r\n })\r\n\r\n useEffect(() => {\r\n if (state.languages.length === 0) {\r\n core.dataStore.getLanguages().then((res) => {\r\n dispatch({ type: 'SET_LANGUAGES', payload: res.data })\r\n })\r\n }\r\n }, [])\r\n\r\n const handleChange = (e) => {\r\n setData({ ...data, name: e.target.value })\r\n }\r\n\r\n const reloadTemplatesAndSelectById = (id) => {\r\n core.masterItemDataStore\r\n .getCustomerTemplates(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n dispatch({ type: 'SET_TEMPLATES', payload: res.data })\r\n let selectedTemplate = res.data.find((el) => el.id === id)\r\n console.log('setting selected template to ', selectedTemplate)\r\n dispatch({\r\n type: 'SET_TEMPLATE',\r\n payload: selectedTemplate || res.data[0],\r\n })\r\n })\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault()\r\n let form = e.currentTarget\r\n const isValid = form.reportValidity()\r\n if (isValid) {\r\n switch (props.type) {\r\n case 'create':\r\n core.masterItemDataStore\r\n .addTemplate({\r\n ...data,\r\n customerNo: core.user.selectedCustomer.accountNo,\r\n })\r\n .then((res) => {\r\n props.close()\r\n reloadTemplatesAndSelectById(res.data.id)\r\n })\r\n break\r\n case 'copy':\r\n if (data.fromTemplate.id) {\r\n core.masterItemDataStore\r\n .copyTemplate({\r\n ...data,\r\n fromTemplate: data.fromTemplate.id,\r\n customerNo: core.user.selectedCustomer.accountNo,\r\n })\r\n .then((res) => {\r\n dispatch({ type: 'SET_TEMPLATE', payload: res.data })\r\n props.close()\r\n reloadTemplatesAndSelectById(res.data.id)\r\n })\r\n } else {\r\n }\r\n break\r\n case 'delete':\r\n core.masterItemDataStore\r\n .deleteTemplate(data)\r\n .then((r) => props.onClose('template'))\r\n break\r\n default:\r\n core.masterItemDataStore\r\n .editTemplate(data)\r\n .then((r) => props.onClose('template'))\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n }\r\n variant='outlined'\r\n defaultValue={data.name}\r\n disabled={props.type === 'delete'}\r\n onChange={handleChange}\r\n className={classes.field}\r\n required\r\n autoFocus\r\n />\r\n {core.user.userSetting.templateManagement &&\r\n props.type === 'update' && (\r\n \r\n setData({ ...data, standard: !data.standard })\r\n }\r\n />\r\n }\r\n label='standardTemplate'\r\n />\r\n )}\r\n {props.type === 'copy' && (\r\n \r\n \r\n \r\n \r\n \r\n setData({\r\n ...data,\r\n fromTemplate: e.target.value,\r\n defaultLanguageCode:\r\n e.target.value.defaultLanguageCode || 'da-DK',\r\n })\r\n }\r\n name='dataTemplate'>\r\n {templateOptions.map((template) => {\r\n return (\r\n \r\n {template.name}\r\n \r\n )\r\n })}\r\n \r\n \r\n )}\r\n\r\n {props.type !== 'delete' && (\r\n \r\n \r\n \r\n \r\n {\r\n setData({ ...data, defaultLanguageCode: e.target.value })\r\n }}>\r\n {state.languages.map((language) => {\r\n return (\r\n \r\n {language.title}\r\n \r\n )\r\n })}\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n props.onClose()}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default TemplateDialog\r\n","export default ['DKK', 'EUR', 'GBP', 'NOK', 'SEK', 'USD']\r\n","import React, { useEffect, useState, useContext } from 'react'\r\nimport { useStore } from '../../global/store'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport {\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n FormControl,\r\n FormControlLabel,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n Switch,\r\n Tooltip,\r\n} from '@material-ui/core'\r\nimport currencies from '../../global/currencies'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n 'width': '100%',\r\n\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n marginBottom: 20,\r\n },\r\n },\r\n field: {\r\n width: 'calc(100% - 16px)',\r\n },\r\n fieldHalf: {\r\n width: '50%',\r\n },\r\n spacing: {\r\n margin: '10px 25px 20px',\r\n },\r\n}))\r\n\r\nconst defaultLanguageCodeToCurrency = {\r\n 'en-GB': 'GBP',\r\n 'da-DK': 'DKK',\r\n 'sv-SE': 'SEK',\r\n 'nb-NO': 'NOK',\r\n 'de-DE': 'EUR',\r\n}\r\n\r\nfunction TemplateColumnDialog(props) {\r\n const core = useContext(CoreContext)\r\n const { state, dispatch } = useStore()\r\n const classes = useStyles()\r\n const [outputFieldFound, setOutputFieldFound] = useState(false)\r\n const [data, setData] = useState(() => {\r\n switch (props.type) {\r\n case 'delete':\r\n return props.data\r\n case 'update':\r\n return props.data\r\n default:\r\n return {\r\n blankIfZero: true,\r\n columnNo: getNextColumnNo(state.selectedTemplate.templateFields),\r\n currencyCode:\r\n defaultLanguageCodeToCurrency[\r\n state.selectedTemplate.defaultLanguageCode\r\n ] || 'DKK',\r\n dataFrom: '',\r\n headerText: '',\r\n languageCode: state.selectedTemplate.defaultLanguageCode,\r\n maxFieldLength: 0,\r\n noDecimalSeperator: false,\r\n noThousandSeperator: false,\r\n templateId: props.data.templateId,\r\n }\r\n }\r\n })\r\n\r\n const templateField = state.templateFieldData.find(\r\n (el) => el.name === data.dataFrom,\r\n )\r\n const currencyCodeRequired = templateField?.currencyCodeRequired\r\n\r\n useEffect(() => {\r\n if (state.languages.length === 0) {\r\n core.dataStore.getLanguages().then((res) => {\r\n dispatch({ type: 'SET_LANGUAGES', payload: res.data })\r\n })\r\n }\r\n core.masterItemDataStore.readTemplateFieldData().then((res) => {\r\n const isAdmin =\r\n core.user.userSetting.userTypeId === 1 || //Admin\r\n core.user.userSetting.userTypeId === 2 || // TDG internal\r\n core.user.userSetting.userTypeId === 5 || // sales person\r\n core.user.userSetting.userTypeId === 7 // Merchandiser\r\n if (!isAdmin) {\r\n res.data = res.data.filter((el) => !el.internal)\r\n }\r\n dispatch({\r\n type: 'SET_TEMPLATE_FIELD_DATA',\r\n payload: res.data.sort((a, b) =>\r\n a.displayName > b.displayName ? 1 : -1,\r\n ),\r\n })\r\n window.res = res.data\r\n })\r\n }, [])\r\n\r\n const handleCurrencyChange = (e) => {\r\n setData({ ...data, currencyCode: e.target.value })\r\n }\r\n\r\n const handleLanguageChange = (e) => {\r\n setData({ ...data, languageCode: e.target.value })\r\n }\r\n\r\n const handleInputFieldChange = (e) => {\r\n let val = e.target.value\r\n setData({ ...data, dataFrom: val })\r\n }\r\n\r\n const handleTextFieldChange = (e, name) => {\r\n if (name == 'headerText' && e.target.value.length > 0) {\r\n if (!outputFieldExists(e.target.value, data.columnNo)) {\r\n setData({ ...data, [name]: e.target.value })\r\n }\r\n } else {\r\n setData({ ...data, [name]: e.target.value })\r\n }\r\n }\r\n\r\n const toggleCheckedDecimalSeperator = () => {\r\n let newValue = !data.noDecimalSeperator\r\n setData({ ...data, noDecimalSeperator: newValue })\r\n }\r\n\r\n const toggleCheckedThousandSeperator = () => {\r\n let newValue = !data.noThousandSeperator\r\n setData({ ...data, noThousandSeperator: newValue })\r\n }\r\n\r\n const toggleBlankIfZero = () => {\r\n let newValue = !data.blankIfZero\r\n setData({ ...data, blankIfZero: newValue })\r\n }\r\n\r\n const outputFieldExists = (val) => {\r\n console.log(\r\n state.selectedTemplate.templateFields.filter(\r\n (el) => el.headerText.toLowerCase() == val.toLowerCase(),\r\n ).length,\r\n )\r\n if (\r\n state.selectedTemplate.templateFields.filter(\r\n (el) =>\r\n el.headerText.toLowerCase() == val.toLowerCase() && el.id != data.id,\r\n ).length == 0\r\n ) {\r\n setOutputFieldFound(false)\r\n console.log('outputFieldFound: ' + outputFieldFound)\r\n return false\r\n } else {\r\n setOutputFieldFound(true)\r\n console.log('outputFieldFound: ' + outputFieldFound)\r\n return true\r\n }\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault()\r\n let form = e.currentTarget\r\n const isValid = form.reportValidity()\r\n\r\n if (isValid && !labelIsTaken()) {\r\n if (props.type === 'delete') {\r\n core.masterItemDataStore\r\n .deleteTemplateField(data)\r\n .then((r) => props.onClose('template'))\r\n } else if (props.type === 'update') {\r\n core.masterItemDataStore\r\n .updateTemplateField(data)\r\n .then((r) => props.onClose('template'))\r\n } else {\r\n console.log(data)\r\n core.masterItemDataStore\r\n .addTemplateField(data)\r\n .then((r) => props.onClose('template'))\r\n }\r\n }\r\n }\r\n\r\n const labelIsTaken = () =>\r\n props.type == 'create' || props.type == 'update' ? outputFieldFound : false //state.selectedTemplate.templateFields.map(el => el.headerText).includes(data.headerText)\r\n\r\n return (\r\n \r\n \r\n }\r\n defaultValue={data.columnNo}\r\n variant='outlined'\r\n disabled={props.type === 'delete'}\r\n onChange={(e) => handleTextFieldChange(e, 'columnNo')}\r\n type='number'\r\n required\r\n className={classes.field}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {state.templateFieldData.map((fieldData) => {\r\n return (\r\n \r\n \r\n
{fieldData.displayName}
\r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n\r\n }\r\n defaultValue={data.headerText}\r\n variant='outlined'\r\n disabled={props.type === 'delete'}\r\n onChange={(e) => handleTextFieldChange(e, 'headerText')}\r\n error={labelIsTaken()}\r\n helperText={\r\n labelIsTaken() ? : ''\r\n }\r\n className={classes.field}\r\n required\r\n />\r\n\r\n }\r\n defaultValue={data.maxFieldLength}\r\n variant='outlined'\r\n type='number'\r\n disabled={props.type === 'delete'}\r\n onChange={(e) => handleTextFieldChange(e, 'maxFieldLength')}\r\n className={classes.field}\r\n />\r\n\r\n \r\n }\r\n label={}\r\n />\r\n\r\n \r\n }\r\n label={}\r\n />\r\n\r\n \r\n }\r\n label={}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n {state.languages.map((lang) => {\r\n return (\r\n \r\n {lang.title}\r\n \r\n )\r\n })}\r\n \r\n \r\n\r\n {currencyCodeRequired && (\r\n \r\n \r\n \r\n \r\n \r\n {currencies.map((currency) => {\r\n return (\r\n \r\n {currency}\r\n \r\n )\r\n })}\r\n \r\n \r\n )}\r\n
\r\n\r\n \r\n props.onClose()}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction getNextColumnNo(fields) {\r\n var r = Math.max(...fields.map((el) => el.columnNo)) + 1\r\n if (r == '-Infinity') {\r\n r = 1\r\n }\r\n return r\r\n}\r\n\r\nexport default TemplateColumnDialog\r\n","import React, { useState, useContext } from 'react'\r\nimport { useStore } from '../../global/store'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport {\r\n Button,\r\n DialogActions,\r\n DialogContent,\r\n FormControl,\r\n FormControlLabel,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n Switch,\r\n} from '@material-ui/core'\r\nimport currencies from '../../global/currencies'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n 'width': '100%',\r\n\r\n '& > *': {\r\n margin: theme.spacing(1),\r\n marginBottom: 20,\r\n },\r\n },\r\n field: {\r\n width: 'calc(100% - 16px)',\r\n },\r\n fieldHalf: {\r\n width: '50%',\r\n },\r\n spacing: {\r\n margin: '10px 25px 20px',\r\n },\r\n}))\r\n\r\nfunction CurrencyDialog(props) {\r\n const core = useContext(CoreContext)\r\n const { state } = useStore()\r\n const classes = useStyles()\r\n const [data, setData] = useState(() => {\r\n switch (props.type) {\r\n case 'delete':\r\n return props.data\r\n case 'update':\r\n return props.data\r\n default:\r\n return {\r\n axCustomerNo: '',\r\n segmentationCustomer: false,\r\n currencyCode: currencies[0],\r\n }\r\n }\r\n })\r\n\r\n const handleCurrencyChange = (e) => {\r\n setData({ ...data, currencyCode: e.target.value })\r\n }\r\n\r\n const handleAxCustomerNoChange = (e) => {\r\n setData({ ...data, axCustomerNo: e.target.value })\r\n }\r\n\r\n const toggleCheckedSegmentationCustomer = (e) => {\r\n let newValue = !data.segmentationCustomer\r\n\r\n setData({ ...data, segmentationCustomer: newValue })\r\n }\r\n\r\n const onBeforeClose = (data) => {\r\n // If no details has segmentationcustomer=true -> Set first detail to segmentationCustomer=true\r\n let any = false\r\n state.selectedCustomer.customerDetails.forEach((detail) => {\r\n if (!any && detail.id === data.id) {\r\n any = data.segmentationCustomer\r\n } else if (!any) {\r\n any = detail.segmentationCustomer\r\n }\r\n })\r\n\r\n if (!any) {\r\n core.masterItemDataStore\r\n .updateCustomerDetail({\r\n ...state.selectedCustomer.customerDetails[0],\r\n segmentationCustomer: true,\r\n })\r\n .then((r) => {\r\n props.onClose('customer')\r\n })\r\n } else {\r\n props.onClose('customer')\r\n }\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault()\r\n let form = e.currentTarget\r\n const isValid = form.reportValidity()\r\n if (isValid) {\r\n if (props.type === 'delete') {\r\n core.masterItemDataStore\r\n .deleteCustomerDetail(data)\r\n .then((r) => onBeforeClose(data))\r\n } else {\r\n // Max one currency has segmentaionCustomer = true\r\n if (data.segmentationCustomer) {\r\n for (\r\n let i = 0;\r\n i < state.selectedCustomer.customerDetails.length;\r\n i++\r\n ) {\r\n const item = state.selectedCustomer.customerDetails[i]\r\n if (item.id !== data.id && item.segmentationCustomer) {\r\n core.masterItemDataStore.updateCustomerDetail({\r\n ...item,\r\n segmentationCustomer: false,\r\n })\r\n }\r\n }\r\n }\r\n\r\n if (props.type === 'update') {\r\n core.masterItemDataStore\r\n .updateCustomerDetail(data)\r\n .then((r) => onBeforeClose(data))\r\n } else {\r\n core.masterItemDataStore\r\n .addCustomerDetail({\r\n ...data,\r\n customerId: state.selectedCustomer.id,\r\n })\r\n .then((r) => onBeforeClose(data))\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 Currency code\r\n \r\n \r\n {currencies.map((currency) => {\r\n return (\r\n \r\n {currency}\r\n \r\n )\r\n })}\r\n \r\n \r\n\r\n \r\n }\r\n label='Segmentaion Customer'\r\n />\r\n \r\n\r\n \r\n props.onClose()}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CurrencyDialog\r\n","import React, { useEffect } from 'react'\r\nimport Dialog from '@material-ui/core/Dialog'\r\nimport DialogTitle from '@material-ui/core/DialogTitle'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport TemplateDialog from './TemplateDialog'\r\nimport TemplateColumnDialog from './TemplateColumnDialog'\r\nimport CurrencyDialog from './CurrencyDialog'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n title: {\r\n margin: '10px 10px 0',\r\n },\r\n}))\r\n\r\nfunction DialogWrapper(props) {\r\n const classes = useStyles()\r\n const [open, setOpen] = React.useState(false)\r\n\r\n useEffect(() => {\r\n setOpen(true)\r\n }, [])\r\n\r\n const handleClose = (args) => {\r\n props.close(args)\r\n setOpen(false)\r\n }\r\n\r\n const close = () => {\r\n setOpen(false)\r\n props.closeDialogWithoutReloading()\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {props.title}\r\n \r\n {props.name === 'currency' && (\r\n \r\n )}\r\n {props.name === 'template' && (\r\n \r\n )}\r\n {props.name === 'templateColumn' && (\r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DialogWrapper\r\n","import React, { useEffect, useState, useContext } from 'react'\r\nimport { useStore } from '../global/store'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport {\r\n Grid,\r\n TextField,\r\n CardHeader,\r\n Button,\r\n InputLabel,\r\n FormControl,\r\n Select,\r\n MenuItem,\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableBody,\r\n TableCell,\r\n IconButton,\r\n LinearProgress,\r\n} from '@material-ui/core'\r\nimport DialogWrapper from '../components/Dialogs/DialogWrapper'\r\nimport DeleteIcon from '@material-ui/icons/Delete'\r\nimport ArrowUp from '@material-ui/icons/ArrowUpward'\r\nimport ArrowDown from '@material-ui/icons/ArrowDownward'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n pageRoot: {\r\n flexGrow: 1,\r\n margin: '-15px',\r\n padding: theme.spacing(3),\r\n background: 'white',\r\n },\r\n buttons: {\r\n '& > *': {\r\n margin: '8px 8px 0 8px',\r\n },\r\n },\r\n progress: {\r\n width: '100%',\r\n height: 5,\r\n textAlign: 'center',\r\n },\r\n addButton: {\r\n margin: '20px 10px',\r\n },\r\n tableHeader: {\r\n fontWeight: 700,\r\n verticalAlign: 'bottom',\r\n whiteSpace: 'nowrap',\r\n },\r\n container: {\r\n maxHeight: 'calc(100vh - 300px)',\r\n maxWidth: 'calc(100vw - 345px)',\r\n },\r\n formControl: {\r\n marginTop: 40,\r\n width: '100%',\r\n maxWidth: 360,\r\n },\r\n smallGrid: {\r\n maxWidth: 800,\r\n },\r\n actionCell: {\r\n width: 130,\r\n },\r\n tableButton: {\r\n 'transform': 'translateY(-8px)',\r\n 'backgroundColor': theme.palette.primary.main,\r\n 'color': 'white',\r\n 'zIndex': 1,\r\n '&:hover, &.Mui-focusVisible': {\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n },\r\n tableButtonWrapper: {\r\n textAlign: 'center',\r\n },\r\n arrow: {\r\n verticalAlign: 'middle',\r\n padding: 5,\r\n cursor: 'pointer',\r\n },\r\n dragging: {\r\n opacity: 0.5,\r\n },\r\n dragOver: {\r\n 'position': 'relative',\r\n '&::after': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '50%',\r\n borderBottom: '2px solid blue',\r\n zIndex: 1,\r\n },\r\n },\r\n}))\r\n\r\nexport default function TemplatePage() {\r\n const core = useContext(CoreContext)\r\n const { state, dispatch } = useStore()\r\n const [loading, setLoading] = useState(false)\r\n const classes = useStyles()\r\n const [dialog, setDialog] = useState({\r\n title: '',\r\n name: '',\r\n type: '',\r\n data: '',\r\n })\r\n\r\n useEffect(() => {\r\n const draggables = document.querySelectorAll('.drag')\r\n if (!draggables) {\r\n return\r\n }\r\n const addDragClass = (r) => {\r\n r.classList.add(classes.dragging)\r\n }\r\n\r\n const dragOver = (e, row) => {\r\n e.preventDefault()\r\n draggables.forEach((el) => {\r\n el.classList.remove(classes.dragOver)\r\n })\r\n row.classList.add(classes.dragOver)\r\n }\r\n\r\n const dragEnd = (row) => {\r\n const startRow = document\r\n .querySelector(`.${classes.dragging}`)\r\n ?.id.split('-')[1]\r\n const endRow = document\r\n .querySelector(`.${classes.dragOver}`)\r\n ?.id.split('-')[1]\r\n row.classList.remove(classes.dragging)\r\n draggables.forEach((row) => row.classList.remove(classes.dragOver))\r\n\r\n const field = state.selectedTemplate.templateFields[startRow]\r\n updateTemplateFieldAndReload({\r\n ...field,\r\n columnNo: Number(endRow) + 1,\r\n })\r\n }\r\n\r\n draggables.forEach((row) => {\r\n row.addEventListener('dragend', () => dragEnd(row))\r\n })\r\n draggables.forEach((row) => {\r\n row.addEventListener('dragstart', () => addDragClass(row))\r\n })\r\n draggables.forEach((row) => {\r\n row.addEventListener('dragover', (e) => dragOver(e, row))\r\n })\r\n return () => {\r\n draggables.forEach((row) => {\r\n row.removeEventListener('dragend', () => dragEnd(row))\r\n })\r\n draggables.forEach((row) => {\r\n row.removeEventListener('dragstart', () => addDragClass(row))\r\n })\r\n draggables.forEach((row) => {\r\n row.removeEventListener('dragover', (e) => dragOver(e, row))\r\n })\r\n }\r\n }, [state])\r\n\r\n const isStandardTemplate = state.selectedTemplate?.standard\r\n const canEditStandard = core.user.userSetting.templateManagement\r\n const canEdit = canEditStandard || !isStandardTemplate\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo) {\r\n core.masterItemDataStore\r\n .getCustomerTemplates(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n if (res.data.length > 0) {\r\n dispatch({ type: 'SET_TEMPLATES', payload: res.data })\r\n dispatch({ type: 'SET_TEMPLATE', payload: res.data[0] })\r\n }\r\n })\r\n }\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const handleTemplateChange = (event) => {\r\n dispatch({ type: 'SET_TEMPLATE', payload: event.target.value })\r\n }\r\n\r\n // Template dialogs\r\n const onNewTemplate = () => {\r\n setDialog({\r\n title: ,\r\n name: 'template',\r\n type: 'create',\r\n data: {\r\n fromTemplate: state.selectedTemplate,\r\n },\r\n })\r\n }\r\n\r\n const onUpdateTemplate = () => {\r\n setDialog({\r\n title: ,\r\n name: 'template',\r\n type: 'update',\r\n data: state.selectedTemplate,\r\n })\r\n }\r\n\r\n const onDeleteTemplate = () => {\r\n setDialog({\r\n title: ,\r\n name: 'template',\r\n type: 'delete',\r\n data: state.selectedTemplate,\r\n })\r\n }\r\n\r\n const onCopyTemplate = () => {\r\n setDialog({\r\n title: ,\r\n name: 'template',\r\n type: 'copy',\r\n data: {\r\n fromTemplate: state.selectedTemplate,\r\n },\r\n })\r\n }\r\n\r\n // Template columns\r\n const onCreateTemplateColumn = () => {\r\n setDialog({\r\n title: ,\r\n name: 'templateColumn',\r\n type: 'create',\r\n data: { templateId: state.selectedTemplate.id },\r\n })\r\n }\r\n\r\n const onEditTemplateColumn = (index) => {\r\n setDialog({\r\n title: ,\r\n name: 'templateColumn',\r\n type: 'update',\r\n data: { ...state.selectedTemplate.templateFields[index], index },\r\n })\r\n }\r\n\r\n const onDeleteTemplateColumn = (index) => {\r\n setDialog({\r\n title: ,\r\n name: 'templateColumn',\r\n type: 'delete',\r\n data: { ...state.selectedTemplate.templateFields[index], index },\r\n })\r\n }\r\n\r\n const moveTemplateField = (field, direction) => {\r\n if (\r\n (direction == 'UP' && field.columnNo <= 1) ||\r\n (direction == 'DOWN' &&\r\n field.columnNo >= state.selectedTemplate.templateFields.length)\r\n ) {\r\n return\r\n }\r\n const directionIsUp = direction == 'UP'\r\n updateTemplateFieldAndReload({\r\n ...field,\r\n columnNo: field.columnNo + (directionIsUp ? -1 : 1),\r\n })\r\n }\r\n\r\n const updateTemplateFieldAndReload = (field) => {\r\n setLoading(true)\r\n core.masterItemDataStore.updateTemplateField(field).then(() => {\r\n closeDialog('template')\r\n setLoading(false)\r\n })\r\n }\r\n\r\n const closeDialogWithoutReloading = () => {\r\n setDialog({ title: '', name: '', type: '', data: '' })\r\n }\r\n\r\n const closeDialog = (reset) => {\r\n core.masterItemDataStore\r\n .getCustomerTemplates(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n dispatch({ type: 'SET_TEMPLATES', payload: res.data })\r\n let selectedTemplate = res.data.filter(\r\n (c) => c.id === state.selectedTemplate.id,\r\n )\r\n dispatch({ type: 'SET_TEMPLATE', payload: selectedTemplate[0] || '' })\r\n })\r\n setDialog({ title: '', name: '', type: '', data: '' })\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n onNewTemplate()}\r\n variant='contained'\r\n disableElevation>\r\n \r\n \r\n
\r\n }>\r\n\r\n {/* Customers template select */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleTemplateChange(e)}\r\n name='dataTemplate'>\r\n {state.templates.map((template) => {\r\n return (\r\n \r\n {template.name}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {state.loading || loading ? (\r\n \r\n ) : (\r\n
\r\n )}\r\n\r\n {/* Template */}\r\n {state.selectedTemplate?.name && (\r\n \r\n }\r\n onClick={onCreateTemplateColumn}>\r\n \r\n \r\n\r\n \r\n \r\n {canEdit && (\r\n onUpdateTemplate()}\r\n variant='contained'\r\n disableElevation>\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {canEdit && (\r\n onDeleteTemplate()}\r\n variant='contained'\r\n disableElevation>\r\n \r\n \r\n )}\r\n \r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(state.selectedTemplate.templateFields || [])\r\n .sort((a, b) => a.columnNo - b.columnNo)\r\n .map((field, index) => {\r\n return (\r\n \r\n \r\n {canEdit && (\r\n moveTemplateField(field, 'UP')}\r\n className={classes.arrow}\r\n />\r\n )}\r\n {\r\n if (e.target.value > 0) {\r\n updateTemplateFieldAndReload({\r\n ...field,\r\n columnNo: e.target.value,\r\n })\r\n } else {\r\n e.target.value = field.columnNo\r\n }\r\n }}\r\n />\r\n {canEdit && (\r\n moveTemplateField(field, 'DOWN')}\r\n className={classes.arrow}\r\n />\r\n )}\r\n \r\n {field.displayName}\r\n {field.headerText}\r\n {field.maxFieldLength}\r\n \r\n {field.noDecimalSeperator ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {field.noThousandSeperator ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {field.languageCode}\r\n {field.currencyCode}\r\n \r\n {canEdit && (\r\n <>\r\n onEditTemplateColumn(index)}>\r\n \r\n \r\n \r\n onDeleteTemplateColumn(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 {/* Dialogs */}\r\n {dialog.name !== '' && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import React, { useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport { Button } from '@material-ui/core'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n formControl: {\r\n marginTop: 12,\r\n },\r\n h3: {\r\n margin: '25px 0 0',\r\n },\r\n p: {\r\n margin: 0,\r\n },\r\n}))\r\n\r\nfunction ProductNumberInput(props) {\r\n const classes = useStyles()\r\n\r\n const handleProductNumberChange = (event) => {\r\n props.onProductNumberChange(event.target.value.split(','))\r\n }\r\n\r\n const handleFileUpload = (e) => {\r\n if (!e.target.files[0]) {\r\n return\r\n }\r\n props.core.masterItemDataStore.getFilterFromExcelFile(e).then((res) => {\r\n props.onProductNumberChange(res.data.split(','))\r\n })\r\n e.target.value = ''\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 rowsmin={5}\r\n label={}\r\n />\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ProductNumberInput\r\n","import React, { useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Chip } from '@material-ui/core'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n margin: '20px 0 10px',\r\n },\r\n chip: {\r\n margin: theme.spacing(1),\r\n },\r\n}))\r\n\r\nfunction SelectedChips(props) {\r\n const classes = useStyles()\r\n const [selectedChipsCount, setSelectedChipsCount] = useState(0)\r\n\r\n const handleChipRemove = (type, facetKey, item) => {\r\n let _selectedFacets\r\n if (type === 'all') {\r\n _selectedFacets = {}\r\n } else {\r\n _selectedFacets = Object.assign({}, props.selectedFacets)\r\n let _list = _selectedFacets[facetKey].filter(function (value) {\r\n return value !== item\r\n })\r\n _selectedFacets[facetKey] = _list\r\n }\r\n props.onChipRemove(_selectedFacets)\r\n }\r\n\r\n useEffect(() => {\r\n if (!props.selectedFacets) {\r\n return\r\n }\r\n let count = 0\r\n for (let value of Object.values(props.selectedFacets)) {\r\n count += value.length\r\n }\r\n setSelectedChipsCount(count)\r\n }, [props.selectedFacets])\r\n\r\n return props.selectedFacets ? (\r\n
\r\n {Object.keys(props.selectedFacets).map((facetKey, i) => (\r\n \r\n {props.selectedFacets[facetKey].length > 0 && (\r\n \r\n \r\n :\r\n \r\n {props.selectedFacets[facetKey].map((item, t) => (\r\n handleChipRemove('single', facetKey, item)}\r\n className={classes.chip}\r\n key={'ch' + t}\r\n />\r\n ))}\r\n \r\n )}\r\n \r\n ))}\r\n {selectedChipsCount > 0 && (\r\n handleChipRemove('all')}\r\n className={classes.chip}\r\n color='primary'\r\n />\r\n )}\r\n
\r\n ) : null\r\n}\r\n\r\nexport default SelectedChips\r\n","import React from 'react'\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n DialogActions,\r\n DialogContentText,\r\n} from '@material-ui/core'\r\n\r\nfunction Message(props) {\r\n const [open] = React.useState(true)\r\n\r\n return (\r\n
\r\n {\r\n {\r\n info: (\r\n props.onCloseMessage()}\r\n aria-labelledby='alert-dialog-title'\r\n aria-describedby='alert-dialog-description'>\r\n {props.title}\r\n \r\n \r\n {props.text}\r\n \r\n \r\n \r\n props.onCloseMessage()}\r\n color='primary'\r\n autoFocus>\r\n Close\r\n \r\n \r\n \r\n ),\r\n }[props.type]\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default Message\r\n","import React, { useEffect, useContext, useRef, useState } from 'react'\r\nimport {\r\n Grid,\r\n Card,\r\n CardHeader,\r\n Button,\r\n LinearProgress,\r\n InputLabel,\r\n FormControl,\r\n Select,\r\n MenuItem,\r\n Checkbox,\r\n ListItemText,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n TableContainer,\r\n CircularProgress,\r\n CardContent,\r\n} from '@material-ui/core'\r\nimport { grey } from '@material-ui/core/colors'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport ProductNumberInput from '../components/ProductNumberInput'\r\nimport SelectedChips from '../components/SelectedChips'\r\nimport Message from '../components/Message'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport DatePicker from '../../../shared/DatePicker'\r\nimport urls from '../../../core/data/ApiUrls'\r\nimport InfiniteScroll from 'react-infinite-scroller'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n pageRoot: {\r\n flexGrow: 1,\r\n margin: '-15px',\r\n padding: theme.spacing(3),\r\n background: 'white',\r\n },\r\n header: {\r\n margin: '30px 0 15px',\r\n },\r\n hr: {\r\n margin: '30px 0 20px',\r\n },\r\n tabbar: {\r\n paddingLeft: '10px',\r\n },\r\n progress: {\r\n width: '100%',\r\n height: 5,\r\n textAlign: 'center',\r\n },\r\n btn: {\r\n margin: '30px 0 5px',\r\n minWidth: 150,\r\n },\r\n downloadLink: {\r\n display: 'none',\r\n },\r\n formControl: {\r\n marginTop: 12,\r\n width: '100%',\r\n maxWidth: 360,\r\n },\r\n h3: {\r\n margin: '25px 0 0',\r\n },\r\n p: {\r\n margin: 0,\r\n },\r\n allOrNoneWrapper: {\r\n padding: '4px 16px',\r\n display: 'flex',\r\n justifyContent: 'space-around',\r\n },\r\n inlineLabel: {\r\n display: 'inline-flex',\r\n marginRight: 10,\r\n fontSize: 13,\r\n color: grey,\r\n },\r\n tableHeader: {\r\n fontWeight: 700,\r\n verticalAlign: 'bottom',\r\n whiteSpace: 'nowrap',\r\n },\r\n tableCell: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n}))\r\n\r\nconst ITEM_HEIGHT = 48\r\nconst ITEM_PADDING_TOP = 8\r\nconst MenuProps = {\r\n PaperProps: {\r\n style: {\r\n maxHeight: ITEM_HEIGHT * 12 + ITEM_PADDING_TOP,\r\n width: 250,\r\n },\r\n },\r\n variant: 'menu',\r\n getContentAnchorEl: null,\r\n}\r\n\r\nfunction SearchPage() {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const { isEditMode } = core.dictionary\r\n\r\n const [showMessage, setShowMessage] = useState(false)\r\n const [templates, setTemplates] = useState([])\r\n const [selctedTemplate, setSelectedTemplage] = useState({})\r\n const [lastPriceDate, setLastPriceDate] = useState()\r\n const [pricesFrom, setPricesFrom] = useState(new Date().toISOString())\r\n\r\n const [selectedFacetValues, setSelectedFacetValues] = useState({})\r\n const [allFacets, setAllFacets] = useState([])\r\n\r\n const [productNumbers, setProductNumbers] = useState([])\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [hasMore, setHasMore] = useState(true)\r\n const [pageNumber, setPageNumber] = useState(1)\r\n const [excelLoading, setExcelLoading] = useState(false)\r\n const [totalNumberOfResults, setTotalNumberOfResults] = useState(0)\r\n\r\n const scroller = useRef()\r\n\r\n const [table, setTable] = useState({\r\n headers: [],\r\n rows: [],\r\n })\r\n\r\n function getMasterDataFacets(facets) {\r\n core.dataStore.getMasterDataFacets().then((res) => {\r\n const usersAllowedFacets = res.data\r\n .filter((el) => core.user.userSetting.masterDataFacets.includes(el.id))\r\n .map((el) => el.facetName)\r\n\r\n var searchoptions = {...getSearchOptions(), selectedFacetValues: facets}\r\n core.masterItemDataStore\r\n .productSearch(searchoptions)\r\n .then((res) => {\r\n setAllFacets(res.data.facets.filter((el) => usersAllowedFacets.find((str) => str == el.name)))\r\n })\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (!core.user.selectedCustomer.accountNo) {\r\n return\r\n }\r\n\r\n function getMasterDataDatesByUserType() {\r\n core.dataStore\r\n .getMasterDataDatesByUserType(core.user.userSetting.userTypeId)\r\n .then((res) => {\r\n setLastPriceDate(res.data)\r\n getMasterDataFacets({})\r\n })\r\n }\r\n\r\n core.masterItemDataStore\r\n .getCustomerTemplates(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n if (res.data.length > 0) {\r\n setTemplates(res.data)\r\n setSelectedTemplage(res.data[0])\r\n\r\n getMasterDataDatesByUserType()\r\n } else {\r\n setShowMessage(true)\r\n }\r\n })\r\n }, [core.user.selectedCustomer.accountNo])\r\n\r\n const handleTemplateChange = (e) => {\r\n setSelectedTemplage(e.target.value)\r\n\r\n search({\r\n ...getSearchOptions(),\r\n templateId: e.target.value.id,\r\n })\r\n }\r\n\r\n const checkAll = (facetName) => {\r\n const facts = allFacets\r\n .find((el) => el.name == facetName)\r\n .facetValues.map((el) => el.id)\r\n\r\n const selectedFacets = {\r\n ...selectedFacetValues,\r\n [facetName]: facts,\r\n };\r\n\r\n setSelectedFacetValues(selectedFacets)\r\n getMasterDataFacets(selectedFacets)\r\n }\r\n\r\n const checkNone = (facetName) => {\r\n const selectedFacets = {\r\n ...selectedFacetValues,\r\n [facetName]: [],\r\n };\r\n\r\n setSelectedFacetValues(selectedFacets)\r\n getMasterDataFacets(selectedFacets);\r\n }\r\n\r\n const isChecked = (name, value) => {\r\n return (\r\n selectedFacetValues[name] !== undefined &&\r\n selectedFacetValues[name].indexOf(value) !== -1\r\n )\r\n }\r\n\r\n const handleFacetChange = (facet, facetValue) => {\r\n const allSelctedFacets = { ...selectedFacetValues }\r\n const arrayOfSelectedFacets = allSelctedFacets[facet.name] || []\r\n allSelctedFacets[facet.name] = isChecked(facet.name, facetValue.id)\r\n ? arrayOfSelectedFacets.filter((el) => el !== facetValue.id)\r\n : arrayOfSelectedFacets.concat(facetValue.id)\r\n\r\n\r\n setSelectedFacetValues(allSelctedFacets)\r\n\r\n getMasterDataFacets(allSelctedFacets)\r\n }\r\n\r\n const getSortedFacetValues = (facet) => {\r\n if (facet.name === 'launchYear') {\r\n return facet.facetValues.sort((a, b) =>\r\n parseInt(a.name) > parseInt(b.name) ? -1 : 1,\r\n )\r\n }\r\n return facet.facetValues\r\n }\r\n\r\n const handleProductNumberChange = (productNumbers) => {\r\n setProductNumbers(productNumbers)\r\n }\r\n\r\n const getSearchOptions = () => {\r\n return {\r\n customerId: core.user.selectedCustomer.accountNo,\r\n userId: core.user.userId,\r\n languageCode: core.user.languageCode,\r\n pageSize: 100,\r\n pageNumber: 1,\r\n templateId: selctedTemplate.id,\r\n searchOnlyInTheseProducts: productNumbers,\r\n descendingSortOrder: false,\r\n sortByField: 'BrandId',\r\n selectedFacetValues: selectedFacetValues,\r\n pricesFrom: pricesFrom,\r\n }\r\n }\r\n\r\n const search = (options = getSearchOptions()) => {\r\n setLoading(true)\r\n\r\n core.masterItemDataStore\r\n .productSearch(options)\r\n .then((res) => {\r\n setHasMore(res.data.pageNumber != res.data.pagesInAll)\r\n setPageNumber(res.data.pageNumber)\r\n setTotalNumberOfResults(res.data.totalNumberOfResults)\r\n\r\n if (res.data.pageNumber > 1) {\r\n setTable({\r\n ...table,\r\n rows: [...table.rows, ...res.data.resultTemplate.rows],\r\n })\r\n } else {\r\n setTable({ ...res.data.resultTemplate })\r\n }\r\n\r\n core.dataStore.getMasterDataFacets().then((res1) => {\r\n const usersAllowedFacets = res1.data\r\n .filter((el) => core.user.userSetting.masterDataFacets.includes(el.id))\r\n .map((el) => el.facetName)\r\n\r\n setAllFacets(res.data.facets.filter((el) => usersAllowedFacets.find((str) => str == el.name)))\r\n })\r\n\r\n setLoading(false)\r\n })\r\n .catch((e) => {\r\n console.log('warning', e.toString())\r\n })\r\n }\r\n\r\n const scrollToTop = () => {\r\n if (scroller.current) {\r\n scroller.current.scrollTo(0, 0)\r\n }\r\n }\r\n\r\n const handleDateChange = (date) => {\r\n setPricesFrom(date.toISOString())\r\n scrollToTop()\r\n\r\n search({\r\n ...getSearchOptions(),\r\n pricesFrom: date.toISOString(),\r\n })\r\n }\r\n\r\n const handleChipRemove = (_selectedFacets) => {\r\n setSelectedFacetValues(_selectedFacets)\r\n scrollToTop()\r\n\r\n search({\r\n ...getSearchOptions(),\r\n selectedFacetValues: _selectedFacets,\r\n })\r\n }\r\n\r\n const handleSearchClick = () => {\r\n scrollToTop()\r\n search()\r\n }\r\n\r\n const clearSearch = () => {\r\n setSelectedFacetValues({})\r\n setProductNumbers([])\r\n\r\n scrollToTop()\r\n\r\n setTable({\r\n headers: [],\r\n rows: [],\r\n })\r\n\r\n core.dataStore.getMasterDataFacets().then((res) => {\r\n const usersAllowedFacets = res.data\r\n .filter((el) => core.user.userSetting.masterDataFacets.includes(el.id))\r\n .map((el) => el.facetName)\r\n core.masterItemDataStore\r\n .productSearch({\r\n ...getSearchOptions(),\r\n selectedFacetValues: {},\r\n searchOnlyInTheseProducts: []\r\n })\r\n .then((res) => {\r\n setAllFacets(res.data.facets.filter((el) => usersAllowedFacets.find((str) => str == el.name)))\r\n })\r\n })\r\n }\r\n\r\n const handleExportChange = (callback) => {\r\n fetch(urls.dataUrl + 'MasterDataSearch/Product/Excel', {\r\n method: 'POST',\r\n headers: {\r\n 'authorization': 'Bearer ' + localStorage.getItem('accessToken'),\r\n 'content-type': 'application/json;charset=UTF-8',\r\n },\r\n body: JSON.stringify({\r\n ...getSearchOptions(),\r\n pageSize: 100000,\r\n page: 1,\r\n }),\r\n })\r\n .then((res) => res.blob())\r\n .then((data) => {\r\n const a = document.createElement('a')\r\n a.href = window.URL.createObjectURL(data)\r\n a.download = 'Products.xlsx'\r\n a.click()\r\n a.remove()\r\n })\r\n .finally(() => callback())\r\n }\r\n\r\n const onLoadMore = () => {\r\n if (loading || !hasMore) {\r\n return\r\n }\r\n\r\n let options = {\r\n ...getSearchOptions(),\r\n pageNumber: pageNumber + 1,\r\n }\r\n\r\n search(options)\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {!!templates.length && (\r\n \r\n \r\n \r\n \r\n }>\r\n {templates.map((template) => {\r\n return (\r\n \r\n {template.name}\r\n \r\n )\r\n })}\r\n \r\n \r\n )}\r\n \r\n {isEditMode ||\r\n core.dictionary.getLabel('templateExplanationText').toLowerCase() !==\r\n 'ikke i brug' ? (\r\n \r\n

\r\n \r\n

\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n\r\n \r\n \r\n

\r\n \r\n

\r\n \r\n {allFacets.map((facet) => (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n const numberOfSelected = selectedFacetValues[facet.name]\r\n ? selectedFacetValues[facet.name].length\r\n : 0\r\n return (\r\n \r\n {' '}\r\n {!!numberOfSelected && `(${numberOfSelected})`}\r\n \r\n )\r\n }}\r\n MenuProps={MenuProps}\r\n name={facet.name}>\r\n \r\n \r\n \r\n
\r\n {getSortedFacetValues(facet).map((facetValue) => (\r\n handleFacetChange(facet, facetValue)}\r\n key={facetValue.name}\r\n value={facetValue.name}>\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n ))}\r\n\r\n \r\n\r\n \r\n }\r\n inputVariant='outlined'\r\n value={pricesFrom}\r\n InputProps={{ readOnly: true }}\r\n onChange={handleDateChange}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Selected items */}\r\n \r\n\r\n {loading && (\r\n \r\n )}\r\n\r\n {table.rows.length > 0 && (\r\n \r\n \r\n \r\n {totalNumberOfResults}{' '}\r\n \r\n \r\n }\r\n action={\r\n
\r\n {templates.length > 0 && table.rows.length > 0 && (\r\n <>\r\n {\r\n setExcelLoading(true)\r\n handleExportChange(() => setExcelLoading(false))\r\n }}\r\n variant='contained'\r\n color='primary'\r\n disableElevation\r\n disabled={excelLoading}>\r\n {excelLoading ? (\r\n <>\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n )}\r\n
\r\n }>\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n {table.headers.map((field, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {table.rows.map((row, index1) => (\r\n \r\n {row.rowFields.map((field, index) => (\r\n \r\n {field.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 {showMessage && (\r\n }\r\n title={}\r\n onCloseMessage={(e) => setShowMessage(false)}>\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SearchPage\r\n","import React, { useState, useEffect, useContext } from 'react'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow,\r\n Paper,\r\n TextField,\r\n Typography,\r\n Checkbox,\r\n} from '@material-ui/core'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nconst headers = [\r\n {\r\n label: 'displayName',\r\n name: 'displayName',\r\n type: 'textfield',\r\n },\r\n {\r\n label: 'name',\r\n name: 'name',\r\n type: 'default',\r\n },\r\n {\r\n label: 'description',\r\n name: 'description',\r\n type: 'textfield',\r\n },\r\n {\r\n label: 'internalField',\r\n name: 'internal',\r\n type: 'checkbox',\r\n disabled: false,\r\n },\r\n {\r\n label: 'multiLanguage',\r\n name: 'multiLanguage',\r\n type: 'checkbox',\r\n disabled: true,\r\n },\r\n]\r\n\r\nexport default function DataFields() {\r\n const core = useContext(CoreContext)\r\n const [dataFields, setDataFields] = useState()\r\n\r\n const getField = (header, dataField, active, setActive) => {\r\n if (header.type === 'textfield') {\r\n return active ? (\r\n {\r\n onFieldChange(e.target.value, header.name, dataField)\r\n setActive(false)\r\n }}\r\n style={{ width: header.name === 'description' ? 400 : 200 }}\r\n fullWidth\r\n defaultValue={dataField[header.name]}>\r\n ) : (\r\n \r\n {dataField[header.name]}\r\n \r\n )\r\n }\r\n\r\n if (header.type === 'default') {\r\n return {dataField[header.name]}\r\n }\r\n\r\n if (header.type === 'checkbox') {\r\n return active ? (\r\n {\r\n onFieldChange(!dataField[header.name], header.name, dataField)\r\n setActive(false)\r\n }}\r\n />\r\n ) : (\r\n \r\n )\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n core.masterItemDataStore\r\n .readTemplateFieldData()\r\n .then((res) => setDataFields(res.data))\r\n }, [])\r\n\r\n const onFieldChange = (value, header, dataField) => {\r\n core.masterItemDataStore\r\n .updateDataField(dataField.id, {\r\n description: dataField.description,\r\n displayName: dataField.displayName,\r\n internal: dataField.internal,\r\n [header]: value,\r\n })\r\n .then((res) => {\r\n const newDataFields = dataFields.map((el) => {\r\n if (el.id === dataField.id) {\r\n return {\r\n ...el,\r\n description: dataField.description,\r\n displayName: dataField.displayName,\r\n internal: dataField.internal,\r\n [header]: value,\r\n }\r\n } else {\r\n return el\r\n }\r\n })\r\n setDataFields(newDataFields)\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {headers.map((header) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {dataFields\r\n ?.sort((a, b) =>\r\n a.displayName < b.displayName\r\n ? -1\r\n : Number(a.displayName > b.displayName),\r\n )\r\n .map((dataField) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst Row = ({ dataField, getField }) => {\r\n const [active, setActive] = useState(false)\r\n\r\n return (\r\n \r\n \r\n setActive(!active)} />\r\n \r\n {headers.map((header) => (\r\n {getField(header, dataField, active, setActive)}\r\n ))}\r\n \r\n )\r\n}\r\n","import TemplatePage from '../pages/TemplatePage'\r\nimport SearchPage from '../pages/SearchPage'\r\nimport DataFields from '../pages/DataFields'\r\nimport HelpPage from '../../../core/components/HelpPage'\r\n\r\nconst root = '/master-item-data'\r\n\r\nconst routes = [\r\n {\r\n id: 'Search',\r\n path: root,\r\n component: SearchPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'Templates',\r\n path: root + '/templates',\r\n component: TemplatePage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'Help',\r\n path: root + '/help',\r\n component: HelpPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'DataFields',\r\n path: root + '/DataFields',\r\n component: DataFields,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n]\r\n\r\nexport default {\r\n getRoute: id => routes.find((i) => i.id === id),\r\n root: root,\r\n routes: routes\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { Route, Router, Switch } from 'react-router-dom'\r\nimport routes from '../../config/routes'\r\nimport classNames from 'classnames'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery/useMediaQuery'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport NotFound from '../../../../core/pages/NotFound'\r\n\r\nfunction ComponentRoute({ component: Component, ...rest }) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nconst drawerWidth = 240\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n flexGrow: 1,\r\n padding: theme.spacing(2),\r\n height: '100%',\r\n marginTop: '64px',\r\n backgroundColor: 'white',\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: drawerWidth,\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 70,\r\n },\r\n contentStatic: {\r\n marginLeft: 0,\r\n },\r\n})\r\n\r\nfunction Content(props) {\r\n const { classes } = props\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n\r\n return (\r\n \r\n \r\n \r\n {routes.routes.map((r) => (\r\n \r\n ))}\r\n\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Content)\r\n","import { useContext } from 'react'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport routeSettings from './routes'\r\n\r\nconst GetNavItems = () => {\r\n const core = useContext(CoreContext)\r\n const { templateManagement } = core.user.userSetting\r\n\r\n const navItem = (id, index, labelKey) => {\r\n return {\r\n id: id,\r\n route: routeSettings.getRoute(id),\r\n index: index,\r\n labelKey: labelKey,\r\n }\r\n }\r\n\r\n const upperNavigation = [\r\n navItem('Search', 1, 'Search & Export'),\r\n navItem('Templates', 2, 'Templates'),\r\n ]\r\n\r\n if (templateManagement) {\r\n upperNavigation.push(navItem('DataFields', 3, 'DataFields'))\r\n }\r\n\r\n upperNavigation.push(navItem('Help', 1, 'help'))\r\n\r\n return {\r\n upperNavigation: upperNavigation\r\n }\r\n}\r\nexport default GetNavItems\r\n","import React from 'react'\r\nimport NavigationDrawer from '../../../core/components/navigation/NavigationDrawer'\r\nimport Topbar from '../../../core/components/navigation/Topbar'\r\nimport GetNavItems from '../config/navigation'\r\n\r\nfunction Navigation(props) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Navigation\r\n","import { makeStyles } from '@material-ui/core'\r\n\r\nexport default makeStyles((theme) => ({\r\n // Shared\r\n imgWrapper: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n },\r\n imgWrapperInner: {\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n img: {\r\n maxWidth: '100%',\r\n maxHeight: '100%',\r\n },\r\n label: {\r\n textTransform: 'uppercase',\r\n fontSize: 11,\r\n position: 'absolute',\r\n top: 5,\r\n left: 7,\r\n backgroundColor: 'rgba(255, 255, 255, .6)',\r\n padding: '1px 3px',\r\n color: theme.palette.grey[600],\r\n },\r\n labelDiscount: {\r\n left: 'auto',\r\n right: 7,\r\n fontWeight: 'bold',\r\n fontSize: 12,\r\n },\r\n title: {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n margin: '0 10px',\r\n display: 'block',\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n fontSize: 16,\r\n },\r\n },\r\n small: {\r\n fontSize: 13,\r\n },\r\n double: {\r\n display: 'flex',\r\n borderBottom: '1px solid',\r\n borderBottomColor: theme.palette.grey[200],\r\n paddingBottom: 5,\r\n marginTop: 5,\r\n padding: '0 10px',\r\n flexWrap: 'wrap',\r\n },\r\n\r\n // Tile\r\n box: {\r\n height: '100%',\r\n borderWidth: 1,\r\n borderColor: theme.palette.grey[200],\r\n borderStyle: 'solid',\r\n },\r\n head: {\r\n position: 'relative',\r\n height: 0,\r\n overflow: 'hidden',\r\n paddingTop: '71.5%',\r\n },\r\n info: {\r\n marginTop: 'auto',\r\n },\r\n\r\n // List\r\n listBox: {\r\n display: 'flex',\r\n minHeight: 58,\r\n borderWidth: 1,\r\n borderColor: theme.palette.grey[200],\r\n borderStyle: 'solid',\r\n position: 'relative',\r\n marginTop: -1,\r\n },\r\n quantityAndPriceWrapper: {\r\n minWidth: 240,\r\n },\r\n listHead: {\r\n width: 77,\r\n height: 55,\r\n position: 'relative',\r\n },\r\n listInfo: {\r\n marginRight: 'auto',\r\n marginLeft: 15,\r\n paddingTop: 6,\r\n },\r\n listTitle: {\r\n margin: '3px 0 -3px',\r\n },\r\n listLabel: {\r\n position: 'static',\r\n marginRight: 15,\r\n padding: 0,\r\n marginTop: -1,\r\n },\r\n listStock: {\r\n display: 'inline-block',\r\n marginLeft: 15,\r\n transform: 'translateY(-1px)',\r\n },\r\n cta: {\r\n display: 'flex',\r\n margin: '10px 10px 0',\r\n [theme.breakpoints.up('md')]: {\r\n minWidth: 140,\r\n },\r\n },\r\n quantityInfos: {\r\n marginTop: 6,\r\n fontSize: 12,\r\n color: theme.palette.grey[600],\r\n display: 'inline-block',\r\n },\r\n quantityInfo: {\r\n margin: 3,\r\n },\r\n quantity: {\r\n 'width': 60,\r\n 'textAlign': 'center',\r\n 'marginRight': 5,\r\n 'marginBottom': 10,\r\n\r\n '& input': {\r\n paddingRight: 0,\r\n },\r\n },\r\n incrementButton: {\r\n 'width': 'auto',\r\n 'color': 'white',\r\n 'backgroundColor': 'black',\r\n 'height': 40,\r\n 'marginBottom': 10,\r\n\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[800],\r\n },\r\n },\r\n sortingButton: {\r\n 'textAlign': 'center',\r\n 'width': 48,\r\n 'height': 24,\r\n 'cursor': 'pointer',\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[200],\r\n },\r\n },\r\n listPrices: {\r\n borderRight: '1px solid',\r\n borderRightColor: theme.palette.grey[200],\r\n minWidth: 160,\r\n display: 'inline-block',\r\n padding: '7px 0 9px 50px',\r\n [theme.breakpoints.down('xs')]: {\r\n borderRight: 'none',\r\n },\r\n },\r\n productsDescription: {\r\n [theme.breakpoints.down('sm')]: {\r\n width: '350px',\r\n },\r\n },\r\n hideOnMobile: {\r\n [theme.breakpoints.down('xs')]: {\r\n display: 'none',\r\n },\r\n },\r\n prices: {\r\n position: 'relative',\r\n padding: '10px 0 7px 10px',\r\n },\r\n quantitiyInfo: {\r\n fontSize: 15,\r\n color: theme.palette.grey[400],\r\n },\r\n priceNormal: {\r\n fontSize: 12,\r\n color: theme.palette.grey[500],\r\n minWidth: '50px',\r\n textAlign: 'center',\r\n display: 'inline-block',\r\n },\r\n priceText: {\r\n fontSize: 12,\r\n color: theme.palette.grey[500],\r\n display: 'inline-block',\r\n marginLeft: 10,\r\n },\r\n currency: {\r\n position: 'absolute',\r\n top: '-16px',\r\n left: '32px',\r\n color: theme.palette.grey[600],\r\n fontSize: 12,\r\n zIndex: 5,\r\n },\r\n priceYours: {\r\n fontSize: 16,\r\n fontWeight: 'bold',\r\n minWidth: '50px',\r\n textAlign: 'right',\r\n display: 'inline-block',\r\n },\r\n}))\r\n","import { makeStyles } from '@material-ui/core'\r\n\r\nexport default makeStyles((theme) => ({\r\n // Shared\r\n imgWrapper: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n },\r\n imgWrapperInner: {\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n img: {\r\n maxWidth: '100%',\r\n maxHeight: '100%',\r\n },\r\n label: {\r\n textTransform: 'uppercase',\r\n fontSize: 11,\r\n position: 'absolute',\r\n top: 5,\r\n left: 7,\r\n backgroundColor: 'rgba(255, 255, 255, .6)',\r\n padding: '1px 3px',\r\n color: theme.palette.grey[600],\r\n },\r\n labelDiscount: {\r\n left: 'auto',\r\n right: 7,\r\n fontWeight: 'bold',\r\n fontSize: 12,\r\n },\r\n title: {\r\n fontSize: 14,\r\n fontWeight: 'bold',\r\n margin: '0 10px',\r\n display: 'block',\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n fontSize: 16,\r\n },\r\n },\r\n small: {\r\n fontSize: 13,\r\n },\r\n double: {\r\n display: 'flex',\r\n borderBottom: '1px solid',\r\n borderBottomColor: theme.palette.grey[200],\r\n paddingBottom: 5,\r\n marginTop: 5,\r\n padding: '0 10px',\r\n flexWrap: 'wrap',\r\n },\r\n\r\n // Tile\r\n box: {\r\n height: '100%',\r\n borderWidth: 1,\r\n borderColor: theme.palette.grey[200],\r\n borderStyle: 'solid',\r\n },\r\n head: {\r\n position: 'relative',\r\n height: 0,\r\n overflow: 'hidden',\r\n paddingTop: '71.5%',\r\n },\r\n info: {\r\n marginTop: 'auto',\r\n },\r\n\r\n // List\r\n listBox: {\r\n display: 'flex',\r\n minHeight: 58,\r\n borderWidth: 1,\r\n borderColor: theme.palette.grey[200],\r\n borderStyle: 'solid',\r\n position: 'relative',\r\n marginTop: -1,\r\n },\r\n\r\n listHead: {\r\n width: 77,\r\n height: 55,\r\n position: 'relative',\r\n },\r\n listInfo: {\r\n marginRight: 'auto',\r\n marginLeft: 15,\r\n paddingTop: 6,\r\n },\r\n listTitle: {\r\n margin: '3px 0 -3px',\r\n },\r\n listLabel: {\r\n position: 'static',\r\n marginRight: 15,\r\n padding: 0,\r\n marginTop: -1,\r\n },\r\n listStock: {\r\n display: 'inline-block',\r\n marginLeft: 15,\r\n transform: 'translateY(-1px)',\r\n },\r\n listOpenOrders: {\r\n textDecoration: 'underline',\r\n cursor: 'pointer',\r\n },\r\n listTag: {\r\n top: 14,\r\n }\r\n}))\r\n","import React, { useState, useContext } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport TranslationLabel from '../../../../../core/components/TranslationLabel'\r\nimport useStyles from './itemStyles'\r\nimport StockItem from '../StockItem'\r\nimport InriverImage from '../../../../../core/components/InriverImage'\r\nimport { ProductsContext } from '../../../context/ProductsContext'\r\nimport priceDtoHelper from '../../../../../shared/PriceDtoHelper'\r\n\r\nexport const ProductDescription = (props) => {\r\n const productsModel = useContext(ProductsContext)\r\n const {\r\n productNo,\r\n description,\r\n brandNo,\r\n inventoryText,\r\n inventoryStatus,\r\n openOrders,\r\n showImage\r\n } = props.product\r\n\r\n const showOpenOrder = openOrders?.length > 0\r\n const classes = useStyles()\r\n\r\n return (\r\n <>\r\n
\r\n {/* Image */}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n {/* Product name */}\r\n \r\n <>\r\n {description}\r\n {priceDtoHelper.nextPriceTag(props.quantity, props.product)}\r\n \r\n \r\n\r\n {/* Brand */}\r\n \r\n {brandNo}\r\n \r\n\r\n {/* Product no */}\r\n \r\n \r\n {productNo}\r\n \r\n\r\n {/* Stock */}\r\n
\r\n \r\n
\r\n {showOpenOrder && (\r\n props.setOpenOrdersModal(productNo)}\r\n className={classes.listStock}>\r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n \r\n )\r\n}\r\n","import React, { useState, useRef } from 'react'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport useStyles from './itemStyles'\r\nimport { TextField, Button } from '@material-ui/core'\r\nimport AddIcon from '@material-ui/icons/Add'\r\nimport findNextAllowedAmount from '../../../sales-web-app/libraries/FindNextAllowedQuantity'\r\nimport { ProductDescription } from '../../../sales-web-app/pages/Products/ViewModes/ListViewItem'\r\n\r\nexport const ListViewItem = React.memo((props) => {\r\n const {\r\n product = {},\r\n onQuantityChange,\r\n currency,\r\n addSingleProductToBasket,\r\n } = props\r\n const { minimumQuantity, colli } = product\r\n const classes = useStyles()\r\n const inputRef = useRef(null)\r\n const [currentPrice, setCurrentPrice] = useState(\r\n findPrice(product.priceDtos[0].minQuantity),\r\n )\r\n const hasDiscount = currentPrice.discountPercentage > 0\r\n\r\n const handleChangeQuantity = (quantity) => {\r\n if (quantity < 0) {\r\n return\r\n }\r\n\r\n onQuantityChange(product.productNo, quantity)\r\n let price = findPrice(Math.max(quantity, minimumQuantity || 1))\r\n setCurrentPrice(price)\r\n }\r\n\r\n const addToBasket = () => {\r\n addSingleProductToBasket(product)\r\n }\r\n\r\n const onBlurHandler = () => {\r\n onQuantityChange(\r\n product.productNo,\r\n findNextAllowedAmount(product, product.quantity),\r\n )\r\n }\r\n\r\n function findPrice(qty) {\r\n let _currentPrice = {\r\n minQuantity: 0,\r\n }\r\n product.priceDtos.forEach((price) => {\r\n if (\r\n price.minQuantity <= qty &&\r\n price.minQuantity > _currentPrice.minQuantity\r\n ) {\r\n _currentPrice = price\r\n }\r\n })\r\n return _currentPrice\r\n }\r\n\r\n const hasNoPrice = !product.priceDtos.length\r\n\r\n return (\r\n
\r\n \r\n {/* Price, Quantity and Buy button */}\r\n
\r\n
\r\n

\r\n {colli}\r\n

\r\n

\r\n {minimumQuantity}\r\n

\r\n
\r\n
\r\n {/* Add currency at the top of table */}\r\n
\r\n {currency}\r\n
\r\n\r\n {/* Normal price */}\r\n {hasDiscount ? (\r\n {currentPrice.grossPrice}\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Your price */}\r\n
\r\n {currentPrice.netPrice}\r\n \r\n {hasDiscount ? (\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n {`${product.quantity || currentPrice.minQuantity} `}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n handleChangeQuantity(e.target.value)}\r\n className={classes.quantity}\r\n label={}\r\n InputLabelProps={{ shrink: true }}\r\n inputRef={inputRef}\r\n onClick={() => {\r\n inputRef.current.select(0, -1)\r\n }}\r\n onBlur={onBlurHandler}\r\n InputProps={{\r\n inputProps: {\r\n step: product.colli || product.multiplesQuantity,\r\n },\r\n }}\r\n variant='outlined'\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 { InputAdornment, makeStyles } from '@material-ui/core'\r\nimport SearchIcon from '@material-ui/icons/Search'\r\nimport CloseIcon from '@material-ui/icons/Close'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\n\r\nimport TextField from '@material-ui/core/TextField'\r\nimport ProductSearchBarFacets from './ProductSearchBarFacets'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n searchBar: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-between',\r\n minHeight: '54px',\r\n width: 'calc(100% + 32px)',\r\n zIndex: 1000,\r\n backgroundColor: '#EAEAEA',\r\n margin: '-8px 20px 0 -16px',\r\n padding: '5px 0',\r\n\r\n [theme.breakpoints.up('sm')]: {\r\n margin: '-17px 20px 0 -16px',\r\n },\r\n },\r\n textField: {\r\n width: 200,\r\n backgroundColor: 'white',\r\n borderRadius: 4,\r\n margin: '4px auto 4px 12px',\r\n '&::-webkit-search-decoration,::-webkit-search-cancel-button,::-webkit-search-results-button,::-webkit-search-results-decoration': {\r\n display: 'none'\r\n }\r\n },\r\n}))\r\n\r\nexport default function ProductSearchBar(props) {\r\n const classes = useStyles()\r\n const {\r\n facets,\r\n query,\r\n selected,\r\n change,\r\n changeQuery,\r\n hideChosenFacetCategoryCounts,\r\n } = props\r\n const [value, setValue] = useState(query)\r\n\r\n useEffect(() => {\r\n setValue(query)\r\n }, [query])\r\n\r\n function handleOnChange(e) {\r\n setValue(e.target.value)\r\n }\r\n\r\n const keypressHandler = (e) => {\r\n if (e.keyCode === 13) {\r\n //for the enter key\r\n changeQuery(value)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n }\r\n type='search'\r\n className={classes.textField}\r\n variant='outlined'\r\n onChange={handleOnChange}\r\n value={value}\r\n size='small'\r\n InputProps={{\r\n startAdornment: (\r\n \r\n \r\n \r\n ),\r\n endAdornment: {\r\n setValue('')\r\n changeQuery('')\r\n }}\r\n className={classes.searchIcon} />\r\n }}\r\n />\r\n
\r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState, useRef } from 'react'\nimport {\n Button,\n LinearProgress,\n makeStyles,\n Select,\n MenuItem,\n FormControl,\n InputLabel,\n} from '@material-ui/core'\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess'\nimport { ListViewItem } from './ListViewItem'\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\nimport { Typography } from '@material-ui/core'\nimport ContentScroller from '../../../sales-web-app/components/ContentScroller'\nimport EmptyState from '../../../sales-web-app/components/EmptyState'\nimport { CoreContext } from '../../../../core/context/CoreContext'\nimport { BasketContext } from '../../../../core/context/BasketContext'\nimport { ProductsContext } from '../../../sales-web-app/context/ProductsContext'\nimport findNextAllowedAmount from '../../../sales-web-app/libraries/FindNextAllowedQuantity'\nimport ProductSearchBar from '../../../sales-web-app/pages/Products/ProductSearchBar'\nimport CloseIcon from '@material-ui/icons/Close'\nimport Grid from '@material-ui/core/Grid/Grid'\nimport { useHistory } from 'react-router-dom'\nimport DatePicker from '../../../../shared/DatePicker'\n\nconst useStyles = makeStyles((theme) => ({\n productsPageRoot: {\n display: 'flex',\n flexFlow: 'column',\n flexGrow: 1,\n margin: 0,\n background: 'white',\n height: '100%',\n },\n stickyloader: {\n margin: 'auto',\n position: 'sticky',\n zIndex: 1,\n width: '100%',\n visibility: 'hidden',\n },\n loaderVisible: {\n visibility: 'visible',\n },\n stickyScrollButton: {\n 'position': 'fixed',\n 'top': 220,\n 'left': '50%',\n 'transform': 'translate(-50%)',\n 'zIndex': 100,\n 'backgroundColor': 'white',\n '&:hover': {\n backgroundColor: 'white',\n },\n },\n buttons: {\n margin: '10px 2px',\n marginRight: '10px',\n },\n productsWrapper: {\n flex: '1 1 auto',\n },\n select: {\n width: 200,\n },\n topContainer: {\n marginBottom: 30,\n flew: '0 1 auto',\n },\n leftSideOfBar: {\n width: 420,\n display: 'inline-block',\n },\n rightButtons: {\n display: 'inline-block',\n verticalAlign: 'top',\n float: 'right',\n },\n datePicker: {\n position: 'absolute',\n right: 15,\n top: 9,\n width: 200,\n backgroundColor: 'white',\n borderRadius: 3,\n },\n count: {\n fontSize: 14,\n },\n resetButton: {\n display: 'inline-block',\n border: '1px solid lightgrey',\n marginRight: 5,\n marginBottom: 5,\n borderRadius: 2,\n padding: 5,\n },\n resetButtonText: {\n verticalAlign: 'middle',\n },\n greyedOutResetButtonText: {\n color: theme.palette.grey['500'],\n },\n resetButtonIcon: {\n verticalAlign: 'middle',\n marginLeft: 5,\n width: 15,\n height: 15,\n },\n facets: {\n marginTop: 5,\n },\n shippingDateInfo: {\n display: 'inline-block',\n marginLeft: 10,\n },\n fromDate: {\n margin: 5,\n },\n toDate: {\n margin: 5,\n },\n fixedTop: {\n top: '64px',\n paddingTop: '10px',\n right: 0,\n position: 'fixed',\n width: 'calc(100% - 80px)',\n background: 'white',\n zIndex: 5,\n },\n}))\n\nconst latestDate = (date1, date2) => {\n return date1 > date2 ? date1 : date2\n}\n\nexport default function SearchPage(props) {\n const classes = useStyles()\n const core = useContext(CoreContext)\n const basketModel = useContext(BasketContext)\n const productsModel = useContext(ProductsContext)\n const [showScrollToTop, setShowScrollToTop] = useState(false)\n const [selectedProducts, _setSelectedProducts] = useState(\n JSON.parse(localStorage.getItem('selectedProducts') || '[]'),\n )\n const [isLoading, setIsLoading] = useState(false)\n const [showSelected, setShowSelected] = useState(false)\n\n const today = new Date().toJSON().split('T')[0] + 'T00:00:00'\n const deliveryFrom = productsModel.campaign.deliveryValidFrom\n const shippingStartOrToday = latestDate(today, deliveryFrom)\n const localStorageDate = localStorage.getItem('shippingDate')\n const [shippingDate, _setShippingDate] = useState(\n latestDate(shippingStartOrToday, localStorageDate),\n )\n const [shippingDateError, setShippingDateError] = useState(false)\n const [campaignDrowdownOpen, setCampaignDrowdownOpen] = useState(false)\n const firstRender = useRef(true)\n const history = useHistory()\n\n const setShippingDate = (date) => {\n localStorage.setItem('shippingDate', date)\n _setShippingDate(date)\n }\n\n const closeCampaignDropdown = () => {\n setCampaignDrowdownOpen(false)\n }\n\n const openCampaignDropdown = () => {\n setCampaignDrowdownOpen(true)\n }\n useEffect(() => {\n window.addEventListener('scroll', closeCampaignDropdown)\n return () => {\n window.removeEventListener('scroll', closeCampaignDropdown)\n }\n }, [])\n\n const setSelectedProducts = (products) => {\n localStorage.setItem('selectedProducts', JSON.stringify(products))\n _setSelectedProducts(products)\n }\n\n const onSelectCampaign = (e) => {\n e.preventDefault()\n setShowSelected(false)\n setSelectedProducts([])\n const campaign = e.target.value\n productsModel.setCampaign(campaign)\n setShippingDate(latestDate(campaign.deliveryValidFrom, today))\n history.push({\n search: '',\n })\n }\n\n function getTimeMinusOffset(date) {\n return (\n new Date(date.getTime() - date.getTimezoneOffset() * 60000)\n .toJSON()\n .split('T')[0] + 'T00:00:00'\n )\n }\n\n const onShippingDateChange = (date) => {\n if (!date) {\n _setShippingDate('')\n return\n }\n const jsonDate = date.toJSON()\n let newDate\n if (jsonDate) {\n //if jsonDate isnt null it means the date is valid. it can be a day behind with time T22:00:00 because of timezone if filled out by keyboard,\n //or actual date + timestamp if filled out by clicking\n //set it to actual date. check if date is in different timezone by seeing if it ends in 00:00.000Z\n if (jsonDate.split('T')[1].substring(3) === '00:00.000Z') {\n newDate = getTimeMinusOffset(new Date(date))\n } else {\n newDate = jsonDate.split('T')[0] + 'T:00:00:00'\n }\n\n //is date within allowed window?\n //if it isn't then only set shippingdate in state, don't set invalid date in localStorage\n if (\n productsModel.campaign.deliveryValidTo >= newDate &&\n shippingStartOrToday <= newDate\n ) {\n setShippingDate(newDate)\n setShippingDateError(false)\n } else {\n _setShippingDate(newDate)\n setShippingDateError(true)\n }\n } else {\n _setShippingDate(date)\n _setShippingDate(productsModel.campaign.deliveryValidFrom)\n }\n }\n\n //define products to show as searchCollection with quantities taken from selectedProducts\n const productsModelProducts = productsModel.searchCollection.products || []\n const products = productsModelProducts.map((product) => {\n const selectedProductInSeachCollection = selectedProducts.find(\n (el) => el.productNo === product.productNo,\n )\n return {\n ...product,\n quantity: selectedProductInSeachCollection\n ? selectedProductInSeachCollection.quantity\n : '',\n }\n })\n\n const sortCampaigns = (arr) => {\n return arr.sort((a, b) => {\n if (a.name > b.name) return 1\n if (a.name < b.name) return -1\n return 0\n })\n }\n\n useEffect(() => {\n if (core.user.selectedCustomer.accountNo) {\n if (!firstRender.current) {\n //reset selected products when changing account, but not on normal pageload\n setSelectedProducts([])\n }\n //fetch campaigns list if it is missing\n core.dataStore\n .getCampaigns(core.user.selectedCustomer.accountNo)\n .then((res) => {\n if (res.data) {\n productsModel.setCampaigns(sortCampaigns(res.data))\n productsModel.setCampaign(\n res.data?.find(\n (el) =>\n el.campaignId ===\n JSON.parse(localStorage.getItem('campaign') || '{}')\n .campaignId,\n ) || {},\n )\n }\n })\n .then(() => {\n //once we have the campaigns list we know which campaign we're on, so fetch the products\n productsModel.init()\n })\n .catch(console.log)\n }\n firstRender.current = false\n }, [core.user.selectedCustomer.accountNo, productsModel.campaign.campaignId])\n\n useEffect(() => {\n const scrollHandler = (ev) => {\n if (window.scrollY > 100) {\n setShowScrollToTop(true)\n } else {\n setShowScrollToTop(false)\n }\n }\n window.document.addEventListener('scroll', scrollHandler)\n return () => window.document.removeEventListener('scroll', scrollHandler)\n }, [])\n\n function scrollToTop() {\n window.scrollTo(0, 0)\n }\n\n const showSelectedHandler = () => {\n setShowSelected(!showSelected)\n }\n\n const addToBasket = () => {\n if (shippingDateError) {\n return\n }\n basketModel.multiAdd(\n selectedProducts.map((el) => {\n return {\n ...el,\n qty: findNextAllowedAmount(el, el.quantity),\n requestedShippingDate: shippingDate,\n campaignId: productsModel.campaign.campaignId,\n }\n }),\n () => {\n setSelectedProducts([])\n },\n )\n }\n\n const addSingleProductToBasket = (product) => {\n if (shippingDateError) {\n return\n }\n setIsLoading(true)\n basketModel.add(\n {\n itemId: product.productNo,\n qty: Math.max(\n product.quantity || 0,\n Math.max(product.minimumQuantity, product.colli),\n ),\n campaignId: productsModel.campaign.campaignId,\n requestedShippingDate: shippingDate,\n },\n () => {\n setIsLoading(false)\n const indexOfProduct = products.findIndex(\n (el) => el.productNo === product.productNo,\n )\n const newProducts = [...products]\n newProducts[indexOfProduct].quantity = ''\n setSelectedProducts(\n selectedProducts.filter((el) => el.productNo !== product.productNo),\n )\n },\n )\n }\n\n const onQuantityChange = (productNo, quantity) => {\n //dont fire if qty wasn't changed\n const newQty = products.find((el) => el.productNo === productNo)?.quantity\n if (newQty === quantity || (!newQty && !quantity)) {\n return\n }\n const changingProduct = products.findIndex(\n (el) => el.productNo === productNo,\n )\n const changingSelectedProduct = selectedProducts.findIndex(\n (el) => el.productNo === productNo,\n )\n\n if (changingProduct + changingSelectedProduct === -2) {\n return console.log('changed quantity on product not in products lists')\n }\n\n //if product is already in selectedProducts, then change quantity\n if (changingSelectedProduct > -1) {\n let newSelectedProducts = [...selectedProducts]\n if (quantity == '0' || !quantity) {\n newSelectedProducts = newSelectedProducts.filter(\n (el) => el.productNo !== productNo,\n )\n } else {\n newSelectedProducts[changingSelectedProduct].quantity = quantity\n }\n setSelectedProducts(newSelectedProducts)\n\n //if product is not in selectedProducts, then add it\n } else if (changingProduct > -1 && quantity > 0) {\n const newSelectedProducts = [...selectedProducts]\n newSelectedProducts.push({\n ...products[changingProduct],\n quantity,\n })\n setSelectedProducts(newSelectedProducts)\n }\n }\n\n const formatDate = (time) => {\n const date = new Date(time)\n window.date = date\n return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`\n }\n\n const getFacetLabelByCategoryAndId = (category, id) => {\n //searchCollection.facets can exclude facets that are selected, therefore we use allFacets for a complete map of facet labels\n const allFacets = productsModel.allFacets\n const facetsWithCounts = productsModel.searchCollection.facets\n let facetLabel = ''\n if (!allFacets) {\n return\n }\n const cat = allFacets.find((el) => el.name === category)\n const catWithCounts = facetsWithCounts.find((el) => el.name === category)\n if (!cat) {\n return\n }\n const label = cat.facetValues.find((el) => el.id === id)\n let countLabel = catWithCounts.facetValues.find((el) => el.id === id)\n const count = countLabel ? countLabel.count : 0\n //counts removed from labels, as they are not working correctly atm\n if (category === 'news') {\n facetLabel = (\n \n \n \n )\n } else {\n facetLabel = label && `${label.name}`\n }\n\n return (\n <>\n \n\n {facetLabel}\n \n \n \n )\n }\n\n function getArrayOfFacets(selectedFacetValues) {\n let facets = []\n for (const category in selectedFacetValues) {\n selectedFacetValues[category].forEach((el) => {\n facets.push({\n category,\n value: el,\n })\n })\n }\n return facets\n }\n\n function handleToggleFacetvalue(facet, facetValue) {\n productsModel.toggleFacetValue(facet, facetValue)\n }\n\n function reset() {\n productsModel.reset()\n }\n\n function countLabel() {\n let label = ''\n if (productsModel.searchCollection.products) {\n let count = productsModel.searchCollection.products.length\n let total = productsModel.searchCollection.totalNumberOfResults\n label = (\n <>\n {` ${count} `}\n {` ${total} `}\n \n \n )\n }\n return label\n }\n\n const query = productsModel.searchCollection.query\n\n return (\n
\n\n {/* the width should account for the drawer being open/closed, and since it's position:fixed \"100%\" won't work */}\n \n
\n
\n \n \n \n \n \n\n {productsModel.campaigns.map((campaign) => {\n return (\n \n {campaign.name}\n \n )\n })}\n \n \n {productsModel.campaign.deliveryValidFrom && (\n
\n

\n \n {formatDate(productsModel.campaign.deliveryValidFrom)}\n

\n

\n \n {formatDate(productsModel.campaign.deliveryValidTo)}\n

\n
\n )}\n
\n
\n \n \n \n \n \n {`(${selectedProducts.length})`}\n \n \n
\n
\n <>\n {productsModel.isInitialized && (\n \n \n }\n maxDate={productsModel.campaign.deliveryValidTo}\n minDate={productsModel.campaign.deliveryValidFrom}\n onChange={onShippingDateChange}\n className={classes.datePicker}\n disabled={!productsModel.campaign}\n value={shippingDate}\n />\n
\n )}\n \n\n
\n \n \n\n {(productsModel.getSelecteFacetValuesCount() > 0 || query) && (\n
\n \n \n \n \n \n \n {getArrayOfFacets(productsModel.selectedFacetValues).map(\n (el) => (\n \n handleToggleFacetvalue(el.category, el.value)\n }\n className={classes.resetButton}>\n\n {getFacetLabelByCategoryAndId(\n el.category,\n el.value,\n )}\n \n ),\n )}\n {query ? (\n productsModel.handleSearchQueryChange('')}\n className={classes.resetButton}>\n {query} \n \n \n ) : null}\n
\n )}\n \n\n {countLabel()}\n \n \n \n \n \n\n
\n {showScrollToTop ? (\n \n \n \n \n ) : null}\n \n {/* Product list */}\n {/* The product list must be pushed down to show facets, but the facets have fixed position.\n Therefore add marginTop if any facets are chosen */}\n \n\n {showSelected ? (\n selectedProducts.map((product, i) => (\n \n ))\n ) : (\n (\n \n ))}\n />\n )}\n \n {/* No products */}\n {!isLoading && products.length === 0 && query && (\n \n )}\n \n )\n}\n","import React, { useState, useRef, useContext } from 'react'\r\n\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport useStyles from '../SearchPage/itemStyles'\r\nimport { TextField } from '@material-ui/core'\r\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp'\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown'\r\nimport { ProductDescription } from '../../../sales-web-app/pages/Products/ViewModes/ListViewItem'\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\n\r\nexport const ListViewItem = React.memo((props) => {\r\n const core = useContext(CoreContext)\r\n const { product, campaignId, refreshProducts } = props\r\n const { colli, minimumQuantity } = product\r\n const [sorting, setSorting] = useState(product.sorting)\r\n const classes = useStyles()\r\n const inputRef = useRef(null)\r\n const [loading, setLoading] = useState(false)\r\n\r\n const [currentPrice, setCurrentPrice] = useState(\r\n findPrice(product.priceDtos[0].minQuantity),\r\n )\r\n\r\n const hasDiscount = currentPrice.discountPercentage > 0\r\n\r\n const changeSortIndex = (e) => {\r\n setSorting(e.target.value)\r\n }\r\n\r\n const onBlurHandler = () => {\r\n setLoading(true)\r\n core.dataStore\r\n .setSortingOnCampaignProduct({\r\n campaignId,\r\n itemId: product.productNo,\r\n sorting,\r\n })\r\n .then((res) => {\r\n refreshProducts()\r\n setLoading(false)\r\n })\r\n .catch((err) => {\r\n alert('couldnt update product')\r\n setLoading(false)\r\n })\r\n }\r\n\r\n const onArrowUp = () => {\r\n if (!loading && sorting >= 2) {\r\n setLoading(true)\r\n core.dataStore\r\n .setSortingOnCampaignProduct({\r\n campaignId,\r\n itemId: product.productNo,\r\n sorting: sorting - 1,\r\n })\r\n .then(() => {\r\n refreshProducts()\r\n setLoading(false)\r\n })\r\n .catch((err) => {\r\n alert('couldnt update product')\r\n setLoading(false)\r\n })\r\n }\r\n }\r\n\r\n const onArrowDown = () => {\r\n if (!loading) {\r\n setLoading(true)\r\n core.dataStore\r\n .setSortingOnCampaignProduct({\r\n campaignId,\r\n itemId: product.productNo,\r\n sorting: sorting + 1,\r\n })\r\n .then(() => {\r\n refreshProducts()\r\n setLoading(false)\r\n })\r\n .catch(() => {\r\n alert('couldnt update product')\r\n setLoading(false)\r\n })\r\n }\r\n }\r\n\r\n function findPrice(qty) {\r\n let _currentPrice = {\r\n minQuantity: 0,\r\n }\r\n product.priceDtos.forEach((price) => {\r\n if (\r\n price.minQuantity <= qty &&\r\n price.minQuantity > _currentPrice.minQuantity\r\n ) {\r\n _currentPrice = price\r\n }\r\n })\r\n return _currentPrice\r\n }\r\n\r\n const hasNoPrice = !product.priceDtos.length\r\n\r\n return (\r\n
\r\n \r\n {/* Price, Quantity and Buy button */}\r\n
\r\n
\r\n

\r\n {colli}\r\n

\r\n

\r\n {minimumQuantity}\r\n

\r\n
\r\n
\r\n {/* Normal price */}\r\n {hasDiscount ? (\r\n {currentPrice.grossPrice}\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Your price */}\r\n
\r\n {currentPrice.netPrice}\r\n \r\n {hasDiscount ? (\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n {`${product.quantity || currentPrice.minQuantity} `}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n }\r\n InputLabelProps={{ shrink: true }}\r\n inputRef={inputRef}\r\n onClick={() => {\r\n inputRef.current.select(0, -1)\r\n }}\r\n onBlur={onBlurHandler}\r\n variant='outlined'\r\n />\r\n
\r\n \r\n {}}\r\n style={{ fill: 'black' }}\r\n />\r\n
\r\n \r\n {}}\r\n style={{ fill: 'black' }}\r\n />\r\n
\r\n
\r\n \r\n \r\n )\r\n})\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport {\r\n Button,\r\n LinearProgress,\r\n makeStyles,\r\n Select,\r\n MenuItem,\r\n FormControl,\r\n InputLabel,\r\n} from '@material-ui/core'\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess'\r\n\r\nimport { ListViewItem } from './ListViewItem'\r\nimport TranslationLabel from '../../../../core/components/TranslationLabel'\r\nimport { Typography } from '@material-ui/core'\r\nimport ContentScroller from '../../../sales-web-app/components/ContentScroller'\r\n\r\nimport { CoreContext } from '../../../../core/context/CoreContext'\r\nimport { ProductsContext } from '../../../sales-web-app/context/ProductsContext'\r\nimport Grid from '@material-ui/core/Grid/Grid'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n productsPageRoot: {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n flexGrow: 1,\r\n margin: 0,\r\n background: 'white',\r\n height: '100%',\r\n },\r\n stickyloader: {\r\n margin: 'auto',\r\n position: 'sticky',\r\n zIndex: 1,\r\n width: '100%',\r\n visibility: 'hidden',\r\n },\r\n loaderVisible: {\r\n visibility: 'visible',\r\n },\r\n stickyScrollButton: {\r\n 'position': 'fixed',\r\n 'top': 220,\r\n 'left': '50%',\r\n 'transform': 'translate(-50%)',\r\n 'zIndex': 100,\r\n 'backgroundColor': 'white',\r\n '&:hover': {\r\n backgroundColor: 'white',\r\n },\r\n },\r\n buttons: {\r\n margin: '10px 2px',\r\n marginRight: '10px',\r\n },\r\n productsWrapper: {\r\n flex: '1 1 auto',\r\n },\r\n select: {\r\n width: 200,\r\n },\r\n topContainer: {\r\n marginBottom: 30,\r\n flew: '0 1 auto',\r\n },\r\n leftSideOfBar: {\r\n width: 420,\r\n display: 'inline-block',\r\n },\r\n rightButtons: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n float: 'right',\r\n },\r\n datePicker: {\r\n position: 'absolute',\r\n right: 15,\r\n top: 9,\r\n width: 200,\r\n backgroundColor: 'white',\r\n borderRadius: 3,\r\n },\r\n count: {\r\n fontSize: 14,\r\n },\r\n resetButton: {\r\n display: 'inline-block',\r\n border: '1px solid lightgrey',\r\n marginRight: 5,\r\n marginBottom: 5,\r\n borderRadius: 2,\r\n padding: 5,\r\n },\r\n resetButtonText: {\r\n verticalAlign: 'middle',\r\n },\r\n greyedOutResetButtonText: {\r\n color: theme.palette.grey['500'],\r\n },\r\n resetButtonIcon: {\r\n verticalAlign: 'middle',\r\n marginLeft: 5,\r\n width: 15,\r\n height: 15,\r\n },\r\n facets: {\r\n marginTop: 5,\r\n },\r\n shippingDateInfo: {\r\n display: 'inline-block',\r\n marginLeft: 10,\r\n },\r\n fromDate: {\r\n margin: 5,\r\n },\r\n toDate: {\r\n margin: 5,\r\n },\r\n fixedTop: {\r\n top: '64px',\r\n paddingTop: '10px',\r\n right: 0,\r\n position: 'fixed',\r\n width: 'calc(100% - 80px)',\r\n background: 'white',\r\n zIndex: 5,\r\n },\r\n}))\r\n\r\nexport default function SearchPage(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const productsModel = useContext(ProductsContext)\r\n const [showScrollToTop, setShowScrollToTop] = useState(false)\r\n\r\n const onSelectCampaign = (e) => {\r\n productsModel.setCampaign(e.target.value)\r\n }\r\n\r\n const products = productsModel.searchCollection.products || []\r\n\r\n const sortCampaigns = (arr) => {\r\n return arr.sort((a, b) => {\r\n if (a.name > b.name) return 1\r\n if (a.name < b.name) return -1\r\n return 0\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (core.user.selectedCustomer.accountNo) {\r\n //fetch campaigns list if it is missing\r\n\r\n if (!productsModel.campaigns.length) {\r\n core.dataStore\r\n .getCampaigns(core.user.selectedCustomer.accountNo)\r\n .then((res) => {\r\n if (res.data) {\r\n productsModel.setCampaigns(sortCampaigns(res.data))\r\n productsModel.setCampaign(\r\n res.data?.find(\r\n (el) =>\r\n el.campaignId ===\r\n JSON.parse(localStorage.getItem('campaign') || '{}')\r\n .campaignId,\r\n ) || {},\r\n )\r\n }\r\n })\r\n .then(() => {\r\n //once we have the campaigns list we know which campaign we're on, so fetch the products\r\n productsModel.init()\r\n })\r\n .catch(console.log)\r\n } else {\r\n productsModel.init()\r\n }\r\n }\r\n }, [core.user.selectedCustomer.accountNo, productsModel.campaign])\r\n\r\n useEffect(() => {\r\n const scrollHandler = (ev) => {\r\n if (window.scrollY > 100) {\r\n setShowScrollToTop(true)\r\n } else {\r\n setShowScrollToTop(false)\r\n }\r\n }\r\n window.document.addEventListener('scroll', scrollHandler)\r\n return () => window.document.removeEventListener('scroll', scrollHandler)\r\n }, [])\r\n\r\n function scrollToTop() {\r\n window.scrollTo(0, 0)\r\n }\r\n\r\n const formatDate = (time) => {\r\n const date = new Date(time)\r\n window.date = date\r\n return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`\r\n }\r\n\r\n function countLabel() {\r\n let label = ''\r\n if (productsModel.searchCollection.products) {\r\n let count = productsModel.searchCollection.products.length\r\n let total = productsModel.searchCollection.totalNumberOfResults\r\n label = (\r\n <>\r\n \r\n {` ${count} `}\r\n \r\n {` ${total} `}\r\n \r\n \r\n )\r\n }\r\n return label\r\n }\r\n\r\n return (\r\n
\r\n {/* the width should account for the drawer being open/closed, and since it's position:fixed \"100%\" won't work */}\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {productsModel.campaigns.map((campaign) => {\r\n return (\r\n \r\n {campaign.name}\r\n \r\n )\r\n })}\r\n \r\n \r\n {productsModel.campaign.deliveryValidFrom && (\r\n
\r\n

\r\n \r\n {formatDate(productsModel.campaign.deliveryValidFrom)}\r\n

\r\n

\r\n \r\n {formatDate(productsModel.campaign.deliveryValidTo)}\r\n

\r\n
\r\n )}\r\n \r\n core.dataStore\r\n .createSortOrderForCampaign(productsModel.campaign.campaignId)\r\n .then((res) => productsModel.init())\r\n }>\r\n \r\n \r\n
\r\n
\r\n <>\r\n \r\n \r\n \r\n {countLabel()}\r\n \r\n \r\n \r\n \r\n\r\n {showScrollToTop ? (\r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n\r\n {/* Product list */}\r\n {/* The product list must be pushed down to show facets, but the facets have fixed position.\r\n Therefore add marginTop if any facets are chosen */}\r\n \r\n (\r\n {}}\r\n onQuantityChange={() => {}}\r\n currency={i === 0 && core.user.selectedCustomer.currency}\r\n key={Math.random()}\r\n />\r\n ))}\r\n />\r\n \r\n \r\n )\r\n}\r\n","import ProductSearch from '../pages/SearchPage/SearchPage'\r\nimport OrdersPage from '../../../apps/sales-web-app/pages/Orders/OrdersPage'\r\nimport DetailedOrderView from '../../sales-web-app/pages/Orders/DetailedOrderView'\r\nimport StatisticsPage from '../../../apps/sales-web-app/pages/Statistics/StatisticsPage'\r\nimport HelpPage from '../../../core/components/HelpPage'\r\nimport BasketOverview from '../../../core/pages/BasketOverview/BasketOverview'\r\nimport SortingPage from '../pages/SortingPage'\r\nimport BasketPage from '../../sales-web-app/pages/Basket/BasketPage'\r\n\r\nconst root = '/fair-app'\r\n\r\nconst routes = [\r\n {\r\n id: 'productSearch',\r\n path: `${root}/`,\r\n component: ProductSearch,\r\n exact: true,\r\n },\r\n {\r\n id: 'orders',\r\n path: `${root}/orders`,\r\n component: OrdersPage,\r\n exact: true,\r\n },\r\n {\r\n id: 'DetailedOrderView',\r\n path: root + '/orders/:id',\r\n component: DetailedOrderView,\r\n },\r\n {\r\n id: 'statistics',\r\n path: `${root}/statistics`,\r\n component: StatisticsPage,\r\n exact: true,\r\n },\r\n {\r\n id: 'sorting',\r\n path: `${root}/sorting`,\r\n component: SortingPage,\r\n exact: true,\r\n },\r\n {\r\n id: 'help',\r\n path: `${root}/help`,\r\n component: HelpPage,\r\n exact: true,\r\n },\r\n {\r\n id: 'BasketOverview',\r\n path: root + '/basketOverview',\r\n component: BasketOverview,\r\n },\r\n {\r\n id: 'Basket',\r\n path: root + '/basket',\r\n component: BasketPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'BasketReceipt',\r\n path: root + '/basket/receipt',\r\n component: BasketPage,\r\n accessLevel: 0,\r\n exact: true,\r\n },\r\n {\r\n id: 'BasketConfirmation',\r\n path: root + '/basket/confirmation',\r\n component: BasketPage,\r\n accessLevel: 0,\r\n },\r\n]\r\n\r\nexport default {\r\n getRoute: id => routes.find((i) => i.id === id),\r\n root: root,\r\n routes: routes\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { Route, Router, Switch } from 'react-router-dom'\r\nimport routes from '../config/routes'\r\nimport classNames from 'classnames'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery/useMediaQuery'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport NotFound from '../../../core/pages/NotFound'\r\n\r\nfunction ComponentRoute({ component: Component, ...rest }) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nconst drawerWidth = 240\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n marginTop: 64,\r\n flexGrow: 1,\r\n padding: theme.spacing(2),\r\n height: 'calc(100% - 64px)',\r\n backgroundColor: 'white',\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: drawerWidth,\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 70,\r\n },\r\n contentStatic: {\r\n marginLeft: 0,\r\n },\r\n})\r\n\r\nfunction Content(props) {\r\n const { classes } = props\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n\r\n return (\r\n \r\n \r\n \r\n {routes.routes.map((r) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Content)\r\n","import { useContext } from 'react'\r\nimport routeSettings from './routes'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\n\r\nconst GetNavItems = () => {\r\n const core = useContext(CoreContext)\r\n const { canChangeSortOrder } = core.user.userSetting\r\n const upperNavigation = [\r\n navItem('productSearch', 1, 'productSearch'),\r\n navItem('orders', 2, 'orders'),\r\n navItem('statistics', 3, 'statistics'),\r\n navItem('help', 2, 'help'),\r\n ]\r\n\r\n if (canChangeSortOrder) {\r\n upperNavigation.push(navItem('sorting', 4, 'sorting'))\r\n }\r\n\r\n return {\r\n upperNavigation: upperNavigation,\r\n }\r\n}\r\n\r\nconst navItem = (id, index, labelKey) => {\r\n return {\r\n id: id,\r\n route: routeSettings.getRoute(id),\r\n index: index,\r\n labelKey: labelKey,\r\n }\r\n}\r\n\r\nexport default GetNavItems\r\n","import React, { useContext, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport Badge from '@material-ui/core/Badge'\r\nimport ShoppingBasket from '@material-ui/icons/ShoppingBasket'\r\nimport CircularProgress from '@material-ui/core/CircularProgress/CircularProgress'\r\n\r\nimport NavigationDrawer from '../../../core/components/navigation/NavigationDrawer'\r\nimport Topbar from '../../../core/components/navigation/Topbar'\r\nimport MiniBasket from '../../sales-web-app/pages/Basket/components/MiniBasket'\r\n\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport { BasketContext } from '../../../core/context/BasketContext'\r\nimport GetNavItems from '../config/navigation'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n facebook2: {\r\n color: '#6798e5',\r\n animationDuration: '550ms',\r\n position: 'absolute',\r\n left: 0,\r\n },\r\n}))\r\n\r\nfunction Navigation(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const basket = useContext(BasketContext)\r\n const [open, setOpen] = useState(false)\r\n\r\n function handleClickMiniBasket(val) {\r\n setOpen(val)\r\n }\r\n\r\n return (\r\n <>\r\n \r\n handleClickMiniBasket(true)}>\r\n {!basket.isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\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 default Navigation\r\n","import React, { useState, useContext, useEffect, useRef } from 'react'\r\nimport Modal from '@material-ui/core/Modal'\r\nimport {\r\n Card,\r\n FormControlLabel,\r\n Switch,\r\n Button,\r\n makeStyles,\r\n Typography,\r\n TextField,\r\n FormControl,\r\n InputLabel,\r\n Select,\r\n MenuItem,\r\n} from '@material-ui/core'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n headerSection: {\r\n width: '100%',\r\n marginTop: '25px',\r\n marginBottom: '25px',\r\n textAlign: 'center',\r\n },\r\n modal: {\r\n width: 600,\r\n maxWidth: '100%',\r\n height: 800,\r\n position: 'relative',\r\n margin: 'auto',\r\n marginTop: '64px',\r\n backgroundColor: 'white',\r\n textAlign: 'center',\r\n paddingTop: 25,\r\n },\r\n inputfield: {\r\n display: 'block',\r\n width: '90%',\r\n margin: 'auto',\r\n marginTop: 10,\r\n },\r\n searchField: {\r\n width: 200,\r\n marginRight: 10,\r\n },\r\n submitButton: {\r\n marginTop: 20,\r\n },\r\n deleteButton: {\r\n marginTop: 20,\r\n marginRight: 100,\r\n },\r\n headerButton: {\r\n margin: 8,\r\n },\r\n modalVideoPreview: {\r\n border: 'none',\r\n marginTop: 10,\r\n },\r\n paginationButton: {\r\n margin: 20,\r\n },\r\n}))\r\n\r\n//all videos are loaded to begin with, and then searching is done by filtering the list\r\n\r\nexport default function VideoPage(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const [allVideos, setAllVideos] = useState([])\r\n const [searchBrand, setSearchBrand] = useState('')\r\n const [searchTerm, setSearchTerm] = useState('')\r\n const [page, setPage] = useState(0)\r\n\r\n const [editMode, setEditMode] = useState(false)\r\n const [videoUploadOpen, setVideoUploadOpen] = useState(false)\r\n const [videoId, setVideoId] = useState('')\r\n const [title, setTitle] = useState('')\r\n const [brand, setBrand] = useState('')\r\n const [id, setId] = useState('')\r\n const [keywords, setKeywords] = useState('')\r\n const [hidden, setHidden] = useState(false)\r\n const [showHidden, setShowHidden] = useState(false)\r\n const [relatedProducts, setRelatedProducts] = useState([])\r\n const [brands, setBrands] = useState([''])\r\n const [videosPerPage, _] = useState(\r\n window.innerWidth > 1000 ? 9 : window.innerWidth > 600 ? 4 : 1,\r\n )\r\n const isVideoAdmin = core.user.userSetting.videoManagement\r\n const [showEditIcon, setShowEditIcon] = useState(isVideoAdmin)\r\n const { drawerExpanded } = props\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getBrands()\r\n .then((res) => {\r\n setBrands(res.data)\r\n })\r\n .catch(() => {})\r\n }, [])\r\n\r\n useEffect(() => {\r\n core.dataStore\r\n .getYoutubeVideos()\r\n .then((res) => {\r\n setAllVideos(res.data)\r\n })\r\n .catch(() => {})\r\n }, [])\r\n\r\n const videosFilter = (video) => {\r\n if (!showHidden && video.hidden) {\r\n return false\r\n }\r\n if (showHidden && !video.hidden) {\r\n return false\r\n }\r\n //if brand is chosen then filter other brands out\r\n if (searchBrand?.id) {\r\n if (video.brand != searchBrand?.id) {\r\n return false\r\n }\r\n }\r\n //if search is filled out then filter non-matches out\r\n if (searchTerm) {\r\n if (!video.keywords.toLowerCase().includes(searchTerm.toLowerCase())) {\r\n if (!video.title.toLowerCase().includes(searchTerm.toLowerCase())) {\r\n return false\r\n }\r\n }\r\n }\r\n //return the rest\r\n return true\r\n }\r\n\r\n const clearInputFields = () => {\r\n setVideoId('')\r\n setTitle('')\r\n setBrand('')\r\n setKeywords('')\r\n setRelatedProducts([])\r\n setId('')\r\n setHidden(false)\r\n }\r\n\r\n const editVideo = (id) => {\r\n const video = allVideos.find((el) => el.id === id)\r\n setId(id)\r\n setVideoId(video.youtubeId)\r\n setTitle(video.title)\r\n setBrand(\r\n brands.find((brand) => brand.id == video.brand) || {\r\n label: 'None',\r\n id: '',\r\n },\r\n )\r\n setKeywords(video.keywords)\r\n setRelatedProducts(video.relatedProducts)\r\n setHidden(video.hidden)\r\n setVideoUploadOpen(true)\r\n setEditMode(true)\r\n }\r\n\r\n const submit = (e) => {\r\n e.preventDefault()\r\n if (editMode) {\r\n submitEdit()\r\n } else {\r\n submitVideo()\r\n }\r\n }\r\n\r\n const submitVideo = () => {\r\n const newVideo = {\r\n youtubeId: videoId,\r\n title,\r\n brand: brand?.id,\r\n keywords,\r\n relatedProducts,\r\n hidden,\r\n }\r\n core.dataStore.addYoutubeVideo(newVideo).then((res) => {\r\n //if succesful then add video in frontend aswell\r\n setAllVideos([...allVideos, res.data])\r\n })\r\n clearInputFields()\r\n setVideoUploadOpen(false)\r\n setEditMode(false)\r\n }\r\n\r\n const submitEdit = () => {\r\n const newVideo = {\r\n id,\r\n youtubeId: videoId,\r\n title,\r\n brand: brand?.id,\r\n keywords,\r\n relatedProducts,\r\n hidden,\r\n }\r\n core.dataStore.editYoutubeVideo(newVideo).then(() => {\r\n //if successful then update the video in the frontend aswell\r\n setAllVideos(\r\n allVideos.map((el) => {\r\n if (el.id === id) {\r\n return newVideo\r\n }\r\n return el\r\n }),\r\n )\r\n clearInputFields()\r\n setVideoUploadOpen(false)\r\n setEditMode(false)\r\n })\r\n }\r\n\r\n const onVideoIdChange = (e) => {\r\n const newId = e.target.value\r\n if (newId.includes('https://youtu.be/')) {\r\n setVideoId(newId.split('youtu.be/')[1])\r\n } else {\r\n setVideoId(newId)\r\n }\r\n }\r\n\r\n const deleteVideo = () => {\r\n core.dataStore.deleteYoutubeVideo(id).then((res) => {\r\n //if succesful then delete video in frontend aswell\r\n setAllVideos(allVideos.filter((el) => el.id != id))\r\n clearInputFields()\r\n setVideoUploadOpen(false)\r\n setEditMode(false)\r\n })\r\n }\r\n\r\n const handlePageChange = (page) => {\r\n setPage(page)\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n setSearchBrand(e.target.value)\r\n setPage(0)\r\n }}>\r\n {[{ id: '', label: 'All' }, ...brands].map((brand, i) => {\r\n return (\r\n \r\n {brand.label}\r\n \r\n )\r\n })}\r\n \r\n \r\n {\r\n setSearchTerm(e.target.value)\r\n setPage(0)\r\n }}\r\n variant='outlined'\r\n fullWidth\r\n autoFocus\r\n label={}\r\n className={classes.searchField}\r\n />\r\n {isVideoAdmin && (\r\n setVideoUploadOpen(!videoUploadOpen)}>\r\n \r\n \r\n )}\r\n {isVideoAdmin && (\r\n setShowEditIcon(!showEditIcon)}\r\n />\r\n }\r\n label={}\r\n />\r\n )}\r\n {isVideoAdmin && (\r\n setShowHidden(!showHidden)}\r\n />\r\n }\r\n label={}\r\n />\r\n )}\r\n
\r\n\r\n {\r\n setVideoUploadOpen(false)\r\n clearInputFields()\r\n setEditMode(false)\r\n }}>\r\n
\r\n \r\n {editMode ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n

\r\n \r\n )}\r\n \r\n
\r\n }\r\n className={classes.inputfield}\r\n />\r\n {videoId && (\r\n \r\n \r\n
\r\n )}\r\n setTitle(e.target.value)}\r\n variant='outlined'\r\n fullWidth\r\n label={}\r\n className={classes.inputfield}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n setBrand(e.target.value)\r\n }}>\r\n {[{ id: '', label: 'None' }, ...brands].map((brand, i) => {\r\n return (\r\n \r\n {brand.label}\r\n \r\n )\r\n })}\r\n \r\n \r\n setKeywords(e.target.value)}\r\n variant='outlined'\r\n fullWidth\r\n label={}\r\n className={classes.inputfield}\r\n />\r\n setHidden(!hidden)}\r\n />\r\n }\r\n label={}\r\n />\r\n
\r\n {editMode && (\r\n \r\n \r\n \r\n )}\r\n \r\n {editMode ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {allVideos\r\n .filter(videosFilter)\r\n .slice(page * videosPerPage, (page + 1) * videosPerPage)\r\n .map((el) => (\r\n \r\n ))}\r\n
\r\n
\r\n handlePageChange(page - 1)}\r\n variant='outlined'>\r\n {'<'}\r\n \r\n \r\n \r\n \r\n =\r\n allVideos.filter(videosFilter).length\r\n }\r\n onClick={() => handlePageChange(page + 1)}\r\n variant='outlined'>\r\n {'>'}\r\n \r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n\r\nconst VideoCard = (props) => {\r\n const { youtubeId, title, editVideo, id, isVideoAdmin, showEditIcon } = props\r\n const vidRef = useRef(null)\r\n const aspectRatio = 9 / 16\r\n\r\n const resizeVideo = () => {\r\n vidRef.current.style.height =\r\n Math.floor(vidRef.current.offsetWidth * aspectRatio) + 'px'\r\n }\r\n\r\n useEffect(() => {\r\n resizeVideo()\r\n window.addEventListener('resize', resizeVideo, false)\r\n return () => {\r\n window.removeEventListener('resize', resizeVideo, false)\r\n }\r\n }, [vidRef])\r\n\r\n return (\r\n \r\n \r\n {isVideoAdmin && showEditIcon && (\r\n editVideo(id)}\r\n style={{\r\n position: 'absolute',\r\n bottom: 50,\r\n right: 5,\r\n zIndex: 5,\r\n color: 'white',\r\n cursor: 'pointer',\r\n }}\r\n />\r\n )}\r\n \r\n )\r\n}\r\n","import VideoPage from '../pages/VideoPage'\r\nimport HelpPage from '../../../core/components/HelpPage'\r\n\r\nconst root = '/video-app'\r\n\r\nconst routes = [\r\n {\r\n id: 'videoPage',\r\n path: `${root}/`,\r\n component: VideoPage,\r\n exact: true,\r\n },\r\n {\r\n id: 'Help',\r\n path: `${root}/help`,\r\n component: HelpPage,\r\n exact: true,\r\n }\r\n]\r\n\r\nexport default {\r\n getRoute: id => routes.find((i) => i.id === id),\r\n root: root,\r\n routes: routes\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { Route, Router, Switch } from 'react-router-dom'\r\nimport routes from '../config/routes'\r\nimport classNames from 'classnames'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery/useMediaQuery'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport NotFound from '../../../core/pages/NotFound'\r\n\r\nfunction ComponentRoute({ component: Component, ...rest }) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nconst drawerWidth = 240\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n marginTop: 64,\r\n flexGrow: 1,\r\n padding: theme.spacing(2),\r\n height: 'calc(100% - 64px)',\r\n backgroundColor: 'white',\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: drawerWidth,\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 70,\r\n },\r\n contentStatic: {\r\n marginLeft: 0,\r\n },\r\n})\r\n\r\nfunction Content(props) {\r\n const { classes } = props\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n\r\n return (\r\n \r\n \r\n \r\n {routes.routes.map((r) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Content)\r\n","import routeSettings from './routes'\r\n\r\nconst navItem = (id, index, labelKey) => {\r\n return {\r\n id: id,\r\n route: routeSettings.getRoute(id),\r\n index: index,\r\n labelKey: labelKey,\r\n }\r\n}\r\n\r\nconst upperNavigation = [navItem('videoPage', 1, 'videoPage'), navItem('Help', 2, 'help')]\r\n\r\nexport default {\r\n upperNavigation: upperNavigation\r\n}\r\n","import React from 'react'\r\nimport NavigationDrawer from '../../../core/components/navigation/NavigationDrawer'\r\nimport Topbar from '../../../core/components/navigation/Topbar'\r\nimport navigationSettings from '../config/navigation'\r\nfunction Navigation(props) {\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Navigation\r\n","import ImageBankLink from '../pages/ImageBankLink'\r\nimport HelpPage from '../../../core/components/HelpPage'\r\nconst root = '/imagebank-app'\r\n\r\nconst routes = [\r\n {\r\n id: 'link',\r\n path: `${root}/`,\r\n component: ImageBankLink,\r\n exact: true,\r\n },\r\n {\r\n id: 'Help',\r\n path: `${root}/help`,\r\n component: HelpPage,\r\n exact: true,\r\n },\r\n]\r\n\r\nexport default {\r\n getRoute: id => routes.find((i) => i.id === id),\r\n root: root,\r\n routes: routes\r\n}\r\n","import React from 'react'\r\nimport TranslationLabel from '../../../core/components/TranslationLabel'\r\n\r\nexport default function () {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { Route, Router, Switch } from 'react-router-dom'\r\nimport routes from '../config/routes'\r\nimport classNames from 'classnames'\r\nimport { withStyles } from '@material-ui/core/styles'\r\nimport useMediaQuery from '@material-ui/core/useMediaQuery/useMediaQuery'\r\nimport { CoreContext } from '../../../core/context/CoreContext'\r\nimport NotFound from '../../../core/pages/NotFound'\r\n\r\nfunction ComponentRoute({ component: Component, ...rest }) {\r\n return (\r\n (\r\n \r\n )}\r\n />\r\n )\r\n}\r\n\r\nconst drawerWidth = 240\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n display: 'flex',\r\n },\r\n hide: {\r\n display: 'none',\r\n },\r\n toolbar: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n ...theme.mixins.toolbar,\r\n },\r\n content: {\r\n marginTop: 64,\r\n flexGrow: 1,\r\n padding: theme.spacing(2),\r\n height: 'calc(100% - 64px)',\r\n backgroundColor: 'white',\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: drawerWidth,\r\n },\r\n contentShift: {\r\n transition: theme.transitions.create('margin', {\r\n easing: theme.transitions.easing.easeOut,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: 70,\r\n },\r\n contentStatic: {\r\n marginLeft: 0,\r\n },\r\n})\r\n\r\nfunction Content(props) {\r\n const { classes } = props\r\n const core = useContext(CoreContext)\r\n const matches = useMediaQuery(core.theme.breakpoints.up('sm'))\r\n\r\n return (\r\n \r\n \r\n \r\n {routes.routes.map((r) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default withStyles(styles)(Content)\r\n","import routeSettings from './routes'\r\n\r\nconst navItem = (id, index, labelKey) => {\r\n return {\r\n id: id,\r\n route: routeSettings.getRoute(id),\r\n index: index,\r\n labelKey: labelKey,\r\n }\r\n}\r\n\r\nexport default {\r\n upperNavigation: [navItem('link', 1, 'link'), navItem('Help', 2, 'help')]\r\n}\r\n","import React from 'react'\r\nimport NavigationDrawer from '../../../core/components/navigation/NavigationDrawer'\r\nimport Topbar from '../../../core/components/navigation/Topbar'\r\nimport navigationSettings from '../config/navigation'\r\nfunction Navigation(props) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Navigation\r\n","import HubDashboard from '../pages/HubDashboard'\r\n\r\nimport SalesAppRoot from '../../apps/sales-web-app/SalesAppRoot'\r\nimport SalesAppRoutes from '../../apps/sales-web-app/config/routes'\r\n\r\nimport MasterItemDataAppRoot from '../../apps/master-item-data-app/MasterItemDataAppRoot'\r\nimport MasterItemDataAppRoutes from '../../apps/master-item-data-app/config/routes'\r\n\r\nimport FairAppRoot from '../../apps/fair-app/FairAppRoot'\r\nimport FairAppRoutes from '../../apps/fair-app/config/routes'\r\n\r\nimport VideoAppRoot from '../../apps/video-app/VideoAppRoot'\r\nimport VideoAppRoutes from '../../apps/video-app/config/routes'\r\n\r\nimport ImageBankAppRoot from '../../apps/imagebank-app/ImageBankAppRoot'\r\nimport ImageBankAppRoutes from '../../apps/imagebank-app/config/routes'\r\n\r\nconst hubRoutes = [\r\n {\r\n id: 'admin',\r\n path: '/hub/admin',\r\n component: null,\r\n appId: -1,\r\n exact: false,\r\n },\r\n {\r\n id: 'hub',\r\n path: '/hub',\r\n component: HubDashboard,\r\n appId: 1,\r\n exact: false,\r\n },\r\n {\r\n id: 'salesApp',\r\n appId: 2,\r\n path: SalesAppRoutes.root,\r\n component: SalesAppRoot,\r\n routes: SalesAppRoutes.routes,\r\n },\r\n {\r\n id: 'masterItemDataApp',\r\n appId: 6,\r\n path: MasterItemDataAppRoutes.root,\r\n component: MasterItemDataAppRoot,\r\n routes: MasterItemDataAppRoutes.routes,\r\n },\r\n {\r\n id: 'fairApp',\r\n appId: 7,\r\n path: FairAppRoutes.root,\r\n component: FairAppRoot,\r\n routes: FairAppRoutes.routes,\r\n },\r\n {\r\n id: 'videoApp',\r\n appId: 9,\r\n path: VideoAppRoutes.root,\r\n component: VideoAppRoot,\r\n routes: VideoAppRoutes.routes,\r\n },\r\n {\r\n id: 'imageBankApp',\r\n appId: 12,\r\n path: ImageBankAppRoutes.root,\r\n component: ImageBankAppRoot,\r\n routes: ImageBankAppRoutes.routes,\r\n },\r\n]\r\n\r\nexport function findApp(id) {\r\n return hubRoutes.find((x) => x.appId === id)\r\n}\r\n\r\nexport function getRoutes(apps) {\r\n if (!apps) return []\r\n const rs = hubRoutes.filter((x) => apps.includes(x.appId))\r\n return rs ? rs : []\r\n}\r\n\r\nexport default hubRoutes\r\n","import React from 'react'\r\n\r\nimport BasketProvider from '../../core/context/BasketContext'\r\n\r\nimport ProductsProvider from './context/ProductsContext'\r\nimport CheckoutProvider from './context/CheckoutContext'\r\nimport ReturnServiceProvider from './context/ReturnServiceContext'\r\nimport CategoryProvider from './context/CategoryContext'\r\nimport OrderProvider from './context/OrderContext'\r\n\r\nimport Navigation from './components/Navigation'\r\nimport Content from './components/Content'\r\n\r\nexport default function SalesAppRoot(props) {\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","import React from 'react'\r\nimport { StoreProvider } from './global/store'\r\nimport Content from './components/ui/Content'\r\nimport Navigation from './components/Navigation'\r\nimport './resources/css/app.css'\r\n\r\nexport default function MasterItemDataAppRoot() {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport Content from './components/Content'\r\nimport Navigation from './components/Navigation'\r\n\r\nimport BasketProvider from '../../core/context/BasketContext'\r\nimport ProductsProvider from '../sales-web-app/context/ProductsContext'\r\nimport CategoryProvider from '../sales-web-app/context/CategoryContext'\r\nimport CheckoutProvider from '../sales-web-app/context/CheckoutContext'\r\nimport OrderProvider from '../sales-web-app/context/OrderContext'\r\n\r\nexport default function FairAppRoot() {\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","import React from 'react'\r\nimport Content from './components/Content'\r\nimport Navigation from './components/Navigation'\r\n\r\nexport default function VideoAppRoot() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport Content from './components/Content'\r\nimport Navigation from './components/Navigation'\r\n\r\nexport default function ImageBankAppRoot() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\n//Components\r\nimport SignIn from '../../apps/sales-web-app/components/ui/SignIn'\r\n\r\n//Material UI\r\nimport withStyles from '@material-ui/core/styles/withStyles'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport { findApp } from '../settings/hubRoutes'\r\nimport History from '../settings/history'\r\n\r\nconst styles = (theme) => ({\r\n main: {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'top center',\r\n backgroundColor: '#312926',\r\n display: 'flex',\r\n width: '100%',\r\n height: '100%',\r\n backgroundImage: 'url(/images/login-background.jpg)',\r\n },\r\n root: {\r\n width: 'auto',\r\n display: 'block',\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(400 + theme.spacing(3) * 2)]: {\r\n width: 400,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n },\r\n },\r\n})\r\n\r\nexport function LoginPage(props) {\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [loginForm, setLoginForm] = useState({ userName: '', password: '' })\r\n const [canSubscribe, setCanSubscribe] = useState(true)\r\n const { classes } = props\r\n const core = useContext(CoreContext)\r\n\r\n function handleSetUser(value) {\r\n setLoginForm({ ...loginForm, userName: value })\r\n }\r\n\r\n function handleSetPassword(value) {\r\n setLoginForm({ ...loginForm, password: value })\r\n }\r\n\r\n function handleSubmit() {\r\n setIsLoading(true)\r\n core.authenticateLogin(loginForm).catch(() => {\r\n if (canSubscribe) {\r\n setIsLoading(false)\r\n }\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (core.isAuthenticated && core.user.userSetting.apps.length > 0) {\r\n let rs = findApp(core.user.userSetting.primaryAppId)\r\n History.push(rs.path)\r\n }\r\n return () => {\r\n setCanSubscribe(false)\r\n }\r\n }, [core])\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nLoginPage.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n}\r\n\r\nexport default withStyles(styles)(LoginPage)\r\n","import React, { useState, useContext } from 'react'\r\nimport PropTypes from 'prop-types'\r\n\r\n//Components\r\nimport LoadingBarBox from '../components/ui/LoadingBarBox'\r\nimport OutlinedInputField from '../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport { CoreContext } from '../context/CoreContext'\r\n\r\n//Material UI\r\nimport withStyles from '@material-ui/core/styles/withStyles'\r\nimport Button from '@material-ui/core/Button'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport AccountCircle from '@material-ui/icons/AccountCircle'\r\nimport Logo from '../../core/images/rosendahl-design-group-logo.png'\r\nimport TranslationLabel from '../components/TranslationLabel'\r\nimport CheckCircleOutlineIcon from '@material-ui/icons/CheckCircleOutline'\r\nimport { Link } from 'react-router-dom'\r\n\r\nconst styles = (theme) => ({\r\n paper: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n padding: `${theme.spacing(2)}px ${theme.spacing(3)}px ${theme.spacing(\r\n 3,\r\n )}px`,\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.secondary.main,\r\n },\r\n form: {\r\n width: '100%',\r\n marginTop: theme.spacing(1),\r\n },\r\n submit: {\r\n marginTop: theme.spacing(3),\r\n },\r\n marginTop: {\r\n marginTop: '45vh',\r\n transform: 'translateY(-50%)',\r\n },\r\n logo: {\r\n width: 'auto',\r\n height: '100px',\r\n filter: 'brightness(0.5)',\r\n padding: theme.spacing(1),\r\n marginBottom: 20,\r\n },\r\n main: {\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'top center',\r\n backgroundColor: '#312926',\r\n display: 'flex',\r\n width: '100%',\r\n height: '100%',\r\n backgroundImage: 'url(/images/login-background.jpg)',\r\n },\r\n root: {\r\n width: 'auto',\r\n display: 'block',\r\n marginLeft: theme.spacing(3),\r\n marginRight: theme.spacing(3),\r\n [theme.breakpoints.up(400 + theme.spacing(3) * 2)]: {\r\n width: 400,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n },\r\n },\r\n})\r\n\r\nfunction SignIn(props) {\r\n const core = useContext(CoreContext)\r\n\r\n const [email, setEmail] = useState('')\r\n const [emailError, setEmailError] = useState(false)\r\n const [displayName, setDisplayName] = useState('')\r\n const [displayNameError, setDisplayNameError] = useState(false)\r\n\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [successfullySignedUp, setSuccessfullySignedUp] = useState(false)\r\n\r\n const { classes, match } = props\r\n\r\n //userId is base64 encoded, so decode before sending\r\n const userId = atob(match.params.id)\r\n const language = match.params.language\r\n\r\n function handleChangeDisplayName(e) {\r\n setDisplayNameError(false)\r\n setDisplayName(e.target.value)\r\n }\r\n\r\n function handleChangeEmail(e) {\r\n setEmailError(false)\r\n setEmail(e.target.value)\r\n }\r\n\r\n const languages = {\r\n 'en-gb': 1,\r\n 'en-us': 1,\r\n 'da-DK': 2,\r\n 'sv': 3,\r\n 'nb-no': 4,\r\n 'de': 5,\r\n }\r\n\r\n function submit() {\r\n if (!email) {\r\n return setEmailError(true)\r\n }\r\n if (!displayName) {\r\n return setDisplayNameError(true)\r\n }\r\n setIsLoading(true)\r\n core.hubStore\r\n .signupUser({\r\n selectedCustomer: userId,\r\n language: languages[language] || 1,\r\n displayName,\r\n email,\r\n })\r\n .then(() => {\r\n setSuccessfullySignedUp(true)\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n core.setModal({\r\n headline: 'An error occured',\r\n message: 'Contact customer service for further assistance',\r\n })\r\n })\r\n .finally(() => setIsLoading(false))\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n {successfullySignedUp ? (\r\n \r\n ) : (\r\n <>\r\n }\r\n required\r\n fullWidth\r\n error={emailError}\r\n />\r\n\r\n }\r\n required\r\n fullWidth\r\n error={displayNameError}\r\n />\r\n\r\n \r\n Sign Up\r\n \r\n\r\n \r\n Already have an account?\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nfunction SuccessfulSignup() {\r\n return (\r\n <>\r\n \r\n \r\n Succces\r\n \r\n \r\n Check your email for login information\r\n \r\n \r\n Log In\r\n \r\n \r\n )\r\n}\r\n\r\nSignIn.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n}\r\n\r\nexport default withStyles(styles)(SignIn)\r\n","import React, { useContext, useState } from 'react'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport { makeStyles, Paper } from '@material-ui/core'\r\nimport OutlinedInputField from '../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport Button from '@material-ui/core/Button'\r\nimport LinearProgress from '@material-ui/core/LinearProgress/LinearProgress'\r\nimport TranslationLabel from '../components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n marginTop: '20px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n paper: {},\r\n}))\r\nexport default function UserRegistrationPage(props) {\r\n const core = useContext(CoreContext)\r\n const userId = props.match.params.userId\r\n const token = props.match.params.token\r\n const classes = useStyles()\r\n\r\n const [password, setPassword] = useState('')\r\n const [password2, setPassword2] = useState('')\r\n const [status, setStatus] = useState('')\r\n const [loading, setLoading] = useState(false)\r\n\r\n function handleChange(evt) {\r\n setPassword(evt.target.value)\r\n }\r\n function handleChange2(evt) {\r\n setPassword2(evt.target.value)\r\n }\r\n\r\n function handleSubmit() {\r\n if (password === '') {\r\n setStatus('Password is empty')\r\n return\r\n }\r\n\r\n if (password !== password2) {\r\n setStatus('Password does not match')\r\n return\r\n }\r\n setLoading(true)\r\n core.hubStore\r\n .submitPassword(userId, password, token)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n core.history.push('/login')\r\n }\r\n })\r\n .catch((e) => {\r\n console.log(e.response)\r\n if (e.response) {\r\n setStatus(\r\n ,\r\n )\r\n }\r\n })\r\n .finally(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Complete your registration with a password

\r\n {status ?

{status}

: null}\r\n
\r\n \r\n {loading ? : null}\r\n \r\n \r\n \r\n Submit\r\n \r\n \r\n
\r\n )\r\n}\r\n","import React, { useContext, useState } from 'react'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport { makeStyles, Paper } from '@material-ui/core'\r\nimport OutlinedInputField from '../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from '../components/TranslationLabel'\r\nimport LinearProgress from '@material-ui/core/LinearProgress/LinearProgress'\r\nimport ValidateEmail from '../../shared/EmailValidation'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n marginTop: '20px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n paper: {},\r\n}))\r\nexport default function UserPasswordResetPage(props) {\r\n const core = useContext(CoreContext)\r\n const classes = useStyles()\r\n\r\n const [email, setEmail] = useState('')\r\n const [status, setStatus] = useState('')\r\n const [step, setStep] = useState(1)\r\n const [loading, setLoading] = useState(false)\r\n\r\n let requesterId = core.user.userId\r\n\r\n function handleChange(evt) {\r\n setEmail(evt.target.value)\r\n }\r\n\r\n function handleSubmit() {\r\n if (email === '') {\r\n setStatus('E-mail is empty')\r\n return\r\n }\r\n\r\n if (!ValidateEmail(email)) {\r\n setStatus('E-mail is not valid!')\r\n return\r\n }\r\n setLoading(true)\r\n core.hubStore\r\n .requestResetPassword(email)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n setStep(2)\r\n setStatus('')\r\n }\r\n })\r\n .catch((e) => {\r\n console.log(e.response)\r\n if (e.response) {\r\n setStatus('Something went wrong.')\r\n }\r\n core.snackbar('warning', e.response.status)\r\n })\r\n .finally(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

\r\n \r\n

\r\n {status ?

{status}

: null}\r\n
\r\n\r\n {step === 1 ? (\r\n \r\n {loading ? : null}\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, { useContext, useState } from 'react'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport { makeStyles, Paper } from '@material-ui/core'\r\nimport OutlinedInputField from '../../apps/sales-web-app/components/ui/OutlinedInputField'\r\nimport Button from '@material-ui/core/Button'\r\nimport TranslationLabel from '../components/TranslationLabel'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n marginTop: '20px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n },\r\n paper: {},\r\n}))\r\nexport default function UserPasswordResetCompletionPage(props) {\r\n const core = useContext(CoreContext)\r\n const userId = props.match.params.userId\r\n const token = props.match.params.token\r\n const classes = useStyles()\r\n\r\n const [password, setPassword] = useState('')\r\n const [password2, setPassword2] = useState('')\r\n const [status, setStatus] = useState('')\r\n const [loading, setLoading] = useState(false)\r\n\r\n function handleChange(evt) {\r\n setPassword(evt.target.value)\r\n }\r\n function handleChange2(evt) {\r\n setPassword2(evt.target.value)\r\n }\r\n\r\n function handleSubmit() {\r\n if (password === '') {\r\n setStatus('Password is empty')\r\n return\r\n }\r\n\r\n if (password !== password2) {\r\n setStatus('Password does not match')\r\n return\r\n }\r\n\r\n setLoading(true)\r\n core.hubStore\r\n .submitPassword(userId, password, token)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n core.history.push('/login')\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error.response)\r\n if (error.response) {\r\n setStatus(\r\n ,\r\n )\r\n }\r\n })\r\n .finally(() => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

\r\n \r\n

\r\n {status ?

{status}

: null}\r\n
\r\n \r\n {loading ? : null}\r\n \r\n \r\n \r\n Submit\r\n \r\n \r\n
\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport { Redirect, Route, Router, Switch } from 'react-router-dom'\r\nimport LoginPage from '../pages/Login'\r\nimport SignupPage from '../pages/Signup'\r\nimport { ProtectedRoute } from './ProtectedRoutes'\r\n\r\nimport { getRoutes } from '../settings/hubRoutes'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport NotFound from '../pages/NotFound'\r\nimport UserRegistrationPage from '../pages/UserRegistrationPage'\r\nimport UserPasswordResetPage from '../pages/UserPasswordResetPage'\r\nimport UserPasswordResetCompletionPage from '../pages/UserPasswordResetCompletionPage'\r\n\r\nexport default function HubRouter(props) {\r\n const core = useContext(CoreContext)\r\n const routes = getRoutes([...core.user.userSetting.apps])\r\n\r\n return (\r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n />\r\n {routes.map((a) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { Fragment, useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport LinearProgress from '@material-ui/core/LinearProgress'\r\nimport Typography from '@material-ui/core/Typography/Typography'\r\nimport Button from '@material-ui/core/Button/Button'\r\nimport SadSmiley from '@material-ui/icons/MoodBad'\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n flexGrow: 1,\r\n flex: 1,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n padding: '20%',\r\n },\r\n bar: {\r\n height: '100%',\r\n width: '100%',\r\n },\r\n})\r\n\r\nconst threshold = 10\r\n\r\nexport default function FullScreenLoader() {\r\n const [time, setTime] = useState(0)\r\n\r\n const classes = useStyles()\r\n\r\n function reload() {\r\n window.location.reload()\r\n }\r\n\r\n useEffect(() => {\r\n const handleStart = setTimeout(() => {\r\n if (time > threshold) return\r\n setTime(time + 1)\r\n }, 3000)\r\n\r\n return () => clearTimeout(handleStart)\r\n }, [])\r\n\r\n return (\r\n
\r\n {time < threshold ? (\r\n \r\n \r\n Loading.. {time > 0 ? 'Attempt ' + time + ' of ' + threshold : null}\r\n \r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n
\r\n \r\n
\r\n \r\n Loading failed. press here to reload the page.\r\n \r\n \r\n Reload\r\n \r\n
\r\n )}\r\n
\r\n )\r\n}\r\n","import React, { useContext, useEffect, useState } from 'react'\r\n//Theme\r\nimport {\r\n makeStyles,\r\n MuiThemeProvider,\r\n useTheme,\r\n} from '@material-ui/core/styles'\r\n//Components\r\nimport HubRouter from '../components/HubRouter'\r\nimport FullScreenLoader from '../components/FullScreenLoader'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport Backdrop from '@material-ui/core/Backdrop/Backdrop'\r\nimport CircularProgress from '@material-ui/core/CircularProgress'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n main: {\r\n height: '100%',\r\n width: '100%',\r\n position: 'absolute',\r\n color: 'black',\r\n margin: 0,\r\n top: 0,\r\n },\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n}))\r\n\r\nexport default function Hub(props) {\r\n const classes = useStyles()\r\n const core = useContext(CoreContext)\r\n const theme = useTheme()\r\n const [width, setWidth] = useState(window.innerWidth)\r\n\r\n useEffect(() => {\r\n const handleResize = () => core.setWidth(theme.breakpoints)\r\n window.addEventListener('resize', handleResize)\r\n return () => window.removeEventListener('resize', handleResize)\r\n }, [core])\r\n\r\n return (\r\n \r\n
\r\n {core.isLoading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n {core.user.isLoading ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n )}\r\n
\r\n
\r\n )\r\n}\r\n","import React, { useContext } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { CoreContext } from '../context/CoreContext'\r\nimport { Typography, Button, makeStyles } from '@material-ui/core'\r\nimport TranslationLabel from '../components/TranslationLabel'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n modalBackground: {\r\n top: 0,\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n zIndex: '1000000000000000',\r\n backgroundColor: 'black',\r\n opacity: 0.5,\r\n },\r\n modalBodyWrapper: {\r\n border: '1px solid grey',\r\n position: 'fixed',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n zIndex: '1000000000000001',\r\n backgroundColor: 'white',\r\n minWidth: '350px',\r\n padding: '20px',\r\n borderRadius: '3px',\r\n },\r\n headline: {\r\n textAlign: 'center',\r\n marginBottom: '15px',\r\n },\r\n message: {\r\n marginBottom: '10px',\r\n },\r\n buttons: {\r\n textAlign: 'right',\r\n },\r\n}))\r\n\r\nexport default function Modal() {\r\n const core = useContext(CoreContext)\r\n const { headline, message } = core.modal\r\n const classes = useStyles()\r\n\r\n return core.modal.headline || core.modal.message\r\n ? ReactDOM.createPortal(\r\n
\r\n core.setModal({})}\r\n className={classes.modalBackground}>
\r\n
\r\n \r\n {headline}\r\n \r\n \r\n {message}\r\n \r\n
\r\n core.setModal({})}>\r\n \r\n \r\n
\r\n
\r\n ,\r\n document.getElementById('modals'),\r\n )\r\n : null\r\n}\r\n","//React imports\r\nimport React from 'react'\r\n\r\n//Core imports\r\nimport CoreProvider from './core/context/CoreContext'\r\n\r\n//Component imports\r\nimport Hub from './core/pages/Hub'\r\nimport Modal from './core/modals/Modals'\r\n\r\n//Material UI components\r\nimport CssBaseline from '@material-ui/core/CssBaseline/CssBaseline'\r\nimport { SnackbarProvider } from 'notistack'\r\n\r\nexport function Root() {\r\n //remove the message in the html telling people to use a real browser if it can't run the javascript\r\n document.getElementById('internetExplorerMessage').innerHTML = ''\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default function RootNotistackIntegration() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport * as serviceWorker from './serviceWorker'\r\nimport ReactGA from 'react-ga'\r\nimport RootNotistackIntegration from './Root'\r\n\r\nReactGA.initialize('UA-88269016-9')\r\nReactGA.pageview(window.location.pathname + window.location.search)\r\n\r\nReactDOM.render(, document.getElementById('root'))\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister()\r\n"],"sourceRoot":""}